From 4c720e4d2aef3ec886aee18badc9eb8c4c813f67 Mon Sep 17 00:00:00 2001 From: Adrian Riobo Date: Thu, 19 Dec 2024 18:12:14 +0100 Subject: [PATCH] feat: serverless mode Signed-off-by: Adrian Riobo --- Makefile | 6 + docs/serverless-mode.md | 23 + go.mod | 42 +- go.sum | 89 +- oci/Containerfile | 8 +- pkg/api/serverless/serverless.go | 10 + pkg/provider/aws/api/serverless/serverless.go | 66 + pkg/provider/aws/data/ecs.go | 43 + .../aws/accountid_endpoint_mode.go | 18 + .../aws/aws-sdk-go-v2/aws/config.go | 3 + .../aws/aws-sdk-go-v2/aws/credentials.go | 3 + .../aws-sdk-go-v2/aws/go_module_metadata.go | 2 +- .../aws/middleware/private/metrics/metrics.go | 320 - .../aws/middleware/request_id_retriever.go | 4 + .../aws/middleware/user_agent.go | 53 + .../aws/retry/attempt_metrics.go | 51 + .../aws/aws-sdk-go-v2/aws/retry/middleware.go | 51 +- .../aws/signer/internal/v4/headers.go | 1 - .../aws-sdk-go-v2/aws/signer/v4/middleware.go | 8 +- .../aws/aws-sdk-go-v2/aws/signer/v4/v4.go | 13 +- .../aws/transport/http/client.go | 36 +- .../internal/configsources/CHANGELOG.md | 66 + .../configsources/go_module_metadata.go | 2 +- .../endpoints/awsrulesfn/partition.go | 11 +- .../endpoints/awsrulesfn/partitions.go | 94 +- .../endpoints/awsrulesfn/partitions.json | 5 +- .../internal/endpoints/v2/CHANGELOG.md | 66 + .../endpoints/v2/go_module_metadata.go | 2 +- .../aws-sdk-go-v2/service/ecs/CHANGELOG.md | 719 + .../aws/aws-sdk-go-v2/service/ecs/LICENSE.txt | 202 + .../aws-sdk-go-v2/service/ecs/api_client.go | 929 + .../ecs/api_op_CreateCapacityProvider.go | 200 + .../service/ecs/api_op_CreateCluster.go | 260 + .../service/ecs/api_op_CreateService.go | 573 + .../service/ecs/api_op_CreateTaskSet.go | 283 + .../ecs/api_op_DeleteAccountSetting.go | 171 + .../service/ecs/api_op_DeleteAttributes.go | 165 + .../ecs/api_op_DeleteCapacityProvider.go | 175 + .../service/ecs/api_op_DeleteCluster.go | 167 + .../service/ecs/api_op_DeleteService.go | 186 + .../ecs/api_op_DeleteTaskDefinitions.go | 189 + .../service/ecs/api_op_DeleteTaskSet.go | 176 + .../ecs/api_op_DeregisterContainerInstance.go | 195 + .../ecs/api_op_DeregisterTaskDefinition.go | 179 + .../ecs/api_op_DescribeCapacityProviders.go | 186 + .../service/ecs/api_op_DescribeClusters.go | 177 + .../ecs/api_op_DescribeContainerInstances.go | 176 + .../ecs/api_op_DescribeServiceDeployments.go | 171 + .../ecs/api_op_DescribeServiceRevisions.go | 175 + .../service/ecs/api_op_DescribeServices.go | 650 + .../ecs/api_op_DescribeTaskDefinition.go | 197 + .../service/ecs/api_op_DescribeTaskSets.go | 179 + .../service/ecs/api_op_DescribeTasks.go | 622 + .../ecs/api_op_DiscoverPollEndpoint.go | 171 + .../service/ecs/api_op_ExecuteCommand.go | 203 + .../service/ecs/api_op_GetTaskProtection.go | 172 + .../service/ecs/api_op_ListAccountSettings.go | 292 + .../service/ecs/api_op_ListAttributes.go | 297 + .../service/ecs/api_op_ListClusters.go | 271 + .../ecs/api_op_ListContainerInstances.go | 301 + .../ecs/api_op_ListServiceDeployments.go | 220 + .../service/ecs/api_op_ListServices.go | 284 + .../ecs/api_op_ListServicesByNamespace.go | 298 + .../service/ecs/api_op_ListTagsForResource.go | 159 + .../ecs/api_op_ListTaskDefinitionFamilies.go | 298 + .../service/ecs/api_op_ListTaskDefinitions.go | 298 + .../service/ecs/api_op_ListTasks.go | 316 + .../service/ecs/api_op_PutAccountSetting.go | 280 + .../ecs/api_op_PutAccountSettingDefault.go | 261 + .../service/ecs/api_op_PutAttributes.go | 170 + .../ecs/api_op_PutClusterCapacityProviders.go | 217 + .../ecs/api_op_RegisterContainerInstance.go | 216 + .../ecs/api_op_RegisterTaskDefinition.go | 459 + .../service/ecs/api_op_RunTask.go | 435 + .../service/ecs/api_op_StartTask.go | 277 + .../service/ecs/api_op_StopTask.go | 187 + .../api_op_SubmitAttachmentStateChanges.go | 164 + .../ecs/api_op_SubmitContainerStateChange.go | 177 + .../ecs/api_op_SubmitTaskStateChange.go | 187 + .../service/ecs/api_op_TagResource.go | 186 + .../service/ecs/api_op_UntagResource.go | 159 + .../ecs/api_op_UpdateCapacityProvider.go | 163 + .../service/ecs/api_op_UpdateCluster.go | 181 + .../ecs/api_op_UpdateClusterSettings.go | 173 + .../ecs/api_op_UpdateContainerAgent.go | 184 + .../api_op_UpdateContainerInstancesState.go | 225 + .../service/ecs/api_op_UpdateService.go | 482 + .../ecs/api_op_UpdateServicePrimaryTaskSet.go | 176 + .../ecs/api_op_UpdateTaskProtection.go | 218 + .../service/ecs/api_op_UpdateTaskSet.go | 179 + .../aws/aws-sdk-go-v2/service/ecs/auth.go | 313 + .../service/ecs/deserializers.go | 22148 ++++++++++++++++ .../aws/aws-sdk-go-v2/service/ecs/doc.go | 24 + .../aws-sdk-go-v2/service/ecs/endpoints.go | 537 + .../aws-sdk-go-v2/service/ecs/generated.json | 92 + .../service/ecs/go_module_metadata.go | 6 + .../ecs/internal/endpoints/endpoints.go | 507 + .../aws/aws-sdk-go-v2/service/ecs/options.go | 236 + .../aws-sdk-go-v2/service/ecs/serializers.go | 8619 ++++++ .../aws-sdk-go-v2/service/ecs/types/enums.go | 1391 + .../aws-sdk-go-v2/service/ecs/types/errors.go | 766 + .../aws-sdk-go-v2/service/ecs/types/types.go | 6036 +++++ .../aws-sdk-go-v2/service/ecs/validators.go | 3430 +++ .../aws/aws-sdk-go/aws/endpoints/defaults.go | 6598 ++++- vendor/github.com/aws/smithy-go/CHANGELOG.md | 49 + vendor/github.com/aws/smithy-go/README.md | 74 +- .../encoding/httpbinding/path_replace.go | 30 +- .../aws/smithy-go/go_module_metadata.go | 2 +- .../aws/smithy-go/metrics/metrics.go | 136 + .../github.com/aws/smithy-go/metrics/nop.go | 67 + .../aws/smithy-go/middleware/context.go | 41 + vendor/github.com/aws/smithy-go/properties.go | 19 +- .../aws/smithy-go/tracing/context.go | 96 + .../github.com/aws/smithy-go/tracing/nop.go | 32 + .../aws/smithy-go/tracing/tracing.go | 95 + .../aws/smithy-go/transport/http/client.go | 45 +- .../aws/smithy-go/transport/http/metrics.go | 184 + vendor/github.com/cespare/xxhash/v2/README.md | 2 + vendor/github.com/cespare/xxhash/v2/xxhash.go | 29 +- .../cespare/xxhash/v2/xxhash_asm.go | 2 +- .../cespare/xxhash/v2/xxhash_other.go | 2 +- .../cespare/xxhash/v2/xxhash_safe.go | 2 +- .../cespare/xxhash/v2/xxhash_unsafe.go | 2 +- vendor/github.com/golang/glog/glog_file.go | 6 +- .../golang/glog/glog_file_nonwindows.go | 12 + .../golang/glog/glog_file_windows.go | 30 + .../github.com/hashicorp/hcl/v2/CHANGELOG.md | 17 + vendor/github.com/pulumi/esc/.version | 2 +- vendor/github.com/pulumi/esc/CHANGELOG.md | 36 + .../pulumi/esc/CHANGELOG_PENDING.md | 1 + vendor/github.com/pulumi/esc/README.md | 114 +- .../github.com/pulumi/esc/ast/environment.go | 3 +- vendor/github.com/pulumi/esc/environment.go | 1 + vendor/github.com/pulumi/esc/eval/eval.go | 21 +- .../pulumi/pulumi-aws-native/sdk/LICENSE | 202 + .../pulumi-aws-native/sdk/go/aws/cidr.go | 73 + .../pulumi-aws-native/sdk/go/aws/doc.go | 2 + .../sdk/go/aws/extensionResource.go | 154 + .../sdk/go/aws/getAccountId.go | 55 + .../pulumi-aws-native/sdk/go/aws/getAzs.go | 69 + .../sdk/go/aws/getPartition.go | 64 + .../pulumi-aws-native/sdk/go/aws/getRegion.go | 55 + .../sdk/go/aws/getSsmParameterList.go | 69 + .../sdk/go/aws/getSsmParameterString.go | 69 + .../sdk/go/aws/getUrlSuffix.go | 55 + .../sdk/go/aws/importValue.go | 69 + .../pulumi-aws-native/sdk/go/aws/init.go | 66 + .../sdk/go/aws/internal/pulumiUtilities.go | 184 + .../sdk/go/aws/internal/pulumiVersion.go | 11 + .../pulumi-aws-native/sdk/go/aws/provider.go | 239 + .../sdk/go/aws/pulumi-plugin.json | 5 + .../sdk/go/aws/pulumiEnums.go | 89 + .../sdk/go/aws/pulumiTypes.go | 1336 + .../sdk/go/aws/scheduler/getSchedule.go | 148 + .../sdk/go/aws/scheduler/getScheduleGroup.go | 107 + .../sdk/go/aws/scheduler/init.go | 46 + .../sdk/go/aws/scheduler/pulumiEnums.go | 1299 + .../sdk/go/aws/scheduler/pulumiTypes.go | 2491 ++ .../sdk/go/aws/scheduler/schedule.go | 256 + .../sdk/go/aws/scheduler/scheduleGroup.go | 165 + .../v6/go/aws/cloudwatch/compositeAlarm.go | 419 + .../sdk/v6/go/aws/cloudwatch/dashboard.go | 324 + .../go/aws/cloudwatch/eventApiDestination.go | 352 + .../sdk/v6/go/aws/cloudwatch/eventArchive.go | 380 + .../sdk/v6/go/aws/cloudwatch/eventBus.go | 385 + .../v6/go/aws/cloudwatch/eventBusPolicy.go | 453 + .../v6/go/aws/cloudwatch/eventConnection.go | 490 + .../sdk/v6/go/aws/cloudwatch/eventEndpoint.go | 377 + .../v6/go/aws/cloudwatch/eventPermission.go | 361 + .../sdk/v6/go/aws/cloudwatch/eventRule.go | 562 + .../sdk/v6/go/aws/cloudwatch/eventTarget.go | 1417 + .../sdk/v6/go/aws/cloudwatch/getEventBus.go | 142 + .../go/aws/cloudwatch/getEventConnection.go | 144 + .../v6/go/aws/cloudwatch/getEventSource.go | 149 + .../getLogDataProtectionPolicyDocument.go | 204 + .../sdk/v6/go/aws/cloudwatch/getLogGroup.go | 165 + .../sdk/v6/go/aws/cloudwatch/getLogGroups.go | 133 + .../sdk/v6/go/aws/cloudwatch/init.go | 205 + .../v6/go/aws/cloudwatch/internetMonitor.go | 402 + .../v6/go/aws/cloudwatch/logAccountPolicy.go | 396 + .../aws/cloudwatch/logDataProtectionPolicy.go | 328 + .../v6/go/aws/cloudwatch/logDestination.go | 333 + .../go/aws/cloudwatch/logDestinationPolicy.go | 319 + .../sdk/v6/go/aws/cloudwatch/logGroup.go | 397 + .../v6/go/aws/cloudwatch/logMetricFilter.go | 323 + .../v6/go/aws/cloudwatch/logResourcePolicy.go | 352 + .../sdk/v6/go/aws/cloudwatch/logStream.go | 286 + .../aws/cloudwatch/logSubscriptionFilter.go | 339 + .../sdk/v6/go/aws/cloudwatch/metricAlarm.go | 884 + .../sdk/v6/go/aws/cloudwatch/metricStream.go | 684 + .../sdk/v6/go/aws/cloudwatch/pulumiTypes.go | 8721 ++++++ .../v6/go/aws/cloudwatch/queryDefinition.go | 299 + .../v6/go/aws/ecs/accountSettingDefault.go | 280 + .../sdk/v6/go/aws/ecs/capacityProvider.go | 340 + .../pulumi-aws/sdk/v6/go/aws/ecs/cluster.go | 529 + .../v6/go/aws/ecs/clusterCapacityProviders.go | 303 + .../sdk/v6/go/aws/ecs/getCluster.go | 180 + .../v6/go/aws/ecs/getContainerDefinition.go | 186 + .../sdk/v6/go/aws/ecs/getService.go | 181 + .../sdk/v6/go/aws/ecs/getTaskDefinition.go | 214 + .../sdk/v6/go/aws/ecs/getTaskExecution.go | 297 + .../pulumi-aws/sdk/v6/go/aws/ecs/init.go | 93 + .../sdk/v6/go/aws/ecs/pulumiTypes.go | 8905 +++++++ .../pulumi-aws/sdk/v6/go/aws/ecs/service.go | 932 + .../pulumi-aws/sdk/v6/go/aws/ecs/tag.go | 304 + .../sdk/v6/go/aws/ecs/taskDefinition.go | 958 + .../pulumi-aws/sdk/v6/go/aws/ecs/taskSet.go | 585 + .../pulumi-aws/sdk/v6/go/aws/iam/accessKey.go | 420 + .../sdk/v6/go/aws/iam/accountAlias.go | 255 + .../v6/go/aws/iam/accountPasswordPolicy.go | 389 + .../sdk/v6/go/aws/iam/getAccessKeys.go | 127 + .../sdk/v6/go/aws/iam/getAccountAlias.go | 103 + .../pulumi-aws/sdk/v6/go/aws/iam/getGroup.go | 149 + .../sdk/v6/go/aws/iam/getInstanceProfile.go | 163 + .../sdk/v6/go/aws/iam/getInstanceProfiles.go | 142 + .../v6/go/aws/iam/getOpenIdConnectProvider.go | 179 + .../pulumi-aws/sdk/v6/go/aws/iam/getPolicy.go | 222 + .../sdk/v6/go/aws/iam/getPolicyDocument.go | 737 + .../aws/iam/getPrincipalPolicySimulation.go | 402 + .../pulumi-aws/sdk/v6/go/aws/iam/getRole.go | 195 + .../pulumi-aws/sdk/v6/go/aws/iam/getRoles.go | 251 + .../sdk/v6/go/aws/iam/getSamlProvider.go | 160 + .../sdk/v6/go/aws/iam/getServerCertificate.go | 205 + .../sdk/v6/go/aws/iam/getSessionContext.go | 188 + .../pulumi-aws/sdk/v6/go/aws/iam/getUser.go | 162 + .../sdk/v6/go/aws/iam/getUserSshKey.go | 160 + .../pulumi-aws/sdk/v6/go/aws/iam/getUsers.go | 196 + .../pulumi-aws/sdk/v6/go/aws/iam/group.go | 289 + .../sdk/v6/go/aws/iam/groupMembership.go | 308 + .../v6/go/aws/iam/groupPoliciesExclusive.go | 243 + .../sdk/v6/go/aws/iam/groupPolicy.go | 342 + .../v6/go/aws/iam/groupPolicyAttachment.go | 288 + .../iam/groupPolicyAttachmentsExclusive.go | 243 + .../pulumi-aws/sdk/v6/go/aws/iam/init.go | 275 + .../sdk/v6/go/aws/iam/instanceProfile.go | 393 + .../v6/go/aws/iam/openIdConnectProvider.go | 340 + .../v6/go/aws/iam/organizationsFeatures.go | 268 + .../pulumi-aws/sdk/v6/go/aws/iam/policy.go | 403 + .../sdk/v6/go/aws/iam/policyAttachment.go | 387 + .../sdk/v6/go/aws/iam/pulumiEnums.go | 2609 ++ .../sdk/v6/go/aws/iam/pulumiTypes.go | 1394 + .../pulumi-aws/sdk/v6/go/aws/iam/role.go | 783 + .../v6/go/aws/iam/rolePoliciesExclusive.go | 313 + .../sdk/v6/go/aws/iam/rolePolicy.go | 361 + .../sdk/v6/go/aws/iam/rolePolicyAttachment.go | 328 + .../aws/iam/rolePolicyAttachmentsExclusive.go | 313 + .../sdk/v6/go/aws/iam/samlProvider.go | 332 + .../iam/securityTokenServicePreferences.go | 245 + .../sdk/v6/go/aws/iam/serverCertificate.go | 528 + .../sdk/v6/go/aws/iam/serviceLinkedRole.go | 372 + .../go/aws/iam/serviceSpecificCredential.go | 330 + .../sdk/v6/go/aws/iam/signingCertificate.go | 335 + .../pulumi-aws/sdk/v6/go/aws/iam/sshKey.go | 335 + .../pulumi-aws/sdk/v6/go/aws/iam/user.go | 398 + .../sdk/v6/go/aws/iam/userGroupMembership.go | 313 + .../sdk/v6/go/aws/iam/userLoginProfile.go | 348 + .../v6/go/aws/iam/userPoliciesExclusive.go | 243 + .../sdk/v6/go/aws/iam/userPolicy.go | 336 + .../sdk/v6/go/aws/iam/userPolicyAttachment.go | 288 + .../aws/iam/userPolicyAttachmentsExclusive.go | 243 + .../sdk/v6/go/aws/iam/virtualMfaDevice.go | 365 + .../sdk/v6/go/aws/s3/accessPoint.go | 495 + .../v6/go/aws/s3/accountPublicAccessBlock.go | 344 + .../v6/go/aws/s3/analyticsConfiguration.go | 366 + .../pulumi-aws/sdk/v6/go/aws/s3/bucket.go | 1135 + .../aws/s3/bucketAccelerateConfigurationV2.go | 304 + .../sdk/v6/go/aws/s3/bucketAclV2.go | 474 + .../v6/go/aws/s3/bucketCorsConfigurationV2.go | 331 + .../bucketIntelligentTieringConfiguration.go | 388 + .../aws/s3/bucketLifecycleConfigurationV2.go | 791 + .../sdk/v6/go/aws/s3/bucketLoggingV2.go | 377 + .../sdk/v6/go/aws/s3/bucketMetric.go | 381 + .../sdk/v6/go/aws/s3/bucketNotification.go | 811 + .../sdk/v6/go/aws/s3/bucketObject.go | 875 + .../aws/s3/bucketObjectLockConfigurationV2.go | 360 + .../sdk/v6/go/aws/s3/bucketObjectv2.go | 1014 + .../v6/go/aws/s3/bucketOwnershipControls.go | 282 + .../sdk/v6/go/aws/s3/bucketPolicy.go | 311 + .../v6/go/aws/s3/bucketPublicAccessBlock.go | 355 + .../v6/go/aws/s3/bucketReplicationConfig.go | 558 + .../s3/bucketRequestPaymentConfigurationV2.go | 300 + ...cketServerSideEncryptionConfigurationV2.go | 323 + .../pulumi-aws/sdk/v6/go/aws/s3/bucketV2.go | 892 + .../sdk/v6/go/aws/s3/bucketVersioningV2.go | 429 + .../go/aws/s3/bucketWebsiteConfigurationV2.go | 451 + .../sdk/v6/go/aws/s3/directoryBucket.go | 327 + .../go/aws/s3/getAccountPublicAccessBlock.go | 145 + .../pulumi-aws/sdk/v6/go/aws/s3/getBucket.go | 232 + .../sdk/v6/go/aws/s3/getBucketObject.go | 383 + .../sdk/v6/go/aws/s3/getBucketObjects.go | 178 + .../sdk/v6/go/aws/s3/getBucketPolicy.go | 129 + .../sdk/v6/go/aws/s3/getCanonicalUserId.go | 105 + .../sdk/v6/go/aws/s3/getDirectoryBuckets.go | 106 + .../pulumi-aws/sdk/v6/go/aws/s3/getObject.go | 414 + .../pulumi-aws/sdk/v6/go/aws/s3/getObjects.go | 186 + .../pulumi-aws/sdk/v6/go/aws/s3/init.go | 226 + .../pulumi-aws/sdk/v6/go/aws/s3/inventory.go | 447 + .../pulumi-aws/sdk/v6/go/aws/s3/objectCopy.go | 997 + .../sdk/v6/go/aws/s3/pulumiEnums.go | 196 + .../sdk/v6/go/aws/s3/pulumiTypes.go | 17636 ++++++++++++ .../pulumi/pulumi-awsx/sdk/v2/LICENSE | 202 + .../sdk/v2/go/awsx/awsx/pulumiTypes.go | 2756 ++ .../sdk/v2/go/awsx/ecs/ec2service.go | 315 + .../sdk/v2/go/awsx/ecs/ec2taskDefinition.go | 316 + .../sdk/v2/go/awsx/ecs/fargateService.go | 315 + .../v2/go/awsx/ecs/fargateTaskDefinition.go | 312 + .../pulumi-awsx/sdk/v2/go/awsx/ecs/init.go | 51 + .../sdk/v2/go/awsx/ecs/pulumiEnums.go | 185 + .../sdk/v2/go/awsx/ecs/pulumiTypes.go | 4353 +++ .../v2/go/awsx/internal/pulumiUtilities.go | 184 + .../sdk/v2/go/awsx/internal/pulumiVersion.go | 11 + .../pulumi/pulumi-docker/sdk/v4/LICENSE | 202 + .../sdk/v4/go/docker/container.go | 1282 + .../pulumi-docker/sdk/v4/go/docker/doc.go | 2 + .../pulumi-docker/sdk/v4/go/docker/getLogs.go | 181 + .../sdk/v4/go/docker/getNetwork.go | 157 + .../sdk/v4/go/docker/getPlugin.go | 143 + .../sdk/v4/go/docker/getRegistryImage.go | 149 + .../sdk/v4/go/docker/getRemoteImage.go | 147 + .../pulumi-docker/sdk/v4/go/docker/image.go | 474 + .../pulumi-docker/sdk/v4/go/docker/init.go | 136 + .../v4/go/docker/internal/pulumiUtilities.go | 113 + .../v4/go/docker/internal/pulumiVersion.go | 11 + .../pulumi-docker/sdk/v4/go/docker/network.go | 465 + .../pulumi-docker/sdk/v4/go/docker/plugin.go | 428 + .../sdk/v4/go/docker/provider.go | 165 + .../sdk/v4/go/docker/pulumi-plugin.json | 4 + .../sdk/v4/go/docker/pulumiEnums.go | 204 + .../sdk/v4/go/docker/pulumiTypes.go | 11891 +++++++++ .../sdk/v4/go/docker/registryImage.go | 348 + .../sdk/v4/go/docker/remoteImage.go | 438 + .../pulumi-docker/sdk/v4/go/docker/secret.go | 295 + .../pulumi-docker/sdk/v4/go/docker/service.go | 410 + .../sdk/v4/go/docker/serviceConfig.go | 285 + .../pulumi-docker/sdk/v4/go/docker/tag.go | 285 + .../pulumi-docker/sdk/v4/go/docker/volume.go | 345 + .../github.com/pulumi/pulumi/sdk/v3/.version | 2 +- .../pulumi/pulumi/sdk/v3/go/auto/cmd.go | 8 +- .../pulumi/pulumi/sdk/v3/go/auto/workspace.go | 15 +- .../common/resource/plugin/analyzer_plugin.go | 10 +- .../resource/plugin/converter_plugin.go | 5 +- .../sdk/v3/go/common/resource/plugin/host.go | 62 +- .../go/common/resource/plugin/langruntime.go | 4 +- .../resource/plugin/langruntime_plugin.go | 241 +- .../sdk/v3/go/common/resource/plugin/mock.go | 10 + .../v3/go/common/resource/plugin/plugin.go | 88 +- .../v3/go/common/resource/plugin/provider.go | 54 + .../common/resource/plugin/provider_plugin.go | 295 +- .../common/resource/plugin/provider_server.go | 25 + .../resource/plugin/provider_unimplemented.go | 6 + .../sdk/v3/go/common/util/cmdutil/args.go | 4 +- .../sdk/v3/go/common/util/cmdutil/console.go | 7 - .../sdk/v3/go/common/util/cmdutil/profile.go | 4 +- .../sdk/v3/go/common/workspace/plugins.go | 13 +- .../pulumi/pulumi/sdk/v3/go/pulumi/context.go | 142 +- .../pulumi/sdk/v3/go/pulumi/resource.go | 60 +- .../pulumi/sdk/v3/proto/go/language.pb.go | 1064 +- .../sdk/v3/proto/go/language_grpc.pb.go | 83 + .../pulumi/sdk/v3/proto/go/plugin.pb.go | 243 +- .../pulumi/sdk/v3/proto/go/provider.pb.go | 1936 +- .../sdk/v3/proto/go/provider_grpc.pb.go | 76 +- .../pulumi/sdk/v3/python/toolchain/poetry.go | 2 +- .../pulumi/sdk/v3/python/toolchain/uv.go | 3 +- vendor/golang.org/x/crypto/LICENSE | 4 +- .../golang.org/x/crypto/argon2/blamka_amd64.s | 2972 ++- .../x/crypto/blake2b/blake2bAVX2_amd64.s | 5167 +++- .../x/crypto/blake2b/blake2b_amd64.s | 1681 +- .../x/crypto/chacha20/chacha_noasm.go | 2 +- .../{chacha_ppc64le.go => chacha_ppc64x.go} | 2 +- .../{chacha_ppc64le.s => chacha_ppc64x.s} | 114 +- .../x/crypto/internal/poly1305/mac_noasm.go | 2 +- .../x/crypto/internal/poly1305/sum_amd64.s | 133 +- .../{sum_ppc64le.go => sum_ppc64x.go} | 2 +- .../poly1305/{sum_ppc64le.s => sum_ppc64x.s} | 30 +- vendor/golang.org/x/crypto/sha3/doc.go | 4 + vendor/golang.org/x/crypto/sha3/hashes.go | 31 +- .../golang.org/x/crypto/sha3/keccakf_amd64.s | 5787 +++- vendor/golang.org/x/crypto/sha3/sha3.go | 187 +- vendor/golang.org/x/crypto/sha3/shake.go | 89 +- vendor/golang.org/x/crypto/sha3/xor.go | 40 - .../golang.org/x/crypto/ssh/agent/keyring.go | 9 + vendor/golang.org/x/crypto/ssh/client_auth.go | 5 + vendor/golang.org/x/crypto/ssh/keys.go | 44 +- vendor/golang.org/x/crypto/ssh/server.go | 19 +- vendor/golang.org/x/net/LICENSE | 4 +- vendor/golang.org/x/sync/LICENSE | 4 +- vendor/golang.org/x/sys/LICENSE | 4 +- .../golang.org/x/sys/cpu/asm_darwin_x86_gc.s | 17 + vendor/golang.org/x/sys/cpu/cpu.go | 21 + vendor/golang.org/x/sys/cpu/cpu_arm64.go | 12 + vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go | 61 + vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 4 +- .../x/sys/cpu/{cpu_x86.s => cpu_gc_x86.s} | 2 +- vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go | 6 - .../golang.org/x/sys/cpu/cpu_linux_arm64.go | 4 + .../golang.org/x/sys/cpu/cpu_linux_noinit.go | 2 +- .../golang.org/x/sys/cpu/cpu_linux_riscv64.go | 137 + vendor/golang.org/x/sys/cpu/cpu_other_x86.go | 11 + vendor/golang.org/x/sys/cpu/cpu_riscv64.go | 11 +- vendor/golang.org/x/sys/cpu/cpu_x86.go | 6 +- .../x/sys/cpu/syscall_darwin_x86_gc.go | 98 + vendor/golang.org/x/sys/unix/README.md | 2 +- vendor/golang.org/x/sys/unix/ioctl_linux.go | 96 + vendor/golang.org/x/sys/unix/mkerrors.sh | 18 +- vendor/golang.org/x/sys/unix/syscall_aix.go | 2 +- .../golang.org/x/sys/unix/syscall_darwin.go | 49 + vendor/golang.org/x/sys/unix/syscall_hurd.go | 1 + vendor/golang.org/x/sys/unix/syscall_linux.go | 65 +- .../x/sys/unix/syscall_linux_arm64.go | 2 + .../x/sys/unix/syscall_linux_loong64.go | 2 + .../x/sys/unix/syscall_linux_riscv64.go | 2 + .../golang.org/x/sys/unix/syscall_openbsd.go | 1 + .../x/sys/unix/syscall_zos_s390x.go | 104 +- .../golang.org/x/sys/unix/vgetrandom_linux.go | 13 + .../x/sys/unix/vgetrandom_unsupported.go | 11 + .../x/sys/unix/zerrors_darwin_amd64.go | 12 + .../x/sys/unix/zerrors_darwin_arm64.go | 12 + vendor/golang.org/x/sys/unix/zerrors_linux.go | 82 +- .../x/sys/unix/zerrors_linux_386.go | 27 + .../x/sys/unix/zerrors_linux_amd64.go | 27 + .../x/sys/unix/zerrors_linux_arm.go | 27 + .../x/sys/unix/zerrors_linux_arm64.go | 28 + .../x/sys/unix/zerrors_linux_loong64.go | 27 + .../x/sys/unix/zerrors_linux_mips.go | 27 + .../x/sys/unix/zerrors_linux_mips64.go | 27 + .../x/sys/unix/zerrors_linux_mips64le.go | 27 + .../x/sys/unix/zerrors_linux_mipsle.go | 27 + .../x/sys/unix/zerrors_linux_ppc.go | 27 + .../x/sys/unix/zerrors_linux_ppc64.go | 27 + .../x/sys/unix/zerrors_linux_ppc64le.go | 27 + .../x/sys/unix/zerrors_linux_riscv64.go | 27 + .../x/sys/unix/zerrors_linux_s390x.go | 27 + .../x/sys/unix/zerrors_linux_sparc64.go | 27 + .../x/sys/unix/zerrors_zos_s390x.go | 2 + .../x/sys/unix/zsyscall_darwin_amd64.go | 68 + .../x/sys/unix/zsyscall_darwin_amd64.s | 15 + .../x/sys/unix/zsyscall_darwin_arm64.go | 68 + .../x/sys/unix/zsyscall_darwin_arm64.s | 15 + .../golang.org/x/sys/unix/zsyscall_linux.go | 43 +- .../x/sys/unix/zsyscall_openbsd_386.go | 24 + .../x/sys/unix/zsyscall_openbsd_386.s | 5 + .../x/sys/unix/zsyscall_openbsd_amd64.go | 24 + .../x/sys/unix/zsyscall_openbsd_amd64.s | 5 + .../x/sys/unix/zsyscall_openbsd_arm.go | 24 + .../x/sys/unix/zsyscall_openbsd_arm.s | 5 + .../x/sys/unix/zsyscall_openbsd_arm64.go | 24 + .../x/sys/unix/zsyscall_openbsd_arm64.s | 5 + .../x/sys/unix/zsyscall_openbsd_mips64.go | 24 + .../x/sys/unix/zsyscall_openbsd_mips64.s | 5 + .../x/sys/unix/zsyscall_openbsd_ppc64.go | 24 + .../x/sys/unix/zsyscall_openbsd_ppc64.s | 6 + .../x/sys/unix/zsyscall_openbsd_riscv64.go | 24 + .../x/sys/unix/zsyscall_openbsd_riscv64.s | 5 + .../x/sys/unix/zsysnum_linux_386.go | 1 + .../x/sys/unix/zsysnum_linux_amd64.go | 2 + .../x/sys/unix/zsysnum_linux_arm.go | 1 + .../x/sys/unix/zsysnum_linux_arm64.go | 3 +- .../x/sys/unix/zsysnum_linux_loong64.go | 3 + .../x/sys/unix/zsysnum_linux_mips.go | 1 + .../x/sys/unix/zsysnum_linux_mips64.go | 1 + .../x/sys/unix/zsysnum_linux_mips64le.go | 1 + .../x/sys/unix/zsysnum_linux_mipsle.go | 1 + .../x/sys/unix/zsysnum_linux_ppc.go | 1 + .../x/sys/unix/zsysnum_linux_ppc64.go | 1 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 1 + .../x/sys/unix/zsysnum_linux_riscv64.go | 3 +- .../x/sys/unix/zsysnum_linux_s390x.go | 1 + .../x/sys/unix/zsysnum_linux_sparc64.go | 1 + .../x/sys/unix/ztypes_darwin_amd64.go | 73 + .../x/sys/unix/ztypes_darwin_arm64.go | 73 + .../x/sys/unix/ztypes_freebsd_386.go | 1 + .../x/sys/unix/ztypes_freebsd_amd64.go | 1 + .../x/sys/unix/ztypes_freebsd_arm.go | 1 + .../x/sys/unix/ztypes_freebsd_arm64.go | 1 + .../x/sys/unix/ztypes_freebsd_riscv64.go | 1 + vendor/golang.org/x/sys/unix/ztypes_linux.go | 230 +- .../x/sys/unix/ztypes_linux_riscv64.go | 33 + .../golang.org/x/sys/unix/ztypes_zos_s390x.go | 6 + .../golang.org/x/sys/windows/dll_windows.go | 2 +- .../x/sys/windows/security_windows.go | 2 +- .../x/sys/windows/syscall_windows.go | 52 +- .../golang.org/x/sys/windows/types_windows.go | 199 +- .../x/sys/windows/zsyscall_windows.go | 158 +- vendor/golang.org/x/term/LICENSE | 4 +- vendor/golang.org/x/term/README.md | 11 +- vendor/golang.org/x/term/term_windows.go | 1 + vendor/golang.org/x/text/LICENSE | 4 +- .../googleapis/rpc/status/status.pb.go | 4 +- vendor/google.golang.org/grpc/CONTRIBUTING.md | 2 +- vendor/google.golang.org/grpc/MAINTAINERS.md | 34 +- vendor/google.golang.org/grpc/Makefile | 7 +- vendor/google.golang.org/grpc/README.md | 2 +- vendor/google.golang.org/grpc/SECURITY.md | 2 +- .../google.golang.org/grpc/backoff/backoff.go | 2 +- .../grpc/balancer/balancer.go | 21 + .../grpc/balancer/base/balancer.go | 4 +- .../{ => balancer/pickfirst}/pickfirst.go | 72 +- .../grpc/balancer/roundrobin/roundrobin.go | 4 +- .../grpc/balancer_wrapper.go | 54 +- .../grpc_binarylog_v1/binarylog.pb.go | 24 +- vendor/google.golang.org/grpc/clientconn.go | 202 +- vendor/google.golang.org/grpc/codec.go | 69 +- vendor/google.golang.org/grpc/codegen.sh | 17 - vendor/google.golang.org/grpc/codes/codes.go | 2 +- .../grpc/credentials/credentials.go | 6 +- .../grpc/credentials/insecure/insecure.go | 2 +- .../google.golang.org/grpc/credentials/tls.go | 34 +- vendor/google.golang.org/grpc/dialoptions.go | 105 +- vendor/google.golang.org/grpc/doc.go | 2 +- .../grpc/encoding/encoding.go | 5 +- .../grpc/encoding/encoding_v2.go | 81 + .../grpc/encoding/proto/proto.go | 44 +- .../grpc/experimental/stats/metricregistry.go | 269 + .../grpc/experimental/stats/metrics.go | 114 + .../grpc/grpclog/component.go | 10 +- .../google.golang.org/grpc/grpclog/grpclog.go | 104 +- .../grpc/grpclog/internal/grpclog.go | 26 + .../grpc/grpclog/internal/logger.go | 87 + .../internal/loggerv2.go} | 178 +- .../google.golang.org/grpc/grpclog/logger.go | 59 +- .../grpc/grpclog/loggerv2.go | 181 +- .../grpc/health/grpc_health_v1/health.pb.go | 10 +- .../health/grpc_health_v1/health_grpc.pb.go | 85 +- .../google.golang.org/grpc/health/server.go | 2 +- .../grpc/internal/backoff/backoff.go | 4 +- .../balancer/gracefulswitch/config.go | 1 - .../balancer/gracefulswitch/gracefulswitch.go | 1 - .../grpc/internal/binarylog/method_logger.go | 8 +- .../grpc/internal/channelz/channelmap.go | 9 +- .../grpc/internal/channelz/funcs.go | 2 +- .../internal/channelz/syscall_nonlinux.go | 4 +- .../grpc/internal/envconfig/envconfig.go | 13 +- .../grpc/internal/experimental.go | 8 +- .../{prefixLogger.go => prefix_logger.go} | 40 +- .../grpc/internal/grpcrand/grpcrand.go | 100 - .../grpc/internal/grpcrand/grpcrand_go1.21.go | 73 - .../internal/grpcsync/callback_serializer.go | 24 +- .../grpc/internal/grpcsync/pubsub.go | 4 +- .../grpc/internal/grpcutil/compressor.go | 5 - .../grpc/internal/internal.go | 61 +- .../internal/resolver/dns/dns_resolver.go | 40 +- .../resolver/dns/internal/internal.go | 19 +- .../resolver/passthrough/passthrough.go | 2 +- .../grpc/internal/stats/labels.go | 42 + .../internal/stats/metrics_recorder_list.go | 95 + .../grpc/internal/status/status.go | 4 +- .../grpc/internal/syscall/syscall_nonlinux.go | 6 +- .../grpc/internal/tcp_keepalive_unix.go | 2 +- .../grpc/internal/tcp_keepalive_windows.go | 2 +- .../grpc/internal/transport/controlbuf.go | 287 +- .../grpc/internal/transport/handler_server.go | 47 +- .../grpc/internal/transport/http2_client.go | 141 +- .../grpc/internal/transport/http2_server.go | 63 +- .../grpc/internal/transport/http_util.go | 24 +- .../grpc/internal/transport/proxy.go | 10 +- .../grpc/internal/transport/transport.go | 242 +- .../grpc/keepalive/keepalive.go | 20 +- .../google.golang.org/grpc/mem/buffer_pool.go | 194 + .../grpc/mem/buffer_slice.go | 226 + vendor/google.golang.org/grpc/mem/buffers.go | 252 + .../grpc/metadata/metadata.go | 7 +- vendor/google.golang.org/grpc/peer/peer.go | 30 + .../google.golang.org/grpc/picker_wrapper.go | 84 +- vendor/google.golang.org/grpc/preloader.go | 28 +- .../grpc/reflection/adapt.go | 138 +- .../grpc_reflection_v1/reflection.pb.go | 26 +- .../grpc_reflection_v1/reflection_grpc.pb.go | 88 +- .../grpc_reflection_v1alpha/reflection.pb.go | 28 +- .../reflection_grpc.pb.go | 88 +- .../grpc/reflection/internal/internal.go | 436 + .../grpc/reflection/serverreflection.go | 210 +- vendor/google.golang.org/grpc/regenerate.sh | 123 - .../grpc/resolver/dns/dns_resolver.go | 12 +- .../grpc/resolver_wrapper.go | 11 +- vendor/google.golang.org/grpc/rpc_util.go | 334 +- vendor/google.golang.org/grpc/server.go | 115 +- .../google.golang.org/grpc/service_config.go | 32 +- .../grpc/shared_buffer_pool.go | 154 - vendor/google.golang.org/grpc/stats/stats.go | 12 +- vendor/google.golang.org/grpc/stream.go | 218 +- .../grpc/stream_interfaces.go | 238 + vendor/google.golang.org/grpc/version.go | 2 +- vendor/google.golang.org/grpc/vet.sh | 195 - .../protobuf/encoding/protojson/decode.go | 2 +- .../protobuf/encoding/protojson/encode.go | 4 +- .../protobuf/internal/descopts/options.go | 20 +- .../internal/editionssupport/editions.go | 2 +- .../protobuf/internal/filedesc/desc.go | 4 + .../protobuf/internal/filedesc/desc_init.go | 2 + .../protobuf/internal/filedesc/desc_lazy.go | 2 + .../protobuf/internal/filedesc/editions.go | 2 +- .../protobuf/internal/genid/doc.go | 2 +- .../internal/genid/go_features_gen.go | 15 +- .../protobuf/internal/genid/map_entry.go | 2 +- .../protobuf/internal/genid/wrappers.go | 2 +- .../protobuf/internal/impl/codec_extension.go | 11 +- .../protobuf/internal/impl/codec_field.go | 3 + .../protobuf/internal/impl/codec_message.go | 3 + .../protobuf/internal/impl/codec_reflect.go | 210 - .../protobuf/internal/impl/codec_unsafe.go | 3 - .../protobuf/internal/impl/convert.go | 2 +- .../protobuf/internal/impl/encode.go | 2 +- .../protobuf/internal/impl/equal.go | 224 + .../internal/impl/legacy_extension.go | 1 + .../protobuf/internal/impl/message.go | 4 +- .../protobuf/internal/impl/pointer_reflect.go | 215 - .../protobuf/internal/impl/pointer_unsafe.go | 3 - .../protobuf/internal/strs/strings_pure.go | 28 - .../internal/strs/strings_unsafe_go120.go | 3 +- .../internal/strs/strings_unsafe_go121.go | 3 +- .../protobuf/internal/version/version.go | 4 +- .../google.golang.org/protobuf/proto/equal.go | 9 + .../protobuf/proto/extension.go | 71 + .../protobuf/reflect/protodesc/desc_init.go | 4 + .../protobuf/reflect/protodesc/editions.go | 2 +- .../protobuf/reflect/protoreflect/methods.go | 10 + .../reflect/protoreflect/value_pure.go | 60 - .../protoreflect/value_unsafe_go120.go | 3 +- .../protoreflect/value_unsafe_go121.go | 3 +- .../protobuf/runtime/protoiface/methods.go | 18 + .../types/descriptorpb/descriptor.pb.go | 748 +- .../types/gofeaturespb/go_features.pb.go | 24 +- .../protobuf/types/known/anypb/any.pb.go | 24 +- .../types/known/durationpb/duration.pb.go | 24 +- .../protobuf/types/known/emptypb/empty.pb.go | 24 +- .../types/known/structpb/struct.pb.go | 110 +- .../types/known/timestamppb/timestamp.pb.go | 24 +- vendor/modules.txt | 89 +- 628 files changed, 215765 insertions(+), 9119 deletions(-) create mode 100644 docs/serverless-mode.md create mode 100644 pkg/api/serverless/serverless.go create mode 100644 pkg/provider/aws/api/serverless/serverless.go create mode 100644 pkg/provider/aws/data/ecs.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go delete mode 100644 vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/aws/retry/attempt_metrics.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/CHANGELOG.md create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/LICENSE.txt create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_client.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCapacityProvider.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCluster.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateService.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateTaskSet.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAccountSetting.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAttributes.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCapacityProvider.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCluster.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteService.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskDefinitions.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskSet.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterContainerInstance.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterTaskDefinition.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeCapacityProviders.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeClusters.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeContainerInstances.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceDeployments.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceRevisions.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServices.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskDefinition.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskSets.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTasks.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DiscoverPollEndpoint.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ExecuteCommand.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_GetTaskProtection.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAccountSettings.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAttributes.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListClusters.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListContainerInstances.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServiceDeployments.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServices.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServicesByNamespace.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTagsForResource.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitionFamilies.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitions.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTasks.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSetting.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSettingDefault.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAttributes.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutClusterCapacityProviders.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterContainerInstance.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterTaskDefinition.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RunTask.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StartTask.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StopTask.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitAttachmentStateChanges.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitContainerStateChange.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitTaskStateChange.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_TagResource.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UntagResource.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCapacityProvider.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCluster.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateClusterSettings.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerAgent.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerInstancesState.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateService.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateServicePrimaryTaskSet.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskProtection.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskSet.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/auth.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/deserializers.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/doc.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/endpoints.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/generated.json create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/go_module_metadata.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/internal/endpoints/endpoints.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/options.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/serializers.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/enums.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/errors.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/types.go create mode 100644 vendor/github.com/aws/aws-sdk-go-v2/service/ecs/validators.go create mode 100644 vendor/github.com/aws/smithy-go/metrics/metrics.go create mode 100644 vendor/github.com/aws/smithy-go/metrics/nop.go create mode 100644 vendor/github.com/aws/smithy-go/middleware/context.go create mode 100644 vendor/github.com/aws/smithy-go/tracing/context.go create mode 100644 vendor/github.com/aws/smithy-go/tracing/nop.go create mode 100644 vendor/github.com/aws/smithy-go/tracing/tracing.go create mode 100644 vendor/github.com/aws/smithy-go/transport/http/metrics.go create mode 100644 vendor/github.com/golang/glog/glog_file_nonwindows.go create mode 100644 vendor/github.com/golang/glog/glog_file_windows.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/LICENSE create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/cidr.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/doc.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/extensionResource.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAccountId.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAzs.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getPartition.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getRegion.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterList.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterString.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getUrlSuffix.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/importValue.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/init.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiUtilities.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiVersion.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/provider.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumi-plugin.json create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiEnums.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getSchedule.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getScheduleGroup.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/init.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiEnums.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/schedule.go create mode 100644 vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/scheduleGroup.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/compositeAlarm.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/dashboard.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventApiDestination.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventArchive.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBus.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBusPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventConnection.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventEndpoint.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventPermission.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventRule.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventTarget.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventBus.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventConnection.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventSource.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogDataProtectionPolicyDocument.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroup.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroups.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/init.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/internetMonitor.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logAccountPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDataProtectionPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestination.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestinationPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logGroup.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logMetricFilter.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logResourcePolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logStream.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logSubscriptionFilter.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricAlarm.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricStream.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/queryDefinition.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/accountSettingDefault.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/capacityProvider.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/cluster.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/clusterCapacityProviders.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getCluster.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getContainerDefinition.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getService.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskDefinition.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskExecution.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/init.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/service.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/tag.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskDefinition.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskSet.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accessKey.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountAlias.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountPasswordPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccessKeys.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccountAlias.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getGroup.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfile.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfiles.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getOpenIdConnectProvider.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicyDocument.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPrincipalPolicySimulation.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRole.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRoles.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSamlProvider.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getServerCertificate.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSessionContext.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUser.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUserSshKey.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUsers.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/group.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupMembership.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPoliciesExclusive.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachment.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachmentsExclusive.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/init.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/instanceProfile.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/openIdConnectProvider.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/organizationsFeatures.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policyAttachment.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiEnums.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/role.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePoliciesExclusive.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachment.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachmentsExclusive.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/samlProvider.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/securityTokenServicePreferences.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serverCertificate.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceLinkedRole.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceSpecificCredential.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/signingCertificate.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/sshKey.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/user.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userGroupMembership.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userLoginProfile.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPoliciesExclusive.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachment.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachmentsExclusive.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/virtualMfaDevice.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accessPoint.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accountPublicAccessBlock.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/analyticsConfiguration.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucket.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAccelerateConfigurationV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAclV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketCorsConfigurationV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketIntelligentTieringConfiguration.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLifecycleConfigurationV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLoggingV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketMetric.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketNotification.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObject.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectLockConfigurationV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectv2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketOwnershipControls.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPublicAccessBlock.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketReplicationConfig.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketRequestPaymentConfigurationV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketServerSideEncryptionConfigurationV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketVersioningV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketWebsiteConfigurationV2.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/directoryBucket.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getAccountPublicAccessBlock.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucket.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObject.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObjects.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketPolicy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getCanonicalUserId.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getDirectoryBuckets.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObject.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObjects.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/init.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/inventory.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/objectCopy.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiEnums.go create mode 100644 vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/LICENSE create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2service.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2taskDefinition.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateService.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateTaskDefinition.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/init.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiEnums.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiUtilities.go create mode 100644 vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiVersion.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/LICENSE create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/container.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/doc.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getLogs.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getNetwork.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getPlugin.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRegistryImage.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRemoteImage.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/image.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/init.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiUtilities.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiVersion.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/network.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/plugin.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/provider.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumi-plugin.json create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiEnums.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiTypes.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/registryImage.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/remoteImage.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/secret.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/service.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/serviceConfig.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/tag.go create mode 100644 vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/volume.go rename vendor/golang.org/x/crypto/chacha20/{chacha_ppc64le.go => chacha_ppc64x.go} (89%) rename vendor/golang.org/x/crypto/chacha20/{chacha_ppc64le.s => chacha_ppc64x.s} (76%) rename vendor/golang.org/x/crypto/internal/poly1305/{sum_ppc64le.go => sum_ppc64x.go} (95%) rename vendor/golang.org/x/crypto/internal/poly1305/{sum_ppc64le.s => sum_ppc64x.s} (89%) delete mode 100644 vendor/golang.org/x/crypto/sha3/xor.go create mode 100644 vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s create mode 100644 vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go rename vendor/golang.org/x/sys/cpu/{cpu_x86.s => cpu_gc_x86.s} (94%) create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_other_x86.go create mode 100644 vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go create mode 100644 vendor/golang.org/x/sys/unix/vgetrandom_linux.go create mode 100644 vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go rename vendor/google.golang.org/grpc/{ => balancer/pickfirst}/pickfirst.go (72%) delete mode 100644 vendor/google.golang.org/grpc/codegen.sh create mode 100644 vendor/google.golang.org/grpc/encoding/encoding_v2.go create mode 100644 vendor/google.golang.org/grpc/experimental/stats/metricregistry.go create mode 100644 vendor/google.golang.org/grpc/experimental/stats/metrics.go create mode 100644 vendor/google.golang.org/grpc/grpclog/internal/grpclog.go create mode 100644 vendor/google.golang.org/grpc/grpclog/internal/logger.go rename vendor/google.golang.org/grpc/{internal/grpclog/grpclog.go => grpclog/internal/loggerv2.go} (52%) rename vendor/google.golang.org/grpc/internal/grpclog/{prefixLogger.go => prefix_logger.go} (63%) delete mode 100644 vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go delete mode 100644 vendor/google.golang.org/grpc/internal/grpcrand/grpcrand_go1.21.go create mode 100644 vendor/google.golang.org/grpc/internal/stats/labels.go create mode 100644 vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go create mode 100644 vendor/google.golang.org/grpc/mem/buffer_pool.go create mode 100644 vendor/google.golang.org/grpc/mem/buffer_slice.go create mode 100644 vendor/google.golang.org/grpc/mem/buffers.go create mode 100644 vendor/google.golang.org/grpc/reflection/internal/internal.go delete mode 100644 vendor/google.golang.org/grpc/regenerate.sh delete mode 100644 vendor/google.golang.org/grpc/shared_buffer_pool.go create mode 100644 vendor/google.golang.org/grpc/stream_interfaces.go delete mode 100644 vendor/google.golang.org/grpc/vet.sh delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go create mode 100644 vendor/google.golang.org/protobuf/internal/impl/equal.go delete mode 100644 vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go delete mode 100644 vendor/google.golang.org/protobuf/internal/strs/strings_pure.go delete mode 100644 vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go diff --git a/Makefile b/Makefile index 6bbb02230..09d7674b5 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,12 @@ GOPATH ?= $(shell go env GOPATH) BUILD_DIR ?= out SOURCE_DIRS = cmd pkg SOURCES := $(shell find . -name "*.go" -not -path "./vendor/*") +# repo +ORG := github.com/redhat-developer +MODULEPATH = $(ORG)/mapt +# Linker flags +VERSION_VARIABLES := -X $(MODULEPATH)/pkg/api/serverless.maptOCI=$(IMG) + # https://golang.org/cmd/link/ # LDFLAGS := $(VERSION_VARIABLES) -extldflags='-static' ${GO_EXTRA_LDFLAGS} LDFLAGS := $(VERSION_VARIABLES) ${GO_EXTRA_LDFLAGS} diff --git a/docs/serverless-mode.md b/docs/serverless-mode.md new file mode 100644 index 000000000..d6a537f2a --- /dev/null +++ b/docs/serverless-mode.md @@ -0,0 +1,23 @@ +# Overview + +The serverless mode allows to run mapt as a serverless app on the provider the target will be provisioned (i.e. if mapt will create a rhel machine on AWS, it will be executed on Fargate). + +The serverless mode can be beneficial on certain circumstances like paralellize workloads, or release capacity on the system executing mapt. As an example running mapt on serverless-mode will not block a gh runner for the time it takes to provision the infrastructure. + +We can also take advantage of the serverless-mode to house keeping provisioned infrastructures, as an example on the create operation we can set a timeout which will create the matching destroy operation after the timeout. As so in case of any failure preventing actively run the destroy operation it will be executed anyway after the timeout is reached. + +## Requirements + +Each cloud provider requires a specific setup for run serverless containers, it will be a requisite to have those setups in place with the specific values for mapt to facilitate this job mapt is providing a set of scripts to create those resoruces with the naming and values mathing its expectations. + +One of the main reasons to handle those resources outside of the action executed by mapt is that typically the resources will hadle sheduled tasks as so those resources are long time living resources (way beyond the mapt action time) + +## AWS - Fargate + +On AWS the serverless container service is named Fargate and it requires an ECS Cluster. + +TBC + +## Azure - Azure Containers Instances + +TBC \ No newline at end of file diff --git a/go.mod b/go.mod index 7f03dd4b8..984996ee1 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,7 @@ require ( github.com/coocood/freecache v1.2.4 github.com/pulumi/pulumi-command/sdk v1.0.1 github.com/pulumi/pulumi-random/sdk/v4 v4.16.7 - github.com/pulumi/pulumi/sdk/v3 v3.142.0 + github.com/pulumi/pulumi/sdk/v3 v3.143.0 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.0 golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 @@ -20,10 +20,12 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v6 v6.0.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcegraph/armresourcegraph v0.9.0 github.com/aws/amazon-ec2-instance-selector/v2 v2.4.2-0.20231006140257-d989c5d76f0e - github.com/aws/aws-sdk-go-v2 v1.27.2 + github.com/aws/aws-sdk-go-v2 v1.32.6 github.com/aws/aws-sdk-go-v2/config v1.27.18 github.com/aws/aws-sdk-go-v2/service/ec2 v1.142.0 + github.com/pulumi/pulumi-aws-native/sdk v1.17.0 github.com/pulumi/pulumi-aws/sdk/v6 v6.64.0 + github.com/pulumi/pulumi-awsx/sdk/v2 v2.19.0 github.com/pulumi/pulumi-azure-native-sdk/authorization/v2 v2.76.0 github.com/pulumi/pulumi-azure-native-sdk/compute/v2 v2.76.0 github.com/pulumi/pulumi-azure-native-sdk/containerservice/v2 v2.76.0 @@ -35,7 +37,7 @@ require ( require ( github.com/BurntSushi/toml v1.2.1 // indirect - github.com/aws/aws-sdk-go v1.45.6 // indirect + github.com/aws/aws-sdk-go v1.50.36 // indirect github.com/aws/aws-sdk-go-v2/service/pricing v1.21.6 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/evertras/bubble-table v0.15.2 // indirect @@ -44,6 +46,7 @@ require ( github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/oliveagle/jsonpath v0.0.0-20180606110733-2e52cf6e6852 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect + github.com/pulumi/pulumi-docker/sdk/v4 v4.4.3 // indirect github.com/sahilm/fuzzy v0.1.0 // indirect golang.org/x/mod v0.18.0 // indirect golang.org/x/tools v0.22.0 // indirect @@ -59,17 +62,17 @@ require ( github.com/atotto/clipboard v0.1.4 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.18 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 // indirect github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.20.11 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.28.12 // indirect - github.com/aws/smithy-go v1.20.2 // indirect + github.com/aws/smithy-go v1.22.1 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect github.com/charmbracelet/bubbletea v0.25.0 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect @@ -80,7 +83,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/google/uuid v1.6.0 // indirect // github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/hcl/v2 v2.20.1 // indirect + github.com/hashicorp/hcl/v2 v2.22.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect @@ -98,7 +101,7 @@ require ( github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 // indirect - github.com/pulumi/esc v0.9.1 // indirect + github.com/pulumi/esc v0.10.0 // indirect github.com/pulumi/pulumi-azure-native-sdk/v2 v2.76.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect @@ -110,8 +113,8 @@ require ( github.com/subosito/gotenv v1.6.0 // indirect github.com/zclconf/go-cty v1.13.2 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/sync v0.7.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c // indirect + golang.org/x/sync v0.10.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) @@ -120,6 +123,7 @@ require ( github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect + github.com/aws/aws-sdk-go-v2/service/ecs v1.53.0 github.com/blang/semver v3.5.1+incompatible // indirect github.com/cheggaaa/pb v1.0.29 // indirect github.com/djherbis/times v1.5.0 // indirect @@ -129,7 +133,7 @@ require ( github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.12.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/glog v1.2.1 // indirect + github.com/golang/glog v1.2.2 // indirect github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -155,13 +159,13 @@ require ( github.com/uber/jaeger-lib v2.4.1+incompatible // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect go.uber.org/atomic v1.9.0 // indirect - golang.org/x/crypto v0.25.0 // indirect - golang.org/x/net v0.27.0 // indirect - golang.org/x/sys v0.22.0 // indirect - golang.org/x/term v0.22.0 // indirect - golang.org/x/text v0.16.0 // indirect - google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.34.2 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/term v0.27.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/grpc v1.67.1 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect lukechampine.com/frand v1.4.2 // indirect diff --git a/go.sum b/go.sum index 2c7830e4f..04a80ba86 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,5 @@ dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= -github.com/Azure/azure-sdk-for-go v66.0.0+incompatible h1:bmmC38SlE8/E81nNADlgmVGurPWMHDX2YNXVQMrBpEE= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= @@ -42,11 +41,11 @@ github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= github.com/aws/amazon-ec2-instance-selector/v2 v2.4.2-0.20231006140257-d989c5d76f0e h1:WWOuG4hx+k8KjLO0tHGrYUwY95nKJMMU9A/IGeIEKnU= github.com/aws/amazon-ec2-instance-selector/v2 v2.4.2-0.20231006140257-d989c5d76f0e/go.mod h1:xN+IXvhDWtzz9rQrNVLK+wwXvNie/bc6gv9gSP1cxlg= -github.com/aws/aws-sdk-go v1.45.6 h1:Y2isQQBZsnO15dzUQo9YQRThtHgrV200XCH05BRHVJI= -github.com/aws/aws-sdk-go v1.45.6/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.50.36 h1:PjWXHwZPuTLMR1NIb8nEjLucZBMzmf84TLoLbD8BZqk= +github.com/aws/aws-sdk-go v1.50.36/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M= -github.com/aws/aws-sdk-go-v2 v1.27.2 h1:pLsTXqX93rimAOZG2FIYraDQstZaaGVVN4tNw65v0h8= -github.com/aws/aws-sdk-go-v2 v1.27.2/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/aws/aws-sdk-go-v2 v1.32.6 h1:7BokKRgRPuGmKkFMhEg/jSul+tB9VvXhcViILtfG8b4= +github.com/aws/aws-sdk-go-v2 v1.32.6/go.mod h1:P5WJBrYqqbWVaOxgH0X/FYYD47/nooaPOZPlQdmiN2U= github.com/aws/aws-sdk-go-v2/config v1.27.18 h1:wFvAnwOKKe7QAyIxziwSKjmer9JBMH1vzIL6W+fYuKk= github.com/aws/aws-sdk-go-v2/config v1.27.18/go.mod h1:0xz6cgdX55+kmppvPm2IaKzIXOheGJhAufacPJaXZ7c= github.com/aws/aws-sdk-go-v2/credentials v1.17.18 h1:D/ALDWqK4JdY3OFgA2thcPO1c9aYTT5STS/CvnkqY1c= @@ -54,15 +53,17 @@ github.com/aws/aws-sdk-go-v2/credentials v1.17.18/go.mod h1:JuitCWq+F5QGUrmMPsk9 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5 h1:dDgptDO9dxeFkXy+tEgVkzSClHZje/6JkPW5aZyEvrQ= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.5/go.mod h1:gjvE2KBUgUQhcv89jqxrIxH9GaKs1JbZzWejj/DaHGA= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41/go.mod h1:CrObHAuPneJBlfEJ5T3szXOUkLEThaGfvnhTf33buas= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 h1:cy8ahBJuhtM8GTTSyOkfy6WVPV1IE+SS5/wfXUYuulw= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9/go.mod h1:CZBXGLaJnEZI6EVNcPd7a6B5IC5cA/GkRWtu9fp3S6Y= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 h1:s/fF4+yDQDoElYhfIVvSNyeCydfbuTKzhxSXDXCPasU= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25/go.mod h1:IgPfDv5jqFIzQSNbUEMoitNooSMXjRSDkhXv8jiROvU= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35/go.mod h1:SJC1nEVVva1g3pHAIdCp7QsRIkMmLAgoDquQ9Rr8kYw= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 h1:A4SYk07ef04+vxZToz9LWvAXl9LW0NClpPpMsi31cz0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9/go.mod h1:5jJcHuwDagxN+ErjQ3PU3ocf6Ylc/p9x+BLO/+X4iXw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 h1:ZntTCl5EsYnhN/IygQEUugpdwbhdkom9uHcbCftiGgA= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25/go.mod h1:DBdPrgeocww+CSl1C8cEV8PN1mHMBhuCDLpXezyvWkE= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 h1:hT8rVHwugYE2lEfdFE0QWVo81lF7jMrYJVDWI+f+VxU= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0/go.mod h1:8tu/lYfQfFe6IGnaOdrpVgEL2IrrDOf6/m9RQum4NkY= github.com/aws/aws-sdk-go-v2/service/ec2 v1.142.0 h1:VrFC1uEZjX4ghkm/et8ATVGb1mT75Iv8aPKPjUE+F8A= github.com/aws/aws-sdk-go-v2/service/ec2 v1.142.0/go.mod h1:qjhtI9zjpUHRc6khtrIM9fb48+ii6+UikL3/b+MKYn0= +github.com/aws/aws-sdk-go-v2/service/ecs v1.53.0 h1:TCQZX4ztlcWXAcZouKh9qJMcVaH/qTidFTfsvJwUI30= +github.com/aws/aws-sdk-go-v2/service/ecs v1.53.0/go.mod h1:Ghi1OWUv4+VMEULWiHsKH2gNA3KAcMoLWsvU0eRXvIA= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 h1:Ji0DY1xUsUr3I8cHps0G+XM3WWU16lP6yG8qu1GAZAs= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2/go.mod h1:5CsjAbs3NlGQyZNFACh+zztPDI7fU6eW9QsxjfnuBKg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.11 h1:o4T+fKxA3gTMcluBNZZXE9DNaMkJuUL1O3mffCUjoJo= @@ -76,8 +77,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.24.5/go.mod h1:5ZXesEuy/QcO0WUnt github.com/aws/aws-sdk-go-v2/service/sts v1.28.12 h1:M/1u4HBpwLuMtjlxuI2y6HoVLzF5e2mfxHCg7ZVMYmk= github.com/aws/aws-sdk-go-v2/service/sts v1.28.12/go.mod h1:kcfd+eTdEi/40FIbLq4Hif3XMXnl5b/+t/KTfLt9xIk= github.com/aws/smithy-go v1.14.2/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= -github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/smithy-go v1.22.1 h1:/HPHZQ0g7f4eUeK6HKglFz8uwVfZKgoI25rb/J+dnro= +github.com/aws/smithy-go v1.22.1/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= @@ -86,8 +87,8 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= @@ -141,12 +142,10 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= -github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/glog v1.2.2 h1:1+mZ9upx1Dh6FmUTFR1naJ77miKiXgALjWOZ3NVFPmY= +github.com/golang/glog v1.2.2/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -161,8 +160,8 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.20.1 h1:M6hgdyz7HYt1UN9e61j+qKJBqR3orTWbI1HKBJEdxtc= -github.com/hashicorp/hcl/v2 v2.20.1/go.mod h1:TZDqQ4kNKCbh1iJp99FdPiUaVDDUPivbqxZulxDYqL4= +github.com/hashicorp/hcl/v2 v2.22.0 h1:hkZ3nCtqeJsDhPRFz5EA9iwcG1hNWGePOTw6oyul12M= +github.com/hashicorp/hcl/v2 v2.22.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= @@ -250,10 +249,14 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= -github.com/pulumi/esc v0.9.1 h1:HH5eEv8sgyxSpY5a8yePyqFXzA8cvBvapfH8457+mIs= -github.com/pulumi/esc v0.9.1/go.mod h1:oEJ6bOsjYlQUpjf70GiX+CXn3VBmpwFDxUTlmtUN84c= +github.com/pulumi/esc v0.10.0 h1:jzBKzkLVW0mePeanDRfqSQoCJ5yrkux0jIwAkUxpRKE= +github.com/pulumi/esc v0.10.0/go.mod h1:2Bfa+FWj/xl8CKqRTWbWgDX0SOD4opdQgvYSURTGK2c= +github.com/pulumi/pulumi-aws-native/sdk v1.17.0 h1:+5hCHeH9VMQDUsHy6ExazYRf5GtFqMo2zfoY7hm/ebo= +github.com/pulumi/pulumi-aws-native/sdk v1.17.0/go.mod h1:rVef/mD+N7cGTb3TjY6hQ3kt2nyB4vJXCVpbGgaP6ks= github.com/pulumi/pulumi-aws/sdk/v6 v6.64.0 h1:O2J/O1MHKykwYCBRPVtSSoK28QfT/miuxeMCqfCsXCY= github.com/pulumi/pulumi-aws/sdk/v6 v6.64.0/go.mod h1:dKczi8eHVnlINfyDpds1iqXzojUILHAjUQIjvRlRYx4= +github.com/pulumi/pulumi-awsx/sdk/v2 v2.19.0 h1:jil2EBzZnKsRDrLfvx2gnAaq17HQLrTbpPsIb3h+98U= +github.com/pulumi/pulumi-awsx/sdk/v2 v2.19.0/go.mod h1:r+K4M7jnLqvvQDeR/0mBRq2EPZaqsDg24Ciy3ml/thA= github.com/pulumi/pulumi-azure-native-sdk/authorization/v2 v2.76.0 h1:D8EielhAoUhSKGIS9s/aWijpXdZorMhngLHO/jFxclw= github.com/pulumi/pulumi-azure-native-sdk/authorization/v2 v2.76.0/go.mod h1:vyF2FgS7llLc9ostzI5g5K5ULNjaqWR8zG+VgNI7Rek= github.com/pulumi/pulumi-azure-native-sdk/compute/v2 v2.76.0 h1:9R38rvw0dM9xrbyzh/llFjmZ51J2n5T+nVwpi6tyu6E= @@ -272,12 +275,14 @@ github.com/pulumi/pulumi-azure-native-sdk/v2 v2.76.0 h1:SzPA7P0H213ULOUvneoJRi40 github.com/pulumi/pulumi-azure-native-sdk/v2 v2.76.0/go.mod h1:pzCvLkEbZ3aZJ3SMXxR3+0mV1fK0Qm7wHiMDfaoLib4= github.com/pulumi/pulumi-command/sdk v1.0.1 h1:ZuBSFT57nxg/fs8yBymUhKLkjJ6qmyN3gNvlY/idiN0= github.com/pulumi/pulumi-command/sdk v1.0.1/go.mod h1:C7sfdFbUIoXKoIASfXUbP/U9xnwPfxvz8dBpFodohlA= +github.com/pulumi/pulumi-docker/sdk/v4 v4.4.3 h1:gQC2As+wE8QflbLCG90jLaKwIpqW3yl1y327Jj6ovbI= +github.com/pulumi/pulumi-docker/sdk/v4 v4.4.3/go.mod h1:i19ZhFjFQrngtXYLHp3kjZNRmnEnq/DUdXK6/CBk77o= github.com/pulumi/pulumi-random/sdk/v4 v4.16.7 h1:39rhOe/PTUGMYia8pR5T2wbxxMt2pwrlonf0ncYKSzE= github.com/pulumi/pulumi-random/sdk/v4 v4.16.7/go.mod h1:cxxDhJzUPt/YElfvlWa15Q4NGF6XXS8kUs4OQsCxSBk= github.com/pulumi/pulumi-tls/sdk/v5 v5.0.9 h1:JH5TkGJDwlTqKdSJxd49DfrJOpVkRyGDvgKS9gwcV9U= github.com/pulumi/pulumi-tls/sdk/v5 v5.0.9/go.mod h1:3B+v+HC4bjAYf1mVxRVL/bDY20+VEMwfxRKgc3oeCrs= -github.com/pulumi/pulumi/sdk/v3 v3.142.0 h1:SmcVddGuvwAh3g3XUVQQ5gVRQUKH1yZ6iETpDNHIHlw= -github.com/pulumi/pulumi/sdk/v3 v3.142.0/go.mod h1:PvKsX88co8XuwuPdzolMvew5lZV+4JmZfkeSjj7A6dI= +github.com/pulumi/pulumi/sdk/v3 v3.143.0 h1:z1m8Fc6l723eU2J/bP7UHE5t6WbBu4iIDAl1WaalQk4= +github.com/pulumi/pulumi/sdk/v3 v3.143.0/go.mod h1:OFpZabILGxrFqzcABFpMCksrHGVp4ymRM2BkKjlazDY= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= @@ -356,8 +361,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= -golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8 h1:LoYXNGAShUG3m/ehNk4iFctuhGX/+R1ZpfJ4/ia80JM= golang.org/x/exp v0.0.0-20240604190554-fc45aab8b7f8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= @@ -376,19 +381,18 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= -golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -410,16 +414,15 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= -golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.22.0 h1:BbsgPEJULsl2fV/AT3v15Mjva5yXKQDyKf+TbDz7QJk= -golang.org/x/term v0.22.0/go.mod h1:F3qCibpT5AMpCRfhfT53vVJwhLtIVHhB9XDjfFvnMI4= +golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -427,8 +430,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= -golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -443,12 +446,12 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c h1:lfpJ/2rWPa/kJgxyyXM8PrNnfCzcmxJ265mADgwmvLI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E= +google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/oci/Containerfile b/oci/Containerfile index 3ae6b8129..fa687e13a 100644 --- a/oci/Containerfile +++ b/oci/Containerfile @@ -36,6 +36,8 @@ ENV AZ_CLI_VERSION 2.61.0 # Pulumi plugins # renovate: datasource=github-releases depName=pulumi/pulumi-aws ARG PULUMI_AWS_VERSION=v6.64.0 +# renovate: datasource=github-releases depName=pulumi/pulumi-awsx +ARG PULUMI_AWSX_VERSION=v2.19.0 # Install this # https://releases.hashicorp.com/terraform-provider-aws/5.75.1/terraform-provider-aws_5.75.1_linux_amd64.zip # renovate: datasource=github-releases depName=pulumi/pulumi-azure-native @@ -69,10 +71,8 @@ RUN if [ "$TARGETARCH" = "amd64" ]; then \ && pulumi plugin install resource azure-native ${PULUMI_AZURE_NATIVE_VERSION} \ && pulumi plugin install resource command ${PULUMI_COMMAND_VERSION} \ && pulumi plugin install resource tls ${PULUMI_TLS_VERSION} \ - && pulumi plugin install resource random ${PULUMI_RANDOM_VERSION} - -# TODO review permissions on sharing mounting volume from host -# USER 65532:65532 + && pulumi plugin install resource random ${PULUMI_RANDOM_VERSION} \ + && pulumi plugin install resource awsx ${PULUMI_AWSX_VERSION} ENTRYPOINT ["mapt"] # Default to show help diff --git a/pkg/api/serverless/serverless.go b/pkg/api/serverless/serverless.go new file mode 100644 index 000000000..ee7c428fb --- /dev/null +++ b/pkg/api/serverless/serverless.go @@ -0,0 +1,10 @@ +package serverless + +var ( + // mapt image to run on serverless mode + OCI = "quay.io/redhat-developer/mapt:v0.0.0-unset" +) + +type ServerlessManager interface { + Create() error +} diff --git a/pkg/provider/aws/api/serverless/serverless.go b/pkg/provider/aws/api/serverless/serverless.go new file mode 100644 index 000000000..c66aaaae1 --- /dev/null +++ b/pkg/provider/aws/api/serverless/serverless.go @@ -0,0 +1,66 @@ +package serverless + +import ( + "strings" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler" + awsxecs "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + maptServerless "github.com/redhat-developer/mapt/pkg/api/serverless" + "github.com/redhat-developer/mapt/pkg/provider/aws/data" + resourcesUtil "github.com/redhat-developer/mapt/pkg/util/resources" +) + +type ServerlessManager struct{} + +// Mapts requires the cluster to exist previously wit specific naming +var ( + region = "eu-west-1" + name = "serverless-mapt" +) + +func GetServerlessManager() *ServerlessManager { + return &ServerlessManager{} +} + +func (sm *ServerlessManager) Create(ctx *pulumi.Context, + prefix, componentID string, command, schedule string) error { + // Get the pre configured cluster to handle serverless exectucions + clusterArn, err := data.GetCluster(®ion, name) + if err != nil { + return err + } + // Create definition of the mapt execution + fs, err := awsxecs.NewFargateService(ctx, + resourcesUtil.GetResourceName(prefix, componentID, "fgs"), + &awsxecs.FargateServiceArgs{ + Cluster: pulumi.String(*clusterArn), + TaskDefinitionArgs: &awsxecs.FargateServiceTaskDefinitionArgs{ + Container: &awsxecs.TaskDefinitionContainerDefinitionArgs{ + Image: pulumi.String(maptServerless.OCI), + Command: pulumi.ToStringArray(strings.Fields(command)), + }, + // May this is valid instead of auth credentials for mapt + // Do we know if setting the Role will setup ephemeral creds with env values? + // TaskRole: &awsx.DefaultRoleWithPolicyArgs{ + // }, + }, + }) + if err != nil { + return err + } + _, err = scheduler.NewSchedule(ctx, + resourcesUtil.GetResourceName(prefix, componentID, "fgs"), + &scheduler.ScheduleArgs{ + Target: scheduler.ScheduleTargetArgs{ + EcsParameters: scheduler.ScheduleEcsParametersArgs{ + TaskDefinitionArn: fs.TaskDefinition.Arn(), + }, + }, + ScheduleExpression: pulumi.String(schedule), + }) + if err != nil { + return err + } + return nil +} diff --git a/pkg/provider/aws/data/ecs.go b/pkg/provider/aws/data/ecs.go new file mode 100644 index 000000000..e22e0179f --- /dev/null +++ b/pkg/provider/aws/data/ecs.go @@ -0,0 +1,43 @@ +package data + +import ( + "context" + "fmt" + + "github.com/aws/aws-sdk-go-v2/config" + "github.com/aws/aws-sdk-go-v2/service/ecs" +) + +func GetCluster(region *string, clusterName string) (*string, error) { + var cfgOpts config.LoadOptionsFunc + if region != nil { + cfgOpts = config.WithRegion(*region) + } + cfg, err := config.LoadDefaultConfig(context.TODO(), cfgOpts) + if err != nil { + return nil, err + } + // Create an ECS client + client := ecs.NewFromConfig(cfg) + + listClustersOutput, err := client.ListClusters( + context.TODO(), + &ecs.ListClustersInput{}) + if err != nil && len(listClustersOutput.ClusterArns) == 0 { + return nil, fmt.Errorf("error getting ecs clusters") + } + cls, err := client.DescribeClusters( + context.TODO(), + &ecs.DescribeClustersInput{ + Clusters: listClustersOutput.ClusterArns, + }) + if err != nil { + return nil, err + } + for _, c := range cls.Clusters { + if *c.ClusterName == clusterName { + return c.ClusterArn, nil + } + } + return nil, fmt.Errorf("error searching for cluster") +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go new file mode 100644 index 000000000..6504a2186 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/accountid_endpoint_mode.go @@ -0,0 +1,18 @@ +package aws + +// AccountIDEndpointMode controls how a resolved AWS account ID is handled for endpoint routing. +type AccountIDEndpointMode string + +const ( + // AccountIDEndpointModeUnset indicates the AWS account ID will not be used for endpoint routing + AccountIDEndpointModeUnset AccountIDEndpointMode = "" + + // AccountIDEndpointModePreferred indicates the AWS account ID will be used for endpoint routing if present + AccountIDEndpointModePreferred = "preferred" + + // AccountIDEndpointModeRequired indicates an error will be returned if the AWS account ID is not resolved from identity + AccountIDEndpointModeRequired = "required" + + // AccountIDEndpointModeDisabled indicates the AWS account ID will be ignored during endpoint routing + AccountIDEndpointModeDisabled = "disabled" +) diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go index 2264200c1..16000d792 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/config.go @@ -162,6 +162,9 @@ type Config struct { // This variable is sourced from environment variable AWS_REQUEST_MIN_COMPRESSION_SIZE_BYTES or // the shared config profile attribute request_min_compression_size_bytes RequestMinCompressSizeBytes int64 + + // Controls how a resolved AWS account ID is handled for endpoint routing. + AccountIDEndpointMode AccountIDEndpointMode } // NewConfig returns a new Config pointer that can be chained with builder diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go index 714d4ad85..98ba77056 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/credentials.go @@ -90,6 +90,9 @@ type Credentials struct { // The time the credentials will expire at. Should be ignored if CanExpire // is false. Expires time.Time + + // The ID of the account for the credentials. + AccountID string } // Expired returns if the credentials have expired. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go index a62b33dde..ef3cc2796 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/go_module_metadata.go @@ -3,4 +3,4 @@ package aws // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.27.2" +const goModuleVersion = "1.32.6" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go deleted file mode 100644 index 19d6107c4..000000000 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics/metrics.go +++ /dev/null @@ -1,320 +0,0 @@ -// Package metrics implements metrics gathering for SDK development purposes. -// -// This package is designated as private and is intended for use only by the -// AWS client runtime. The exported API therein is not considered stable and -// is subject to breaking changes without notice. -package metrics - -import ( - "context" - "encoding/json" - "fmt" - "sync" - "time" - - "github.com/aws/smithy-go/middleware" -) - -const ( - // ServiceIDKey is the key for the service ID metric. - ServiceIDKey = "ServiceId" - // OperationNameKey is the key for the operation name metric. - OperationNameKey = "OperationName" - // ClientRequestIDKey is the key for the client request ID metric. - ClientRequestIDKey = "ClientRequestId" - // APICallDurationKey is the key for the API call duration metric. - APICallDurationKey = "ApiCallDuration" - // APICallSuccessfulKey is the key for the API call successful metric. - APICallSuccessfulKey = "ApiCallSuccessful" - // MarshallingDurationKey is the key for the marshalling duration metric. - MarshallingDurationKey = "MarshallingDuration" - // InThroughputKey is the key for the input throughput metric. - InThroughputKey = "InThroughput" - // OutThroughputKey is the key for the output throughput metric. - OutThroughputKey = "OutThroughput" - // RetryCountKey is the key for the retry count metric. - RetryCountKey = "RetryCount" - // HTTPStatusCodeKey is the key for the HTTP status code metric. - HTTPStatusCodeKey = "HttpStatusCode" - // AWSExtendedRequestIDKey is the key for the AWS extended request ID metric. - AWSExtendedRequestIDKey = "AwsExtendedRequestId" - // AWSRequestIDKey is the key for the AWS request ID metric. - AWSRequestIDKey = "AwsRequestId" - // BackoffDelayDurationKey is the key for the backoff delay duration metric. - BackoffDelayDurationKey = "BackoffDelayDuration" - // StreamThroughputKey is the key for the stream throughput metric. - StreamThroughputKey = "Throughput" - // ConcurrencyAcquireDurationKey is the key for the concurrency acquire duration metric. - ConcurrencyAcquireDurationKey = "ConcurrencyAcquireDuration" - // PendingConcurrencyAcquiresKey is the key for the pending concurrency acquires metric. - PendingConcurrencyAcquiresKey = "PendingConcurrencyAcquires" - // SigningDurationKey is the key for the signing duration metric. - SigningDurationKey = "SigningDuration" - // UnmarshallingDurationKey is the key for the unmarshalling duration metric. - UnmarshallingDurationKey = "UnmarshallingDuration" - // TimeToFirstByteKey is the key for the time to first byte metric. - TimeToFirstByteKey = "TimeToFirstByte" - // ServiceCallDurationKey is the key for the service call duration metric. - ServiceCallDurationKey = "ServiceCallDuration" - // EndpointResolutionDurationKey is the key for the endpoint resolution duration metric. - EndpointResolutionDurationKey = "EndpointResolutionDuration" - // AttemptNumberKey is the key for the attempt number metric. - AttemptNumberKey = "AttemptNumber" - // MaxConcurrencyKey is the key for the max concurrency metric. - MaxConcurrencyKey = "MaxConcurrency" - // AvailableConcurrencyKey is the key for the available concurrency metric. - AvailableConcurrencyKey = "AvailableConcurrency" -) - -// MetricPublisher provides the interface to provide custom MetricPublishers. -// PostRequestMetrics will be invoked by the MetricCollection middleware to post request. -// PostStreamMetrics will be invoked by ReadCloserWithMetrics to post stream metrics. -type MetricPublisher interface { - PostRequestMetrics(*MetricData) error - PostStreamMetrics(*MetricData) error -} - -// Serializer provides the interface to provide custom Serializers. -// Serialize will transform any input object in its corresponding string representation. -type Serializer interface { - Serialize(obj interface{}) (string, error) -} - -// DefaultSerializer is an implementation of the Serializer interface. -type DefaultSerializer struct{} - -// Serialize uses the default JSON serializer to obtain the string representation of an object. -func (DefaultSerializer) Serialize(obj interface{}) (string, error) { - bytes, err := json.Marshal(obj) - if err != nil { - return "", err - } - return string(bytes), nil -} - -type metricContextKey struct{} - -// MetricContext contains fields to store metric-related information. -type MetricContext struct { - connectionCounter *SharedConnectionCounter - publisher MetricPublisher - data *MetricData -} - -// MetricData stores the collected metric data. -type MetricData struct { - RequestStartTime time.Time - RequestEndTime time.Time - APICallDuration time.Duration - SerializeStartTime time.Time - SerializeEndTime time.Time - MarshallingDuration time.Duration - ResolveEndpointStartTime time.Time - ResolveEndpointEndTime time.Time - EndpointResolutionDuration time.Duration - GetIdentityStartTime time.Time - GetIdentityEndTime time.Time - InThroughput float64 - OutThroughput float64 - RetryCount int - Success uint8 - StatusCode int - ClientRequestID string - ServiceID string - OperationName string - PartitionID string - Region string - UserAgent string - RequestContentLength int64 - Stream StreamMetrics - Attempts []AttemptMetrics -} - -// StreamMetrics stores metrics related to streaming data. -type StreamMetrics struct { - ReadDuration time.Duration - ReadBytes int64 - Throughput float64 -} - -// AttemptMetrics stores metrics related to individual attempts. -type AttemptMetrics struct { - ServiceCallStart time.Time - ServiceCallEnd time.Time - ServiceCallDuration time.Duration - FirstByteTime time.Time - TimeToFirstByte time.Duration - ConnRequestedTime time.Time - ConnObtainedTime time.Time - ConcurrencyAcquireDuration time.Duration - SignStartTime time.Time - SignEndTime time.Time - SigningDuration time.Duration - DeserializeStartTime time.Time - DeserializeEndTime time.Time - UnMarshallingDuration time.Duration - RetryDelay time.Duration - ResponseContentLength int64 - StatusCode int - RequestID string - ExtendedRequestID string - HTTPClient string - MaxConcurrency int - PendingConnectionAcquires int - AvailableConcurrency int - ActiveRequests int - ReusedConnection bool -} - -// Data returns the MetricData associated with the MetricContext. -func (mc *MetricContext) Data() *MetricData { - return mc.data -} - -// ConnectionCounter returns the SharedConnectionCounter associated with the MetricContext. -func (mc *MetricContext) ConnectionCounter() *SharedConnectionCounter { - return mc.connectionCounter -} - -// Publisher returns the MetricPublisher associated with the MetricContext. -func (mc *MetricContext) Publisher() MetricPublisher { - return mc.publisher -} - -// ComputeRequestMetrics calculates and populates derived metrics based on the collected data. -func (md *MetricData) ComputeRequestMetrics() { - - for idx := range md.Attempts { - attempt := &md.Attempts[idx] - attempt.ConcurrencyAcquireDuration = attempt.ConnObtainedTime.Sub(attempt.ConnRequestedTime) - attempt.SigningDuration = attempt.SignEndTime.Sub(attempt.SignStartTime) - attempt.UnMarshallingDuration = attempt.DeserializeEndTime.Sub(attempt.DeserializeStartTime) - attempt.TimeToFirstByte = attempt.FirstByteTime.Sub(attempt.ServiceCallStart) - attempt.ServiceCallDuration = attempt.ServiceCallEnd.Sub(attempt.ServiceCallStart) - } - - md.APICallDuration = md.RequestEndTime.Sub(md.RequestStartTime) - md.MarshallingDuration = md.SerializeEndTime.Sub(md.SerializeStartTime) - md.EndpointResolutionDuration = md.ResolveEndpointEndTime.Sub(md.ResolveEndpointStartTime) - - md.RetryCount = len(md.Attempts) - 1 - - latestAttempt, err := md.LatestAttempt() - - if err != nil { - fmt.Printf("error retrieving attempts data due to: %s. Skipping Throughput metrics", err.Error()) - } else { - - md.StatusCode = latestAttempt.StatusCode - - if md.Success == 1 { - if latestAttempt.ResponseContentLength > 0 && latestAttempt.ServiceCallDuration > 0 { - md.InThroughput = float64(latestAttempt.ResponseContentLength) / latestAttempt.ServiceCallDuration.Seconds() - } - if md.RequestContentLength > 0 && latestAttempt.ServiceCallDuration > 0 { - md.OutThroughput = float64(md.RequestContentLength) / latestAttempt.ServiceCallDuration.Seconds() - } - } - } -} - -// LatestAttempt returns the latest attempt metrics. -// It returns an error if no attempts are initialized. -func (md *MetricData) LatestAttempt() (*AttemptMetrics, error) { - if md.Attempts == nil || len(md.Attempts) == 0 { - return nil, fmt.Errorf("no attempts initialized. NewAttempt() should be called first") - } - return &md.Attempts[len(md.Attempts)-1], nil -} - -// NewAttempt initializes new attempt metrics. -func (md *MetricData) NewAttempt() { - if md.Attempts == nil { - md.Attempts = []AttemptMetrics{} - } - md.Attempts = append(md.Attempts, AttemptMetrics{}) -} - -// SharedConnectionCounter is a counter shared across API calls. -type SharedConnectionCounter struct { - mu sync.Mutex - - activeRequests int - pendingConnectionAcquire int -} - -// ActiveRequests returns the count of active requests. -func (cc *SharedConnectionCounter) ActiveRequests() int { - cc.mu.Lock() - defer cc.mu.Unlock() - - return cc.activeRequests -} - -// PendingConnectionAcquire returns the count of pending connection acquires. -func (cc *SharedConnectionCounter) PendingConnectionAcquire() int { - cc.mu.Lock() - defer cc.mu.Unlock() - - return cc.pendingConnectionAcquire -} - -// AddActiveRequest increments the count of active requests. -func (cc *SharedConnectionCounter) AddActiveRequest() { - cc.mu.Lock() - defer cc.mu.Unlock() - - cc.activeRequests++ -} - -// RemoveActiveRequest decrements the count of active requests. -func (cc *SharedConnectionCounter) RemoveActiveRequest() { - cc.mu.Lock() - defer cc.mu.Unlock() - - cc.activeRequests-- -} - -// AddPendingConnectionAcquire increments the count of pending connection acquires. -func (cc *SharedConnectionCounter) AddPendingConnectionAcquire() { - cc.mu.Lock() - defer cc.mu.Unlock() - - cc.pendingConnectionAcquire++ -} - -// RemovePendingConnectionAcquire decrements the count of pending connection acquires. -func (cc *SharedConnectionCounter) RemovePendingConnectionAcquire() { - cc.mu.Lock() - defer cc.mu.Unlock() - - cc.pendingConnectionAcquire-- -} - -// InitMetricContext initializes the metric context with the provided counter and publisher. -// It returns the updated context. -func InitMetricContext( - ctx context.Context, counter *SharedConnectionCounter, publisher MetricPublisher, -) context.Context { - if middleware.GetStackValue(ctx, metricContextKey{}) == nil { - ctx = middleware.WithStackValue(ctx, metricContextKey{}, &MetricContext{ - connectionCounter: counter, - publisher: publisher, - data: &MetricData{ - Attempts: []AttemptMetrics{}, - Stream: StreamMetrics{}, - }, - }) - } - return ctx -} - -// Context returns the metric context from the given context. -// It returns nil if the metric context is not found. -func Context(ctx context.Context) *MetricContext { - mctx := middleware.GetStackValue(ctx, metricContextKey{}) - if mctx == nil { - return nil - } - return mctx.(*MetricContext) -} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go index e7d268c3d..128b60a73 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/request_id_retriever.go @@ -4,6 +4,7 @@ import ( "context" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -45,6 +46,9 @@ func (m *RequestIDRetriever) HandleDeserialize(ctx context.Context, in middlewar if v := resp.Header.Get(h); len(v) != 0 { // set reqID on metadata for successful responses. SetRequestIDMetadata(&metadata, v) + + span, _ := tracing.GetSpan(ctx) + span.SetProperty("aws.request_id", v) break } } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go index db7cda42d..ab4e61907 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/middleware/user_agent.go @@ -5,6 +5,7 @@ import ( "fmt" "os" "runtime" + "sort" "strings" "github.com/aws/aws-sdk-go-v2/aws" @@ -30,8 +31,12 @@ const ( FrameworkMetadata AdditionalMetadata ApplicationIdentifier + FeatureMetadata2 ) +// Hardcoded value to specify which version of the user agent we're using +const uaMetadata = "ua/2.1" + func (k SDKAgentKeyType) string() string { switch k { case APIMetadata: @@ -50,6 +55,8 @@ func (k SDKAgentKeyType) string() string { return "lib" case ApplicationIdentifier: return "app" + case FeatureMetadata2: + return "m" case AdditionalMetadata: fallthrough default: @@ -64,9 +71,30 @@ var validChars = map[rune]bool{ '-': true, '.': true, '^': true, '_': true, '`': true, '|': true, '~': true, } +// UserAgentFeature enumerates tracked SDK features. +type UserAgentFeature string + +// Enumerates UserAgentFeature. +const ( + UserAgentFeatureResourceModel UserAgentFeature = "A" // n/a (we don't generate separate resource types) + UserAgentFeatureWaiter = "B" + UserAgentFeaturePaginator = "C" + UserAgentFeatureRetryModeLegacy = "D" // n/a (equivalent to standard) + UserAgentFeatureRetryModeStandard = "E" + UserAgentFeatureRetryModeAdaptive = "F" + UserAgentFeatureS3Transfer = "G" + UserAgentFeatureS3CryptoV1N = "H" // n/a (crypto client is external) + UserAgentFeatureS3CryptoV2 = "I" // n/a + UserAgentFeatureS3ExpressBucket = "J" + UserAgentFeatureS3AccessGrants = "K" // not yet implemented + UserAgentFeatureGZIPRequestCompression = "L" + UserAgentFeatureProtocolRPCV2CBOR = "M" +) + // RequestUserAgent is a build middleware that set the User-Agent for the request. type RequestUserAgent struct { sdkAgent, userAgent *smithyhttp.UserAgentBuilder + features map[UserAgentFeature]struct{} } // NewRequestUserAgent returns a new requestUserAgent which will set the User-Agent and X-Amz-User-Agent for the @@ -82,11 +110,13 @@ type RequestUserAgent struct { func NewRequestUserAgent() *RequestUserAgent { userAgent, sdkAgent := smithyhttp.NewUserAgentBuilder(), smithyhttp.NewUserAgentBuilder() addProductName(userAgent) + addUserAgentMetadata(userAgent) addProductName(sdkAgent) r := &RequestUserAgent{ sdkAgent: sdkAgent, userAgent: userAgent, + features: map[UserAgentFeature]struct{}{}, } addSDKMetadata(r) @@ -108,6 +138,10 @@ func addProductName(builder *smithyhttp.UserAgentBuilder) { builder.AddKeyValue(aws.SDKName, aws.SDKVersion) } +func addUserAgentMetadata(builder *smithyhttp.UserAgentBuilder) { + builder.AddKey(uaMetadata) +} + // AddUserAgentKey retrieves a requestUserAgent from the provided stack, or initializes one. func AddUserAgentKey(key string) func(*middleware.Stack) error { return func(stack *middleware.Stack) error { @@ -191,6 +225,12 @@ func (u *RequestUserAgent) AddUserAgentKeyValue(key, value string) { u.userAgent.AddKeyValue(strings.Map(rules, key), strings.Map(rules, value)) } +// AddUserAgentFeature adds the feature ID to the tracking list to be emitted +// in the final User-Agent string. +func (u *RequestUserAgent) AddUserAgentFeature(feature UserAgentFeature) { + u.features[feature] = struct{}{} +} + // AddSDKAgentKey adds the component identified by name to the User-Agent string. func (u *RequestUserAgent) AddSDKAgentKey(keyType SDKAgentKeyType, key string) { // TODO: should target sdkAgent @@ -226,6 +266,9 @@ func (u *RequestUserAgent) HandleBuild(ctx context.Context, in middleware.BuildI func (u *RequestUserAgent) addHTTPUserAgent(request *smithyhttp.Request) { const userAgent = "User-Agent" + if len(u.features) > 0 { + updateHTTPHeader(request, userAgent, buildFeatureMetrics(u.features)) + } updateHTTPHeader(request, userAgent, u.userAgent.Build()) } @@ -259,3 +302,13 @@ func rules(r rune) rune { return '-' } } + +func buildFeatureMetrics(features map[UserAgentFeature]struct{}) string { + fs := make([]string, 0, len(features)) + for f := range features { + fs = append(fs, string(f)) + } + + sort.Strings(fs) + return fmt.Sprintf("%s/%s", FeatureMetadata2.string(), strings.Join(fs, ",")) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/attempt_metrics.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/attempt_metrics.go new file mode 100644 index 000000000..bfa5bf7d1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/attempt_metrics.go @@ -0,0 +1,51 @@ +package retry + +import ( + "context" + + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" +) + +type attemptMetrics struct { + Attempts metrics.Int64Counter + Errors metrics.Int64Counter + + AttemptDuration metrics.Float64Histogram +} + +func newAttemptMetrics(meter metrics.Meter) (*attemptMetrics, error) { + m := &attemptMetrics{} + var err error + + m.Attempts, err = meter.Int64Counter("client.call.attempts", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "{attempt}" + o.Description = "The number of attempts for an individual operation" + }) + if err != nil { + return nil, err + } + m.Errors, err = meter.Int64Counter("client.call.errors", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "{error}" + o.Description = "The number of errors for an operation" + }) + if err != nil { + return nil, err + } + m.AttemptDuration, err = meter.Float64Histogram("client.call.attempt_duration", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = "The time it takes to connect to the service, send the request, and get back HTTP status code and headers (including time queued waiting to be sent)" + }) + if err != nil { + return nil, err + } + + return m, nil +} + +func withOperationMetadata(ctx context.Context) metrics.RecordMetricOption { + return func(o *metrics.RecordMetricOptions) { + o.Properties.Set("rpc.service", middleware.GetServiceID(ctx)) + o.Properties.Set("rpc.method", middleware.GetOperationName(ctx)) + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go index b645fbdf1..52d59b04b 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/retry/middleware.go @@ -8,14 +8,16 @@ import ( "strings" "time" - "github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics" internalcontext "github.com/aws/aws-sdk-go-v2/internal/context" + "github.com/aws/smithy-go" "github.com/aws/aws-sdk-go-v2/aws" awsmiddle "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/internal/sdk" "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" smithymiddle "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" "github.com/aws/smithy-go/transport/http" ) @@ -38,6 +40,9 @@ type Attempt struct { // attempts are reached. LogAttempts bool + // A Meter instance for recording retry-related metrics. + OperationMeter metrics.Meter + retryer aws.RetryerV2 requestCloner RequestCloner } @@ -55,6 +60,10 @@ func NewAttemptMiddleware(retryer aws.Retryer, requestCloner RequestCloner, optF for _, fn := range optFns { fn(m) } + if m.OperationMeter == nil { + m.OperationMeter = metrics.NopMeterProvider{}.Meter("") + } + return m } @@ -80,6 +89,11 @@ func (r *Attempt) HandleFinalize(ctx context.Context, in smithymiddle.FinalizeIn maxAttempts := r.retryer.MaxAttempts() releaseRetryToken := nopRelease + retryMetrics, err := newAttemptMetrics(r.OperationMeter) + if err != nil { + return out, metadata, err + } + for { attemptNum++ attemptInput := in @@ -97,7 +111,25 @@ func (r *Attempt) HandleFinalize(ctx context.Context, in smithymiddle.FinalizeIn ctx = internalcontext.SetAttemptSkewContext(ctx, attemptClockSkew) var attemptResult AttemptResult + + attemptCtx, span := tracing.StartSpan(attemptCtx, "Attempt", func(o *tracing.SpanOptions) { + o.Properties.Set("operation.attempt", attemptNum) + }) + retryMetrics.Attempts.Add(ctx, 1, withOperationMetadata(ctx)) + + start := sdk.NowTime() out, attemptResult, releaseRetryToken, err = r.handleAttempt(attemptCtx, attemptInput, releaseRetryToken, next) + elapsed := sdk.NowTime().Sub(start) + + retryMetrics.AttemptDuration.Record(ctx, float64(elapsed)/1e9, withOperationMetadata(ctx)) + if err != nil { + retryMetrics.Errors.Add(ctx, 1, withOperationMetadata(ctx), func(o *metrics.RecordMetricOptions) { + o.Properties.Set("exception.type", errorType(err)) + }) + } + + span.End() + attemptClockSkew, _ = awsmiddle.GetAttemptSkew(attemptResult.ResponseMetadata) // AttemptResult Retried states that the attempt was not successful, and @@ -238,13 +270,6 @@ func (r *Attempt) handleAttempt( // that time. Potentially early exist if the sleep is canceled via the // context. retryDelay, reqErr := r.retryer.RetryDelay(attemptNum, err) - mctx := metrics.Context(ctx) - if mctx != nil { - attempt, err := mctx.Data().LatestAttempt() - if err != nil { - attempt.RetryDelay = retryDelay - } - } if reqErr != nil { return out, attemptResult, releaseRetryToken, reqErr } @@ -381,3 +406,13 @@ func AddRetryMiddlewares(stack *smithymiddle.Stack, options AddRetryMiddlewaresO } return nil } + +// Determines the value of exception.type for metrics purposes. We prefer an +// API-specific error code, otherwise it's just the Go type for the value. +func errorType(err error) string { + var terr smithy.APIError + if errors.As(err, &terr) { + return terr.ErrorCode() + } + return fmt.Sprintf("%T", err) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go index 71b1a3521..734e548bd 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/internal/v4/headers.go @@ -45,7 +45,6 @@ var RequiredSignedHeaders = Rules{ "X-Amz-Grant-Write-Acp": struct{}{}, "X-Amz-Metadata-Directive": struct{}{}, "X-Amz-Mfa": struct{}{}, - "X-Amz-Request-Payer": struct{}{}, "X-Amz-Server-Side-Encryption": struct{}{}, "X-Amz-Server-Side-Encryption-Aws-Kms-Key-Id": struct{}{}, "X-Amz-Server-Side-Encryption-Context": struct{}{}, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go index a9db6433d..8a46220a3 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/middleware.go @@ -15,6 +15,7 @@ import ( internalauth "github.com/aws/aws-sdk-go-v2/internal/auth" "github.com/aws/aws-sdk-go-v2/internal/sdk" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" smithyhttp "github.com/aws/smithy-go/transport/http" ) @@ -161,6 +162,9 @@ func (m *ComputePayloadSHA256) HandleFinalize( return next.HandleFinalize(ctx, in) } + _, span := tracing.StartSpan(ctx, "ComputePayloadSHA256") + defer span.End() + req, ok := in.Request.(*smithyhttp.Request) if !ok { return out, metadata, &HashComputationError{ @@ -186,6 +190,7 @@ func (m *ComputePayloadSHA256) HandleFinalize( ctx = SetPayloadHash(ctx, hex.EncodeToString(hash.Sum(nil))) + span.End() return next.HandleFinalize(ctx, in) } @@ -367,8 +372,9 @@ func GetSignedRequestSignature(r *http.Request) ([]byte, error) { const authHeaderSignatureElem = "Signature=" if auth := r.Header.Get(authorizationHeader); len(auth) != 0 { - ps := strings.Split(auth, ", ") + ps := strings.Split(auth, ",") for _, p := range ps { + p = strings.TrimSpace(p) if idx := strings.Index(p, authHeaderSignatureElem); idx >= 0 { sig := p[len(authHeaderSignatureElem):] if len(sig) == 0 { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go index dcd896a9b..7ed91d5ba 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/signer/v4/v4.go @@ -394,11 +394,16 @@ func (s *httpSigner) buildCredentialScope() string { func buildQuery(r v4Internal.Rule, header http.Header) (url.Values, http.Header) { query := url.Values{} unsignedHeaders := http.Header{} + + // A list of headers to be converted to lower case to mitigate a limitation from S3 + lowerCaseHeaders := map[string]string{ + "X-Amz-Expected-Bucket-Owner": "x-amz-expected-bucket-owner", // see #2508 + "X-Amz-Request-Payer": "x-amz-request-payer", // see #2764 + } + for k, h := range header { - // literally just this header has this constraint for some stupid reason, - // see #2508 - if k == "X-Amz-Expected-Bucket-Owner" { - k = "x-amz-expected-bucket-owner" + if newKey, ok := lowerCaseHeaders[k]; ok { + k = newKey } if r.IsValid(k) { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go index 26d90719b..8d7c35a9e 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/aws/transport/http/client.go @@ -1,13 +1,16 @@ package http import ( + "context" "crypto/tls" - "github.com/aws/aws-sdk-go-v2/aws" "net" "net/http" "reflect" "sync" "time" + + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/smithy-go/tracing" ) // Defaults for the HTTPTransportBuilder. @@ -179,7 +182,7 @@ func defaultHTTPTransport() *http.Transport { tr := &http.Transport{ Proxy: http.ProxyFromEnvironment, - DialContext: dialer.DialContext, + DialContext: traceDialContext(dialer.DialContext), TLSHandshakeTimeout: DefaultHTTPTransportTLSHandleshakeTimeout, MaxIdleConns: DefaultHTTPTransportMaxIdleConns, MaxIdleConnsPerHost: DefaultHTTPTransportMaxIdleConnsPerHost, @@ -194,6 +197,35 @@ func defaultHTTPTransport() *http.Transport { return tr } +type dialContext func(ctx context.Context, network, addr string) (net.Conn, error) + +func traceDialContext(dc dialContext) dialContext { + return func(ctx context.Context, network, addr string) (net.Conn, error) { + span, _ := tracing.GetSpan(ctx) + span.SetProperty("net.peer.name", addr) + + conn, err := dc(ctx, network, addr) + if err != nil { + return conn, err + } + + raddr := conn.RemoteAddr() + if raddr == nil { + return conn, err + } + + host, port, err := net.SplitHostPort(raddr.String()) + if err != nil { // don't blow up just because we couldn't parse + span.SetProperty("net.peer.addr", raddr.String()) + } else { + span.SetProperty("net.peer.host", host) + span.SetProperty("net.peer.port", port) + } + + return conn, err + } +} + // shallowCopyStruct creates a shallow copy of the passed in source struct, and // returns that copy of the same struct type. func shallowCopyStruct(src interface{}) interface{} { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md index e9cbca3c8..bc8865c52 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/CHANGELOG.md @@ -1,3 +1,69 @@ +# v1.3.25 (2024-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.24 (2024-11-18) + +* **Dependency Update**: Update to smithy-go v1.22.1. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.23 (2024-11-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.22 (2024-10-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.21 (2024-10-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.20 (2024-10-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.19 (2024-10-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.18 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.17 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.16 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.15 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.14 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.13 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.12 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.11 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.3.10 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + # v1.3.9 (2024-06-07) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go index 4147405a9..43c49a952 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/configsources/go_module_metadata.go @@ -3,4 +3,4 @@ package configsources // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.3.9" +const goModuleVersion = "1.3.25" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go index ba6032758..91414afe8 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go @@ -12,11 +12,12 @@ type Partition struct { // PartitionConfig provides the endpoint metadata for an AWS region or partition. type PartitionConfig struct { - Name string `json:"name"` - DnsSuffix string `json:"dnsSuffix"` - DualStackDnsSuffix string `json:"dualStackDnsSuffix"` - SupportsFIPS bool `json:"supportsFIPS"` - SupportsDualStack bool `json:"supportsDualStack"` + Name string `json:"name"` + DnsSuffix string `json:"dnsSuffix"` + DualStackDnsSuffix string `json:"dualStackDnsSuffix"` + SupportsFIPS bool `json:"supportsFIPS"` + SupportsDualStack bool `json:"supportsDualStack"` + ImplicitGlobalRegion string `json:"implicitGlobalRegion"` } type RegionOverrides struct { diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go index 849beffd7..5f0779997 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.go @@ -13,11 +13,12 @@ var partitions = []Partition{ ID: "aws", RegionRegex: "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws", - DnsSuffix: "amazonaws.com", - DualStackDnsSuffix: "api.aws", - SupportsFIPS: true, - SupportsDualStack: true, + Name: "aws", + DnsSuffix: "amazonaws.com", + DualStackDnsSuffix: "api.aws", + SupportsFIPS: true, + SupportsDualStack: true, + ImplicitGlobalRegion: "us-east-1", }, Regions: map[string]RegionOverrides{ "af-south-1": { @@ -111,6 +112,13 @@ var partitions = []Partition{ SupportsFIPS: nil, SupportsDualStack: nil, }, + "ca-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, "eu-central-1": { Name: nil, DnsSuffix: nil, @@ -229,11 +237,12 @@ var partitions = []Partition{ ID: "aws-cn", RegionRegex: "^cn\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws-cn", - DnsSuffix: "amazonaws.com.cn", - DualStackDnsSuffix: "api.amazonwebservices.com.cn", - SupportsFIPS: true, - SupportsDualStack: true, + Name: "aws-cn", + DnsSuffix: "amazonaws.com.cn", + DualStackDnsSuffix: "api.amazonwebservices.com.cn", + SupportsFIPS: true, + SupportsDualStack: true, + ImplicitGlobalRegion: "cn-northwest-1", }, Regions: map[string]RegionOverrides{ "aws-cn-global": { @@ -263,11 +272,12 @@ var partitions = []Partition{ ID: "aws-us-gov", RegionRegex: "^us\\-gov\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws-us-gov", - DnsSuffix: "amazonaws.com", - DualStackDnsSuffix: "api.aws", - SupportsFIPS: true, - SupportsDualStack: true, + Name: "aws-us-gov", + DnsSuffix: "amazonaws.com", + DualStackDnsSuffix: "api.aws", + SupportsFIPS: true, + SupportsDualStack: true, + ImplicitGlobalRegion: "us-gov-west-1", }, Regions: map[string]RegionOverrides{ "aws-us-gov-global": { @@ -297,11 +307,12 @@ var partitions = []Partition{ ID: "aws-iso", RegionRegex: "^us\\-iso\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws-iso", - DnsSuffix: "c2s.ic.gov", - DualStackDnsSuffix: "c2s.ic.gov", - SupportsFIPS: true, - SupportsDualStack: false, + Name: "aws-iso", + DnsSuffix: "c2s.ic.gov", + DualStackDnsSuffix: "c2s.ic.gov", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "us-iso-east-1", }, Regions: map[string]RegionOverrides{ "aws-iso-global": { @@ -331,11 +342,12 @@ var partitions = []Partition{ ID: "aws-iso-b", RegionRegex: "^us\\-isob\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws-iso-b", - DnsSuffix: "sc2s.sgov.gov", - DualStackDnsSuffix: "sc2s.sgov.gov", - SupportsFIPS: true, - SupportsDualStack: false, + Name: "aws-iso-b", + DnsSuffix: "sc2s.sgov.gov", + DualStackDnsSuffix: "sc2s.sgov.gov", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "us-isob-east-1", }, Regions: map[string]RegionOverrides{ "aws-iso-b-global": { @@ -358,23 +370,33 @@ var partitions = []Partition{ ID: "aws-iso-e", RegionRegex: "^eu\\-isoe\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws-iso-e", - DnsSuffix: "cloud.adc-e.uk", - DualStackDnsSuffix: "cloud.adc-e.uk", - SupportsFIPS: true, - SupportsDualStack: false, + Name: "aws-iso-e", + DnsSuffix: "cloud.adc-e.uk", + DualStackDnsSuffix: "cloud.adc-e.uk", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "eu-isoe-west-1", + }, + Regions: map[string]RegionOverrides{ + "eu-isoe-west-1": { + Name: nil, + DnsSuffix: nil, + DualStackDnsSuffix: nil, + SupportsFIPS: nil, + SupportsDualStack: nil, + }, }, - Regions: map[string]RegionOverrides{}, }, { ID: "aws-iso-f", RegionRegex: "^us\\-isof\\-\\w+\\-\\d+$", DefaultConfig: PartitionConfig{ - Name: "aws-iso-f", - DnsSuffix: "csp.hci.ic.gov", - DualStackDnsSuffix: "csp.hci.ic.gov", - SupportsFIPS: true, - SupportsDualStack: false, + Name: "aws-iso-f", + DnsSuffix: "csp.hci.ic.gov", + DualStackDnsSuffix: "csp.hci.ic.gov", + SupportsFIPS: true, + SupportsDualStack: false, + ImplicitGlobalRegion: "us-isof-south-1", }, Regions: map[string]RegionOverrides{}, }, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json index 7a28569c3..a2f068088 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partitions.json @@ -9,7 +9,7 @@ "supportsDualStack" : true, "supportsFIPS" : true }, - "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il)\\-\\w+\\-\\d+$", + "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", "regions" : { "af-south-1" : { "description" : "Africa (Cape Town)" @@ -44,6 +44,9 @@ "ap-southeast-4" : { "description" : "Asia Pacific (Melbourne)" }, + "ap-southeast-5" : { + "description" : "Asia Pacific (Malaysia)" + }, "aws-global" : { "description" : "AWS Standard global region" }, diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md index 8b9ffa0b2..b2620757c 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/CHANGELOG.md @@ -1,3 +1,69 @@ +# v2.6.25 (2024-12-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.24 (2024-11-18) + +* **Dependency Update**: Update to smithy-go v1.22.1. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.23 (2024-11-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.22 (2024-10-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.21 (2024-10-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.20 (2024-10-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.19 (2024-10-04) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.18 (2024-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.17 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.16 (2024-08-15) + +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.15 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.14 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.13 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.12 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.11 (2024-06-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v2.6.10 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + # v2.6.9 (2024-06-07) * **Dependency Update**: Updated to the latest SDK module versions diff --git a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go index 7d3ecf1b7..25b2ae62a 100644 --- a/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go +++ b/vendor/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/go_module_metadata.go @@ -3,4 +3,4 @@ package endpoints // goModuleVersion is the tagged release for this module -const goModuleVersion = "2.6.9" +const goModuleVersion = "2.6.25" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/CHANGELOG.md b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/CHANGELOG.md new file mode 100644 index 000000000..bf774e97b --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/CHANGELOG.md @@ -0,0 +1,719 @@ +# v1.53.0 (2024-12-17) + +* **Feature**: Added support for enableFaultInjection task definition parameter which can be used to enable Fault Injection feature on ECS tasks. + +# v1.52.2 (2024-12-09) + +* **Documentation**: This is a documentation only update to address various tickets for Amazon ECS. + +# v1.52.1 (2024-12-02) + +* **Documentation**: This release adds support for Container Insights with Enhanced Observability for Amazon ECS. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.52.0 (2024-11-20) + +* **Feature**: This release adds support for the Availability Zone rebalancing feature on Amazon ECS. + +# v1.51.0 (2024-11-19) + +* **Feature**: This release introduces support for configuring the version consistency feature for individual containers defined within a task definition. The configuration allows to specify whether ECS should resolve the container image tag specified in the container definition to an image digest. + +# v1.50.0 (2024-11-18) + +* **Feature**: This release adds support for adding VPC Lattice configurations in ECS CreateService/UpdateService APIs. The configuration allows for associating VPC Lattice target groups with ECS Services. +* **Dependency Update**: Update to smithy-go v1.22.1. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.49.2 (2024-11-07) + +* **Bug Fix**: Adds case-insensitive handling of error message fields in service responses + +# v1.49.1 (2024-11-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.49.0 (2024-10-30) + +* **Feature**: This release supports service deployments and service revisions which provide a comprehensive view of your Amazon ECS service history. + +# v1.48.1 (2024-10-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.48.0 (2024-10-24) + +* **Feature**: This release adds support for EBS volumes attached to Amazon ECS Windows tasks running on EC2 instances. + +# v1.47.4 (2024-10-17) + +* **Documentation**: This is an Amazon ECS documentation only update to address tickets. + +# v1.47.3 (2024-10-10) + +* **Documentation**: This is a documentation only release that updates to documentation to let customers know that Amazon Elastic Inference is no longer available. + +# v1.47.2 (2024-10-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.47.1 (2024-10-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.47.0 (2024-10-04) + +* **Feature**: Add support for HTTP client metrics. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.46.4 (2024-10-03) + +* No change notes available for this release. + +# v1.46.3 (2024-09-27) + +* No change notes available for this release. + +# v1.46.2 (2024-09-25) + +* No change notes available for this release. + +# v1.46.1 (2024-09-23) + +* No change notes available for this release. + +# v1.46.0 (2024-09-20) + +* **Feature**: Add tracing and metrics support to service clients. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.45.5 (2024-09-17) + +* **Bug Fix**: **BREAKFIX**: Only generate AccountIDEndpointMode config for services that use it. This is a compiler break, but removes no actual functionality, as no services currently use the account ID in endpoint resolution. +* **Documentation**: This is a documentation only release to address various tickets. + +# v1.45.4 (2024-09-04) + +* No change notes available for this release. + +# v1.45.3 (2024-09-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.45.2 (2024-08-22) + +* No change notes available for this release. + +# v1.45.1 (2024-08-20) + +* **Documentation**: Documentation only release to address various tickets + +# v1.45.0 (2024-08-15) + +* **Feature**: This release introduces a new ContainerDefinition configuration to support the customer-managed keys for ECS container restart feature. +* **Dependency Update**: Bump minimum Go version to 1.21. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.44.3 (2024-07-10.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.44.2 (2024-07-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.44.1 (2024-06-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.44.0 (2024-06-26) + +* **Feature**: Support list-of-string endpoint parameter. + +# v1.43.1 (2024-06-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.43.0 (2024-06-18) + +* **Feature**: Track usage of various AWS SDK features in user-agent string. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.42.1 (2024-06-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.42.0 (2024-06-10) + +* **Feature**: This release introduces a new cluster configuration to support the customer-managed keys for ECS managed storage encryption. + +# v1.41.13 (2024-06-07) + +* **Bug Fix**: Add clock skew correction on all service clients +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.12 (2024-06-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.11 (2024-05-23) + +* No change notes available for this release. + +# v1.41.10 (2024-05-16) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.9 (2024-05-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.8 (2024-05-08) + +* **Bug Fix**: GoDoc improvement + +# v1.41.7 (2024-04-02) + +* **Documentation**: Documentation only update for Amazon ECS. + +# v1.41.6 (2024-03-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.5 (2024-03-26) + +* **Documentation**: This is a documentation update for Amazon ECS. + +# v1.41.4 (2024-03-25) + +* **Documentation**: Documentation only update for Amazon ECS. + +# v1.41.3 (2024-03-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.2 (2024-03-07) + +* **Bug Fix**: Remove dependency on go-cmp. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.1 (2024-02-23) + +* **Bug Fix**: Move all common, SDK-side middleware stack ops into the service client module to prevent cross-module compatibility issues in the future. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.41.0 (2024-02-22) + +* **Feature**: Add middleware stack snapshot tests. + +# v1.40.2 (2024-02-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.40.1 (2024-02-20) + +* **Bug Fix**: When sourcing values for a service's `EndpointParameters`, the lack of a configured region (i.e. `options.Region == ""`) will now translate to a `nil` value for `EndpointParameters.Region` instead of a pointer to the empty string `""`. This will result in a much more explicit error when calling an operation instead of an obscure hostname lookup failure. + +# v1.40.0 (2024-02-16) + +* **Feature**: Add new ClientOptions field to waiter config which allows you to extend the config for operation calls made by waiters. + +# v1.39.1 (2024-02-15) + +* **Bug Fix**: Correct failure to determine the error type in awsJson services that could occur when errors were modeled with a non-string `code` field. + +# v1.39.0 (2024-02-13) + +* **Feature**: Bump minimum Go version to 1.20 per our language support policy. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.38.3 (2024-02-09) + +* **Documentation**: Documentation only update for Amazon ECS. + +# v1.38.2 (2024-02-06) + +* **Documentation**: This release is a documentation only update to address customer issues. + +# v1.38.1 (2024-01-24) + +* **Documentation**: Documentation updates for Amazon ECS. + +# v1.38.0 (2024-01-22) + +* **Feature**: This release adds support for Transport Layer Security (TLS) and Configurable Timeout to ECS Service Connect. TLS facilitates privacy and data security for inter-service communications, while Configurable Timeout allows customized per-request timeout and idle timeout for Service Connect services. + +# v1.37.0 (2024-01-11) + +* **Feature**: This release adds support for adding an ElasticBlockStorage volume configurations in ECS RunTask/StartTask/CreateService/UpdateService APIs. The configuration allows for attaching EBS volumes to ECS Tasks. + +# v1.36.0 (2024-01-04) + +* **Feature**: This release adds support for managed instance draining which facilitates graceful termination of Amazon ECS instances. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.35.6 (2023-12-20) + +* No change notes available for this release. + +# v1.35.5 (2023-12-08) + +* **Bug Fix**: Reinstate presence of default Retryer in functional options, but still respect max attempts set therein. + +# v1.35.4 (2023-12-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.35.3 (2023-12-06) + +* **Bug Fix**: Restore pre-refactor auth behavior where all operations could technically be performed anonymously. + +# v1.35.2 (2023-12-01) + +* **Bug Fix**: Correct wrapping of errors in authentication workflow. +* **Bug Fix**: Correctly recognize cache-wrapped instances of AnonymousCredentials at client construction. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.35.1 (2023-11-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.35.0 (2023-11-29) + +* **Feature**: Expose Options() accessor on service clients. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.34.2 (2023-11-28.2) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.34.1 (2023-11-28) + +* **Bug Fix**: Respect setting RetryMaxAttempts in functional options at client construction. + +# v1.34.0 (2023-11-27) + +* **Feature**: Adds a new 'type' property to the Setting structure. Adds a new AccountSetting - guardDutyActivate for ECS. + +# v1.33.2 (2023-11-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.33.1 (2023-11-15) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.33.0 (2023-11-13) + +* **Feature**: Adds a Client Token parameter to the ECS RunTask API. The Client Token parameter allows for idempotent RunTask requests. + +# v1.32.1 (2023-11-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.32.0 (2023-11-01) + +* **Feature**: Adds support for configured endpoints via environment variables and the AWS shared configuration file. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.31.0 (2023-10-31) + +* **Feature**: **BREAKING CHANGE**: Bump minimum go version to 1.19 per the revised [go version support policy](https://aws.amazon.com/blogs/developer/aws-sdk-for-go-aligns-with-go-release-policy-on-supported-runtimes/). +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.4 (2023-10-17) + +* **Documentation**: Documentation only updates to address Amazon ECS tickets. + +# v1.30.3 (2023-10-12) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.2 (2023-10-06) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.30.1 (2023-09-05) + +* **Documentation**: Documentation only update for Amazon ECS. + +# v1.30.0 (2023-08-31) + +* **Feature**: This release adds support for an account-level setting that you can use to configure the number of days for AWS Fargate task retirement. + +# v1.29.6 (2023-08-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.29.5 (2023-08-18) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.29.4 (2023-08-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.29.3 (2023-08-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.29.2 (2023-08-04) + +* **Documentation**: This is a documentation update to address various tickets. + +# v1.29.1 (2023-08-01) + +* No change notes available for this release. + +# v1.29.0 (2023-07-31) + +* **Feature**: Adds support for smithy-modeled endpoint resolution. A new rules-based endpoint resolution will be added to the SDK which will supercede and deprecate existing endpoint resolution. Specifically, EndpointResolver will be deprecated while BaseEndpoint and EndpointResolverV2 will take its place. For more information, please see the Endpoints section in our Developer Guide. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.2 (2023-07-28) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.1 (2023-07-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.28.0 (2023-06-30) + +* **Feature**: Added new field "credentialspecs" to the ecs task definition to support gMSA of windows/linux in both domainless and domain-joined mode + +# v1.27.4 (2023-06-19) + +* **Documentation**: Documentation only update to address various tickets. + +# v1.27.3 (2023-06-15) + +* No change notes available for this release. + +# v1.27.2 (2023-06-13) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.27.1 (2023-05-18) + +* **Documentation**: Documentation only release to address various tickets. + +# v1.27.0 (2023-05-04) + +* **Feature**: Documentation update for new error type NamespaceNotFoundException for CreateCluster and UpdateCluster + +# v1.26.3 (2023-05-02) + +* **Documentation**: Documentation only update to address Amazon ECS tickets. + +# v1.26.2 (2023-04-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.26.1 (2023-04-21) + +* **Documentation**: Documentation update to address various Amazon ECS tickets. + +# v1.26.0 (2023-04-19) + +* **Feature**: This release supports the Account Setting "TagResourceAuthorization" that allows for enhanced Tagging security controls. + +# v1.25.1 (2023-04-14) + +* **Documentation**: This release supports ephemeral storage for AWS Fargate Windows containers. + +# v1.25.0 (2023-04-10) + +* **Feature**: This release adds support for enabling FIPS compliance on Amazon ECS Fargate tasks + +# v1.24.4 (2023-04-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.3 (2023-04-05) + +* **Documentation**: This is a document only updated to add information about Amazon Elastic Inference (EI). + +# v1.24.2 (2023-03-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.1 (2023-03-10) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.24.0 (2023-02-23) + +* **Feature**: This release supports deleting Amazon ECS task definitions that are in the INACTIVE state. + +# v1.23.5 (2023-02-22) + +* **Bug Fix**: Prevent nil pointer dereference when retrieving error codes. + +# v1.23.4 (2023-02-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.3 (2023-02-15) + +* **Announcement**: When receiving an error response in restJson-based services, an incorrect error type may have been returned based on the content of the response. This has been fixed via PR #2012 tracked in issue #1910. +* **Bug Fix**: Correct error type parsing for restJson services. + +# v1.23.2 (2023-02-03) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.23.1 (2023-01-23) + +* No change notes available for this release. + +# v1.23.0 (2023-01-05) + +* **Feature**: Add `ErrorCodeOverride` field to all error structs (aws/smithy-go#401). + +# v1.22.0 (2022-12-19) + +* **Feature**: This release adds support for alarm-based rollbacks in ECS, a new feature that allows customers to add automated safeguards for Amazon ECS service rolling updates. + +# v1.21.0 (2022-12-15) + +* **Feature**: This release adds support for container port ranges in ECS, a new capability that allows customers to provide container port ranges to simplify use cases where multiple ports are in use in a container. This release updates TaskDefinition mutation APIs and the Task description APIs. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.1 (2022-12-02) + +* **Documentation**: Documentation updates for Amazon ECS +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.20.0 (2022-11-28) + +* **Feature**: This release adds support for ECS Service Connect, a new capability that simplifies writing and operating resilient distributed applications. This release updates the TaskDefinition, Cluster, Service mutation APIs with Service connect constructs and also adds a new ListServicesByNamespace API. + +# v1.19.2 (2022-11-22) + +* No change notes available for this release. + +# v1.19.1 (2022-11-16) + +* No change notes available for this release. + +# v1.19.0 (2022-11-10) + +* **Feature**: This release adds support for task scale-in protection with updateTaskProtection and getTaskProtection APIs. UpdateTaskProtection API can be used to protect a service managed task from being terminated by scale-in events and getTaskProtection API to get the scale-in protection status of a task. + +# v1.18.26 (2022-10-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.25 (2022-10-21) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.24 (2022-10-13) + +* **Documentation**: Documentation update to address tickets. + +# v1.18.23 (2022-10-04) + +* **Documentation**: Documentation updates to address various Amazon ECS tickets. + +# v1.18.22 (2022-09-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.21 (2022-09-16) + +* **Documentation**: This release supports new task definition sizes. + +# v1.18.20 (2022-09-14) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.19 (2022-09-02) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.18 (2022-08-31) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.17 (2022-08-30) + +* No change notes available for this release. + +# v1.18.16 (2022-08-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.15 (2022-08-11) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.14 (2022-08-09) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.13 (2022-08-08) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.12 (2022-08-01) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.11 (2022-07-05) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.10 (2022-06-29) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.9 (2022-06-21) + +* **Documentation**: Amazon ECS UpdateService now supports the following parameters: PlacementStrategies, PlacementConstraints and CapacityProviderStrategy. + +# v1.18.8 (2022-06-07) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.7 (2022-05-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.6 (2022-04-25) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.5 (2022-03-30) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.4 (2022-03-24) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.3 (2022-03-23) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.18.2 (2022-03-22) + +* **Documentation**: Documentation only update to address tickets + +# v1.18.1 (2022-03-15) + +* **Documentation**: Documentation only update to address tickets + +# v1.18.0 (2022-03-08) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version +* **Feature**: Updated service client model to latest release. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.17.0 (2022-02-24) + +* **Feature**: API client updated +* **Feature**: Adds RetryMaxAttempts and RetryMod to API client Options. This allows the API clients' default Retryer to be configured from the shared configuration files or environment variables. Adding a new Retry mode of `Adaptive`. `Adaptive` retry mode is an experimental mode, adding client rate limiting when throttles reponses are received from an API. See [retry.AdaptiveMode](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/retry#AdaptiveMode) for more details, and configuration options. +* **Feature**: Updated `github.com/aws/smithy-go` to latest version +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.16.0 (2022-01-14) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.15.0 (2022-01-07) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version +* **Documentation**: API client updated +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.14.0 (2021-12-21) + +* **Feature**: API Paginators now support specifying the initial starting token, and support stopping on empty string tokens. +* **Feature**: Updated to latest service endpoints + +# v1.13.1 (2021-12-02) + +* **Bug Fix**: Fixes a bug that prevented aws.EndpointResolverWithOptions from being used by the service client. ([#1514](https://github.com/aws/aws-sdk-go-v2/pull/1514)) +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.13.0 (2021-11-30) + +* **Feature**: API client updated + +# v1.12.1 (2021-11-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.12.0 (2021-11-12) + +* **Feature**: Service clients now support custom endpoints that have an initial URI path defined. +* **Feature**: Updated service to latest API model. +* **Feature**: Waiters now have a `WaitForOutput` method, which can be used to retrieve the output of the successful wait operation. Thank you to [Andrew Haines](https://github.com/haines) for contributing this feature. + +# v1.11.0 (2021-11-06) + +* **Feature**: The SDK now supports configuration of FIPS and DualStack endpoints using environment variables, shared configuration, or programmatically. +* **Feature**: Updated `github.com/aws/smithy-go` to latest version +* **Feature**: Updated service to latest API model. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.10.0 (2021-10-21) + +* **Feature**: API client updated +* **Feature**: Updated to latest version +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.2 (2021-10-11) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.1 (2021-09-17) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.9.0 (2021-08-27) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.8.1 (2021-08-19) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.8.0 (2021-08-12) + +* **Feature**: API client updated + +# v1.7.0 (2021-08-04) + +* **Feature**: Updated to latest API model. +* **Dependency Update**: Updated `github.com/aws/smithy-go` to latest version. +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.6.1 (2021-07-15) + +* **Dependency Update**: Updated `github.com/aws/smithy-go` to latest version +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.6.0 (2021-06-25) + +* **Feature**: Updated `github.com/aws/smithy-go` to latest version +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.5.0 (2021-06-04) + +* **Feature**: Updated service client to latest API model. + +# v1.4.1 (2021-05-20) + +* **Dependency Update**: Updated to the latest SDK module versions + +# v1.4.0 (2021-05-14) + +* **Feature**: Constant has been added to modules to enable runtime version inspection for reporting. +* **Feature**: Updated to latest service API model. +* **Dependency Update**: Updated to the latest SDK module versions + diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/LICENSE.txt b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/LICENSE.txt new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_client.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_client.go new file mode 100644 index 000000000..221ba5506 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_client.go @@ -0,0 +1,929 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + cryptorand "crypto/rand" + "errors" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/aws/defaults" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/aws/retry" + "github.com/aws/aws-sdk-go-v2/aws/signer/v4" + awshttp "github.com/aws/aws-sdk-go-v2/aws/transport/http" + internalauth "github.com/aws/aws-sdk-go-v2/internal/auth" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" + internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + internalmiddleware "github.com/aws/aws-sdk-go-v2/internal/middleware" + smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" + smithydocument "github.com/aws/smithy-go/document" + "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + smithyrand "github.com/aws/smithy-go/rand" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net" + "net/http" + "sync/atomic" + "time" +) + +const ServiceID = "ECS" +const ServiceAPIVersion = "2014-11-13" + +type operationMetrics struct { + Duration metrics.Float64Histogram + SerializeDuration metrics.Float64Histogram + ResolveIdentityDuration metrics.Float64Histogram + ResolveEndpointDuration metrics.Float64Histogram + SignRequestDuration metrics.Float64Histogram + DeserializeDuration metrics.Float64Histogram +} + +func (m *operationMetrics) histogramFor(name string) metrics.Float64Histogram { + switch name { + case "client.call.duration": + return m.Duration + case "client.call.serialization_duration": + return m.SerializeDuration + case "client.call.resolve_identity_duration": + return m.ResolveIdentityDuration + case "client.call.resolve_endpoint_duration": + return m.ResolveEndpointDuration + case "client.call.signing_duration": + return m.SignRequestDuration + case "client.call.deserialization_duration": + return m.DeserializeDuration + default: + panic("unrecognized operation metric") + } +} + +func timeOperationMetric[T any]( + ctx context.Context, metric string, fn func() (T, error), + opts ...metrics.RecordMetricOption, +) (T, error) { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) + + start := time.Now() + v, err := fn() + end := time.Now() + + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) + return v, err +} + +func startMetricTimer(ctx context.Context, metric string, opts ...metrics.RecordMetricOption) func() { + instr := getOperationMetrics(ctx).histogramFor(metric) + opts = append([]metrics.RecordMetricOption{withOperationMetadata(ctx)}, opts...) + + var ended bool + start := time.Now() + return func() { + if ended { + return + } + ended = true + + end := time.Now() + + elapsed := end.Sub(start) + instr.Record(ctx, float64(elapsed)/1e9, opts...) + } +} + +func withOperationMetadata(ctx context.Context) metrics.RecordMetricOption { + return func(o *metrics.RecordMetricOptions) { + o.Properties.Set("rpc.service", middleware.GetServiceID(ctx)) + o.Properties.Set("rpc.method", middleware.GetOperationName(ctx)) + } +} + +type operationMetricsKey struct{} + +func withOperationMetrics(parent context.Context, mp metrics.MeterProvider) (context.Context, error) { + meter := mp.Meter("github.com/aws/aws-sdk-go-v2/service/ecs") + om := &operationMetrics{} + + var err error + + om.Duration, err = operationMetricTimer(meter, "client.call.duration", + "Overall call duration (including retries and time to send or receive request and response body)") + if err != nil { + return nil, err + } + om.SerializeDuration, err = operationMetricTimer(meter, "client.call.serialization_duration", + "The time it takes to serialize a message body") + if err != nil { + return nil, err + } + om.ResolveIdentityDuration, err = operationMetricTimer(meter, "client.call.auth.resolve_identity_duration", + "The time taken to acquire an identity (AWS credentials, bearer token, etc) from an Identity Provider") + if err != nil { + return nil, err + } + om.ResolveEndpointDuration, err = operationMetricTimer(meter, "client.call.resolve_endpoint_duration", + "The time it takes to resolve an endpoint (endpoint resolver, not DNS) for the request") + if err != nil { + return nil, err + } + om.SignRequestDuration, err = operationMetricTimer(meter, "client.call.auth.signing_duration", + "The time it takes to sign a request") + if err != nil { + return nil, err + } + om.DeserializeDuration, err = operationMetricTimer(meter, "client.call.deserialization_duration", + "The time it takes to deserialize a message body") + if err != nil { + return nil, err + } + + return context.WithValue(parent, operationMetricsKey{}, om), nil +} + +func operationMetricTimer(m metrics.Meter, name, desc string) (metrics.Float64Histogram, error) { + return m.Float64Histogram(name, func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = desc + }) +} + +func getOperationMetrics(ctx context.Context) *operationMetrics { + return ctx.Value(operationMetricsKey{}).(*operationMetrics) +} + +func operationTracer(p tracing.TracerProvider) tracing.Tracer { + return p.Tracer("github.com/aws/aws-sdk-go-v2/service/ecs") +} + +// Client provides the API client to make operations call for Amazon EC2 Container +// Service. +type Client struct { + options Options + + // Difference between the time reported by the server and the client + timeOffset *atomic.Int64 +} + +// New returns an initialized Client based on the functional options. Provide +// additional functional options to further configure the behavior of the client, +// such as changing the client's endpoint or adding custom middleware behavior. +func New(options Options, optFns ...func(*Options)) *Client { + options = options.Copy() + + resolveDefaultLogger(&options) + + setResolvedDefaultsMode(&options) + + resolveRetryer(&options) + + resolveHTTPClient(&options) + + resolveHTTPSignerV4(&options) + + resolveIdempotencyTokenProvider(&options) + + resolveEndpointResolverV2(&options) + + resolveTracerProvider(&options) + + resolveMeterProvider(&options) + + resolveAuthSchemeResolver(&options) + + for _, fn := range optFns { + fn(&options) + } + + finalizeRetryMaxAttempts(&options) + + ignoreAnonymousAuth(&options) + + wrapWithAnonymousAuth(&options) + + resolveAuthSchemes(&options) + + client := &Client{ + options: options, + } + + initializeTimeOffsetResolver(client) + + return client +} + +// Options returns a copy of the client configuration. +// +// Callers SHOULD NOT perform mutations on any inner structures within client +// config. Config overrides should instead be made on a per-operation basis through +// functional options. +func (c *Client) Options() Options { + return c.options.Copy() +} + +func (c *Client) invokeOperation( + ctx context.Context, opID string, params interface{}, optFns []func(*Options), stackFns ...func(*middleware.Stack, Options) error, +) ( + result interface{}, metadata middleware.Metadata, err error, +) { + ctx = middleware.ClearStackValues(ctx) + ctx = middleware.WithServiceID(ctx, ServiceID) + ctx = middleware.WithOperationName(ctx, opID) + + stack := middleware.NewStack(opID, smithyhttp.NewStackRequest) + options := c.options.Copy() + + for _, fn := range optFns { + fn(&options) + } + + finalizeOperationRetryMaxAttempts(&options, *c) + + finalizeClientEndpointResolverOptions(&options) + + for _, fn := range stackFns { + if err := fn(stack, options); err != nil { + return nil, metadata, err + } + } + + for _, fn := range options.APIOptions { + if err := fn(stack); err != nil { + return nil, metadata, err + } + } + + ctx, err = withOperationMetrics(ctx, options.MeterProvider) + if err != nil { + return nil, metadata, err + } + + tracer := operationTracer(options.TracerProvider) + spanName := fmt.Sprintf("%s.%s", ServiceID, opID) + + ctx = tracing.WithOperationTracer(ctx, tracer) + + ctx, span := tracer.StartSpan(ctx, spanName, func(o *tracing.SpanOptions) { + o.Kind = tracing.SpanKindClient + o.Properties.Set("rpc.system", "aws-api") + o.Properties.Set("rpc.method", opID) + o.Properties.Set("rpc.service", ServiceID) + }) + endTimer := startMetricTimer(ctx, "client.call.duration") + defer endTimer() + defer span.End() + + handler := smithyhttp.NewClientHandlerWithOptions(options.HTTPClient, func(o *smithyhttp.ClientHandler) { + o.Meter = options.MeterProvider.Meter("github.com/aws/aws-sdk-go-v2/service/ecs") + }) + decorated := middleware.DecorateHandler(handler, stack) + result, metadata, err = decorated.Handle(ctx, params) + if err != nil { + span.SetProperty("exception.type", fmt.Sprintf("%T", err)) + span.SetProperty("exception.message", err.Error()) + + var aerr smithy.APIError + if errors.As(err, &aerr) { + span.SetProperty("api.error_code", aerr.ErrorCode()) + span.SetProperty("api.error_message", aerr.ErrorMessage()) + span.SetProperty("api.error_fault", aerr.ErrorFault().String()) + } + + err = &smithy.OperationError{ + ServiceID: ServiceID, + OperationName: opID, + Err: err, + } + } + + span.SetProperty("error", err != nil) + if err == nil { + span.SetStatus(tracing.SpanStatusOK) + } else { + span.SetStatus(tracing.SpanStatusError) + } + + return result, metadata, err +} + +type operationInputKey struct{} + +func setOperationInput(ctx context.Context, input interface{}) context.Context { + return middleware.WithStackValue(ctx, operationInputKey{}, input) +} + +func getOperationInput(ctx context.Context) interface{} { + return middleware.GetStackValue(ctx, operationInputKey{}) +} + +type setOperationInputMiddleware struct { +} + +func (*setOperationInputMiddleware) ID() string { + return "setOperationInput" +} + +func (m *setOperationInputMiddleware) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + ctx = setOperationInput(ctx, in.Parameters) + return next.HandleSerialize(ctx, in) +} + +func addProtocolFinalizerMiddlewares(stack *middleware.Stack, options Options, operation string) error { + if err := stack.Finalize.Add(&resolveAuthSchemeMiddleware{operation: operation, options: options}, middleware.Before); err != nil { + return fmt.Errorf("add ResolveAuthScheme: %w", err) + } + if err := stack.Finalize.Insert(&getIdentityMiddleware{options: options}, "ResolveAuthScheme", middleware.After); err != nil { + return fmt.Errorf("add GetIdentity: %v", err) + } + if err := stack.Finalize.Insert(&resolveEndpointV2Middleware{options: options}, "GetIdentity", middleware.After); err != nil { + return fmt.Errorf("add ResolveEndpointV2: %v", err) + } + if err := stack.Finalize.Insert(&signRequestMiddleware{options: options}, "ResolveEndpointV2", middleware.After); err != nil { + return fmt.Errorf("add Signing: %w", err) + } + return nil +} +func resolveAuthSchemeResolver(options *Options) { + if options.AuthSchemeResolver == nil { + options.AuthSchemeResolver = &defaultAuthSchemeResolver{} + } +} + +func resolveAuthSchemes(options *Options) { + if options.AuthSchemes == nil { + options.AuthSchemes = []smithyhttp.AuthScheme{ + internalauth.NewHTTPAuthScheme("aws.auth#sigv4", &internalauthsmithy.V4SignerAdapter{ + Signer: options.HTTPSignerV4, + Logger: options.Logger, + LogSigning: options.ClientLogMode.IsSigning(), + }), + } + } +} + +type noSmithyDocumentSerde = smithydocument.NoSerde + +type legacyEndpointContextSetter struct { + LegacyResolver EndpointResolver +} + +func (*legacyEndpointContextSetter) ID() string { + return "legacyEndpointContextSetter" +} + +func (m *legacyEndpointContextSetter) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.LegacyResolver != nil { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, true) + } + + return next.HandleInitialize(ctx, in) + +} +func addlegacyEndpointContextSetter(stack *middleware.Stack, o Options) error { + return stack.Initialize.Add(&legacyEndpointContextSetter{ + LegacyResolver: o.EndpointResolver, + }, middleware.Before) +} + +func resolveDefaultLogger(o *Options) { + if o.Logger != nil { + return + } + o.Logger = logging.Nop{} +} + +func addSetLoggerMiddleware(stack *middleware.Stack, o Options) error { + return middleware.AddSetLoggerMiddleware(stack, o.Logger) +} + +func setResolvedDefaultsMode(o *Options) { + if len(o.resolvedDefaultsMode) > 0 { + return + } + + var mode aws.DefaultsMode + mode.SetFromString(string(o.DefaultsMode)) + + if mode == aws.DefaultsModeAuto { + mode = defaults.ResolveDefaultsModeAuto(o.Region, o.RuntimeEnvironment) + } + + o.resolvedDefaultsMode = mode +} + +// NewFromConfig returns a new client from the provided config. +func NewFromConfig(cfg aws.Config, optFns ...func(*Options)) *Client { + opts := Options{ + Region: cfg.Region, + DefaultsMode: cfg.DefaultsMode, + RuntimeEnvironment: cfg.RuntimeEnvironment, + HTTPClient: cfg.HTTPClient, + Credentials: cfg.Credentials, + APIOptions: cfg.APIOptions, + Logger: cfg.Logger, + ClientLogMode: cfg.ClientLogMode, + AppID: cfg.AppID, + } + resolveAWSRetryerProvider(cfg, &opts) + resolveAWSRetryMaxAttempts(cfg, &opts) + resolveAWSRetryMode(cfg, &opts) + resolveAWSEndpointResolver(cfg, &opts) + resolveUseDualStackEndpoint(cfg, &opts) + resolveUseFIPSEndpoint(cfg, &opts) + resolveBaseEndpoint(cfg, &opts) + return New(opts, optFns...) +} + +func resolveHTTPClient(o *Options) { + var buildable *awshttp.BuildableClient + + if o.HTTPClient != nil { + var ok bool + buildable, ok = o.HTTPClient.(*awshttp.BuildableClient) + if !ok { + return + } + } else { + buildable = awshttp.NewBuildableClient() + } + + modeConfig, err := defaults.GetModeConfiguration(o.resolvedDefaultsMode) + if err == nil { + buildable = buildable.WithDialerOptions(func(dialer *net.Dialer) { + if dialerTimeout, ok := modeConfig.GetConnectTimeout(); ok { + dialer.Timeout = dialerTimeout + } + }) + + buildable = buildable.WithTransportOptions(func(transport *http.Transport) { + if tlsHandshakeTimeout, ok := modeConfig.GetTLSNegotiationTimeout(); ok { + transport.TLSHandshakeTimeout = tlsHandshakeTimeout + } + }) + } + + o.HTTPClient = buildable +} + +func resolveRetryer(o *Options) { + if o.Retryer != nil { + return + } + + if len(o.RetryMode) == 0 { + modeConfig, err := defaults.GetModeConfiguration(o.resolvedDefaultsMode) + if err == nil { + o.RetryMode = modeConfig.RetryMode + } + } + if len(o.RetryMode) == 0 { + o.RetryMode = aws.RetryModeStandard + } + + var standardOptions []func(*retry.StandardOptions) + if v := o.RetryMaxAttempts; v != 0 { + standardOptions = append(standardOptions, func(so *retry.StandardOptions) { + so.MaxAttempts = v + }) + } + + switch o.RetryMode { + case aws.RetryModeAdaptive: + var adaptiveOptions []func(*retry.AdaptiveModeOptions) + if len(standardOptions) != 0 { + adaptiveOptions = append(adaptiveOptions, func(ao *retry.AdaptiveModeOptions) { + ao.StandardOptions = append(ao.StandardOptions, standardOptions...) + }) + } + o.Retryer = retry.NewAdaptiveMode(adaptiveOptions...) + + default: + o.Retryer = retry.NewStandard(standardOptions...) + } +} + +func resolveAWSRetryerProvider(cfg aws.Config, o *Options) { + if cfg.Retryer == nil { + return + } + o.Retryer = cfg.Retryer() +} + +func resolveAWSRetryMode(cfg aws.Config, o *Options) { + if len(cfg.RetryMode) == 0 { + return + } + o.RetryMode = cfg.RetryMode +} +func resolveAWSRetryMaxAttempts(cfg aws.Config, o *Options) { + if cfg.RetryMaxAttempts == 0 { + return + } + o.RetryMaxAttempts = cfg.RetryMaxAttempts +} + +func finalizeRetryMaxAttempts(o *Options) { + if o.RetryMaxAttempts == 0 { + return + } + + o.Retryer = retry.AddWithMaxAttempts(o.Retryer, o.RetryMaxAttempts) +} + +func finalizeOperationRetryMaxAttempts(o *Options, client Client) { + if v := o.RetryMaxAttempts; v == 0 || v == client.options.RetryMaxAttempts { + return + } + + o.Retryer = retry.AddWithMaxAttempts(o.Retryer, o.RetryMaxAttempts) +} + +func resolveAWSEndpointResolver(cfg aws.Config, o *Options) { + if cfg.EndpointResolver == nil && cfg.EndpointResolverWithOptions == nil { + return + } + o.EndpointResolver = withEndpointResolver(cfg.EndpointResolver, cfg.EndpointResolverWithOptions) +} + +func addClientUserAgent(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddSDKAgentKeyValue(awsmiddleware.APIMetadata, "ecs", goModuleVersion) + if len(options.AppID) > 0 { + ua.AddSDKAgentKey(awsmiddleware.ApplicationIdentifier, options.AppID) + } + + return nil +} + +func getOrAddRequestUserAgent(stack *middleware.Stack) (*awsmiddleware.RequestUserAgent, error) { + id := (*awsmiddleware.RequestUserAgent)(nil).ID() + mw, ok := stack.Build.Get(id) + if !ok { + mw = awsmiddleware.NewRequestUserAgent() + if err := stack.Build.Add(mw, middleware.After); err != nil { + return nil, err + } + } + + ua, ok := mw.(*awsmiddleware.RequestUserAgent) + if !ok { + return nil, fmt.Errorf("%T for %s middleware did not match expected type", mw, id) + } + + return ua, nil +} + +type HTTPSignerV4 interface { + SignHTTP(ctx context.Context, credentials aws.Credentials, r *http.Request, payloadHash string, service string, region string, signingTime time.Time, optFns ...func(*v4.SignerOptions)) error +} + +func resolveHTTPSignerV4(o *Options) { + if o.HTTPSignerV4 != nil { + return + } + o.HTTPSignerV4 = newDefaultV4Signer(*o) +} + +func newDefaultV4Signer(o Options) *v4.Signer { + return v4.NewSigner(func(so *v4.SignerOptions) { + so.Logger = o.Logger + so.LogSigning = o.ClientLogMode.IsSigning() + }) +} + +func addClientRequestID(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.ClientRequestID{}, middleware.After) +} + +func addComputeContentLength(stack *middleware.Stack) error { + return stack.Build.Add(&smithyhttp.ComputeContentLength{}, middleware.After) +} + +func addRawResponseToMetadata(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.AddRawResponse{}, middleware.Before) +} + +func addRecordResponseTiming(stack *middleware.Stack) error { + return stack.Deserialize.Add(&awsmiddleware.RecordResponseTiming{}, middleware.After) +} + +func addSpanRetryLoop(stack *middleware.Stack, options Options) error { + return stack.Finalize.Insert(&spanRetryLoop{options: options}, "Retry", middleware.Before) +} + +type spanRetryLoop struct { + options Options +} + +func (*spanRetryLoop) ID() string { + return "spanRetryLoop" +} + +func (m *spanRetryLoop) HandleFinalize( + ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler, +) ( + middleware.FinalizeOutput, middleware.Metadata, error, +) { + tracer := operationTracer(m.options.TracerProvider) + ctx, span := tracer.StartSpan(ctx, "RetryLoop") + defer span.End() + + return next.HandleFinalize(ctx, in) +} +func addStreamingEventsPayload(stack *middleware.Stack) error { + return stack.Finalize.Add(&v4.StreamingEventsPayload{}, middleware.Before) +} + +func addUnsignedPayload(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.UnsignedPayload{}, "ResolveEndpointV2", middleware.After) +} + +func addComputePayloadSHA256(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ComputePayloadSHA256{}, "ResolveEndpointV2", middleware.After) +} + +func addContentSHA256Header(stack *middleware.Stack) error { + return stack.Finalize.Insert(&v4.ContentSHA256Header{}, (*v4.ComputePayloadSHA256)(nil).ID(), middleware.After) +} + +func addIsWaiterUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureWaiter) + return nil + }) +} + +func addIsPaginatorUserAgent(o *Options) { + o.APIOptions = append(o.APIOptions, func(stack *middleware.Stack) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeaturePaginator) + return nil + }) +} + +func resolveIdempotencyTokenProvider(o *Options) { + if o.IdempotencyTokenProvider != nil { + return + } + o.IdempotencyTokenProvider = smithyrand.NewUUIDIdempotencyToken(cryptorand.Reader) +} + +func addRetry(stack *middleware.Stack, o Options) error { + attempt := retry.NewAttemptMiddleware(o.Retryer, smithyhttp.RequestCloner, func(m *retry.Attempt) { + m.LogAttempts = o.ClientLogMode.IsRetries() + m.OperationMeter = o.MeterProvider.Meter("github.com/aws/aws-sdk-go-v2/service/ecs") + }) + if err := stack.Finalize.Insert(attempt, "Signing", middleware.Before); err != nil { + return err + } + if err := stack.Finalize.Insert(&retry.MetricsHeader{}, attempt.ID(), middleware.After); err != nil { + return err + } + return nil +} + +// resolves dual-stack endpoint configuration +func resolveUseDualStackEndpoint(cfg aws.Config, o *Options) error { + if len(cfg.ConfigSources) == 0 { + return nil + } + value, found, err := internalConfig.ResolveUseDualStackEndpoint(context.Background(), cfg.ConfigSources) + if err != nil { + return err + } + if found { + o.EndpointOptions.UseDualStackEndpoint = value + } + return nil +} + +// resolves FIPS endpoint configuration +func resolveUseFIPSEndpoint(cfg aws.Config, o *Options) error { + if len(cfg.ConfigSources) == 0 { + return nil + } + value, found, err := internalConfig.ResolveUseFIPSEndpoint(context.Background(), cfg.ConfigSources) + if err != nil { + return err + } + if found { + o.EndpointOptions.UseFIPSEndpoint = value + } + return nil +} + +func resolveAccountID(identity smithyauth.Identity, mode aws.AccountIDEndpointMode) *string { + if mode == aws.AccountIDEndpointModeDisabled { + return nil + } + + if ca, ok := identity.(*internalauthsmithy.CredentialsAdapter); ok && ca.Credentials.AccountID != "" { + return aws.String(ca.Credentials.AccountID) + } + + return nil +} + +func addTimeOffsetBuild(stack *middleware.Stack, c *Client) error { + mw := internalmiddleware.AddTimeOffsetMiddleware{Offset: c.timeOffset} + if err := stack.Build.Add(&mw, middleware.After); err != nil { + return err + } + return stack.Deserialize.Insert(&mw, "RecordResponseTiming", middleware.Before) +} +func initializeTimeOffsetResolver(c *Client) { + c.timeOffset = new(atomic.Int64) +} + +func addUserAgentRetryMode(stack *middleware.Stack, options Options) error { + ua, err := getOrAddRequestUserAgent(stack) + if err != nil { + return err + } + + switch options.Retryer.(type) { + case *retry.Standard: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeStandard) + case *retry.AdaptiveMode: + ua.AddUserAgentFeature(awsmiddleware.UserAgentFeatureRetryModeAdaptive) + } + return nil +} + +func resolveTracerProvider(options *Options) { + if options.TracerProvider == nil { + options.TracerProvider = &tracing.NopTracerProvider{} + } +} + +func resolveMeterProvider(options *Options) { + if options.MeterProvider == nil { + options.MeterProvider = metrics.NopMeterProvider{} + } +} + +// IdempotencyTokenProvider interface for providing idempotency token +type IdempotencyTokenProvider interface { + GetIdempotencyToken() (string, error) +} + +func addRecursionDetection(stack *middleware.Stack) error { + return stack.Build.Add(&awsmiddleware.RecursionDetection{}, middleware.After) +} + +func addRequestIDRetrieverMiddleware(stack *middleware.Stack) error { + return stack.Deserialize.Insert(&awsmiddleware.RequestIDRetriever{}, "OperationDeserializer", middleware.Before) + +} + +func addResponseErrorMiddleware(stack *middleware.Stack) error { + return stack.Deserialize.Insert(&awshttp.ResponseErrorWrapper{}, "RequestIDRetriever", middleware.Before) + +} + +func addRequestResponseLogging(stack *middleware.Stack, o Options) error { + return stack.Deserialize.Add(&smithyhttp.RequestResponseLogger{ + LogRequest: o.ClientLogMode.IsRequest(), + LogRequestWithBody: o.ClientLogMode.IsRequestWithBody(), + LogResponse: o.ClientLogMode.IsResponse(), + LogResponseWithBody: o.ClientLogMode.IsResponseWithBody(), + }, middleware.After) +} + +type disableHTTPSMiddleware struct { + DisableHTTPS bool +} + +func (*disableHTTPSMiddleware) ID() string { + return "disableHTTPS" +} + +func (m *disableHTTPSMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.DisableHTTPS && !smithyhttp.GetHostnameImmutable(ctx) { + req.URL.Scheme = "http" + } + + return next.HandleFinalize(ctx, in) +} + +func addDisableHTTPSMiddleware(stack *middleware.Stack, o Options) error { + return stack.Finalize.Insert(&disableHTTPSMiddleware{ + DisableHTTPS: o.EndpointOptions.DisableHTTPS, + }, "ResolveEndpointV2", middleware.After) +} + +type spanInitializeStart struct { +} + +func (*spanInitializeStart) ID() string { + return "spanInitializeStart" +} + +func (m *spanInitializeStart) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "Initialize") + + return next.HandleInitialize(ctx, in) +} + +type spanInitializeEnd struct { +} + +func (*spanInitializeEnd) ID() string { + return "spanInitializeEnd" +} + +func (m *spanInitializeEnd) HandleInitialize( + ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler, +) ( + middleware.InitializeOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleInitialize(ctx, in) +} + +type spanBuildRequestStart struct { +} + +func (*spanBuildRequestStart) ID() string { + return "spanBuildRequestStart" +} + +func (m *spanBuildRequestStart) HandleSerialize( + ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler, +) ( + middleware.SerializeOutput, middleware.Metadata, error, +) { + ctx, _ = tracing.StartSpan(ctx, "BuildRequest") + + return next.HandleSerialize(ctx, in) +} + +type spanBuildRequestEnd struct { +} + +func (*spanBuildRequestEnd) ID() string { + return "spanBuildRequestEnd" +} + +func (m *spanBuildRequestEnd) HandleBuild( + ctx context.Context, in middleware.BuildInput, next middleware.BuildHandler, +) ( + middleware.BuildOutput, middleware.Metadata, error, +) { + ctx, span := tracing.PopSpan(ctx) + span.End() + + return next.HandleBuild(ctx, in) +} + +func addSpanInitializeStart(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeStart{}, middleware.Before) +} + +func addSpanInitializeEnd(stack *middleware.Stack) error { + return stack.Initialize.Add(&spanInitializeEnd{}, middleware.After) +} + +func addSpanBuildRequestStart(stack *middleware.Stack) error { + return stack.Serialize.Add(&spanBuildRequestStart{}, middleware.Before) +} + +func addSpanBuildRequestEnd(stack *middleware.Stack) error { + return stack.Build.Add(&spanBuildRequestEnd{}, middleware.After) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCapacityProvider.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCapacityProvider.go new file mode 100644 index 000000000..60a9f5ef0 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCapacityProvider.go @@ -0,0 +1,200 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a new capacity provider. Capacity providers are associated with an +// Amazon ECS cluster and are used in capacity provider strategies to facilitate +// cluster auto scaling. +// +// Only capacity providers that use an Auto Scaling group can be created. Amazon +// ECS tasks on Fargate use the FARGATE and FARGATE_SPOT capacity providers. These +// providers are available to all accounts in the Amazon Web Services Regions that +// Fargate supports. +func (c *Client) CreateCapacityProvider(ctx context.Context, params *CreateCapacityProviderInput, optFns ...func(*Options)) (*CreateCapacityProviderOutput, error) { + if params == nil { + params = &CreateCapacityProviderInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateCapacityProvider", params, optFns, c.addOperationCreateCapacityProviderMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateCapacityProviderOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateCapacityProviderInput struct { + + // The details of the Auto Scaling group for the capacity provider. + // + // This member is required. + AutoScalingGroupProvider *types.AutoScalingGroupProvider + + // The name of the capacity provider. Up to 255 characters are allowed. They + // include letters (both upper and lowercase letters), numbers, underscores (_), + // and hyphens (-). The name can't be prefixed with " aws ", " ecs ", or " fargate + // ". + // + // This member is required. + Name *string + + // The metadata that you apply to the capacity provider to categorize and organize + // them more conveniently. Each tag consists of a key and an optional value. You + // define both of them. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type CreateCapacityProviderOutput struct { + + // The full description of the new capacity provider. + CapacityProvider *types.CapacityProvider + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateCapacityProviderMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateCapacityProvider{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateCapacityProvider{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "CreateCapacityProvider"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpCreateCapacityProviderValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateCapacityProvider(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateCapacityProvider(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "CreateCapacityProvider", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCluster.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCluster.go new file mode 100644 index 000000000..f08f5df70 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateCluster.go @@ -0,0 +1,260 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Creates a new Amazon ECS cluster. By default, your account receives a default +// cluster when you launch your first container instance. However, you can create +// your own cluster with a unique name. +// +// When you call the [CreateCluster] API operation, Amazon ECS attempts to create the Amazon ECS +// service-linked role for your account. This is so that it can manage required +// resources in other Amazon Web Services services on your behalf. However, if the +// user that makes the call doesn't have permissions to create the service-linked +// role, it isn't created. For more information, see [Using service-linked roles for Amazon ECS]in the Amazon Elastic +// Container Service Developer Guide. +// +// [Using service-linked roles for Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html +// [CreateCluster]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCluster.html +func (c *Client) CreateCluster(ctx context.Context, params *CreateClusterInput, optFns ...func(*Options)) (*CreateClusterOutput, error) { + if params == nil { + params = &CreateClusterInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateCluster", params, optFns, c.addOperationCreateClusterMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateClusterOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateClusterInput struct { + + // The short name of one or more capacity providers to associate with the cluster. + // A capacity provider must be associated with a cluster before it can be included + // as part of the default capacity provider strategy of the cluster or used in a + // capacity provider strategy when calling the [CreateService]or [RunTask] actions. + // + // If specifying a capacity provider that uses an Auto Scaling group, the capacity + // provider must be created but not associated with another cluster. New Auto + // Scaling group capacity providers can be created with the [CreateCapacityProvider]API operation. + // + // To use a Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT + // capacity providers. The Fargate capacity providers are available to all accounts + // and only need to be associated with a cluster to be used. + // + // The [PutCapacityProvider] API operation is used to update the list of available capacity providers + // for a cluster after the cluster is created. + // + // [CreateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html + // [PutCapacityProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutCapacityProvider.html + // [CreateCapacityProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html + // [RunTask]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html + CapacityProviders []string + + // The name of your cluster. If you don't specify a name for your cluster, you + // create a cluster that's named default . Up to 255 letters (uppercase and + // lowercase), numbers, underscores, and hyphens are allowed. + ClusterName *string + + // The execute command configuration for the cluster. + Configuration *types.ClusterConfiguration + + // The capacity provider strategy to set as the default for the cluster. After a + // default capacity provider strategy is set for a cluster, when you call the [CreateService]or [RunTask] + // APIs with no capacity provider strategy or launch type specified, the default + // capacity provider strategy for the cluster is used. + // + // If a default capacity provider strategy isn't defined for a cluster when it was + // created, it can be defined later with the [PutClusterCapacityProviders]API operation. + // + // [CreateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html + // [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html + // [RunTask]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html + DefaultCapacityProviderStrategy []types.CapacityProviderStrategyItem + + // Use this parameter to set a default Service Connect namespace. After you set a + // default Service Connect namespace, any new services with Service Connect turned + // on that are created in the cluster are added as client services in the + // namespace. This setting only applies to new services that set the enabled + // parameter to true in the ServiceConnectConfiguration . You can set the namespace + // of each service individually in the ServiceConnectConfiguration to override + // this default parameter. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectDefaults *types.ClusterServiceConnectDefaultsRequest + + // The setting to use when creating a cluster. This parameter is used to turn on + // CloudWatch Container Insights for a cluster. If this value is specified, it + // overrides the containerInsights value set with [PutAccountSetting] or [PutAccountSettingDefault]. + // + // [PutAccountSettingDefault]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html + // [PutAccountSetting]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html + Settings []types.ClusterSetting + + // The metadata that you apply to the cluster to help you categorize and organize + // them. Each tag consists of a key and an optional value. You define both. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type CreateClusterOutput struct { + + // The full description of your new cluster. + Cluster *types.Cluster + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateClusterMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateCluster{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateCluster{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "CreateCluster"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpCreateClusterValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateCluster(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateCluster(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "CreateCluster", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateService.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateService.go new file mode 100644 index 000000000..72aac5c3e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateService.go @@ -0,0 +1,573 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Runs and maintains your desired number of tasks from a specified task +// definition. If the number of tasks running in a service drops below the +// desiredCount , Amazon ECS runs another copy of the task in the specified +// cluster. To update an existing service, use [UpdateService]. +// +// On March 21, 2024, a change was made to resolve the task definition revision +// before authorization. When a task definition revision is not specified, +// authorization will occur using the latest revision of a task definition. +// +// Amazon Elastic Inference (EI) is no longer available to customers. +// +// In addition to maintaining the desired count of tasks in your service, you can +// optionally run your service behind one or more load balancers. The load +// balancers distribute traffic across the tasks that are associated with the +// service. For more information, see [Service load balancing]in the Amazon Elastic Container Service +// Developer Guide. +// +// You can attach Amazon EBS volumes to Amazon ECS tasks by configuring the volume +// when creating or updating a service. volumeConfigurations is only supported for +// REPLICA service and not DAEMON service. For more infomation, see [Amazon EBS volumes]in the Amazon +// Elastic Container Service Developer Guide. +// +// Tasks for services that don't use a load balancer are considered healthy if +// they're in the RUNNING state. Tasks for services that use a load balancer are +// considered healthy if they're in the RUNNING state and are reported as healthy +// by the load balancer. +// +// There are two service scheduler strategies available: +// +// - REPLICA - The replica scheduling strategy places and maintains your desired +// number of tasks across your cluster. By default, the service scheduler spreads +// tasks across Availability Zones. You can use task placement strategies and +// constraints to customize task placement decisions. For more information, see [Service scheduler concepts] +// in the Amazon Elastic Container Service Developer Guide. +// +// - DAEMON - The daemon scheduling strategy deploys exactly one task on each +// active container instance that meets all of the task placement constraints that +// you specify in your cluster. The service scheduler also evaluates the task +// placement constraints for running tasks. It also stops tasks that don't meet the +// placement constraints. When using this strategy, you don't need to specify a +// desired number of tasks, a task placement strategy, or use Service Auto Scaling +// policies. For more information, see [Service scheduler concepts]in the Amazon Elastic Container Service +// Developer Guide. +// +// You can optionally specify a deployment configuration for your service. The +// deployment is initiated by changing properties. For example, the deployment +// might be initiated by the task definition or by your desired count of a service. +// You can use [UpdateService]. The default value for a replica service for minimumHealthyPercent +// is 100%. The default value for a daemon service for minimumHealthyPercent is 0%. +// +// If a service uses the ECS deployment controller, the minimum healthy percent +// represents a lower limit on the number of tasks in a service that must remain in +// the RUNNING state during a deployment. Specifically, it represents it as a +// percentage of your desired number of tasks (rounded up to the nearest integer). +// This happens when any of your container instances are in the DRAINING state if +// the service contains tasks using the EC2 launch type. Using this parameter, you +// can deploy without using additional cluster capacity. For example, if you set +// your service to have desired number of four tasks and a minimum healthy percent +// of 50%, the scheduler might stop two existing tasks to free up cluster capacity +// before starting two new tasks. If they're in the RUNNING state, tasks for +// services that don't use a load balancer are considered healthy . If they're in +// the RUNNING state and reported as healthy by the load balancer, tasks for +// services that do use a load balancer are considered healthy . The default value +// for minimum healthy percent is 100%. +// +// If a service uses the ECS deployment controller, the maximum percent parameter +// represents an upper limit on the number of tasks in a service that are allowed +// in the RUNNING or PENDING state during a deployment. Specifically, it +// represents it as a percentage of the desired number of tasks (rounded down to +// the nearest integer). This happens when any of your container instances are in +// the DRAINING state if the service contains tasks using the EC2 launch type. +// Using this parameter, you can define the deployment batch size. For example, if +// your service has a desired number of four tasks and a maximum percent value of +// 200%, the scheduler may start four new tasks before stopping the four older +// tasks (provided that the cluster resources required to do this are available). +// The default value for maximum percent is 200%. +// +// If a service uses either the CODE_DEPLOY or EXTERNAL deployment controller +// types and tasks that use the EC2 launch type, the minimum healthy percent and +// maximum percent values are used only to define the lower and upper limit on the +// number of the tasks in the service that remain in the RUNNING state. This is +// while the container instances are in the DRAINING state. If the tasks in the +// service use the Fargate launch type, the minimum healthy percent and maximum +// percent values aren't used. This is the case even if they're currently visible +// when describing your service. +// +// When creating a service that uses the EXTERNAL deployment controller, you can +// specify only parameters that aren't controlled at the task set level. The only +// required parameter is the service name. You control your services using the [CreateTaskSet]. +// For more information, see [Amazon ECS deployment types]in the Amazon Elastic Container Service Developer +// Guide. +// +// When the service scheduler launches new tasks, it determines task placement. +// For information about task placement and task placement strategies, see [Amazon ECS task placement]in the +// Amazon Elastic Container Service Developer Guide +// +// [Amazon ECS task placement]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement.html +// [Service scheduler concepts]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html +// [Amazon ECS deployment types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html +// [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html +// [CreateTaskSet]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateTaskSet.html +// [Service load balancing]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html +// [Amazon EBS volumes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volume-types +func (c *Client) CreateService(ctx context.Context, params *CreateServiceInput, optFns ...func(*Options)) (*CreateServiceOutput, error) { + if params == nil { + params = &CreateServiceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateService", params, optFns, c.addOperationCreateServiceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateServiceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateServiceInput struct { + + // The name of your service. Up to 255 letters (uppercase and lowercase), numbers, + // underscores, and hyphens are allowed. Service names must be unique within a + // cluster, but you can have similarly named services in multiple clusters within a + // Region or across multiple Regions. + // + // This member is required. + ServiceName *string + + // Indicates whether to use Availability Zone rebalancing for the service. + // + // For more information, see [Balancing an Amazon ECS service across Availability Zones] in the Amazon Elastic Container Service Developer + // Guide. + // + // [Balancing an Amazon ECS service across Availability Zones]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html + AvailabilityZoneRebalancing types.AvailabilityZoneRebalancing + + // The capacity provider strategy to use for the service. + // + // If a capacityProviderStrategy is specified, the launchType parameter must be + // omitted. If no capacityProviderStrategy or launchType is specified, the + // defaultCapacityProviderStrategy for the cluster is used. + // + // A capacity provider strategy can contain a maximum of 20 capacity providers. + CapacityProviderStrategy []types.CapacityProviderStrategyItem + + // An identifier that you provide to ensure the idempotency of the request. It + // must be unique and is case sensitive. Up to 36 ASCII characters in the range of + // 33-126 (inclusive) are allowed. + ClientToken *string + + // The short name or full Amazon Resource Name (ARN) of the cluster that you run + // your service on. If you do not specify a cluster, the default cluster is + // assumed. + Cluster *string + + // Optional deployment parameters that control how many tasks run during the + // deployment and the ordering of stopping and starting tasks. + DeploymentConfiguration *types.DeploymentConfiguration + + // The deployment controller to use for the service. If no deployment controller + // is specified, the default value of ECS is used. + DeploymentController *types.DeploymentController + + // The number of instantiations of the specified task definition to place and keep + // running in your service. + // + // This is required if schedulingStrategy is REPLICA or isn't specified. If + // schedulingStrategy is DAEMON then this isn't required. + DesiredCount *int32 + + // Specifies whether to turn on Amazon ECS managed tags for the tasks within the + // service. For more information, see [Tagging your Amazon ECS resources]in the Amazon Elastic Container Service + // Developer Guide. + // + // When you use Amazon ECS managed tags, you need to set the propagateTags request + // parameter. + // + // [Tagging your Amazon ECS resources]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html + EnableECSManagedTags bool + + // Determines whether the execute command functionality is turned on for the + // service. If true , this enables execute command functionality on all containers + // in the service tasks. + EnableExecuteCommand bool + + // The period of time, in seconds, that the Amazon ECS service scheduler ignores + // unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after + // a task has first started. If you don't specify a health check grace period + // value, the default value of 0 is used. If you don't use any of the health + // checks, then healthCheckGracePeriodSeconds is unused. + // + // If your service's tasks take a while to start and respond to health checks, you + // can specify a health check grace period of up to 2,147,483,647 seconds (about 69 + // years). During that time, the Amazon ECS service scheduler ignores health check + // status. This grace period can prevent the service scheduler from marking tasks + // as unhealthy and stopping them before they have time to come up. + HealthCheckGracePeriodSeconds *int32 + + // The infrastructure that you run your service on. For more information, see [Amazon ECS launch types] in + // the Amazon Elastic Container Service Developer Guide. + // + // The FARGATE launch type runs your tasks on Fargate On-Demand infrastructure. + // + // Fargate Spot infrastructure is available for use but a capacity provider + // strategy must be used. For more information, see [Fargate capacity providers]in the Amazon ECS Developer + // Guide. + // + // The EC2 launch type runs your tasks on Amazon EC2 instances registered to your + // cluster. + // + // The EXTERNAL launch type runs your tasks on your on-premises server or virtual + // machine (VM) capacity registered to your cluster. + // + // A service can use either a launch type or a capacity provider strategy. If a + // launchType is specified, the capacityProviderStrategy parameter must be omitted. + // + // [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + // [Fargate capacity providers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-capacity-providers.html + LaunchType types.LaunchType + + // A load balancer object representing the load balancers to use with your + // service. For more information, see [Service load balancing]in the Amazon Elastic Container Service + // Developer Guide. + // + // If the service uses the rolling update ( ECS ) deployment controller and using + // either an Application Load Balancer or Network Load Balancer, you must specify + // one or more target group ARNs to attach to the service. The service-linked role + // is required for services that use multiple target groups. For more information, + // see [Using service-linked roles for Amazon ECS]in the Amazon Elastic Container Service Developer Guide. + // + // If the service uses the CODE_DEPLOY deployment controller, the service is + // required to use either an Application Load Balancer or Network Load Balancer. + // When creating an CodeDeploy deployment group, you specify two target groups + // (referred to as a targetGroupPair ). During a deployment, CodeDeploy determines + // which task set in your service has the status PRIMARY , and it associates one + // target group with it. Then, it also associates the other target group with the + // replacement task set. The load balancer can also have up to two listeners: a + // required listener for production traffic and an optional listener that you can + // use to perform validation tests with Lambda functions before routing production + // traffic to it. + // + // If you use the CODE_DEPLOY deployment controller, these values can be changed + // when updating the service. + // + // For Application Load Balancers and Network Load Balancers, this object must + // contain the load balancer target group ARN, the container name, and the + // container port to access from the load balancer. The container name must be as + // it appears in a container definition. The load balancer name parameter must be + // omitted. When a task from this service is placed on a container instance, the + // container instance and port combination is registered as a target in the target + // group that's specified here. + // + // For Classic Load Balancers, this object must contain the load balancer name, + // the container name , and the container port to access from the load balancer. + // The container name must be as it appears in a container definition. The target + // group ARN parameter must be omitted. When a task from this service is placed on + // a container instance, the container instance is registered with the load + // balancer that's specified here. + // + // Services with tasks that use the awsvpc network mode (for example, those with + // the Fargate launch type) only support Application Load Balancers and Network + // Load Balancers. Classic Load Balancers aren't supported. Also, when you create + // any target groups for these services, you must choose ip as the target type, + // not instance . This is because tasks that use the awsvpc network mode are + // associated with an elastic network interface, not an Amazon EC2 instance. + // + // [Service load balancing]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html + // [Using service-linked roles for Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html + LoadBalancers []types.LoadBalancer + + // The network configuration for the service. This parameter is required for task + // definitions that use the awsvpc network mode to receive their own elastic + // network interface, and it isn't supported for other network modes. For more + // information, see [Task networking]in the Amazon Elastic Container Service Developer Guide. + // + // [Task networking]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html + NetworkConfiguration *types.NetworkConfiguration + + // An array of placement constraint objects to use for tasks in your service. You + // can specify a maximum of 10 constraints for each task. This limit includes + // constraints in the task definition and those specified at runtime. + PlacementConstraints []types.PlacementConstraint + + // The placement strategy objects to use for tasks in your service. You can + // specify a maximum of 5 strategy rules for each service. + PlacementStrategy []types.PlacementStrategy + + // The platform version that your tasks in the service are running on. A platform + // version is specified only for tasks using the Fargate launch type. If one isn't + // specified, the LATEST platform version is used. For more information, see [Fargate platform versions] in + // the Amazon Elastic Container Service Developer Guide. + // + // [Fargate platform versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + PlatformVersion *string + + // Specifies whether to propagate the tags from the task definition to the task. + // If no value is specified, the tags aren't propagated. Tags can only be + // propagated to the task during task creation. To add tags to a task after task + // creation, use the [TagResource]API action. + // + // You must set this to a value other than NONE when you use Cost Explorer. For + // more information, see [Amazon ECS usage reports]in the Amazon Elastic Container Service Developer Guide. + // + // The default is NONE . + // + // [TagResource]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html + // [Amazon ECS usage reports]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/usage-reports.html + PropagateTags types.PropagateTags + + // The name or full Amazon Resource Name (ARN) of the IAM role that allows Amazon + // ECS to make calls to your load balancer on your behalf. This parameter is only + // permitted if you are using a load balancer with your service and your task + // definition doesn't use the awsvpc network mode. If you specify the role + // parameter, you must also specify a load balancer object with the loadBalancers + // parameter. + // + // If your account has already created the Amazon ECS service-linked role, that + // role is used for your service unless you specify a role here. The service-linked + // role is required if your task definition uses the awsvpc network mode or if the + // service is configured to use service discovery, an external deployment + // controller, multiple target groups, or Elastic Inference accelerators in which + // case you don't specify a role here. For more information, see [Using service-linked roles for Amazon ECS]in the Amazon + // Elastic Container Service Developer Guide. + // + // If your specified role has a path other than / , then you must either specify + // the full role ARN (this is recommended) or prefix the role name with the path. + // For example, if a role with the name bar has a path of /foo/ then you would + // specify /foo/bar as the role name. For more information, see [Friendly names and paths] in the IAM User + // Guide. + // + // [Friendly names and paths]: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names + // [Using service-linked roles for Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html + Role *string + + // The scheduling strategy to use for the service. For more information, see [Services]. + // + // There are two service scheduler strategies available: + // + // - REPLICA -The replica scheduling strategy places and maintains the desired + // number of tasks across your cluster. By default, the service scheduler spreads + // tasks across Availability Zones. You can use task placement strategies and + // constraints to customize task placement decisions. This scheduler strategy is + // required if the service uses the CODE_DEPLOY or EXTERNAL deployment controller + // types. + // + // - DAEMON -The daemon scheduling strategy deploys exactly one task on each + // active container instance that meets all of the task placement constraints that + // you specify in your cluster. The service scheduler also evaluates the task + // placement constraints for running tasks and will stop tasks that don't meet the + // placement constraints. When you're using this strategy, you don't need to + // specify a desired number of tasks, a task placement strategy, or use Service + // Auto Scaling policies. + // + // Tasks using the Fargate launch type or the CODE_DEPLOY or EXTERNAL deployment + // controller types don't support the DAEMON scheduling strategy. + // + // [Services]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html + SchedulingStrategy types.SchedulingStrategy + + // The configuration for this service to discover and connect to services, and be + // discovered by, and connected from, other services within a namespace. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectConfiguration *types.ServiceConnectConfiguration + + // The details of the service discovery registry to associate with this service. + // For more information, see [Service discovery]. + // + // Each service may be associated with one service registry. Multiple service + // registries for each service isn't supported. + // + // [Service discovery]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html + ServiceRegistries []types.ServiceRegistry + + // The metadata that you apply to the service to help you categorize and organize + // them. Each tag consists of a key and an optional value, both of which you + // define. When a service is deleted, the tags are deleted as well. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + // The family and revision ( family:revision ) or full ARN of the task definition + // to run in your service. If a revision isn't specified, the latest ACTIVE + // revision is used. + // + // A task definition must be specified if the service uses either the ECS or + // CODE_DEPLOY deployment controllers. + // + // For more information about deployment types, see [Amazon ECS deployment types]. + // + // [Amazon ECS deployment types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html + TaskDefinition *string + + // The configuration for a volume specified in the task definition as a volume + // that is configured at launch time. Currently, the only supported volume type is + // an Amazon EBS volume. + VolumeConfigurations []types.ServiceVolumeConfiguration + + // The VPC Lattice configuration for the service being created. + VpcLatticeConfigurations []types.VpcLatticeConfiguration + + noSmithyDocumentSerde +} + +type CreateServiceOutput struct { + + // The full description of your service following the create call. + // + // A service will return either a capacityProviderStrategy or launchType + // parameter, but not both, depending where one was specified when it was created. + // + // If a service is using the ECS deployment controller, the deploymentController + // and taskSets parameters will not be returned. + // + // if the service uses the CODE_DEPLOY deployment controller, the + // deploymentController , taskSets and deployments parameters will be returned, + // however the deployments parameter will be an empty list. + Service *types.Service + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateServiceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateService{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateService{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "CreateService"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpCreateServiceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateService(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateService(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "CreateService", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateTaskSet.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateTaskSet.go new file mode 100644 index 000000000..9f7fe6f90 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_CreateTaskSet.go @@ -0,0 +1,283 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Create a task set in the specified cluster and service. This is used when a +// service uses the EXTERNAL deployment controller type. For more information, see [Amazon ECS deployment types] +// in the Amazon Elastic Container Service Developer Guide. +// +// On March 21, 2024, a change was made to resolve the task definition revision +// before authorization. When a task definition revision is not specified, +// authorization will occur using the latest revision of a task definition. +// +// For information about the maximum number of task sets and other quotas, see [Amazon ECS service quotas] in +// the Amazon Elastic Container Service Developer Guide. +// +// [Amazon ECS deployment types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html +// [Amazon ECS service quotas]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html +func (c *Client) CreateTaskSet(ctx context.Context, params *CreateTaskSetInput, optFns ...func(*Options)) (*CreateTaskSetOutput, error) { + if params == nil { + params = &CreateTaskSetInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "CreateTaskSet", params, optFns, c.addOperationCreateTaskSetMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*CreateTaskSetOutput) + out.ResultMetadata = metadata + return out, nil +} + +type CreateTaskSetInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service to create the task set in. + // + // This member is required. + Cluster *string + + // The short name or full Amazon Resource Name (ARN) of the service to create the + // task set in. + // + // This member is required. + Service *string + + // The task definition for the tasks in the task set to use. If a revision isn't + // specified, the latest ACTIVE revision is used. + // + // This member is required. + TaskDefinition *string + + // The capacity provider strategy to use for the task set. + // + // A capacity provider strategy consists of one or more capacity providers along + // with the base and weight to assign to them. A capacity provider must be + // associated with the cluster to be used in a capacity provider strategy. The [PutClusterCapacityProviders]API + // is used to associate a capacity provider with a cluster. Only capacity providers + // with an ACTIVE or UPDATING status can be used. + // + // If a capacityProviderStrategy is specified, the launchType parameter must be + // omitted. If no capacityProviderStrategy or launchType is specified, the + // defaultCapacityProviderStrategy for the cluster is used. + // + // If specifying a capacity provider that uses an Auto Scaling group, the capacity + // provider must already be created. New capacity providers can be created with the + // [CreateCapacityProviderProvider]API operation. + // + // To use a Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT + // capacity providers. The Fargate capacity providers are available to all accounts + // and only need to be associated with a cluster to be used. + // + // The [PutClusterCapacityProviders] API operation is used to update the list of available capacity providers + // for a cluster after the cluster is created. + // + // [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html + // [CreateCapacityProviderProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProviderProvider.html + CapacityProviderStrategy []types.CapacityProviderStrategyItem + + // An identifier that you provide to ensure the idempotency of the request. It + // must be unique and is case sensitive. Up to 36 ASCII characters in the range of + // 33-126 (inclusive) are allowed. + ClientToken *string + + // An optional non-unique tag that identifies this task set in external systems. + // If the task set is associated with a service discovery registry, the tasks in + // this task set will have the ECS_TASK_SET_EXTERNAL_ID Cloud Map attribute set to + // the provided value. + ExternalId *string + + // The launch type that new tasks in the task set uses. For more information, see [Amazon ECS launch types] + // in the Amazon Elastic Container Service Developer Guide. + // + // If a launchType is specified, the capacityProviderStrategy parameter must be + // omitted. + // + // [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + LaunchType types.LaunchType + + // A load balancer object representing the load balancer to use with the task set. + // The supported load balancer types are either an Application Load Balancer or a + // Network Load Balancer. + LoadBalancers []types.LoadBalancer + + // An object representing the network configuration for a task set. + NetworkConfiguration *types.NetworkConfiguration + + // The platform version that the tasks in the task set uses. A platform version is + // specified only for tasks using the Fargate launch type. If one isn't specified, + // the LATEST platform version is used. + PlatformVersion *string + + // A floating-point percentage of the desired number of tasks to place and keep + // running in the task set. + Scale *types.Scale + + // The details of the service discovery registries to assign to this task set. For + // more information, see [Service discovery]. + // + // [Service discovery]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html + ServiceRegistries []types.ServiceRegistry + + // The metadata that you apply to the task set to help you categorize and organize + // them. Each tag consists of a key and an optional value. You define both. When a + // service is deleted, the tags are deleted. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type CreateTaskSetOutput struct { + + // Information about a set of Amazon ECS tasks in either an CodeDeploy or an + // EXTERNAL deployment. A task set includes details such as the desired number of + // tasks, how many tasks are running, and whether the task set serves production + // traffic. + TaskSet *types.TaskSet + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationCreateTaskSetMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpCreateTaskSet{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpCreateTaskSet{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "CreateTaskSet"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpCreateTaskSetValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opCreateTaskSet(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opCreateTaskSet(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "CreateTaskSet", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAccountSetting.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAccountSetting.go new file mode 100644 index 000000000..8b41400dd --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAccountSetting.go @@ -0,0 +1,171 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Disables an account setting for a specified user, role, or the root user for an +// account. +func (c *Client) DeleteAccountSetting(ctx context.Context, params *DeleteAccountSettingInput, optFns ...func(*Options)) (*DeleteAccountSettingOutput, error) { + if params == nil { + params = &DeleteAccountSettingInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteAccountSetting", params, optFns, c.addOperationDeleteAccountSettingMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteAccountSettingOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteAccountSettingInput struct { + + // The resource name to disable the account setting for. If serviceLongArnFormat + // is specified, the ARN for your Amazon ECS services is affected. If + // taskLongArnFormat is specified, the ARN and resource ID for your Amazon ECS + // tasks is affected. If containerInstanceLongArnFormat is specified, the ARN and + // resource ID for your Amazon ECS container instances is affected. If + // awsvpcTrunking is specified, the ENI limit for your Amazon ECS container + // instances is affected. + // + // This member is required. + Name types.SettingName + + // The Amazon Resource Name (ARN) of the principal. It can be an user, role, or + // the root user. If you specify the root user, it disables the account setting for + // all users, roles, and the root user of the account unless a user or role + // explicitly overrides these settings. If this field is omitted, the setting is + // changed only for the authenticated user. + PrincipalArn *string + + noSmithyDocumentSerde +} + +type DeleteAccountSettingOutput struct { + + // The account setting for the specified principal ARN. + Setting *types.Setting + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteAccountSettingMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeleteAccountSetting{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeleteAccountSetting{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteAccountSetting"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteAccountSettingValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteAccountSetting(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteAccountSetting(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteAccountSetting", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAttributes.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAttributes.go new file mode 100644 index 000000000..8062c0856 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteAttributes.go @@ -0,0 +1,165 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes one or more custom attributes from an Amazon ECS resource. +func (c *Client) DeleteAttributes(ctx context.Context, params *DeleteAttributesInput, optFns ...func(*Options)) (*DeleteAttributesOutput, error) { + if params == nil { + params = &DeleteAttributesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteAttributes", params, optFns, c.addOperationDeleteAttributesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteAttributesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteAttributesInput struct { + + // The attributes to delete from your resource. You can specify up to 10 + // attributes for each request. For custom attributes, specify the attribute name + // and target ID, but don't specify the value. If you specify the target ID using + // the short form, you must also specify the target type. + // + // This member is required. + Attributes []types.Attribute + + // The short name or full Amazon Resource Name (ARN) of the cluster that contains + // the resource to delete attributes. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + noSmithyDocumentSerde +} + +type DeleteAttributesOutput struct { + + // A list of attribute objects that were successfully deleted from your resource. + Attributes []types.Attribute + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteAttributesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeleteAttributes{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeleteAttributes{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteAttributes"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteAttributesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteAttributes(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteAttributes(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteAttributes", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCapacityProvider.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCapacityProvider.go new file mode 100644 index 000000000..f026ec17d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCapacityProvider.go @@ -0,0 +1,175 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes the specified capacity provider. +// +// The FARGATE and FARGATE_SPOT capacity providers are reserved and can't be +// deleted. You can disassociate them from a cluster using either [PutClusterCapacityProviders]or by deleting +// the cluster. +// +// Prior to a capacity provider being deleted, the capacity provider must be +// removed from the capacity provider strategy from all services. The [UpdateService]API can be +// used to remove a capacity provider from a service's capacity provider strategy. +// When updating a service, the forceNewDeployment option can be used to ensure +// that any tasks using the Amazon EC2 instance capacity provided by the capacity +// provider are transitioned to use the capacity from the remaining capacity +// providers. Only capacity providers that aren't associated with a cluster can be +// deleted. To remove a capacity provider from a cluster, you can either use [PutClusterCapacityProviders]or +// delete the cluster. +// +// [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html +// [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html +func (c *Client) DeleteCapacityProvider(ctx context.Context, params *DeleteCapacityProviderInput, optFns ...func(*Options)) (*DeleteCapacityProviderOutput, error) { + if params == nil { + params = &DeleteCapacityProviderInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteCapacityProvider", params, optFns, c.addOperationDeleteCapacityProviderMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteCapacityProviderOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteCapacityProviderInput struct { + + // The short name or full Amazon Resource Name (ARN) of the capacity provider to + // delete. + // + // This member is required. + CapacityProvider *string + + noSmithyDocumentSerde +} + +type DeleteCapacityProviderOutput struct { + + // The details of the capacity provider. + CapacityProvider *types.CapacityProvider + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteCapacityProviderMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeleteCapacityProvider{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeleteCapacityProvider{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteCapacityProvider"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteCapacityProviderValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteCapacityProvider(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteCapacityProvider(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteCapacityProvider", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCluster.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCluster.go new file mode 100644 index 000000000..7b8c15b40 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteCluster.go @@ -0,0 +1,167 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes the specified cluster. The cluster transitions to the INACTIVE state. +// Clusters with an INACTIVE status might remain discoverable in your account for +// a period of time. However, this behavior is subject to change in the future. We +// don't recommend that you rely on INACTIVE clusters persisting. +// +// You must deregister all container instances from this cluster before you may +// delete it. You can list the container instances in a cluster with [ListContainerInstances]and +// deregister them with [DeregisterContainerInstance]. +// +// [ListContainerInstances]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListContainerInstances.html +// [DeregisterContainerInstance]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeregisterContainerInstance.html +func (c *Client) DeleteCluster(ctx context.Context, params *DeleteClusterInput, optFns ...func(*Options)) (*DeleteClusterOutput, error) { + if params == nil { + params = &DeleteClusterInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteCluster", params, optFns, c.addOperationDeleteClusterMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteClusterOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteClusterInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster to delete. + // + // This member is required. + Cluster *string + + noSmithyDocumentSerde +} + +type DeleteClusterOutput struct { + + // The full description of the deleted cluster. + Cluster *types.Cluster + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteClusterMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeleteCluster{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeleteCluster{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteCluster"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteClusterValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteCluster(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteCluster(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteCluster", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteService.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteService.go new file mode 100644 index 000000000..9625686c9 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteService.go @@ -0,0 +1,186 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes a specified service within a cluster. You can delete a service if you +// have no running tasks in it and the desired task count is zero. If the service +// is actively maintaining tasks, you can't delete it, and you must update the +// service to a desired task count of zero. For more information, see [UpdateService]. +// +// When you delete a service, if there are still running tasks that require +// cleanup, the service status moves from ACTIVE to DRAINING , and the service is +// no longer visible in the console or in the [ListServices]API operation. After all tasks have +// transitioned to either STOPPING or STOPPED status, the service status moves +// from DRAINING to INACTIVE . Services in the DRAINING or INACTIVE status can +// still be viewed with the [DescribeServices]API operation. However, in the future, INACTIVE +// services may be cleaned up and purged from Amazon ECS record keeping, and [DescribeServices]calls +// on those services return a ServiceNotFoundException error. +// +// If you attempt to create a new service with the same name as an existing +// service in either ACTIVE or DRAINING status, you receive an error. +// +// [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html +// [ListServices]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListServices.html +// [DescribeServices]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeServices.html +func (c *Client) DeleteService(ctx context.Context, params *DeleteServiceInput, optFns ...func(*Options)) (*DeleteServiceOutput, error) { + if params == nil { + params = &DeleteServiceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteService", params, optFns, c.addOperationDeleteServiceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteServiceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteServiceInput struct { + + // The name of the service to delete. + // + // This member is required. + Service *string + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service to delete. If you do not specify a cluster, the default cluster is + // assumed. + Cluster *string + + // If true , allows you to delete a service even if it wasn't scaled down to zero + // tasks. It's only necessary to use this if the service uses the REPLICA + // scheduling strategy. + Force *bool + + noSmithyDocumentSerde +} + +type DeleteServiceOutput struct { + + // The full description of the deleted service. + Service *types.Service + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteServiceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeleteService{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeleteService{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteService"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteServiceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteService(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteService(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteService", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskDefinitions.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskDefinitions.go new file mode 100644 index 000000000..3fdc4ce09 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskDefinitions.go @@ -0,0 +1,189 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes one or more task definitions. +// +// You must deregister a task definition revision before you delete it. For more +// information, see [DeregisterTaskDefinition]. +// +// When you delete a task definition revision, it is immediately transitions from +// the INACTIVE to DELETE_IN_PROGRESS . Existing tasks and services that reference +// a DELETE_IN_PROGRESS task definition revision continue to run without +// disruption. Existing services that reference a DELETE_IN_PROGRESS task +// definition revision can still scale up or down by modifying the service's +// desired count. +// +// You can't use a DELETE_IN_PROGRESS task definition revision to run new tasks or +// create new services. You also can't update an existing service to reference a +// DELETE_IN_PROGRESS task definition revision. +// +// A task definition revision will stay in DELETE_IN_PROGRESS status until all the +// associated tasks and services have been terminated. +// +// When you delete all INACTIVE task definition revisions, the task definition +// name is not displayed in the console and not returned in the API. If a task +// definition revisions are in the DELETE_IN_PROGRESS state, the task definition +// name is displayed in the console and returned in the API. The task definition +// name is retained by Amazon ECS and the revision is incremented the next time you +// create a task definition with that name. +// +// [DeregisterTaskDefinition]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeregisterTaskDefinition.html +func (c *Client) DeleteTaskDefinitions(ctx context.Context, params *DeleteTaskDefinitionsInput, optFns ...func(*Options)) (*DeleteTaskDefinitionsOutput, error) { + if params == nil { + params = &DeleteTaskDefinitionsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteTaskDefinitions", params, optFns, c.addOperationDeleteTaskDefinitionsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteTaskDefinitionsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteTaskDefinitionsInput struct { + + // The family and revision ( family:revision ) or full Amazon Resource Name (ARN) + // of the task definition to delete. You must specify a revision . + // + // You can specify up to 10 task definitions as a comma separated list. + // + // This member is required. + TaskDefinitions []string + + noSmithyDocumentSerde +} + +type DeleteTaskDefinitionsOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // The list of deleted task definitions. + TaskDefinitions []types.TaskDefinition + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteTaskDefinitionsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeleteTaskDefinitions{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeleteTaskDefinitions{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteTaskDefinitions"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteTaskDefinitionsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteTaskDefinitions(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteTaskDefinitions(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteTaskDefinitions", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskSet.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskSet.go new file mode 100644 index 000000000..098197e53 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeleteTaskSet.go @@ -0,0 +1,176 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes a specified task set within a service. This is used when a service uses +// the EXTERNAL deployment controller type. For more information, see [Amazon ECS deployment types] in the +// Amazon Elastic Container Service Developer Guide. +// +// [Amazon ECS deployment types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html +func (c *Client) DeleteTaskSet(ctx context.Context, params *DeleteTaskSetInput, optFns ...func(*Options)) (*DeleteTaskSetOutput, error) { + if params == nil { + params = &DeleteTaskSetInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeleteTaskSet", params, optFns, c.addOperationDeleteTaskSetMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeleteTaskSetOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeleteTaskSetInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service that the task set found in to delete. + // + // This member is required. + Cluster *string + + // The short name or full Amazon Resource Name (ARN) of the service that hosts the + // task set to delete. + // + // This member is required. + Service *string + + // The task set ID or full Amazon Resource Name (ARN) of the task set to delete. + // + // This member is required. + TaskSet *string + + // If true , you can delete a task set even if it hasn't been scaled down to zero. + Force *bool + + noSmithyDocumentSerde +} + +type DeleteTaskSetOutput struct { + + // Details about the task set. + TaskSet *types.TaskSet + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeleteTaskSetMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeleteTaskSet{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeleteTaskSet{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeleteTaskSet"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeleteTaskSetValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeleteTaskSet(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeleteTaskSet(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeleteTaskSet", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterContainerInstance.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterContainerInstance.go new file mode 100644 index 000000000..16e3435d7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterContainerInstance.go @@ -0,0 +1,195 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deregisters an Amazon ECS container instance from the specified cluster. This +// instance is no longer available to run tasks. +// +// If you intend to use the container instance for some other purpose after +// deregistration, we recommend that you stop all of the tasks running on the +// container instance before deregistration. That prevents any orphaned tasks from +// consuming resources. +// +// Deregistering a container instance removes the instance from a cluster, but it +// doesn't terminate the EC2 instance. If you are finished using the instance, be +// sure to terminate it in the Amazon EC2 console to stop billing. +// +// If you terminate a running container instance, Amazon ECS automatically +// deregisters the instance from your cluster (stopped container instances or +// instances with disconnected agents aren't automatically deregistered when +// terminated). +func (c *Client) DeregisterContainerInstance(ctx context.Context, params *DeregisterContainerInstanceInput, optFns ...func(*Options)) (*DeregisterContainerInstanceOutput, error) { + if params == nil { + params = &DeregisterContainerInstanceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeregisterContainerInstance", params, optFns, c.addOperationDeregisterContainerInstanceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeregisterContainerInstanceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeregisterContainerInstanceInput struct { + + // The container instance ID or full ARN of the container instance to deregister. + // For more information about the ARN format, see [Amazon Resource Name (ARN)]in the Amazon ECS Developer + // Guide. + // + // [Amazon Resource Name (ARN)]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + // + // This member is required. + ContainerInstance *string + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // container instance to deregister. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + // Forces the container instance to be deregistered. If you have tasks running on + // the container instance when you deregister it with the force option, these + // tasks remain running until you terminate the instance or the tasks stop through + // some other means, but they're orphaned (no longer monitored or accounted for by + // Amazon ECS). If an orphaned task on your container instance is part of an Amazon + // ECS service, then the service scheduler starts another copy of that task, on a + // different container instance if possible. + // + // Any containers in orphaned service tasks that are registered with a Classic + // Load Balancer or an Application Load Balancer target group are deregistered. + // They begin connection draining according to the settings on the load balancer or + // target group. + Force *bool + + noSmithyDocumentSerde +} + +type DeregisterContainerInstanceOutput struct { + + // The container instance that was deregistered. + ContainerInstance *types.ContainerInstance + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeregisterContainerInstanceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeregisterContainerInstance{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeregisterContainerInstance{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeregisterContainerInstance"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeregisterContainerInstanceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeregisterContainerInstance(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeregisterContainerInstance(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeregisterContainerInstance", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterTaskDefinition.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterTaskDefinition.go new file mode 100644 index 000000000..0f74fa9ec --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DeregisterTaskDefinition.go @@ -0,0 +1,179 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deregisters the specified task definition by family and revision. Upon +// deregistration, the task definition is marked as INACTIVE . Existing tasks and +// services that reference an INACTIVE task definition continue to run without +// disruption. Existing services that reference an INACTIVE task definition can +// still scale up or down by modifying the service's desired count. If you want to +// delete a task definition revision, you must first deregister the task definition +// revision. +// +// You can't use an INACTIVE task definition to run new tasks or create new +// services, and you can't update an existing service to reference an INACTIVE +// task definition. However, there may be up to a 10-minute window following +// deregistration where these restrictions have not yet taken effect. +// +// At this time, INACTIVE task definitions remain discoverable in your account +// indefinitely. However, this behavior is subject to change in the future. We +// don't recommend that you rely on INACTIVE task definitions persisting beyond +// the lifecycle of any associated tasks and services. +// +// You must deregister a task definition revision before you delete it. For more +// information, see [DeleteTaskDefinitions]. +// +// [DeleteTaskDefinitions]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteTaskDefinitions.html +func (c *Client) DeregisterTaskDefinition(ctx context.Context, params *DeregisterTaskDefinitionInput, optFns ...func(*Options)) (*DeregisterTaskDefinitionOutput, error) { + if params == nil { + params = &DeregisterTaskDefinitionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DeregisterTaskDefinition", params, optFns, c.addOperationDeregisterTaskDefinitionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DeregisterTaskDefinitionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DeregisterTaskDefinitionInput struct { + + // The family and revision ( family:revision ) or full Amazon Resource Name (ARN) + // of the task definition to deregister. You must specify a revision . + // + // This member is required. + TaskDefinition *string + + noSmithyDocumentSerde +} + +type DeregisterTaskDefinitionOutput struct { + + // The full description of the deregistered task. + TaskDefinition *types.TaskDefinition + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDeregisterTaskDefinitionMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDeregisterTaskDefinition{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDeregisterTaskDefinition{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DeregisterTaskDefinition"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDeregisterTaskDefinitionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDeregisterTaskDefinition(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDeregisterTaskDefinition(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DeregisterTaskDefinition", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeCapacityProviders.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeCapacityProviders.go new file mode 100644 index 000000000..0af3fb64f --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeCapacityProviders.go @@ -0,0 +1,186 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes one or more of your capacity providers. +func (c *Client) DescribeCapacityProviders(ctx context.Context, params *DescribeCapacityProvidersInput, optFns ...func(*Options)) (*DescribeCapacityProvidersOutput, error) { + if params == nil { + params = &DescribeCapacityProvidersInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeCapacityProviders", params, optFns, c.addOperationDescribeCapacityProvidersMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeCapacityProvidersOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeCapacityProvidersInput struct { + + // The short name or full Amazon Resource Name (ARN) of one or more capacity + // providers. Up to 100 capacity providers can be described in an action. + CapacityProviders []string + + // Specifies whether or not you want to see the resource tags for the capacity + // provider. If TAGS is specified, the tags are included in the response. If this + // field is omitted, tags aren't included in the response. + Include []types.CapacityProviderField + + // The maximum number of account setting results returned by + // DescribeCapacityProviders in paginated output. When this parameter is used, + // DescribeCapacityProviders only returns maxResults results in a single page + // along with a nextToken response element. The remaining results of the initial + // request can be seen by sending another DescribeCapacityProviders request with + // the returned nextToken value. This value can be between 1 and 10. If this + // parameter is not used, then DescribeCapacityProviders returns up to 10 results + // and a nextToken value if applicable. + MaxResults *int32 + + // The nextToken value returned from a previous paginated DescribeCapacityProviders + // request where maxResults was used and the results exceeded the value of that + // parameter. Pagination continues from the end of the previous results that + // returned the nextToken value. + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + noSmithyDocumentSerde +} + +type DescribeCapacityProvidersOutput struct { + + // The list of capacity providers. + CapacityProviders []types.CapacityProvider + + // Any failures associated with the call. + Failures []types.Failure + + // The nextToken value to include in a future DescribeCapacityProviders request. + // When the results of a DescribeCapacityProviders request exceed maxResults , this + // value can be used to retrieve the next page of results. This value is null when + // there are no more results to return. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeCapacityProvidersMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeCapacityProviders{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeCapacityProviders{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeCapacityProviders"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeCapacityProviders(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeCapacityProviders(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeCapacityProviders", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeClusters.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeClusters.go new file mode 100644 index 000000000..d8e57a2b0 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeClusters.go @@ -0,0 +1,177 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes one or more of your clusters. +// +// For CLI examples, see [describe-clusters.rst] on GitHub. +// +// [describe-clusters.rst]: https://github.com/aws/aws-cli/blob/develop/awscli/examples/ecs/describe-clusters.rst +func (c *Client) DescribeClusters(ctx context.Context, params *DescribeClustersInput, optFns ...func(*Options)) (*DescribeClustersOutput, error) { + if params == nil { + params = &DescribeClustersInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeClusters", params, optFns, c.addOperationDescribeClustersMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeClustersOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeClustersInput struct { + + // A list of up to 100 cluster names or full cluster Amazon Resource Name (ARN) + // entries. If you do not specify a cluster, the default cluster is assumed. + Clusters []string + + // Determines whether to include additional information about the clusters in the + // response. If this field is omitted, this information isn't included. + // + // If ATTACHMENTS is specified, the attachments for the container instances or + // tasks within the cluster are included, for example the capacity providers. + // + // If SETTINGS is specified, the settings for the cluster are included. + // + // If CONFIGURATIONS is specified, the configuration for the cluster is included. + // + // If STATISTICS is specified, the task and service count is included, separated + // by launch type. + // + // If TAGS is specified, the metadata tags associated with the cluster are + // included. + Include []types.ClusterField + + noSmithyDocumentSerde +} + +type DescribeClustersOutput struct { + + // The list of clusters. + Clusters []types.Cluster + + // Any failures associated with the call. + Failures []types.Failure + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeClustersMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeClusters{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeClusters{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeClusters"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeClusters(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeClusters(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeClusters", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeContainerInstances.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeContainerInstances.go new file mode 100644 index 000000000..87c1b481e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeContainerInstances.go @@ -0,0 +1,176 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes one or more container instances. Returns metadata about each +// container instance requested. +func (c *Client) DescribeContainerInstances(ctx context.Context, params *DescribeContainerInstancesInput, optFns ...func(*Options)) (*DescribeContainerInstancesOutput, error) { + if params == nil { + params = &DescribeContainerInstancesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeContainerInstances", params, optFns, c.addOperationDescribeContainerInstancesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeContainerInstancesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeContainerInstancesInput struct { + + // A list of up to 100 container instance IDs or full Amazon Resource Name (ARN) + // entries. + // + // This member is required. + ContainerInstances []string + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // container instances to describe. If you do not specify a cluster, the default + // cluster is assumed. This parameter is required if the container instance or + // container instances you are describing were launched in any cluster other than + // the default cluster. + Cluster *string + + // Specifies whether you want to see the resource tags for the container instance. + // If TAGS is specified, the tags are included in the response. If + // CONTAINER_INSTANCE_HEALTH is specified, the container instance health is + // included in the response. If this field is omitted, tags and container instance + // health status aren't included in the response. + Include []types.ContainerInstanceField + + noSmithyDocumentSerde +} + +type DescribeContainerInstancesOutput struct { + + // The list of container instances. + ContainerInstances []types.ContainerInstance + + // Any failures associated with the call. + Failures []types.Failure + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeContainerInstancesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeContainerInstances{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeContainerInstances{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeContainerInstances"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDescribeContainerInstancesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeContainerInstances(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeContainerInstances(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeContainerInstances", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceDeployments.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceDeployments.go new file mode 100644 index 000000000..b59b32ee4 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceDeployments.go @@ -0,0 +1,171 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes one or more of your service deployments. +// +// A service deployment happens when you release a software update for the +// service. For more information, see [Amazon ECS service deployments]. +// +// [Amazon ECS service deployments]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-deployments.html +func (c *Client) DescribeServiceDeployments(ctx context.Context, params *DescribeServiceDeploymentsInput, optFns ...func(*Options)) (*DescribeServiceDeploymentsOutput, error) { + if params == nil { + params = &DescribeServiceDeploymentsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeServiceDeployments", params, optFns, c.addOperationDescribeServiceDeploymentsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeServiceDeploymentsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeServiceDeploymentsInput struct { + + // The ARN of the service deployment. + // + // You can specify a maximum of 20 ARNs. + // + // This member is required. + ServiceDeploymentArns []string + + noSmithyDocumentSerde +} + +type DescribeServiceDeploymentsOutput struct { + + // Any failures associated with the call. + // + // If you decsribe a deployment with a service revision created before October 25, + // 2024, the call fails. The failure includes the service revision ARN and the + // reason set to MISSING . + Failures []types.Failure + + // The list of service deployments described. + ServiceDeployments []types.ServiceDeployment + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeServiceDeploymentsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeServiceDeployments{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeServiceDeployments{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeServiceDeployments"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDescribeServiceDeploymentsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeServiceDeployments(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeServiceDeployments(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeServiceDeployments", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceRevisions.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceRevisions.go new file mode 100644 index 000000000..7ec557f22 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServiceRevisions.go @@ -0,0 +1,175 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes one or more service revisions. +// +// A service revision is a version of the service that includes the values for the +// Amazon ECS resources (for example, task definition) and the environment +// resources (for example, load balancers, subnets, and security groups). For more +// information, see [Amazon ECS service revisions]. +// +// You can't describe a service revision that was created before October 25, 2024. +// +// [Amazon ECS service revisions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-revision.html +func (c *Client) DescribeServiceRevisions(ctx context.Context, params *DescribeServiceRevisionsInput, optFns ...func(*Options)) (*DescribeServiceRevisionsOutput, error) { + if params == nil { + params = &DescribeServiceRevisionsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeServiceRevisions", params, optFns, c.addOperationDescribeServiceRevisionsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeServiceRevisionsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeServiceRevisionsInput struct { + + // The ARN of the service revision. + // + // You can specify a maximum of 20 ARNs. + // + // You can call [ListServiceDeployments] to get the ARNs. + // + // [ListServiceDeployments]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListServiceDeployments.html + // + // This member is required. + ServiceRevisionArns []string + + noSmithyDocumentSerde +} + +type DescribeServiceRevisionsOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // The list of service revisions described. + ServiceRevisions []types.ServiceRevision + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeServiceRevisionsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeServiceRevisions{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeServiceRevisions{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeServiceRevisions"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDescribeServiceRevisionsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeServiceRevisions(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeServiceRevisions(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeServiceRevisions", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServices.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServices.go new file mode 100644 index 000000000..3ea1d3935 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeServices.go @@ -0,0 +1,650 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithytime "github.com/aws/smithy-go/time" + smithyhttp "github.com/aws/smithy-go/transport/http" + smithywaiter "github.com/aws/smithy-go/waiter" + jmespath "github.com/jmespath/go-jmespath" + "strconv" + "time" +) + +// Describes the specified services running in your cluster. +func (c *Client) DescribeServices(ctx context.Context, params *DescribeServicesInput, optFns ...func(*Options)) (*DescribeServicesOutput, error) { + if params == nil { + params = &DescribeServicesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeServices", params, optFns, c.addOperationDescribeServicesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeServicesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeServicesInput struct { + + // A list of services to describe. You may specify up to 10 services to describe + // in a single operation. + // + // This member is required. + Services []string + + // The short name or full Amazon Resource Name (ARN)the cluster that hosts the + // service to describe. If you do not specify a cluster, the default cluster is + // assumed. This parameter is required if the service or services you are + // describing were launched in any cluster other than the default cluster. + Cluster *string + + // Determines whether you want to see the resource tags for the service. If TAGS + // is specified, the tags are included in the response. If this field is omitted, + // tags aren't included in the response. + Include []types.ServiceField + + noSmithyDocumentSerde +} + +type DescribeServicesOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // The list of services described. + Services []types.Service + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeServicesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeServices{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeServices{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeServices"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDescribeServicesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeServices(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ServicesInactiveWaiterOptions are waiter options for ServicesInactiveWaiter +type ServicesInactiveWaiterOptions struct { + + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + // + // Passing options here is functionally equivalent to passing values to this + // config's ClientOptions field that extend the inner client's APIOptions directly. + APIOptions []func(*middleware.Stack) error + + // Functional options to be passed to all operations invoked by this client. + // + // Function values that modify the inner APIOptions are applied after the waiter + // config's own APIOptions modifiers. + ClientOptions []func(*Options) + + // MinDelay is the minimum amount of time to delay between retries. If unset, + // ServicesInactiveWaiter will use default minimum delay of 15 seconds. Note that + // MinDelay must resolve to a value lesser than or equal to the MaxDelay. + MinDelay time.Duration + + // MaxDelay is the maximum amount of time to delay between retries. If unset or + // set to zero, ServicesInactiveWaiter will use default max delay of 120 seconds. + // Note that MaxDelay must resolve to value greater than or equal to the MinDelay. + MaxDelay time.Duration + + // LogWaitAttempts is used to enable logging for waiter retry attempts + LogWaitAttempts bool + + // Retryable is function that can be used to override the service defined + // waiter-behavior based on operation output, or returned error. This function is + // used by the waiter to decide if a state is retryable or a terminal state. + // + // By default service-modeled logic will populate this option. This option can + // thus be used to define a custom waiter state with fall-back to service-modeled + // waiter state mutators.The function returns an error in case of a failure state. + // In case of retry state, this function returns a bool value of true and nil + // error, while in case of success it returns a bool value of false and nil error. + Retryable func(context.Context, *DescribeServicesInput, *DescribeServicesOutput, error) (bool, error) +} + +// ServicesInactiveWaiter defines the waiters for ServicesInactive +type ServicesInactiveWaiter struct { + client DescribeServicesAPIClient + + options ServicesInactiveWaiterOptions +} + +// NewServicesInactiveWaiter constructs a ServicesInactiveWaiter. +func NewServicesInactiveWaiter(client DescribeServicesAPIClient, optFns ...func(*ServicesInactiveWaiterOptions)) *ServicesInactiveWaiter { + options := ServicesInactiveWaiterOptions{} + options.MinDelay = 15 * time.Second + options.MaxDelay = 120 * time.Second + options.Retryable = servicesInactiveStateRetryable + + for _, fn := range optFns { + fn(&options) + } + return &ServicesInactiveWaiter{ + client: client, + options: options, + } +} + +// Wait calls the waiter function for ServicesInactive waiter. The maxWaitDur is +// the maximum wait duration the waiter will wait. The maxWaitDur is required and +// must be greater than zero. +func (w *ServicesInactiveWaiter) Wait(ctx context.Context, params *DescribeServicesInput, maxWaitDur time.Duration, optFns ...func(*ServicesInactiveWaiterOptions)) error { + _, err := w.WaitForOutput(ctx, params, maxWaitDur, optFns...) + return err +} + +// WaitForOutput calls the waiter function for ServicesInactive waiter and returns +// the output of the successful operation. The maxWaitDur is the maximum wait +// duration the waiter will wait. The maxWaitDur is required and must be greater +// than zero. +func (w *ServicesInactiveWaiter) WaitForOutput(ctx context.Context, params *DescribeServicesInput, maxWaitDur time.Duration, optFns ...func(*ServicesInactiveWaiterOptions)) (*DescribeServicesOutput, error) { + if maxWaitDur <= 0 { + return nil, fmt.Errorf("maximum wait time for waiter must be greater than zero") + } + + options := w.options + for _, fn := range optFns { + fn(&options) + } + + if options.MaxDelay <= 0 { + options.MaxDelay = 120 * time.Second + } + + if options.MinDelay > options.MaxDelay { + return nil, fmt.Errorf("minimum waiter delay %v must be lesser than or equal to maximum waiter delay of %v.", options.MinDelay, options.MaxDelay) + } + + ctx, cancelFn := context.WithTimeout(ctx, maxWaitDur) + defer cancelFn() + + logger := smithywaiter.Logger{} + remainingTime := maxWaitDur + + var attempt int64 + for { + + attempt++ + apiOptions := options.APIOptions + start := time.Now() + + if options.LogWaitAttempts { + logger.Attempt = attempt + apiOptions = append([]func(*middleware.Stack) error{}, options.APIOptions...) + apiOptions = append(apiOptions, logger.AddLogger) + } + + out, err := w.client.DescribeServices(ctx, params, func(o *Options) { + baseOpts := []func(*Options){ + addIsWaiterUserAgent, + } + o.APIOptions = append(o.APIOptions, apiOptions...) + for _, opt := range baseOpts { + opt(o) + } + for _, opt := range options.ClientOptions { + opt(o) + } + }) + + retryable, err := options.Retryable(ctx, params, out, err) + if err != nil { + return nil, err + } + if !retryable { + return out, nil + } + + remainingTime -= time.Since(start) + if remainingTime < options.MinDelay || remainingTime <= 0 { + break + } + + // compute exponential backoff between waiter retries + delay, err := smithywaiter.ComputeDelay( + attempt, options.MinDelay, options.MaxDelay, remainingTime, + ) + if err != nil { + return nil, fmt.Errorf("error computing waiter delay, %w", err) + } + + remainingTime -= delay + // sleep for the delay amount before invoking a request + if err := smithytime.SleepWithContext(ctx, delay); err != nil { + return nil, fmt.Errorf("request cancelled while waiting, %w", err) + } + } + return nil, fmt.Errorf("exceeded max wait time for ServicesInactive waiter") +} + +func servicesInactiveStateRetryable(ctx context.Context, input *DescribeServicesInput, output *DescribeServicesOutput, err error) (bool, error) { + + if err == nil { + pathValue, err := jmespath.Search("failures[].reason", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "MISSING" + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) == expectedValue { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + } + + if err == nil { + pathValue, err := jmespath.Search("services[].status", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "INACTIVE" + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) == expectedValue { + return false, nil + } + } + } + + return true, nil +} + +// ServicesStableWaiterOptions are waiter options for ServicesStableWaiter +type ServicesStableWaiterOptions struct { + + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + // + // Passing options here is functionally equivalent to passing values to this + // config's ClientOptions field that extend the inner client's APIOptions directly. + APIOptions []func(*middleware.Stack) error + + // Functional options to be passed to all operations invoked by this client. + // + // Function values that modify the inner APIOptions are applied after the waiter + // config's own APIOptions modifiers. + ClientOptions []func(*Options) + + // MinDelay is the minimum amount of time to delay between retries. If unset, + // ServicesStableWaiter will use default minimum delay of 15 seconds. Note that + // MinDelay must resolve to a value lesser than or equal to the MaxDelay. + MinDelay time.Duration + + // MaxDelay is the maximum amount of time to delay between retries. If unset or + // set to zero, ServicesStableWaiter will use default max delay of 120 seconds. + // Note that MaxDelay must resolve to value greater than or equal to the MinDelay. + MaxDelay time.Duration + + // LogWaitAttempts is used to enable logging for waiter retry attempts + LogWaitAttempts bool + + // Retryable is function that can be used to override the service defined + // waiter-behavior based on operation output, or returned error. This function is + // used by the waiter to decide if a state is retryable or a terminal state. + // + // By default service-modeled logic will populate this option. This option can + // thus be used to define a custom waiter state with fall-back to service-modeled + // waiter state mutators.The function returns an error in case of a failure state. + // In case of retry state, this function returns a bool value of true and nil + // error, while in case of success it returns a bool value of false and nil error. + Retryable func(context.Context, *DescribeServicesInput, *DescribeServicesOutput, error) (bool, error) +} + +// ServicesStableWaiter defines the waiters for ServicesStable +type ServicesStableWaiter struct { + client DescribeServicesAPIClient + + options ServicesStableWaiterOptions +} + +// NewServicesStableWaiter constructs a ServicesStableWaiter. +func NewServicesStableWaiter(client DescribeServicesAPIClient, optFns ...func(*ServicesStableWaiterOptions)) *ServicesStableWaiter { + options := ServicesStableWaiterOptions{} + options.MinDelay = 15 * time.Second + options.MaxDelay = 120 * time.Second + options.Retryable = servicesStableStateRetryable + + for _, fn := range optFns { + fn(&options) + } + return &ServicesStableWaiter{ + client: client, + options: options, + } +} + +// Wait calls the waiter function for ServicesStable waiter. The maxWaitDur is the +// maximum wait duration the waiter will wait. The maxWaitDur is required and must +// be greater than zero. +func (w *ServicesStableWaiter) Wait(ctx context.Context, params *DescribeServicesInput, maxWaitDur time.Duration, optFns ...func(*ServicesStableWaiterOptions)) error { + _, err := w.WaitForOutput(ctx, params, maxWaitDur, optFns...) + return err +} + +// WaitForOutput calls the waiter function for ServicesStable waiter and returns +// the output of the successful operation. The maxWaitDur is the maximum wait +// duration the waiter will wait. The maxWaitDur is required and must be greater +// than zero. +func (w *ServicesStableWaiter) WaitForOutput(ctx context.Context, params *DescribeServicesInput, maxWaitDur time.Duration, optFns ...func(*ServicesStableWaiterOptions)) (*DescribeServicesOutput, error) { + if maxWaitDur <= 0 { + return nil, fmt.Errorf("maximum wait time for waiter must be greater than zero") + } + + options := w.options + for _, fn := range optFns { + fn(&options) + } + + if options.MaxDelay <= 0 { + options.MaxDelay = 120 * time.Second + } + + if options.MinDelay > options.MaxDelay { + return nil, fmt.Errorf("minimum waiter delay %v must be lesser than or equal to maximum waiter delay of %v.", options.MinDelay, options.MaxDelay) + } + + ctx, cancelFn := context.WithTimeout(ctx, maxWaitDur) + defer cancelFn() + + logger := smithywaiter.Logger{} + remainingTime := maxWaitDur + + var attempt int64 + for { + + attempt++ + apiOptions := options.APIOptions + start := time.Now() + + if options.LogWaitAttempts { + logger.Attempt = attempt + apiOptions = append([]func(*middleware.Stack) error{}, options.APIOptions...) + apiOptions = append(apiOptions, logger.AddLogger) + } + + out, err := w.client.DescribeServices(ctx, params, func(o *Options) { + baseOpts := []func(*Options){ + addIsWaiterUserAgent, + } + o.APIOptions = append(o.APIOptions, apiOptions...) + for _, opt := range baseOpts { + opt(o) + } + for _, opt := range options.ClientOptions { + opt(o) + } + }) + + retryable, err := options.Retryable(ctx, params, out, err) + if err != nil { + return nil, err + } + if !retryable { + return out, nil + } + + remainingTime -= time.Since(start) + if remainingTime < options.MinDelay || remainingTime <= 0 { + break + } + + // compute exponential backoff between waiter retries + delay, err := smithywaiter.ComputeDelay( + attempt, options.MinDelay, options.MaxDelay, remainingTime, + ) + if err != nil { + return nil, fmt.Errorf("error computing waiter delay, %w", err) + } + + remainingTime -= delay + // sleep for the delay amount before invoking a request + if err := smithytime.SleepWithContext(ctx, delay); err != nil { + return nil, fmt.Errorf("request cancelled while waiting, %w", err) + } + } + return nil, fmt.Errorf("exceeded max wait time for ServicesStable waiter") +} + +func servicesStableStateRetryable(ctx context.Context, input *DescribeServicesInput, output *DescribeServicesOutput, err error) (bool, error) { + + if err == nil { + pathValue, err := jmespath.Search("failures[].reason", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "MISSING" + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) == expectedValue { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + } + + if err == nil { + pathValue, err := jmespath.Search("services[].status", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "DRAINING" + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) == expectedValue { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + } + + if err == nil { + pathValue, err := jmespath.Search("services[].status", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "INACTIVE" + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) == expectedValue { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + } + + if err == nil { + pathValue, err := jmespath.Search("length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "true" + bv, err := strconv.ParseBool(expectedValue) + if err != nil { + return false, fmt.Errorf("error parsing boolean from string %w", err) + } + value, ok := pathValue.(bool) + if !ok { + return false, fmt.Errorf("waiter comparator expected bool value got %T", pathValue) + } + + if value == bv { + return false, nil + } + } + + return true, nil +} + +// DescribeServicesAPIClient is a client that implements the DescribeServices +// operation. +type DescribeServicesAPIClient interface { + DescribeServices(context.Context, *DescribeServicesInput, ...func(*Options)) (*DescribeServicesOutput, error) +} + +var _ DescribeServicesAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opDescribeServices(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeServices", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskDefinition.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskDefinition.go new file mode 100644 index 000000000..8739cee27 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskDefinition.go @@ -0,0 +1,197 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes a task definition. You can specify a family and revision to find +// information about a specific task definition, or you can simply specify the +// family to find the latest ACTIVE revision in that family. +// +// You can only describe INACTIVE task definitions while an active task or service +// references them. +func (c *Client) DescribeTaskDefinition(ctx context.Context, params *DescribeTaskDefinitionInput, optFns ...func(*Options)) (*DescribeTaskDefinitionOutput, error) { + if params == nil { + params = &DescribeTaskDefinitionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeTaskDefinition", params, optFns, c.addOperationDescribeTaskDefinitionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeTaskDefinitionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeTaskDefinitionInput struct { + + // The family for the latest ACTIVE revision, family and revision ( family:revision + // ) for a specific revision in the family, or full Amazon Resource Name (ARN) of + // the task definition to describe. + // + // This member is required. + TaskDefinition *string + + // Determines whether to see the resource tags for the task definition. If TAGS is + // specified, the tags are included in the response. If this field is omitted, tags + // aren't included in the response. + Include []types.TaskDefinitionField + + noSmithyDocumentSerde +} + +type DescribeTaskDefinitionOutput struct { + + // The metadata that's applied to the task definition to help you categorize and + // organize them. Each tag consists of a key and an optional value. You define + // both. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + // The full task definition description. + TaskDefinition *types.TaskDefinition + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeTaskDefinitionMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeTaskDefinition{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeTaskDefinition{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeTaskDefinition"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDescribeTaskDefinitionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeTaskDefinition(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeTaskDefinition(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeTaskDefinition", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskSets.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskSets.go new file mode 100644 index 000000000..ac4706ab7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTaskSets.go @@ -0,0 +1,179 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Describes the task sets in the specified cluster and service. This is used when +// a service uses the EXTERNAL deployment controller type. For more information, +// see [Amazon ECS Deployment Types]in the Amazon Elastic Container Service Developer Guide. +// +// [Amazon ECS Deployment Types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html +func (c *Client) DescribeTaskSets(ctx context.Context, params *DescribeTaskSetsInput, optFns ...func(*Options)) (*DescribeTaskSetsOutput, error) { + if params == nil { + params = &DescribeTaskSetsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeTaskSets", params, optFns, c.addOperationDescribeTaskSetsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeTaskSetsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeTaskSetsInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service that the task sets exist in. + // + // This member is required. + Cluster *string + + // The short name or full Amazon Resource Name (ARN) of the service that the task + // sets exist in. + // + // This member is required. + Service *string + + // Specifies whether to see the resource tags for the task set. If TAGS is + // specified, the tags are included in the response. If this field is omitted, tags + // aren't included in the response. + Include []types.TaskSetField + + // The ID or full Amazon Resource Name (ARN) of task sets to describe. + TaskSets []string + + noSmithyDocumentSerde +} + +type DescribeTaskSetsOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // The list of task sets described. + TaskSets []types.TaskSet + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeTaskSetsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeTaskSets{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeTaskSets{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeTaskSets"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDescribeTaskSetsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeTaskSets(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDescribeTaskSets(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeTaskSets", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTasks.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTasks.go new file mode 100644 index 000000000..0a7437567 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DescribeTasks.go @@ -0,0 +1,622 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithytime "github.com/aws/smithy-go/time" + smithyhttp "github.com/aws/smithy-go/transport/http" + smithywaiter "github.com/aws/smithy-go/waiter" + jmespath "github.com/jmespath/go-jmespath" + "time" +) + +// Describes a specified task or tasks. +// +// Currently, stopped tasks appear in the returned results for at least one hour. +// +// If you have tasks with tags, and then delete the cluster, the tagged tasks are +// returned in the response. If you create a new cluster with the same name as the +// deleted cluster, the tagged tasks are not included in the response. +func (c *Client) DescribeTasks(ctx context.Context, params *DescribeTasksInput, optFns ...func(*Options)) (*DescribeTasksOutput, error) { + if params == nil { + params = &DescribeTasksInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DescribeTasks", params, optFns, c.addOperationDescribeTasksMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DescribeTasksOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DescribeTasksInput struct { + + // A list of up to 100 task IDs or full ARN entries. + // + // This member is required. + Tasks []string + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // task or tasks to describe. If you do not specify a cluster, the default cluster + // is assumed. This parameter is required. If you do not specify a value, the + // default cluster is used. + Cluster *string + + // Specifies whether you want to see the resource tags for the task. If TAGS is + // specified, the tags are included in the response. If this field is omitted, tags + // aren't included in the response. + Include []types.TaskField + + noSmithyDocumentSerde +} + +type DescribeTasksOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // The list of tasks. + Tasks []types.Task + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDescribeTasksMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDescribeTasks{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDescribeTasks{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DescribeTasks"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpDescribeTasksValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDescribeTasks(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// TasksRunningWaiterOptions are waiter options for TasksRunningWaiter +type TasksRunningWaiterOptions struct { + + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + // + // Passing options here is functionally equivalent to passing values to this + // config's ClientOptions field that extend the inner client's APIOptions directly. + APIOptions []func(*middleware.Stack) error + + // Functional options to be passed to all operations invoked by this client. + // + // Function values that modify the inner APIOptions are applied after the waiter + // config's own APIOptions modifiers. + ClientOptions []func(*Options) + + // MinDelay is the minimum amount of time to delay between retries. If unset, + // TasksRunningWaiter will use default minimum delay of 6 seconds. Note that + // MinDelay must resolve to a value lesser than or equal to the MaxDelay. + MinDelay time.Duration + + // MaxDelay is the maximum amount of time to delay between retries. If unset or + // set to zero, TasksRunningWaiter will use default max delay of 120 seconds. Note + // that MaxDelay must resolve to value greater than or equal to the MinDelay. + MaxDelay time.Duration + + // LogWaitAttempts is used to enable logging for waiter retry attempts + LogWaitAttempts bool + + // Retryable is function that can be used to override the service defined + // waiter-behavior based on operation output, or returned error. This function is + // used by the waiter to decide if a state is retryable or a terminal state. + // + // By default service-modeled logic will populate this option. This option can + // thus be used to define a custom waiter state with fall-back to service-modeled + // waiter state mutators.The function returns an error in case of a failure state. + // In case of retry state, this function returns a bool value of true and nil + // error, while in case of success it returns a bool value of false and nil error. + Retryable func(context.Context, *DescribeTasksInput, *DescribeTasksOutput, error) (bool, error) +} + +// TasksRunningWaiter defines the waiters for TasksRunning +type TasksRunningWaiter struct { + client DescribeTasksAPIClient + + options TasksRunningWaiterOptions +} + +// NewTasksRunningWaiter constructs a TasksRunningWaiter. +func NewTasksRunningWaiter(client DescribeTasksAPIClient, optFns ...func(*TasksRunningWaiterOptions)) *TasksRunningWaiter { + options := TasksRunningWaiterOptions{} + options.MinDelay = 6 * time.Second + options.MaxDelay = 120 * time.Second + options.Retryable = tasksRunningStateRetryable + + for _, fn := range optFns { + fn(&options) + } + return &TasksRunningWaiter{ + client: client, + options: options, + } +} + +// Wait calls the waiter function for TasksRunning waiter. The maxWaitDur is the +// maximum wait duration the waiter will wait. The maxWaitDur is required and must +// be greater than zero. +func (w *TasksRunningWaiter) Wait(ctx context.Context, params *DescribeTasksInput, maxWaitDur time.Duration, optFns ...func(*TasksRunningWaiterOptions)) error { + _, err := w.WaitForOutput(ctx, params, maxWaitDur, optFns...) + return err +} + +// WaitForOutput calls the waiter function for TasksRunning waiter and returns the +// output of the successful operation. The maxWaitDur is the maximum wait duration +// the waiter will wait. The maxWaitDur is required and must be greater than zero. +func (w *TasksRunningWaiter) WaitForOutput(ctx context.Context, params *DescribeTasksInput, maxWaitDur time.Duration, optFns ...func(*TasksRunningWaiterOptions)) (*DescribeTasksOutput, error) { + if maxWaitDur <= 0 { + return nil, fmt.Errorf("maximum wait time for waiter must be greater than zero") + } + + options := w.options + for _, fn := range optFns { + fn(&options) + } + + if options.MaxDelay <= 0 { + options.MaxDelay = 120 * time.Second + } + + if options.MinDelay > options.MaxDelay { + return nil, fmt.Errorf("minimum waiter delay %v must be lesser than or equal to maximum waiter delay of %v.", options.MinDelay, options.MaxDelay) + } + + ctx, cancelFn := context.WithTimeout(ctx, maxWaitDur) + defer cancelFn() + + logger := smithywaiter.Logger{} + remainingTime := maxWaitDur + + var attempt int64 + for { + + attempt++ + apiOptions := options.APIOptions + start := time.Now() + + if options.LogWaitAttempts { + logger.Attempt = attempt + apiOptions = append([]func(*middleware.Stack) error{}, options.APIOptions...) + apiOptions = append(apiOptions, logger.AddLogger) + } + + out, err := w.client.DescribeTasks(ctx, params, func(o *Options) { + baseOpts := []func(*Options){ + addIsWaiterUserAgent, + } + o.APIOptions = append(o.APIOptions, apiOptions...) + for _, opt := range baseOpts { + opt(o) + } + for _, opt := range options.ClientOptions { + opt(o) + } + }) + + retryable, err := options.Retryable(ctx, params, out, err) + if err != nil { + return nil, err + } + if !retryable { + return out, nil + } + + remainingTime -= time.Since(start) + if remainingTime < options.MinDelay || remainingTime <= 0 { + break + } + + // compute exponential backoff between waiter retries + delay, err := smithywaiter.ComputeDelay( + attempt, options.MinDelay, options.MaxDelay, remainingTime, + ) + if err != nil { + return nil, fmt.Errorf("error computing waiter delay, %w", err) + } + + remainingTime -= delay + // sleep for the delay amount before invoking a request + if err := smithytime.SleepWithContext(ctx, delay); err != nil { + return nil, fmt.Errorf("request cancelled while waiting, %w", err) + } + } + return nil, fmt.Errorf("exceeded max wait time for TasksRunning waiter") +} + +func tasksRunningStateRetryable(ctx context.Context, input *DescribeTasksInput, output *DescribeTasksOutput, err error) (bool, error) { + + if err == nil { + pathValue, err := jmespath.Search("tasks[].lastStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "STOPPED" + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) == expectedValue { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + } + + if err == nil { + pathValue, err := jmespath.Search("failures[].reason", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "MISSING" + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) == expectedValue { + return false, fmt.Errorf("waiter state transitioned to Failure") + } + } + } + + if err == nil { + pathValue, err := jmespath.Search("tasks[].lastStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "RUNNING" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + return true, nil +} + +// TasksStoppedWaiterOptions are waiter options for TasksStoppedWaiter +type TasksStoppedWaiterOptions struct { + + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + // + // Passing options here is functionally equivalent to passing values to this + // config's ClientOptions field that extend the inner client's APIOptions directly. + APIOptions []func(*middleware.Stack) error + + // Functional options to be passed to all operations invoked by this client. + // + // Function values that modify the inner APIOptions are applied after the waiter + // config's own APIOptions modifiers. + ClientOptions []func(*Options) + + // MinDelay is the minimum amount of time to delay between retries. If unset, + // TasksStoppedWaiter will use default minimum delay of 6 seconds. Note that + // MinDelay must resolve to a value lesser than or equal to the MaxDelay. + MinDelay time.Duration + + // MaxDelay is the maximum amount of time to delay between retries. If unset or + // set to zero, TasksStoppedWaiter will use default max delay of 120 seconds. Note + // that MaxDelay must resolve to value greater than or equal to the MinDelay. + MaxDelay time.Duration + + // LogWaitAttempts is used to enable logging for waiter retry attempts + LogWaitAttempts bool + + // Retryable is function that can be used to override the service defined + // waiter-behavior based on operation output, or returned error. This function is + // used by the waiter to decide if a state is retryable or a terminal state. + // + // By default service-modeled logic will populate this option. This option can + // thus be used to define a custom waiter state with fall-back to service-modeled + // waiter state mutators.The function returns an error in case of a failure state. + // In case of retry state, this function returns a bool value of true and nil + // error, while in case of success it returns a bool value of false and nil error. + Retryable func(context.Context, *DescribeTasksInput, *DescribeTasksOutput, error) (bool, error) +} + +// TasksStoppedWaiter defines the waiters for TasksStopped +type TasksStoppedWaiter struct { + client DescribeTasksAPIClient + + options TasksStoppedWaiterOptions +} + +// NewTasksStoppedWaiter constructs a TasksStoppedWaiter. +func NewTasksStoppedWaiter(client DescribeTasksAPIClient, optFns ...func(*TasksStoppedWaiterOptions)) *TasksStoppedWaiter { + options := TasksStoppedWaiterOptions{} + options.MinDelay = 6 * time.Second + options.MaxDelay = 120 * time.Second + options.Retryable = tasksStoppedStateRetryable + + for _, fn := range optFns { + fn(&options) + } + return &TasksStoppedWaiter{ + client: client, + options: options, + } +} + +// Wait calls the waiter function for TasksStopped waiter. The maxWaitDur is the +// maximum wait duration the waiter will wait. The maxWaitDur is required and must +// be greater than zero. +func (w *TasksStoppedWaiter) Wait(ctx context.Context, params *DescribeTasksInput, maxWaitDur time.Duration, optFns ...func(*TasksStoppedWaiterOptions)) error { + _, err := w.WaitForOutput(ctx, params, maxWaitDur, optFns...) + return err +} + +// WaitForOutput calls the waiter function for TasksStopped waiter and returns the +// output of the successful operation. The maxWaitDur is the maximum wait duration +// the waiter will wait. The maxWaitDur is required and must be greater than zero. +func (w *TasksStoppedWaiter) WaitForOutput(ctx context.Context, params *DescribeTasksInput, maxWaitDur time.Duration, optFns ...func(*TasksStoppedWaiterOptions)) (*DescribeTasksOutput, error) { + if maxWaitDur <= 0 { + return nil, fmt.Errorf("maximum wait time for waiter must be greater than zero") + } + + options := w.options + for _, fn := range optFns { + fn(&options) + } + + if options.MaxDelay <= 0 { + options.MaxDelay = 120 * time.Second + } + + if options.MinDelay > options.MaxDelay { + return nil, fmt.Errorf("minimum waiter delay %v must be lesser than or equal to maximum waiter delay of %v.", options.MinDelay, options.MaxDelay) + } + + ctx, cancelFn := context.WithTimeout(ctx, maxWaitDur) + defer cancelFn() + + logger := smithywaiter.Logger{} + remainingTime := maxWaitDur + + var attempt int64 + for { + + attempt++ + apiOptions := options.APIOptions + start := time.Now() + + if options.LogWaitAttempts { + logger.Attempt = attempt + apiOptions = append([]func(*middleware.Stack) error{}, options.APIOptions...) + apiOptions = append(apiOptions, logger.AddLogger) + } + + out, err := w.client.DescribeTasks(ctx, params, func(o *Options) { + baseOpts := []func(*Options){ + addIsWaiterUserAgent, + } + o.APIOptions = append(o.APIOptions, apiOptions...) + for _, opt := range baseOpts { + opt(o) + } + for _, opt := range options.ClientOptions { + opt(o) + } + }) + + retryable, err := options.Retryable(ctx, params, out, err) + if err != nil { + return nil, err + } + if !retryable { + return out, nil + } + + remainingTime -= time.Since(start) + if remainingTime < options.MinDelay || remainingTime <= 0 { + break + } + + // compute exponential backoff between waiter retries + delay, err := smithywaiter.ComputeDelay( + attempt, options.MinDelay, options.MaxDelay, remainingTime, + ) + if err != nil { + return nil, fmt.Errorf("error computing waiter delay, %w", err) + } + + remainingTime -= delay + // sleep for the delay amount before invoking a request + if err := smithytime.SleepWithContext(ctx, delay); err != nil { + return nil, fmt.Errorf("request cancelled while waiting, %w", err) + } + } + return nil, fmt.Errorf("exceeded max wait time for TasksStopped waiter") +} + +func tasksStoppedStateRetryable(ctx context.Context, input *DescribeTasksInput, output *DescribeTasksOutput, err error) (bool, error) { + + if err == nil { + pathValue, err := jmespath.Search("tasks[].lastStatus", output) + if err != nil { + return false, fmt.Errorf("error evaluating waiter state: %w", err) + } + + expectedValue := "STOPPED" + var match = true + listOfValues, ok := pathValue.([]interface{}) + if !ok { + return false, fmt.Errorf("waiter comparator expected list got %T", pathValue) + } + + if len(listOfValues) == 0 { + match = false + } + for _, v := range listOfValues { + value, ok := v.(*string) + if !ok { + return false, fmt.Errorf("waiter comparator expected *string value, got %T", pathValue) + } + + if string(*value) != expectedValue { + match = false + } + } + + if match { + return false, nil + } + } + + return true, nil +} + +// DescribeTasksAPIClient is a client that implements the DescribeTasks operation. +type DescribeTasksAPIClient interface { + DescribeTasks(context.Context, *DescribeTasksInput, ...func(*Options)) (*DescribeTasksOutput, error) +} + +var _ DescribeTasksAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opDescribeTasks(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DescribeTasks", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DiscoverPollEndpoint.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DiscoverPollEndpoint.go new file mode 100644 index 000000000..1890814c1 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_DiscoverPollEndpoint.go @@ -0,0 +1,171 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This action is only used by the Amazon ECS agent, and it is not intended for +// use outside of the agent. +// +// Returns an endpoint for the Amazon ECS agent to poll for updates. +func (c *Client) DiscoverPollEndpoint(ctx context.Context, params *DiscoverPollEndpointInput, optFns ...func(*Options)) (*DiscoverPollEndpointOutput, error) { + if params == nil { + params = &DiscoverPollEndpointInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "DiscoverPollEndpoint", params, optFns, c.addOperationDiscoverPollEndpointMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*DiscoverPollEndpointOutput) + out.ResultMetadata = metadata + return out, nil +} + +type DiscoverPollEndpointInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that the + // container instance belongs to. + Cluster *string + + // The container instance ID or full ARN of the container instance. For more + // information about the ARN format, see [Amazon Resource Name (ARN)]in the Amazon ECS Developer Guide. + // + // [Amazon Resource Name (ARN)]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + ContainerInstance *string + + noSmithyDocumentSerde +} + +type DiscoverPollEndpointOutput struct { + + // The endpoint for the Amazon ECS agent to poll. + Endpoint *string + + // The endpoint for the Amazon ECS agent to poll for Service Connect + // configuration. For more information, see [Service Connect]in the Amazon Elastic Container + // Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectEndpoint *string + + // The telemetry endpoint for the Amazon ECS agent. + TelemetryEndpoint *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationDiscoverPollEndpointMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpDiscoverPollEndpoint{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpDiscoverPollEndpoint{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "DiscoverPollEndpoint"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opDiscoverPollEndpoint(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opDiscoverPollEndpoint(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "DiscoverPollEndpoint", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ExecuteCommand.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ExecuteCommand.go new file mode 100644 index 000000000..1ad97aee6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ExecuteCommand.go @@ -0,0 +1,203 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Runs a command remotely on a container within a task. +// +// If you use a condition key in your IAM policy to refine the conditions for the +// policy statement, for example limit the actions to a specific cluster, you +// receive an AccessDeniedException when there is a mismatch between the condition +// key value and the corresponding parameter value. +// +// For information about required permissions and considerations, see [Using Amazon ECS Exec for debugging] in the +// Amazon ECS Developer Guide. +// +// [Using Amazon ECS Exec for debugging]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html +func (c *Client) ExecuteCommand(ctx context.Context, params *ExecuteCommandInput, optFns ...func(*Options)) (*ExecuteCommandOutput, error) { + if params == nil { + params = &ExecuteCommandInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ExecuteCommand", params, optFns, c.addOperationExecuteCommandMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ExecuteCommandOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ExecuteCommandInput struct { + + // The command to run on the container. + // + // This member is required. + Command *string + + // Use this flag to run your command in interactive mode. + // + // This member is required. + Interactive bool + + // The Amazon Resource Name (ARN) or ID of the task the container is part of. + // + // This member is required. + Task *string + + // The Amazon Resource Name (ARN) or short name of the cluster the task is running + // in. If you do not specify a cluster, the default cluster is assumed. + Cluster *string + + // The name of the container to execute the command on. A container name only + // needs to be specified for tasks containing multiple containers. + Container *string + + noSmithyDocumentSerde +} + +type ExecuteCommandOutput struct { + + // The Amazon Resource Name (ARN) of the cluster. + ClusterArn *string + + // The Amazon Resource Name (ARN) of the container. + ContainerArn *string + + // The name of the container. + ContainerName *string + + // Determines whether the execute command session is running in interactive mode. + // Amazon ECS only supports initiating interactive sessions, so you must specify + // true for this value. + Interactive bool + + // The details of the SSM session that was created for this instance of + // execute-command. + Session *types.Session + + // The Amazon Resource Name (ARN) of the task. + TaskArn *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationExecuteCommandMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpExecuteCommand{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpExecuteCommand{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ExecuteCommand"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpExecuteCommandValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opExecuteCommand(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opExecuteCommand(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ExecuteCommand", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_GetTaskProtection.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_GetTaskProtection.go new file mode 100644 index 000000000..cc23bfaad --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_GetTaskProtection.go @@ -0,0 +1,172 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Retrieves the protection status of tasks in an Amazon ECS service. +func (c *Client) GetTaskProtection(ctx context.Context, params *GetTaskProtectionInput, optFns ...func(*Options)) (*GetTaskProtectionOutput, error) { + if params == nil { + params = &GetTaskProtectionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "GetTaskProtection", params, optFns, c.addOperationGetTaskProtectionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*GetTaskProtectionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type GetTaskProtectionInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service that the task sets exist in. + // + // This member is required. + Cluster *string + + // A list of up to 100 task IDs or full ARN entries. + Tasks []string + + noSmithyDocumentSerde +} + +type GetTaskProtectionOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // A list of tasks with the following information. + // + // - taskArn : The task ARN. + // + // - protectionEnabled : The protection status of the task. If scale-in + // protection is turned on for a task, the value is true . Otherwise, it is false + // . + // + // - expirationDate : The epoch time when protection for the task will expire. + ProtectedTasks []types.ProtectedTask + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationGetTaskProtectionMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpGetTaskProtection{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpGetTaskProtection{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "GetTaskProtection"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpGetTaskProtectionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opGetTaskProtection(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opGetTaskProtection(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "GetTaskProtection", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAccountSettings.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAccountSettings.go new file mode 100644 index 000000000..71d5a1fe4 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAccountSettings.go @@ -0,0 +1,292 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the account settings for a specified principal. +func (c *Client) ListAccountSettings(ctx context.Context, params *ListAccountSettingsInput, optFns ...func(*Options)) (*ListAccountSettingsOutput, error) { + if params == nil { + params = &ListAccountSettingsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAccountSettings", params, optFns, c.addOperationListAccountSettingsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAccountSettingsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAccountSettingsInput struct { + + // Determines whether to return the effective settings. If true , the account + // settings for the root user or the default setting for the principalArn are + // returned. If false , the account settings for the principalArn are returned if + // they're set. Otherwise, no account settings are returned. + EffectiveSettings bool + + // The maximum number of account setting results returned by ListAccountSettings + // in paginated output. When this parameter is used, ListAccountSettings only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListAccountSettings request with the returned nextToken value. This + // value can be between 1 and 10. If this parameter isn't used, then + // ListAccountSettings returns up to 10 results and a nextToken value if + // applicable. + MaxResults int32 + + // The name of the account setting you want to list the settings for. + Name types.SettingName + + // The nextToken value returned from a ListAccountSettings request indicating that + // more results are available to fulfill the request and further calls will be + // needed. If maxResults was provided, it's possible the number of results to be + // fewer than maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + // The ARN of the principal, which can be a user, role, or the root user. If this + // field is omitted, the account settings are listed only for the authenticated + // user. + // + // Federated users assume the account setting of the root user and can't have + // explicit account settings set for them. + PrincipalArn *string + + // The value of the account settings to filter results with. You must also specify + // an account setting name to use this parameter. + Value *string + + noSmithyDocumentSerde +} + +type ListAccountSettingsOutput struct { + + // The nextToken value to include in a future ListAccountSettings request. When + // the results of a ListAccountSettings request exceed maxResults , this value can + // be used to retrieve the next page of results. This value is null when there are + // no more results to return. + NextToken *string + + // The account settings for the resource. + Settings []types.Setting + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAccountSettingsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListAccountSettings{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListAccountSettings{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListAccountSettings"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAccountSettings(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListAccountSettingsPaginatorOptions is the paginator options for +// ListAccountSettings +type ListAccountSettingsPaginatorOptions struct { + // The maximum number of account setting results returned by ListAccountSettings + // in paginated output. When this parameter is used, ListAccountSettings only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListAccountSettings request with the returned nextToken value. This + // value can be between 1 and 10. If this parameter isn't used, then + // ListAccountSettings returns up to 10 results and a nextToken value if + // applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAccountSettingsPaginator is a paginator for ListAccountSettings +type ListAccountSettingsPaginator struct { + options ListAccountSettingsPaginatorOptions + client ListAccountSettingsAPIClient + params *ListAccountSettingsInput + nextToken *string + firstPage bool +} + +// NewListAccountSettingsPaginator returns a new ListAccountSettingsPaginator +func NewListAccountSettingsPaginator(client ListAccountSettingsAPIClient, params *ListAccountSettingsInput, optFns ...func(*ListAccountSettingsPaginatorOptions)) *ListAccountSettingsPaginator { + if params == nil { + params = &ListAccountSettingsInput{} + } + + options := ListAccountSettingsPaginatorOptions{} + if params.MaxResults != 0 { + options.Limit = params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListAccountSettingsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAccountSettingsPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListAccountSettings page. +func (p *ListAccountSettingsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAccountSettingsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + params.MaxResults = p.options.Limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListAccountSettings(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListAccountSettingsAPIClient is a client that implements the +// ListAccountSettings operation. +type ListAccountSettingsAPIClient interface { + ListAccountSettings(context.Context, *ListAccountSettingsInput, ...func(*Options)) (*ListAccountSettingsOutput, error) +} + +var _ ListAccountSettingsAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListAccountSettings(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListAccountSettings", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAttributes.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAttributes.go new file mode 100644 index 000000000..6eb4b0773 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListAttributes.go @@ -0,0 +1,297 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Lists the attributes for Amazon ECS resources within a specified target type +// and cluster. When you specify a target type and cluster, ListAttributes returns +// a list of attribute objects, one for each attribute on each resource. You can +// filter the list of results to a single attribute name to only return results +// that have that name. You can also filter the results by attribute name and +// value. You can do this, for example, to see which container instances in a +// cluster are running a Linux AMI ( ecs.os-type=linux ). +func (c *Client) ListAttributes(ctx context.Context, params *ListAttributesInput, optFns ...func(*Options)) (*ListAttributesOutput, error) { + if params == nil { + params = &ListAttributesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListAttributes", params, optFns, c.addOperationListAttributesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListAttributesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListAttributesInput struct { + + // The type of the target to list attributes with. + // + // This member is required. + TargetType types.TargetType + + // The name of the attribute to filter the results with. + AttributeName *string + + // The value of the attribute to filter results with. You must also specify an + // attribute name to use this parameter. + AttributeValue *string + + // The short name or full Amazon Resource Name (ARN) of the cluster to list + // attributes. If you do not specify a cluster, the default cluster is assumed. + Cluster *string + + // The maximum number of cluster results that ListAttributes returned in paginated + // output. When this parameter is used, ListAttributes only returns maxResults + // results in a single page along with a nextToken response element. The remaining + // results of the initial request can be seen by sending another ListAttributes + // request with the returned nextToken value. This value can be between 1 and 100. + // If this parameter isn't used, then ListAttributes returns up to 100 results and + // a nextToken value if applicable. + MaxResults *int32 + + // The nextToken value returned from a ListAttributes request indicating that more + // results are available to fulfill the request and further calls are needed. If + // maxResults was provided, it's possible the number of results to be fewer than + // maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + noSmithyDocumentSerde +} + +type ListAttributesOutput struct { + + // A list of attribute objects that meet the criteria of the request. + Attributes []types.Attribute + + // The nextToken value to include in a future ListAttributes request. When the + // results of a ListAttributes request exceed maxResults , this value can be used + // to retrieve the next page of results. This value is null when there are no more + // results to return. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListAttributesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListAttributes{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListAttributes{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListAttributes"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpListAttributesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListAttributes(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListAttributesPaginatorOptions is the paginator options for ListAttributes +type ListAttributesPaginatorOptions struct { + // The maximum number of cluster results that ListAttributes returned in paginated + // output. When this parameter is used, ListAttributes only returns maxResults + // results in a single page along with a nextToken response element. The remaining + // results of the initial request can be seen by sending another ListAttributes + // request with the returned nextToken value. This value can be between 1 and 100. + // If this parameter isn't used, then ListAttributes returns up to 100 results and + // a nextToken value if applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListAttributesPaginator is a paginator for ListAttributes +type ListAttributesPaginator struct { + options ListAttributesPaginatorOptions + client ListAttributesAPIClient + params *ListAttributesInput + nextToken *string + firstPage bool +} + +// NewListAttributesPaginator returns a new ListAttributesPaginator +func NewListAttributesPaginator(client ListAttributesAPIClient, params *ListAttributesInput, optFns ...func(*ListAttributesPaginatorOptions)) *ListAttributesPaginator { + if params == nil { + params = &ListAttributesInput{} + } + + options := ListAttributesPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListAttributesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListAttributesPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListAttributes page. +func (p *ListAttributesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListAttributesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListAttributes(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListAttributesAPIClient is a client that implements the ListAttributes +// operation. +type ListAttributesAPIClient interface { + ListAttributes(context.Context, *ListAttributesInput, ...func(*Options)) (*ListAttributesOutput, error) +} + +var _ ListAttributesAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListAttributes(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListAttributes", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListClusters.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListClusters.go new file mode 100644 index 000000000..d712b4dce --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListClusters.go @@ -0,0 +1,271 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns a list of existing clusters. +func (c *Client) ListClusters(ctx context.Context, params *ListClustersInput, optFns ...func(*Options)) (*ListClustersOutput, error) { + if params == nil { + params = &ListClustersInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListClusters", params, optFns, c.addOperationListClustersMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListClustersOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListClustersInput struct { + + // The maximum number of cluster results that ListClusters returned in paginated + // output. When this parameter is used, ListClusters only returns maxResults + // results in a single page along with a nextToken response element. The remaining + // results of the initial request can be seen by sending another ListClusters + // request with the returned nextToken value. This value can be between 1 and 100. + // If this parameter isn't used, then ListClusters returns up to 100 results and a + // nextToken value if applicable. + MaxResults *int32 + + // The nextToken value returned from a ListClusters request indicating that more + // results are available to fulfill the request and further calls are needed. If + // maxResults was provided, it's possible the number of results to be fewer than + // maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + noSmithyDocumentSerde +} + +type ListClustersOutput struct { + + // The list of full Amazon Resource Name (ARN) entries for each cluster that's + // associated with your account. + ClusterArns []string + + // The nextToken value to include in a future ListClusters request. When the + // results of a ListClusters request exceed maxResults , this value can be used to + // retrieve the next page of results. This value is null when there are no more + // results to return. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListClustersMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListClusters{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListClusters{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListClusters"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListClusters(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListClustersPaginatorOptions is the paginator options for ListClusters +type ListClustersPaginatorOptions struct { + // The maximum number of cluster results that ListClusters returned in paginated + // output. When this parameter is used, ListClusters only returns maxResults + // results in a single page along with a nextToken response element. The remaining + // results of the initial request can be seen by sending another ListClusters + // request with the returned nextToken value. This value can be between 1 and 100. + // If this parameter isn't used, then ListClusters returns up to 100 results and a + // nextToken value if applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListClustersPaginator is a paginator for ListClusters +type ListClustersPaginator struct { + options ListClustersPaginatorOptions + client ListClustersAPIClient + params *ListClustersInput + nextToken *string + firstPage bool +} + +// NewListClustersPaginator returns a new ListClustersPaginator +func NewListClustersPaginator(client ListClustersAPIClient, params *ListClustersInput, optFns ...func(*ListClustersPaginatorOptions)) *ListClustersPaginator { + if params == nil { + params = &ListClustersInput{} + } + + options := ListClustersPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListClustersPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListClustersPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListClusters page. +func (p *ListClustersPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListClustersOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListClusters(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListClustersAPIClient is a client that implements the ListClusters operation. +type ListClustersAPIClient interface { + ListClusters(context.Context, *ListClustersInput, ...func(*Options)) (*ListClustersOutput, error) +} + +var _ ListClustersAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListClusters(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListClusters", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListContainerInstances.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListContainerInstances.go new file mode 100644 index 000000000..710350444 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListContainerInstances.go @@ -0,0 +1,301 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns a list of container instances in a specified cluster. You can filter +// the results of a ListContainerInstances operation with cluster query language +// statements inside the filter parameter. For more information, see [Cluster Query Language] in the +// Amazon Elastic Container Service Developer Guide. +// +// [Cluster Query Language]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html +func (c *Client) ListContainerInstances(ctx context.Context, params *ListContainerInstancesInput, optFns ...func(*Options)) (*ListContainerInstancesOutput, error) { + if params == nil { + params = &ListContainerInstancesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListContainerInstances", params, optFns, c.addOperationListContainerInstancesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListContainerInstancesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListContainerInstancesInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // container instances to list. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + // You can filter the results of a ListContainerInstances operation with cluster + // query language statements. For more information, see [Cluster Query Language]in the Amazon Elastic + // Container Service Developer Guide. + // + // [Cluster Query Language]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html + Filter *string + + // The maximum number of container instance results that ListContainerInstances + // returned in paginated output. When this parameter is used, + // ListContainerInstances only returns maxResults results in a single page along + // with a nextToken response element. The remaining results of the initial request + // can be seen by sending another ListContainerInstances request with the returned + // nextToken value. This value can be between 1 and 100. If this parameter isn't + // used, then ListContainerInstances returns up to 100 results and a nextToken + // value if applicable. + MaxResults *int32 + + // The nextToken value returned from a ListContainerInstances request indicating + // that more results are available to fulfill the request and further calls are + // needed. If maxResults was provided, it's possible the number of results to be + // fewer than maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + // Filters the container instances by status. For example, if you specify the + // DRAINING status, the results include only container instances that have been set + // to DRAINING using [UpdateContainerInstancesState]. If you don't specify this parameter, the default is to + // include container instances set to all states other than INACTIVE . + // + // [UpdateContainerInstancesState]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateContainerInstancesState.html + Status types.ContainerInstanceStatus + + noSmithyDocumentSerde +} + +type ListContainerInstancesOutput struct { + + // The list of container instances with full ARN entries for each container + // instance associated with the specified cluster. + ContainerInstanceArns []string + + // The nextToken value to include in a future ListContainerInstances request. When + // the results of a ListContainerInstances request exceed maxResults , this value + // can be used to retrieve the next page of results. This value is null when there + // are no more results to return. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListContainerInstancesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListContainerInstances{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListContainerInstances{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListContainerInstances"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListContainerInstances(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListContainerInstancesPaginatorOptions is the paginator options for +// ListContainerInstances +type ListContainerInstancesPaginatorOptions struct { + // The maximum number of container instance results that ListContainerInstances + // returned in paginated output. When this parameter is used, + // ListContainerInstances only returns maxResults results in a single page along + // with a nextToken response element. The remaining results of the initial request + // can be seen by sending another ListContainerInstances request with the returned + // nextToken value. This value can be between 1 and 100. If this parameter isn't + // used, then ListContainerInstances returns up to 100 results and a nextToken + // value if applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListContainerInstancesPaginator is a paginator for ListContainerInstances +type ListContainerInstancesPaginator struct { + options ListContainerInstancesPaginatorOptions + client ListContainerInstancesAPIClient + params *ListContainerInstancesInput + nextToken *string + firstPage bool +} + +// NewListContainerInstancesPaginator returns a new ListContainerInstancesPaginator +func NewListContainerInstancesPaginator(client ListContainerInstancesAPIClient, params *ListContainerInstancesInput, optFns ...func(*ListContainerInstancesPaginatorOptions)) *ListContainerInstancesPaginator { + if params == nil { + params = &ListContainerInstancesInput{} + } + + options := ListContainerInstancesPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListContainerInstancesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListContainerInstancesPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListContainerInstances page. +func (p *ListContainerInstancesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListContainerInstancesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListContainerInstances(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListContainerInstancesAPIClient is a client that implements the +// ListContainerInstances operation. +type ListContainerInstancesAPIClient interface { + ListContainerInstances(context.Context, *ListContainerInstancesInput, ...func(*Options)) (*ListContainerInstancesOutput, error) +} + +var _ ListContainerInstancesAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListContainerInstances(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListContainerInstances", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServiceDeployments.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServiceDeployments.go new file mode 100644 index 000000000..3e7d782a6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServiceDeployments.go @@ -0,0 +1,220 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This operation lists all the service deployments that meet the specified filter +// criteria. +// +// A service deployment happens when you release a softwre update for the service. +// You route traffic from the running service revisions to the new service revison +// and control the number of running tasks. +// +// This API returns the values that you use for the request parameters in [DescribeServiceRevisions]. +// +// [DescribeServiceRevisions]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeServiceRevisions.html +func (c *Client) ListServiceDeployments(ctx context.Context, params *ListServiceDeploymentsInput, optFns ...func(*Options)) (*ListServiceDeploymentsOutput, error) { + if params == nil { + params = &ListServiceDeploymentsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListServiceDeployments", params, optFns, c.addOperationListServiceDeploymentsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListServiceDeploymentsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListServiceDeploymentsInput struct { + + // The ARN or name of the service + // + // This member is required. + Service *string + + // The cluster that hosts the service. This can either be the cluster name or ARN. + // Starting April 15, 2023, Amazon Web Services will not onboard new customers to + // Amazon Elastic Inference (EI), and will help current customers migrate their + // workloads to options that offer better price and performance. If you don't + // specify a cluster, default is used. + Cluster *string + + // An optional filter you can use to narrow the results by the service creation + // date. If you do not specify a value, the result includes all services created + // before the current time. The format is yyyy-MM-dd HH:mm:ss.SSSSSS. + CreatedAt *types.CreatedAt + + // The maximum number of service deployment results that ListServiceDeployments + // returned in paginated output. When this parameter is used, + // ListServiceDeployments only returns maxResults results in a single page along + // with a nextToken response element. The remaining results of the initial request + // can be seen by sending another ListServiceDeployments request with the returned + // nextToken value. This value can be between 1 and 100. If this parameter isn't + // used, then ListServiceDeployments returns up to 20 results and a nextToken + // value if applicable. + MaxResults *int32 + + // The nextToken value returned from a ListServiceDeployments request indicating + // that more results are available to fulfill the request and further calls are + // needed. If you provided maxResults , it's possible the number of results is + // fewer than maxResults . + NextToken *string + + // An optional filter you can use to narrow the results. If you do not specify a + // status, then all status values are included in the result. + Status []types.ServiceDeploymentStatus + + noSmithyDocumentSerde +} + +type ListServiceDeploymentsOutput struct { + + // The nextToken value to include in a future ListServiceDeployments request. When + // the results of a ListServiceDeployments request exceed maxResults , this value + // can be used to retrieve the next page of results. This value is null when there + // are no more results to return. + NextToken *string + + // An overview of the service deployment, including the following properties: + // + // - The ARN of the service deployment. + // + // - The ARN of the service being deployed. + // + // - The ARN of the cluster that hosts the service in the service deployment. + // + // - The time that the service deployment started. + // + // - The time that the service deployment completed. + // + // - The service deployment status. + // + // - Information about why the service deployment is in the current state. + // + // - The ARN of the service revision that is being deployed. + ServiceDeployments []types.ServiceDeploymentBrief + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListServiceDeploymentsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListServiceDeployments{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListServiceDeployments{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListServiceDeployments"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpListServiceDeploymentsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListServiceDeployments(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opListServiceDeployments(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListServiceDeployments", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServices.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServices.go new file mode 100644 index 000000000..73c5d8456 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServices.go @@ -0,0 +1,284 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns a list of services. You can filter the results by cluster, launch type, +// and scheduling strategy. +func (c *Client) ListServices(ctx context.Context, params *ListServicesInput, optFns ...func(*Options)) (*ListServicesOutput, error) { + if params == nil { + params = &ListServicesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListServices", params, optFns, c.addOperationListServicesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListServicesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListServicesInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster to use when + // filtering the ListServices results. If you do not specify a cluster, the + // default cluster is assumed. + Cluster *string + + // The launch type to use when filtering the ListServices results. + LaunchType types.LaunchType + + // The maximum number of service results that ListServices returned in paginated + // output. When this parameter is used, ListServices only returns maxResults + // results in a single page along with a nextToken response element. The remaining + // results of the initial request can be seen by sending another ListServices + // request with the returned nextToken value. This value can be between 1 and 100. + // If this parameter isn't used, then ListServices returns up to 10 results and a + // nextToken value if applicable. + MaxResults *int32 + + // The nextToken value returned from a ListServices request indicating that more + // results are available to fulfill the request and further calls will be needed. + // If maxResults was provided, it is possible the number of results to be fewer + // than maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + // The scheduling strategy to use when filtering the ListServices results. + SchedulingStrategy types.SchedulingStrategy + + noSmithyDocumentSerde +} + +type ListServicesOutput struct { + + // The nextToken value to include in a future ListServices request. When the + // results of a ListServices request exceed maxResults , this value can be used to + // retrieve the next page of results. This value is null when there are no more + // results to return. + NextToken *string + + // The list of full ARN entries for each service that's associated with the + // specified cluster. + ServiceArns []string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListServicesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListServices{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListServices{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListServices"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListServices(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListServicesPaginatorOptions is the paginator options for ListServices +type ListServicesPaginatorOptions struct { + // The maximum number of service results that ListServices returned in paginated + // output. When this parameter is used, ListServices only returns maxResults + // results in a single page along with a nextToken response element. The remaining + // results of the initial request can be seen by sending another ListServices + // request with the returned nextToken value. This value can be between 1 and 100. + // If this parameter isn't used, then ListServices returns up to 10 results and a + // nextToken value if applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListServicesPaginator is a paginator for ListServices +type ListServicesPaginator struct { + options ListServicesPaginatorOptions + client ListServicesAPIClient + params *ListServicesInput + nextToken *string + firstPage bool +} + +// NewListServicesPaginator returns a new ListServicesPaginator +func NewListServicesPaginator(client ListServicesAPIClient, params *ListServicesInput, optFns ...func(*ListServicesPaginatorOptions)) *ListServicesPaginator { + if params == nil { + params = &ListServicesInput{} + } + + options := ListServicesPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListServicesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListServicesPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListServices page. +func (p *ListServicesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListServicesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListServices(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListServicesAPIClient is a client that implements the ListServices operation. +type ListServicesAPIClient interface { + ListServices(context.Context, *ListServicesInput, ...func(*Options)) (*ListServicesOutput, error) +} + +var _ ListServicesAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListServices(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListServices", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServicesByNamespace.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServicesByNamespace.go new file mode 100644 index 000000000..6694b5b4f --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListServicesByNamespace.go @@ -0,0 +1,298 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This operation lists all of the services that are associated with a Cloud Map +// namespace. This list might include services in different clusters. In contrast, +// ListServices can only list services in one cluster at a time. If you need to +// filter the list of services in a single cluster by various parameters, use +// ListServices . For more information, see [Service Connect] in the Amazon Elastic Container +// Service Developer Guide. +// +// [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html +func (c *Client) ListServicesByNamespace(ctx context.Context, params *ListServicesByNamespaceInput, optFns ...func(*Options)) (*ListServicesByNamespaceOutput, error) { + if params == nil { + params = &ListServicesByNamespaceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListServicesByNamespace", params, optFns, c.addOperationListServicesByNamespaceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListServicesByNamespaceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListServicesByNamespaceInput struct { + + // The namespace name or full Amazon Resource Name (ARN) of the Cloud Map + // namespace to list the services in. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + // + // This member is required. + Namespace *string + + // The maximum number of service results that ListServicesByNamespace returns in + // paginated output. When this parameter is used, ListServicesByNamespace only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListServicesByNamespace request with the returned nextToken value. This + // value can be between 1 and 100. If this parameter isn't used, then + // ListServicesByNamespace returns up to 10 results and a nextToken value if + // applicable. + MaxResults *int32 + + // The nextToken value that's returned from a ListServicesByNamespace request. It + // indicates that more results are available to fulfill the request and further + // calls are needed. If maxResults is returned, it is possible the number of + // results is less than maxResults . + NextToken *string + + noSmithyDocumentSerde +} + +type ListServicesByNamespaceOutput struct { + + // The nextToken value to include in a future ListServicesByNamespace request. + // When the results of a ListServicesByNamespace request exceed maxResults , this + // value can be used to retrieve the next page of results. When there are no more + // results to return, this value is null . + NextToken *string + + // The list of full ARN entries for each service that's associated with the + // specified namespace. + ServiceArns []string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListServicesByNamespaceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListServicesByNamespace{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListServicesByNamespace{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListServicesByNamespace"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpListServicesByNamespaceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListServicesByNamespace(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListServicesByNamespacePaginatorOptions is the paginator options for +// ListServicesByNamespace +type ListServicesByNamespacePaginatorOptions struct { + // The maximum number of service results that ListServicesByNamespace returns in + // paginated output. When this parameter is used, ListServicesByNamespace only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListServicesByNamespace request with the returned nextToken value. This + // value can be between 1 and 100. If this parameter isn't used, then + // ListServicesByNamespace returns up to 10 results and a nextToken value if + // applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListServicesByNamespacePaginator is a paginator for ListServicesByNamespace +type ListServicesByNamespacePaginator struct { + options ListServicesByNamespacePaginatorOptions + client ListServicesByNamespaceAPIClient + params *ListServicesByNamespaceInput + nextToken *string + firstPage bool +} + +// NewListServicesByNamespacePaginator returns a new +// ListServicesByNamespacePaginator +func NewListServicesByNamespacePaginator(client ListServicesByNamespaceAPIClient, params *ListServicesByNamespaceInput, optFns ...func(*ListServicesByNamespacePaginatorOptions)) *ListServicesByNamespacePaginator { + if params == nil { + params = &ListServicesByNamespaceInput{} + } + + options := ListServicesByNamespacePaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListServicesByNamespacePaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListServicesByNamespacePaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListServicesByNamespace page. +func (p *ListServicesByNamespacePaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListServicesByNamespaceOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListServicesByNamespace(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListServicesByNamespaceAPIClient is a client that implements the +// ListServicesByNamespace operation. +type ListServicesByNamespaceAPIClient interface { + ListServicesByNamespace(context.Context, *ListServicesByNamespaceInput, ...func(*Options)) (*ListServicesByNamespaceOutput, error) +} + +var _ ListServicesByNamespaceAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListServicesByNamespace(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListServicesByNamespace", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTagsForResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTagsForResource.go new file mode 100644 index 000000000..9147c3d75 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTagsForResource.go @@ -0,0 +1,159 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// List the tags for an Amazon ECS resource. +func (c *Client) ListTagsForResource(ctx context.Context, params *ListTagsForResourceInput, optFns ...func(*Options)) (*ListTagsForResourceOutput, error) { + if params == nil { + params = &ListTagsForResourceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListTagsForResource", params, optFns, c.addOperationListTagsForResourceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListTagsForResourceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListTagsForResourceInput struct { + + // The Amazon Resource Name (ARN) that identifies the resource to list the tags + // for. Currently, the supported resources are Amazon ECS tasks, services, task + // definitions, clusters, and container instances. + // + // This member is required. + ResourceArn *string + + noSmithyDocumentSerde +} + +type ListTagsForResourceOutput struct { + + // The tags for the resource. + Tags []types.Tag + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListTagsForResourceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListTagsForResource{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListTagsForResource{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListTagsForResource"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpListTagsForResourceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListTagsForResource(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opListTagsForResource(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListTagsForResource", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitionFamilies.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitionFamilies.go new file mode 100644 index 000000000..fec541e39 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitionFamilies.go @@ -0,0 +1,298 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns a list of task definition families that are registered to your account. +// This list includes task definition families that no longer have any ACTIVE task +// definition revisions. +// +// You can filter out task definition families that don't contain any ACTIVE task +// definition revisions by setting the status parameter to ACTIVE . You can also +// filter the results with the familyPrefix parameter. +func (c *Client) ListTaskDefinitionFamilies(ctx context.Context, params *ListTaskDefinitionFamiliesInput, optFns ...func(*Options)) (*ListTaskDefinitionFamiliesOutput, error) { + if params == nil { + params = &ListTaskDefinitionFamiliesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListTaskDefinitionFamilies", params, optFns, c.addOperationListTaskDefinitionFamiliesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListTaskDefinitionFamiliesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListTaskDefinitionFamiliesInput struct { + + // The familyPrefix is a string that's used to filter the results of + // ListTaskDefinitionFamilies . If you specify a familyPrefix , only task + // definition family names that begin with the familyPrefix string are returned. + FamilyPrefix *string + + // The maximum number of task definition family results that + // ListTaskDefinitionFamilies returned in paginated output. When this parameter is + // used, ListTaskDefinitions only returns maxResults results in a single page + // along with a nextToken response element. The remaining results of the initial + // request can be seen by sending another ListTaskDefinitionFamilies request with + // the returned nextToken value. This value can be between 1 and 100. If this + // parameter isn't used, then ListTaskDefinitionFamilies returns up to 100 results + // and a nextToken value if applicable. + MaxResults *int32 + + // The nextToken value returned from a ListTaskDefinitionFamilies request + // indicating that more results are available to fulfill the request and further + // calls will be needed. If maxResults was provided, it is possible the number of + // results to be fewer than maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + // The task definition family status to filter the ListTaskDefinitionFamilies + // results with. By default, both ACTIVE and INACTIVE task definition families are + // listed. If this parameter is set to ACTIVE , only task definition families that + // have an ACTIVE task definition revision are returned. If this parameter is set + // to INACTIVE , only task definition families that do not have any ACTIVE task + // definition revisions are returned. If you paginate the resulting output, be sure + // to keep the status value constant in each subsequent request. + Status types.TaskDefinitionFamilyStatus + + noSmithyDocumentSerde +} + +type ListTaskDefinitionFamiliesOutput struct { + + // The list of task definition family names that match the + // ListTaskDefinitionFamilies request. + Families []string + + // The nextToken value to include in a future ListTaskDefinitionFamilies request. + // When the results of a ListTaskDefinitionFamilies request exceed maxResults , + // this value can be used to retrieve the next page of results. This value is null + // when there are no more results to return. + NextToken *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListTaskDefinitionFamiliesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListTaskDefinitionFamilies{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListTaskDefinitionFamilies{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListTaskDefinitionFamilies"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListTaskDefinitionFamilies(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListTaskDefinitionFamiliesPaginatorOptions is the paginator options for +// ListTaskDefinitionFamilies +type ListTaskDefinitionFamiliesPaginatorOptions struct { + // The maximum number of task definition family results that + // ListTaskDefinitionFamilies returned in paginated output. When this parameter is + // used, ListTaskDefinitions only returns maxResults results in a single page + // along with a nextToken response element. The remaining results of the initial + // request can be seen by sending another ListTaskDefinitionFamilies request with + // the returned nextToken value. This value can be between 1 and 100. If this + // parameter isn't used, then ListTaskDefinitionFamilies returns up to 100 results + // and a nextToken value if applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListTaskDefinitionFamiliesPaginator is a paginator for +// ListTaskDefinitionFamilies +type ListTaskDefinitionFamiliesPaginator struct { + options ListTaskDefinitionFamiliesPaginatorOptions + client ListTaskDefinitionFamiliesAPIClient + params *ListTaskDefinitionFamiliesInput + nextToken *string + firstPage bool +} + +// NewListTaskDefinitionFamiliesPaginator returns a new +// ListTaskDefinitionFamiliesPaginator +func NewListTaskDefinitionFamiliesPaginator(client ListTaskDefinitionFamiliesAPIClient, params *ListTaskDefinitionFamiliesInput, optFns ...func(*ListTaskDefinitionFamiliesPaginatorOptions)) *ListTaskDefinitionFamiliesPaginator { + if params == nil { + params = &ListTaskDefinitionFamiliesInput{} + } + + options := ListTaskDefinitionFamiliesPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListTaskDefinitionFamiliesPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListTaskDefinitionFamiliesPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListTaskDefinitionFamilies page. +func (p *ListTaskDefinitionFamiliesPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListTaskDefinitionFamiliesOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListTaskDefinitionFamilies(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListTaskDefinitionFamiliesAPIClient is a client that implements the +// ListTaskDefinitionFamilies operation. +type ListTaskDefinitionFamiliesAPIClient interface { + ListTaskDefinitionFamilies(context.Context, *ListTaskDefinitionFamiliesInput, ...func(*Options)) (*ListTaskDefinitionFamiliesOutput, error) +} + +var _ ListTaskDefinitionFamiliesAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListTaskDefinitionFamilies(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListTaskDefinitionFamilies", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitions.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitions.go new file mode 100644 index 000000000..f1cd9e8a4 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTaskDefinitions.go @@ -0,0 +1,298 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns a list of task definitions that are registered to your account. You can +// filter the results by family name with the familyPrefix parameter or by status +// with the status parameter. +func (c *Client) ListTaskDefinitions(ctx context.Context, params *ListTaskDefinitionsInput, optFns ...func(*Options)) (*ListTaskDefinitionsOutput, error) { + if params == nil { + params = &ListTaskDefinitionsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListTaskDefinitions", params, optFns, c.addOperationListTaskDefinitionsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListTaskDefinitionsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListTaskDefinitionsInput struct { + + // The full family name to filter the ListTaskDefinitions results with. Specifying + // a familyPrefix limits the listed task definitions to task definition revisions + // that belong to that family. + FamilyPrefix *string + + // The maximum number of task definition results that ListTaskDefinitions returned + // in paginated output. When this parameter is used, ListTaskDefinitions only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListTaskDefinitions request with the returned nextToken value. This + // value can be between 1 and 100. If this parameter isn't used, then + // ListTaskDefinitions returns up to 100 results and a nextToken value if + // applicable. + MaxResults *int32 + + // The nextToken value returned from a ListTaskDefinitions request indicating that + // more results are available to fulfill the request and further calls will be + // needed. If maxResults was provided, it is possible the number of results to be + // fewer than maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + // The order to sort the results in. Valid values are ASC and DESC . By default, ( + // ASC ) task definitions are listed lexicographically by family name and in + // ascending numerical order by revision so that the newest task definitions in a + // family are listed last. Setting this parameter to DESC reverses the sort order + // on family name and revision. This is so that the newest task definitions in a + // family are listed first. + Sort types.SortOrder + + // The task definition status to filter the ListTaskDefinitions results with. By + // default, only ACTIVE task definitions are listed. By setting this parameter to + // INACTIVE , you can view task definitions that are INACTIVE as long as an active + // task or service still references them. If you paginate the resulting output, be + // sure to keep the status value constant in each subsequent request. + Status types.TaskDefinitionStatus + + noSmithyDocumentSerde +} + +type ListTaskDefinitionsOutput struct { + + // The nextToken value to include in a future ListTaskDefinitions request. When + // the results of a ListTaskDefinitions request exceed maxResults , this value can + // be used to retrieve the next page of results. This value is null when there are + // no more results to return. + NextToken *string + + // The list of task definition Amazon Resource Name (ARN) entries for the + // ListTaskDefinitions request. + TaskDefinitionArns []string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListTaskDefinitionsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListTaskDefinitions{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListTaskDefinitions{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListTaskDefinitions"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListTaskDefinitions(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListTaskDefinitionsPaginatorOptions is the paginator options for +// ListTaskDefinitions +type ListTaskDefinitionsPaginatorOptions struct { + // The maximum number of task definition results that ListTaskDefinitions returned + // in paginated output. When this parameter is used, ListTaskDefinitions only + // returns maxResults results in a single page along with a nextToken response + // element. The remaining results of the initial request can be seen by sending + // another ListTaskDefinitions request with the returned nextToken value. This + // value can be between 1 and 100. If this parameter isn't used, then + // ListTaskDefinitions returns up to 100 results and a nextToken value if + // applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListTaskDefinitionsPaginator is a paginator for ListTaskDefinitions +type ListTaskDefinitionsPaginator struct { + options ListTaskDefinitionsPaginatorOptions + client ListTaskDefinitionsAPIClient + params *ListTaskDefinitionsInput + nextToken *string + firstPage bool +} + +// NewListTaskDefinitionsPaginator returns a new ListTaskDefinitionsPaginator +func NewListTaskDefinitionsPaginator(client ListTaskDefinitionsAPIClient, params *ListTaskDefinitionsInput, optFns ...func(*ListTaskDefinitionsPaginatorOptions)) *ListTaskDefinitionsPaginator { + if params == nil { + params = &ListTaskDefinitionsInput{} + } + + options := ListTaskDefinitionsPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListTaskDefinitionsPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListTaskDefinitionsPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListTaskDefinitions page. +func (p *ListTaskDefinitionsPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListTaskDefinitionsOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListTaskDefinitions(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListTaskDefinitionsAPIClient is a client that implements the +// ListTaskDefinitions operation. +type ListTaskDefinitionsAPIClient interface { + ListTaskDefinitions(context.Context, *ListTaskDefinitionsInput, ...func(*Options)) (*ListTaskDefinitionsOutput, error) +} + +var _ ListTaskDefinitionsAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListTaskDefinitions(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListTaskDefinitions", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTasks.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTasks.go new file mode 100644 index 000000000..1e2f32688 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_ListTasks.go @@ -0,0 +1,316 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Returns a list of tasks. You can filter the results by cluster, task definition +// family, container instance, launch type, what IAM principal started the task, or +// by the desired status of the task. +// +// Recently stopped tasks might appear in the returned results. +func (c *Client) ListTasks(ctx context.Context, params *ListTasksInput, optFns ...func(*Options)) (*ListTasksOutput, error) { + if params == nil { + params = &ListTasksInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "ListTasks", params, optFns, c.addOperationListTasksMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*ListTasksOutput) + out.ResultMetadata = metadata + return out, nil +} + +type ListTasksInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster to use when + // filtering the ListTasks results. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + // The container instance ID or full ARN of the container instance to use when + // filtering the ListTasks results. Specifying a containerInstance limits the + // results to tasks that belong to that container instance. + ContainerInstance *string + + // The task desired status to use when filtering the ListTasks results. Specifying + // a desiredStatus of STOPPED limits the results to tasks that Amazon ECS has set + // the desired status to STOPPED . This can be useful for debugging tasks that + // aren't starting properly or have died or finished. The default status filter is + // RUNNING , which shows tasks that Amazon ECS has set the desired status to + // RUNNING . + // + // Although you can filter results based on a desired status of PENDING , this + // doesn't return any results. Amazon ECS never sets the desired status of a task + // to that value (only a task's lastStatus may have a value of PENDING ). + DesiredStatus types.DesiredStatus + + // The name of the task definition family to use when filtering the ListTasks + // results. Specifying a family limits the results to tasks that belong to that + // family. + Family *string + + // The launch type to use when filtering the ListTasks results. + LaunchType types.LaunchType + + // The maximum number of task results that ListTasks returned in paginated output. + // When this parameter is used, ListTasks only returns maxResults results in a + // single page along with a nextToken response element. The remaining results of + // the initial request can be seen by sending another ListTasks request with the + // returned nextToken value. This value can be between 1 and 100. If this + // parameter isn't used, then ListTasks returns up to 100 results and a nextToken + // value if applicable. + MaxResults *int32 + + // The nextToken value returned from a ListTasks request indicating that more + // results are available to fulfill the request and further calls will be needed. + // If maxResults was provided, it's possible the number of results to be fewer + // than maxResults . + // + // This token should be treated as an opaque identifier that is only used to + // retrieve the next items in a list and not for other programmatic purposes. + NextToken *string + + // The name of the service to use when filtering the ListTasks results. Specifying + // a serviceName limits the results to tasks that belong to that service. + ServiceName *string + + // The startedBy value to filter the task results with. Specifying a startedBy + // value limits the results to tasks that were started with that value. + // + // When you specify startedBy as the filter, it must be the only filter that you + // use. + StartedBy *string + + noSmithyDocumentSerde +} + +type ListTasksOutput struct { + + // The nextToken value to include in a future ListTasks request. When the results + // of a ListTasks request exceed maxResults , this value can be used to retrieve + // the next page of results. This value is null when there are no more results to + // return. + NextToken *string + + // The list of task ARN entries for the ListTasks request. + TaskArns []string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationListTasksMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpListTasks{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpListTasks{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "ListTasks"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opListTasks(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +// ListTasksPaginatorOptions is the paginator options for ListTasks +type ListTasksPaginatorOptions struct { + // The maximum number of task results that ListTasks returned in paginated output. + // When this parameter is used, ListTasks only returns maxResults results in a + // single page along with a nextToken response element. The remaining results of + // the initial request can be seen by sending another ListTasks request with the + // returned nextToken value. This value can be between 1 and 100. If this + // parameter isn't used, then ListTasks returns up to 100 results and a nextToken + // value if applicable. + Limit int32 + + // Set to true if pagination should stop if the service returns a pagination token + // that matches the most recent token provided to the service. + StopOnDuplicateToken bool +} + +// ListTasksPaginator is a paginator for ListTasks +type ListTasksPaginator struct { + options ListTasksPaginatorOptions + client ListTasksAPIClient + params *ListTasksInput + nextToken *string + firstPage bool +} + +// NewListTasksPaginator returns a new ListTasksPaginator +func NewListTasksPaginator(client ListTasksAPIClient, params *ListTasksInput, optFns ...func(*ListTasksPaginatorOptions)) *ListTasksPaginator { + if params == nil { + params = &ListTasksInput{} + } + + options := ListTasksPaginatorOptions{} + if params.MaxResults != nil { + options.Limit = *params.MaxResults + } + + for _, fn := range optFns { + fn(&options) + } + + return &ListTasksPaginator{ + options: options, + client: client, + params: params, + firstPage: true, + nextToken: params.NextToken, + } +} + +// HasMorePages returns a boolean indicating whether more pages are available +func (p *ListTasksPaginator) HasMorePages() bool { + return p.firstPage || (p.nextToken != nil && len(*p.nextToken) != 0) +} + +// NextPage retrieves the next ListTasks page. +func (p *ListTasksPaginator) NextPage(ctx context.Context, optFns ...func(*Options)) (*ListTasksOutput, error) { + if !p.HasMorePages() { + return nil, fmt.Errorf("no more pages available") + } + + params := *p.params + params.NextToken = p.nextToken + + var limit *int32 + if p.options.Limit > 0 { + limit = &p.options.Limit + } + params.MaxResults = limit + + optFns = append([]func(*Options){ + addIsPaginatorUserAgent, + }, optFns...) + result, err := p.client.ListTasks(ctx, ¶ms, optFns...) + if err != nil { + return nil, err + } + p.firstPage = false + + prevToken := p.nextToken + p.nextToken = result.NextToken + + if p.options.StopOnDuplicateToken && + prevToken != nil && + p.nextToken != nil && + *prevToken == *p.nextToken { + p.nextToken = nil + } + + return result, nil +} + +// ListTasksAPIClient is a client that implements the ListTasks operation. +type ListTasksAPIClient interface { + ListTasks(context.Context, *ListTasksInput, ...func(*Options)) (*ListTasksOutput, error) +} + +var _ ListTasksAPIClient = (*Client)(nil) + +func newServiceMetadataMiddleware_opListTasks(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "ListTasks", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSetting.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSetting.go new file mode 100644 index 000000000..02bcf1bf5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSetting.go @@ -0,0 +1,280 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies an account setting. Account settings are set on a per-Region basis. +// +// If you change the root user account setting, the default settings are reset for +// users and roles that do not have specified individual account settings. For more +// information, see [Account Settings]in the Amazon Elastic Container Service Developer Guide. +// +// [Account Settings]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html +func (c *Client) PutAccountSetting(ctx context.Context, params *PutAccountSettingInput, optFns ...func(*Options)) (*PutAccountSettingOutput, error) { + if params == nil { + params = &PutAccountSettingInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "PutAccountSetting", params, optFns, c.addOperationPutAccountSettingMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*PutAccountSettingOutput) + out.ResultMetadata = metadata + return out, nil +} + +type PutAccountSettingInput struct { + + // The Amazon ECS account setting name to modify. + // + // The following are the valid values for the account setting name. + // + // - serviceLongArnFormat - When modified, the Amazon Resource Name (ARN) and + // resource ID format of the resource type for a specified user, role, or the root + // user for an account is affected. The opt-in and opt-out account setting must be + // set for each Amazon ECS resource separately. The ARN and resource ID format of a + // resource is defined by the opt-in status of the user or role that created the + // resource. You must turn on this setting to use Amazon ECS features such as + // resource tagging. + // + // - taskLongArnFormat - When modified, the Amazon Resource Name (ARN) and + // resource ID format of the resource type for a specified user, role, or the root + // user for an account is affected. The opt-in and opt-out account setting must be + // set for each Amazon ECS resource separately. The ARN and resource ID format of a + // resource is defined by the opt-in status of the user or role that created the + // resource. You must turn on this setting to use Amazon ECS features such as + // resource tagging. + // + // - fargateFIPSMode - When turned on, you can run Fargate workloads in a manner + // that is compliant with Federal Information Processing Standard (FIPS-140). For + // more information, see [Fargate Federal Information Processing Standard (FIPS-140)]. + // + // - containerInstanceLongArnFormat - When modified, the Amazon Resource Name + // (ARN) and resource ID format of the resource type for a specified user, role, or + // the root user for an account is affected. The opt-in and opt-out account setting + // must be set for each Amazon ECS resource separately. The ARN and resource ID + // format of a resource is defined by the opt-in status of the user or role that + // created the resource. You must turn on this setting to use Amazon ECS features + // such as resource tagging. + // + // - awsvpcTrunking - When modified, the elastic network interface (ENI) limit + // for any new container instances that support the feature is changed. If + // awsvpcTrunking is turned on, any new container instances that support the + // feature are launched have the increased ENI limits available to them. For more + // information, see [Elastic Network Interface Trunking]in the Amazon Elastic Container Service Developer Guide. + // + // - containerInsights - Container Insights with enhanced observability provides + // all the Container Insights metrics, plus additional task and container metrics. + // This version supports enhanced observability for Amazon ECS clusters using the + // Amazon EC2 and Fargate launch types. After you configure Container Insights with + // enhanced observability on Amazon ECS, Container Insights auto-collects detailed + // infrastructure telemetry from the cluster level down to the container level in + // your environment and displays these critical performance data in curated + // dashboards removing the heavy lifting in observability set-up. + // + // To use Container Insights with enhanced observability, set the containerInsights + // account setting to enhanced . + // + // To use Container Insights, set the containerInsights account setting to enabled . + // + // For more information, see [Monitor Amazon ECS containers using Container Insights with enhanced observability]in the Amazon Elastic Container Service Developer + // Guide. + // + // - dualStackIPv6 - When turned on, when using a VPC in dual stack mode, your + // tasks using the awsvpc network mode can have an IPv6 address assigned. For + // more information on using IPv6 with tasks launched on Amazon EC2 instances, see [Using a VPC in dual-stack mode] + // . For more information on using IPv6 with tasks launched on Fargate, see [Using a VPC in dual-stack mode]. + // + // - fargateTaskRetirementWaitPeriod - When Amazon Web Services determines that a + // security or infrastructure update is needed for an Amazon ECS task hosted on + // Fargate, the tasks need to be stopped and new tasks launched to replace them. + // Use fargateTaskRetirementWaitPeriod to configure the wait time to retire a + // Fargate task. For information about the Fargate tasks maintenance, see [Amazon Web Services Fargate task maintenance]in the + // Amazon ECS Developer Guide. + // + // - tagResourceAuthorization - Amazon ECS is introducing tagging authorization + // for resource creation. Users must have permissions for actions that create the + // resource, such as ecsCreateCluster . If tags are specified when you create a + // resource, Amazon Web Services performs additional authorization to verify if + // users or roles have permissions to create tags. Therefore, you must grant + // explicit permissions to use the ecs:TagResource action. For more information, + // see [Grant permission to tag resources on creation]in the Amazon ECS Developer Guide. + // + // - guardDutyActivate - The guardDutyActivate parameter is read-only in Amazon + // ECS and indicates whether Amazon ECS Runtime Monitoring is enabled or disabled + // by your security administrator in your Amazon ECS account. Amazon GuardDuty + // controls this account setting on your behalf. For more information, see [Protecting Amazon ECS workloads with Amazon ECS Runtime Monitoring]. + // + // [Grant permission to tag resources on creation]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/supported-iam-actions-tagging.html + // [Using a VPC in dual-stack mode]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html#fargate-task-networking-vpc-dual-stack + // [Fargate Federal Information Processing Standard (FIPS-140)]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-fips-compliance.html + // [Amazon Web Services Fargate task maintenance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-maintenance.html + // [Elastic Network Interface Trunking]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-eni.html + // [Protecting Amazon ECS workloads with Amazon ECS Runtime Monitoring]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html + // [Monitor Amazon ECS containers using Container Insights with enhanced observability]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html + // + // This member is required. + Name types.SettingName + + // The account setting value for the specified principal ARN. Accepted values are + // enabled , disabled , enhanced , on , and off . + // + // When you specify fargateTaskRetirementWaitPeriod for the name , the following + // are the valid values: + // + // - 0 - Amazon Web Services sends the notification, and immediately retires the + // affected tasks. + // + // - 7 - Amazon Web Services sends the notification, and waits 7 calendar days to + // retire the tasks. + // + // - 14 - Amazon Web Services sends the notification, and waits 14 calendar days + // to retire the tasks. + // + // This member is required. + Value *string + + // The ARN of the principal, which can be a user, role, or the root user. If you + // specify the root user, it modifies the account setting for all users, roles, and + // the root user of the account unless a user or role explicitly overrides these + // settings. If this field is omitted, the setting is changed only for the + // authenticated user. + // + // You must use the root user when you set the Fargate wait time ( + // fargateTaskRetirementWaitPeriod ). + // + // Federated users assume the account setting of the root user and can't have + // explicit account settings set for them. + PrincipalArn *string + + noSmithyDocumentSerde +} + +type PutAccountSettingOutput struct { + + // The current account setting for a resource. + Setting *types.Setting + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationPutAccountSettingMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutAccountSetting{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutAccountSetting{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "PutAccountSetting"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpPutAccountSettingValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutAccountSetting(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opPutAccountSetting(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "PutAccountSetting", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSettingDefault.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSettingDefault.go new file mode 100644 index 000000000..862e2b29d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAccountSettingDefault.go @@ -0,0 +1,261 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies an account setting for all users on an account for whom no individual +// account setting has been specified. Account settings are set on a per-Region +// basis. +func (c *Client) PutAccountSettingDefault(ctx context.Context, params *PutAccountSettingDefaultInput, optFns ...func(*Options)) (*PutAccountSettingDefaultOutput, error) { + if params == nil { + params = &PutAccountSettingDefaultInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "PutAccountSettingDefault", params, optFns, c.addOperationPutAccountSettingDefaultMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*PutAccountSettingDefaultOutput) + out.ResultMetadata = metadata + return out, nil +} + +type PutAccountSettingDefaultInput struct { + + // The resource name for which to modify the account setting. + // + // The following are the valid values for the account setting name. + // + // - serviceLongArnFormat - When modified, the Amazon Resource Name (ARN) and + // resource ID format of the resource type for a specified user, role, or the root + // user for an account is affected. The opt-in and opt-out account setting must be + // set for each Amazon ECS resource separately. The ARN and resource ID format of a + // resource is defined by the opt-in status of the user or role that created the + // resource. You must turn on this setting to use Amazon ECS features such as + // resource tagging. + // + // - taskLongArnFormat - When modified, the Amazon Resource Name (ARN) and + // resource ID format of the resource type for a specified user, role, or the root + // user for an account is affected. The opt-in and opt-out account setting must be + // set for each Amazon ECS resource separately. The ARN and resource ID format of a + // resource is defined by the opt-in status of the user or role that created the + // resource. You must turn on this setting to use Amazon ECS features such as + // resource tagging. + // + // - containerInstanceLongArnFormat - When modified, the Amazon Resource Name + // (ARN) and resource ID format of the resource type for a specified user, role, or + // the root user for an account is affected. The opt-in and opt-out account setting + // must be set for each Amazon ECS resource separately. The ARN and resource ID + // format of a resource is defined by the opt-in status of the user or role that + // created the resource. You must turn on this setting to use Amazon ECS features + // such as resource tagging. + // + // - awsvpcTrunking - When modified, the elastic network interface (ENI) limit + // for any new container instances that support the feature is changed. If + // awsvpcTrunking is turned on, any new container instances that support the + // feature are launched have the increased ENI limits available to them. For more + // information, see [Elastic Network Interface Trunking]in the Amazon Elastic Container Service Developer Guide. + // + // - containerInsights - Container Insights with enhanced observability provides + // all the Container Insights metrics, plus additional task and container metrics. + // This version supports enhanced observability for Amazon ECS clusters using the + // Amazon EC2 and Fargate launch types. After you configure Container Insights with + // enhanced observability on Amazon ECS, Container Insights auto-collects detailed + // infrastructure telemetry from the cluster level down to the container level in + // your environment and displays these critical performance data in curated + // dashboards removing the heavy lifting in observability set-up. + // + // To use Container Insights with enhanced observability, set the containerInsights + // account setting to enhanced . + // + // To use Container Insights, set the containerInsights account setting to enabled . + // + // For more information, see [Monitor Amazon ECS containers using Container Insights with enhanced observability]in the Amazon Elastic Container Service Developer + // Guide. + // + // - dualStackIPv6 - When turned on, when using a VPC in dual stack mode, your + // tasks using the awsvpc network mode can have an IPv6 address assigned. For + // more information on using IPv6 with tasks launched on Amazon EC2 instances, see [Using a VPC in dual-stack mode] + // . For more information on using IPv6 with tasks launched on Fargate, see [Using a VPC in dual-stack mode]. + // + // - fargateFIPSMode - If you specify fargateFIPSMode , Fargate FIPS 140 + // compliance is affected. + // + // - fargateTaskRetirementWaitPeriod - When Amazon Web Services determines that a + // security or infrastructure update is needed for an Amazon ECS task hosted on + // Fargate, the tasks need to be stopped and new tasks launched to replace them. + // Use fargateTaskRetirementWaitPeriod to configure the wait time to retire a + // Fargate task. For information about the Fargate tasks maintenance, see [Amazon Web Services Fargate task maintenance]in the + // Amazon ECS Developer Guide. + // + // - tagResourceAuthorization - Amazon ECS is introducing tagging authorization + // for resource creation. Users must have permissions for actions that create the + // resource, such as ecsCreateCluster . If tags are specified when you create a + // resource, Amazon Web Services performs additional authorization to verify if + // users or roles have permissions to create tags. Therefore, you must grant + // explicit permissions to use the ecs:TagResource action. For more information, + // see [Grant permission to tag resources on creation]in the Amazon ECS Developer Guide. + // + // - guardDutyActivate - The guardDutyActivate parameter is read-only in Amazon + // ECS and indicates whether Amazon ECS Runtime Monitoring is enabled or disabled + // by your security administrator in your Amazon ECS account. Amazon GuardDuty + // controls this account setting on your behalf. For more information, see [Protecting Amazon ECS workloads with Amazon ECS Runtime Monitoring]. + // + // [Grant permission to tag resources on creation]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/supported-iam-actions-tagging.html + // [Using a VPC in dual-stack mode]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html#fargate-task-networking-vpc-dual-stack + // [Amazon Web Services Fargate task maintenance]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-maintenance.html + // [Elastic Network Interface Trunking]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-eni.html + // [Protecting Amazon ECS workloads with Amazon ECS Runtime Monitoring]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-integration.html + // [Monitor Amazon ECS containers using Container Insights with enhanced observability]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html + // + // This member is required. + Name types.SettingName + + // The account setting value for the specified principal ARN. Accepted values are + // enabled , disabled , on , enhanced , and off . + // + // When you specify fargateTaskRetirementWaitPeriod for the name , the following + // are the valid values: + // + // - 0 - Amazon Web Services sends the notification, and immediately retires the + // affected tasks. + // + // - 7 - Amazon Web Services sends the notification, and waits 7 calendar days to + // retire the tasks. + // + // - 14 - Amazon Web Services sends the notification, and waits 14 calendar days + // to retire the tasks. + // + // This member is required. + Value *string + + noSmithyDocumentSerde +} + +type PutAccountSettingDefaultOutput struct { + + // The current setting for a resource. + Setting *types.Setting + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationPutAccountSettingDefaultMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutAccountSettingDefault{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutAccountSettingDefault{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "PutAccountSettingDefault"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpPutAccountSettingDefaultValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutAccountSettingDefault(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opPutAccountSettingDefault(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "PutAccountSettingDefault", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAttributes.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAttributes.go new file mode 100644 index 000000000..fd884a2b7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutAttributes.go @@ -0,0 +1,170 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Create or update an attribute on an Amazon ECS resource. If the attribute +// doesn't exist, it's created. If the attribute exists, its value is replaced with +// the specified value. To delete an attribute, use [DeleteAttributes]. For more information, see [Attributes] +// in the Amazon Elastic Container Service Developer Guide. +// +// [Attributes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes +// [DeleteAttributes]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteAttributes.html +func (c *Client) PutAttributes(ctx context.Context, params *PutAttributesInput, optFns ...func(*Options)) (*PutAttributesOutput, error) { + if params == nil { + params = &PutAttributesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "PutAttributes", params, optFns, c.addOperationPutAttributesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*PutAttributesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type PutAttributesInput struct { + + // The attributes to apply to your resource. You can specify up to 10 custom + // attributes for each resource. You can specify up to 10 attributes in a single + // call. + // + // This member is required. + Attributes []types.Attribute + + // The short name or full Amazon Resource Name (ARN) of the cluster that contains + // the resource to apply attributes. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + noSmithyDocumentSerde +} + +type PutAttributesOutput struct { + + // The attributes applied to your resource. + Attributes []types.Attribute + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationPutAttributesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutAttributes{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutAttributes{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "PutAttributes"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpPutAttributesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutAttributes(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opPutAttributes(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "PutAttributes", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutClusterCapacityProviders.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutClusterCapacityProviders.go new file mode 100644 index 000000000..8615ead0d --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_PutClusterCapacityProviders.go @@ -0,0 +1,217 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies the available capacity providers and the default capacity provider +// strategy for a cluster. +// +// You must specify both the available capacity providers and a default capacity +// provider strategy for the cluster. If the specified cluster has existing +// capacity providers associated with it, you must specify all existing capacity +// providers in addition to any new ones you want to add. Any existing capacity +// providers that are associated with a cluster that are omitted from a [PutClusterCapacityProviders]API call +// will be disassociated with the cluster. You can only disassociate an existing +// capacity provider from a cluster if it's not being used by any existing tasks. +// +// When creating a service or running a task on a cluster, if no capacity provider +// or launch type is specified, then the cluster's default capacity provider +// strategy is used. We recommend that you define a default capacity provider +// strategy for your cluster. However, you must specify an empty array ( [] ) to +// bypass defining a default strategy. +// +// [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html +func (c *Client) PutClusterCapacityProviders(ctx context.Context, params *PutClusterCapacityProvidersInput, optFns ...func(*Options)) (*PutClusterCapacityProvidersOutput, error) { + if params == nil { + params = &PutClusterCapacityProvidersInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "PutClusterCapacityProviders", params, optFns, c.addOperationPutClusterCapacityProvidersMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*PutClusterCapacityProvidersOutput) + out.ResultMetadata = metadata + return out, nil +} + +type PutClusterCapacityProvidersInput struct { + + // The name of one or more capacity providers to associate with the cluster. + // + // If specifying a capacity provider that uses an Auto Scaling group, the capacity + // provider must already be created. New capacity providers can be created with the + // [CreateCapacityProvider]API operation. + // + // To use a Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT + // capacity providers. The Fargate capacity providers are available to all accounts + // and only need to be associated with a cluster to be used. + // + // [CreateCapacityProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html + // + // This member is required. + CapacityProviders []string + + // The short name or full Amazon Resource Name (ARN) of the cluster to modify the + // capacity provider settings for. If you don't specify a cluster, the default + // cluster is assumed. + // + // This member is required. + Cluster *string + + // The capacity provider strategy to use by default for the cluster. + // + // When creating a service or running a task on a cluster, if no capacity provider + // or launch type is specified then the default capacity provider strategy for the + // cluster is used. + // + // A capacity provider strategy consists of one or more capacity providers along + // with the base and weight to assign to them. A capacity provider must be + // associated with the cluster to be used in a capacity provider strategy. The [PutClusterCapacityProviders]API + // is used to associate a capacity provider with a cluster. Only capacity providers + // with an ACTIVE or UPDATING status can be used. + // + // If specifying a capacity provider that uses an Auto Scaling group, the capacity + // provider must already be created. New capacity providers can be created with the + // [CreateCapacityProvider]API operation. + // + // To use a Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT + // capacity providers. The Fargate capacity providers are available to all accounts + // and only need to be associated with a cluster to be used. + // + // [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html + // [CreateCapacityProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html + // + // This member is required. + DefaultCapacityProviderStrategy []types.CapacityProviderStrategyItem + + noSmithyDocumentSerde +} + +type PutClusterCapacityProvidersOutput struct { + + // Details about the cluster. + Cluster *types.Cluster + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationPutClusterCapacityProvidersMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpPutClusterCapacityProviders{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpPutClusterCapacityProviders{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "PutClusterCapacityProviders"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpPutClusterCapacityProvidersValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opPutClusterCapacityProviders(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opPutClusterCapacityProviders(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "PutClusterCapacityProviders", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterContainerInstance.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterContainerInstance.go new file mode 100644 index 000000000..c94baf04a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterContainerInstance.go @@ -0,0 +1,216 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This action is only used by the Amazon ECS agent, and it is not intended for +// use outside of the agent. +// +// Registers an EC2 instance into the specified cluster. This instance becomes +// available to place containers on. +func (c *Client) RegisterContainerInstance(ctx context.Context, params *RegisterContainerInstanceInput, optFns ...func(*Options)) (*RegisterContainerInstanceOutput, error) { + if params == nil { + params = &RegisterContainerInstanceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "RegisterContainerInstance", params, optFns, c.addOperationRegisterContainerInstanceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*RegisterContainerInstanceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type RegisterContainerInstanceInput struct { + + // The container instance attributes that this container instance supports. + Attributes []types.Attribute + + // The short name or full Amazon Resource Name (ARN) of the cluster to register + // your container instance with. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + // The ARN of the container instance (if it was previously registered). + ContainerInstanceArn *string + + // The instance identity document for the EC2 instance to register. This document + // can be found by running the following command from the instance: curl + // http://169.254.169.254/latest/dynamic/instance-identity/document/ + InstanceIdentityDocument *string + + // The instance identity document signature for the EC2 instance to register. This + // signature can be found by running the following command from the instance: curl + // http://169.254.169.254/latest/dynamic/instance-identity/signature/ + InstanceIdentityDocumentSignature *string + + // The devices that are available on the container instance. The only supported + // device type is a GPU. + PlatformDevices []types.PlatformDevice + + // The metadata that you apply to the container instance to help you categorize + // and organize them. Each tag consists of a key and an optional value. You define + // both. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + // The resources available on the instance. + TotalResources []types.Resource + + // The version information for the Amazon ECS container agent and Docker daemon + // that runs on the container instance. + VersionInfo *types.VersionInfo + + noSmithyDocumentSerde +} + +type RegisterContainerInstanceOutput struct { + + // The container instance that was registered. + ContainerInstance *types.ContainerInstance + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationRegisterContainerInstanceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpRegisterContainerInstance{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpRegisterContainerInstance{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "RegisterContainerInstance"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpRegisterContainerInstanceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opRegisterContainerInstance(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opRegisterContainerInstance(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "RegisterContainerInstance", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterTaskDefinition.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterTaskDefinition.go new file mode 100644 index 000000000..650128c54 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RegisterTaskDefinition.go @@ -0,0 +1,459 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Registers a new task definition from the supplied family and +// containerDefinitions . Optionally, you can add data volumes to your containers +// with the volumes parameter. For more information about task definition +// parameters and defaults, see [Amazon ECS Task Definitions]in the Amazon Elastic Container Service Developer +// Guide. +// +// You can specify a role for your task with the taskRoleArn parameter. When you +// specify a role for a task, its containers can then use the latest versions of +// the CLI or SDKs to make API requests to the Amazon Web Services services that +// are specified in the policy that's associated with the role. For more +// information, see [IAM Roles for Tasks]in the Amazon Elastic Container Service Developer Guide. +// +// You can specify a Docker networking mode for the containers in your task +// definition with the networkMode parameter. If you specify the awsvpc network +// mode, the task is allocated an elastic network interface, and you must specify a +// [NetworkConfiguration]when you create a service or run a task with the task definition. For more +// information, see [Task Networking]in the Amazon Elastic Container Service Developer Guide. +// +// [Amazon ECS Task Definitions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html +// [Task Networking]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html +// [IAM Roles for Tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html +// [NetworkConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html +func (c *Client) RegisterTaskDefinition(ctx context.Context, params *RegisterTaskDefinitionInput, optFns ...func(*Options)) (*RegisterTaskDefinitionOutput, error) { + if params == nil { + params = &RegisterTaskDefinitionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "RegisterTaskDefinition", params, optFns, c.addOperationRegisterTaskDefinitionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*RegisterTaskDefinitionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type RegisterTaskDefinitionInput struct { + + // A list of container definitions in JSON format that describe the different + // containers that make up your task. + // + // This member is required. + ContainerDefinitions []types.ContainerDefinition + + // You must specify a family for a task definition. You can use it track multiple + // versions of the same task definition. The family is used as a name for your + // task definition. Up to 255 letters (uppercase and lowercase), numbers, + // underscores, and hyphens are allowed. + // + // This member is required. + Family *string + + // The number of CPU units used by the task. It can be expressed as an integer + // using CPU units (for example, 1024 ) or as a string using vCPUs (for example, 1 + // vCPU or 1 vcpu ) in a task definition. String values are converted to an integer + // indicating the CPU units when the task definition is registered. + // + // Task-level CPU and memory parameters are ignored for Windows containers. We + // recommend specifying container-level resources for Windows containers. + // + // If you're using the EC2 launch type, this field is optional. Supported values + // are between 128 CPU units ( 0.125 vCPUs) and 10240 CPU units ( 10 vCPUs). If + // you do not specify a value, the parameter is ignored. + // + // If you're using the Fargate launch type, this field is required and you must + // use one of the following values, which determines your range of supported values + // for the memory parameter: + // + // The CPU units cannot be less than 1 vCPU when you use Windows containers on + // Fargate. + // + // - 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 + // GB) + // + // - 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 + // GB), 4096 (4 GB) + // + // - 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 + // GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) + // + // - 2048 (2 vCPU) - Available memory values: 4096 (4 GB) and 16384 (16 GB) in + // increments of 1024 (1 GB) + // + // - 4096 (4 vCPU) - Available memory values: 8192 (8 GB) and 30720 (30 GB) in + // increments of 1024 (1 GB) + // + // - 8192 (8 vCPU) - Available memory values: 16 GB and 60 GB in 4 GB increments + // + // This option requires Linux platform 1.4.0 or later. + // + // - 16384 (16vCPU) - Available memory values: 32GB and 120 GB in 8 GB increments + // + // This option requires Linux platform 1.4.0 or later. + Cpu *string + + // Enables fault injection when you register your task definition and allows for + // fault injection requests to be accepted from the task's containers. The default + // value is false . + EnableFaultInjection *bool + + // The amount of ephemeral storage to allocate for the task. This parameter is + // used to expand the total amount of ephemeral storage available, beyond the + // default amount, for tasks hosted on Fargate. For more information, see [Using data volumes in tasks]in the + // Amazon ECS Developer Guide. + // + // For tasks using the Fargate launch type, the task requires the following + // platforms: + // + // - Linux platform version 1.4.0 or later. + // + // - Windows platform version 1.0.0 or later. + // + // [Using data volumes in tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html + EphemeralStorage *types.EphemeralStorage + + // The Amazon Resource Name (ARN) of the task execution role that grants the + // Amazon ECS container agent permission to make Amazon Web Services API calls on + // your behalf. For informationabout the required IAM roles for Amazon ECS, see [IAM roles for Amazon ECS]in + // the Amazon Elastic Container Service Developer Guide. + // + // [IAM roles for Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-ecs-iam-role-overview.html + ExecutionRoleArn *string + + // The Elastic Inference accelerators to use for the containers in the task. + InferenceAccelerators []types.InferenceAccelerator + + // The IPC resource namespace to use for the containers in the task. The valid + // values are host , task , or none . If host is specified, then all containers + // within the tasks that specified the host IPC mode on the same container + // instance share the same IPC resources with the host Amazon EC2 instance. If task + // is specified, all containers within the specified task share the same IPC + // resources. If none is specified, then IPC resources within the containers of a + // task are private and not shared with other containers in a task or on the + // container instance. If no value is specified, then the IPC resource namespace + // sharing depends on the Docker daemon setting on the container instance. + // + // If the host IPC mode is used, be aware that there is a heightened risk of + // undesired IPC namespace expose. + // + // If you are setting namespaced kernel parameters using systemControls for the + // containers in the task, the following will apply to your IPC resource namespace. + // For more information, see [System Controls]in the Amazon Elastic Container Service Developer + // Guide. + // + // - For tasks that use the host IPC mode, IPC namespace related systemControls + // are not supported. + // + // - For tasks that use the task IPC mode, IPC namespace related systemControls + // will apply to all containers within a task. + // + // This parameter is not supported for Windows containers or tasks run on Fargate. + // + // [System Controls]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html + IpcMode types.IpcMode + + // The amount of memory (in MiB) used by the task. It can be expressed as an + // integer using MiB (for example , 1024 ) or as a string using GB (for example, + // 1GB or 1 GB ) in a task definition. String values are converted to an integer + // indicating the MiB when the task definition is registered. + // + // Task-level CPU and memory parameters are ignored for Windows containers. We + // recommend specifying container-level resources for Windows containers. + // + // If using the EC2 launch type, this field is optional. + // + // If using the Fargate launch type, this field is required and you must use one + // of the following values. This determines your range of supported values for the + // cpu parameter. + // + // The CPU units cannot be less than 1 vCPU when you use Windows containers on + // Fargate. + // + // - 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) + // + // - 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: + // 512 (.5 vCPU) + // + // - 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 + // GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) + // + // - Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - + // Available cpu values: 2048 (2 vCPU) + // + // - Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - + // Available cpu values: 4096 (4 vCPU) + // + // - Between 16 GB and 60 GB in 4 GB increments - Available cpu values: 8192 (8 + // vCPU) + // + // This option requires Linux platform 1.4.0 or later. + // + // - Between 32GB and 120 GB in 8 GB increments - Available cpu values: 16384 (16 + // vCPU) + // + // This option requires Linux platform 1.4.0 or later. + Memory *string + + // The Docker networking mode to use for the containers in the task. The valid + // values are none , bridge , awsvpc , and host . If no network mode is specified, + // the default is bridge . + // + // For Amazon ECS tasks on Fargate, the awsvpc network mode is required. For + // Amazon ECS tasks on Amazon EC2 Linux instances, any network mode can be used. + // For Amazon ECS tasks on Amazon EC2 Windows instances, or awsvpc can be used. If + // the network mode is set to none , you cannot specify port mappings in your + // container definitions, and the tasks containers do not have external + // connectivity. The host and awsvpc network modes offer the highest networking + // performance for containers because they use the EC2 network stack instead of the + // virtualized network stack provided by the bridge mode. + // + // With the host and awsvpc network modes, exposed container ports are mapped + // directly to the corresponding host port (for the host network mode) or the + // attached elastic network interface port (for the awsvpc network mode), so you + // cannot take advantage of dynamic host port mappings. + // + // When using the host network mode, you should not run containers using the root + // user (UID 0). It is considered best practice to use a non-root user. + // + // If the network mode is awsvpc , the task is allocated an elastic network + // interface, and you must specify a [NetworkConfiguration]value when you create a service or run a task + // with the task definition. For more information, see [Task Networking]in the Amazon Elastic + // Container Service Developer Guide. + // + // If the network mode is host , you cannot run multiple instantiations of the same + // task on a single container instance when port mappings are used. + // + // [Task Networking]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html + // [NetworkConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html + NetworkMode types.NetworkMode + + // The process namespace to use for the containers in the task. The valid values + // are host or task . On Fargate for Linux containers, the only valid value is task + // . For example, monitoring sidecars might need pidMode to access information + // about other containers running in the same task. + // + // If host is specified, all containers within the tasks that specified the host + // PID mode on the same container instance share the same process namespace with + // the host Amazon EC2 instance. + // + // If task is specified, all containers within the specified task share the same + // process namespace. + // + // If no value is specified, the default is a private namespace for each container. + // + // If the host PID mode is used, there's a heightened risk of undesired process + // namespace exposure. + // + // This parameter is not supported for Windows containers. + // + // This parameter is only supported for tasks that are hosted on Fargate if the + // tasks are using platform version 1.4.0 or later (Linux). This isn't supported + // for Windows containers on Fargate. + PidMode types.PidMode + + // An array of placement constraint objects to use for the task. You can specify a + // maximum of 10 constraints for each task. This limit includes constraints in the + // task definition and those specified at runtime. + PlacementConstraints []types.TaskDefinitionPlacementConstraint + + // The configuration details for the App Mesh proxy. + // + // For tasks hosted on Amazon EC2 instances, the container instances require at + // least version 1.26.0 of the container agent and at least version 1.26.0-1 of + // the ecs-init package to use a proxy configuration. If your container instances + // are launched from the Amazon ECS-optimized AMI version 20190301 or later, then + // they contain the required versions of the container agent and ecs-init . For + // more information, see [Amazon ECS-optimized AMI versions]in the Amazon Elastic Container Service Developer Guide. + // + // [Amazon ECS-optimized AMI versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html + ProxyConfiguration *types.ProxyConfiguration + + // The task launch type that Amazon ECS validates the task definition against. A + // client exception is returned if the task definition doesn't validate against the + // compatibilities specified. If no value is specified, the parameter is omitted + // from the response. + RequiresCompatibilities []types.Compatibility + + // The operating system that your tasks definitions run on. A platform family is + // specified only for tasks using the Fargate launch type. + RuntimePlatform *types.RuntimePlatform + + // The metadata that you apply to the task definition to help you categorize and + // organize them. Each tag consists of a key and an optional value. You define both + // of them. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + // The short name or full Amazon Resource Name (ARN) of the IAM role that + // containers in this task can assume. All containers in this task are granted the + // permissions that are specified in this role. For more information, see [IAM Roles for Tasks]in the + // Amazon Elastic Container Service Developer Guide. + // + // [IAM Roles for Tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html + TaskRoleArn *string + + // A list of volume definitions in JSON format that containers in your task might + // use. + Volumes []types.Volume + + noSmithyDocumentSerde +} + +type RegisterTaskDefinitionOutput struct { + + // The list of tags associated with the task definition. + Tags []types.Tag + + // The full description of the registered task definition. + TaskDefinition *types.TaskDefinition + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationRegisterTaskDefinitionMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpRegisterTaskDefinition{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpRegisterTaskDefinition{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "RegisterTaskDefinition"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpRegisterTaskDefinitionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opRegisterTaskDefinition(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opRegisterTaskDefinition(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "RegisterTaskDefinition", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RunTask.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RunTask.go new file mode 100644 index 000000000..8a10fd153 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_RunTask.go @@ -0,0 +1,435 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Starts a new task using the specified task definition. +// +// On March 21, 2024, a change was made to resolve the task definition revision +// before authorization. When a task definition revision is not specified, +// authorization will occur using the latest revision of a task definition. +// +// Amazon Elastic Inference (EI) is no longer available to customers. +// +// You can allow Amazon ECS to place tasks for you, or you can customize how +// Amazon ECS places tasks using placement constraints and placement strategies. +// For more information, see [Scheduling Tasks]in the Amazon Elastic Container Service Developer +// Guide. +// +// Alternatively, you can use StartTask to use your own scheduler or place tasks +// manually on specific container instances. +// +// You can attach Amazon EBS volumes to Amazon ECS tasks by configuring the volume +// when creating or updating a service. For more infomation, see [Amazon EBS volumes]in the Amazon +// Elastic Container Service Developer Guide. +// +// The Amazon ECS API follows an eventual consistency model. This is because of +// the distributed nature of the system supporting the API. This means that the +// result of an API command you run that affects your Amazon ECS resources might +// not be immediately visible to all subsequent commands you run. Keep this in mind +// when you carry out an API command that immediately follows a previous API +// command. +// +// To manage eventual consistency, you can do the following: +// +// - Confirm the state of the resource before you run a command to modify it. +// Run the DescribeTasks command using an exponential backoff algorithm to ensure +// that you allow enough time for the previous command to propagate through the +// system. To do this, run the DescribeTasks command repeatedly, starting with a +// couple of seconds of wait time and increasing gradually up to five minutes of +// wait time. +// +// - Add wait time between subsequent commands, even if the DescribeTasks +// command returns an accurate response. Apply an exponential backoff algorithm +// starting with a couple of seconds of wait time, and increase gradually up to +// about five minutes of wait time. +// +// [Scheduling Tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html +// [Amazon EBS volumes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volume-types +func (c *Client) RunTask(ctx context.Context, params *RunTaskInput, optFns ...func(*Options)) (*RunTaskOutput, error) { + if params == nil { + params = &RunTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "RunTask", params, optFns, c.addOperationRunTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*RunTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type RunTaskInput struct { + + // The family and revision ( family:revision ) or full ARN of the task definition + // to run. If a revision isn't specified, the latest ACTIVE revision is used. + // + // The full ARN value must match the value that you specified as the Resource of + // the principal's permissions policy. + // + // When you specify a task definition, you must either specify a specific + // revision, or all revisions in the ARN. + // + // To specify a specific revision, include the revision number in the ARN. For + // example, to specify revision 2, use + // arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:2 . + // + // To specify all revisions, use the wildcard (*) in the ARN. For example, to + // specify all revisions, use + // arn:aws:ecs:us-east-1:111122223333:task-definition/TaskFamilyName:* . + // + // For more information, see [Policy Resources for Amazon ECS] in the Amazon Elastic Container Service Developer + // Guide. + // + // [Policy Resources for Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-resources + // + // This member is required. + TaskDefinition *string + + // The capacity provider strategy to use for the task. + // + // If a capacityProviderStrategy is specified, the launchType parameter must be + // omitted. If no capacityProviderStrategy or launchType is specified, the + // defaultCapacityProviderStrategy for the cluster is used. + // + // When you use cluster auto scaling, you must specify capacityProviderStrategy + // and not launchType . + // + // A capacity provider strategy can contain a maximum of 20 capacity providers. + CapacityProviderStrategy []types.CapacityProviderStrategyItem + + // An identifier that you provide to ensure the idempotency of the request. It + // must be unique and is case sensitive. Up to 64 characters are allowed. The valid + // characters are characters in the range of 33-126, inclusive. For more + // information, see [Ensuring idempotency]. + // + // [Ensuring idempotency]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/ECS_Idempotency.html + ClientToken *string + + // The short name or full Amazon Resource Name (ARN) of the cluster to run your + // task on. If you do not specify a cluster, the default cluster is assumed. + Cluster *string + + // The number of instantiations of the specified task to place on your cluster. + // You can specify up to 10 tasks for each call. + Count *int32 + + // Specifies whether to use Amazon ECS managed tags for the task. For more + // information, see [Tagging Your Amazon ECS Resources]in the Amazon Elastic Container Service Developer Guide. + // + // [Tagging Your Amazon ECS Resources]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html + EnableECSManagedTags bool + + // Determines whether to use the execute command functionality for the containers + // in this task. If true , this enables execute command functionality on all + // containers in the task. + // + // If true , then the task definition must have a task role, or you must provide + // one as an override. + EnableExecuteCommand bool + + // The name of the task group to associate with the task. The default value is the + // family name of the task definition (for example, family:my-family-name ). + Group *string + + // The infrastructure to run your standalone task on. For more information, see [Amazon ECS launch types] + // in the Amazon Elastic Container Service Developer Guide. + // + // The FARGATE launch type runs your tasks on Fargate On-Demand infrastructure. + // + // Fargate Spot infrastructure is available for use but a capacity provider + // strategy must be used. For more information, see [Fargate capacity providers]in the Amazon ECS Developer + // Guide. + // + // The EC2 launch type runs your tasks on Amazon EC2 instances registered to your + // cluster. + // + // The EXTERNAL launch type runs your tasks on your on-premises server or virtual + // machine (VM) capacity registered to your cluster. + // + // A task can use either a launch type or a capacity provider strategy. If a + // launchType is specified, the capacityProviderStrategy parameter must be omitted. + // + // When you use cluster auto scaling, you must specify capacityProviderStrategy + // and not launchType . + // + // [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + // [Fargate capacity providers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-capacity-providers.html + LaunchType types.LaunchType + + // The network configuration for the task. This parameter is required for task + // definitions that use the awsvpc network mode to receive their own elastic + // network interface, and it isn't supported for other network modes. For more + // information, see [Task networking]in the Amazon Elastic Container Service Developer Guide. + // + // [Task networking]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html + NetworkConfiguration *types.NetworkConfiguration + + // A list of container overrides in JSON format that specify the name of a + // container in the specified task definition and the overrides it should receive. + // You can override the default command for a container (that's specified in the + // task definition or Docker image) with a command override. You can also override + // existing environment variables (that are specified in the task definition or + // Docker image) on a container or add new environment variables to it with an + // environment override. + // + // A total of 8192 characters are allowed for overrides. This limit includes the + // JSON formatting characters of the override structure. + Overrides *types.TaskOverride + + // An array of placement constraint objects to use for the task. You can specify + // up to 10 constraints for each task (including constraints in the task definition + // and those specified at runtime). + PlacementConstraints []types.PlacementConstraint + + // The placement strategy objects to use for the task. You can specify a maximum + // of 5 strategy rules for each task. + PlacementStrategy []types.PlacementStrategy + + // The platform version the task uses. A platform version is only specified for + // tasks hosted on Fargate. If one isn't specified, the LATEST platform version is + // used. For more information, see [Fargate platform versions]in the Amazon Elastic Container Service + // Developer Guide. + // + // [Fargate platform versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + PlatformVersion *string + + // Specifies whether to propagate the tags from the task definition to the task. + // If no value is specified, the tags aren't propagated. Tags can only be + // propagated to the task during task creation. To add tags to a task after task + // creation, use the[TagResource] API action. + // + // An error will be received if you specify the SERVICE option when running a task. + // + // [TagResource]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html + PropagateTags types.PropagateTags + + // This parameter is only used by Amazon ECS. It is not intended for use by + // customers. + ReferenceId *string + + // An optional tag specified when a task is started. For example, if you + // automatically trigger a task to run a batch process job, you could apply a + // unique identifier for that job to your task with the startedBy parameter. You + // can then identify which tasks belong to that job by filtering the results of a [ListTasks] + // call with the startedBy value. Up to 128 letters (uppercase and lowercase), + // numbers, hyphens (-), forward slash (/), and underscores (_) are allowed. + // + // If a task is started by an Amazon ECS service, then the startedBy parameter + // contains the deployment ID of the service that starts it. + // + // [ListTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTasks.html + StartedBy *string + + // The metadata that you apply to the task to help you categorize and organize + // them. Each tag consists of a key and an optional value, both of which you + // define. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + // The details of the volume that was configuredAtLaunch . You can configure the + // size, volumeType, IOPS, throughput, snapshot and encryption in in [TaskManagedEBSVolumeConfiguration]. The name of + // the volume must match the name from the task definition. + // + // [TaskManagedEBSVolumeConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskManagedEBSVolumeConfiguration.html + VolumeConfigurations []types.TaskVolumeConfiguration + + noSmithyDocumentSerde +} + +type RunTaskOutput struct { + + // Any failures associated with the call. + // + // For information about how to address failures, see [Service event messages] and [API failure reasons] in the Amazon Elastic + // Container Service Developer Guide. + // + // [API failure reasons]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html + // [Service event messages]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-event-messages.html#service-event-messages-list + Failures []types.Failure + + // A full description of the tasks that were run. The tasks that were successfully + // placed on your cluster are described here. + Tasks []types.Task + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationRunTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpRunTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpRunTask{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "RunTask"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addIdempotencyToken_opRunTaskMiddleware(stack, options); err != nil { + return err + } + if err = addOpRunTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opRunTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +type idempotencyToken_initializeOpRunTask struct { + tokenProvider IdempotencyTokenProvider +} + +func (*idempotencyToken_initializeOpRunTask) ID() string { + return "OperationIdempotencyTokenAutoFill" +} + +func (m *idempotencyToken_initializeOpRunTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + if m.tokenProvider == nil { + return next.HandleInitialize(ctx, in) + } + + input, ok := in.Parameters.(*RunTaskInput) + if !ok { + return out, metadata, fmt.Errorf("expected middleware input to be of type *RunTaskInput ") + } + + if input.ClientToken == nil { + t, err := m.tokenProvider.GetIdempotencyToken() + if err != nil { + return out, metadata, err + } + input.ClientToken = &t + } + return next.HandleInitialize(ctx, in) +} +func addIdempotencyToken_opRunTaskMiddleware(stack *middleware.Stack, cfg Options) error { + return stack.Initialize.Add(&idempotencyToken_initializeOpRunTask{tokenProvider: cfg.IdempotencyTokenProvider}, middleware.Before) +} + +func newServiceMetadataMiddleware_opRunTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "RunTask", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StartTask.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StartTask.go new file mode 100644 index 000000000..64e4584fe --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StartTask.go @@ -0,0 +1,277 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Starts a new task from the specified task definition on the specified container +// instance or instances. +// +// On March 21, 2024, a change was made to resolve the task definition revision +// before authorization. When a task definition revision is not specified, +// authorization will occur using the latest revision of a task definition. +// +// Amazon Elastic Inference (EI) is no longer available to customers. +// +// Alternatively, you can use RunTask to place tasks for you. For more +// information, see [Scheduling Tasks]in the Amazon Elastic Container Service Developer Guide. +// +// You can attach Amazon EBS volumes to Amazon ECS tasks by configuring the volume +// when creating or updating a service. For more infomation, see [Amazon EBS volumes]in the Amazon +// Elastic Container Service Developer Guide. +// +// [Scheduling Tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduling_tasks.html +// [Amazon EBS volumes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volume-types +func (c *Client) StartTask(ctx context.Context, params *StartTaskInput, optFns ...func(*Options)) (*StartTaskOutput, error) { + if params == nil { + params = &StartTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StartTask", params, optFns, c.addOperationStartTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StartTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StartTaskInput struct { + + // The container instance IDs or full ARN entries for the container instances + // where you would like to place your task. You can specify up to 10 container + // instances. + // + // This member is required. + ContainerInstances []string + + // The family and revision ( family:revision ) or full ARN of the task definition + // to start. If a revision isn't specified, the latest ACTIVE revision is used. + // + // This member is required. + TaskDefinition *string + + // The short name or full Amazon Resource Name (ARN) of the cluster where to start + // your task. If you do not specify a cluster, the default cluster is assumed. + Cluster *string + + // Specifies whether to use Amazon ECS managed tags for the task. For more + // information, see [Tagging Your Amazon ECS Resources]in the Amazon Elastic Container Service Developer Guide. + // + // [Tagging Your Amazon ECS Resources]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html + EnableECSManagedTags bool + + // Whether or not the execute command functionality is turned on for the task. If + // true , this turns on the execute command functionality on all containers in the + // task. + EnableExecuteCommand bool + + // The name of the task group to associate with the task. The default value is the + // family name of the task definition (for example, family:my-family-name). + Group *string + + // The VPC subnet and security group configuration for tasks that receive their + // own elastic network interface by using the awsvpc networking mode. + NetworkConfiguration *types.NetworkConfiguration + + // A list of container overrides in JSON format that specify the name of a + // container in the specified task definition and the overrides it receives. You + // can override the default command for a container (that's specified in the task + // definition or Docker image) with a command override. You can also override + // existing environment variables (that are specified in the task definition or + // Docker image) on a container or add new environment variables to it with an + // environment override. + // + // A total of 8192 characters are allowed for overrides. This limit includes the + // JSON formatting characters of the override structure. + Overrides *types.TaskOverride + + // Specifies whether to propagate the tags from the task definition or the service + // to the task. If no value is specified, the tags aren't propagated. + PropagateTags types.PropagateTags + + // This parameter is only used by Amazon ECS. It is not intended for use by + // customers. + ReferenceId *string + + // An optional tag specified when a task is started. For example, if you + // automatically trigger a task to run a batch process job, you could apply a + // unique identifier for that job to your task with the startedBy parameter. You + // can then identify which tasks belong to that job by filtering the results of a [ListTasks] + // call with the startedBy value. Up to 36 letters (uppercase and lowercase), + // numbers, hyphens (-), forward slash (/), and underscores (_) are allowed. + // + // If a task is started by an Amazon ECS service, the startedBy parameter contains + // the deployment ID of the service that starts it. + // + // [ListTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTasks.html + StartedBy *string + + // The metadata that you apply to the task to help you categorize and organize + // them. Each tag consists of a key and an optional value, both of which you + // define. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []types.Tag + + // The details of the volume that was configuredAtLaunch . You can configure the + // size, volumeType, IOPS, throughput, snapshot and encryption in [TaskManagedEBSVolumeConfiguration]. The name of + // the volume must match the name from the task definition. + // + // [TaskManagedEBSVolumeConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TaskManagedEBSVolumeConfiguration.html + VolumeConfigurations []types.TaskVolumeConfiguration + + noSmithyDocumentSerde +} + +type StartTaskOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // A full description of the tasks that were started. Each task that was + // successfully placed on your container instances is described. + Tasks []types.Task + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStartTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpStartTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpStartTask{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "StartTask"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpStartTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStartTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStartTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "StartTask", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StopTask.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StopTask.go new file mode 100644 index 000000000..881579fc2 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_StopTask.go @@ -0,0 +1,187 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Stops a running task. Any tags associated with the task will be deleted. +// +// When you call StopTask on a task, the equivalent of docker stop is issued to +// the containers running in the task. This results in a SIGTERM value and a +// default 30-second timeout, after which the SIGKILL value is sent and the +// containers are forcibly stopped. If the container handles the SIGTERM value +// gracefully and exits within 30 seconds from receiving it, no SIGKILL value is +// sent. +// +// For Windows containers, POSIX signals do not work and runtime stops the +// container by sending a CTRL_SHUTDOWN_EVENT . For more information, see [Unable to react to graceful shutdown of (Windows) container #25982] on +// GitHub. +// +// The default 30-second timeout can be configured on the Amazon ECS container +// agent with the ECS_CONTAINER_STOP_TIMEOUT variable. For more information, see [Amazon ECS Container Agent Configuration] +// in the Amazon Elastic Container Service Developer Guide. +// +// [Unable to react to graceful shutdown of (Windows) container #25982]: https://github.com/moby/moby/issues/25982 +// [Amazon ECS Container Agent Configuration]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html +func (c *Client) StopTask(ctx context.Context, params *StopTaskInput, optFns ...func(*Options)) (*StopTaskOutput, error) { + if params == nil { + params = &StopTaskInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "StopTask", params, optFns, c.addOperationStopTaskMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*StopTaskOutput) + out.ResultMetadata = metadata + return out, nil +} + +type StopTaskInput struct { + + // The task ID of the task to stop. + // + // This member is required. + Task *string + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // task to stop. If you do not specify a cluster, the default cluster is assumed. + Cluster *string + + // An optional message specified when a task is stopped. For example, if you're + // using a custom scheduler, you can use this parameter to specify the reason for + // stopping the task here, and the message appears in subsequent [DescribeTasks]> API operations + // on this task. + // + // [DescribeTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html + Reason *string + + noSmithyDocumentSerde +} + +type StopTaskOutput struct { + + // The task that was stopped. + Task *types.Task + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationStopTaskMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpStopTask{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpStopTask{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "StopTask"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpStopTaskValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opStopTask(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opStopTask(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "StopTask", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitAttachmentStateChanges.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitAttachmentStateChanges.go new file mode 100644 index 000000000..90f01ca7e --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitAttachmentStateChanges.go @@ -0,0 +1,164 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This action is only used by the Amazon ECS agent, and it is not intended for +// use outside of the agent. +// +// Sent to acknowledge that an attachment changed states. +func (c *Client) SubmitAttachmentStateChanges(ctx context.Context, params *SubmitAttachmentStateChangesInput, optFns ...func(*Options)) (*SubmitAttachmentStateChangesOutput, error) { + if params == nil { + params = &SubmitAttachmentStateChangesInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "SubmitAttachmentStateChanges", params, optFns, c.addOperationSubmitAttachmentStateChangesMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*SubmitAttachmentStateChangesOutput) + out.ResultMetadata = metadata + return out, nil +} + +type SubmitAttachmentStateChangesInput struct { + + // Any attachments associated with the state change request. + // + // This member is required. + Attachments []types.AttachmentStateChange + + // The short name or full ARN of the cluster that hosts the container instance the + // attachment belongs to. + Cluster *string + + noSmithyDocumentSerde +} + +type SubmitAttachmentStateChangesOutput struct { + + // Acknowledgement of the state change. + Acknowledgment *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationSubmitAttachmentStateChangesMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpSubmitAttachmentStateChanges{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpSubmitAttachmentStateChanges{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "SubmitAttachmentStateChanges"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpSubmitAttachmentStateChangesValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opSubmitAttachmentStateChanges(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opSubmitAttachmentStateChanges(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "SubmitAttachmentStateChanges", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitContainerStateChange.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitContainerStateChange.go new file mode 100644 index 000000000..2c89d8a7c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitContainerStateChange.go @@ -0,0 +1,177 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// This action is only used by the Amazon ECS agent, and it is not intended for +// use outside of the agent. +// +// Sent to acknowledge that a container changed states. +func (c *Client) SubmitContainerStateChange(ctx context.Context, params *SubmitContainerStateChangeInput, optFns ...func(*Options)) (*SubmitContainerStateChangeOutput, error) { + if params == nil { + params = &SubmitContainerStateChangeInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "SubmitContainerStateChange", params, optFns, c.addOperationSubmitContainerStateChangeMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*SubmitContainerStateChangeOutput) + out.ResultMetadata = metadata + return out, nil +} + +type SubmitContainerStateChangeInput struct { + + // The short name or full ARN of the cluster that hosts the container. + Cluster *string + + // The name of the container. + ContainerName *string + + // The exit code that's returned for the state change request. + ExitCode *int32 + + // The network bindings of the container. + NetworkBindings []types.NetworkBinding + + // The reason for the state change request. + Reason *string + + // The ID of the Docker container. + RuntimeId *string + + // The status of the state change request. + Status *string + + // The task ID or full Amazon Resource Name (ARN) of the task that hosts the + // container. + Task *string + + noSmithyDocumentSerde +} + +type SubmitContainerStateChangeOutput struct { + + // Acknowledgement of the state change. + Acknowledgment *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationSubmitContainerStateChangeMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpSubmitContainerStateChange{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpSubmitContainerStateChange{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "SubmitContainerStateChange"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opSubmitContainerStateChange(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opSubmitContainerStateChange(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "SubmitContainerStateChange", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitTaskStateChange.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitTaskStateChange.go new file mode 100644 index 000000000..649e3720a --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_SubmitTaskStateChange.go @@ -0,0 +1,187 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" + "time" +) + +// This action is only used by the Amazon ECS agent, and it is not intended for +// use outside of the agent. +// +// Sent to acknowledge that a task changed states. +func (c *Client) SubmitTaskStateChange(ctx context.Context, params *SubmitTaskStateChangeInput, optFns ...func(*Options)) (*SubmitTaskStateChangeOutput, error) { + if params == nil { + params = &SubmitTaskStateChangeInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "SubmitTaskStateChange", params, optFns, c.addOperationSubmitTaskStateChangeMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*SubmitTaskStateChangeOutput) + out.ResultMetadata = metadata + return out, nil +} + +type SubmitTaskStateChangeInput struct { + + // Any attachments associated with the state change request. + Attachments []types.AttachmentStateChange + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // task. + Cluster *string + + // Any containers that's associated with the state change request. + Containers []types.ContainerStateChange + + // The Unix timestamp for the time when the task execution stopped. + ExecutionStoppedAt *time.Time + + // The details for the managed agent that's associated with the task. + ManagedAgents []types.ManagedAgentStateChange + + // The Unix timestamp for the time when the container image pull started. + PullStartedAt *time.Time + + // The Unix timestamp for the time when the container image pull completed. + PullStoppedAt *time.Time + + // The reason for the state change request. + Reason *string + + // The status of the state change request. + Status *string + + // The task ID or full ARN of the task in the state change request. + Task *string + + noSmithyDocumentSerde +} + +type SubmitTaskStateChangeOutput struct { + + // Acknowledgement of the state change. + Acknowledgment *string + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationSubmitTaskStateChangeMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpSubmitTaskStateChange{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpSubmitTaskStateChange{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "SubmitTaskStateChange"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpSubmitTaskStateChangeValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opSubmitTaskStateChange(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opSubmitTaskStateChange(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "SubmitTaskStateChange", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_TagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_TagResource.go new file mode 100644 index 000000000..7883396ed --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_TagResource.go @@ -0,0 +1,186 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Associates the specified tags to a resource with the specified resourceArn . If +// existing tags on a resource aren't specified in the request parameters, they +// aren't changed. When a resource is deleted, the tags that are associated with +// that resource are deleted as well. +func (c *Client) TagResource(ctx context.Context, params *TagResourceInput, optFns ...func(*Options)) (*TagResourceOutput, error) { + if params == nil { + params = &TagResourceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "TagResource", params, optFns, c.addOperationTagResourceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*TagResourceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type TagResourceInput struct { + + // The Amazon Resource Name (ARN) of the resource to add tags to. Currently, the + // supported resources are Amazon ECS capacity providers, tasks, services, task + // definitions, clusters, and container instances. + // + // This member is required. + ResourceArn *string + + // The tags to add to the resource. A tag is an array of key-value pairs. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + // + // This member is required. + Tags []types.Tag + + noSmithyDocumentSerde +} + +type TagResourceOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationTagResourceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpTagResource{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpTagResource{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "TagResource"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpTagResourceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opTagResource(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opTagResource(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "TagResource", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UntagResource.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UntagResource.go new file mode 100644 index 000000000..2d9120107 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UntagResource.go @@ -0,0 +1,159 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Deletes specified tags from a resource. +func (c *Client) UntagResource(ctx context.Context, params *UntagResourceInput, optFns ...func(*Options)) (*UntagResourceOutput, error) { + if params == nil { + params = &UntagResourceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UntagResource", params, optFns, c.addOperationUntagResourceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UntagResourceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UntagResourceInput struct { + + // The Amazon Resource Name (ARN) of the resource to delete tags from. Currently, + // the supported resources are Amazon ECS capacity providers, tasks, services, task + // definitions, clusters, and container instances. + // + // This member is required. + ResourceArn *string + + // The keys of the tags to be removed. + // + // This member is required. + TagKeys []string + + noSmithyDocumentSerde +} + +type UntagResourceOutput struct { + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUntagResourceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUntagResource{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUntagResource{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UntagResource"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUntagResourceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUntagResource(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUntagResource(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UntagResource", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCapacityProvider.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCapacityProvider.go new file mode 100644 index 000000000..aa3d90841 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCapacityProvider.go @@ -0,0 +1,163 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies the parameters for a capacity provider. +func (c *Client) UpdateCapacityProvider(ctx context.Context, params *UpdateCapacityProviderInput, optFns ...func(*Options)) (*UpdateCapacityProviderOutput, error) { + if params == nil { + params = &UpdateCapacityProviderInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateCapacityProvider", params, optFns, c.addOperationUpdateCapacityProviderMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateCapacityProviderOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateCapacityProviderInput struct { + + // An object that represent the parameters to update for the Auto Scaling group + // capacity provider. + // + // This member is required. + AutoScalingGroupProvider *types.AutoScalingGroupProviderUpdate + + // The name of the capacity provider to update. + // + // This member is required. + Name *string + + noSmithyDocumentSerde +} + +type UpdateCapacityProviderOutput struct { + + // Details about the capacity provider. + CapacityProvider *types.CapacityProvider + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateCapacityProviderMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateCapacityProvider{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateCapacityProvider{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateCapacityProvider"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateCapacityProviderValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateCapacityProvider(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateCapacityProvider(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateCapacityProvider", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCluster.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCluster.go new file mode 100644 index 000000000..b4eade5fe --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateCluster.go @@ -0,0 +1,181 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates the cluster. +func (c *Client) UpdateCluster(ctx context.Context, params *UpdateClusterInput, optFns ...func(*Options)) (*UpdateClusterOutput, error) { + if params == nil { + params = &UpdateClusterInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateCluster", params, optFns, c.addOperationUpdateClusterMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateClusterOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateClusterInput struct { + + // The name of the cluster to modify the settings for. + // + // This member is required. + Cluster *string + + // The execute command configuration for the cluster. + Configuration *types.ClusterConfiguration + + // Use this parameter to set a default Service Connect namespace. After you set a + // default Service Connect namespace, any new services with Service Connect turned + // on that are created in the cluster are added as client services in the + // namespace. This setting only applies to new services that set the enabled + // parameter to true in the ServiceConnectConfiguration . You can set the namespace + // of each service individually in the ServiceConnectConfiguration to override + // this default parameter. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectDefaults *types.ClusterServiceConnectDefaultsRequest + + // The cluster settings for your cluster. + Settings []types.ClusterSetting + + noSmithyDocumentSerde +} + +type UpdateClusterOutput struct { + + // Details about the cluster. + Cluster *types.Cluster + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateClusterMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateCluster{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateCluster{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateCluster"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateClusterValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateCluster(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateCluster(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateCluster", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateClusterSettings.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateClusterSettings.go new file mode 100644 index 000000000..1b35dd40c --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateClusterSettings.go @@ -0,0 +1,173 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies the settings to use for a cluster. +func (c *Client) UpdateClusterSettings(ctx context.Context, params *UpdateClusterSettingsInput, optFns ...func(*Options)) (*UpdateClusterSettingsOutput, error) { + if params == nil { + params = &UpdateClusterSettingsInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateClusterSettings", params, optFns, c.addOperationUpdateClusterSettingsMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateClusterSettingsOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateClusterSettingsInput struct { + + // The name of the cluster to modify the settings for. + // + // This member is required. + Cluster *string + + // The setting to use by default for a cluster. This parameter is used to turn on + // CloudWatch Container Insights for a cluster. If this value is specified, it + // overrides the containerInsights value set with [PutAccountSetting] or [PutAccountSettingDefault]. + // + // Currently, if you delete an existing cluster that does not have Container + // Insights turned on, and then create a new cluster with the same name with + // Container Insights tuned on, Container Insights will not actually be turned on. + // If you want to preserve the same name for your existing cluster and turn on + // Container Insights, you must wait 7 days before you can re-create it. + // + // [PutAccountSettingDefault]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html + // [PutAccountSetting]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html + // + // This member is required. + Settings []types.ClusterSetting + + noSmithyDocumentSerde +} + +type UpdateClusterSettingsOutput struct { + + // Details about the cluster + Cluster *types.Cluster + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateClusterSettingsMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateClusterSettings{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateClusterSettings{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateClusterSettings"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateClusterSettingsValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateClusterSettings(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateClusterSettings(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateClusterSettings", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerAgent.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerAgent.go new file mode 100644 index 000000000..f65c195fe --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerAgent.go @@ -0,0 +1,184 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates the Amazon ECS container agent on a specified container instance. +// Updating the Amazon ECS container agent doesn't interrupt running tasks or +// services on the container instance. The process for updating the agent differs +// depending on whether your container instance was launched with the Amazon +// ECS-optimized AMI or another operating system. +// +// The UpdateContainerAgent API isn't supported for container instances using the +// Amazon ECS-optimized Amazon Linux 2 (arm64) AMI. To update the container agent, +// you can update the ecs-init package. This updates the agent. For more +// information, see [Updating the Amazon ECS container agent]in the Amazon Elastic Container Service Developer Guide. +// +// Agent updates with the UpdateContainerAgent API operation do not apply to +// Windows container instances. We recommend that you launch new container +// instances to update the agent version in your Windows clusters. +// +// The UpdateContainerAgent API requires an Amazon ECS-optimized AMI or Amazon +// Linux AMI with the ecs-init service installed and running. For help updating +// the Amazon ECS container agent on other operating systems, see [Manually updating the Amazon ECS container agent]in the Amazon +// Elastic Container Service Developer Guide. +// +// [Updating the Amazon ECS container agent]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/agent-update-ecs-ami.html +// [Manually updating the Amazon ECS container agent]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html#manually_update_agent +func (c *Client) UpdateContainerAgent(ctx context.Context, params *UpdateContainerAgentInput, optFns ...func(*Options)) (*UpdateContainerAgentOutput, error) { + if params == nil { + params = &UpdateContainerAgentInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateContainerAgent", params, optFns, c.addOperationUpdateContainerAgentMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateContainerAgentOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateContainerAgentInput struct { + + // The container instance ID or full ARN entries for the container instance where + // you would like to update the Amazon ECS container agent. + // + // This member is required. + ContainerInstance *string + + // The short name or full Amazon Resource Name (ARN) of the cluster that your + // container instance is running on. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + noSmithyDocumentSerde +} + +type UpdateContainerAgentOutput struct { + + // The container instance that the container agent was updated for. + ContainerInstance *types.ContainerInstance + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateContainerAgentMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateContainerAgent{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateContainerAgent{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateContainerAgent"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateContainerAgentValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateContainerAgent(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateContainerAgent(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateContainerAgent", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerInstancesState.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerInstancesState.go new file mode 100644 index 000000000..3b62608b7 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateContainerInstancesState.go @@ -0,0 +1,225 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies the status of an Amazon ECS container instance. +// +// Once a container instance has reached an ACTIVE state, you can change the +// status of a container instance to DRAINING to manually remove an instance from +// a cluster, for example to perform system updates, update the Docker daemon, or +// scale down the cluster size. +// +// A container instance can't be changed to DRAINING until it has reached an ACTIVE +// status. If the instance is in any other status, an error will be received. +// +// When you set a container instance to DRAINING , Amazon ECS prevents new tasks +// from being scheduled for placement on the container instance and replacement +// service tasks are started on other container instances in the cluster if the +// resources are available. Service tasks on the container instance that are in the +// PENDING state are stopped immediately. +// +// Service tasks on the container instance that are in the RUNNING state are +// stopped and replaced according to the service's deployment configuration +// parameters, minimumHealthyPercent and maximumPercent . You can change the +// deployment configuration of your service using [UpdateService]. +// +// - If minimumHealthyPercent is below 100%, the scheduler can ignore +// desiredCount temporarily during task replacement. For example, desiredCount is +// four tasks, a minimum of 50% allows the scheduler to stop two existing tasks +// before starting two new tasks. If the minimum is 100%, the service scheduler +// can't remove existing tasks until the replacement tasks are considered healthy. +// Tasks for services that do not use a load balancer are considered healthy if +// they're in the RUNNING state. Tasks for services that use a load balancer are +// considered healthy if they're in the RUNNING state and are reported as healthy +// by the load balancer. +// +// - The maximumPercent parameter represents an upper limit on the number of +// running tasks during task replacement. You can use this to define the +// replacement batch size. For example, if desiredCount is four tasks, a maximum +// of 200% starts four new tasks before stopping the four tasks to be drained, +// provided that the cluster resources required to do this are available. If the +// maximum is 100%, then replacement tasks can't start until the draining tasks +// have stopped. +// +// Any PENDING or RUNNING tasks that do not belong to a service aren't affected. +// You must wait for them to finish or stop them manually. +// +// A container instance has completed draining when it has no more RUNNING tasks. +// You can verify this using [ListTasks]. +// +// When a container instance has been drained, you can set a container instance to +// ACTIVE status and once it has reached that status the Amazon ECS scheduler can +// begin scheduling tasks on the instance again. +// +// [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html +// [ListTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListTasks.html +func (c *Client) UpdateContainerInstancesState(ctx context.Context, params *UpdateContainerInstancesStateInput, optFns ...func(*Options)) (*UpdateContainerInstancesStateOutput, error) { + if params == nil { + params = &UpdateContainerInstancesStateInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateContainerInstancesState", params, optFns, c.addOperationUpdateContainerInstancesStateMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateContainerInstancesStateOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateContainerInstancesStateInput struct { + + // A list of up to 10 container instance IDs or full ARN entries. + // + // This member is required. + ContainerInstances []string + + // The container instance state to update the container instance with. The only + // valid values for this action are ACTIVE and DRAINING . A container instance can + // only be updated to DRAINING status once it has reached an ACTIVE state. If a + // container instance is in REGISTERING , DEREGISTERING , or REGISTRATION_FAILED + // state you can describe the container instance but can't update the container + // instance state. + // + // This member is required. + Status types.ContainerInstanceStatus + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // container instance to update. If you do not specify a cluster, the default + // cluster is assumed. + Cluster *string + + noSmithyDocumentSerde +} + +type UpdateContainerInstancesStateOutput struct { + + // The list of container instances. + ContainerInstances []types.ContainerInstance + + // Any failures associated with the call. + Failures []types.Failure + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateContainerInstancesStateMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateContainerInstancesState{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateContainerInstancesState{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateContainerInstancesState"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateContainerInstancesStateValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateContainerInstancesState(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateContainerInstancesState(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateContainerInstancesState", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateService.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateService.go new file mode 100644 index 000000000..4d46e2a90 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateService.go @@ -0,0 +1,482 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies the parameters of a service. +// +// On March 21, 2024, a change was made to resolve the task definition revision +// before authorization. When a task definition revision is not specified, +// authorization will occur using the latest revision of a task definition. +// +// For services using the rolling update ( ECS ) you can update the desired count, +// deployment configuration, network configuration, load balancers, service +// registries, enable ECS managed tags option, propagate tags option, task +// placement constraints and strategies, and task definition. When you update any +// of these parameters, Amazon ECS starts new tasks with the new configuration. +// +// You can attach Amazon EBS volumes to Amazon ECS tasks by configuring the volume +// when starting or running a task, or when creating or updating a service. For +// more infomation, see [Amazon EBS volumes]in the Amazon Elastic Container Service Developer Guide. +// You can update your volume configurations and trigger a new deployment. +// volumeConfigurations is only supported for REPLICA service and not DAEMON +// service. If you leave volumeConfigurations null , it doesn't trigger a new +// deployment. For more infomation on volumes, see [Amazon EBS volumes]in the Amazon Elastic Container +// Service Developer Guide. +// +// For services using the blue/green ( CODE_DEPLOY ) deployment controller, only +// the desired count, deployment configuration, health check grace period, task +// placement constraints and strategies, enable ECS managed tags option, and +// propagate tags can be updated using this API. If the network configuration, +// platform version, task definition, or load balancer need to be updated, create a +// new CodeDeploy deployment. For more information, see [CreateDeployment]in the CodeDeploy API +// Reference. +// +// For services using an external deployment controller, you can update only the +// desired count, task placement constraints and strategies, health check grace +// period, enable ECS managed tags option, and propagate tags option, using this +// API. If the launch type, load balancer, network configuration, platform version, +// or task definition need to be updated, create a new task set For more +// information, see [CreateTaskSet]. +// +// You can add to or subtract from the number of instantiations of a task +// definition in a service by specifying the cluster that the service is running in +// and a new desiredCount parameter. +// +// You can attach Amazon EBS volumes to Amazon ECS tasks by configuring the volume +// when starting or running a task, or when creating or updating a service. For +// more infomation, see [Amazon EBS volumes]in the Amazon Elastic Container Service Developer Guide. +// +// If you have updated the container image of your application, you can create a +// new task definition with that image and deploy it to your service. The service +// scheduler uses the minimum healthy percent and maximum percent parameters (in +// the service's deployment configuration) to determine the deployment strategy. +// +// If your updated Docker image uses the same tag as what is in the existing task +// definition for your service (for example, my_image:latest ), you don't need to +// create a new revision of your task definition. You can update the service using +// the forceNewDeployment option. The new tasks launched by the deployment pull +// the current image/tag combination from your repository when they start. +// +// You can also update the deployment configuration of a service. When a +// deployment is triggered by updating the task definition of a service, the +// service scheduler uses the deployment configuration parameters, +// minimumHealthyPercent and maximumPercent , to determine the deployment strategy. +// +// - If minimumHealthyPercent is below 100%, the scheduler can ignore +// desiredCount temporarily during a deployment. For example, if desiredCount is +// four tasks, a minimum of 50% allows the scheduler to stop two existing tasks +// before starting two new tasks. Tasks for services that don't use a load balancer +// are considered healthy if they're in the RUNNING state. Tasks for services +// that use a load balancer are considered healthy if they're in the RUNNING +// state and are reported as healthy by the load balancer. +// +// - The maximumPercent parameter represents an upper limit on the number of +// running tasks during a deployment. You can use it to define the deployment batch +// size. For example, if desiredCount is four tasks, a maximum of 200% starts +// four new tasks before stopping the four older tasks (provided that the cluster +// resources required to do this are available). +// +// When [UpdateService] stops a task during a deployment, the equivalent of docker stop is issued +// to the containers running in the task. This results in a SIGTERM and a +// 30-second timeout. After this, SIGKILL is sent and the containers are forcibly +// stopped. If the container handles the SIGTERM gracefully and exits within 30 +// seconds from receiving it, no SIGKILL is sent. +// +// When the service scheduler launches new tasks, it determines task placement in +// your cluster with the following logic. +// +// - Determine which of the container instances in your cluster can support your +// service's task definition. For example, they have the required CPU, memory, +// ports, and container instance attributes. +// +// - By default, the service scheduler attempts to balance tasks across +// Availability Zones in this manner even though you can choose a different +// placement strategy. +// +// - Sort the valid container instances by the fewest number of running tasks +// for this service in the same Availability Zone as the instance. For example, if +// zone A has one running service task and zones B and C each have zero, valid +// container instances in either zone B or C are considered optimal for placement. +// +// - Place the new service task on a valid container instance in an optimal +// Availability Zone (based on the previous steps), favoring container instances +// with the fewest number of running tasks for this service. +// +// When the service scheduler stops running tasks, it attempts to maintain balance +// across the Availability Zones in your cluster using the following logic: +// +// - Sort the container instances by the largest number of running tasks for +// this service in the same Availability Zone as the instance. For example, if zone +// A has one running service task and zones B and C each have two, container +// instances in either zone B or C are considered optimal for termination. +// +// - Stop the task on a container instance in an optimal Availability Zone +// (based on the previous steps), favoring container instances with the largest +// number of running tasks for this service. +// +// You must have a service-linked role when you update any of the following +// service properties: +// +// - loadBalancers , +// +// - serviceRegistries +// +// For more information about the role see the CreateService request parameter [role]role +// . +// +// [role]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html#ECS-CreateService-request-role +// [CreateTaskSet]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateTaskSet.html +// [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html +// [Amazon EBS volumes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volume-types +// [CreateDeployment]: https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html +func (c *Client) UpdateService(ctx context.Context, params *UpdateServiceInput, optFns ...func(*Options)) (*UpdateServiceOutput, error) { + if params == nil { + params = &UpdateServiceInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateService", params, optFns, c.addOperationUpdateServiceMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateServiceOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateServiceInput struct { + + // The name of the service to update. + // + // This member is required. + Service *string + + // Indicates whether to use Availability Zone rebalancing for the service. + // + // For more information, see [Balancing an Amazon ECS service across Availability Zones] in the Amazon Elastic Container Service Developer + // Guide. + // + // [Balancing an Amazon ECS service across Availability Zones]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html + AvailabilityZoneRebalancing types.AvailabilityZoneRebalancing + + // The capacity provider strategy to update the service to use. + // + // if the service uses the default capacity provider strategy for the cluster, the + // service can be updated to use one or more capacity providers as opposed to the + // default capacity provider strategy. However, when a service is using a capacity + // provider strategy that's not the default capacity provider strategy, the service + // can't be updated to use the cluster's default capacity provider strategy. + // + // A capacity provider strategy consists of one or more capacity providers along + // with the base and weight to assign to them. A capacity provider must be + // associated with the cluster to be used in a capacity provider strategy. The [PutClusterCapacityProviders]API + // is used to associate a capacity provider with a cluster. Only capacity providers + // with an ACTIVE or UPDATING status can be used. + // + // If specifying a capacity provider that uses an Auto Scaling group, the capacity + // provider must already be created. New capacity providers can be created with the + // [CreateClusterCapacityProvider]API operation. + // + // To use a Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT + // capacity providers. The Fargate capacity providers are available to all accounts + // and only need to be associated with a cluster to be used. + // + // The [PutClusterCapacityProviders]API operation is used to update the list of available capacity providers + // for a cluster after the cluster is created. + // + // [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html + // [CreateClusterCapacityProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateClusterCapacityProvider.html + CapacityProviderStrategy []types.CapacityProviderStrategyItem + + // The short name or full Amazon Resource Name (ARN) of the cluster that your + // service runs on. If you do not specify a cluster, the default cluster is + // assumed. + Cluster *string + + // Optional deployment parameters that control how many tasks run during the + // deployment and the ordering of stopping and starting tasks. + DeploymentConfiguration *types.DeploymentConfiguration + + // The number of instantiations of the task to place and keep running in your + // service. + DesiredCount *int32 + + // Determines whether to turn on Amazon ECS managed tags for the tasks in the + // service. For more information, see [Tagging Your Amazon ECS Resources]in the Amazon Elastic Container Service + // Developer Guide. + // + // Only tasks launched after the update will reflect the update. To update the + // tags on all tasks, set forceNewDeployment to true , so that Amazon ECS starts + // new tasks with the updated tags. + // + // [Tagging Your Amazon ECS Resources]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html + EnableECSManagedTags *bool + + // If true , this enables execute command functionality on all task containers. + // + // If you do not want to override the value that was set when the service was + // created, you can set this to null when performing this action. + EnableExecuteCommand *bool + + // Determines whether to force a new deployment of the service. By default, + // deployments aren't forced. You can use this option to start a new deployment + // with no service definition changes. For example, you can update a service's + // tasks to use a newer Docker image with the same image/tag combination ( + // my_image:latest ) or to roll Fargate tasks onto a newer platform version. + ForceNewDeployment bool + + // The period of time, in seconds, that the Amazon ECS service scheduler ignores + // unhealthy Elastic Load Balancing, VPC Lattice, and container health checks after + // a task has first started. If you don't specify a health check grace period + // value, the default value of 0 is used. If you don't use any of the health + // checks, then healthCheckGracePeriodSeconds is unused. + // + // If your service's tasks take a while to start and respond to health checks, you + // can specify a health check grace period of up to 2,147,483,647 seconds (about 69 + // years). During that time, the Amazon ECS service scheduler ignores health check + // status. This grace period can prevent the service scheduler from marking tasks + // as unhealthy and stopping them before they have time to come up. + HealthCheckGracePeriodSeconds *int32 + + // A list of Elastic Load Balancing load balancer objects. It contains the load + // balancer name, the container name, and the container port to access from the + // load balancer. The container name is as it appears in a container definition. + // + // When you add, update, or remove a load balancer configuration, Amazon ECS + // starts new tasks with the updated Elastic Load Balancing configuration, and then + // stops the old tasks when the new tasks are running. + // + // For services that use rolling updates, you can add, update, or remove Elastic + // Load Balancing target groups. You can update from a single target group to + // multiple target groups and from multiple target groups to a single target group. + // + // For services that use blue/green deployments, you can update Elastic Load + // Balancing target groups by using [CreateDeployment]through CodeDeploy. Note that multiple target + // groups are not supported for blue/green deployments. For more information see [Register multiple target groups with a service] + // in the Amazon Elastic Container Service Developer Guide. + // + // For services that use the external deployment controller, you can add, update, + // or remove load balancers by using [CreateTaskSet]. Note that multiple target groups are not + // supported for external deployments. For more information see [Register multiple target groups with a service]in the Amazon + // Elastic Container Service Developer Guide. + // + // You can remove existing loadBalancers by passing an empty list. + // + // [CreateTaskSet]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateTaskSet.html + // [Register multiple target groups with a service]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html + // [CreateDeployment]: https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html + LoadBalancers []types.LoadBalancer + + // An object representing the network configuration for the service. + NetworkConfiguration *types.NetworkConfiguration + + // An array of task placement constraint objects to update the service to use. If + // no value is specified, the existing placement constraints for the service will + // remain unchanged. If this value is specified, it will override any existing + // placement constraints defined for the service. To remove all existing placement + // constraints, specify an empty array. + // + // You can specify a maximum of 10 constraints for each task. This limit includes + // constraints in the task definition and those specified at runtime. + PlacementConstraints []types.PlacementConstraint + + // The task placement strategy objects to update the service to use. If no value + // is specified, the existing placement strategy for the service will remain + // unchanged. If this value is specified, it will override the existing placement + // strategy defined for the service. To remove an existing placement strategy, + // specify an empty object. + // + // You can specify a maximum of five strategy rules for each service. + PlacementStrategy []types.PlacementStrategy + + // The platform version that your tasks in the service run on. A platform version + // is only specified for tasks using the Fargate launch type. If a platform version + // is not specified, the LATEST platform version is used. For more information, + // see [Fargate Platform Versions]in the Amazon Elastic Container Service Developer Guide. + // + // [Fargate Platform Versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + PlatformVersion *string + + // Determines whether to propagate the tags from the task definition or the + // service to the task. If no value is specified, the tags aren't propagated. + // + // Only tasks launched after the update will reflect the update. To update the + // tags on all tasks, set forceNewDeployment to true , so that Amazon ECS starts + // new tasks with the updated tags. + PropagateTags types.PropagateTags + + // The configuration for this service to discover and connect to services, and be + // discovered by, and connected from, other services within a namespace. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectConfiguration *types.ServiceConnectConfiguration + + // The details for the service discovery registries to assign to this service. For + // more information, see [Service Discovery]. + // + // When you add, update, or remove the service registries configuration, Amazon + // ECS starts new tasks with the updated service registries configuration, and then + // stops the old tasks when the new tasks are running. + // + // You can remove existing serviceRegistries by passing an empty list. + // + // [Service Discovery]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html + ServiceRegistries []types.ServiceRegistry + + // The family and revision ( family:revision ) or full ARN of the task definition + // to run in your service. If a revision is not specified, the latest ACTIVE + // revision is used. If you modify the task definition with UpdateService , Amazon + // ECS spawns a task with the new version of the task definition and then stops an + // old task after the new version is running. + TaskDefinition *string + + // The details of the volume that was configuredAtLaunch . You can configure the + // size, volumeType, IOPS, throughput, snapshot and encryption in [ServiceManagedEBSVolumeConfiguration]. The name of + // the volume must match the name from the task definition. If set to null, no new + // deployment is triggered. Otherwise, if this configuration differs from the + // existing one, it triggers a new deployment. + // + // [ServiceManagedEBSVolumeConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceManagedEBSVolumeConfiguration.html + VolumeConfigurations []types.ServiceVolumeConfiguration + + // An object representing the VPC Lattice configuration for the service being + // updated. + VpcLatticeConfigurations []types.VpcLatticeConfiguration + + noSmithyDocumentSerde +} + +type UpdateServiceOutput struct { + + // The full description of your service following the update call. + Service *types.Service + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateServiceMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateService{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateService{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateService"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateServiceValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateService(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateService(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateService", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateServicePrimaryTaskSet.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateServicePrimaryTaskSet.go new file mode 100644 index 000000000..abfd27524 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateServicePrimaryTaskSet.go @@ -0,0 +1,176 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies which task set in a service is the primary task set. Any parameters +// that are updated on the primary task set in a service will transition to the +// service. This is used when a service uses the EXTERNAL deployment controller +// type. For more information, see [Amazon ECS Deployment Types]in the Amazon Elastic Container Service +// Developer Guide. +// +// [Amazon ECS Deployment Types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html +func (c *Client) UpdateServicePrimaryTaskSet(ctx context.Context, params *UpdateServicePrimaryTaskSetInput, optFns ...func(*Options)) (*UpdateServicePrimaryTaskSetOutput, error) { + if params == nil { + params = &UpdateServicePrimaryTaskSetInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateServicePrimaryTaskSet", params, optFns, c.addOperationUpdateServicePrimaryTaskSetMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateServicePrimaryTaskSetOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateServicePrimaryTaskSetInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service that the task set exists in. + // + // This member is required. + Cluster *string + + // The short name or full Amazon Resource Name (ARN) of the task set to set as the + // primary task set in the deployment. + // + // This member is required. + PrimaryTaskSet *string + + // The short name or full Amazon Resource Name (ARN) of the service that the task + // set exists in. + // + // This member is required. + Service *string + + noSmithyDocumentSerde +} + +type UpdateServicePrimaryTaskSetOutput struct { + + // The details about the task set. + TaskSet *types.TaskSet + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateServicePrimaryTaskSetMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateServicePrimaryTaskSet{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateServicePrimaryTaskSet{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateServicePrimaryTaskSet"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateServicePrimaryTaskSetValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateServicePrimaryTaskSet(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateServicePrimaryTaskSet(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateServicePrimaryTaskSet", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskProtection.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskProtection.go new file mode 100644 index 000000000..0be834bfd --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskProtection.go @@ -0,0 +1,218 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Updates the protection status of a task. You can set protectionEnabled to true +// to protect your task from termination during scale-in events from [Service Autoscaling]or [deployments]. +// +// Task-protection, by default, expires after 2 hours at which point Amazon ECS +// clears the protectionEnabled property making the task eligible for termination +// by a subsequent scale-in event. +// +// You can specify a custom expiration period for task protection from 1 minute to +// up to 2,880 minutes (48 hours). To specify the custom expiration period, set the +// expiresInMinutes property. The expiresInMinutes property is always reset when +// you invoke this operation for a task that already has protectionEnabled set to +// true . You can keep extending the protection expiration period of a task by +// invoking this operation repeatedly. +// +// To learn more about Amazon ECS task protection, see [Task scale-in protection] in the Amazon Elastic +// Container Service Developer Guide . +// +// This operation is only supported for tasks belonging to an Amazon ECS service. +// Invoking this operation for a standalone task will result in an TASK_NOT_VALID +// failure. For more information, see [API failure reasons]. +// +// If you prefer to set task protection from within the container, we recommend +// using the [Task scale-in protection endpoint]. +// +// [deployments]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html +// [API failure reasons]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html +// [Task scale-in protection endpoint]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-scale-in-protection-endpoint.html +// [Task scale-in protection]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-scale-in-protection.html +// [Service Autoscaling]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html +func (c *Client) UpdateTaskProtection(ctx context.Context, params *UpdateTaskProtectionInput, optFns ...func(*Options)) (*UpdateTaskProtectionOutput, error) { + if params == nil { + params = &UpdateTaskProtectionInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateTaskProtection", params, optFns, c.addOperationUpdateTaskProtectionMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateTaskProtectionOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateTaskProtectionInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service that the task sets exist in. + // + // This member is required. + Cluster *string + + // Specify true to mark a task for protection and false to unset protection, + // making it eligible for termination. + // + // This member is required. + ProtectionEnabled bool + + // A list of up to 10 task IDs or full ARN entries. + // + // This member is required. + Tasks []string + + // If you set protectionEnabled to true , you can specify the duration for task + // protection in minutes. You can specify a value from 1 minute to up to 2,880 + // minutes (48 hours). During this time, your task will not be terminated by + // scale-in events from Service Auto Scaling or deployments. After this time period + // lapses, protectionEnabled will be reset to false . + // + // If you don’t specify the time, then the task is automatically protected for 120 + // minutes (2 hours). + ExpiresInMinutes *int32 + + noSmithyDocumentSerde +} + +type UpdateTaskProtectionOutput struct { + + // Any failures associated with the call. + Failures []types.Failure + + // A list of tasks with the following information. + // + // - taskArn : The task ARN. + // + // - protectionEnabled : The protection status of the task. If scale-in + // protection is turned on for a task, the value is true . Otherwise, it is false + // . + // + // - expirationDate : The epoch time when protection for the task will expire. + ProtectedTasks []types.ProtectedTask + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateTaskProtectionMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateTaskProtection{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateTaskProtection{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateTaskProtection"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateTaskProtectionValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateTaskProtection(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateTaskProtection(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateTaskProtection", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskSet.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskSet.go new file mode 100644 index 000000000..011535ede --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/api_op_UpdateTaskSet.go @@ -0,0 +1,179 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + "github.com/aws/smithy-go/middleware" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +// Modifies a task set. This is used when a service uses the EXTERNAL deployment +// controller type. For more information, see [Amazon ECS Deployment Types]in the Amazon Elastic Container +// Service Developer Guide. +// +// [Amazon ECS Deployment Types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html +func (c *Client) UpdateTaskSet(ctx context.Context, params *UpdateTaskSetInput, optFns ...func(*Options)) (*UpdateTaskSetOutput, error) { + if params == nil { + params = &UpdateTaskSetInput{} + } + + result, metadata, err := c.invokeOperation(ctx, "UpdateTaskSet", params, optFns, c.addOperationUpdateTaskSetMiddlewares) + if err != nil { + return nil, err + } + + out := result.(*UpdateTaskSetOutput) + out.ResultMetadata = metadata + return out, nil +} + +type UpdateTaskSetInput struct { + + // The short name or full Amazon Resource Name (ARN) of the cluster that hosts the + // service that the task set is found in. + // + // This member is required. + Cluster *string + + // A floating-point percentage of the desired number of tasks to place and keep + // running in the task set. + // + // This member is required. + Scale *types.Scale + + // The short name or full Amazon Resource Name (ARN) of the service that the task + // set is found in. + // + // This member is required. + Service *string + + // The short name or full Amazon Resource Name (ARN) of the task set to update. + // + // This member is required. + TaskSet *string + + noSmithyDocumentSerde +} + +type UpdateTaskSetOutput struct { + + // Details about the task set. + TaskSet *types.TaskSet + + // Metadata pertaining to the operation's result. + ResultMetadata middleware.Metadata + + noSmithyDocumentSerde +} + +func (c *Client) addOperationUpdateTaskSetMiddlewares(stack *middleware.Stack, options Options) (err error) { + if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { + return err + } + err = stack.Serialize.Add(&awsAwsjson11_serializeOpUpdateTaskSet{}, middleware.After) + if err != nil { + return err + } + err = stack.Deserialize.Add(&awsAwsjson11_deserializeOpUpdateTaskSet{}, middleware.After) + if err != nil { + return err + } + if err := addProtocolFinalizerMiddlewares(stack, options, "UpdateTaskSet"); err != nil { + return fmt.Errorf("add protocol finalizers: %v", err) + } + + if err = addlegacyEndpointContextSetter(stack, options); err != nil { + return err + } + if err = addSetLoggerMiddleware(stack, options); err != nil { + return err + } + if err = addClientRequestID(stack); err != nil { + return err + } + if err = addComputeContentLength(stack); err != nil { + return err + } + if err = addResolveEndpointMiddleware(stack, options); err != nil { + return err + } + if err = addComputePayloadSHA256(stack); err != nil { + return err + } + if err = addRetry(stack, options); err != nil { + return err + } + if err = addRawResponseToMetadata(stack); err != nil { + return err + } + if err = addRecordResponseTiming(stack); err != nil { + return err + } + if err = addSpanRetryLoop(stack, options); err != nil { + return err + } + if err = addClientUserAgent(stack, options); err != nil { + return err + } + if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { + return err + } + if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { + return err + } + if err = addTimeOffsetBuild(stack, c); err != nil { + return err + } + if err = addUserAgentRetryMode(stack, options); err != nil { + return err + } + if err = addOpUpdateTaskSetValidationMiddleware(stack); err != nil { + return err + } + if err = stack.Initialize.Add(newServiceMetadataMiddleware_opUpdateTaskSet(options.Region), middleware.Before); err != nil { + return err + } + if err = addRecursionDetection(stack); err != nil { + return err + } + if err = addRequestIDRetrieverMiddleware(stack); err != nil { + return err + } + if err = addResponseErrorMiddleware(stack); err != nil { + return err + } + if err = addRequestResponseLogging(stack, options); err != nil { + return err + } + if err = addDisableHTTPSMiddleware(stack, options); err != nil { + return err + } + if err = addSpanInitializeStart(stack); err != nil { + return err + } + if err = addSpanInitializeEnd(stack); err != nil { + return err + } + if err = addSpanBuildRequestStart(stack); err != nil { + return err + } + if err = addSpanBuildRequestEnd(stack); err != nil { + return err + } + return nil +} + +func newServiceMetadataMiddleware_opUpdateTaskSet(region string) *awsmiddleware.RegisterServiceMetadata { + return &awsmiddleware.RegisterServiceMetadata{ + Region: region, + ServiceID: ServiceID, + OperationName: "UpdateTaskSet", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/auth.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/auth.go new file mode 100644 index 000000000..b66d2ea59 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/auth.go @@ -0,0 +1,313 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + smithy "github.com/aws/smithy-go" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" +) + +func bindAuthParamsRegion(_ interface{}, params *AuthResolverParameters, _ interface{}, options Options) { + params.Region = options.Region +} + +type setLegacyContextSigningOptionsMiddleware struct { +} + +func (*setLegacyContextSigningOptionsMiddleware) ID() string { + return "setLegacyContextSigningOptions" +} + +func (m *setLegacyContextSigningOptionsMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + rscheme := getResolvedAuthScheme(ctx) + schemeID := rscheme.Scheme.SchemeID() + + if sn := awsmiddleware.GetSigningName(ctx); sn != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningName(&rscheme.SignerProperties, sn) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningName(&rscheme.SignerProperties, sn) + } + } + + if sr := awsmiddleware.GetSigningRegion(ctx); sr != "" { + if schemeID == "aws.auth#sigv4" { + smithyhttp.SetSigV4SigningRegion(&rscheme.SignerProperties, sr) + } else if schemeID == "aws.auth#sigv4a" { + smithyhttp.SetSigV4ASigningRegions(&rscheme.SignerProperties, []string{sr}) + } + } + + return next.HandleFinalize(ctx, in) +} + +func addSetLegacyContextSigningOptionsMiddleware(stack *middleware.Stack) error { + return stack.Finalize.Insert(&setLegacyContextSigningOptionsMiddleware{}, "Signing", middleware.Before) +} + +type withAnonymous struct { + resolver AuthSchemeResolver +} + +var _ AuthSchemeResolver = (*withAnonymous)(nil) + +func (v *withAnonymous) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + opts, err := v.resolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return nil, err + } + + opts = append(opts, &smithyauth.Option{ + SchemeID: smithyauth.SchemeIDAnonymous, + }) + return opts, nil +} + +func wrapWithAnonymousAuth(options *Options) { + if _, ok := options.AuthSchemeResolver.(*defaultAuthSchemeResolver); !ok { + return + } + + options.AuthSchemeResolver = &withAnonymous{ + resolver: options.AuthSchemeResolver, + } +} + +// AuthResolverParameters contains the set of inputs necessary for auth scheme +// resolution. +type AuthResolverParameters struct { + // The name of the operation being invoked. + Operation string + + // The region in which the operation is being invoked. + Region string +} + +func bindAuthResolverParams(ctx context.Context, operation string, input interface{}, options Options) *AuthResolverParameters { + params := &AuthResolverParameters{ + Operation: operation, + } + + bindAuthParamsRegion(ctx, params, input, options) + + return params +} + +// AuthSchemeResolver returns a set of possible authentication options for an +// operation. +type AuthSchemeResolver interface { + ResolveAuthSchemes(context.Context, *AuthResolverParameters) ([]*smithyauth.Option, error) +} + +type defaultAuthSchemeResolver struct{} + +var _ AuthSchemeResolver = (*defaultAuthSchemeResolver)(nil) + +func (*defaultAuthSchemeResolver) ResolveAuthSchemes(ctx context.Context, params *AuthResolverParameters) ([]*smithyauth.Option, error) { + if overrides, ok := operationAuthOptions[params.Operation]; ok { + return overrides(params), nil + } + return serviceAuthOptions(params), nil +} + +var operationAuthOptions = map[string]func(*AuthResolverParameters) []*smithyauth.Option{} + +func serviceAuthOptions(params *AuthResolverParameters) []*smithyauth.Option { + return []*smithyauth.Option{ + { + SchemeID: smithyauth.SchemeIDSigV4, + SignerProperties: func() smithy.Properties { + var props smithy.Properties + smithyhttp.SetSigV4SigningName(&props, "ecs") + smithyhttp.SetSigV4SigningRegion(&props, params.Region) + return props + }(), + }, + } +} + +type resolveAuthSchemeMiddleware struct { + operation string + options Options +} + +func (*resolveAuthSchemeMiddleware) ID() string { + return "ResolveAuthScheme" +} + +func (m *resolveAuthSchemeMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveAuthScheme") + defer span.End() + + params := bindAuthResolverParams(ctx, m.operation, getOperationInput(ctx), m.options) + options, err := m.options.AuthSchemeResolver.ResolveAuthSchemes(ctx, params) + if err != nil { + return out, metadata, fmt.Errorf("resolve auth scheme: %w", err) + } + + scheme, ok := m.selectScheme(options) + if !ok { + return out, metadata, fmt.Errorf("could not select an auth scheme") + } + + ctx = setResolvedAuthScheme(ctx, scheme) + + span.SetProperty("auth.scheme_id", scheme.Scheme.SchemeID()) + span.End() + return next.HandleFinalize(ctx, in) +} + +func (m *resolveAuthSchemeMiddleware) selectScheme(options []*smithyauth.Option) (*resolvedAuthScheme, bool) { + for _, option := range options { + if option.SchemeID == smithyauth.SchemeIDAnonymous { + return newResolvedAuthScheme(smithyhttp.NewAnonymousScheme(), option), true + } + + for _, scheme := range m.options.AuthSchemes { + if scheme.SchemeID() != option.SchemeID { + continue + } + + if scheme.IdentityResolver(m.options) != nil { + return newResolvedAuthScheme(scheme, option), true + } + } + } + + return nil, false +} + +type resolvedAuthSchemeKey struct{} + +type resolvedAuthScheme struct { + Scheme smithyhttp.AuthScheme + IdentityProperties smithy.Properties + SignerProperties smithy.Properties +} + +func newResolvedAuthScheme(scheme smithyhttp.AuthScheme, option *smithyauth.Option) *resolvedAuthScheme { + return &resolvedAuthScheme{ + Scheme: scheme, + IdentityProperties: option.IdentityProperties, + SignerProperties: option.SignerProperties, + } +} + +func setResolvedAuthScheme(ctx context.Context, scheme *resolvedAuthScheme) context.Context { + return middleware.WithStackValue(ctx, resolvedAuthSchemeKey{}, scheme) +} + +func getResolvedAuthScheme(ctx context.Context) *resolvedAuthScheme { + v, _ := middleware.GetStackValue(ctx, resolvedAuthSchemeKey{}).(*resolvedAuthScheme) + return v +} + +type getIdentityMiddleware struct { + options Options +} + +func (*getIdentityMiddleware) ID() string { + return "GetIdentity" +} + +func (m *getIdentityMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + innerCtx, span := tracing.StartSpan(ctx, "GetIdentity") + defer span.End() + + rscheme := getResolvedAuthScheme(innerCtx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + resolver := rscheme.Scheme.IdentityResolver(m.options) + if resolver == nil { + return out, metadata, fmt.Errorf("no identity resolver") + } + + identity, err := timeOperationMetric(ctx, "client.call.resolve_identity_duration", + func() (smithyauth.Identity, error) { + return resolver.GetIdentity(innerCtx, rscheme.IdentityProperties) + }, + func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("get identity: %w", err) + } + + ctx = setIdentity(ctx, identity) + + span.End() + return next.HandleFinalize(ctx, in) +} + +type identityKey struct{} + +func setIdentity(ctx context.Context, identity smithyauth.Identity) context.Context { + return middleware.WithStackValue(ctx, identityKey{}, identity) +} + +func getIdentity(ctx context.Context) smithyauth.Identity { + v, _ := middleware.GetStackValue(ctx, identityKey{}).(smithyauth.Identity) + return v +} + +type signRequestMiddleware struct { + options Options +} + +func (*signRequestMiddleware) ID() string { + return "Signing" +} + +func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "SignRequest") + defer span.End() + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unexpected transport type %T", in.Request) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + identity := getIdentity(ctx) + if identity == nil { + return out, metadata, fmt.Errorf("no identity") + } + + signer := rscheme.Scheme.Signer() + if signer == nil { + return out, metadata, fmt.Errorf("no signer") + } + + _, err = timeOperationMetric(ctx, "client.call.signing_duration", func() (any, error) { + return nil, signer.SignRequest(ctx, req, identity, rscheme.SignerProperties) + }, func(o *metrics.RecordMetricOptions) { + o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID()) + }) + if err != nil { + return out, metadata, fmt.Errorf("sign request: %w", err) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/deserializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/deserializers.go new file mode 100644 index 000000000..3dccf3be6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/deserializers.go @@ -0,0 +1,22148 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws/protocol/restjson" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + smithy "github.com/aws/smithy-go" + smithyio "github.com/aws/smithy-go/io" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/ptr" + smithytime "github.com/aws/smithy-go/time" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "io" + "math" + "strings" + "time" +) + +func deserializeS3Expires(v string) (*time.Time, error) { + t, err := smithytime.ParseHTTPDate(v) + if err != nil { + return nil, nil + } + return &t, nil +} + +type awsAwsjson11_deserializeOpCreateCapacityProvider struct { +} + +func (*awsAwsjson11_deserializeOpCreateCapacityProvider) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpCreateCapacityProvider) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorCreateCapacityProvider(response, &metadata) + } + output := &CreateCapacityProviderOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentCreateCapacityProviderOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorCreateCapacityProvider(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("LimitExceededException", errorCode): + return awsAwsjson11_deserializeErrorLimitExceededException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UpdateInProgressException", errorCode): + return awsAwsjson11_deserializeErrorUpdateInProgressException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpCreateCluster struct { +} + +func (*awsAwsjson11_deserializeOpCreateCluster) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpCreateCluster) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorCreateCluster(response, &metadata) + } + output := &CreateClusterOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentCreateClusterOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorCreateCluster(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("NamespaceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorNamespaceNotFoundException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpCreateService struct { +} + +func (*awsAwsjson11_deserializeOpCreateService) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpCreateService) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorCreateService(response, &metadata) + } + output := &CreateServiceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentCreateServiceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorCreateService(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("NamespaceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorNamespaceNotFoundException(response, errorBody) + + case strings.EqualFold("PlatformTaskDefinitionIncompatibilityException", errorCode): + return awsAwsjson11_deserializeErrorPlatformTaskDefinitionIncompatibilityException(response, errorBody) + + case strings.EqualFold("PlatformUnknownException", errorCode): + return awsAwsjson11_deserializeErrorPlatformUnknownException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpCreateTaskSet struct { +} + +func (*awsAwsjson11_deserializeOpCreateTaskSet) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpCreateTaskSet) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorCreateTaskSet(response, &metadata) + } + output := &CreateTaskSetOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentCreateTaskSetOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorCreateTaskSet(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("NamespaceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorNamespaceNotFoundException(response, errorBody) + + case strings.EqualFold("PlatformTaskDefinitionIncompatibilityException", errorCode): + return awsAwsjson11_deserializeErrorPlatformTaskDefinitionIncompatibilityException(response, errorBody) + + case strings.EqualFold("PlatformUnknownException", errorCode): + return awsAwsjson11_deserializeErrorPlatformUnknownException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotActiveException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotActiveException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeleteAccountSetting struct { +} + +func (*awsAwsjson11_deserializeOpDeleteAccountSetting) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeleteAccountSetting) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeleteAccountSetting(response, &metadata) + } + output := &DeleteAccountSettingOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeleteAccountSettingOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeleteAccountSetting(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeleteAttributes struct { +} + +func (*awsAwsjson11_deserializeOpDeleteAttributes) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeleteAttributes) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeleteAttributes(response, &metadata) + } + output := &DeleteAttributesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeleteAttributesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeleteAttributes(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("TargetNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorTargetNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeleteCapacityProvider struct { +} + +func (*awsAwsjson11_deserializeOpDeleteCapacityProvider) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeleteCapacityProvider) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeleteCapacityProvider(response, &metadata) + } + output := &DeleteCapacityProviderOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeleteCapacityProviderOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeleteCapacityProvider(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeleteCluster struct { +} + +func (*awsAwsjson11_deserializeOpDeleteCluster) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeleteCluster) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeleteCluster(response, &metadata) + } + output := &DeleteClusterOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeleteClusterOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeleteCluster(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterContainsContainerInstancesException", errorCode): + return awsAwsjson11_deserializeErrorClusterContainsContainerInstancesException(response, errorBody) + + case strings.EqualFold("ClusterContainsServicesException", errorCode): + return awsAwsjson11_deserializeErrorClusterContainsServicesException(response, errorBody) + + case strings.EqualFold("ClusterContainsTasksException", errorCode): + return awsAwsjson11_deserializeErrorClusterContainsTasksException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UpdateInProgressException", errorCode): + return awsAwsjson11_deserializeErrorUpdateInProgressException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeleteService struct { +} + +func (*awsAwsjson11_deserializeOpDeleteService) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeleteService) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeleteService(response, &metadata) + } + output := &DeleteServiceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeleteServiceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeleteService(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeleteTaskDefinitions struct { +} + +func (*awsAwsjson11_deserializeOpDeleteTaskDefinitions) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeleteTaskDefinitions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeleteTaskDefinitions(response, &metadata) + } + output := &DeleteTaskDefinitionsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeleteTaskDefinitionsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeleteTaskDefinitions(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeleteTaskSet struct { +} + +func (*awsAwsjson11_deserializeOpDeleteTaskSet) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeleteTaskSet) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeleteTaskSet(response, &metadata) + } + output := &DeleteTaskSetOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeleteTaskSetOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeleteTaskSet(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotActiveException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotActiveException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("TaskSetNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorTaskSetNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeregisterContainerInstance struct { +} + +func (*awsAwsjson11_deserializeOpDeregisterContainerInstance) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeregisterContainerInstance) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeregisterContainerInstance(response, &metadata) + } + output := &DeregisterContainerInstanceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeregisterContainerInstanceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeregisterContainerInstance(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDeregisterTaskDefinition struct { +} + +func (*awsAwsjson11_deserializeOpDeregisterTaskDefinition) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDeregisterTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDeregisterTaskDefinition(response, &metadata) + } + output := &DeregisterTaskDefinitionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDeregisterTaskDefinitionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDeregisterTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeCapacityProviders struct { +} + +func (*awsAwsjson11_deserializeOpDescribeCapacityProviders) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeCapacityProviders) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeCapacityProviders(response, &metadata) + } + output := &DescribeCapacityProvidersOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeCapacityProvidersOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeCapacityProviders(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeClusters struct { +} + +func (*awsAwsjson11_deserializeOpDescribeClusters) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeClusters) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeClusters(response, &metadata) + } + output := &DescribeClustersOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeClustersOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeClusters(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeContainerInstances struct { +} + +func (*awsAwsjson11_deserializeOpDescribeContainerInstances) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeContainerInstances) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeContainerInstances(response, &metadata) + } + output := &DescribeContainerInstancesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeContainerInstancesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeContainerInstances(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeServiceDeployments struct { +} + +func (*awsAwsjson11_deserializeOpDescribeServiceDeployments) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeServiceDeployments) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeServiceDeployments(response, &metadata) + } + output := &DescribeServiceDeploymentsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeServiceDeploymentsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeServiceDeployments(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeServiceRevisions struct { +} + +func (*awsAwsjson11_deserializeOpDescribeServiceRevisions) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeServiceRevisions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeServiceRevisions(response, &metadata) + } + output := &DescribeServiceRevisionsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeServiceRevisionsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeServiceRevisions(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeServices struct { +} + +func (*awsAwsjson11_deserializeOpDescribeServices) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeServices) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeServices(response, &metadata) + } + output := &DescribeServicesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeServicesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeServices(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeTaskDefinition struct { +} + +func (*awsAwsjson11_deserializeOpDescribeTaskDefinition) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeTaskDefinition(response, &metadata) + } + output := &DescribeTaskDefinitionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeTaskDefinitionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeTasks struct { +} + +func (*awsAwsjson11_deserializeOpDescribeTasks) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeTasks) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeTasks(response, &metadata) + } + output := &DescribeTasksOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeTasksOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeTasks(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDescribeTaskSets struct { +} + +func (*awsAwsjson11_deserializeOpDescribeTaskSets) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDescribeTaskSets) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDescribeTaskSets(response, &metadata) + } + output := &DescribeTaskSetsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDescribeTaskSetsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDescribeTaskSets(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotActiveException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotActiveException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpDiscoverPollEndpoint struct { +} + +func (*awsAwsjson11_deserializeOpDiscoverPollEndpoint) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpDiscoverPollEndpoint) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorDiscoverPollEndpoint(response, &metadata) + } + output := &DiscoverPollEndpointOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentDiscoverPollEndpointOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorDiscoverPollEndpoint(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpExecuteCommand struct { +} + +func (*awsAwsjson11_deserializeOpExecuteCommand) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpExecuteCommand) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorExecuteCommand(response, &metadata) + } + output := &ExecuteCommandOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentExecuteCommandOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorExecuteCommand(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("TargetNotConnectedException", errorCode): + return awsAwsjson11_deserializeErrorTargetNotConnectedException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpGetTaskProtection struct { +} + +func (*awsAwsjson11_deserializeOpGetTaskProtection) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpGetTaskProtection) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorGetTaskProtection(response, &metadata) + } + output := &GetTaskProtectionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentGetTaskProtectionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorGetTaskProtection(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListAccountSettings struct { +} + +func (*awsAwsjson11_deserializeOpListAccountSettings) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListAccountSettings) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListAccountSettings(response, &metadata) + } + output := &ListAccountSettingsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListAccountSettingsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListAccountSettings(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListAttributes struct { +} + +func (*awsAwsjson11_deserializeOpListAttributes) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListAttributes) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListAttributes(response, &metadata) + } + output := &ListAttributesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListAttributesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListAttributes(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListClusters struct { +} + +func (*awsAwsjson11_deserializeOpListClusters) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListClusters) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListClusters(response, &metadata) + } + output := &ListClustersOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListClustersOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListClusters(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListContainerInstances struct { +} + +func (*awsAwsjson11_deserializeOpListContainerInstances) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListContainerInstances) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListContainerInstances(response, &metadata) + } + output := &ListContainerInstancesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListContainerInstancesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListContainerInstances(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListServiceDeployments struct { +} + +func (*awsAwsjson11_deserializeOpListServiceDeployments) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListServiceDeployments) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListServiceDeployments(response, &metadata) + } + output := &ListServiceDeploymentsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListServiceDeploymentsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListServiceDeployments(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListServices struct { +} + +func (*awsAwsjson11_deserializeOpListServices) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListServices) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListServices(response, &metadata) + } + output := &ListServicesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListServicesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListServices(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListServicesByNamespace struct { +} + +func (*awsAwsjson11_deserializeOpListServicesByNamespace) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListServicesByNamespace) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListServicesByNamespace(response, &metadata) + } + output := &ListServicesByNamespaceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListServicesByNamespaceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListServicesByNamespace(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("NamespaceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorNamespaceNotFoundException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListTagsForResource struct { +} + +func (*awsAwsjson11_deserializeOpListTagsForResource) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListTagsForResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListTagsForResource(response, &metadata) + } + output := &ListTagsForResourceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListTagsForResourceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListTagsForResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListTaskDefinitionFamilies struct { +} + +func (*awsAwsjson11_deserializeOpListTaskDefinitionFamilies) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListTaskDefinitionFamilies) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListTaskDefinitionFamilies(response, &metadata) + } + output := &ListTaskDefinitionFamiliesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListTaskDefinitionFamiliesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListTaskDefinitionFamilies(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListTaskDefinitions struct { +} + +func (*awsAwsjson11_deserializeOpListTaskDefinitions) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListTaskDefinitions) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListTaskDefinitions(response, &metadata) + } + output := &ListTaskDefinitionsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListTaskDefinitionsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListTaskDefinitions(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpListTasks struct { +} + +func (*awsAwsjson11_deserializeOpListTasks) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpListTasks) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorListTasks(response, &metadata) + } + output := &ListTasksOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentListTasksOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorListTasks(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpPutAccountSetting struct { +} + +func (*awsAwsjson11_deserializeOpPutAccountSetting) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpPutAccountSetting) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorPutAccountSetting(response, &metadata) + } + output := &PutAccountSettingOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentPutAccountSettingOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorPutAccountSetting(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpPutAccountSettingDefault struct { +} + +func (*awsAwsjson11_deserializeOpPutAccountSettingDefault) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpPutAccountSettingDefault) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorPutAccountSettingDefault(response, &metadata) + } + output := &PutAccountSettingDefaultOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentPutAccountSettingDefaultOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorPutAccountSettingDefault(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpPutAttributes struct { +} + +func (*awsAwsjson11_deserializeOpPutAttributes) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpPutAttributes) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorPutAttributes(response, &metadata) + } + output := &PutAttributesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentPutAttributesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorPutAttributes(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AttributeLimitExceededException", errorCode): + return awsAwsjson11_deserializeErrorAttributeLimitExceededException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("TargetNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorTargetNotFoundException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpPutClusterCapacityProviders struct { +} + +func (*awsAwsjson11_deserializeOpPutClusterCapacityProviders) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpPutClusterCapacityProviders) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorPutClusterCapacityProviders(response, &metadata) + } + output := &PutClusterCapacityProvidersOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentPutClusterCapacityProvidersOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorPutClusterCapacityProviders(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ResourceInUseException", errorCode): + return awsAwsjson11_deserializeErrorResourceInUseException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UpdateInProgressException", errorCode): + return awsAwsjson11_deserializeErrorUpdateInProgressException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpRegisterContainerInstance struct { +} + +func (*awsAwsjson11_deserializeOpRegisterContainerInstance) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpRegisterContainerInstance) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorRegisterContainerInstance(response, &metadata) + } + output := &RegisterContainerInstanceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentRegisterContainerInstanceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorRegisterContainerInstance(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpRegisterTaskDefinition struct { +} + +func (*awsAwsjson11_deserializeOpRegisterTaskDefinition) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpRegisterTaskDefinition) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorRegisterTaskDefinition(response, &metadata) + } + output := &RegisterTaskDefinitionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentRegisterTaskDefinitionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorRegisterTaskDefinition(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpRunTask struct { +} + +func (*awsAwsjson11_deserializeOpRunTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpRunTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorRunTask(response, &metadata) + } + output := &RunTaskOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentRunTaskOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorRunTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("BlockedException", errorCode): + return awsAwsjson11_deserializeErrorBlockedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("ConflictException", errorCode): + return awsAwsjson11_deserializeErrorConflictException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("PlatformTaskDefinitionIncompatibilityException", errorCode): + return awsAwsjson11_deserializeErrorPlatformTaskDefinitionIncompatibilityException(response, errorBody) + + case strings.EqualFold("PlatformUnknownException", errorCode): + return awsAwsjson11_deserializeErrorPlatformUnknownException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpStartTask struct { +} + +func (*awsAwsjson11_deserializeOpStartTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpStartTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorStartTask(response, &metadata) + } + output := &StartTaskOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentStartTaskOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorStartTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpStopTask struct { +} + +func (*awsAwsjson11_deserializeOpStopTask) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpStopTask) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorStopTask(response, &metadata) + } + output := &StopTaskOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentStopTaskOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorStopTask(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpSubmitAttachmentStateChanges struct { +} + +func (*awsAwsjson11_deserializeOpSubmitAttachmentStateChanges) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpSubmitAttachmentStateChanges) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorSubmitAttachmentStateChanges(response, &metadata) + } + output := &SubmitAttachmentStateChangesOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentSubmitAttachmentStateChangesOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorSubmitAttachmentStateChanges(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpSubmitContainerStateChange struct { +} + +func (*awsAwsjson11_deserializeOpSubmitContainerStateChange) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpSubmitContainerStateChange) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorSubmitContainerStateChange(response, &metadata) + } + output := &SubmitContainerStateChangeOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentSubmitContainerStateChangeOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorSubmitContainerStateChange(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpSubmitTaskStateChange struct { +} + +func (*awsAwsjson11_deserializeOpSubmitTaskStateChange) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpSubmitTaskStateChange) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorSubmitTaskStateChange(response, &metadata) + } + output := &SubmitTaskStateChangeOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentSubmitTaskStateChangeOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorSubmitTaskStateChange(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpTagResource struct { +} + +func (*awsAwsjson11_deserializeOpTagResource) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpTagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorTagResource(response, &metadata) + } + output := &TagResourceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentTagResourceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorTagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUntagResource struct { +} + +func (*awsAwsjson11_deserializeOpUntagResource) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUntagResource) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUntagResource(response, &metadata) + } + output := &UntagResourceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUntagResourceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUntagResource(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateCapacityProvider struct { +} + +func (*awsAwsjson11_deserializeOpUpdateCapacityProvider) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateCapacityProvider) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateCapacityProvider(response, &metadata) + } + output := &UpdateCapacityProviderOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateCapacityProviderOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateCapacityProvider(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateCluster struct { +} + +func (*awsAwsjson11_deserializeOpUpdateCluster) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateCluster) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateCluster(response, &metadata) + } + output := &UpdateClusterOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateClusterOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateCluster(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("NamespaceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorNamespaceNotFoundException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateClusterSettings struct { +} + +func (*awsAwsjson11_deserializeOpUpdateClusterSettings) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateClusterSettings) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateClusterSettings(response, &metadata) + } + output := &UpdateClusterSettingsOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateClusterSettingsOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateClusterSettings(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateContainerAgent struct { +} + +func (*awsAwsjson11_deserializeOpUpdateContainerAgent) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateContainerAgent) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateContainerAgent(response, &metadata) + } + output := &UpdateContainerAgentOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateContainerAgentOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateContainerAgent(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("MissingVersionException", errorCode): + return awsAwsjson11_deserializeErrorMissingVersionException(response, errorBody) + + case strings.EqualFold("NoUpdateAvailableException", errorCode): + return awsAwsjson11_deserializeErrorNoUpdateAvailableException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UpdateInProgressException", errorCode): + return awsAwsjson11_deserializeErrorUpdateInProgressException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateContainerInstancesState struct { +} + +func (*awsAwsjson11_deserializeOpUpdateContainerInstancesState) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateContainerInstancesState) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateContainerInstancesState(response, &metadata) + } + output := &UpdateContainerInstancesStateOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateContainerInstancesStateOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateContainerInstancesState(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateService struct { +} + +func (*awsAwsjson11_deserializeOpUpdateService) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateService) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateService(response, &metadata) + } + output := &UpdateServiceOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateServiceOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateService(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("NamespaceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorNamespaceNotFoundException(response, errorBody) + + case strings.EqualFold("PlatformTaskDefinitionIncompatibilityException", errorCode): + return awsAwsjson11_deserializeErrorPlatformTaskDefinitionIncompatibilityException(response, errorBody) + + case strings.EqualFold("PlatformUnknownException", errorCode): + return awsAwsjson11_deserializeErrorPlatformUnknownException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotActiveException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotActiveException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateServicePrimaryTaskSet struct { +} + +func (*awsAwsjson11_deserializeOpUpdateServicePrimaryTaskSet) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateServicePrimaryTaskSet) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateServicePrimaryTaskSet(response, &metadata) + } + output := &UpdateServicePrimaryTaskSetOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateServicePrimaryTaskSetOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateServicePrimaryTaskSet(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotActiveException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotActiveException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("TaskSetNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorTaskSetNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateTaskProtection struct { +} + +func (*awsAwsjson11_deserializeOpUpdateTaskProtection) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateTaskProtection) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateTaskProtection(response, &metadata) + } + output := &UpdateTaskProtectionOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateTaskProtectionOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateTaskProtection(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ResourceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorResourceNotFoundException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +type awsAwsjson11_deserializeOpUpdateTaskSet struct { +} + +func (*awsAwsjson11_deserializeOpUpdateTaskSet) ID() string { + return "OperationDeserializer" +} + +func (m *awsAwsjson11_deserializeOpUpdateTaskSet) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) ( + out middleware.DeserializeOutput, metadata middleware.Metadata, err error, +) { + out, metadata, err = next.HandleDeserialize(ctx, in) + if err != nil { + return out, metadata, err + } + + _, span := tracing.StartSpan(ctx, "OperationDeserializer") + endTimer := startMetricTimer(ctx, "client.call.deserialization_duration") + defer endTimer() + defer span.End() + response, ok := out.RawResponse.(*smithyhttp.Response) + if !ok { + return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)} + } + + if response.StatusCode < 200 || response.StatusCode >= 300 { + return out, metadata, awsAwsjson11_deserializeOpErrorUpdateTaskSet(response, &metadata) + } + output := &UpdateTaskSetOutput{} + out.Result = output + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(response.Body, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + err = awsAwsjson11_deserializeOpDocumentUpdateTaskSetOutput(&output, shape) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return out, metadata, err + } + + return out, metadata, err +} + +func awsAwsjson11_deserializeOpErrorUpdateTaskSet(response *smithyhttp.Response, metadata *middleware.Metadata) error { + var errorBuffer bytes.Buffer + if _, err := io.Copy(&errorBuffer, response.Body); err != nil { + return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)} + } + errorBody := bytes.NewReader(errorBuffer.Bytes()) + + errorCode := "UnknownError" + errorMessage := errorCode + + headerCode := response.Header.Get("X-Amzn-ErrorType") + + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + bodyInfo, err := getProtocolErrorInfo(decoder) + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + if typ, ok := resolveProtocolErrorType(headerCode, bodyInfo); ok { + errorCode = restjson.SanitizeErrorCode(typ) + } + if len(bodyInfo.Message) != 0 { + errorMessage = bodyInfo.Message + } + switch { + case strings.EqualFold("AccessDeniedException", errorCode): + return awsAwsjson11_deserializeErrorAccessDeniedException(response, errorBody) + + case strings.EqualFold("ClientException", errorCode): + return awsAwsjson11_deserializeErrorClientException(response, errorBody) + + case strings.EqualFold("ClusterNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorClusterNotFoundException(response, errorBody) + + case strings.EqualFold("InvalidParameterException", errorCode): + return awsAwsjson11_deserializeErrorInvalidParameterException(response, errorBody) + + case strings.EqualFold("ServerException", errorCode): + return awsAwsjson11_deserializeErrorServerException(response, errorBody) + + case strings.EqualFold("ServiceNotActiveException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotActiveException(response, errorBody) + + case strings.EqualFold("ServiceNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorServiceNotFoundException(response, errorBody) + + case strings.EqualFold("TaskSetNotFoundException", errorCode): + return awsAwsjson11_deserializeErrorTaskSetNotFoundException(response, errorBody) + + case strings.EqualFold("UnsupportedFeatureException", errorCode): + return awsAwsjson11_deserializeErrorUnsupportedFeatureException(response, errorBody) + + default: + genericError := &smithy.GenericAPIError{ + Code: errorCode, + Message: errorMessage, + } + return genericError + + } +} + +func awsAwsjson11_deserializeErrorAccessDeniedException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.AccessDeniedException{} + err := awsAwsjson11_deserializeDocumentAccessDeniedException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorAttributeLimitExceededException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.AttributeLimitExceededException{} + err := awsAwsjson11_deserializeDocumentAttributeLimitExceededException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorBlockedException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.BlockedException{} + err := awsAwsjson11_deserializeDocumentBlockedException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorClientException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ClientException{} + err := awsAwsjson11_deserializeDocumentClientException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorClusterContainsContainerInstancesException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ClusterContainsContainerInstancesException{} + err := awsAwsjson11_deserializeDocumentClusterContainsContainerInstancesException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorClusterContainsServicesException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ClusterContainsServicesException{} + err := awsAwsjson11_deserializeDocumentClusterContainsServicesException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorClusterContainsTasksException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ClusterContainsTasksException{} + err := awsAwsjson11_deserializeDocumentClusterContainsTasksException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorClusterNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ClusterNotFoundException{} + err := awsAwsjson11_deserializeDocumentClusterNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorConflictException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ConflictException{} + err := awsAwsjson11_deserializeDocumentConflictException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorInvalidParameterException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.InvalidParameterException{} + err := awsAwsjson11_deserializeDocumentInvalidParameterException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorLimitExceededException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.LimitExceededException{} + err := awsAwsjson11_deserializeDocumentLimitExceededException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorMissingVersionException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.MissingVersionException{} + err := awsAwsjson11_deserializeDocumentMissingVersionException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorNamespaceNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.NamespaceNotFoundException{} + err := awsAwsjson11_deserializeDocumentNamespaceNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorNoUpdateAvailableException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.NoUpdateAvailableException{} + err := awsAwsjson11_deserializeDocumentNoUpdateAvailableException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorPlatformTaskDefinitionIncompatibilityException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.PlatformTaskDefinitionIncompatibilityException{} + err := awsAwsjson11_deserializeDocumentPlatformTaskDefinitionIncompatibilityException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorPlatformUnknownException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.PlatformUnknownException{} + err := awsAwsjson11_deserializeDocumentPlatformUnknownException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorResourceInUseException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ResourceInUseException{} + err := awsAwsjson11_deserializeDocumentResourceInUseException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorResourceNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ResourceNotFoundException{} + err := awsAwsjson11_deserializeDocumentResourceNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorServerException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ServerException{} + err := awsAwsjson11_deserializeDocumentServerException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorServiceNotActiveException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ServiceNotActiveException{} + err := awsAwsjson11_deserializeDocumentServiceNotActiveException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorServiceNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.ServiceNotFoundException{} + err := awsAwsjson11_deserializeDocumentServiceNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorTargetNotConnectedException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.TargetNotConnectedException{} + err := awsAwsjson11_deserializeDocumentTargetNotConnectedException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorTargetNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.TargetNotFoundException{} + err := awsAwsjson11_deserializeDocumentTargetNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorTaskSetNotFoundException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.TaskSetNotFoundException{} + err := awsAwsjson11_deserializeDocumentTaskSetNotFoundException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorUnsupportedFeatureException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.UnsupportedFeatureException{} + err := awsAwsjson11_deserializeDocumentUnsupportedFeatureException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeErrorUpdateInProgressException(response *smithyhttp.Response, errorBody *bytes.Reader) error { + var buff [1024]byte + ringBuffer := smithyio.NewRingBuffer(buff[:]) + + body := io.TeeReader(errorBody, ringBuffer) + decoder := json.NewDecoder(body) + decoder.UseNumber() + var shape interface{} + if err := decoder.Decode(&shape); err != nil && err != io.EOF { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + output := &types.UpdateInProgressException{} + err := awsAwsjson11_deserializeDocumentUpdateInProgressException(&output, shape) + + if err != nil { + var snapshot bytes.Buffer + io.Copy(&snapshot, ringBuffer) + err = &smithy.DeserializationError{ + Err: fmt.Errorf("failed to decode response body, %w", err), + Snapshot: snapshot.Bytes(), + } + return err + } + + errorBody.Seek(0, io.SeekStart) + return output +} + +func awsAwsjson11_deserializeDocumentAccessDeniedException(v **types.AccessDeniedException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AccessDeniedException + if *v == nil { + sv = &types.AccessDeniedException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentAttachment(v **types.Attachment, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Attachment + if *v == nil { + sv = &types.Attachment{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "details": + if err := awsAwsjson11_deserializeDocumentAttachmentDetails(&sv.Details, value); err != nil { + return err + } + + case "id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Status = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Type = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentAttachmentDetails(v *[]types.KeyValuePair, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.KeyValuePair + if *v == nil { + cv = []types.KeyValuePair{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.KeyValuePair + destAddr := &col + if err := awsAwsjson11_deserializeDocumentKeyValuePair(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentAttachments(v *[]types.Attachment, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Attachment + if *v == nil { + cv = []types.Attachment{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Attachment + destAddr := &col + if err := awsAwsjson11_deserializeDocumentAttachment(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentAttribute(v **types.Attribute, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Attribute + if *v == nil { + sv = &types.Attribute{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "targetId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TargetId = ptr.String(jtv) + } + + case "targetType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TargetType to be of type string, got %T instead", value) + } + sv.TargetType = types.TargetType(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentAttributeLimitExceededException(v **types.AttributeLimitExceededException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AttributeLimitExceededException + if *v == nil { + sv = &types.AttributeLimitExceededException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentAttributes(v *[]types.Attribute, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Attribute + if *v == nil { + cv = []types.Attribute{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Attribute + destAddr := &col + if err := awsAwsjson11_deserializeDocumentAttribute(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentAutoScalingGroupProvider(v **types.AutoScalingGroupProvider, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AutoScalingGroupProvider + if *v == nil { + sv = &types.AutoScalingGroupProvider{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "autoScalingGroupArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AutoScalingGroupArn = ptr.String(jtv) + } + + case "managedDraining": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ManagedDraining to be of type string, got %T instead", value) + } + sv.ManagedDraining = types.ManagedDraining(jtv) + } + + case "managedScaling": + if err := awsAwsjson11_deserializeDocumentManagedScaling(&sv.ManagedScaling, value); err != nil { + return err + } + + case "managedTerminationProtection": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ManagedTerminationProtection to be of type string, got %T instead", value) + } + sv.ManagedTerminationProtection = types.ManagedTerminationProtection(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentAwsVpcConfiguration(v **types.AwsVpcConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.AwsVpcConfiguration + if *v == nil { + sv = &types.AwsVpcConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "assignPublicIp": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AssignPublicIp to be of type string, got %T instead", value) + } + sv.AssignPublicIp = types.AssignPublicIp(jtv) + } + + case "securityGroups": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.SecurityGroups, value); err != nil { + return err + } + + case "subnets": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Subnets, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentBlockedException(v **types.BlockedException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.BlockedException + if *v == nil { + sv = &types.BlockedException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentCapacityProvider(v **types.CapacityProvider, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.CapacityProvider + if *v == nil { + sv = &types.CapacityProvider{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "autoScalingGroupProvider": + if err := awsAwsjson11_deserializeDocumentAutoScalingGroupProvider(&sv.AutoScalingGroupProvider, value); err != nil { + return err + } + + case "capacityProviderArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CapacityProviderArn = ptr.String(jtv) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CapacityProviderStatus to be of type string, got %T instead", value) + } + sv.Status = types.CapacityProviderStatus(jtv) + } + + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + case "updateStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CapacityProviderUpdateStatus to be of type string, got %T instead", value) + } + sv.UpdateStatus = types.CapacityProviderUpdateStatus(jtv) + } + + case "updateStatusReason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.UpdateStatusReason = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentCapacityProviders(v *[]types.CapacityProvider, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.CapacityProvider + if *v == nil { + cv = []types.CapacityProvider{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.CapacityProvider + destAddr := &col + if err := awsAwsjson11_deserializeDocumentCapacityProvider(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentCapacityProviderStrategy(v *[]types.CapacityProviderStrategyItem, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.CapacityProviderStrategyItem + if *v == nil { + cv = []types.CapacityProviderStrategyItem{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.CapacityProviderStrategyItem + destAddr := &col + if err := awsAwsjson11_deserializeDocumentCapacityProviderStrategyItem(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentCapacityProviderStrategyItem(v **types.CapacityProviderStrategyItem, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.CapacityProviderStrategyItem + if *v == nil { + sv = &types.CapacityProviderStrategyItem{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "base": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected CapacityProviderStrategyItemBase to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Base = int32(i64) + } + + case "capacityProvider": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CapacityProvider = ptr.String(jtv) + } + + case "weight": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected CapacityProviderStrategyItemWeight to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Weight = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClientException(v **types.ClientException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClientException + if *v == nil { + sv = &types.ClientException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentCluster(v **types.Cluster, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Cluster + if *v == nil { + sv = &types.Cluster{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "activeServicesCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ActiveServicesCount = int32(i64) + } + + case "attachments": + if err := awsAwsjson11_deserializeDocumentAttachments(&sv.Attachments, value); err != nil { + return err + } + + case "attachmentsStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AttachmentsStatus = ptr.String(jtv) + } + + case "capacityProviders": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.CapacityProviders, value); err != nil { + return err + } + + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "clusterName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterName = ptr.String(jtv) + } + + case "configuration": + if err := awsAwsjson11_deserializeDocumentClusterConfiguration(&sv.Configuration, value); err != nil { + return err + } + + case "defaultCapacityProviderStrategy": + if err := awsAwsjson11_deserializeDocumentCapacityProviderStrategy(&sv.DefaultCapacityProviderStrategy, value); err != nil { + return err + } + + case "pendingTasksCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.PendingTasksCount = int32(i64) + } + + case "registeredContainerInstancesCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RegisteredContainerInstancesCount = int32(i64) + } + + case "runningTasksCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RunningTasksCount = int32(i64) + } + + case "serviceConnectDefaults": + if err := awsAwsjson11_deserializeDocumentClusterServiceConnectDefaults(&sv.ServiceConnectDefaults, value); err != nil { + return err + } + + case "settings": + if err := awsAwsjson11_deserializeDocumentClusterSettings(&sv.Settings, value); err != nil { + return err + } + + case "statistics": + if err := awsAwsjson11_deserializeDocumentStatistics(&sv.Statistics, value); err != nil { + return err + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Status = ptr.String(jtv) + } + + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterConfiguration(v **types.ClusterConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClusterConfiguration + if *v == nil { + sv = &types.ClusterConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "executeCommandConfiguration": + if err := awsAwsjson11_deserializeDocumentExecuteCommandConfiguration(&sv.ExecuteCommandConfiguration, value); err != nil { + return err + } + + case "managedStorageConfiguration": + if err := awsAwsjson11_deserializeDocumentManagedStorageConfiguration(&sv.ManagedStorageConfiguration, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterContainsContainerInstancesException(v **types.ClusterContainsContainerInstancesException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClusterContainsContainerInstancesException + if *v == nil { + sv = &types.ClusterContainsContainerInstancesException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterContainsServicesException(v **types.ClusterContainsServicesException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClusterContainsServicesException + if *v == nil { + sv = &types.ClusterContainsServicesException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterContainsTasksException(v **types.ClusterContainsTasksException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClusterContainsTasksException + if *v == nil { + sv = &types.ClusterContainsTasksException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterNotFoundException(v **types.ClusterNotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClusterNotFoundException + if *v == nil { + sv = &types.ClusterNotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusters(v *[]types.Cluster, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Cluster + if *v == nil { + cv = []types.Cluster{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Cluster + destAddr := &col + if err := awsAwsjson11_deserializeDocumentCluster(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterServiceConnectDefaults(v **types.ClusterServiceConnectDefaults, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClusterServiceConnectDefaults + if *v == nil { + sv = &types.ClusterServiceConnectDefaults{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "namespace": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Namespace = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterSetting(v **types.ClusterSetting, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ClusterSetting + if *v == nil { + sv = &types.ClusterSetting{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ClusterSettingName to be of type string, got %T instead", value) + } + sv.Name = types.ClusterSettingName(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentClusterSettings(v *[]types.ClusterSetting, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ClusterSetting + if *v == nil { + cv = []types.ClusterSetting{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ClusterSetting + destAddr := &col + if err := awsAwsjson11_deserializeDocumentClusterSetting(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentCompatibilityList(v *[]types.Compatibility, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Compatibility + if *v == nil { + cv = []types.Compatibility{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Compatibility + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Compatibility to be of type string, got %T instead", value) + } + col = types.Compatibility(jtv) + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentConflictException(v **types.ConflictException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ConflictException + if *v == nil { + sv = &types.ConflictException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + case "resourceIds": + if err := awsAwsjson11_deserializeDocumentResourceIds(&sv.ResourceIds, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainer(v **types.Container, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Container + if *v == nil { + sv = &types.Container{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerArn = ptr.String(jtv) + } + + case "cpu": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Cpu = ptr.String(jtv) + } + + case "exitCode": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ExitCode = ptr.Int32(int32(i64)) + } + + case "gpuIds": + if err := awsAwsjson11_deserializeDocumentGpuIds(&sv.GpuIds, value); err != nil { + return err + } + + case "healthStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected HealthStatus to be of type string, got %T instead", value) + } + sv.HealthStatus = types.HealthStatus(jtv) + } + + case "image": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Image = ptr.String(jtv) + } + + case "imageDigest": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ImageDigest = ptr.String(jtv) + } + + case "lastStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.LastStatus = ptr.String(jtv) + } + + case "managedAgents": + if err := awsAwsjson11_deserializeDocumentManagedAgents(&sv.ManagedAgents, value); err != nil { + return err + } + + case "memory": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Memory = ptr.String(jtv) + } + + case "memoryReservation": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.MemoryReservation = ptr.String(jtv) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "networkBindings": + if err := awsAwsjson11_deserializeDocumentNetworkBindings(&sv.NetworkBindings, value); err != nil { + return err + } + + case "networkInterfaces": + if err := awsAwsjson11_deserializeDocumentNetworkInterfaces(&sv.NetworkInterfaces, value); err != nil { + return err + } + + case "reason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Reason = ptr.String(jtv) + } + + case "runtimeId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RuntimeId = ptr.String(jtv) + } + + case "taskArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerDefinition(v **types.ContainerDefinition, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerDefinition + if *v == nil { + sv = &types.ContainerDefinition{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "command": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Command, value); err != nil { + return err + } + + case "cpu": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Cpu = int32(i64) + } + + case "credentialSpecs": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.CredentialSpecs, value); err != nil { + return err + } + + case "dependsOn": + if err := awsAwsjson11_deserializeDocumentContainerDependencies(&sv.DependsOn, value); err != nil { + return err + } + + case "disableNetworking": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.DisableNetworking = ptr.Bool(jtv) + } + + case "dnsSearchDomains": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.DnsSearchDomains, value); err != nil { + return err + } + + case "dnsServers": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.DnsServers, value); err != nil { + return err + } + + case "dockerLabels": + if err := awsAwsjson11_deserializeDocumentDockerLabelsMap(&sv.DockerLabels, value); err != nil { + return err + } + + case "dockerSecurityOptions": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.DockerSecurityOptions, value); err != nil { + return err + } + + case "entryPoint": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.EntryPoint, value); err != nil { + return err + } + + case "environment": + if err := awsAwsjson11_deserializeDocumentEnvironmentVariables(&sv.Environment, value); err != nil { + return err + } + + case "environmentFiles": + if err := awsAwsjson11_deserializeDocumentEnvironmentFiles(&sv.EnvironmentFiles, value); err != nil { + return err + } + + case "essential": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.Essential = ptr.Bool(jtv) + } + + case "extraHosts": + if err := awsAwsjson11_deserializeDocumentHostEntryList(&sv.ExtraHosts, value); err != nil { + return err + } + + case "firelensConfiguration": + if err := awsAwsjson11_deserializeDocumentFirelensConfiguration(&sv.FirelensConfiguration, value); err != nil { + return err + } + + case "healthCheck": + if err := awsAwsjson11_deserializeDocumentHealthCheck(&sv.HealthCheck, value); err != nil { + return err + } + + case "hostname": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Hostname = ptr.String(jtv) + } + + case "image": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Image = ptr.String(jtv) + } + + case "interactive": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.Interactive = ptr.Bool(jtv) + } + + case "links": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Links, value); err != nil { + return err + } + + case "linuxParameters": + if err := awsAwsjson11_deserializeDocumentLinuxParameters(&sv.LinuxParameters, value); err != nil { + return err + } + + case "logConfiguration": + if err := awsAwsjson11_deserializeDocumentLogConfiguration(&sv.LogConfiguration, value); err != nil { + return err + } + + case "memory": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Memory = ptr.Int32(int32(i64)) + } + + case "memoryReservation": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MemoryReservation = ptr.Int32(int32(i64)) + } + + case "mountPoints": + if err := awsAwsjson11_deserializeDocumentMountPointList(&sv.MountPoints, value); err != nil { + return err + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "portMappings": + if err := awsAwsjson11_deserializeDocumentPortMappingList(&sv.PortMappings, value); err != nil { + return err + } + + case "privileged": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.Privileged = ptr.Bool(jtv) + } + + case "pseudoTerminal": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.PseudoTerminal = ptr.Bool(jtv) + } + + case "readonlyRootFilesystem": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.ReadonlyRootFilesystem = ptr.Bool(jtv) + } + + case "repositoryCredentials": + if err := awsAwsjson11_deserializeDocumentRepositoryCredentials(&sv.RepositoryCredentials, value); err != nil { + return err + } + + case "resourceRequirements": + if err := awsAwsjson11_deserializeDocumentResourceRequirements(&sv.ResourceRequirements, value); err != nil { + return err + } + + case "restartPolicy": + if err := awsAwsjson11_deserializeDocumentContainerRestartPolicy(&sv.RestartPolicy, value); err != nil { + return err + } + + case "secrets": + if err := awsAwsjson11_deserializeDocumentSecretList(&sv.Secrets, value); err != nil { + return err + } + + case "startTimeout": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.StartTimeout = ptr.Int32(int32(i64)) + } + + case "stopTimeout": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.StopTimeout = ptr.Int32(int32(i64)) + } + + case "systemControls": + if err := awsAwsjson11_deserializeDocumentSystemControls(&sv.SystemControls, value); err != nil { + return err + } + + case "ulimits": + if err := awsAwsjson11_deserializeDocumentUlimitList(&sv.Ulimits, value); err != nil { + return err + } + + case "user": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.User = ptr.String(jtv) + } + + case "versionConsistency": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected VersionConsistency to be of type string, got %T instead", value) + } + sv.VersionConsistency = types.VersionConsistency(jtv) + } + + case "volumesFrom": + if err := awsAwsjson11_deserializeDocumentVolumeFromList(&sv.VolumesFrom, value); err != nil { + return err + } + + case "workingDirectory": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.WorkingDirectory = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerDefinitions(v *[]types.ContainerDefinition, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ContainerDefinition + if *v == nil { + cv = []types.ContainerDefinition{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ContainerDefinition + destAddr := &col + if err := awsAwsjson11_deserializeDocumentContainerDefinition(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerDependencies(v *[]types.ContainerDependency, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ContainerDependency + if *v == nil { + cv = []types.ContainerDependency{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ContainerDependency + destAddr := &col + if err := awsAwsjson11_deserializeDocumentContainerDependency(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerDependency(v **types.ContainerDependency, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerDependency + if *v == nil { + sv = &types.ContainerDependency{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "condition": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ContainerCondition to be of type string, got %T instead", value) + } + sv.Condition = types.ContainerCondition(jtv) + } + + case "containerName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerName = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerImage(v **types.ContainerImage, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerImage + if *v == nil { + sv = &types.ContainerImage{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerName = ptr.String(jtv) + } + + case "image": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Image = ptr.String(jtv) + } + + case "imageDigest": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ImageDigest = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerImages(v *[]types.ContainerImage, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ContainerImage + if *v == nil { + cv = []types.ContainerImage{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ContainerImage + destAddr := &col + if err := awsAwsjson11_deserializeDocumentContainerImage(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerInstance(v **types.ContainerInstance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerInstance + if *v == nil { + sv = &types.ContainerInstance{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "agentConnected": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.AgentConnected = jtv + } + + case "agentUpdateStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AgentUpdateStatus to be of type string, got %T instead", value) + } + sv.AgentUpdateStatus = types.AgentUpdateStatus(jtv) + } + + case "attachments": + if err := awsAwsjson11_deserializeDocumentAttachments(&sv.Attachments, value); err != nil { + return err + } + + case "attributes": + if err := awsAwsjson11_deserializeDocumentAttributes(&sv.Attributes, value); err != nil { + return err + } + + case "capacityProviderName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CapacityProviderName = ptr.String(jtv) + } + + case "containerInstanceArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerInstanceArn = ptr.String(jtv) + } + + case "ec2InstanceId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Ec2InstanceId = ptr.String(jtv) + } + + case "healthStatus": + if err := awsAwsjson11_deserializeDocumentContainerInstanceHealthStatus(&sv.HealthStatus, value); err != nil { + return err + } + + case "pendingTasksCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.PendingTasksCount = int32(i64) + } + + case "registeredAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.RegisteredAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "registeredResources": + if err := awsAwsjson11_deserializeDocumentResources(&sv.RegisteredResources, value); err != nil { + return err + } + + case "remainingResources": + if err := awsAwsjson11_deserializeDocumentResources(&sv.RemainingResources, value); err != nil { + return err + } + + case "runningTasksCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RunningTasksCount = int32(i64) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Status = ptr.String(jtv) + } + + case "statusReason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.StatusReason = ptr.String(jtv) + } + + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + case "version": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Long to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Version = i64 + } + + case "versionInfo": + if err := awsAwsjson11_deserializeDocumentVersionInfo(&sv.VersionInfo, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerInstanceHealthStatus(v **types.ContainerInstanceHealthStatus, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerInstanceHealthStatus + if *v == nil { + sv = &types.ContainerInstanceHealthStatus{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "details": + if err := awsAwsjson11_deserializeDocumentInstanceHealthCheckResultList(&sv.Details, value); err != nil { + return err + } + + case "overallStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstanceHealthCheckState to be of type string, got %T instead", value) + } + sv.OverallStatus = types.InstanceHealthCheckState(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerInstances(v *[]types.ContainerInstance, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ContainerInstance + if *v == nil { + cv = []types.ContainerInstance{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ContainerInstance + destAddr := &col + if err := awsAwsjson11_deserializeDocumentContainerInstance(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerOverride(v **types.ContainerOverride, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerOverride + if *v == nil { + sv = &types.ContainerOverride{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "command": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Command, value); err != nil { + return err + } + + case "cpu": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Cpu = ptr.Int32(int32(i64)) + } + + case "environment": + if err := awsAwsjson11_deserializeDocumentEnvironmentVariables(&sv.Environment, value); err != nil { + return err + } + + case "environmentFiles": + if err := awsAwsjson11_deserializeDocumentEnvironmentFiles(&sv.EnvironmentFiles, value); err != nil { + return err + } + + case "memory": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Memory = ptr.Int32(int32(i64)) + } + + case "memoryReservation": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MemoryReservation = ptr.Int32(int32(i64)) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "resourceRequirements": + if err := awsAwsjson11_deserializeDocumentResourceRequirements(&sv.ResourceRequirements, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerOverrides(v *[]types.ContainerOverride, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ContainerOverride + if *v == nil { + cv = []types.ContainerOverride{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ContainerOverride + destAddr := &col + if err := awsAwsjson11_deserializeDocumentContainerOverride(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentContainerRestartPolicy(v **types.ContainerRestartPolicy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ContainerRestartPolicy + if *v == nil { + sv = &types.ContainerRestartPolicy{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "enabled": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.Enabled = ptr.Bool(jtv) + } + + case "ignoredExitCodes": + if err := awsAwsjson11_deserializeDocumentIntegerList(&sv.IgnoredExitCodes, value); err != nil { + return err + } + + case "restartAttemptPeriod": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RestartAttemptPeriod = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentContainers(v *[]types.Container, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Container + if *v == nil { + cv = []types.Container{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Container + destAddr := &col + if err := awsAwsjson11_deserializeDocumentContainer(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentDeployment(v **types.Deployment, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Deployment + if *v == nil { + sv = &types.Deployment{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capacityProviderStrategy": + if err := awsAwsjson11_deserializeDocumentCapacityProviderStrategy(&sv.CapacityProviderStrategy, value); err != nil { + return err + } + + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "desiredCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.DesiredCount = int32(i64) + } + + case "failedTasks": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.FailedTasks = int32(i64) + } + + case "fargateEphemeralStorage": + if err := awsAwsjson11_deserializeDocumentDeploymentEphemeralStorage(&sv.FargateEphemeralStorage, value); err != nil { + return err + } + + case "id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "launchType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LaunchType to be of type string, got %T instead", value) + } + sv.LaunchType = types.LaunchType(jtv) + } + + case "networkConfiguration": + if err := awsAwsjson11_deserializeDocumentNetworkConfiguration(&sv.NetworkConfiguration, value); err != nil { + return err + } + + case "pendingCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.PendingCount = int32(i64) + } + + case "platformFamily": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformFamily = ptr.String(jtv) + } + + case "platformVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformVersion = ptr.String(jtv) + } + + case "rolloutState": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DeploymentRolloutState to be of type string, got %T instead", value) + } + sv.RolloutState = types.DeploymentRolloutState(jtv) + } + + case "rolloutStateReason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RolloutStateReason = ptr.String(jtv) + } + + case "runningCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RunningCount = int32(i64) + } + + case "serviceConnectConfiguration": + if err := awsAwsjson11_deserializeDocumentServiceConnectConfiguration(&sv.ServiceConnectConfiguration, value); err != nil { + return err + } + + case "serviceConnectResources": + if err := awsAwsjson11_deserializeDocumentServiceConnectServiceResourceList(&sv.ServiceConnectResources, value); err != nil { + return err + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Status = ptr.String(jtv) + } + + case "taskDefinition": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskDefinition = ptr.String(jtv) + } + + case "updatedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.UpdatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "volumeConfigurations": + if err := awsAwsjson11_deserializeDocumentServiceVolumeConfigurations(&sv.VolumeConfigurations, value); err != nil { + return err + } + + case "vpcLatticeConfigurations": + if err := awsAwsjson11_deserializeDocumentVpcLatticeConfigurations(&sv.VpcLatticeConfigurations, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentDeploymentAlarms(v **types.DeploymentAlarms, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DeploymentAlarms + if *v == nil { + sv = &types.DeploymentAlarms{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "alarmNames": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.AlarmNames, value); err != nil { + return err + } + + case "enable": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.Enable = jtv + } + + case "rollback": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.Rollback = jtv + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentDeploymentCircuitBreaker(v **types.DeploymentCircuitBreaker, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DeploymentCircuitBreaker + if *v == nil { + sv = &types.DeploymentCircuitBreaker{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "enable": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.Enable = jtv + } + + case "rollback": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.Rollback = jtv + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentDeploymentConfiguration(v **types.DeploymentConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DeploymentConfiguration + if *v == nil { + sv = &types.DeploymentConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "alarms": + if err := awsAwsjson11_deserializeDocumentDeploymentAlarms(&sv.Alarms, value); err != nil { + return err + } + + case "deploymentCircuitBreaker": + if err := awsAwsjson11_deserializeDocumentDeploymentCircuitBreaker(&sv.DeploymentCircuitBreaker, value); err != nil { + return err + } + + case "maximumPercent": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MaximumPercent = ptr.Int32(int32(i64)) + } + + case "minimumHealthyPercent": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MinimumHealthyPercent = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentDeploymentController(v **types.DeploymentController, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DeploymentController + if *v == nil { + sv = &types.DeploymentController{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DeploymentControllerType to be of type string, got %T instead", value) + } + sv.Type = types.DeploymentControllerType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentDeploymentEphemeralStorage(v **types.DeploymentEphemeralStorage, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DeploymentEphemeralStorage + if *v == nil { + sv = &types.DeploymentEphemeralStorage{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "kmsKeyId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KmsKeyId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentDeployments(v *[]types.Deployment, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Deployment + if *v == nil { + cv = []types.Deployment{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Deployment + destAddr := &col + if err := awsAwsjson11_deserializeDocumentDeployment(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentDevice(v **types.Device, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Device + if *v == nil { + sv = &types.Device{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerPath": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerPath = ptr.String(jtv) + } + + case "hostPath": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.HostPath = ptr.String(jtv) + } + + case "permissions": + if err := awsAwsjson11_deserializeDocumentDeviceCgroupPermissions(&sv.Permissions, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentDeviceCgroupPermissions(v *[]types.DeviceCgroupPermission, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.DeviceCgroupPermission + if *v == nil { + cv = []types.DeviceCgroupPermission{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.DeviceCgroupPermission + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected DeviceCgroupPermission to be of type string, got %T instead", value) + } + col = types.DeviceCgroupPermission(jtv) + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentDevicesList(v *[]types.Device, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Device + if *v == nil { + cv = []types.Device{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Device + destAddr := &col + if err := awsAwsjson11_deserializeDocumentDevice(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentDockerLabelsMap(v *map[string]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]string + if *v == nil { + mv = map[string]string{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + parsedVal = jtv + } + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsAwsjson11_deserializeDocumentDockerVolumeConfiguration(v **types.DockerVolumeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.DockerVolumeConfiguration + if *v == nil { + sv = &types.DockerVolumeConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "autoprovision": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.Autoprovision = ptr.Bool(jtv) + } + + case "driver": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Driver = ptr.String(jtv) + } + + case "driverOpts": + if err := awsAwsjson11_deserializeDocumentStringMap(&sv.DriverOpts, value); err != nil { + return err + } + + case "labels": + if err := awsAwsjson11_deserializeDocumentStringMap(&sv.Labels, value); err != nil { + return err + } + + case "scope": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Scope to be of type string, got %T instead", value) + } + sv.Scope = types.Scope(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentEBSTagSpecification(v **types.EBSTagSpecification, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.EBSTagSpecification + if *v == nil { + sv = &types.EBSTagSpecification{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "propagateTags": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PropagateTags to be of type string, got %T instead", value) + } + sv.PropagateTags = types.PropagateTags(jtv) + } + + case "resourceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EBSResourceType to be of type string, got %T instead", value) + } + sv.ResourceType = types.EBSResourceType(jtv) + } + + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentEBSTagSpecifications(v *[]types.EBSTagSpecification, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.EBSTagSpecification + if *v == nil { + cv = []types.EBSTagSpecification{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.EBSTagSpecification + destAddr := &col + if err := awsAwsjson11_deserializeDocumentEBSTagSpecification(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentEFSAuthorizationConfig(v **types.EFSAuthorizationConfig, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.EFSAuthorizationConfig + if *v == nil { + sv = &types.EFSAuthorizationConfig{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "accessPointId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AccessPointId = ptr.String(jtv) + } + + case "iam": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EFSAuthorizationConfigIAM to be of type string, got %T instead", value) + } + sv.Iam = types.EFSAuthorizationConfigIAM(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentEFSVolumeConfiguration(v **types.EFSVolumeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.EFSVolumeConfiguration + if *v == nil { + sv = &types.EFSVolumeConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "authorizationConfig": + if err := awsAwsjson11_deserializeDocumentEFSAuthorizationConfig(&sv.AuthorizationConfig, value); err != nil { + return err + } + + case "fileSystemId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.FileSystemId = ptr.String(jtv) + } + + case "rootDirectory": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RootDirectory = ptr.String(jtv) + } + + case "transitEncryption": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EFSTransitEncryption to be of type string, got %T instead", value) + } + sv.TransitEncryption = types.EFSTransitEncryption(jtv) + } + + case "transitEncryptionPort": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.TransitEncryptionPort = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentEnvironmentFile(v **types.EnvironmentFile, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.EnvironmentFile + if *v == nil { + sv = &types.EnvironmentFile{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EnvironmentFileType to be of type string, got %T instead", value) + } + sv.Type = types.EnvironmentFileType(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentEnvironmentFiles(v *[]types.EnvironmentFile, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.EnvironmentFile + if *v == nil { + cv = []types.EnvironmentFile{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.EnvironmentFile + destAddr := &col + if err := awsAwsjson11_deserializeDocumentEnvironmentFile(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentEnvironmentVariables(v *[]types.KeyValuePair, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.KeyValuePair + if *v == nil { + cv = []types.KeyValuePair{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.KeyValuePair + destAddr := &col + if err := awsAwsjson11_deserializeDocumentKeyValuePair(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentEphemeralStorage(v **types.EphemeralStorage, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.EphemeralStorage + if *v == nil { + sv = &types.EphemeralStorage{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "sizeInGiB": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SizeInGiB = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentExecuteCommandConfiguration(v **types.ExecuteCommandConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ExecuteCommandConfiguration + if *v == nil { + sv = &types.ExecuteCommandConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "kmsKeyId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KmsKeyId = ptr.String(jtv) + } + + case "logConfiguration": + if err := awsAwsjson11_deserializeDocumentExecuteCommandLogConfiguration(&sv.LogConfiguration, value); err != nil { + return err + } + + case "logging": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ExecuteCommandLogging to be of type string, got %T instead", value) + } + sv.Logging = types.ExecuteCommandLogging(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentExecuteCommandLogConfiguration(v **types.ExecuteCommandLogConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ExecuteCommandLogConfiguration + if *v == nil { + sv = &types.ExecuteCommandLogConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "cloudWatchEncryptionEnabled": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.CloudWatchEncryptionEnabled = jtv + } + + case "cloudWatchLogGroupName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CloudWatchLogGroupName = ptr.String(jtv) + } + + case "s3BucketName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.S3BucketName = ptr.String(jtv) + } + + case "s3EncryptionEnabled": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.S3EncryptionEnabled = jtv + } + + case "s3KeyPrefix": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.S3KeyPrefix = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentFailure(v **types.Failure, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Failure + if *v == nil { + sv = &types.Failure{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "detail": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Detail = ptr.String(jtv) + } + + case "reason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Reason = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentFailures(v *[]types.Failure, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Failure + if *v == nil { + cv = []types.Failure{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Failure + destAddr := &col + if err := awsAwsjson11_deserializeDocumentFailure(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentFirelensConfiguration(v **types.FirelensConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.FirelensConfiguration + if *v == nil { + sv = &types.FirelensConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "options": + if err := awsAwsjson11_deserializeDocumentFirelensConfigurationOptionsMap(&sv.Options, value); err != nil { + return err + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected FirelensConfigurationType to be of type string, got %T instead", value) + } + sv.Type = types.FirelensConfigurationType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentFirelensConfigurationOptionsMap(v *map[string]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]string + if *v == nil { + mv = map[string]string{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + parsedVal = jtv + } + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsAwsjson11_deserializeDocumentFSxWindowsFileServerAuthorizationConfig(v **types.FSxWindowsFileServerAuthorizationConfig, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.FSxWindowsFileServerAuthorizationConfig + if *v == nil { + sv = &types.FSxWindowsFileServerAuthorizationConfig{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "credentialsParameter": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CredentialsParameter = ptr.String(jtv) + } + + case "domain": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Domain = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentFSxWindowsFileServerVolumeConfiguration(v **types.FSxWindowsFileServerVolumeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.FSxWindowsFileServerVolumeConfiguration + if *v == nil { + sv = &types.FSxWindowsFileServerVolumeConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "authorizationConfig": + if err := awsAwsjson11_deserializeDocumentFSxWindowsFileServerAuthorizationConfig(&sv.AuthorizationConfig, value); err != nil { + return err + } + + case "fileSystemId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.FileSystemId = ptr.String(jtv) + } + + case "rootDirectory": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RootDirectory = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentGpuIds(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentHealthCheck(v **types.HealthCheck, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.HealthCheck + if *v == nil { + sv = &types.HealthCheck{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "command": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Command, value); err != nil { + return err + } + + case "interval": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Interval = ptr.Int32(int32(i64)) + } + + case "retries": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Retries = ptr.Int32(int32(i64)) + } + + case "startPeriod": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.StartPeriod = ptr.Int32(int32(i64)) + } + + case "timeout": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Timeout = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentHostEntry(v **types.HostEntry, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.HostEntry + if *v == nil { + sv = &types.HostEntry{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "hostname": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Hostname = ptr.String(jtv) + } + + case "ipAddress": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.IpAddress = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentHostEntryList(v *[]types.HostEntry, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.HostEntry + if *v == nil { + cv = []types.HostEntry{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.HostEntry + destAddr := &col + if err := awsAwsjson11_deserializeDocumentHostEntry(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentHostVolumeProperties(v **types.HostVolumeProperties, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.HostVolumeProperties + if *v == nil { + sv = &types.HostVolumeProperties{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "sourcePath": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.SourcePath = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentInferenceAccelerator(v **types.InferenceAccelerator, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InferenceAccelerator + if *v == nil { + sv = &types.InferenceAccelerator{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "deviceName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DeviceName = ptr.String(jtv) + } + + case "deviceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DeviceType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentInferenceAcceleratorOverride(v **types.InferenceAcceleratorOverride, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InferenceAcceleratorOverride + if *v == nil { + sv = &types.InferenceAcceleratorOverride{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "deviceName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DeviceName = ptr.String(jtv) + } + + case "deviceType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DeviceType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentInferenceAcceleratorOverrides(v *[]types.InferenceAcceleratorOverride, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.InferenceAcceleratorOverride + if *v == nil { + cv = []types.InferenceAcceleratorOverride{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.InferenceAcceleratorOverride + destAddr := &col + if err := awsAwsjson11_deserializeDocumentInferenceAcceleratorOverride(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentInferenceAccelerators(v *[]types.InferenceAccelerator, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.InferenceAccelerator + if *v == nil { + cv = []types.InferenceAccelerator{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.InferenceAccelerator + destAddr := &col + if err := awsAwsjson11_deserializeDocumentInferenceAccelerator(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentInstanceHealthCheckResult(v **types.InstanceHealthCheckResult, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InstanceHealthCheckResult + if *v == nil { + sv = &types.InstanceHealthCheckResult{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "lastStatusChange": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastStatusChange = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "lastUpdated": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastUpdated = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstanceHealthCheckState to be of type string, got %T instead", value) + } + sv.Status = types.InstanceHealthCheckState(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected InstanceHealthCheckType to be of type string, got %T instead", value) + } + sv.Type = types.InstanceHealthCheckType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentInstanceHealthCheckResultList(v *[]types.InstanceHealthCheckResult, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.InstanceHealthCheckResult + if *v == nil { + cv = []types.InstanceHealthCheckResult{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.InstanceHealthCheckResult + destAddr := &col + if err := awsAwsjson11_deserializeDocumentInstanceHealthCheckResult(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentIntegerList(v *[]int32, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []int32 + if *v == nil { + cv = []int32{} + } else { + cv = *v + } + + for _, value := range shape { + var col int32 + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + col = int32(i64) + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentInvalidParameterException(v **types.InvalidParameterException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.InvalidParameterException + if *v == nil { + sv = &types.InvalidParameterException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentKernelCapabilities(v **types.KernelCapabilities, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.KernelCapabilities + if *v == nil { + sv = &types.KernelCapabilities{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "add": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Add, value); err != nil { + return err + } + + case "drop": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Drop, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentKeyValuePair(v **types.KeyValuePair, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.KeyValuePair + if *v == nil { + sv = &types.KeyValuePair{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentLimitExceededException(v **types.LimitExceededException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LimitExceededException + if *v == nil { + sv = &types.LimitExceededException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentLinuxParameters(v **types.LinuxParameters, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LinuxParameters + if *v == nil { + sv = &types.LinuxParameters{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capabilities": + if err := awsAwsjson11_deserializeDocumentKernelCapabilities(&sv.Capabilities, value); err != nil { + return err + } + + case "devices": + if err := awsAwsjson11_deserializeDocumentDevicesList(&sv.Devices, value); err != nil { + return err + } + + case "initProcessEnabled": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.InitProcessEnabled = ptr.Bool(jtv) + } + + case "maxSwap": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MaxSwap = ptr.Int32(int32(i64)) + } + + case "sharedMemorySize": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SharedMemorySize = ptr.Int32(int32(i64)) + } + + case "swappiness": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Swappiness = ptr.Int32(int32(i64)) + } + + case "tmpfs": + if err := awsAwsjson11_deserializeDocumentTmpfsList(&sv.Tmpfs, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentLoadBalancer(v **types.LoadBalancer, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LoadBalancer + if *v == nil { + sv = &types.LoadBalancer{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerName = ptr.String(jtv) + } + + case "containerPort": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ContainerPort = ptr.Int32(int32(i64)) + } + + case "loadBalancerName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.LoadBalancerName = ptr.String(jtv) + } + + case "targetGroupArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TargetGroupArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentLoadBalancers(v *[]types.LoadBalancer, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.LoadBalancer + if *v == nil { + cv = []types.LoadBalancer{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.LoadBalancer + destAddr := &col + if err := awsAwsjson11_deserializeDocumentLoadBalancer(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentLogConfiguration(v **types.LogConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.LogConfiguration + if *v == nil { + sv = &types.LogConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "logDriver": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LogDriver to be of type string, got %T instead", value) + } + sv.LogDriver = types.LogDriver(jtv) + } + + case "options": + if err := awsAwsjson11_deserializeDocumentLogConfigurationOptionsMap(&sv.Options, value); err != nil { + return err + } + + case "secretOptions": + if err := awsAwsjson11_deserializeDocumentSecretList(&sv.SecretOptions, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentLogConfigurationOptionsMap(v *map[string]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]string + if *v == nil { + mv = map[string]string{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + parsedVal = jtv + } + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsAwsjson11_deserializeDocumentManagedAgent(v **types.ManagedAgent, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ManagedAgent + if *v == nil { + sv = &types.ManagedAgent{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "lastStartedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.LastStartedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "lastStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.LastStatus = ptr.String(jtv) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ManagedAgentName to be of type string, got %T instead", value) + } + sv.Name = types.ManagedAgentName(jtv) + } + + case "reason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Reason = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentManagedAgents(v *[]types.ManagedAgent, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ManagedAgent + if *v == nil { + cv = []types.ManagedAgent{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ManagedAgent + destAddr := &col + if err := awsAwsjson11_deserializeDocumentManagedAgent(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentManagedScaling(v **types.ManagedScaling, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ManagedScaling + if *v == nil { + sv = &types.ManagedScaling{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "instanceWarmupPeriod": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected ManagedScalingInstanceWarmupPeriod to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.InstanceWarmupPeriod = ptr.Int32(int32(i64)) + } + + case "maximumScalingStepSize": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected ManagedScalingStepSize to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MaximumScalingStepSize = ptr.Int32(int32(i64)) + } + + case "minimumScalingStepSize": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected ManagedScalingStepSize to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MinimumScalingStepSize = ptr.Int32(int32(i64)) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ManagedScalingStatus to be of type string, got %T instead", value) + } + sv.Status = types.ManagedScalingStatus(jtv) + } + + case "targetCapacity": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected ManagedScalingTargetCapacity to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.TargetCapacity = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentManagedStorageConfiguration(v **types.ManagedStorageConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ManagedStorageConfiguration + if *v == nil { + sv = &types.ManagedStorageConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "fargateEphemeralStorageKmsKeyId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.FargateEphemeralStorageKmsKeyId = ptr.String(jtv) + } + + case "kmsKeyId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KmsKeyId = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentMissingVersionException(v **types.MissingVersionException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.MissingVersionException + if *v == nil { + sv = &types.MissingVersionException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentMountPoint(v **types.MountPoint, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.MountPoint + if *v == nil { + sv = &types.MountPoint{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerPath": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerPath = ptr.String(jtv) + } + + case "readOnly": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.ReadOnly = ptr.Bool(jtv) + } + + case "sourceVolume": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.SourceVolume = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentMountPointList(v *[]types.MountPoint, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.MountPoint + if *v == nil { + cv = []types.MountPoint{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.MountPoint + destAddr := &col + if err := awsAwsjson11_deserializeDocumentMountPoint(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentNamespaceNotFoundException(v **types.NamespaceNotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.NamespaceNotFoundException + if *v == nil { + sv = &types.NamespaceNotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentNetworkBinding(v **types.NetworkBinding, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.NetworkBinding + if *v == nil { + sv = &types.NetworkBinding{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "bindIP": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.BindIP = ptr.String(jtv) + } + + case "containerPort": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ContainerPort = ptr.Int32(int32(i64)) + } + + case "containerPortRange": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerPortRange = ptr.String(jtv) + } + + case "hostPort": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.HostPort = ptr.Int32(int32(i64)) + } + + case "hostPortRange": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.HostPortRange = ptr.String(jtv) + } + + case "protocol": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TransportProtocol to be of type string, got %T instead", value) + } + sv.Protocol = types.TransportProtocol(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentNetworkBindings(v *[]types.NetworkBinding, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.NetworkBinding + if *v == nil { + cv = []types.NetworkBinding{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.NetworkBinding + destAddr := &col + if err := awsAwsjson11_deserializeDocumentNetworkBinding(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentNetworkConfiguration(v **types.NetworkConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.NetworkConfiguration + if *v == nil { + sv = &types.NetworkConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "awsvpcConfiguration": + if err := awsAwsjson11_deserializeDocumentAwsVpcConfiguration(&sv.AwsvpcConfiguration, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentNetworkInterface(v **types.NetworkInterface, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.NetworkInterface + if *v == nil { + sv = &types.NetworkInterface{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "attachmentId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AttachmentId = ptr.String(jtv) + } + + case "ipv6Address": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Ipv6Address = ptr.String(jtv) + } + + case "privateIpv4Address": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PrivateIpv4Address = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentNetworkInterfaces(v *[]types.NetworkInterface, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.NetworkInterface + if *v == nil { + cv = []types.NetworkInterface{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.NetworkInterface + destAddr := &col + if err := awsAwsjson11_deserializeDocumentNetworkInterface(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentNoUpdateAvailableException(v **types.NoUpdateAvailableException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.NoUpdateAvailableException + if *v == nil { + sv = &types.NoUpdateAvailableException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPlacementConstraint(v **types.PlacementConstraint, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PlacementConstraint + if *v == nil { + sv = &types.PlacementConstraint{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "expression": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Expression = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PlacementConstraintType to be of type string, got %T instead", value) + } + sv.Type = types.PlacementConstraintType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPlacementConstraints(v *[]types.PlacementConstraint, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.PlacementConstraint + if *v == nil { + cv = []types.PlacementConstraint{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.PlacementConstraint + destAddr := &col + if err := awsAwsjson11_deserializeDocumentPlacementConstraint(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentPlacementStrategies(v *[]types.PlacementStrategy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.PlacementStrategy + if *v == nil { + cv = []types.PlacementStrategy{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.PlacementStrategy + destAddr := &col + if err := awsAwsjson11_deserializeDocumentPlacementStrategy(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentPlacementStrategy(v **types.PlacementStrategy, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PlacementStrategy + if *v == nil { + sv = &types.PlacementStrategy{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "field": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Field = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PlacementStrategyType to be of type string, got %T instead", value) + } + sv.Type = types.PlacementStrategyType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPlatformTaskDefinitionIncompatibilityException(v **types.PlatformTaskDefinitionIncompatibilityException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PlatformTaskDefinitionIncompatibilityException + if *v == nil { + sv = &types.PlatformTaskDefinitionIncompatibilityException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPlatformUnknownException(v **types.PlatformUnknownException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PlatformUnknownException + if *v == nil { + sv = &types.PlatformUnknownException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPortMapping(v **types.PortMapping, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.PortMapping + if *v == nil { + sv = &types.PortMapping{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "appProtocol": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ApplicationProtocol to be of type string, got %T instead", value) + } + sv.AppProtocol = types.ApplicationProtocol(jtv) + } + + case "containerPort": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ContainerPort = ptr.Int32(int32(i64)) + } + + case "containerPortRange": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerPortRange = ptr.String(jtv) + } + + case "hostPort": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.HostPort = ptr.Int32(int32(i64)) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "protocol": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TransportProtocol to be of type string, got %T instead", value) + } + sv.Protocol = types.TransportProtocol(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentPortMappingList(v *[]types.PortMapping, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.PortMapping + if *v == nil { + cv = []types.PortMapping{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.PortMapping + destAddr := &col + if err := awsAwsjson11_deserializeDocumentPortMapping(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentProtectedTask(v **types.ProtectedTask, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ProtectedTask + if *v == nil { + sv = &types.ProtectedTask{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "expirationDate": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.ExpirationDate = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "protectionEnabled": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.ProtectionEnabled = jtv + } + + case "taskArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentProtectedTasks(v *[]types.ProtectedTask, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ProtectedTask + if *v == nil { + cv = []types.ProtectedTask{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ProtectedTask + destAddr := &col + if err := awsAwsjson11_deserializeDocumentProtectedTask(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentProxyConfiguration(v **types.ProxyConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ProxyConfiguration + if *v == nil { + sv = &types.ProxyConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerName = ptr.String(jtv) + } + + case "properties": + if err := awsAwsjson11_deserializeDocumentProxyConfigurationProperties(&sv.Properties, value); err != nil { + return err + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ProxyConfigurationType to be of type string, got %T instead", value) + } + sv.Type = types.ProxyConfigurationType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentProxyConfigurationProperties(v *[]types.KeyValuePair, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.KeyValuePair + if *v == nil { + cv = []types.KeyValuePair{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.KeyValuePair + destAddr := &col + if err := awsAwsjson11_deserializeDocumentKeyValuePair(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentRepositoryCredentials(v **types.RepositoryCredentials, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.RepositoryCredentials + if *v == nil { + sv = &types.RepositoryCredentials{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "credentialsParameter": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CredentialsParameter = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentRequiresAttributes(v *[]types.Attribute, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Attribute + if *v == nil { + cv = []types.Attribute{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Attribute + destAddr := &col + if err := awsAwsjson11_deserializeDocumentAttribute(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentResource(v **types.Resource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Resource + if *v == nil { + sv = &types.Resource{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "doubleValue": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.DoubleValue = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.DoubleValue = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + + case "integerValue": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.IntegerValue = int32(i64) + } + + case "longValue": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Long to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.LongValue = i64 + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "stringSetValue": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.StringSetValue, value); err != nil { + return err + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Type = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentResourceIds(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentResourceInUseException(v **types.ResourceInUseException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ResourceInUseException + if *v == nil { + sv = &types.ResourceInUseException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentResourceNotFoundException(v **types.ResourceNotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ResourceNotFoundException + if *v == nil { + sv = &types.ResourceNotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentResourceRequirement(v **types.ResourceRequirement, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ResourceRequirement + if *v == nil { + sv = &types.ResourceRequirement{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ResourceType to be of type string, got %T instead", value) + } + sv.Type = types.ResourceType(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentResourceRequirements(v *[]types.ResourceRequirement, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ResourceRequirement + if *v == nil { + cv = []types.ResourceRequirement{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ResourceRequirement + destAddr := &col + if err := awsAwsjson11_deserializeDocumentResourceRequirement(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentResources(v *[]types.Resource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Resource + if *v == nil { + cv = []types.Resource{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Resource + destAddr := &col + if err := awsAwsjson11_deserializeDocumentResource(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentRollback(v **types.Rollback, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Rollback + if *v == nil { + sv = &types.Rollback{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "reason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Reason = ptr.String(jtv) + } + + case "serviceRevisionArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceRevisionArn = ptr.String(jtv) + } + + case "startedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentRuntimePlatform(v **types.RuntimePlatform, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.RuntimePlatform + if *v == nil { + sv = &types.RuntimePlatform{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "cpuArchitecture": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected CPUArchitecture to be of type string, got %T instead", value) + } + sv.CpuArchitecture = types.CPUArchitecture(jtv) + } + + case "operatingSystemFamily": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected OSFamily to be of type string, got %T instead", value) + } + sv.OperatingSystemFamily = types.OSFamily(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentScale(v **types.Scale, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Scale + if *v == nil { + sv = &types.Scale{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "unit": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ScaleUnit to be of type string, got %T instead", value) + } + sv.Unit = types.ScaleUnit(jtv) + } + + case "value": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.Value = f64 + + case string: + var f64 float64 + switch { + case strings.EqualFold(jtv, "NaN"): + f64 = math.NaN() + + case strings.EqualFold(jtv, "Infinity"): + f64 = math.Inf(1) + + case strings.EqualFold(jtv, "-Infinity"): + f64 = math.Inf(-1) + + default: + return fmt.Errorf("unknown JSON number value: %s", jtv) + + } + sv.Value = f64 + + default: + return fmt.Errorf("expected Double to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentSecret(v **types.Secret, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Secret + if *v == nil { + sv = &types.Secret{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + case "valueFrom": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ValueFrom = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentSecretList(v *[]types.Secret, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Secret + if *v == nil { + cv = []types.Secret{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Secret + destAddr := &col + if err := awsAwsjson11_deserializeDocumentSecret(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServerException(v **types.ServerException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServerException + if *v == nil { + sv = &types.ServerException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentService(v **types.Service, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Service + if *v == nil { + sv = &types.Service{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "availabilityZoneRebalancing": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected AvailabilityZoneRebalancing to be of type string, got %T instead", value) + } + sv.AvailabilityZoneRebalancing = types.AvailabilityZoneRebalancing(jtv) + } + + case "capacityProviderStrategy": + if err := awsAwsjson11_deserializeDocumentCapacityProviderStrategy(&sv.CapacityProviderStrategy, value); err != nil { + return err + } + + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "createdBy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CreatedBy = ptr.String(jtv) + } + + case "deploymentConfiguration": + if err := awsAwsjson11_deserializeDocumentDeploymentConfiguration(&sv.DeploymentConfiguration, value); err != nil { + return err + } + + case "deploymentController": + if err := awsAwsjson11_deserializeDocumentDeploymentController(&sv.DeploymentController, value); err != nil { + return err + } + + case "deployments": + if err := awsAwsjson11_deserializeDocumentDeployments(&sv.Deployments, value); err != nil { + return err + } + + case "desiredCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.DesiredCount = int32(i64) + } + + case "enableECSManagedTags": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.EnableECSManagedTags = jtv + } + + case "enableExecuteCommand": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.EnableExecuteCommand = jtv + } + + case "events": + if err := awsAwsjson11_deserializeDocumentServiceEvents(&sv.Events, value); err != nil { + return err + } + + case "healthCheckGracePeriodSeconds": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.HealthCheckGracePeriodSeconds = ptr.Int32(int32(i64)) + } + + case "launchType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LaunchType to be of type string, got %T instead", value) + } + sv.LaunchType = types.LaunchType(jtv) + } + + case "loadBalancers": + if err := awsAwsjson11_deserializeDocumentLoadBalancers(&sv.LoadBalancers, value); err != nil { + return err + } + + case "networkConfiguration": + if err := awsAwsjson11_deserializeDocumentNetworkConfiguration(&sv.NetworkConfiguration, value); err != nil { + return err + } + + case "pendingCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.PendingCount = int32(i64) + } + + case "placementConstraints": + if err := awsAwsjson11_deserializeDocumentPlacementConstraints(&sv.PlacementConstraints, value); err != nil { + return err + } + + case "placementStrategy": + if err := awsAwsjson11_deserializeDocumentPlacementStrategies(&sv.PlacementStrategy, value); err != nil { + return err + } + + case "platformFamily": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformFamily = ptr.String(jtv) + } + + case "platformVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformVersion = ptr.String(jtv) + } + + case "propagateTags": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PropagateTags to be of type string, got %T instead", value) + } + sv.PropagateTags = types.PropagateTags(jtv) + } + + case "roleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RoleArn = ptr.String(jtv) + } + + case "runningCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RunningCount = int32(i64) + } + + case "schedulingStrategy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SchedulingStrategy to be of type string, got %T instead", value) + } + sv.SchedulingStrategy = types.SchedulingStrategy(jtv) + } + + case "serviceArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceArn = ptr.String(jtv) + } + + case "serviceName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceName = ptr.String(jtv) + } + + case "serviceRegistries": + if err := awsAwsjson11_deserializeDocumentServiceRegistries(&sv.ServiceRegistries, value); err != nil { + return err + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Status = ptr.String(jtv) + } + + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + case "taskDefinition": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskDefinition = ptr.String(jtv) + } + + case "taskSets": + if err := awsAwsjson11_deserializeDocumentTaskSets(&sv.TaskSets, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectClientAlias(v **types.ServiceConnectClientAlias, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceConnectClientAlias + if *v == nil { + sv = &types.ServiceConnectClientAlias{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "dnsName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DnsName = ptr.String(jtv) + } + + case "port": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected PortNumber to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Port = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectClientAliasList(v *[]types.ServiceConnectClientAlias, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceConnectClientAlias + if *v == nil { + cv = []types.ServiceConnectClientAlias{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceConnectClientAlias + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceConnectClientAlias(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectConfiguration(v **types.ServiceConnectConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceConnectConfiguration + if *v == nil { + sv = &types.ServiceConnectConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "enabled": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.Enabled = jtv + } + + case "logConfiguration": + if err := awsAwsjson11_deserializeDocumentLogConfiguration(&sv.LogConfiguration, value); err != nil { + return err + } + + case "namespace": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Namespace = ptr.String(jtv) + } + + case "services": + if err := awsAwsjson11_deserializeDocumentServiceConnectServiceList(&sv.Services, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectService(v **types.ServiceConnectService, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceConnectService + if *v == nil { + sv = &types.ServiceConnectService{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "clientAliases": + if err := awsAwsjson11_deserializeDocumentServiceConnectClientAliasList(&sv.ClientAliases, value); err != nil { + return err + } + + case "discoveryName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DiscoveryName = ptr.String(jtv) + } + + case "ingressPortOverride": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected PortNumber to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.IngressPortOverride = ptr.Int32(int32(i64)) + } + + case "portName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PortName = ptr.String(jtv) + } + + case "timeout": + if err := awsAwsjson11_deserializeDocumentTimeoutConfiguration(&sv.Timeout, value); err != nil { + return err + } + + case "tls": + if err := awsAwsjson11_deserializeDocumentServiceConnectTlsConfiguration(&sv.Tls, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectServiceList(v *[]types.ServiceConnectService, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceConnectService + if *v == nil { + cv = []types.ServiceConnectService{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceConnectService + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceConnectService(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectServiceResource(v **types.ServiceConnectServiceResource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceConnectServiceResource + if *v == nil { + sv = &types.ServiceConnectServiceResource{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "discoveryArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DiscoveryArn = ptr.String(jtv) + } + + case "discoveryName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DiscoveryName = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectServiceResourceList(v *[]types.ServiceConnectServiceResource, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceConnectServiceResource + if *v == nil { + cv = []types.ServiceConnectServiceResource{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceConnectServiceResource + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceConnectServiceResource(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectTlsCertificateAuthority(v **types.ServiceConnectTlsCertificateAuthority, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceConnectTlsCertificateAuthority + if *v == nil { + sv = &types.ServiceConnectTlsCertificateAuthority{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "awsPcaAuthorityArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AwsPcaAuthorityArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceConnectTlsConfiguration(v **types.ServiceConnectTlsConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceConnectTlsConfiguration + if *v == nil { + sv = &types.ServiceConnectTlsConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "issuerCertificateAuthority": + if err := awsAwsjson11_deserializeDocumentServiceConnectTlsCertificateAuthority(&sv.IssuerCertificateAuthority, value); err != nil { + return err + } + + case "kmsKey": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KmsKey = ptr.String(jtv) + } + + case "roleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RoleArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceDeployment(v **types.ServiceDeployment, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceDeployment + if *v == nil { + sv = &types.ServiceDeployment{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "alarms": + if err := awsAwsjson11_deserializeDocumentServiceDeploymentAlarms(&sv.Alarms, value); err != nil { + return err + } + + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "deploymentCircuitBreaker": + if err := awsAwsjson11_deserializeDocumentServiceDeploymentCircuitBreaker(&sv.DeploymentCircuitBreaker, value); err != nil { + return err + } + + case "deploymentConfiguration": + if err := awsAwsjson11_deserializeDocumentDeploymentConfiguration(&sv.DeploymentConfiguration, value); err != nil { + return err + } + + case "finishedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.FinishedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "rollback": + if err := awsAwsjson11_deserializeDocumentRollback(&sv.Rollback, value); err != nil { + return err + } + + case "serviceArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceArn = ptr.String(jtv) + } + + case "serviceDeploymentArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceDeploymentArn = ptr.String(jtv) + } + + case "sourceServiceRevisions": + if err := awsAwsjson11_deserializeDocumentServiceRevisionsSummaryList(&sv.SourceServiceRevisions, value); err != nil { + return err + } + + case "startedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceDeploymentStatus to be of type string, got %T instead", value) + } + sv.Status = types.ServiceDeploymentStatus(jtv) + } + + case "statusReason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.StatusReason = ptr.String(jtv) + } + + case "stoppedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StoppedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "targetServiceRevision": + if err := awsAwsjson11_deserializeDocumentServiceRevisionSummary(&sv.TargetServiceRevision, value); err != nil { + return err + } + + case "updatedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.UpdatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceDeploymentAlarms(v **types.ServiceDeploymentAlarms, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceDeploymentAlarms + if *v == nil { + sv = &types.ServiceDeploymentAlarms{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "alarmNames": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.AlarmNames, value); err != nil { + return err + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceDeploymentRollbackMonitorsStatus to be of type string, got %T instead", value) + } + sv.Status = types.ServiceDeploymentRollbackMonitorsStatus(jtv) + } + + case "triggeredAlarmNames": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.TriggeredAlarmNames, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceDeploymentBrief(v **types.ServiceDeploymentBrief, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceDeploymentBrief + if *v == nil { + sv = &types.ServiceDeploymentBrief{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "finishedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.FinishedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "serviceArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceArn = ptr.String(jtv) + } + + case "serviceDeploymentArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceDeploymentArn = ptr.String(jtv) + } + + case "startedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceDeploymentStatus to be of type string, got %T instead", value) + } + sv.Status = types.ServiceDeploymentStatus(jtv) + } + + case "statusReason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.StatusReason = ptr.String(jtv) + } + + case "targetServiceRevisionArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TargetServiceRevisionArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceDeploymentCircuitBreaker(v **types.ServiceDeploymentCircuitBreaker, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceDeploymentCircuitBreaker + if *v == nil { + sv = &types.ServiceDeploymentCircuitBreaker{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failureCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.FailureCount = int32(i64) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ServiceDeploymentRollbackMonitorsStatus to be of type string, got %T instead", value) + } + sv.Status = types.ServiceDeploymentRollbackMonitorsStatus(jtv) + } + + case "threshold": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Threshold = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceDeployments(v *[]types.ServiceDeployment, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceDeployment + if *v == nil { + cv = []types.ServiceDeployment{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceDeployment + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceDeployment(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceDeploymentsBrief(v *[]types.ServiceDeploymentBrief, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceDeploymentBrief + if *v == nil { + cv = []types.ServiceDeploymentBrief{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceDeploymentBrief + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceDeploymentBrief(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceEvent(v **types.ServiceEvent, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceEvent + if *v == nil { + sv = &types.ServiceEvent{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceEvents(v *[]types.ServiceEvent, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceEvent + if *v == nil { + cv = []types.ServiceEvent{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceEvent + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceEvent(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceManagedEBSVolumeConfiguration(v **types.ServiceManagedEBSVolumeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceManagedEBSVolumeConfiguration + if *v == nil { + sv = &types.ServiceManagedEBSVolumeConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "encrypted": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.Encrypted = ptr.Bool(jtv) + } + + case "filesystemType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TaskFilesystemType to be of type string, got %T instead", value) + } + sv.FilesystemType = types.TaskFilesystemType(jtv) + } + + case "iops": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Iops = ptr.Int32(int32(i64)) + } + + case "kmsKeyId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EBSKMSKeyId to be of type string, got %T instead", value) + } + sv.KmsKeyId = ptr.String(jtv) + } + + case "roleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected IAMRoleArn to be of type string, got %T instead", value) + } + sv.RoleArn = ptr.String(jtv) + } + + case "sizeInGiB": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SizeInGiB = ptr.Int32(int32(i64)) + } + + case "snapshotId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EBSSnapshotId to be of type string, got %T instead", value) + } + sv.SnapshotId = ptr.String(jtv) + } + + case "tagSpecifications": + if err := awsAwsjson11_deserializeDocumentEBSTagSpecifications(&sv.TagSpecifications, value); err != nil { + return err + } + + case "throughput": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Throughput = ptr.Int32(int32(i64)) + } + + case "volumeType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected EBSVolumeType to be of type string, got %T instead", value) + } + sv.VolumeType = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceNotActiveException(v **types.ServiceNotActiveException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceNotActiveException + if *v == nil { + sv = &types.ServiceNotActiveException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceNotFoundException(v **types.ServiceNotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceNotFoundException + if *v == nil { + sv = &types.ServiceNotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceRegistries(v *[]types.ServiceRegistry, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceRegistry + if *v == nil { + cv = []types.ServiceRegistry{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceRegistry + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceRegistry(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceRegistry(v **types.ServiceRegistry, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceRegistry + if *v == nil { + sv = &types.ServiceRegistry{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerName = ptr.String(jtv) + } + + case "containerPort": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ContainerPort = ptr.Int32(int32(i64)) + } + + case "port": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected BoxedInteger to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Port = ptr.Int32(int32(i64)) + } + + case "registryArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RegistryArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceRevision(v **types.ServiceRevision, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceRevision + if *v == nil { + sv = &types.ServiceRevision{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capacityProviderStrategy": + if err := awsAwsjson11_deserializeDocumentCapacityProviderStrategy(&sv.CapacityProviderStrategy, value); err != nil { + return err + } + + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "containerImages": + if err := awsAwsjson11_deserializeDocumentContainerImages(&sv.ContainerImages, value); err != nil { + return err + } + + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "fargateEphemeralStorage": + if err := awsAwsjson11_deserializeDocumentDeploymentEphemeralStorage(&sv.FargateEphemeralStorage, value); err != nil { + return err + } + + case "guardDutyEnabled": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.GuardDutyEnabled = jtv + } + + case "launchType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LaunchType to be of type string, got %T instead", value) + } + sv.LaunchType = types.LaunchType(jtv) + } + + case "loadBalancers": + if err := awsAwsjson11_deserializeDocumentLoadBalancers(&sv.LoadBalancers, value); err != nil { + return err + } + + case "networkConfiguration": + if err := awsAwsjson11_deserializeDocumentNetworkConfiguration(&sv.NetworkConfiguration, value); err != nil { + return err + } + + case "platformFamily": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformFamily = ptr.String(jtv) + } + + case "platformVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformVersion = ptr.String(jtv) + } + + case "serviceArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceArn = ptr.String(jtv) + } + + case "serviceConnectConfiguration": + if err := awsAwsjson11_deserializeDocumentServiceConnectConfiguration(&sv.ServiceConnectConfiguration, value); err != nil { + return err + } + + case "serviceRegistries": + if err := awsAwsjson11_deserializeDocumentServiceRegistries(&sv.ServiceRegistries, value); err != nil { + return err + } + + case "serviceRevisionArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceRevisionArn = ptr.String(jtv) + } + + case "taskDefinition": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskDefinition = ptr.String(jtv) + } + + case "volumeConfigurations": + if err := awsAwsjson11_deserializeDocumentServiceVolumeConfigurations(&sv.VolumeConfigurations, value); err != nil { + return err + } + + case "vpcLatticeConfigurations": + if err := awsAwsjson11_deserializeDocumentVpcLatticeConfigurations(&sv.VpcLatticeConfigurations, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceRevisions(v *[]types.ServiceRevision, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceRevision + if *v == nil { + cv = []types.ServiceRevision{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceRevision + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceRevision(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceRevisionsSummaryList(v *[]types.ServiceRevisionSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceRevisionSummary + if *v == nil { + cv = []types.ServiceRevisionSummary{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceRevisionSummary + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceRevisionSummary(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceRevisionSummary(v **types.ServiceRevisionSummary, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceRevisionSummary + if *v == nil { + sv = &types.ServiceRevisionSummary{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "arn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Arn = ptr.String(jtv) + } + + case "pendingTaskCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.PendingTaskCount = int32(i64) + } + + case "requestedTaskCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RequestedTaskCount = int32(i64) + } + + case "runningTaskCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RunningTaskCount = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServices(v *[]types.Service, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Service + if *v == nil { + cv = []types.Service{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Service + destAddr := &col + if err := awsAwsjson11_deserializeDocumentService(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceVolumeConfiguration(v **types.ServiceVolumeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ServiceVolumeConfiguration + if *v == nil { + sv = &types.ServiceVolumeConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "managedEBSVolume": + if err := awsAwsjson11_deserializeDocumentServiceManagedEBSVolumeConfiguration(&sv.ManagedEBSVolume, value); err != nil { + return err + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ECSVolumeName to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentServiceVolumeConfigurations(v *[]types.ServiceVolumeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ServiceVolumeConfiguration + if *v == nil { + cv = []types.ServiceVolumeConfiguration{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ServiceVolumeConfiguration + destAddr := &col + if err := awsAwsjson11_deserializeDocumentServiceVolumeConfiguration(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentSession(v **types.Session, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Session + if *v == nil { + sv = &types.Session{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "sessionId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.SessionId = ptr.String(jtv) + } + + case "streamUrl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.StreamUrl = ptr.String(jtv) + } + + case "tokenValue": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SensitiveString to be of type string, got %T instead", value) + } + sv.TokenValue = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentSetting(v **types.Setting, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Setting + if *v == nil { + sv = &types.Setting{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SettingName to be of type string, got %T instead", value) + } + sv.Name = types.SettingName(jtv) + } + + case "principalArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PrincipalArn = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected SettingType to be of type string, got %T instead", value) + } + sv.Type = types.SettingType(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentSettings(v *[]types.Setting, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Setting + if *v == nil { + cv = []types.Setting{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Setting + destAddr := &col + if err := awsAwsjson11_deserializeDocumentSetting(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentStatistics(v *[]types.KeyValuePair, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.KeyValuePair + if *v == nil { + cv = []types.KeyValuePair{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.KeyValuePair + destAddr := &col + if err := awsAwsjson11_deserializeDocumentKeyValuePair(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentStringList(v *[]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []string + if *v == nil { + cv = []string{} + } else { + cv = *v + } + + for _, value := range shape { + var col string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + col = jtv + } + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentStringMap(v *map[string]string, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var mv map[string]string + if *v == nil { + mv = map[string]string{} + } else { + mv = *v + } + + for key, value := range shape { + var parsedVal string + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + parsedVal = jtv + } + mv[key] = parsedVal + + } + *v = mv + return nil +} + +func awsAwsjson11_deserializeDocumentSystemControl(v **types.SystemControl, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.SystemControl + if *v == nil { + sv = &types.SystemControl{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "namespace": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Namespace = ptr.String(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentSystemControls(v *[]types.SystemControl, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.SystemControl + if *v == nil { + cv = []types.SystemControl{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.SystemControl + destAddr := &col + if err := awsAwsjson11_deserializeDocumentSystemControl(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentTag(v **types.Tag, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Tag + if *v == nil { + sv = &types.Tag{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "key": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TagKey to be of type string, got %T instead", value) + } + sv.Key = ptr.String(jtv) + } + + case "value": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TagValue to be of type string, got %T instead", value) + } + sv.Value = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTags(v *[]types.Tag, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Tag + if *v == nil { + cv = []types.Tag{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Tag + destAddr := &col + if err := awsAwsjson11_deserializeDocumentTag(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentTargetNotConnectedException(v **types.TargetNotConnectedException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TargetNotConnectedException + if *v == nil { + sv = &types.TargetNotConnectedException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTargetNotFoundException(v **types.TargetNotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TargetNotFoundException + if *v == nil { + sv = &types.TargetNotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTask(v **types.Task, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Task + if *v == nil { + sv = &types.Task{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "attachments": + if err := awsAwsjson11_deserializeDocumentAttachments(&sv.Attachments, value); err != nil { + return err + } + + case "attributes": + if err := awsAwsjson11_deserializeDocumentAttributes(&sv.Attributes, value); err != nil { + return err + } + + case "availabilityZone": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AvailabilityZone = ptr.String(jtv) + } + + case "capacityProviderName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.CapacityProviderName = ptr.String(jtv) + } + + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "connectivity": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected Connectivity to be of type string, got %T instead", value) + } + sv.Connectivity = types.Connectivity(jtv) + } + + case "connectivityAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.ConnectivityAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "containerInstanceArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerInstanceArn = ptr.String(jtv) + } + + case "containers": + if err := awsAwsjson11_deserializeDocumentContainers(&sv.Containers, value); err != nil { + return err + } + + case "cpu": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Cpu = ptr.String(jtv) + } + + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "desiredStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DesiredStatus = ptr.String(jtv) + } + + case "enableExecuteCommand": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.EnableExecuteCommand = jtv + } + + case "ephemeralStorage": + if err := awsAwsjson11_deserializeDocumentEphemeralStorage(&sv.EphemeralStorage, value); err != nil { + return err + } + + case "executionStoppedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.ExecutionStoppedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "fargateEphemeralStorage": + if err := awsAwsjson11_deserializeDocumentTaskEphemeralStorage(&sv.FargateEphemeralStorage, value); err != nil { + return err + } + + case "group": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Group = ptr.String(jtv) + } + + case "healthStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected HealthStatus to be of type string, got %T instead", value) + } + sv.HealthStatus = types.HealthStatus(jtv) + } + + case "inferenceAccelerators": + if err := awsAwsjson11_deserializeDocumentInferenceAccelerators(&sv.InferenceAccelerators, value); err != nil { + return err + } + + case "lastStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.LastStatus = ptr.String(jtv) + } + + case "launchType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LaunchType to be of type string, got %T instead", value) + } + sv.LaunchType = types.LaunchType(jtv) + } + + case "memory": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Memory = ptr.String(jtv) + } + + case "overrides": + if err := awsAwsjson11_deserializeDocumentTaskOverride(&sv.Overrides, value); err != nil { + return err + } + + case "platformFamily": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformFamily = ptr.String(jtv) + } + + case "platformVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformVersion = ptr.String(jtv) + } + + case "pullStartedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.PullStartedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "pullStoppedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.PullStoppedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "startedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StartedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "startedBy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.StartedBy = ptr.String(jtv) + } + + case "stopCode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TaskStopCode to be of type string, got %T instead", value) + } + sv.StopCode = types.TaskStopCode(jtv) + } + + case "stoppedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StoppedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "stoppedReason": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.StoppedReason = ptr.String(jtv) + } + + case "stoppingAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StoppingAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + case "taskArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskArn = ptr.String(jtv) + } + + case "taskDefinitionArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskDefinitionArn = ptr.String(jtv) + } + + case "version": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Long to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Version = i64 + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskDefinition(v **types.TaskDefinition, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TaskDefinition + if *v == nil { + sv = &types.TaskDefinition{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "compatibilities": + if err := awsAwsjson11_deserializeDocumentCompatibilityList(&sv.Compatibilities, value); err != nil { + return err + } + + case "containerDefinitions": + if err := awsAwsjson11_deserializeDocumentContainerDefinitions(&sv.ContainerDefinitions, value); err != nil { + return err + } + + case "cpu": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Cpu = ptr.String(jtv) + } + + case "deregisteredAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.DeregisteredAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "enableFaultInjection": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.EnableFaultInjection = ptr.Bool(jtv) + } + + case "ephemeralStorage": + if err := awsAwsjson11_deserializeDocumentEphemeralStorage(&sv.EphemeralStorage, value); err != nil { + return err + } + + case "executionRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ExecutionRoleArn = ptr.String(jtv) + } + + case "family": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Family = ptr.String(jtv) + } + + case "inferenceAccelerators": + if err := awsAwsjson11_deserializeDocumentInferenceAccelerators(&sv.InferenceAccelerators, value); err != nil { + return err + } + + case "ipcMode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected IpcMode to be of type string, got %T instead", value) + } + sv.IpcMode = types.IpcMode(jtv) + } + + case "memory": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Memory = ptr.String(jtv) + } + + case "networkMode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected NetworkMode to be of type string, got %T instead", value) + } + sv.NetworkMode = types.NetworkMode(jtv) + } + + case "pidMode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected PidMode to be of type string, got %T instead", value) + } + sv.PidMode = types.PidMode(jtv) + } + + case "placementConstraints": + if err := awsAwsjson11_deserializeDocumentTaskDefinitionPlacementConstraints(&sv.PlacementConstraints, value); err != nil { + return err + } + + case "proxyConfiguration": + if err := awsAwsjson11_deserializeDocumentProxyConfiguration(&sv.ProxyConfiguration, value); err != nil { + return err + } + + case "registeredAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.RegisteredAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "registeredBy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.RegisteredBy = ptr.String(jtv) + } + + case "requiresAttributes": + if err := awsAwsjson11_deserializeDocumentRequiresAttributes(&sv.RequiresAttributes, value); err != nil { + return err + } + + case "requiresCompatibilities": + if err := awsAwsjson11_deserializeDocumentCompatibilityList(&sv.RequiresCompatibilities, value); err != nil { + return err + } + + case "revision": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Revision = int32(i64) + } + + case "runtimePlatform": + if err := awsAwsjson11_deserializeDocumentRuntimePlatform(&sv.RuntimePlatform, value); err != nil { + return err + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TaskDefinitionStatus to be of type string, got %T instead", value) + } + sv.Status = types.TaskDefinitionStatus(jtv) + } + + case "taskDefinitionArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskDefinitionArn = ptr.String(jtv) + } + + case "taskRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskRoleArn = ptr.String(jtv) + } + + case "volumes": + if err := awsAwsjson11_deserializeDocumentVolumeList(&sv.Volumes, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskDefinitionList(v *[]types.TaskDefinition, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.TaskDefinition + if *v == nil { + cv = []types.TaskDefinition{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.TaskDefinition + destAddr := &col + if err := awsAwsjson11_deserializeDocumentTaskDefinition(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskDefinitionPlacementConstraint(v **types.TaskDefinitionPlacementConstraint, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TaskDefinitionPlacementConstraint + if *v == nil { + sv = &types.TaskDefinitionPlacementConstraint{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "expression": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Expression = ptr.String(jtv) + } + + case "type": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected TaskDefinitionPlacementConstraintType to be of type string, got %T instead", value) + } + sv.Type = types.TaskDefinitionPlacementConstraintType(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskDefinitionPlacementConstraints(v *[]types.TaskDefinitionPlacementConstraint, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.TaskDefinitionPlacementConstraint + if *v == nil { + cv = []types.TaskDefinitionPlacementConstraint{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.TaskDefinitionPlacementConstraint + destAddr := &col + if err := awsAwsjson11_deserializeDocumentTaskDefinitionPlacementConstraint(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskEphemeralStorage(v **types.TaskEphemeralStorage, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TaskEphemeralStorage + if *v == nil { + sv = &types.TaskEphemeralStorage{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "kmsKeyId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.KmsKeyId = ptr.String(jtv) + } + + case "sizeInGiB": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SizeInGiB = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskOverride(v **types.TaskOverride, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TaskOverride + if *v == nil { + sv = &types.TaskOverride{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerOverrides": + if err := awsAwsjson11_deserializeDocumentContainerOverrides(&sv.ContainerOverrides, value); err != nil { + return err + } + + case "cpu": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Cpu = ptr.String(jtv) + } + + case "ephemeralStorage": + if err := awsAwsjson11_deserializeDocumentEphemeralStorage(&sv.EphemeralStorage, value); err != nil { + return err + } + + case "executionRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ExecutionRoleArn = ptr.String(jtv) + } + + case "inferenceAcceleratorOverrides": + if err := awsAwsjson11_deserializeDocumentInferenceAcceleratorOverrides(&sv.InferenceAcceleratorOverrides, value); err != nil { + return err + } + + case "memory": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Memory = ptr.String(jtv) + } + + case "taskRoleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskRoleArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTasks(v *[]types.Task, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Task + if *v == nil { + cv = []types.Task{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Task + destAddr := &col + if err := awsAwsjson11_deserializeDocumentTask(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskSet(v **types.TaskSet, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TaskSet + if *v == nil { + sv = &types.TaskSet{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capacityProviderStrategy": + if err := awsAwsjson11_deserializeDocumentCapacityProviderStrategy(&sv.CapacityProviderStrategy, value); err != nil { + return err + } + + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "computedDesiredCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.ComputedDesiredCount = int32(i64) + } + + case "createdAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.CreatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "externalId": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ExternalId = ptr.String(jtv) + } + + case "fargateEphemeralStorage": + if err := awsAwsjson11_deserializeDocumentDeploymentEphemeralStorage(&sv.FargateEphemeralStorage, value); err != nil { + return err + } + + case "id": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Id = ptr.String(jtv) + } + + case "launchType": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected LaunchType to be of type string, got %T instead", value) + } + sv.LaunchType = types.LaunchType(jtv) + } + + case "loadBalancers": + if err := awsAwsjson11_deserializeDocumentLoadBalancers(&sv.LoadBalancers, value); err != nil { + return err + } + + case "networkConfiguration": + if err := awsAwsjson11_deserializeDocumentNetworkConfiguration(&sv.NetworkConfiguration, value); err != nil { + return err + } + + case "pendingCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.PendingCount = int32(i64) + } + + case "platformFamily": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformFamily = ptr.String(jtv) + } + + case "platformVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PlatformVersion = ptr.String(jtv) + } + + case "runningCount": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.RunningCount = int32(i64) + } + + case "scale": + if err := awsAwsjson11_deserializeDocumentScale(&sv.Scale, value); err != nil { + return err + } + + case "serviceArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceArn = ptr.String(jtv) + } + + case "serviceRegistries": + if err := awsAwsjson11_deserializeDocumentServiceRegistries(&sv.ServiceRegistries, value); err != nil { + return err + } + + case "stabilityStatus": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected StabilityStatus to be of type string, got %T instead", value) + } + sv.StabilityStatus = types.StabilityStatus(jtv) + } + + case "stabilityStatusAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.StabilityStatusAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + case "startedBy": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.StartedBy = ptr.String(jtv) + } + + case "status": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Status = ptr.String(jtv) + } + + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + case "taskDefinition": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskDefinition = ptr.String(jtv) + } + + case "taskSetArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskSetArn = ptr.String(jtv) + } + + case "updatedAt": + if value != nil { + switch jtv := value.(type) { + case json.Number: + f64, err := jtv.Float64() + if err != nil { + return err + } + sv.UpdatedAt = ptr.Time(smithytime.ParseEpochSeconds(f64)) + + default: + return fmt.Errorf("expected Timestamp to be a JSON Number, got %T instead", value) + + } + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskSetNotFoundException(v **types.TaskSetNotFoundException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TaskSetNotFoundException + if *v == nil { + sv = &types.TaskSetNotFoundException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTaskSets(v *[]types.TaskSet, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.TaskSet + if *v == nil { + cv = []types.TaskSet{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.TaskSet + destAddr := &col + if err := awsAwsjson11_deserializeDocumentTaskSet(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentTimeoutConfiguration(v **types.TimeoutConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.TimeoutConfiguration + if *v == nil { + sv = &types.TimeoutConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "idleTimeoutSeconds": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Duration to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.IdleTimeoutSeconds = ptr.Int32(int32(i64)) + } + + case "perRequestTimeoutSeconds": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Duration to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.PerRequestTimeoutSeconds = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTmpfs(v **types.Tmpfs, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Tmpfs + if *v == nil { + sv = &types.Tmpfs{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerPath": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerPath = ptr.String(jtv) + } + + case "mountOptions": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.MountOptions, value); err != nil { + return err + } + + case "size": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.Size = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentTmpfsList(v *[]types.Tmpfs, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Tmpfs + if *v == nil { + cv = []types.Tmpfs{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Tmpfs + destAddr := &col + if err := awsAwsjson11_deserializeDocumentTmpfs(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentUlimit(v **types.Ulimit, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Ulimit + if *v == nil { + sv = &types.Ulimit{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "hardLimit": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.HardLimit = int32(i64) + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UlimitName to be of type string, got %T instead", value) + } + sv.Name = types.UlimitName(jtv) + } + + case "softLimit": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected Integer to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.SoftLimit = int32(i64) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentUlimitList(v *[]types.Ulimit, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Ulimit + if *v == nil { + cv = []types.Ulimit{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Ulimit + destAddr := &col + if err := awsAwsjson11_deserializeDocumentUlimit(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentUnsupportedFeatureException(v **types.UnsupportedFeatureException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.UnsupportedFeatureException + if *v == nil { + sv = &types.UnsupportedFeatureException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentUpdateInProgressException(v **types.UpdateInProgressException, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.UpdateInProgressException + if *v == nil { + sv = &types.UpdateInProgressException{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "message", "Message": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Message = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentVersionInfo(v **types.VersionInfo, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.VersionInfo + if *v == nil { + sv = &types.VersionInfo{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "agentHash": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AgentHash = ptr.String(jtv) + } + + case "agentVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.AgentVersion = ptr.String(jtv) + } + + case "dockerVersion": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.DockerVersion = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentVolume(v **types.Volume, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.Volume + if *v == nil { + sv = &types.Volume{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "configuredAtLaunch": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.ConfiguredAtLaunch = ptr.Bool(jtv) + } + + case "dockerVolumeConfiguration": + if err := awsAwsjson11_deserializeDocumentDockerVolumeConfiguration(&sv.DockerVolumeConfiguration, value); err != nil { + return err + } + + case "efsVolumeConfiguration": + if err := awsAwsjson11_deserializeDocumentEFSVolumeConfiguration(&sv.EfsVolumeConfiguration, value); err != nil { + return err + } + + case "fsxWindowsFileServerVolumeConfiguration": + if err := awsAwsjson11_deserializeDocumentFSxWindowsFileServerVolumeConfiguration(&sv.FsxWindowsFileServerVolumeConfiguration, value); err != nil { + return err + } + + case "host": + if err := awsAwsjson11_deserializeDocumentHostVolumeProperties(&sv.Host, value); err != nil { + return err + } + + case "name": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Name = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentVolumeFrom(v **types.VolumeFrom, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.VolumeFrom + if *v == nil { + sv = &types.VolumeFrom{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "readOnly": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected BoxedBoolean to be of type *bool, got %T instead", value) + } + sv.ReadOnly = ptr.Bool(jtv) + } + + case "sourceContainer": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.SourceContainer = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentVolumeFromList(v *[]types.VolumeFrom, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.VolumeFrom + if *v == nil { + cv = []types.VolumeFrom{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.VolumeFrom + destAddr := &col + if err := awsAwsjson11_deserializeDocumentVolumeFrom(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentVolumeList(v *[]types.Volume, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.Volume + if *v == nil { + cv = []types.Volume{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.Volume + destAddr := &col + if err := awsAwsjson11_deserializeDocumentVolume(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeDocumentVpcLatticeConfiguration(v **types.VpcLatticeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.VpcLatticeConfiguration + if *v == nil { + sv = &types.VpcLatticeConfiguration{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "portName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.PortName = ptr.String(jtv) + } + + case "roleArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected IAMRoleArn to be of type string, got %T instead", value) + } + sv.RoleArn = ptr.String(jtv) + } + + case "targetGroupArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TargetGroupArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeDocumentVpcLatticeConfigurations(v *[]types.VpcLatticeConfiguration, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.VpcLatticeConfiguration + if *v == nil { + cv = []types.VpcLatticeConfiguration{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.VpcLatticeConfiguration + destAddr := &col + if err := awsAwsjson11_deserializeDocumentVpcLatticeConfiguration(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + +func awsAwsjson11_deserializeOpDocumentCreateCapacityProviderOutput(v **CreateCapacityProviderOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateCapacityProviderOutput + if *v == nil { + sv = &CreateCapacityProviderOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capacityProvider": + if err := awsAwsjson11_deserializeDocumentCapacityProvider(&sv.CapacityProvider, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentCreateClusterOutput(v **CreateClusterOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateClusterOutput + if *v == nil { + sv = &CreateClusterOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "cluster": + if err := awsAwsjson11_deserializeDocumentCluster(&sv.Cluster, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentCreateServiceOutput(v **CreateServiceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateServiceOutput + if *v == nil { + sv = &CreateServiceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "service": + if err := awsAwsjson11_deserializeDocumentService(&sv.Service, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentCreateTaskSetOutput(v **CreateTaskSetOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *CreateTaskSetOutput + if *v == nil { + sv = &CreateTaskSetOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "taskSet": + if err := awsAwsjson11_deserializeDocumentTaskSet(&sv.TaskSet, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeleteAccountSettingOutput(v **DeleteAccountSettingOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteAccountSettingOutput + if *v == nil { + sv = &DeleteAccountSettingOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "setting": + if err := awsAwsjson11_deserializeDocumentSetting(&sv.Setting, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeleteAttributesOutput(v **DeleteAttributesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteAttributesOutput + if *v == nil { + sv = &DeleteAttributesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "attributes": + if err := awsAwsjson11_deserializeDocumentAttributes(&sv.Attributes, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeleteCapacityProviderOutput(v **DeleteCapacityProviderOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteCapacityProviderOutput + if *v == nil { + sv = &DeleteCapacityProviderOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capacityProvider": + if err := awsAwsjson11_deserializeDocumentCapacityProvider(&sv.CapacityProvider, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeleteClusterOutput(v **DeleteClusterOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteClusterOutput + if *v == nil { + sv = &DeleteClusterOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "cluster": + if err := awsAwsjson11_deserializeDocumentCluster(&sv.Cluster, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeleteServiceOutput(v **DeleteServiceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteServiceOutput + if *v == nil { + sv = &DeleteServiceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "service": + if err := awsAwsjson11_deserializeDocumentService(&sv.Service, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeleteTaskDefinitionsOutput(v **DeleteTaskDefinitionsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteTaskDefinitionsOutput + if *v == nil { + sv = &DeleteTaskDefinitionsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "taskDefinitions": + if err := awsAwsjson11_deserializeDocumentTaskDefinitionList(&sv.TaskDefinitions, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeleteTaskSetOutput(v **DeleteTaskSetOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeleteTaskSetOutput + if *v == nil { + sv = &DeleteTaskSetOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "taskSet": + if err := awsAwsjson11_deserializeDocumentTaskSet(&sv.TaskSet, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeregisterContainerInstanceOutput(v **DeregisterContainerInstanceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeregisterContainerInstanceOutput + if *v == nil { + sv = &DeregisterContainerInstanceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerInstance": + if err := awsAwsjson11_deserializeDocumentContainerInstance(&sv.ContainerInstance, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDeregisterTaskDefinitionOutput(v **DeregisterTaskDefinitionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DeregisterTaskDefinitionOutput + if *v == nil { + sv = &DeregisterTaskDefinitionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "taskDefinition": + if err := awsAwsjson11_deserializeDocumentTaskDefinition(&sv.TaskDefinition, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeCapacityProvidersOutput(v **DescribeCapacityProvidersOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeCapacityProvidersOutput + if *v == nil { + sv = &DescribeCapacityProvidersOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capacityProviders": + if err := awsAwsjson11_deserializeDocumentCapacityProviders(&sv.CapacityProviders, value); err != nil { + return err + } + + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeClustersOutput(v **DescribeClustersOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeClustersOutput + if *v == nil { + sv = &DescribeClustersOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "clusters": + if err := awsAwsjson11_deserializeDocumentClusters(&sv.Clusters, value); err != nil { + return err + } + + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeContainerInstancesOutput(v **DescribeContainerInstancesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeContainerInstancesOutput + if *v == nil { + sv = &DescribeContainerInstancesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerInstances": + if err := awsAwsjson11_deserializeDocumentContainerInstances(&sv.ContainerInstances, value); err != nil { + return err + } + + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeServiceDeploymentsOutput(v **DescribeServiceDeploymentsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeServiceDeploymentsOutput + if *v == nil { + sv = &DescribeServiceDeploymentsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "serviceDeployments": + if err := awsAwsjson11_deserializeDocumentServiceDeployments(&sv.ServiceDeployments, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeServiceRevisionsOutput(v **DescribeServiceRevisionsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeServiceRevisionsOutput + if *v == nil { + sv = &DescribeServiceRevisionsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "serviceRevisions": + if err := awsAwsjson11_deserializeDocumentServiceRevisions(&sv.ServiceRevisions, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeServicesOutput(v **DescribeServicesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeServicesOutput + if *v == nil { + sv = &DescribeServicesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "services": + if err := awsAwsjson11_deserializeDocumentServices(&sv.Services, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeTaskDefinitionOutput(v **DescribeTaskDefinitionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeTaskDefinitionOutput + if *v == nil { + sv = &DescribeTaskDefinitionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + case "taskDefinition": + if err := awsAwsjson11_deserializeDocumentTaskDefinition(&sv.TaskDefinition, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeTaskSetsOutput(v **DescribeTaskSetsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeTaskSetsOutput + if *v == nil { + sv = &DescribeTaskSetsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "taskSets": + if err := awsAwsjson11_deserializeDocumentTaskSets(&sv.TaskSets, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDescribeTasksOutput(v **DescribeTasksOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DescribeTasksOutput + if *v == nil { + sv = &DescribeTasksOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "tasks": + if err := awsAwsjson11_deserializeDocumentTasks(&sv.Tasks, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentDiscoverPollEndpointOutput(v **DiscoverPollEndpointOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *DiscoverPollEndpointOutput + if *v == nil { + sv = &DiscoverPollEndpointOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "endpoint": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Endpoint = ptr.String(jtv) + } + + case "serviceConnectEndpoint": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ServiceConnectEndpoint = ptr.String(jtv) + } + + case "telemetryEndpoint": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TelemetryEndpoint = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentExecuteCommandOutput(v **ExecuteCommandOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ExecuteCommandOutput + if *v == nil { + sv = &ExecuteCommandOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "clusterArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ClusterArn = ptr.String(jtv) + } + + case "containerArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerArn = ptr.String(jtv) + } + + case "containerName": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.ContainerName = ptr.String(jtv) + } + + case "interactive": + if value != nil { + jtv, ok := value.(bool) + if !ok { + return fmt.Errorf("expected Boolean to be of type *bool, got %T instead", value) + } + sv.Interactive = jtv + } + + case "session": + if err := awsAwsjson11_deserializeDocumentSession(&sv.Session, value); err != nil { + return err + } + + case "taskArn": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.TaskArn = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentGetTaskProtectionOutput(v **GetTaskProtectionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *GetTaskProtectionOutput + if *v == nil { + sv = &GetTaskProtectionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "protectedTasks": + if err := awsAwsjson11_deserializeDocumentProtectedTasks(&sv.ProtectedTasks, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListAccountSettingsOutput(v **ListAccountSettingsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAccountSettingsOutput + if *v == nil { + sv = &ListAccountSettingsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "settings": + if err := awsAwsjson11_deserializeDocumentSettings(&sv.Settings, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListAttributesOutput(v **ListAttributesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListAttributesOutput + if *v == nil { + sv = &ListAttributesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "attributes": + if err := awsAwsjson11_deserializeDocumentAttributes(&sv.Attributes, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListClustersOutput(v **ListClustersOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListClustersOutput + if *v == nil { + sv = &ListClustersOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "clusterArns": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.ClusterArns, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListContainerInstancesOutput(v **ListContainerInstancesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListContainerInstancesOutput + if *v == nil { + sv = &ListContainerInstancesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerInstanceArns": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.ContainerInstanceArns, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListServiceDeploymentsOutput(v **ListServiceDeploymentsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListServiceDeploymentsOutput + if *v == nil { + sv = &ListServiceDeploymentsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "serviceDeployments": + if err := awsAwsjson11_deserializeDocumentServiceDeploymentsBrief(&sv.ServiceDeployments, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListServicesByNamespaceOutput(v **ListServicesByNamespaceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListServicesByNamespaceOutput + if *v == nil { + sv = &ListServicesByNamespaceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "serviceArns": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.ServiceArns, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListServicesOutput(v **ListServicesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListServicesOutput + if *v == nil { + sv = &ListServicesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "serviceArns": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.ServiceArns, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListTagsForResourceOutput(v **ListTagsForResourceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListTagsForResourceOutput + if *v == nil { + sv = &ListTagsForResourceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListTaskDefinitionFamiliesOutput(v **ListTaskDefinitionFamiliesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListTaskDefinitionFamiliesOutput + if *v == nil { + sv = &ListTaskDefinitionFamiliesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "families": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.Families, value); err != nil { + return err + } + + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListTaskDefinitionsOutput(v **ListTaskDefinitionsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListTaskDefinitionsOutput + if *v == nil { + sv = &ListTaskDefinitionsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "taskDefinitionArns": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.TaskDefinitionArns, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentListTasksOutput(v **ListTasksOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *ListTasksOutput + if *v == nil { + sv = &ListTasksOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "nextToken": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.NextToken = ptr.String(jtv) + } + + case "taskArns": + if err := awsAwsjson11_deserializeDocumentStringList(&sv.TaskArns, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentPutAccountSettingDefaultOutput(v **PutAccountSettingDefaultOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *PutAccountSettingDefaultOutput + if *v == nil { + sv = &PutAccountSettingDefaultOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "setting": + if err := awsAwsjson11_deserializeDocumentSetting(&sv.Setting, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentPutAccountSettingOutput(v **PutAccountSettingOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *PutAccountSettingOutput + if *v == nil { + sv = &PutAccountSettingOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "setting": + if err := awsAwsjson11_deserializeDocumentSetting(&sv.Setting, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentPutAttributesOutput(v **PutAttributesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *PutAttributesOutput + if *v == nil { + sv = &PutAttributesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "attributes": + if err := awsAwsjson11_deserializeDocumentAttributes(&sv.Attributes, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentPutClusterCapacityProvidersOutput(v **PutClusterCapacityProvidersOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *PutClusterCapacityProvidersOutput + if *v == nil { + sv = &PutClusterCapacityProvidersOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "cluster": + if err := awsAwsjson11_deserializeDocumentCluster(&sv.Cluster, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentRegisterContainerInstanceOutput(v **RegisterContainerInstanceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *RegisterContainerInstanceOutput + if *v == nil { + sv = &RegisterContainerInstanceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerInstance": + if err := awsAwsjson11_deserializeDocumentContainerInstance(&sv.ContainerInstance, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentRegisterTaskDefinitionOutput(v **RegisterTaskDefinitionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *RegisterTaskDefinitionOutput + if *v == nil { + sv = &RegisterTaskDefinitionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "tags": + if err := awsAwsjson11_deserializeDocumentTags(&sv.Tags, value); err != nil { + return err + } + + case "taskDefinition": + if err := awsAwsjson11_deserializeDocumentTaskDefinition(&sv.TaskDefinition, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentRunTaskOutput(v **RunTaskOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *RunTaskOutput + if *v == nil { + sv = &RunTaskOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "tasks": + if err := awsAwsjson11_deserializeDocumentTasks(&sv.Tasks, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentStartTaskOutput(v **StartTaskOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *StartTaskOutput + if *v == nil { + sv = &StartTaskOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "tasks": + if err := awsAwsjson11_deserializeDocumentTasks(&sv.Tasks, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentStopTaskOutput(v **StopTaskOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *StopTaskOutput + if *v == nil { + sv = &StopTaskOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "task": + if err := awsAwsjson11_deserializeDocumentTask(&sv.Task, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentSubmitAttachmentStateChangesOutput(v **SubmitAttachmentStateChangesOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *SubmitAttachmentStateChangesOutput + if *v == nil { + sv = &SubmitAttachmentStateChangesOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "acknowledgment": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Acknowledgment = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentSubmitContainerStateChangeOutput(v **SubmitContainerStateChangeOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *SubmitContainerStateChangeOutput + if *v == nil { + sv = &SubmitContainerStateChangeOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "acknowledgment": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Acknowledgment = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentSubmitTaskStateChangeOutput(v **SubmitTaskStateChangeOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *SubmitTaskStateChangeOutput + if *v == nil { + sv = &SubmitTaskStateChangeOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "acknowledgment": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected String to be of type string, got %T instead", value) + } + sv.Acknowledgment = ptr.String(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentTagResourceOutput(v **TagResourceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *TagResourceOutput + if *v == nil { + sv = &TagResourceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUntagResourceOutput(v **UntagResourceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UntagResourceOutput + if *v == nil { + sv = &UntagResourceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateCapacityProviderOutput(v **UpdateCapacityProviderOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateCapacityProviderOutput + if *v == nil { + sv = &UpdateCapacityProviderOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "capacityProvider": + if err := awsAwsjson11_deserializeDocumentCapacityProvider(&sv.CapacityProvider, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateClusterOutput(v **UpdateClusterOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateClusterOutput + if *v == nil { + sv = &UpdateClusterOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "cluster": + if err := awsAwsjson11_deserializeDocumentCluster(&sv.Cluster, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateClusterSettingsOutput(v **UpdateClusterSettingsOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateClusterSettingsOutput + if *v == nil { + sv = &UpdateClusterSettingsOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "cluster": + if err := awsAwsjson11_deserializeDocumentCluster(&sv.Cluster, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateContainerAgentOutput(v **UpdateContainerAgentOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateContainerAgentOutput + if *v == nil { + sv = &UpdateContainerAgentOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerInstance": + if err := awsAwsjson11_deserializeDocumentContainerInstance(&sv.ContainerInstance, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateContainerInstancesStateOutput(v **UpdateContainerInstancesStateOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateContainerInstancesStateOutput + if *v == nil { + sv = &UpdateContainerInstancesStateOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "containerInstances": + if err := awsAwsjson11_deserializeDocumentContainerInstances(&sv.ContainerInstances, value); err != nil { + return err + } + + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateServiceOutput(v **UpdateServiceOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateServiceOutput + if *v == nil { + sv = &UpdateServiceOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "service": + if err := awsAwsjson11_deserializeDocumentService(&sv.Service, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateServicePrimaryTaskSetOutput(v **UpdateServicePrimaryTaskSetOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateServicePrimaryTaskSetOutput + if *v == nil { + sv = &UpdateServicePrimaryTaskSetOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "taskSet": + if err := awsAwsjson11_deserializeDocumentTaskSet(&sv.TaskSet, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateTaskProtectionOutput(v **UpdateTaskProtectionOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateTaskProtectionOutput + if *v == nil { + sv = &UpdateTaskProtectionOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "failures": + if err := awsAwsjson11_deserializeDocumentFailures(&sv.Failures, value); err != nil { + return err + } + + case "protectedTasks": + if err := awsAwsjson11_deserializeDocumentProtectedTasks(&sv.ProtectedTasks, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsAwsjson11_deserializeOpDocumentUpdateTaskSetOutput(v **UpdateTaskSetOutput, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *UpdateTaskSetOutput + if *v == nil { + sv = &UpdateTaskSetOutput{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "taskSet": + if err := awsAwsjson11_deserializeDocumentTaskSet(&sv.TaskSet, value); err != nil { + return err + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +type protocolErrorInfo struct { + Type string `json:"__type"` + Message string + Code any // nonstandard for awsjson but some services do present the type here +} + +func getProtocolErrorInfo(decoder *json.Decoder) (protocolErrorInfo, error) { + var errInfo protocolErrorInfo + if err := decoder.Decode(&errInfo); err != nil { + if err == io.EOF { + return errInfo, nil + } + return errInfo, err + } + + return errInfo, nil +} + +func resolveProtocolErrorType(headerType string, bodyInfo protocolErrorInfo) (string, bool) { + if len(headerType) != 0 { + return headerType, true + } else if len(bodyInfo.Type) != 0 { + return bodyInfo.Type, true + } else if code, ok := bodyInfo.Code.(string); ok && len(code) != 0 { + return code, true + } + return "", false +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/doc.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/doc.go new file mode 100644 index 000000000..97103d619 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/doc.go @@ -0,0 +1,24 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +// Package ecs provides the API client, operations, and parameter types for Amazon +// EC2 Container Service. +// +// # Amazon Elastic Container Service +// +// Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast, +// container management service. It makes it easy to run, stop, and manage Docker +// containers. You can host your cluster on a serverless infrastructure that's +// managed by Amazon ECS by launching your services or tasks on Fargate. For more +// control, you can host your tasks on a cluster of Amazon Elastic Compute Cloud +// (Amazon EC2) or External (on-premises) instances that you manage. +// +// Amazon ECS makes it easy to launch and stop container-based applications with +// simple API calls. This makes it easy to get the state of your cluster from a +// centralized service, and gives you access to many familiar Amazon EC2 features. +// +// You can use Amazon ECS to schedule the placement of containers across your +// cluster based on your resource needs, isolation policies, and availability +// requirements. With Amazon ECS, you don't need to operate your own cluster +// management and configuration management systems. You also don't need to worry +// about scaling your management infrastructure. +package ecs diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/endpoints.go new file mode 100644 index 000000000..43831dd07 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/endpoints.go @@ -0,0 +1,537 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "errors" + "fmt" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalConfig "github.com/aws/aws-sdk-go-v2/internal/configsources" + "github.com/aws/aws-sdk-go-v2/internal/endpoints" + "github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn" + internalendpoints "github.com/aws/aws-sdk-go-v2/service/ecs/internal/endpoints" + smithyauth "github.com/aws/smithy-go/auth" + smithyendpoints "github.com/aws/smithy-go/endpoints" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/ptr" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" + "net/url" + "os" + "strings" +) + +// EndpointResolverOptions is the service endpoint resolver options +type EndpointResolverOptions = internalendpoints.Options + +// EndpointResolver interface for resolving service endpoints. +type EndpointResolver interface { + ResolveEndpoint(region string, options EndpointResolverOptions) (aws.Endpoint, error) +} + +var _ EndpointResolver = &internalendpoints.Resolver{} + +// NewDefaultEndpointResolver constructs a new service endpoint resolver +func NewDefaultEndpointResolver() *internalendpoints.Resolver { + return internalendpoints.New() +} + +// EndpointResolverFunc is a helper utility that wraps a function so it satisfies +// the EndpointResolver interface. This is useful when you want to add additional +// endpoint resolving logic, or stub out specific endpoints with custom values. +type EndpointResolverFunc func(region string, options EndpointResolverOptions) (aws.Endpoint, error) + +func (fn EndpointResolverFunc) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { + return fn(region, options) +} + +// EndpointResolverFromURL returns an EndpointResolver configured using the +// provided endpoint url. By default, the resolved endpoint resolver uses the +// client region as signing region, and the endpoint source is set to +// EndpointSourceCustom.You can provide functional options to configure endpoint +// values for the resolved endpoint. +func EndpointResolverFromURL(url string, optFns ...func(*aws.Endpoint)) EndpointResolver { + e := aws.Endpoint{URL: url, Source: aws.EndpointSourceCustom} + for _, fn := range optFns { + fn(&e) + } + + return EndpointResolverFunc( + func(region string, options EndpointResolverOptions) (aws.Endpoint, error) { + if len(e.SigningRegion) == 0 { + e.SigningRegion = region + } + return e, nil + }, + ) +} + +type ResolveEndpoint struct { + Resolver EndpointResolver + Options EndpointResolverOptions +} + +func (*ResolveEndpoint) ID() string { + return "ResolveEndpoint" +} + +func (m *ResolveEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + if !awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleSerialize(ctx, in) + } + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.Resolver == nil { + return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil") + } + + eo := m.Options + eo.Logger = middleware.GetLogger(ctx) + + var endpoint aws.Endpoint + endpoint, err = m.Resolver.ResolveEndpoint(awsmiddleware.GetRegion(ctx), eo) + if err != nil { + nf := (&aws.EndpointNotFoundError{}) + if errors.As(err, &nf) { + ctx = awsmiddleware.SetRequiresLegacyEndpoints(ctx, false) + return next.HandleSerialize(ctx, in) + } + return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) + } + + req.URL, err = url.Parse(endpoint.URL) + if err != nil { + return out, metadata, fmt.Errorf("failed to parse endpoint URL: %w", err) + } + + if len(awsmiddleware.GetSigningName(ctx)) == 0 { + signingName := endpoint.SigningName + if len(signingName) == 0 { + signingName = "ecs" + } + ctx = awsmiddleware.SetSigningName(ctx, signingName) + } + ctx = awsmiddleware.SetEndpointSource(ctx, endpoint.Source) + ctx = smithyhttp.SetHostnameImmutable(ctx, endpoint.HostnameImmutable) + ctx = awsmiddleware.SetSigningRegion(ctx, endpoint.SigningRegion) + ctx = awsmiddleware.SetPartitionID(ctx, endpoint.PartitionID) + return next.HandleSerialize(ctx, in) +} +func addResolveEndpointMiddleware(stack *middleware.Stack, o Options) error { + return stack.Serialize.Insert(&ResolveEndpoint{ + Resolver: o.EndpointResolver, + Options: o.EndpointOptions, + }, "OperationSerializer", middleware.Before) +} + +func removeResolveEndpointMiddleware(stack *middleware.Stack) error { + _, err := stack.Serialize.Remove((&ResolveEndpoint{}).ID()) + return err +} + +type wrappedEndpointResolver struct { + awsResolver aws.EndpointResolverWithOptions +} + +func (w *wrappedEndpointResolver) ResolveEndpoint(region string, options EndpointResolverOptions) (endpoint aws.Endpoint, err error) { + return w.awsResolver.ResolveEndpoint(ServiceID, region, options) +} + +type awsEndpointResolverAdaptor func(service, region string) (aws.Endpoint, error) + +func (a awsEndpointResolverAdaptor) ResolveEndpoint(service, region string, options ...interface{}) (aws.Endpoint, error) { + return a(service, region) +} + +var _ aws.EndpointResolverWithOptions = awsEndpointResolverAdaptor(nil) + +// withEndpointResolver returns an aws.EndpointResolverWithOptions that first delegates endpoint resolution to the awsResolver. +// If awsResolver returns aws.EndpointNotFoundError error, the v1 resolver middleware will swallow the error, +// and set an appropriate context flag such that fallback will occur when EndpointResolverV2 is invoked +// via its middleware. +// +// If another error (besides aws.EndpointNotFoundError) is returned, then that error will be propagated. +func withEndpointResolver(awsResolver aws.EndpointResolver, awsResolverWithOptions aws.EndpointResolverWithOptions) EndpointResolver { + var resolver aws.EndpointResolverWithOptions + + if awsResolverWithOptions != nil { + resolver = awsResolverWithOptions + } else if awsResolver != nil { + resolver = awsEndpointResolverAdaptor(awsResolver.ResolveEndpoint) + } + + return &wrappedEndpointResolver{ + awsResolver: resolver, + } +} + +func finalizeClientEndpointResolverOptions(options *Options) { + options.EndpointOptions.LogDeprecated = options.ClientLogMode.IsDeprecatedUsage() + + if len(options.EndpointOptions.ResolvedRegion) == 0 { + const fipsInfix = "-fips-" + const fipsPrefix = "fips-" + const fipsSuffix = "-fips" + + if strings.Contains(options.Region, fipsInfix) || + strings.Contains(options.Region, fipsPrefix) || + strings.Contains(options.Region, fipsSuffix) { + options.EndpointOptions.ResolvedRegion = strings.ReplaceAll(strings.ReplaceAll(strings.ReplaceAll( + options.Region, fipsInfix, "-"), fipsPrefix, ""), fipsSuffix, "") + options.EndpointOptions.UseFIPSEndpoint = aws.FIPSEndpointStateEnabled + } + } + +} + +func resolveEndpointResolverV2(options *Options) { + if options.EndpointResolverV2 == nil { + options.EndpointResolverV2 = NewDefaultEndpointResolverV2() + } +} + +func resolveBaseEndpoint(cfg aws.Config, o *Options) { + if cfg.BaseEndpoint != nil { + o.BaseEndpoint = cfg.BaseEndpoint + } + + _, g := os.LookupEnv("AWS_ENDPOINT_URL") + _, s := os.LookupEnv("AWS_ENDPOINT_URL_ECS") + + if g && !s { + return + } + + value, found, err := internalConfig.ResolveServiceBaseEndpoint(context.Background(), "ECS", cfg.ConfigSources) + if found && err == nil { + o.BaseEndpoint = &value + } +} + +func bindRegion(region string) *string { + if region == "" { + return nil + } + return aws.String(endpoints.MapFIPSRegion(region)) +} + +// EndpointParameters provides the parameters that influence how endpoints are +// resolved. +type EndpointParameters struct { + // The AWS region used to dispatch the request. + // + // Parameter is + // required. + // + // AWS::Region + Region *string + + // When true, use the dual-stack endpoint. If the configured endpoint does not + // support dual-stack, dispatching the request MAY return an error. + // + // Defaults to + // false if no value is provided. + // + // AWS::UseDualStack + UseDualStack *bool + + // When true, send this request to the FIPS-compliant regional endpoint. If the + // configured endpoint does not have a FIPS compliant endpoint, dispatching the + // request will return an error. + // + // Defaults to false if no value is + // provided. + // + // AWS::UseFIPS + UseFIPS *bool + + // Override the endpoint used to send this request + // + // Parameter is + // required. + // + // SDK::Endpoint + Endpoint *string +} + +// ValidateRequired validates required parameters are set. +func (p EndpointParameters) ValidateRequired() error { + if p.UseDualStack == nil { + return fmt.Errorf("parameter UseDualStack is required") + } + + if p.UseFIPS == nil { + return fmt.Errorf("parameter UseFIPS is required") + } + + return nil +} + +// WithDefaults returns a shallow copy of EndpointParameterswith default values +// applied to members where applicable. +func (p EndpointParameters) WithDefaults() EndpointParameters { + if p.UseDualStack == nil { + p.UseDualStack = ptr.Bool(false) + } + + if p.UseFIPS == nil { + p.UseFIPS = ptr.Bool(false) + } + return p +} + +type stringSlice []string + +func (s stringSlice) Get(i int) *string { + if i < 0 || i >= len(s) { + return nil + } + + v := s[i] + return &v +} + +// EndpointResolverV2 provides the interface for resolving service endpoints. +type EndpointResolverV2 interface { + // ResolveEndpoint attempts to resolve the endpoint with the provided options, + // returning the endpoint if found. Otherwise an error is returned. + ResolveEndpoint(ctx context.Context, params EndpointParameters) ( + smithyendpoints.Endpoint, error, + ) +} + +// resolver provides the implementation for resolving endpoints. +type resolver struct{} + +func NewDefaultEndpointResolverV2() EndpointResolverV2 { + return &resolver{} +} + +// ResolveEndpoint attempts to resolve the endpoint with the provided options, +// returning the endpoint if found. Otherwise an error is returned. +func (r *resolver) ResolveEndpoint( + ctx context.Context, params EndpointParameters, +) ( + endpoint smithyendpoints.Endpoint, err error, +) { + params = params.WithDefaults() + if err = params.ValidateRequired(); err != nil { + return endpoint, fmt.Errorf("endpoint parameters are not valid, %w", err) + } + _UseDualStack := *params.UseDualStack + _UseFIPS := *params.UseFIPS + + if exprVal := params.Endpoint; exprVal != nil { + _Endpoint := *exprVal + _ = _Endpoint + if _UseFIPS == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: FIPS and custom endpoint are not supported") + } + if _UseDualStack == true { + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Dualstack and custom endpoint are not supported") + } + uriString := _Endpoint + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + if exprVal := params.Region; exprVal != nil { + _Region := *exprVal + _ = _Region + if exprVal := awsrulesfn.GetPartition(_Region); exprVal != nil { + _PartitionResult := *exprVal + _ = _PartitionResult + if _UseFIPS == true { + if _UseDualStack == true { + if true == _PartitionResult.SupportsFIPS { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecs-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS and DualStack are enabled, but this partition does not support one or both") + } + } + if _UseFIPS == true { + if _PartitionResult.SupportsFIPS == true { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecs-fips.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "FIPS is enabled but this partition does not support FIPS") + } + if _UseDualStack == true { + if true == _PartitionResult.SupportsDualStack { + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecs.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DualStackDnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "DualStack is enabled but this partition does not support DualStack") + } + uriString := func() string { + var out strings.Builder + out.WriteString("https://ecs.") + out.WriteString(_Region) + out.WriteString(".") + out.WriteString(_PartitionResult.DnsSuffix) + return out.String() + }() + + uri, err := url.Parse(uriString) + if err != nil { + return endpoint, fmt.Errorf("Failed to parse uri: %s", uriString) + } + + return smithyendpoints.Endpoint{ + URI: *uri, + Headers: http.Header{}, + }, nil + } + return endpoint, fmt.Errorf("Endpoint resolution failed. Invalid operation or environment input.") + } + return endpoint, fmt.Errorf("endpoint rule error, %s", "Invalid Configuration: Missing Region") +} + +type endpointParamsBinder interface { + bindEndpointParams(*EndpointParameters) +} + +func bindEndpointParams(ctx context.Context, input interface{}, options Options) *EndpointParameters { + params := &EndpointParameters{} + + params.Region = bindRegion(options.Region) + params.UseDualStack = aws.Bool(options.EndpointOptions.UseDualStackEndpoint == aws.DualStackEndpointStateEnabled) + params.UseFIPS = aws.Bool(options.EndpointOptions.UseFIPSEndpoint == aws.FIPSEndpointStateEnabled) + params.Endpoint = options.BaseEndpoint + + if b, ok := input.(endpointParamsBinder); ok { + b.bindEndpointParams(params) + } + + return params +} + +type resolveEndpointV2Middleware struct { + options Options +} + +func (*resolveEndpointV2Middleware) ID() string { + return "ResolveEndpointV2" +} + +func (m *resolveEndpointV2Middleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) ( + out middleware.FinalizeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "ResolveEndpoint") + defer span.End() + + if awsmiddleware.GetRequiresLegacyEndpoints(ctx) { + return next.HandleFinalize(ctx, in) + } + + req, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, fmt.Errorf("unknown transport type %T", in.Request) + } + + if m.options.EndpointResolverV2 == nil { + return out, metadata, fmt.Errorf("expected endpoint resolver to not be nil") + } + + params := bindEndpointParams(ctx, getOperationInput(ctx), m.options) + endpt, err := timeOperationMetric(ctx, "client.call.resolve_endpoint_duration", + func() (smithyendpoints.Endpoint, error) { + return m.options.EndpointResolverV2.ResolveEndpoint(ctx, *params) + }) + if err != nil { + return out, metadata, fmt.Errorf("failed to resolve service endpoint, %w", err) + } + + span.SetProperty("client.call.resolved_endpoint", endpt.URI.String()) + + if endpt.URI.RawPath == "" && req.URL.RawPath != "" { + endpt.URI.RawPath = endpt.URI.Path + } + req.URL.Scheme = endpt.URI.Scheme + req.URL.Host = endpt.URI.Host + req.URL.Path = smithyhttp.JoinPath(endpt.URI.Path, req.URL.Path) + req.URL.RawPath = smithyhttp.JoinPath(endpt.URI.RawPath, req.URL.RawPath) + for k := range endpt.Headers { + req.Header.Set(k, endpt.Headers.Get(k)) + } + + rscheme := getResolvedAuthScheme(ctx) + if rscheme == nil { + return out, metadata, fmt.Errorf("no resolved auth scheme") + } + + opts, _ := smithyauth.GetAuthOptions(&endpt.Properties) + for _, o := range opts { + rscheme.SignerProperties.SetAll(&o.SignerProperties) + } + + span.End() + return next.HandleFinalize(ctx, in) +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/generated.json b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/generated.json new file mode 100644 index 000000000..2a0af2dc6 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/generated.json @@ -0,0 +1,92 @@ +{ + "dependencies": { + "github.com/aws/aws-sdk-go-v2": "v1.4.0", + "github.com/aws/aws-sdk-go-v2/internal/configsources": "v0.0.0-00010101000000-000000000000", + "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2": "v2.0.0-00010101000000-000000000000", + "github.com/aws/smithy-go": "v1.4.0", + "github.com/jmespath/go-jmespath": "v0.4.0" + }, + "files": [ + "api_client.go", + "api_client_test.go", + "api_op_CreateCapacityProvider.go", + "api_op_CreateCluster.go", + "api_op_CreateService.go", + "api_op_CreateTaskSet.go", + "api_op_DeleteAccountSetting.go", + "api_op_DeleteAttributes.go", + "api_op_DeleteCapacityProvider.go", + "api_op_DeleteCluster.go", + "api_op_DeleteService.go", + "api_op_DeleteTaskDefinitions.go", + "api_op_DeleteTaskSet.go", + "api_op_DeregisterContainerInstance.go", + "api_op_DeregisterTaskDefinition.go", + "api_op_DescribeCapacityProviders.go", + "api_op_DescribeClusters.go", + "api_op_DescribeContainerInstances.go", + "api_op_DescribeServiceDeployments.go", + "api_op_DescribeServiceRevisions.go", + "api_op_DescribeServices.go", + "api_op_DescribeTaskDefinition.go", + "api_op_DescribeTaskSets.go", + "api_op_DescribeTasks.go", + "api_op_DiscoverPollEndpoint.go", + "api_op_ExecuteCommand.go", + "api_op_GetTaskProtection.go", + "api_op_ListAccountSettings.go", + "api_op_ListAttributes.go", + "api_op_ListClusters.go", + "api_op_ListContainerInstances.go", + "api_op_ListServiceDeployments.go", + "api_op_ListServices.go", + "api_op_ListServicesByNamespace.go", + "api_op_ListTagsForResource.go", + "api_op_ListTaskDefinitionFamilies.go", + "api_op_ListTaskDefinitions.go", + "api_op_ListTasks.go", + "api_op_PutAccountSetting.go", + "api_op_PutAccountSettingDefault.go", + "api_op_PutAttributes.go", + "api_op_PutClusterCapacityProviders.go", + "api_op_RegisterContainerInstance.go", + "api_op_RegisterTaskDefinition.go", + "api_op_RunTask.go", + "api_op_StartTask.go", + "api_op_StopTask.go", + "api_op_SubmitAttachmentStateChanges.go", + "api_op_SubmitContainerStateChange.go", + "api_op_SubmitTaskStateChange.go", + "api_op_TagResource.go", + "api_op_UntagResource.go", + "api_op_UpdateCapacityProvider.go", + "api_op_UpdateCluster.go", + "api_op_UpdateClusterSettings.go", + "api_op_UpdateContainerAgent.go", + "api_op_UpdateContainerInstancesState.go", + "api_op_UpdateService.go", + "api_op_UpdateServicePrimaryTaskSet.go", + "api_op_UpdateTaskProtection.go", + "api_op_UpdateTaskSet.go", + "auth.go", + "deserializers.go", + "doc.go", + "endpoints.go", + "endpoints_config_test.go", + "endpoints_test.go", + "generated.json", + "internal/endpoints/endpoints.go", + "internal/endpoints/endpoints_test.go", + "options.go", + "protocol_test.go", + "serializers.go", + "snapshot_test.go", + "types/enums.go", + "types/errors.go", + "types/types.go", + "validators.go" + ], + "go": "1.15", + "module": "github.com/aws/aws-sdk-go-v2/service/ecs", + "unstable": false +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/go_module_metadata.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/go_module_metadata.go new file mode 100644 index 000000000..18db02442 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/go_module_metadata.go @@ -0,0 +1,6 @@ +// Code generated by internal/repotools/cmd/updatemodulemeta DO NOT EDIT. + +package ecs + +// goModuleVersion is the tagged release for this module +const goModuleVersion = "1.53.0" diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/internal/endpoints/endpoints.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/internal/endpoints/endpoints.go new file mode 100644 index 000000000..75eb7d212 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/internal/endpoints/endpoints.go @@ -0,0 +1,507 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package endpoints + +import ( + "github.com/aws/aws-sdk-go-v2/aws" + endpoints "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2" + "github.com/aws/smithy-go/logging" + "regexp" +) + +// Options is the endpoint resolver configuration options +type Options struct { + // Logger is a logging implementation that log events should be sent to. + Logger logging.Logger + + // LogDeprecated indicates that deprecated endpoints should be logged to the + // provided logger. + LogDeprecated bool + + // ResolvedRegion is used to override the region to be resolved, rather then the + // using the value passed to the ResolveEndpoint method. This value is used by the + // SDK to translate regions like fips-us-east-1 or us-east-1-fips to an alternative + // name. You must not set this value directly in your application. + ResolvedRegion string + + // DisableHTTPS informs the resolver to return an endpoint that does not use the + // HTTPS scheme. + DisableHTTPS bool + + // UseDualStackEndpoint specifies the resolver must resolve a dual-stack endpoint. + UseDualStackEndpoint aws.DualStackEndpointState + + // UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint. + UseFIPSEndpoint aws.FIPSEndpointState +} + +func (o Options) GetResolvedRegion() string { + return o.ResolvedRegion +} + +func (o Options) GetDisableHTTPS() bool { + return o.DisableHTTPS +} + +func (o Options) GetUseDualStackEndpoint() aws.DualStackEndpointState { + return o.UseDualStackEndpoint +} + +func (o Options) GetUseFIPSEndpoint() aws.FIPSEndpointState { + return o.UseFIPSEndpoint +} + +func transformToSharedOptions(options Options) endpoints.Options { + return endpoints.Options{ + Logger: options.Logger, + LogDeprecated: options.LogDeprecated, + ResolvedRegion: options.ResolvedRegion, + DisableHTTPS: options.DisableHTTPS, + UseDualStackEndpoint: options.UseDualStackEndpoint, + UseFIPSEndpoint: options.UseFIPSEndpoint, + } +} + +// Resolver ECS endpoint resolver +type Resolver struct { + partitions endpoints.Partitions +} + +// ResolveEndpoint resolves the service endpoint for the given region and options +func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) { + if len(region) == 0 { + return endpoint, &aws.MissingRegionError{} + } + + opt := transformToSharedOptions(options) + return r.partitions.ResolveEndpoint(region, opt) +} + +// New returns a new Resolver +func New() *Resolver { + return &Resolver{ + partitions: defaultPartitions, + } +} + +var partitionRegexp = struct { + Aws *regexp.Regexp + AwsCn *regexp.Regexp + AwsIso *regexp.Regexp + AwsIsoB *regexp.Regexp + AwsIsoE *regexp.Regexp + AwsIsoF *regexp.Regexp + AwsUsGov *regexp.Regexp +}{ + + Aws: regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"), + AwsCn: regexp.MustCompile("^cn\\-\\w+\\-\\d+$"), + AwsIso: regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"), + AwsIsoB: regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"), + AwsIsoE: regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"), + AwsIsoF: regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"), + AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"), +} + +var defaultPartitions = endpoints.Partitions{ + { + ID: "aws", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "ecs.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "ecs-fips.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "ecs.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.Aws, + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "af-south-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-east-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-northeast-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-northeast-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-northeast-3", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-south-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-south-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-southeast-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-southeast-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-southeast-3", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-southeast-4", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-southeast-5", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ca-central-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ca-west-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-central-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-central-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-north-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-south-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-south-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-west-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-west-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-west-3", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "fips-us-east-1", + }: endpoints.Endpoint{ + Hostname: "ecs-fips.us-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-1", + }, + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "fips-us-east-2", + }: endpoints.Endpoint{ + Hostname: "ecs-fips.us-east-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-east-2", + }, + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "fips-us-west-1", + }: endpoints.Endpoint{ + Hostname: "ecs-fips.us-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-1", + }, + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "fips-us-west-2", + }: endpoints.Endpoint{ + Hostname: "ecs-fips.us-west-2.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-west-2", + }, + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "il-central-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "me-central-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "me-south-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "sa-east-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-east-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-east-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.us-east-1.amazonaws.com", + }, + endpoints.EndpointKey{ + Region: "us-east-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-east-2", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.us-east-2.amazonaws.com", + }, + endpoints.EndpointKey{ + Region: "us-west-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-west-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.us-west-1.amazonaws.com", + }, + endpoints.EndpointKey{ + Region: "us-west-2", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-west-2", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.us-west-2.amazonaws.com", + }, + }, + }, + { + ID: "aws-cn", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "ecs.{region}.api.amazonwebservices.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.{region}.amazonaws.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "ecs-fips.{region}.api.amazonwebservices.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "ecs.{region}.amazonaws.com.cn", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsCn, + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "cn-north-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "cn-northwest-1", + }: endpoints.Endpoint{}, + }, + }, + { + ID: "aws-iso", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.{region}.c2s.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "ecs.{region}.c2s.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIso, + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "us-iso-east-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-iso-west-1", + }: endpoints.Endpoint{}, + }, + }, + { + ID: "aws-iso-b", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.{region}.sc2s.sgov.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "ecs.{region}.sc2s.sgov.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoB, + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "us-isob-east-1", + }: endpoints.Endpoint{}, + }, + }, + { + ID: "aws-iso-e", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "ecs.{region}.cloud.adc-e.uk", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoE, + IsRegionalized: true, + }, + { + ID: "aws-iso-f", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "ecs.{region}.csp.hci.ic.gov", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsIsoF, + IsRegionalized: true, + }, + { + ID: "aws-us-gov", + Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{ + { + Variant: endpoints.DualStackVariant, + }: { + Hostname: "ecs.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: endpoints.FIPSVariant | endpoints.DualStackVariant, + }: { + Hostname: "ecs-fips.{region}.api.aws", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + { + Variant: 0, + }: { + Hostname: "ecs.{region}.amazonaws.com", + Protocols: []string{"https"}, + SignatureVersions: []string{"v4"}, + }, + }, + RegionRegex: partitionRegexp.AwsUsGov, + IsRegionalized: true, + Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "fips-us-gov-east-1", + }: endpoints.Endpoint{ + Hostname: "ecs-fips.us-gov-east-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "fips-us-gov-west-1", + }: endpoints.Endpoint{ + Hostname: "ecs-fips.us-gov-west-1.amazonaws.com", + CredentialScope: endpoints.CredentialScope{ + Region: "us-gov-west-1", + }, + Deprecated: aws.TrueTernary, + }, + endpoints.EndpointKey{ + Region: "us-gov-east-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-gov-east-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.us-gov-east-1.amazonaws.com", + }, + endpoints.EndpointKey{ + Region: "us-gov-west-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "us-gov-west-1", + Variant: endpoints.FIPSVariant, + }: { + Hostname: "ecs-fips.us-gov-west-1.amazonaws.com", + }, + }, + }, +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/options.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/options.go new file mode 100644 index 000000000..e73622882 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/options.go @@ -0,0 +1,236 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "github.com/aws/aws-sdk-go-v2/aws" + awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" + internalauthsmithy "github.com/aws/aws-sdk-go-v2/internal/auth/smithy" + smithyauth "github.com/aws/smithy-go/auth" + "github.com/aws/smithy-go/logging" + "github.com/aws/smithy-go/metrics" + "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "net/http" +) + +type HTTPClient interface { + Do(*http.Request) (*http.Response, error) +} + +type Options struct { + // Set of options to modify how an operation is invoked. These apply to all + // operations invoked for this client. Use functional options on operation call to + // modify this list for per operation behavior. + APIOptions []func(*middleware.Stack) error + + // The optional application specific identifier appended to the User-Agent header. + AppID string + + // This endpoint will be given as input to an EndpointResolverV2. It is used for + // providing a custom base endpoint that is subject to modifications by the + // processing EndpointResolverV2. + BaseEndpoint *string + + // Configures the events that will be sent to the configured logger. + ClientLogMode aws.ClientLogMode + + // The credentials object to use when signing requests. + Credentials aws.CredentialsProvider + + // The configuration DefaultsMode that the SDK should use when constructing the + // clients initial default settings. + DefaultsMode aws.DefaultsMode + + // The endpoint options to be used when attempting to resolve an endpoint. + EndpointOptions EndpointResolverOptions + + // The service endpoint resolver. + // + // Deprecated: Deprecated: EndpointResolver and WithEndpointResolver. Providing a + // value for this field will likely prevent you from using any endpoint-related + // service features released after the introduction of EndpointResolverV2 and + // BaseEndpoint. + // + // To migrate an EndpointResolver implementation that uses a custom endpoint, set + // the client option BaseEndpoint instead. + EndpointResolver EndpointResolver + + // Resolves the endpoint used for a particular service operation. This should be + // used over the deprecated EndpointResolver. + EndpointResolverV2 EndpointResolverV2 + + // Signature Version 4 (SigV4) Signer + HTTPSignerV4 HTTPSignerV4 + + // Provides idempotency tokens values that will be automatically populated into + // idempotent API operations. + IdempotencyTokenProvider IdempotencyTokenProvider + + // The logger writer interface to write logging messages to. + Logger logging.Logger + + // The client meter provider. + MeterProvider metrics.MeterProvider + + // The region to send requests to. (Required) + Region string + + // RetryMaxAttempts specifies the maximum number attempts an API client will call + // an operation that fails with a retryable error. A value of 0 is ignored, and + // will not be used to configure the API client created default retryer, or modify + // per operation call's retry max attempts. + // + // If specified in an operation call's functional options with a value that is + // different than the constructed client's Options, the Client's Retryer will be + // wrapped to use the operation's specific RetryMaxAttempts value. + RetryMaxAttempts int + + // RetryMode specifies the retry mode the API client will be created with, if + // Retryer option is not also specified. + // + // When creating a new API Clients this member will only be used if the Retryer + // Options member is nil. This value will be ignored if Retryer is not nil. + // + // Currently does not support per operation call overrides, may in the future. + RetryMode aws.RetryMode + + // Retryer guides how HTTP requests should be retried in case of recoverable + // failures. When nil the API client will use a default retryer. The kind of + // default retry created by the API client can be changed with the RetryMode + // option. + Retryer aws.Retryer + + // The RuntimeEnvironment configuration, only populated if the DefaultsMode is set + // to DefaultsModeAuto and is initialized using config.LoadDefaultConfig . You + // should not populate this structure programmatically, or rely on the values here + // within your applications. + RuntimeEnvironment aws.RuntimeEnvironment + + // The client tracer provider. + TracerProvider tracing.TracerProvider + + // The initial DefaultsMode used when the client options were constructed. If the + // DefaultsMode was set to aws.DefaultsModeAuto this will store what the resolved + // value was at that point in time. + // + // Currently does not support per operation call overrides, may in the future. + resolvedDefaultsMode aws.DefaultsMode + + // The HTTP client to invoke API calls with. Defaults to client's default HTTP + // implementation if nil. + HTTPClient HTTPClient + + // The auth scheme resolver which determines how to authenticate for each + // operation. + AuthSchemeResolver AuthSchemeResolver + + // The list of auth schemes supported by the client. + AuthSchemes []smithyhttp.AuthScheme +} + +// Copy creates a clone where the APIOptions list is deep copied. +func (o Options) Copy() Options { + to := o + to.APIOptions = make([]func(*middleware.Stack) error, len(o.APIOptions)) + copy(to.APIOptions, o.APIOptions) + + return to +} + +func (o Options) GetIdentityResolver(schemeID string) smithyauth.IdentityResolver { + if schemeID == "aws.auth#sigv4" { + return getSigV4IdentityResolver(o) + } + if schemeID == "smithy.api#noAuth" { + return &smithyauth.AnonymousIdentityResolver{} + } + return nil +} + +// WithAPIOptions returns a functional option for setting the Client's APIOptions +// option. +func WithAPIOptions(optFns ...func(*middleware.Stack) error) func(*Options) { + return func(o *Options) { + o.APIOptions = append(o.APIOptions, optFns...) + } +} + +// Deprecated: EndpointResolver and WithEndpointResolver. Providing a value for +// this field will likely prevent you from using any endpoint-related service +// features released after the introduction of EndpointResolverV2 and BaseEndpoint. +// +// To migrate an EndpointResolver implementation that uses a custom endpoint, set +// the client option BaseEndpoint instead. +func WithEndpointResolver(v EndpointResolver) func(*Options) { + return func(o *Options) { + o.EndpointResolver = v + } +} + +// WithEndpointResolverV2 returns a functional option for setting the Client's +// EndpointResolverV2 option. +func WithEndpointResolverV2(v EndpointResolverV2) func(*Options) { + return func(o *Options) { + o.EndpointResolverV2 = v + } +} + +func getSigV4IdentityResolver(o Options) smithyauth.IdentityResolver { + if o.Credentials != nil { + return &internalauthsmithy.CredentialsProviderAdapter{Provider: o.Credentials} + } + return nil +} + +// WithSigV4SigningName applies an override to the authentication workflow to +// use the given signing name for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing name from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningName(name string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningName(ctx, name), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningName", fn), + middleware.Before, + ) + }) + } +} + +// WithSigV4SigningRegion applies an override to the authentication workflow to +// use the given signing region for SigV4-authenticated operations. +// +// This is an advanced setting. The value here is FINAL, taking precedence over +// the resolved signing region from both auth scheme resolution and endpoint +// resolution. +func WithSigV4SigningRegion(region string) func(*Options) { + fn := func(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, + ) { + return next.HandleInitialize(awsmiddleware.SetSigningRegion(ctx, region), in) + } + return func(o *Options) { + o.APIOptions = append(o.APIOptions, func(s *middleware.Stack) error { + return s.Initialize.Add( + middleware.InitializeMiddlewareFunc("withSigV4SigningRegion", fn), + middleware.Before, + ) + }) + } +} + +func ignoreAnonymousAuth(options *Options) { + if aws.IsCredentialsProvider(options.Credentials, (*aws.AnonymousCredentials)(nil)) { + options.Credentials = nil + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/serializers.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/serializers.go new file mode 100644 index 000000000..2784be3c5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/serializers.go @@ -0,0 +1,8619 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "bytes" + "context" + "fmt" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/encoding/httpbinding" + smithyjson "github.com/aws/smithy-go/encoding/json" + "github.com/aws/smithy-go/middleware" + smithytime "github.com/aws/smithy-go/time" + "github.com/aws/smithy-go/tracing" + smithyhttp "github.com/aws/smithy-go/transport/http" + "math" + "path" +) + +type awsAwsjson11_serializeOpCreateCapacityProvider struct { +} + +func (*awsAwsjson11_serializeOpCreateCapacityProvider) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpCreateCapacityProvider) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateCapacityProviderInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.CreateCapacityProvider") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentCreateCapacityProviderInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpCreateCluster struct { +} + +func (*awsAwsjson11_serializeOpCreateCluster) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpCreateCluster) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateClusterInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.CreateCluster") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentCreateClusterInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpCreateService struct { +} + +func (*awsAwsjson11_serializeOpCreateService) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpCreateService) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateServiceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.CreateService") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentCreateServiceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpCreateTaskSet struct { +} + +func (*awsAwsjson11_serializeOpCreateTaskSet) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpCreateTaskSet) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*CreateTaskSetInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.CreateTaskSet") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentCreateTaskSetInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeleteAccountSetting struct { +} + +func (*awsAwsjson11_serializeOpDeleteAccountSetting) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeleteAccountSetting) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteAccountSettingInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeleteAccountSetting") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeleteAccountSettingInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeleteAttributes struct { +} + +func (*awsAwsjson11_serializeOpDeleteAttributes) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeleteAttributes) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteAttributesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeleteAttributes") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeleteAttributesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeleteCapacityProvider struct { +} + +func (*awsAwsjson11_serializeOpDeleteCapacityProvider) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeleteCapacityProvider) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteCapacityProviderInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeleteCapacityProvider") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeleteCapacityProviderInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeleteCluster struct { +} + +func (*awsAwsjson11_serializeOpDeleteCluster) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeleteCluster) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteClusterInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeleteCluster") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeleteClusterInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeleteService struct { +} + +func (*awsAwsjson11_serializeOpDeleteService) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeleteService) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteServiceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeleteService") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeleteServiceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeleteTaskDefinitions struct { +} + +func (*awsAwsjson11_serializeOpDeleteTaskDefinitions) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeleteTaskDefinitions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteTaskDefinitionsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeleteTaskDefinitions") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeleteTaskDefinitionsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeleteTaskSet struct { +} + +func (*awsAwsjson11_serializeOpDeleteTaskSet) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeleteTaskSet) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeleteTaskSetInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeleteTaskSet") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeleteTaskSetInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeregisterContainerInstance struct { +} + +func (*awsAwsjson11_serializeOpDeregisterContainerInstance) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeregisterContainerInstance) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeregisterContainerInstanceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeregisterContainerInstance") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeregisterContainerInstanceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDeregisterTaskDefinition struct { +} + +func (*awsAwsjson11_serializeOpDeregisterTaskDefinition) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDeregisterTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DeregisterTaskDefinitionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DeregisterTaskDefinition") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDeregisterTaskDefinitionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeCapacityProviders struct { +} + +func (*awsAwsjson11_serializeOpDescribeCapacityProviders) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeCapacityProviders) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeCapacityProvidersInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeCapacityProviders") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeCapacityProvidersInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeClusters struct { +} + +func (*awsAwsjson11_serializeOpDescribeClusters) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeClusters) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeClustersInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeClusters") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeClustersInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeContainerInstances struct { +} + +func (*awsAwsjson11_serializeOpDescribeContainerInstances) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeContainerInstances) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeContainerInstancesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeContainerInstances") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeContainerInstancesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeServiceDeployments struct { +} + +func (*awsAwsjson11_serializeOpDescribeServiceDeployments) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeServiceDeployments) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeServiceDeploymentsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeServiceDeployments") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeServiceDeploymentsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeServiceRevisions struct { +} + +func (*awsAwsjson11_serializeOpDescribeServiceRevisions) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeServiceRevisions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeServiceRevisionsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeServiceRevisions") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeServiceRevisionsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeServices struct { +} + +func (*awsAwsjson11_serializeOpDescribeServices) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeServices) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeServicesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeServices") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeServicesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeTaskDefinition struct { +} + +func (*awsAwsjson11_serializeOpDescribeTaskDefinition) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeTaskDefinitionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeTaskDefinition") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeTaskDefinitionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeTasks struct { +} + +func (*awsAwsjson11_serializeOpDescribeTasks) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeTasks) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeTasksInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeTasks") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeTasksInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDescribeTaskSets struct { +} + +func (*awsAwsjson11_serializeOpDescribeTaskSets) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDescribeTaskSets) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DescribeTaskSetsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DescribeTaskSets") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDescribeTaskSetsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpDiscoverPollEndpoint struct { +} + +func (*awsAwsjson11_serializeOpDiscoverPollEndpoint) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpDiscoverPollEndpoint) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*DiscoverPollEndpointInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.DiscoverPollEndpoint") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentDiscoverPollEndpointInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpExecuteCommand struct { +} + +func (*awsAwsjson11_serializeOpExecuteCommand) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpExecuteCommand) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ExecuteCommandInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ExecuteCommand") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentExecuteCommandInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpGetTaskProtection struct { +} + +func (*awsAwsjson11_serializeOpGetTaskProtection) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpGetTaskProtection) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*GetTaskProtectionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.GetTaskProtection") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentGetTaskProtectionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListAccountSettings struct { +} + +func (*awsAwsjson11_serializeOpListAccountSettings) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListAccountSettings) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAccountSettingsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListAccountSettings") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListAccountSettingsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListAttributes struct { +} + +func (*awsAwsjson11_serializeOpListAttributes) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListAttributes) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListAttributesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListAttributes") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListAttributesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListClusters struct { +} + +func (*awsAwsjson11_serializeOpListClusters) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListClusters) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListClustersInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListClusters") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListClustersInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListContainerInstances struct { +} + +func (*awsAwsjson11_serializeOpListContainerInstances) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListContainerInstances) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListContainerInstancesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListContainerInstances") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListContainerInstancesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListServiceDeployments struct { +} + +func (*awsAwsjson11_serializeOpListServiceDeployments) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListServiceDeployments) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListServiceDeploymentsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListServiceDeployments") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListServiceDeploymentsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListServices struct { +} + +func (*awsAwsjson11_serializeOpListServices) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListServices) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListServicesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListServices") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListServicesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListServicesByNamespace struct { +} + +func (*awsAwsjson11_serializeOpListServicesByNamespace) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListServicesByNamespace) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListServicesByNamespaceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListServicesByNamespace") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListServicesByNamespaceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListTagsForResource struct { +} + +func (*awsAwsjson11_serializeOpListTagsForResource) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListTagsForResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListTagsForResourceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListTagsForResource") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListTagsForResourceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListTaskDefinitionFamilies struct { +} + +func (*awsAwsjson11_serializeOpListTaskDefinitionFamilies) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListTaskDefinitionFamilies) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListTaskDefinitionFamiliesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListTaskDefinitionFamilies") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListTaskDefinitionFamiliesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListTaskDefinitions struct { +} + +func (*awsAwsjson11_serializeOpListTaskDefinitions) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListTaskDefinitions) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListTaskDefinitionsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListTaskDefinitions") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListTaskDefinitionsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpListTasks struct { +} + +func (*awsAwsjson11_serializeOpListTasks) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpListTasks) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*ListTasksInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.ListTasks") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentListTasksInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpPutAccountSetting struct { +} + +func (*awsAwsjson11_serializeOpPutAccountSetting) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpPutAccountSetting) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*PutAccountSettingInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.PutAccountSetting") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentPutAccountSettingInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpPutAccountSettingDefault struct { +} + +func (*awsAwsjson11_serializeOpPutAccountSettingDefault) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpPutAccountSettingDefault) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*PutAccountSettingDefaultInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.PutAccountSettingDefault") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentPutAccountSettingDefaultInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpPutAttributes struct { +} + +func (*awsAwsjson11_serializeOpPutAttributes) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpPutAttributes) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*PutAttributesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.PutAttributes") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentPutAttributesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpPutClusterCapacityProviders struct { +} + +func (*awsAwsjson11_serializeOpPutClusterCapacityProviders) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpPutClusterCapacityProviders) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*PutClusterCapacityProvidersInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.PutClusterCapacityProviders") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentPutClusterCapacityProvidersInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpRegisterContainerInstance struct { +} + +func (*awsAwsjson11_serializeOpRegisterContainerInstance) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpRegisterContainerInstance) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*RegisterContainerInstanceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.RegisterContainerInstance") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentRegisterContainerInstanceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpRegisterTaskDefinition struct { +} + +func (*awsAwsjson11_serializeOpRegisterTaskDefinition) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpRegisterTaskDefinition) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*RegisterTaskDefinitionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.RegisterTaskDefinition") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentRegisterTaskDefinitionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpRunTask struct { +} + +func (*awsAwsjson11_serializeOpRunTask) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpRunTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*RunTaskInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.RunTask") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentRunTaskInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpStartTask struct { +} + +func (*awsAwsjson11_serializeOpStartTask) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpStartTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StartTaskInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.StartTask") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentStartTaskInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpStopTask struct { +} + +func (*awsAwsjson11_serializeOpStopTask) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpStopTask) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*StopTaskInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.StopTask") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentStopTaskInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpSubmitAttachmentStateChanges struct { +} + +func (*awsAwsjson11_serializeOpSubmitAttachmentStateChanges) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpSubmitAttachmentStateChanges) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*SubmitAttachmentStateChangesInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.SubmitAttachmentStateChanges") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentSubmitAttachmentStateChangesInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpSubmitContainerStateChange struct { +} + +func (*awsAwsjson11_serializeOpSubmitContainerStateChange) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpSubmitContainerStateChange) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*SubmitContainerStateChangeInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.SubmitContainerStateChange") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentSubmitContainerStateChangeInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpSubmitTaskStateChange struct { +} + +func (*awsAwsjson11_serializeOpSubmitTaskStateChange) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpSubmitTaskStateChange) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*SubmitTaskStateChangeInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.SubmitTaskStateChange") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentSubmitTaskStateChangeInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpTagResource struct { +} + +func (*awsAwsjson11_serializeOpTagResource) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpTagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*TagResourceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.TagResource") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentTagResourceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUntagResource struct { +} + +func (*awsAwsjson11_serializeOpUntagResource) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUntagResource) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UntagResourceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UntagResource") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUntagResourceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateCapacityProvider struct { +} + +func (*awsAwsjson11_serializeOpUpdateCapacityProvider) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateCapacityProvider) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateCapacityProviderInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateCapacityProvider") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateCapacityProviderInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateCluster struct { +} + +func (*awsAwsjson11_serializeOpUpdateCluster) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateCluster) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateClusterInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateCluster") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateClusterInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateClusterSettings struct { +} + +func (*awsAwsjson11_serializeOpUpdateClusterSettings) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateClusterSettings) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateClusterSettingsInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateClusterSettings") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateClusterSettingsInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateContainerAgent struct { +} + +func (*awsAwsjson11_serializeOpUpdateContainerAgent) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateContainerAgent) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateContainerAgentInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateContainerAgent") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateContainerAgentInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateContainerInstancesState struct { +} + +func (*awsAwsjson11_serializeOpUpdateContainerInstancesState) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateContainerInstancesState) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateContainerInstancesStateInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateContainerInstancesState") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateContainerInstancesStateInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateService struct { +} + +func (*awsAwsjson11_serializeOpUpdateService) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateService) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateServiceInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateService") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateServiceInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateServicePrimaryTaskSet struct { +} + +func (*awsAwsjson11_serializeOpUpdateServicePrimaryTaskSet) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateServicePrimaryTaskSet) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateServicePrimaryTaskSetInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateServicePrimaryTaskSet") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateServicePrimaryTaskSetInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateTaskProtection struct { +} + +func (*awsAwsjson11_serializeOpUpdateTaskProtection) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateTaskProtection) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateTaskProtectionInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateTaskProtection") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateTaskProtectionInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} + +type awsAwsjson11_serializeOpUpdateTaskSet struct { +} + +func (*awsAwsjson11_serializeOpUpdateTaskSet) ID() string { + return "OperationSerializer" +} + +func (m *awsAwsjson11_serializeOpUpdateTaskSet) HandleSerialize(ctx context.Context, in middleware.SerializeInput, next middleware.SerializeHandler) ( + out middleware.SerializeOutput, metadata middleware.Metadata, err error, +) { + _, span := tracing.StartSpan(ctx, "OperationSerializer") + endTimer := startMetricTimer(ctx, "client.call.serialization_duration") + defer endTimer() + defer span.End() + request, ok := in.Request.(*smithyhttp.Request) + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown transport type %T", in.Request)} + } + + input, ok := in.Parameters.(*UpdateTaskSetInput) + _ = input + if !ok { + return out, metadata, &smithy.SerializationError{Err: fmt.Errorf("unknown input parameters type %T", in.Parameters)} + } + + operationPath := "/" + if len(request.Request.URL.Path) == 0 { + request.Request.URL.Path = operationPath + } else { + request.Request.URL.Path = path.Join(request.Request.URL.Path, operationPath) + if request.Request.URL.Path != "/" && operationPath[len(operationPath)-1] == '/' { + request.Request.URL.Path += "/" + } + } + request.Request.Method = "POST" + httpBindingEncoder, err := httpbinding.NewEncoder(request.URL.Path, request.URL.RawQuery, request.Header) + if err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + httpBindingEncoder.SetHeader("Content-Type").String("application/x-amz-json-1.1") + httpBindingEncoder.SetHeader("X-Amz-Target").String("AmazonEC2ContainerServiceV20141113.UpdateTaskSet") + + jsonEncoder := smithyjson.NewEncoder() + if err := awsAwsjson11_serializeOpDocumentUpdateTaskSetInput(input, jsonEncoder.Value); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request, err = request.SetStream(bytes.NewReader(jsonEncoder.Bytes())); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + + if request.Request, err = httpBindingEncoder.Encode(request.Request); err != nil { + return out, metadata, &smithy.SerializationError{Err: err} + } + in.Request = request + + endTimer() + span.End() + return next.HandleSerialize(ctx, in) +} +func awsAwsjson11_serializeDocumentAttachmentStateChange(v *types.AttachmentStateChange, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AttachmentArn != nil { + ok := object.Key("attachmentArn") + ok.String(*v.AttachmentArn) + } + + if v.Status != nil { + ok := object.Key("status") + ok.String(*v.Status) + } + + return nil +} + +func awsAwsjson11_serializeDocumentAttachmentStateChanges(v []types.AttachmentStateChange, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentAttachmentStateChange(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentAttribute(v *types.Attribute, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.TargetId != nil { + ok := object.Key("targetId") + ok.String(*v.TargetId) + } + + if len(v.TargetType) > 0 { + ok := object.Key("targetType") + ok.String(string(v.TargetType)) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeDocumentAttributes(v []types.Attribute, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentAttribute(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentAutoScalingGroupProvider(v *types.AutoScalingGroupProvider, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AutoScalingGroupArn != nil { + ok := object.Key("autoScalingGroupArn") + ok.String(*v.AutoScalingGroupArn) + } + + if len(v.ManagedDraining) > 0 { + ok := object.Key("managedDraining") + ok.String(string(v.ManagedDraining)) + } + + if v.ManagedScaling != nil { + ok := object.Key("managedScaling") + if err := awsAwsjson11_serializeDocumentManagedScaling(v.ManagedScaling, ok); err != nil { + return err + } + } + + if len(v.ManagedTerminationProtection) > 0 { + ok := object.Key("managedTerminationProtection") + ok.String(string(v.ManagedTerminationProtection)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentAutoScalingGroupProviderUpdate(v *types.AutoScalingGroupProviderUpdate, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.ManagedDraining) > 0 { + ok := object.Key("managedDraining") + ok.String(string(v.ManagedDraining)) + } + + if v.ManagedScaling != nil { + ok := object.Key("managedScaling") + if err := awsAwsjson11_serializeDocumentManagedScaling(v.ManagedScaling, ok); err != nil { + return err + } + } + + if len(v.ManagedTerminationProtection) > 0 { + ok := object.Key("managedTerminationProtection") + ok.String(string(v.ManagedTerminationProtection)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentAwsVpcConfiguration(v *types.AwsVpcConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.AssignPublicIp) > 0 { + ok := object.Key("assignPublicIp") + ok.String(string(v.AssignPublicIp)) + } + + if v.SecurityGroups != nil { + ok := object.Key("securityGroups") + if err := awsAwsjson11_serializeDocumentStringList(v.SecurityGroups, ok); err != nil { + return err + } + } + + if v.Subnets != nil { + ok := object.Key("subnets") + if err := awsAwsjson11_serializeDocumentStringList(v.Subnets, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentCapacityProviderFieldList(v []types.CapacityProviderField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentCapacityProviderStrategy(v []types.CapacityProviderStrategyItem, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentCapacityProviderStrategyItem(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentCapacityProviderStrategyItem(v *types.CapacityProviderStrategyItem, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Base != 0 { + ok := object.Key("base") + ok.Integer(v.Base) + } + + if v.CapacityProvider != nil { + ok := object.Key("capacityProvider") + ok.String(*v.CapacityProvider) + } + + if v.Weight != 0 { + ok := object.Key("weight") + ok.Integer(v.Weight) + } + + return nil +} + +func awsAwsjson11_serializeDocumentClusterConfiguration(v *types.ClusterConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ExecuteCommandConfiguration != nil { + ok := object.Key("executeCommandConfiguration") + if err := awsAwsjson11_serializeDocumentExecuteCommandConfiguration(v.ExecuteCommandConfiguration, ok); err != nil { + return err + } + } + + if v.ManagedStorageConfiguration != nil { + ok := object.Key("managedStorageConfiguration") + if err := awsAwsjson11_serializeDocumentManagedStorageConfiguration(v.ManagedStorageConfiguration, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentClusterFieldList(v []types.ClusterField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentClusterServiceConnectDefaultsRequest(v *types.ClusterServiceConnectDefaultsRequest, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Namespace != nil { + ok := object.Key("namespace") + ok.String(*v.Namespace) + } + + return nil +} + +func awsAwsjson11_serializeDocumentClusterSetting(v *types.ClusterSetting, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Name) > 0 { + ok := object.Key("name") + ok.String(string(v.Name)) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeDocumentClusterSettings(v []types.ClusterSetting, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentClusterSetting(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentCompatibilityList(v []types.Compatibility, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentContainerDefinition(v *types.ContainerDefinition, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Command != nil { + ok := object.Key("command") + if err := awsAwsjson11_serializeDocumentStringList(v.Command, ok); err != nil { + return err + } + } + + if v.Cpu != 0 { + ok := object.Key("cpu") + ok.Integer(v.Cpu) + } + + if v.CredentialSpecs != nil { + ok := object.Key("credentialSpecs") + if err := awsAwsjson11_serializeDocumentStringList(v.CredentialSpecs, ok); err != nil { + return err + } + } + + if v.DependsOn != nil { + ok := object.Key("dependsOn") + if err := awsAwsjson11_serializeDocumentContainerDependencies(v.DependsOn, ok); err != nil { + return err + } + } + + if v.DisableNetworking != nil { + ok := object.Key("disableNetworking") + ok.Boolean(*v.DisableNetworking) + } + + if v.DnsSearchDomains != nil { + ok := object.Key("dnsSearchDomains") + if err := awsAwsjson11_serializeDocumentStringList(v.DnsSearchDomains, ok); err != nil { + return err + } + } + + if v.DnsServers != nil { + ok := object.Key("dnsServers") + if err := awsAwsjson11_serializeDocumentStringList(v.DnsServers, ok); err != nil { + return err + } + } + + if v.DockerLabels != nil { + ok := object.Key("dockerLabels") + if err := awsAwsjson11_serializeDocumentDockerLabelsMap(v.DockerLabels, ok); err != nil { + return err + } + } + + if v.DockerSecurityOptions != nil { + ok := object.Key("dockerSecurityOptions") + if err := awsAwsjson11_serializeDocumentStringList(v.DockerSecurityOptions, ok); err != nil { + return err + } + } + + if v.EntryPoint != nil { + ok := object.Key("entryPoint") + if err := awsAwsjson11_serializeDocumentStringList(v.EntryPoint, ok); err != nil { + return err + } + } + + if v.Environment != nil { + ok := object.Key("environment") + if err := awsAwsjson11_serializeDocumentEnvironmentVariables(v.Environment, ok); err != nil { + return err + } + } + + if v.EnvironmentFiles != nil { + ok := object.Key("environmentFiles") + if err := awsAwsjson11_serializeDocumentEnvironmentFiles(v.EnvironmentFiles, ok); err != nil { + return err + } + } + + if v.Essential != nil { + ok := object.Key("essential") + ok.Boolean(*v.Essential) + } + + if v.ExtraHosts != nil { + ok := object.Key("extraHosts") + if err := awsAwsjson11_serializeDocumentHostEntryList(v.ExtraHosts, ok); err != nil { + return err + } + } + + if v.FirelensConfiguration != nil { + ok := object.Key("firelensConfiguration") + if err := awsAwsjson11_serializeDocumentFirelensConfiguration(v.FirelensConfiguration, ok); err != nil { + return err + } + } + + if v.HealthCheck != nil { + ok := object.Key("healthCheck") + if err := awsAwsjson11_serializeDocumentHealthCheck(v.HealthCheck, ok); err != nil { + return err + } + } + + if v.Hostname != nil { + ok := object.Key("hostname") + ok.String(*v.Hostname) + } + + if v.Image != nil { + ok := object.Key("image") + ok.String(*v.Image) + } + + if v.Interactive != nil { + ok := object.Key("interactive") + ok.Boolean(*v.Interactive) + } + + if v.Links != nil { + ok := object.Key("links") + if err := awsAwsjson11_serializeDocumentStringList(v.Links, ok); err != nil { + return err + } + } + + if v.LinuxParameters != nil { + ok := object.Key("linuxParameters") + if err := awsAwsjson11_serializeDocumentLinuxParameters(v.LinuxParameters, ok); err != nil { + return err + } + } + + if v.LogConfiguration != nil { + ok := object.Key("logConfiguration") + if err := awsAwsjson11_serializeDocumentLogConfiguration(v.LogConfiguration, ok); err != nil { + return err + } + } + + if v.Memory != nil { + ok := object.Key("memory") + ok.Integer(*v.Memory) + } + + if v.MemoryReservation != nil { + ok := object.Key("memoryReservation") + ok.Integer(*v.MemoryReservation) + } + + if v.MountPoints != nil { + ok := object.Key("mountPoints") + if err := awsAwsjson11_serializeDocumentMountPointList(v.MountPoints, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.PortMappings != nil { + ok := object.Key("portMappings") + if err := awsAwsjson11_serializeDocumentPortMappingList(v.PortMappings, ok); err != nil { + return err + } + } + + if v.Privileged != nil { + ok := object.Key("privileged") + ok.Boolean(*v.Privileged) + } + + if v.PseudoTerminal != nil { + ok := object.Key("pseudoTerminal") + ok.Boolean(*v.PseudoTerminal) + } + + if v.ReadonlyRootFilesystem != nil { + ok := object.Key("readonlyRootFilesystem") + ok.Boolean(*v.ReadonlyRootFilesystem) + } + + if v.RepositoryCredentials != nil { + ok := object.Key("repositoryCredentials") + if err := awsAwsjson11_serializeDocumentRepositoryCredentials(v.RepositoryCredentials, ok); err != nil { + return err + } + } + + if v.ResourceRequirements != nil { + ok := object.Key("resourceRequirements") + if err := awsAwsjson11_serializeDocumentResourceRequirements(v.ResourceRequirements, ok); err != nil { + return err + } + } + + if v.RestartPolicy != nil { + ok := object.Key("restartPolicy") + if err := awsAwsjson11_serializeDocumentContainerRestartPolicy(v.RestartPolicy, ok); err != nil { + return err + } + } + + if v.Secrets != nil { + ok := object.Key("secrets") + if err := awsAwsjson11_serializeDocumentSecretList(v.Secrets, ok); err != nil { + return err + } + } + + if v.StartTimeout != nil { + ok := object.Key("startTimeout") + ok.Integer(*v.StartTimeout) + } + + if v.StopTimeout != nil { + ok := object.Key("stopTimeout") + ok.Integer(*v.StopTimeout) + } + + if v.SystemControls != nil { + ok := object.Key("systemControls") + if err := awsAwsjson11_serializeDocumentSystemControls(v.SystemControls, ok); err != nil { + return err + } + } + + if v.Ulimits != nil { + ok := object.Key("ulimits") + if err := awsAwsjson11_serializeDocumentUlimitList(v.Ulimits, ok); err != nil { + return err + } + } + + if v.User != nil { + ok := object.Key("user") + ok.String(*v.User) + } + + if len(v.VersionConsistency) > 0 { + ok := object.Key("versionConsistency") + ok.String(string(v.VersionConsistency)) + } + + if v.VolumesFrom != nil { + ok := object.Key("volumesFrom") + if err := awsAwsjson11_serializeDocumentVolumeFromList(v.VolumesFrom, ok); err != nil { + return err + } + } + + if v.WorkingDirectory != nil { + ok := object.Key("workingDirectory") + ok.String(*v.WorkingDirectory) + } + + return nil +} + +func awsAwsjson11_serializeDocumentContainerDefinitions(v []types.ContainerDefinition, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentContainerDefinition(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentContainerDependencies(v []types.ContainerDependency, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentContainerDependency(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentContainerDependency(v *types.ContainerDependency, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Condition) > 0 { + ok := object.Key("condition") + ok.String(string(v.Condition)) + } + + if v.ContainerName != nil { + ok := object.Key("containerName") + ok.String(*v.ContainerName) + } + + return nil +} + +func awsAwsjson11_serializeDocumentContainerInstanceFieldList(v []types.ContainerInstanceField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentContainerOverride(v *types.ContainerOverride, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Command != nil { + ok := object.Key("command") + if err := awsAwsjson11_serializeDocumentStringList(v.Command, ok); err != nil { + return err + } + } + + if v.Cpu != nil { + ok := object.Key("cpu") + ok.Integer(*v.Cpu) + } + + if v.Environment != nil { + ok := object.Key("environment") + if err := awsAwsjson11_serializeDocumentEnvironmentVariables(v.Environment, ok); err != nil { + return err + } + } + + if v.EnvironmentFiles != nil { + ok := object.Key("environmentFiles") + if err := awsAwsjson11_serializeDocumentEnvironmentFiles(v.EnvironmentFiles, ok); err != nil { + return err + } + } + + if v.Memory != nil { + ok := object.Key("memory") + ok.Integer(*v.Memory) + } + + if v.MemoryReservation != nil { + ok := object.Key("memoryReservation") + ok.Integer(*v.MemoryReservation) + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.ResourceRequirements != nil { + ok := object.Key("resourceRequirements") + if err := awsAwsjson11_serializeDocumentResourceRequirements(v.ResourceRequirements, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentContainerOverrides(v []types.ContainerOverride, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentContainerOverride(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentContainerRestartPolicy(v *types.ContainerRestartPolicy, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Enabled != nil { + ok := object.Key("enabled") + ok.Boolean(*v.Enabled) + } + + if v.IgnoredExitCodes != nil { + ok := object.Key("ignoredExitCodes") + if err := awsAwsjson11_serializeDocumentIntegerList(v.IgnoredExitCodes, ok); err != nil { + return err + } + } + + if v.RestartAttemptPeriod != nil { + ok := object.Key("restartAttemptPeriod") + ok.Integer(*v.RestartAttemptPeriod) + } + + return nil +} + +func awsAwsjson11_serializeDocumentContainerStateChange(v *types.ContainerStateChange, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerName != nil { + ok := object.Key("containerName") + ok.String(*v.ContainerName) + } + + if v.ExitCode != nil { + ok := object.Key("exitCode") + ok.Integer(*v.ExitCode) + } + + if v.ImageDigest != nil { + ok := object.Key("imageDigest") + ok.String(*v.ImageDigest) + } + + if v.NetworkBindings != nil { + ok := object.Key("networkBindings") + if err := awsAwsjson11_serializeDocumentNetworkBindings(v.NetworkBindings, ok); err != nil { + return err + } + } + + if v.Reason != nil { + ok := object.Key("reason") + ok.String(*v.Reason) + } + + if v.RuntimeId != nil { + ok := object.Key("runtimeId") + ok.String(*v.RuntimeId) + } + + if v.Status != nil { + ok := object.Key("status") + ok.String(*v.Status) + } + + return nil +} + +func awsAwsjson11_serializeDocumentContainerStateChanges(v []types.ContainerStateChange, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentContainerStateChange(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentCreatedAt(v *types.CreatedAt, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.After != nil { + ok := object.Key("after") + ok.Double(smithytime.FormatEpochSeconds(*v.After)) + } + + if v.Before != nil { + ok := object.Key("before") + ok.Double(smithytime.FormatEpochSeconds(*v.Before)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentDeploymentAlarms(v *types.DeploymentAlarms, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AlarmNames != nil { + ok := object.Key("alarmNames") + if err := awsAwsjson11_serializeDocumentStringList(v.AlarmNames, ok); err != nil { + return err + } + } + + { + ok := object.Key("enable") + ok.Boolean(v.Enable) + } + + { + ok := object.Key("rollback") + ok.Boolean(v.Rollback) + } + + return nil +} + +func awsAwsjson11_serializeDocumentDeploymentCircuitBreaker(v *types.DeploymentCircuitBreaker, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + { + ok := object.Key("enable") + ok.Boolean(v.Enable) + } + + { + ok := object.Key("rollback") + ok.Boolean(v.Rollback) + } + + return nil +} + +func awsAwsjson11_serializeDocumentDeploymentConfiguration(v *types.DeploymentConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Alarms != nil { + ok := object.Key("alarms") + if err := awsAwsjson11_serializeDocumentDeploymentAlarms(v.Alarms, ok); err != nil { + return err + } + } + + if v.DeploymentCircuitBreaker != nil { + ok := object.Key("deploymentCircuitBreaker") + if err := awsAwsjson11_serializeDocumentDeploymentCircuitBreaker(v.DeploymentCircuitBreaker, ok); err != nil { + return err + } + } + + if v.MaximumPercent != nil { + ok := object.Key("maximumPercent") + ok.Integer(*v.MaximumPercent) + } + + if v.MinimumHealthyPercent != nil { + ok := object.Key("minimumHealthyPercent") + ok.Integer(*v.MinimumHealthyPercent) + } + + return nil +} + +func awsAwsjson11_serializeDocumentDeploymentController(v *types.DeploymentController, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentDevice(v *types.Device, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerPath != nil { + ok := object.Key("containerPath") + ok.String(*v.ContainerPath) + } + + if v.HostPath != nil { + ok := object.Key("hostPath") + ok.String(*v.HostPath) + } + + if v.Permissions != nil { + ok := object.Key("permissions") + if err := awsAwsjson11_serializeDocumentDeviceCgroupPermissions(v.Permissions, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentDeviceCgroupPermissions(v []types.DeviceCgroupPermission, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentDevicesList(v []types.Device, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentDevice(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentDockerLabelsMap(v map[string]string, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + for key := range v { + om := object.Key(key) + om.String(v[key]) + } + return nil +} + +func awsAwsjson11_serializeDocumentDockerVolumeConfiguration(v *types.DockerVolumeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Autoprovision != nil { + ok := object.Key("autoprovision") + ok.Boolean(*v.Autoprovision) + } + + if v.Driver != nil { + ok := object.Key("driver") + ok.String(*v.Driver) + } + + if v.DriverOpts != nil { + ok := object.Key("driverOpts") + if err := awsAwsjson11_serializeDocumentStringMap(v.DriverOpts, ok); err != nil { + return err + } + } + + if v.Labels != nil { + ok := object.Key("labels") + if err := awsAwsjson11_serializeDocumentStringMap(v.Labels, ok); err != nil { + return err + } + } + + if len(v.Scope) > 0 { + ok := object.Key("scope") + ok.String(string(v.Scope)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentEBSTagSpecification(v *types.EBSTagSpecification, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.PropagateTags) > 0 { + ok := object.Key("propagateTags") + ok.String(string(v.PropagateTags)) + } + + if len(v.ResourceType) > 0 { + ok := object.Key("resourceType") + ok.String(string(v.ResourceType)) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentEBSTagSpecifications(v []types.EBSTagSpecification, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentEBSTagSpecification(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentEFSAuthorizationConfig(v *types.EFSAuthorizationConfig, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AccessPointId != nil { + ok := object.Key("accessPointId") + ok.String(*v.AccessPointId) + } + + if len(v.Iam) > 0 { + ok := object.Key("iam") + ok.String(string(v.Iam)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentEFSVolumeConfiguration(v *types.EFSVolumeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AuthorizationConfig != nil { + ok := object.Key("authorizationConfig") + if err := awsAwsjson11_serializeDocumentEFSAuthorizationConfig(v.AuthorizationConfig, ok); err != nil { + return err + } + } + + if v.FileSystemId != nil { + ok := object.Key("fileSystemId") + ok.String(*v.FileSystemId) + } + + if v.RootDirectory != nil { + ok := object.Key("rootDirectory") + ok.String(*v.RootDirectory) + } + + if len(v.TransitEncryption) > 0 { + ok := object.Key("transitEncryption") + ok.String(string(v.TransitEncryption)) + } + + if v.TransitEncryptionPort != nil { + ok := object.Key("transitEncryptionPort") + ok.Integer(*v.TransitEncryptionPort) + } + + return nil +} + +func awsAwsjson11_serializeDocumentEnvironmentFile(v *types.EnvironmentFile, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeDocumentEnvironmentFiles(v []types.EnvironmentFile, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentEnvironmentFile(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentEnvironmentVariables(v []types.KeyValuePair, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentKeyValuePair(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentEphemeralStorage(v *types.EphemeralStorage, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + { + ok := object.Key("sizeInGiB") + ok.Integer(v.SizeInGiB) + } + + return nil +} + +func awsAwsjson11_serializeDocumentExecuteCommandConfiguration(v *types.ExecuteCommandConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.KmsKeyId != nil { + ok := object.Key("kmsKeyId") + ok.String(*v.KmsKeyId) + } + + if v.LogConfiguration != nil { + ok := object.Key("logConfiguration") + if err := awsAwsjson11_serializeDocumentExecuteCommandLogConfiguration(v.LogConfiguration, ok); err != nil { + return err + } + } + + if len(v.Logging) > 0 { + ok := object.Key("logging") + ok.String(string(v.Logging)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentExecuteCommandLogConfiguration(v *types.ExecuteCommandLogConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CloudWatchEncryptionEnabled { + ok := object.Key("cloudWatchEncryptionEnabled") + ok.Boolean(v.CloudWatchEncryptionEnabled) + } + + if v.CloudWatchLogGroupName != nil { + ok := object.Key("cloudWatchLogGroupName") + ok.String(*v.CloudWatchLogGroupName) + } + + if v.S3BucketName != nil { + ok := object.Key("s3BucketName") + ok.String(*v.S3BucketName) + } + + if v.S3EncryptionEnabled { + ok := object.Key("s3EncryptionEnabled") + ok.Boolean(v.S3EncryptionEnabled) + } + + if v.S3KeyPrefix != nil { + ok := object.Key("s3KeyPrefix") + ok.String(*v.S3KeyPrefix) + } + + return nil +} + +func awsAwsjson11_serializeDocumentFirelensConfiguration(v *types.FirelensConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Options != nil { + ok := object.Key("options") + if err := awsAwsjson11_serializeDocumentFirelensConfigurationOptionsMap(v.Options, ok); err != nil { + return err + } + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentFirelensConfigurationOptionsMap(v map[string]string, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + for key := range v { + om := object.Key(key) + om.String(v[key]) + } + return nil +} + +func awsAwsjson11_serializeDocumentFSxWindowsFileServerAuthorizationConfig(v *types.FSxWindowsFileServerAuthorizationConfig, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CredentialsParameter != nil { + ok := object.Key("credentialsParameter") + ok.String(*v.CredentialsParameter) + } + + if v.Domain != nil { + ok := object.Key("domain") + ok.String(*v.Domain) + } + + return nil +} + +func awsAwsjson11_serializeDocumentFSxWindowsFileServerVolumeConfiguration(v *types.FSxWindowsFileServerVolumeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AuthorizationConfig != nil { + ok := object.Key("authorizationConfig") + if err := awsAwsjson11_serializeDocumentFSxWindowsFileServerAuthorizationConfig(v.AuthorizationConfig, ok); err != nil { + return err + } + } + + if v.FileSystemId != nil { + ok := object.Key("fileSystemId") + ok.String(*v.FileSystemId) + } + + if v.RootDirectory != nil { + ok := object.Key("rootDirectory") + ok.String(*v.RootDirectory) + } + + return nil +} + +func awsAwsjson11_serializeDocumentHealthCheck(v *types.HealthCheck, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Command != nil { + ok := object.Key("command") + if err := awsAwsjson11_serializeDocumentStringList(v.Command, ok); err != nil { + return err + } + } + + if v.Interval != nil { + ok := object.Key("interval") + ok.Integer(*v.Interval) + } + + if v.Retries != nil { + ok := object.Key("retries") + ok.Integer(*v.Retries) + } + + if v.StartPeriod != nil { + ok := object.Key("startPeriod") + ok.Integer(*v.StartPeriod) + } + + if v.Timeout != nil { + ok := object.Key("timeout") + ok.Integer(*v.Timeout) + } + + return nil +} + +func awsAwsjson11_serializeDocumentHostEntry(v *types.HostEntry, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Hostname != nil { + ok := object.Key("hostname") + ok.String(*v.Hostname) + } + + if v.IpAddress != nil { + ok := object.Key("ipAddress") + ok.String(*v.IpAddress) + } + + return nil +} + +func awsAwsjson11_serializeDocumentHostEntryList(v []types.HostEntry, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentHostEntry(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentHostVolumeProperties(v *types.HostVolumeProperties, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.SourcePath != nil { + ok := object.Key("sourcePath") + ok.String(*v.SourcePath) + } + + return nil +} + +func awsAwsjson11_serializeDocumentInferenceAccelerator(v *types.InferenceAccelerator, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.DeviceName != nil { + ok := object.Key("deviceName") + ok.String(*v.DeviceName) + } + + if v.DeviceType != nil { + ok := object.Key("deviceType") + ok.String(*v.DeviceType) + } + + return nil +} + +func awsAwsjson11_serializeDocumentInferenceAcceleratorOverride(v *types.InferenceAcceleratorOverride, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.DeviceName != nil { + ok := object.Key("deviceName") + ok.String(*v.DeviceName) + } + + if v.DeviceType != nil { + ok := object.Key("deviceType") + ok.String(*v.DeviceType) + } + + return nil +} + +func awsAwsjson11_serializeDocumentInferenceAcceleratorOverrides(v []types.InferenceAcceleratorOverride, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentInferenceAcceleratorOverride(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentInferenceAccelerators(v []types.InferenceAccelerator, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentInferenceAccelerator(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentIntegerList(v []int32, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.Integer(v[i]) + } + return nil +} + +func awsAwsjson11_serializeDocumentKernelCapabilities(v *types.KernelCapabilities, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Add != nil { + ok := object.Key("add") + if err := awsAwsjson11_serializeDocumentStringList(v.Add, ok); err != nil { + return err + } + } + + if v.Drop != nil { + ok := object.Key("drop") + if err := awsAwsjson11_serializeDocumentStringList(v.Drop, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentKeyValuePair(v *types.KeyValuePair, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeDocumentLinuxParameters(v *types.LinuxParameters, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Capabilities != nil { + ok := object.Key("capabilities") + if err := awsAwsjson11_serializeDocumentKernelCapabilities(v.Capabilities, ok); err != nil { + return err + } + } + + if v.Devices != nil { + ok := object.Key("devices") + if err := awsAwsjson11_serializeDocumentDevicesList(v.Devices, ok); err != nil { + return err + } + } + + if v.InitProcessEnabled != nil { + ok := object.Key("initProcessEnabled") + ok.Boolean(*v.InitProcessEnabled) + } + + if v.MaxSwap != nil { + ok := object.Key("maxSwap") + ok.Integer(*v.MaxSwap) + } + + if v.SharedMemorySize != nil { + ok := object.Key("sharedMemorySize") + ok.Integer(*v.SharedMemorySize) + } + + if v.Swappiness != nil { + ok := object.Key("swappiness") + ok.Integer(*v.Swappiness) + } + + if v.Tmpfs != nil { + ok := object.Key("tmpfs") + if err := awsAwsjson11_serializeDocumentTmpfsList(v.Tmpfs, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentLoadBalancer(v *types.LoadBalancer, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerName != nil { + ok := object.Key("containerName") + ok.String(*v.ContainerName) + } + + if v.ContainerPort != nil { + ok := object.Key("containerPort") + ok.Integer(*v.ContainerPort) + } + + if v.LoadBalancerName != nil { + ok := object.Key("loadBalancerName") + ok.String(*v.LoadBalancerName) + } + + if v.TargetGroupArn != nil { + ok := object.Key("targetGroupArn") + ok.String(*v.TargetGroupArn) + } + + return nil +} + +func awsAwsjson11_serializeDocumentLoadBalancers(v []types.LoadBalancer, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentLoadBalancer(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentLogConfiguration(v *types.LogConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.LogDriver) > 0 { + ok := object.Key("logDriver") + ok.String(string(v.LogDriver)) + } + + if v.Options != nil { + ok := object.Key("options") + if err := awsAwsjson11_serializeDocumentLogConfigurationOptionsMap(v.Options, ok); err != nil { + return err + } + } + + if v.SecretOptions != nil { + ok := object.Key("secretOptions") + if err := awsAwsjson11_serializeDocumentSecretList(v.SecretOptions, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentLogConfigurationOptionsMap(v map[string]string, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + for key := range v { + om := object.Key(key) + om.String(v[key]) + } + return nil +} + +func awsAwsjson11_serializeDocumentManagedAgentStateChange(v *types.ManagedAgentStateChange, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerName != nil { + ok := object.Key("containerName") + ok.String(*v.ContainerName) + } + + if len(v.ManagedAgentName) > 0 { + ok := object.Key("managedAgentName") + ok.String(string(v.ManagedAgentName)) + } + + if v.Reason != nil { + ok := object.Key("reason") + ok.String(*v.Reason) + } + + if v.Status != nil { + ok := object.Key("status") + ok.String(*v.Status) + } + + return nil +} + +func awsAwsjson11_serializeDocumentManagedAgentStateChanges(v []types.ManagedAgentStateChange, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentManagedAgentStateChange(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentManagedScaling(v *types.ManagedScaling, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.InstanceWarmupPeriod != nil { + ok := object.Key("instanceWarmupPeriod") + ok.Integer(*v.InstanceWarmupPeriod) + } + + if v.MaximumScalingStepSize != nil { + ok := object.Key("maximumScalingStepSize") + ok.Integer(*v.MaximumScalingStepSize) + } + + if v.MinimumScalingStepSize != nil { + ok := object.Key("minimumScalingStepSize") + ok.Integer(*v.MinimumScalingStepSize) + } + + if len(v.Status) > 0 { + ok := object.Key("status") + ok.String(string(v.Status)) + } + + if v.TargetCapacity != nil { + ok := object.Key("targetCapacity") + ok.Integer(*v.TargetCapacity) + } + + return nil +} + +func awsAwsjson11_serializeDocumentManagedStorageConfiguration(v *types.ManagedStorageConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.FargateEphemeralStorageKmsKeyId != nil { + ok := object.Key("fargateEphemeralStorageKmsKeyId") + ok.String(*v.FargateEphemeralStorageKmsKeyId) + } + + if v.KmsKeyId != nil { + ok := object.Key("kmsKeyId") + ok.String(*v.KmsKeyId) + } + + return nil +} + +func awsAwsjson11_serializeDocumentMountPoint(v *types.MountPoint, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerPath != nil { + ok := object.Key("containerPath") + ok.String(*v.ContainerPath) + } + + if v.ReadOnly != nil { + ok := object.Key("readOnly") + ok.Boolean(*v.ReadOnly) + } + + if v.SourceVolume != nil { + ok := object.Key("sourceVolume") + ok.String(*v.SourceVolume) + } + + return nil +} + +func awsAwsjson11_serializeDocumentMountPointList(v []types.MountPoint, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentMountPoint(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentNetworkBinding(v *types.NetworkBinding, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.BindIP != nil { + ok := object.Key("bindIP") + ok.String(*v.BindIP) + } + + if v.ContainerPort != nil { + ok := object.Key("containerPort") + ok.Integer(*v.ContainerPort) + } + + if v.ContainerPortRange != nil { + ok := object.Key("containerPortRange") + ok.String(*v.ContainerPortRange) + } + + if v.HostPort != nil { + ok := object.Key("hostPort") + ok.Integer(*v.HostPort) + } + + if v.HostPortRange != nil { + ok := object.Key("hostPortRange") + ok.String(*v.HostPortRange) + } + + if len(v.Protocol) > 0 { + ok := object.Key("protocol") + ok.String(string(v.Protocol)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentNetworkBindings(v []types.NetworkBinding, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentNetworkBinding(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentNetworkConfiguration(v *types.NetworkConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AwsvpcConfiguration != nil { + ok := object.Key("awsvpcConfiguration") + if err := awsAwsjson11_serializeDocumentAwsVpcConfiguration(v.AwsvpcConfiguration, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentPlacementConstraint(v *types.PlacementConstraint, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Expression != nil { + ok := object.Key("expression") + ok.String(*v.Expression) + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentPlacementConstraints(v []types.PlacementConstraint, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentPlacementConstraint(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentPlacementStrategies(v []types.PlacementStrategy, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentPlacementStrategy(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentPlacementStrategy(v *types.PlacementStrategy, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Field != nil { + ok := object.Key("field") + ok.String(*v.Field) + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentPlatformDevice(v *types.PlatformDevice, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Id != nil { + ok := object.Key("id") + ok.String(*v.Id) + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentPlatformDevices(v []types.PlatformDevice, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentPlatformDevice(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentPortMapping(v *types.PortMapping, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.AppProtocol) > 0 { + ok := object.Key("appProtocol") + ok.String(string(v.AppProtocol)) + } + + if v.ContainerPort != nil { + ok := object.Key("containerPort") + ok.Integer(*v.ContainerPort) + } + + if v.ContainerPortRange != nil { + ok := object.Key("containerPortRange") + ok.String(*v.ContainerPortRange) + } + + if v.HostPort != nil { + ok := object.Key("hostPort") + ok.Integer(*v.HostPort) + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if len(v.Protocol) > 0 { + ok := object.Key("protocol") + ok.String(string(v.Protocol)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentPortMappingList(v []types.PortMapping, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentPortMapping(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentProxyConfiguration(v *types.ProxyConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerName != nil { + ok := object.Key("containerName") + ok.String(*v.ContainerName) + } + + if v.Properties != nil { + ok := object.Key("properties") + if err := awsAwsjson11_serializeDocumentProxyConfigurationProperties(v.Properties, ok); err != nil { + return err + } + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentProxyConfigurationProperties(v []types.KeyValuePair, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentKeyValuePair(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentRepositoryCredentials(v *types.RepositoryCredentials, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CredentialsParameter != nil { + ok := object.Key("credentialsParameter") + ok.String(*v.CredentialsParameter) + } + + return nil +} + +func awsAwsjson11_serializeDocumentResource(v *types.Resource, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.DoubleValue != 0 { + ok := object.Key("doubleValue") + switch { + case math.IsNaN(v.DoubleValue): + ok.String("NaN") + + case math.IsInf(v.DoubleValue, 1): + ok.String("Infinity") + + case math.IsInf(v.DoubleValue, -1): + ok.String("-Infinity") + + default: + ok.Double(v.DoubleValue) + + } + } + + if v.IntegerValue != 0 { + ok := object.Key("integerValue") + ok.Integer(v.IntegerValue) + } + + if v.LongValue != 0 { + ok := object.Key("longValue") + ok.Long(v.LongValue) + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.StringSetValue != nil { + ok := object.Key("stringSetValue") + if err := awsAwsjson11_serializeDocumentStringList(v.StringSetValue, ok); err != nil { + return err + } + } + + if v.Type != nil { + ok := object.Key("type") + ok.String(*v.Type) + } + + return nil +} + +func awsAwsjson11_serializeDocumentResourceRequirement(v *types.ResourceRequirement, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeDocumentResourceRequirements(v []types.ResourceRequirement, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentResourceRequirement(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentResources(v []types.Resource, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentResource(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentRuntimePlatform(v *types.RuntimePlatform, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.CpuArchitecture) > 0 { + ok := object.Key("cpuArchitecture") + ok.String(string(v.CpuArchitecture)) + } + + if len(v.OperatingSystemFamily) > 0 { + ok := object.Key("operatingSystemFamily") + ok.String(string(v.OperatingSystemFamily)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentScale(v *types.Scale, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Unit) > 0 { + ok := object.Key("unit") + ok.String(string(v.Unit)) + } + + if v.Value != 0 { + ok := object.Key("value") + switch { + case math.IsNaN(v.Value): + ok.String("NaN") + + case math.IsInf(v.Value, 1): + ok.String("Infinity") + + case math.IsInf(v.Value, -1): + ok.String("-Infinity") + + default: + ok.Double(v.Value) + + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentSecret(v *types.Secret, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.ValueFrom != nil { + ok := object.Key("valueFrom") + ok.String(*v.ValueFrom) + } + + return nil +} + +func awsAwsjson11_serializeDocumentSecretList(v []types.Secret, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentSecret(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentServiceConnectClientAlias(v *types.ServiceConnectClientAlias, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.DnsName != nil { + ok := object.Key("dnsName") + ok.String(*v.DnsName) + } + + if v.Port != nil { + ok := object.Key("port") + ok.Integer(*v.Port) + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceConnectClientAliasList(v []types.ServiceConnectClientAlias, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentServiceConnectClientAlias(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentServiceConnectConfiguration(v *types.ServiceConnectConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + { + ok := object.Key("enabled") + ok.Boolean(v.Enabled) + } + + if v.LogConfiguration != nil { + ok := object.Key("logConfiguration") + if err := awsAwsjson11_serializeDocumentLogConfiguration(v.LogConfiguration, ok); err != nil { + return err + } + } + + if v.Namespace != nil { + ok := object.Key("namespace") + ok.String(*v.Namespace) + } + + if v.Services != nil { + ok := object.Key("services") + if err := awsAwsjson11_serializeDocumentServiceConnectServiceList(v.Services, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceConnectService(v *types.ServiceConnectService, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ClientAliases != nil { + ok := object.Key("clientAliases") + if err := awsAwsjson11_serializeDocumentServiceConnectClientAliasList(v.ClientAliases, ok); err != nil { + return err + } + } + + if v.DiscoveryName != nil { + ok := object.Key("discoveryName") + ok.String(*v.DiscoveryName) + } + + if v.IngressPortOverride != nil { + ok := object.Key("ingressPortOverride") + ok.Integer(*v.IngressPortOverride) + } + + if v.PortName != nil { + ok := object.Key("portName") + ok.String(*v.PortName) + } + + if v.Timeout != nil { + ok := object.Key("timeout") + if err := awsAwsjson11_serializeDocumentTimeoutConfiguration(v.Timeout, ok); err != nil { + return err + } + } + + if v.Tls != nil { + ok := object.Key("tls") + if err := awsAwsjson11_serializeDocumentServiceConnectTlsConfiguration(v.Tls, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceConnectServiceList(v []types.ServiceConnectService, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentServiceConnectService(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentServiceConnectTlsCertificateAuthority(v *types.ServiceConnectTlsCertificateAuthority, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AwsPcaAuthorityArn != nil { + ok := object.Key("awsPcaAuthorityArn") + ok.String(*v.AwsPcaAuthorityArn) + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceConnectTlsConfiguration(v *types.ServiceConnectTlsConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.IssuerCertificateAuthority != nil { + ok := object.Key("issuerCertificateAuthority") + if err := awsAwsjson11_serializeDocumentServiceConnectTlsCertificateAuthority(v.IssuerCertificateAuthority, ok); err != nil { + return err + } + } + + if v.KmsKey != nil { + ok := object.Key("kmsKey") + ok.String(*v.KmsKey) + } + + if v.RoleArn != nil { + ok := object.Key("roleArn") + ok.String(*v.RoleArn) + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceDeploymentStatusList(v []types.ServiceDeploymentStatus, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentServiceFieldList(v []types.ServiceField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentServiceManagedEBSVolumeConfiguration(v *types.ServiceManagedEBSVolumeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Encrypted != nil { + ok := object.Key("encrypted") + ok.Boolean(*v.Encrypted) + } + + if len(v.FilesystemType) > 0 { + ok := object.Key("filesystemType") + ok.String(string(v.FilesystemType)) + } + + if v.Iops != nil { + ok := object.Key("iops") + ok.Integer(*v.Iops) + } + + if v.KmsKeyId != nil { + ok := object.Key("kmsKeyId") + ok.String(*v.KmsKeyId) + } + + if v.RoleArn != nil { + ok := object.Key("roleArn") + ok.String(*v.RoleArn) + } + + if v.SizeInGiB != nil { + ok := object.Key("sizeInGiB") + ok.Integer(*v.SizeInGiB) + } + + if v.SnapshotId != nil { + ok := object.Key("snapshotId") + ok.String(*v.SnapshotId) + } + + if v.TagSpecifications != nil { + ok := object.Key("tagSpecifications") + if err := awsAwsjson11_serializeDocumentEBSTagSpecifications(v.TagSpecifications, ok); err != nil { + return err + } + } + + if v.Throughput != nil { + ok := object.Key("throughput") + ok.Integer(*v.Throughput) + } + + if v.VolumeType != nil { + ok := object.Key("volumeType") + ok.String(*v.VolumeType) + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceRegistries(v []types.ServiceRegistry, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentServiceRegistry(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentServiceRegistry(v *types.ServiceRegistry, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerName != nil { + ok := object.Key("containerName") + ok.String(*v.ContainerName) + } + + if v.ContainerPort != nil { + ok := object.Key("containerPort") + ok.Integer(*v.ContainerPort) + } + + if v.Port != nil { + ok := object.Key("port") + ok.Integer(*v.Port) + } + + if v.RegistryArn != nil { + ok := object.Key("registryArn") + ok.String(*v.RegistryArn) + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceVolumeConfiguration(v *types.ServiceVolumeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ManagedEBSVolume != nil { + ok := object.Key("managedEBSVolume") + if err := awsAwsjson11_serializeDocumentServiceManagedEBSVolumeConfiguration(v.ManagedEBSVolume, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + return nil +} + +func awsAwsjson11_serializeDocumentServiceVolumeConfigurations(v []types.ServiceVolumeConfiguration, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentServiceVolumeConfiguration(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentStringList(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + +func awsAwsjson11_serializeDocumentStringMap(v map[string]string, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + for key := range v { + om := object.Key(key) + om.String(v[key]) + } + return nil +} + +func awsAwsjson11_serializeDocumentSystemControl(v *types.SystemControl, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Namespace != nil { + ok := object.Key("namespace") + ok.String(*v.Namespace) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeDocumentSystemControls(v []types.SystemControl, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentSystemControl(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentTag(v *types.Tag, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Key != nil { + ok := object.Key("key") + ok.String(*v.Key) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTagKeys(v []string, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(v[i]) + } + return nil +} + +func awsAwsjson11_serializeDocumentTags(v []types.Tag, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentTag(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentTaskDefinitionFieldList(v []types.TaskDefinitionField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentTaskDefinitionPlacementConstraint(v *types.TaskDefinitionPlacementConstraint, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Expression != nil { + ok := object.Key("expression") + ok.String(*v.Expression) + } + + if len(v.Type) > 0 { + ok := object.Key("type") + ok.String(string(v.Type)) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTaskDefinitionPlacementConstraints(v []types.TaskDefinitionPlacementConstraint, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentTaskDefinitionPlacementConstraint(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentTaskFieldList(v []types.TaskField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentTaskManagedEBSVolumeConfiguration(v *types.TaskManagedEBSVolumeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Encrypted != nil { + ok := object.Key("encrypted") + ok.Boolean(*v.Encrypted) + } + + if len(v.FilesystemType) > 0 { + ok := object.Key("filesystemType") + ok.String(string(v.FilesystemType)) + } + + if v.Iops != nil { + ok := object.Key("iops") + ok.Integer(*v.Iops) + } + + if v.KmsKeyId != nil { + ok := object.Key("kmsKeyId") + ok.String(*v.KmsKeyId) + } + + if v.RoleArn != nil { + ok := object.Key("roleArn") + ok.String(*v.RoleArn) + } + + if v.SizeInGiB != nil { + ok := object.Key("sizeInGiB") + ok.Integer(*v.SizeInGiB) + } + + if v.SnapshotId != nil { + ok := object.Key("snapshotId") + ok.String(*v.SnapshotId) + } + + if v.TagSpecifications != nil { + ok := object.Key("tagSpecifications") + if err := awsAwsjson11_serializeDocumentEBSTagSpecifications(v.TagSpecifications, ok); err != nil { + return err + } + } + + if v.TerminationPolicy != nil { + ok := object.Key("terminationPolicy") + if err := awsAwsjson11_serializeDocumentTaskManagedEBSVolumeTerminationPolicy(v.TerminationPolicy, ok); err != nil { + return err + } + } + + if v.Throughput != nil { + ok := object.Key("throughput") + ok.Integer(*v.Throughput) + } + + if v.VolumeType != nil { + ok := object.Key("volumeType") + ok.String(*v.VolumeType) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTaskManagedEBSVolumeTerminationPolicy(v *types.TaskManagedEBSVolumeTerminationPolicy, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.DeleteOnTermination != nil { + ok := object.Key("deleteOnTermination") + ok.Boolean(*v.DeleteOnTermination) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTaskOverride(v *types.TaskOverride, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerOverrides != nil { + ok := object.Key("containerOverrides") + if err := awsAwsjson11_serializeDocumentContainerOverrides(v.ContainerOverrides, ok); err != nil { + return err + } + } + + if v.Cpu != nil { + ok := object.Key("cpu") + ok.String(*v.Cpu) + } + + if v.EphemeralStorage != nil { + ok := object.Key("ephemeralStorage") + if err := awsAwsjson11_serializeDocumentEphemeralStorage(v.EphemeralStorage, ok); err != nil { + return err + } + } + + if v.ExecutionRoleArn != nil { + ok := object.Key("executionRoleArn") + ok.String(*v.ExecutionRoleArn) + } + + if v.InferenceAcceleratorOverrides != nil { + ok := object.Key("inferenceAcceleratorOverrides") + if err := awsAwsjson11_serializeDocumentInferenceAcceleratorOverrides(v.InferenceAcceleratorOverrides, ok); err != nil { + return err + } + } + + if v.Memory != nil { + ok := object.Key("memory") + ok.String(*v.Memory) + } + + if v.TaskRoleArn != nil { + ok := object.Key("taskRoleArn") + ok.String(*v.TaskRoleArn) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTaskSetFieldList(v []types.TaskSetField, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + av.String(string(v[i])) + } + return nil +} + +func awsAwsjson11_serializeDocumentTaskVolumeConfiguration(v *types.TaskVolumeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ManagedEBSVolume != nil { + ok := object.Key("managedEBSVolume") + if err := awsAwsjson11_serializeDocumentTaskManagedEBSVolumeConfiguration(v.ManagedEBSVolume, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTaskVolumeConfigurations(v []types.TaskVolumeConfiguration, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentTaskVolumeConfiguration(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentTimeoutConfiguration(v *types.TimeoutConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.IdleTimeoutSeconds != nil { + ok := object.Key("idleTimeoutSeconds") + ok.Integer(*v.IdleTimeoutSeconds) + } + + if v.PerRequestTimeoutSeconds != nil { + ok := object.Key("perRequestTimeoutSeconds") + ok.Integer(*v.PerRequestTimeoutSeconds) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTmpfs(v *types.Tmpfs, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerPath != nil { + ok := object.Key("containerPath") + ok.String(*v.ContainerPath) + } + + if v.MountOptions != nil { + ok := object.Key("mountOptions") + if err := awsAwsjson11_serializeDocumentStringList(v.MountOptions, ok); err != nil { + return err + } + } + + { + ok := object.Key("size") + ok.Integer(v.Size) + } + + return nil +} + +func awsAwsjson11_serializeDocumentTmpfsList(v []types.Tmpfs, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentTmpfs(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentUlimit(v *types.Ulimit, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + { + ok := object.Key("hardLimit") + ok.Integer(v.HardLimit) + } + + if len(v.Name) > 0 { + ok := object.Key("name") + ok.String(string(v.Name)) + } + + { + ok := object.Key("softLimit") + ok.Integer(v.SoftLimit) + } + + return nil +} + +func awsAwsjson11_serializeDocumentUlimitList(v []types.Ulimit, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentUlimit(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentVersionInfo(v *types.VersionInfo, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AgentHash != nil { + ok := object.Key("agentHash") + ok.String(*v.AgentHash) + } + + if v.AgentVersion != nil { + ok := object.Key("agentVersion") + ok.String(*v.AgentVersion) + } + + if v.DockerVersion != nil { + ok := object.Key("dockerVersion") + ok.String(*v.DockerVersion) + } + + return nil +} + +func awsAwsjson11_serializeDocumentVolume(v *types.Volume, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ConfiguredAtLaunch != nil { + ok := object.Key("configuredAtLaunch") + ok.Boolean(*v.ConfiguredAtLaunch) + } + + if v.DockerVolumeConfiguration != nil { + ok := object.Key("dockerVolumeConfiguration") + if err := awsAwsjson11_serializeDocumentDockerVolumeConfiguration(v.DockerVolumeConfiguration, ok); err != nil { + return err + } + } + + if v.EfsVolumeConfiguration != nil { + ok := object.Key("efsVolumeConfiguration") + if err := awsAwsjson11_serializeDocumentEFSVolumeConfiguration(v.EfsVolumeConfiguration, ok); err != nil { + return err + } + } + + if v.FsxWindowsFileServerVolumeConfiguration != nil { + ok := object.Key("fsxWindowsFileServerVolumeConfiguration") + if err := awsAwsjson11_serializeDocumentFSxWindowsFileServerVolumeConfiguration(v.FsxWindowsFileServerVolumeConfiguration, ok); err != nil { + return err + } + } + + if v.Host != nil { + ok := object.Key("host") + if err := awsAwsjson11_serializeDocumentHostVolumeProperties(v.Host, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + return nil +} + +func awsAwsjson11_serializeDocumentVolumeFrom(v *types.VolumeFrom, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ReadOnly != nil { + ok := object.Key("readOnly") + ok.Boolean(*v.ReadOnly) + } + + if v.SourceContainer != nil { + ok := object.Key("sourceContainer") + ok.String(*v.SourceContainer) + } + + return nil +} + +func awsAwsjson11_serializeDocumentVolumeFromList(v []types.VolumeFrom, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentVolumeFrom(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentVolumeList(v []types.Volume, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentVolume(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeDocumentVpcLatticeConfiguration(v *types.VpcLatticeConfiguration, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.PortName != nil { + ok := object.Key("portName") + ok.String(*v.PortName) + } + + if v.RoleArn != nil { + ok := object.Key("roleArn") + ok.String(*v.RoleArn) + } + + if v.TargetGroupArn != nil { + ok := object.Key("targetGroupArn") + ok.String(*v.TargetGroupArn) + } + + return nil +} + +func awsAwsjson11_serializeDocumentVpcLatticeConfigurations(v []types.VpcLatticeConfiguration, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsAwsjson11_serializeDocumentVpcLatticeConfiguration(&v[i], av); err != nil { + return err + } + } + return nil +} + +func awsAwsjson11_serializeOpDocumentCreateCapacityProviderInput(v *CreateCapacityProviderInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AutoScalingGroupProvider != nil { + ok := object.Key("autoScalingGroupProvider") + if err := awsAwsjson11_serializeDocumentAutoScalingGroupProvider(v.AutoScalingGroupProvider, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentCreateClusterInput(v *CreateClusterInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CapacityProviders != nil { + ok := object.Key("capacityProviders") + if err := awsAwsjson11_serializeDocumentStringList(v.CapacityProviders, ok); err != nil { + return err + } + } + + if v.ClusterName != nil { + ok := object.Key("clusterName") + ok.String(*v.ClusterName) + } + + if v.Configuration != nil { + ok := object.Key("configuration") + if err := awsAwsjson11_serializeDocumentClusterConfiguration(v.Configuration, ok); err != nil { + return err + } + } + + if v.DefaultCapacityProviderStrategy != nil { + ok := object.Key("defaultCapacityProviderStrategy") + if err := awsAwsjson11_serializeDocumentCapacityProviderStrategy(v.DefaultCapacityProviderStrategy, ok); err != nil { + return err + } + } + + if v.ServiceConnectDefaults != nil { + ok := object.Key("serviceConnectDefaults") + if err := awsAwsjson11_serializeDocumentClusterServiceConnectDefaultsRequest(v.ServiceConnectDefaults, ok); err != nil { + return err + } + } + + if v.Settings != nil { + ok := object.Key("settings") + if err := awsAwsjson11_serializeDocumentClusterSettings(v.Settings, ok); err != nil { + return err + } + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentCreateServiceInput(v *CreateServiceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.AvailabilityZoneRebalancing) > 0 { + ok := object.Key("availabilityZoneRebalancing") + ok.String(string(v.AvailabilityZoneRebalancing)) + } + + if v.CapacityProviderStrategy != nil { + ok := object.Key("capacityProviderStrategy") + if err := awsAwsjson11_serializeDocumentCapacityProviderStrategy(v.CapacityProviderStrategy, ok); err != nil { + return err + } + } + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.DeploymentConfiguration != nil { + ok := object.Key("deploymentConfiguration") + if err := awsAwsjson11_serializeDocumentDeploymentConfiguration(v.DeploymentConfiguration, ok); err != nil { + return err + } + } + + if v.DeploymentController != nil { + ok := object.Key("deploymentController") + if err := awsAwsjson11_serializeDocumentDeploymentController(v.DeploymentController, ok); err != nil { + return err + } + } + + if v.DesiredCount != nil { + ok := object.Key("desiredCount") + ok.Integer(*v.DesiredCount) + } + + if v.EnableECSManagedTags { + ok := object.Key("enableECSManagedTags") + ok.Boolean(v.EnableECSManagedTags) + } + + if v.EnableExecuteCommand { + ok := object.Key("enableExecuteCommand") + ok.Boolean(v.EnableExecuteCommand) + } + + if v.HealthCheckGracePeriodSeconds != nil { + ok := object.Key("healthCheckGracePeriodSeconds") + ok.Integer(*v.HealthCheckGracePeriodSeconds) + } + + if len(v.LaunchType) > 0 { + ok := object.Key("launchType") + ok.String(string(v.LaunchType)) + } + + if v.LoadBalancers != nil { + ok := object.Key("loadBalancers") + if err := awsAwsjson11_serializeDocumentLoadBalancers(v.LoadBalancers, ok); err != nil { + return err + } + } + + if v.NetworkConfiguration != nil { + ok := object.Key("networkConfiguration") + if err := awsAwsjson11_serializeDocumentNetworkConfiguration(v.NetworkConfiguration, ok); err != nil { + return err + } + } + + if v.PlacementConstraints != nil { + ok := object.Key("placementConstraints") + if err := awsAwsjson11_serializeDocumentPlacementConstraints(v.PlacementConstraints, ok); err != nil { + return err + } + } + + if v.PlacementStrategy != nil { + ok := object.Key("placementStrategy") + if err := awsAwsjson11_serializeDocumentPlacementStrategies(v.PlacementStrategy, ok); err != nil { + return err + } + } + + if v.PlatformVersion != nil { + ok := object.Key("platformVersion") + ok.String(*v.PlatformVersion) + } + + if len(v.PropagateTags) > 0 { + ok := object.Key("propagateTags") + ok.String(string(v.PropagateTags)) + } + + if v.Role != nil { + ok := object.Key("role") + ok.String(*v.Role) + } + + if len(v.SchedulingStrategy) > 0 { + ok := object.Key("schedulingStrategy") + ok.String(string(v.SchedulingStrategy)) + } + + if v.ServiceConnectConfiguration != nil { + ok := object.Key("serviceConnectConfiguration") + if err := awsAwsjson11_serializeDocumentServiceConnectConfiguration(v.ServiceConnectConfiguration, ok); err != nil { + return err + } + } + + if v.ServiceName != nil { + ok := object.Key("serviceName") + ok.String(*v.ServiceName) + } + + if v.ServiceRegistries != nil { + ok := object.Key("serviceRegistries") + if err := awsAwsjson11_serializeDocumentServiceRegistries(v.ServiceRegistries, ok); err != nil { + return err + } + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + if v.TaskDefinition != nil { + ok := object.Key("taskDefinition") + ok.String(*v.TaskDefinition) + } + + if v.VolumeConfigurations != nil { + ok := object.Key("volumeConfigurations") + if err := awsAwsjson11_serializeDocumentServiceVolumeConfigurations(v.VolumeConfigurations, ok); err != nil { + return err + } + } + + if v.VpcLatticeConfigurations != nil { + ok := object.Key("vpcLatticeConfigurations") + if err := awsAwsjson11_serializeDocumentVpcLatticeConfigurations(v.VpcLatticeConfigurations, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentCreateTaskSetInput(v *CreateTaskSetInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CapacityProviderStrategy != nil { + ok := object.Key("capacityProviderStrategy") + if err := awsAwsjson11_serializeDocumentCapacityProviderStrategy(v.CapacityProviderStrategy, ok); err != nil { + return err + } + } + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ExternalId != nil { + ok := object.Key("externalId") + ok.String(*v.ExternalId) + } + + if len(v.LaunchType) > 0 { + ok := object.Key("launchType") + ok.String(string(v.LaunchType)) + } + + if v.LoadBalancers != nil { + ok := object.Key("loadBalancers") + if err := awsAwsjson11_serializeDocumentLoadBalancers(v.LoadBalancers, ok); err != nil { + return err + } + } + + if v.NetworkConfiguration != nil { + ok := object.Key("networkConfiguration") + if err := awsAwsjson11_serializeDocumentNetworkConfiguration(v.NetworkConfiguration, ok); err != nil { + return err + } + } + + if v.PlatformVersion != nil { + ok := object.Key("platformVersion") + ok.String(*v.PlatformVersion) + } + + if v.Scale != nil { + ok := object.Key("scale") + if err := awsAwsjson11_serializeDocumentScale(v.Scale, ok); err != nil { + return err + } + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + if v.ServiceRegistries != nil { + ok := object.Key("serviceRegistries") + if err := awsAwsjson11_serializeDocumentServiceRegistries(v.ServiceRegistries, ok); err != nil { + return err + } + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + if v.TaskDefinition != nil { + ok := object.Key("taskDefinition") + ok.String(*v.TaskDefinition) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeleteAccountSettingInput(v *DeleteAccountSettingInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Name) > 0 { + ok := object.Key("name") + ok.String(string(v.Name)) + } + + if v.PrincipalArn != nil { + ok := object.Key("principalArn") + ok.String(*v.PrincipalArn) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeleteAttributesInput(v *DeleteAttributesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Attributes != nil { + ok := object.Key("attributes") + if err := awsAwsjson11_serializeDocumentAttributes(v.Attributes, ok); err != nil { + return err + } + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeleteCapacityProviderInput(v *DeleteCapacityProviderInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CapacityProvider != nil { + ok := object.Key("capacityProvider") + ok.String(*v.CapacityProvider) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeleteClusterInput(v *DeleteClusterInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeleteServiceInput(v *DeleteServiceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Force != nil { + ok := object.Key("force") + ok.Boolean(*v.Force) + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeleteTaskDefinitionsInput(v *DeleteTaskDefinitionsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.TaskDefinitions != nil { + ok := object.Key("taskDefinitions") + if err := awsAwsjson11_serializeDocumentStringList(v.TaskDefinitions, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeleteTaskSetInput(v *DeleteTaskSetInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Force != nil { + ok := object.Key("force") + ok.Boolean(*v.Force) + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + if v.TaskSet != nil { + ok := object.Key("taskSet") + ok.String(*v.TaskSet) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeregisterContainerInstanceInput(v *DeregisterContainerInstanceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstance != nil { + ok := object.Key("containerInstance") + ok.String(*v.ContainerInstance) + } + + if v.Force != nil { + ok := object.Key("force") + ok.Boolean(*v.Force) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDeregisterTaskDefinitionInput(v *DeregisterTaskDefinitionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.TaskDefinition != nil { + ok := object.Key("taskDefinition") + ok.String(*v.TaskDefinition) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeCapacityProvidersInput(v *DescribeCapacityProvidersInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CapacityProviders != nil { + ok := object.Key("capacityProviders") + if err := awsAwsjson11_serializeDocumentStringList(v.CapacityProviders, ok); err != nil { + return err + } + } + + if v.Include != nil { + ok := object.Key("include") + if err := awsAwsjson11_serializeDocumentCapacityProviderFieldList(v.Include, ok); err != nil { + return err + } + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeClustersInput(v *DescribeClustersInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Clusters != nil { + ok := object.Key("clusters") + if err := awsAwsjson11_serializeDocumentStringList(v.Clusters, ok); err != nil { + return err + } + } + + if v.Include != nil { + ok := object.Key("include") + if err := awsAwsjson11_serializeDocumentClusterFieldList(v.Include, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeContainerInstancesInput(v *DescribeContainerInstancesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstances != nil { + ok := object.Key("containerInstances") + if err := awsAwsjson11_serializeDocumentStringList(v.ContainerInstances, ok); err != nil { + return err + } + } + + if v.Include != nil { + ok := object.Key("include") + if err := awsAwsjson11_serializeDocumentContainerInstanceFieldList(v.Include, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeServiceDeploymentsInput(v *DescribeServiceDeploymentsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ServiceDeploymentArns != nil { + ok := object.Key("serviceDeploymentArns") + if err := awsAwsjson11_serializeDocumentStringList(v.ServiceDeploymentArns, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeServiceRevisionsInput(v *DescribeServiceRevisionsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ServiceRevisionArns != nil { + ok := object.Key("serviceRevisionArns") + if err := awsAwsjson11_serializeDocumentStringList(v.ServiceRevisionArns, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeServicesInput(v *DescribeServicesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Include != nil { + ok := object.Key("include") + if err := awsAwsjson11_serializeDocumentServiceFieldList(v.Include, ok); err != nil { + return err + } + } + + if v.Services != nil { + ok := object.Key("services") + if err := awsAwsjson11_serializeDocumentStringList(v.Services, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeTaskDefinitionInput(v *DescribeTaskDefinitionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Include != nil { + ok := object.Key("include") + if err := awsAwsjson11_serializeDocumentTaskDefinitionFieldList(v.Include, ok); err != nil { + return err + } + } + + if v.TaskDefinition != nil { + ok := object.Key("taskDefinition") + ok.String(*v.TaskDefinition) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeTaskSetsInput(v *DescribeTaskSetsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Include != nil { + ok := object.Key("include") + if err := awsAwsjson11_serializeDocumentTaskSetFieldList(v.Include, ok); err != nil { + return err + } + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + if v.TaskSets != nil { + ok := object.Key("taskSets") + if err := awsAwsjson11_serializeDocumentStringList(v.TaskSets, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDescribeTasksInput(v *DescribeTasksInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Include != nil { + ok := object.Key("include") + if err := awsAwsjson11_serializeDocumentTaskFieldList(v.Include, ok); err != nil { + return err + } + } + + if v.Tasks != nil { + ok := object.Key("tasks") + if err := awsAwsjson11_serializeDocumentStringList(v.Tasks, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentDiscoverPollEndpointInput(v *DiscoverPollEndpointInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstance != nil { + ok := object.Key("containerInstance") + ok.String(*v.ContainerInstance) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentExecuteCommandInput(v *ExecuteCommandInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Command != nil { + ok := object.Key("command") + ok.String(*v.Command) + } + + if v.Container != nil { + ok := object.Key("container") + ok.String(*v.Container) + } + + { + ok := object.Key("interactive") + ok.Boolean(v.Interactive) + } + + if v.Task != nil { + ok := object.Key("task") + ok.String(*v.Task) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentGetTaskProtectionInput(v *GetTaskProtectionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Tasks != nil { + ok := object.Key("tasks") + if err := awsAwsjson11_serializeDocumentStringList(v.Tasks, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListAccountSettingsInput(v *ListAccountSettingsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.EffectiveSettings { + ok := object.Key("effectiveSettings") + ok.Boolean(v.EffectiveSettings) + } + + if v.MaxResults != 0 { + ok := object.Key("maxResults") + ok.Integer(v.MaxResults) + } + + if len(v.Name) > 0 { + ok := object.Key("name") + ok.String(string(v.Name)) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if v.PrincipalArn != nil { + ok := object.Key("principalArn") + ok.String(*v.PrincipalArn) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListAttributesInput(v *ListAttributesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AttributeName != nil { + ok := object.Key("attributeName") + ok.String(*v.AttributeName) + } + + if v.AttributeValue != nil { + ok := object.Key("attributeValue") + ok.String(*v.AttributeValue) + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if len(v.TargetType) > 0 { + ok := object.Key("targetType") + ok.String(string(v.TargetType)) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListClustersInput(v *ListClustersInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListContainerInstancesInput(v *ListContainerInstancesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Filter != nil { + ok := object.Key("filter") + ok.String(*v.Filter) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if len(v.Status) > 0 { + ok := object.Key("status") + ok.String(string(v.Status)) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListServiceDeploymentsInput(v *ListServiceDeploymentsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.CreatedAt != nil { + ok := object.Key("createdAt") + if err := awsAwsjson11_serializeDocumentCreatedAt(v.CreatedAt, ok); err != nil { + return err + } + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + if v.Status != nil { + ok := object.Key("status") + if err := awsAwsjson11_serializeDocumentServiceDeploymentStatusList(v.Status, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListServicesByNamespaceInput(v *ListServicesByNamespaceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.Namespace != nil { + ok := object.Key("namespace") + ok.String(*v.Namespace) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListServicesInput(v *ListServicesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if len(v.LaunchType) > 0 { + ok := object.Key("launchType") + ok.String(string(v.LaunchType)) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if len(v.SchedulingStrategy) > 0 { + ok := object.Key("schedulingStrategy") + ok.String(string(v.SchedulingStrategy)) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListTagsForResourceInput(v *ListTagsForResourceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ResourceArn != nil { + ok := object.Key("resourceArn") + ok.String(*v.ResourceArn) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListTaskDefinitionFamiliesInput(v *ListTaskDefinitionFamiliesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.FamilyPrefix != nil { + ok := object.Key("familyPrefix") + ok.String(*v.FamilyPrefix) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if len(v.Status) > 0 { + ok := object.Key("status") + ok.String(string(v.Status)) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListTaskDefinitionsInput(v *ListTaskDefinitionsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.FamilyPrefix != nil { + ok := object.Key("familyPrefix") + ok.String(*v.FamilyPrefix) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if len(v.Sort) > 0 { + ok := object.Key("sort") + ok.String(string(v.Sort)) + } + + if len(v.Status) > 0 { + ok := object.Key("status") + ok.String(string(v.Status)) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentListTasksInput(v *ListTasksInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstance != nil { + ok := object.Key("containerInstance") + ok.String(*v.ContainerInstance) + } + + if len(v.DesiredStatus) > 0 { + ok := object.Key("desiredStatus") + ok.String(string(v.DesiredStatus)) + } + + if v.Family != nil { + ok := object.Key("family") + ok.String(*v.Family) + } + + if len(v.LaunchType) > 0 { + ok := object.Key("launchType") + ok.String(string(v.LaunchType)) + } + + if v.MaxResults != nil { + ok := object.Key("maxResults") + ok.Integer(*v.MaxResults) + } + + if v.NextToken != nil { + ok := object.Key("nextToken") + ok.String(*v.NextToken) + } + + if v.ServiceName != nil { + ok := object.Key("serviceName") + ok.String(*v.ServiceName) + } + + if v.StartedBy != nil { + ok := object.Key("startedBy") + ok.String(*v.StartedBy) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentPutAccountSettingDefaultInput(v *PutAccountSettingDefaultInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Name) > 0 { + ok := object.Key("name") + ok.String(string(v.Name)) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentPutAccountSettingInput(v *PutAccountSettingInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Name) > 0 { + ok := object.Key("name") + ok.String(string(v.Name)) + } + + if v.PrincipalArn != nil { + ok := object.Key("principalArn") + ok.String(*v.PrincipalArn) + } + + if v.Value != nil { + ok := object.Key("value") + ok.String(*v.Value) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentPutAttributesInput(v *PutAttributesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Attributes != nil { + ok := object.Key("attributes") + if err := awsAwsjson11_serializeDocumentAttributes(v.Attributes, ok); err != nil { + return err + } + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentPutClusterCapacityProvidersInput(v *PutClusterCapacityProvidersInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CapacityProviders != nil { + ok := object.Key("capacityProviders") + if err := awsAwsjson11_serializeDocumentStringList(v.CapacityProviders, ok); err != nil { + return err + } + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.DefaultCapacityProviderStrategy != nil { + ok := object.Key("defaultCapacityProviderStrategy") + if err := awsAwsjson11_serializeDocumentCapacityProviderStrategy(v.DefaultCapacityProviderStrategy, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentRegisterContainerInstanceInput(v *RegisterContainerInstanceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Attributes != nil { + ok := object.Key("attributes") + if err := awsAwsjson11_serializeDocumentAttributes(v.Attributes, ok); err != nil { + return err + } + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstanceArn != nil { + ok := object.Key("containerInstanceArn") + ok.String(*v.ContainerInstanceArn) + } + + if v.InstanceIdentityDocument != nil { + ok := object.Key("instanceIdentityDocument") + ok.String(*v.InstanceIdentityDocument) + } + + if v.InstanceIdentityDocumentSignature != nil { + ok := object.Key("instanceIdentityDocumentSignature") + ok.String(*v.InstanceIdentityDocumentSignature) + } + + if v.PlatformDevices != nil { + ok := object.Key("platformDevices") + if err := awsAwsjson11_serializeDocumentPlatformDevices(v.PlatformDevices, ok); err != nil { + return err + } + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + if v.TotalResources != nil { + ok := object.Key("totalResources") + if err := awsAwsjson11_serializeDocumentResources(v.TotalResources, ok); err != nil { + return err + } + } + + if v.VersionInfo != nil { + ok := object.Key("versionInfo") + if err := awsAwsjson11_serializeDocumentVersionInfo(v.VersionInfo, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentRegisterTaskDefinitionInput(v *RegisterTaskDefinitionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ContainerDefinitions != nil { + ok := object.Key("containerDefinitions") + if err := awsAwsjson11_serializeDocumentContainerDefinitions(v.ContainerDefinitions, ok); err != nil { + return err + } + } + + if v.Cpu != nil { + ok := object.Key("cpu") + ok.String(*v.Cpu) + } + + if v.EnableFaultInjection != nil { + ok := object.Key("enableFaultInjection") + ok.Boolean(*v.EnableFaultInjection) + } + + if v.EphemeralStorage != nil { + ok := object.Key("ephemeralStorage") + if err := awsAwsjson11_serializeDocumentEphemeralStorage(v.EphemeralStorage, ok); err != nil { + return err + } + } + + if v.ExecutionRoleArn != nil { + ok := object.Key("executionRoleArn") + ok.String(*v.ExecutionRoleArn) + } + + if v.Family != nil { + ok := object.Key("family") + ok.String(*v.Family) + } + + if v.InferenceAccelerators != nil { + ok := object.Key("inferenceAccelerators") + if err := awsAwsjson11_serializeDocumentInferenceAccelerators(v.InferenceAccelerators, ok); err != nil { + return err + } + } + + if len(v.IpcMode) > 0 { + ok := object.Key("ipcMode") + ok.String(string(v.IpcMode)) + } + + if v.Memory != nil { + ok := object.Key("memory") + ok.String(*v.Memory) + } + + if len(v.NetworkMode) > 0 { + ok := object.Key("networkMode") + ok.String(string(v.NetworkMode)) + } + + if len(v.PidMode) > 0 { + ok := object.Key("pidMode") + ok.String(string(v.PidMode)) + } + + if v.PlacementConstraints != nil { + ok := object.Key("placementConstraints") + if err := awsAwsjson11_serializeDocumentTaskDefinitionPlacementConstraints(v.PlacementConstraints, ok); err != nil { + return err + } + } + + if v.ProxyConfiguration != nil { + ok := object.Key("proxyConfiguration") + if err := awsAwsjson11_serializeDocumentProxyConfiguration(v.ProxyConfiguration, ok); err != nil { + return err + } + } + + if v.RequiresCompatibilities != nil { + ok := object.Key("requiresCompatibilities") + if err := awsAwsjson11_serializeDocumentCompatibilityList(v.RequiresCompatibilities, ok); err != nil { + return err + } + } + + if v.RuntimePlatform != nil { + ok := object.Key("runtimePlatform") + if err := awsAwsjson11_serializeDocumentRuntimePlatform(v.RuntimePlatform, ok); err != nil { + return err + } + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + if v.TaskRoleArn != nil { + ok := object.Key("taskRoleArn") + ok.String(*v.TaskRoleArn) + } + + if v.Volumes != nil { + ok := object.Key("volumes") + if err := awsAwsjson11_serializeDocumentVolumeList(v.Volumes, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentRunTaskInput(v *RunTaskInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.CapacityProviderStrategy != nil { + ok := object.Key("capacityProviderStrategy") + if err := awsAwsjson11_serializeDocumentCapacityProviderStrategy(v.CapacityProviderStrategy, ok); err != nil { + return err + } + } + + if v.ClientToken != nil { + ok := object.Key("clientToken") + ok.String(*v.ClientToken) + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Count != nil { + ok := object.Key("count") + ok.Integer(*v.Count) + } + + if v.EnableECSManagedTags { + ok := object.Key("enableECSManagedTags") + ok.Boolean(v.EnableECSManagedTags) + } + + if v.EnableExecuteCommand { + ok := object.Key("enableExecuteCommand") + ok.Boolean(v.EnableExecuteCommand) + } + + if v.Group != nil { + ok := object.Key("group") + ok.String(*v.Group) + } + + if len(v.LaunchType) > 0 { + ok := object.Key("launchType") + ok.String(string(v.LaunchType)) + } + + if v.NetworkConfiguration != nil { + ok := object.Key("networkConfiguration") + if err := awsAwsjson11_serializeDocumentNetworkConfiguration(v.NetworkConfiguration, ok); err != nil { + return err + } + } + + if v.Overrides != nil { + ok := object.Key("overrides") + if err := awsAwsjson11_serializeDocumentTaskOverride(v.Overrides, ok); err != nil { + return err + } + } + + if v.PlacementConstraints != nil { + ok := object.Key("placementConstraints") + if err := awsAwsjson11_serializeDocumentPlacementConstraints(v.PlacementConstraints, ok); err != nil { + return err + } + } + + if v.PlacementStrategy != nil { + ok := object.Key("placementStrategy") + if err := awsAwsjson11_serializeDocumentPlacementStrategies(v.PlacementStrategy, ok); err != nil { + return err + } + } + + if v.PlatformVersion != nil { + ok := object.Key("platformVersion") + ok.String(*v.PlatformVersion) + } + + if len(v.PropagateTags) > 0 { + ok := object.Key("propagateTags") + ok.String(string(v.PropagateTags)) + } + + if v.ReferenceId != nil { + ok := object.Key("referenceId") + ok.String(*v.ReferenceId) + } + + if v.StartedBy != nil { + ok := object.Key("startedBy") + ok.String(*v.StartedBy) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + if v.TaskDefinition != nil { + ok := object.Key("taskDefinition") + ok.String(*v.TaskDefinition) + } + + if v.VolumeConfigurations != nil { + ok := object.Key("volumeConfigurations") + if err := awsAwsjson11_serializeDocumentTaskVolumeConfigurations(v.VolumeConfigurations, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentStartTaskInput(v *StartTaskInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstances != nil { + ok := object.Key("containerInstances") + if err := awsAwsjson11_serializeDocumentStringList(v.ContainerInstances, ok); err != nil { + return err + } + } + + if v.EnableECSManagedTags { + ok := object.Key("enableECSManagedTags") + ok.Boolean(v.EnableECSManagedTags) + } + + if v.EnableExecuteCommand { + ok := object.Key("enableExecuteCommand") + ok.Boolean(v.EnableExecuteCommand) + } + + if v.Group != nil { + ok := object.Key("group") + ok.String(*v.Group) + } + + if v.NetworkConfiguration != nil { + ok := object.Key("networkConfiguration") + if err := awsAwsjson11_serializeDocumentNetworkConfiguration(v.NetworkConfiguration, ok); err != nil { + return err + } + } + + if v.Overrides != nil { + ok := object.Key("overrides") + if err := awsAwsjson11_serializeDocumentTaskOverride(v.Overrides, ok); err != nil { + return err + } + } + + if len(v.PropagateTags) > 0 { + ok := object.Key("propagateTags") + ok.String(string(v.PropagateTags)) + } + + if v.ReferenceId != nil { + ok := object.Key("referenceId") + ok.String(*v.ReferenceId) + } + + if v.StartedBy != nil { + ok := object.Key("startedBy") + ok.String(*v.StartedBy) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + if v.TaskDefinition != nil { + ok := object.Key("taskDefinition") + ok.String(*v.TaskDefinition) + } + + if v.VolumeConfigurations != nil { + ok := object.Key("volumeConfigurations") + if err := awsAwsjson11_serializeDocumentTaskVolumeConfigurations(v.VolumeConfigurations, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentStopTaskInput(v *StopTaskInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Reason != nil { + ok := object.Key("reason") + ok.String(*v.Reason) + } + + if v.Task != nil { + ok := object.Key("task") + ok.String(*v.Task) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentSubmitAttachmentStateChangesInput(v *SubmitAttachmentStateChangesInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Attachments != nil { + ok := object.Key("attachments") + if err := awsAwsjson11_serializeDocumentAttachmentStateChanges(v.Attachments, ok); err != nil { + return err + } + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentSubmitContainerStateChangeInput(v *SubmitContainerStateChangeInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerName != nil { + ok := object.Key("containerName") + ok.String(*v.ContainerName) + } + + if v.ExitCode != nil { + ok := object.Key("exitCode") + ok.Integer(*v.ExitCode) + } + + if v.NetworkBindings != nil { + ok := object.Key("networkBindings") + if err := awsAwsjson11_serializeDocumentNetworkBindings(v.NetworkBindings, ok); err != nil { + return err + } + } + + if v.Reason != nil { + ok := object.Key("reason") + ok.String(*v.Reason) + } + + if v.RuntimeId != nil { + ok := object.Key("runtimeId") + ok.String(*v.RuntimeId) + } + + if v.Status != nil { + ok := object.Key("status") + ok.String(*v.Status) + } + + if v.Task != nil { + ok := object.Key("task") + ok.String(*v.Task) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentSubmitTaskStateChangeInput(v *SubmitTaskStateChangeInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Attachments != nil { + ok := object.Key("attachments") + if err := awsAwsjson11_serializeDocumentAttachmentStateChanges(v.Attachments, ok); err != nil { + return err + } + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Containers != nil { + ok := object.Key("containers") + if err := awsAwsjson11_serializeDocumentContainerStateChanges(v.Containers, ok); err != nil { + return err + } + } + + if v.ExecutionStoppedAt != nil { + ok := object.Key("executionStoppedAt") + ok.Double(smithytime.FormatEpochSeconds(*v.ExecutionStoppedAt)) + } + + if v.ManagedAgents != nil { + ok := object.Key("managedAgents") + if err := awsAwsjson11_serializeDocumentManagedAgentStateChanges(v.ManagedAgents, ok); err != nil { + return err + } + } + + if v.PullStartedAt != nil { + ok := object.Key("pullStartedAt") + ok.Double(smithytime.FormatEpochSeconds(*v.PullStartedAt)) + } + + if v.PullStoppedAt != nil { + ok := object.Key("pullStoppedAt") + ok.Double(smithytime.FormatEpochSeconds(*v.PullStoppedAt)) + } + + if v.Reason != nil { + ok := object.Key("reason") + ok.String(*v.Reason) + } + + if v.Status != nil { + ok := object.Key("status") + ok.String(*v.Status) + } + + if v.Task != nil { + ok := object.Key("task") + ok.String(*v.Task) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentTagResourceInput(v *TagResourceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ResourceArn != nil { + ok := object.Key("resourceArn") + ok.String(*v.ResourceArn) + } + + if v.Tags != nil { + ok := object.Key("tags") + if err := awsAwsjson11_serializeDocumentTags(v.Tags, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUntagResourceInput(v *UntagResourceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.ResourceArn != nil { + ok := object.Key("resourceArn") + ok.String(*v.ResourceArn) + } + + if v.TagKeys != nil { + ok := object.Key("tagKeys") + if err := awsAwsjson11_serializeDocumentTagKeys(v.TagKeys, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateCapacityProviderInput(v *UpdateCapacityProviderInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.AutoScalingGroupProvider != nil { + ok := object.Key("autoScalingGroupProvider") + if err := awsAwsjson11_serializeDocumentAutoScalingGroupProviderUpdate(v.AutoScalingGroupProvider, ok); err != nil { + return err + } + } + + if v.Name != nil { + ok := object.Key("name") + ok.String(*v.Name) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateClusterInput(v *UpdateClusterInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Configuration != nil { + ok := object.Key("configuration") + if err := awsAwsjson11_serializeDocumentClusterConfiguration(v.Configuration, ok); err != nil { + return err + } + } + + if v.ServiceConnectDefaults != nil { + ok := object.Key("serviceConnectDefaults") + if err := awsAwsjson11_serializeDocumentClusterServiceConnectDefaultsRequest(v.ServiceConnectDefaults, ok); err != nil { + return err + } + } + + if v.Settings != nil { + ok := object.Key("settings") + if err := awsAwsjson11_serializeDocumentClusterSettings(v.Settings, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateClusterSettingsInput(v *UpdateClusterSettingsInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Settings != nil { + ok := object.Key("settings") + if err := awsAwsjson11_serializeDocumentClusterSettings(v.Settings, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateContainerAgentInput(v *UpdateContainerAgentInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstance != nil { + ok := object.Key("containerInstance") + ok.String(*v.ContainerInstance) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateContainerInstancesStateInput(v *UpdateContainerInstancesStateInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ContainerInstances != nil { + ok := object.Key("containerInstances") + if err := awsAwsjson11_serializeDocumentStringList(v.ContainerInstances, ok); err != nil { + return err + } + } + + if len(v.Status) > 0 { + ok := object.Key("status") + ok.String(string(v.Status)) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateServiceInput(v *UpdateServiceInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.AvailabilityZoneRebalancing) > 0 { + ok := object.Key("availabilityZoneRebalancing") + ok.String(string(v.AvailabilityZoneRebalancing)) + } + + if v.CapacityProviderStrategy != nil { + ok := object.Key("capacityProviderStrategy") + if err := awsAwsjson11_serializeDocumentCapacityProviderStrategy(v.CapacityProviderStrategy, ok); err != nil { + return err + } + } + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.DeploymentConfiguration != nil { + ok := object.Key("deploymentConfiguration") + if err := awsAwsjson11_serializeDocumentDeploymentConfiguration(v.DeploymentConfiguration, ok); err != nil { + return err + } + } + + if v.DesiredCount != nil { + ok := object.Key("desiredCount") + ok.Integer(*v.DesiredCount) + } + + if v.EnableECSManagedTags != nil { + ok := object.Key("enableECSManagedTags") + ok.Boolean(*v.EnableECSManagedTags) + } + + if v.EnableExecuteCommand != nil { + ok := object.Key("enableExecuteCommand") + ok.Boolean(*v.EnableExecuteCommand) + } + + if v.ForceNewDeployment { + ok := object.Key("forceNewDeployment") + ok.Boolean(v.ForceNewDeployment) + } + + if v.HealthCheckGracePeriodSeconds != nil { + ok := object.Key("healthCheckGracePeriodSeconds") + ok.Integer(*v.HealthCheckGracePeriodSeconds) + } + + if v.LoadBalancers != nil { + ok := object.Key("loadBalancers") + if err := awsAwsjson11_serializeDocumentLoadBalancers(v.LoadBalancers, ok); err != nil { + return err + } + } + + if v.NetworkConfiguration != nil { + ok := object.Key("networkConfiguration") + if err := awsAwsjson11_serializeDocumentNetworkConfiguration(v.NetworkConfiguration, ok); err != nil { + return err + } + } + + if v.PlacementConstraints != nil { + ok := object.Key("placementConstraints") + if err := awsAwsjson11_serializeDocumentPlacementConstraints(v.PlacementConstraints, ok); err != nil { + return err + } + } + + if v.PlacementStrategy != nil { + ok := object.Key("placementStrategy") + if err := awsAwsjson11_serializeDocumentPlacementStrategies(v.PlacementStrategy, ok); err != nil { + return err + } + } + + if v.PlatformVersion != nil { + ok := object.Key("platformVersion") + ok.String(*v.PlatformVersion) + } + + if len(v.PropagateTags) > 0 { + ok := object.Key("propagateTags") + ok.String(string(v.PropagateTags)) + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + if v.ServiceConnectConfiguration != nil { + ok := object.Key("serviceConnectConfiguration") + if err := awsAwsjson11_serializeDocumentServiceConnectConfiguration(v.ServiceConnectConfiguration, ok); err != nil { + return err + } + } + + if v.ServiceRegistries != nil { + ok := object.Key("serviceRegistries") + if err := awsAwsjson11_serializeDocumentServiceRegistries(v.ServiceRegistries, ok); err != nil { + return err + } + } + + if v.TaskDefinition != nil { + ok := object.Key("taskDefinition") + ok.String(*v.TaskDefinition) + } + + if v.VolumeConfigurations != nil { + ok := object.Key("volumeConfigurations") + if err := awsAwsjson11_serializeDocumentServiceVolumeConfigurations(v.VolumeConfigurations, ok); err != nil { + return err + } + } + + if v.VpcLatticeConfigurations != nil { + ok := object.Key("vpcLatticeConfigurations") + if err := awsAwsjson11_serializeDocumentVpcLatticeConfigurations(v.VpcLatticeConfigurations, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateServicePrimaryTaskSetInput(v *UpdateServicePrimaryTaskSetInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.PrimaryTaskSet != nil { + ok := object.Key("primaryTaskSet") + ok.String(*v.PrimaryTaskSet) + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateTaskProtectionInput(v *UpdateTaskProtectionInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.ExpiresInMinutes != nil { + ok := object.Key("expiresInMinutes") + ok.Integer(*v.ExpiresInMinutes) + } + + { + ok := object.Key("protectionEnabled") + ok.Boolean(v.ProtectionEnabled) + } + + if v.Tasks != nil { + ok := object.Key("tasks") + if err := awsAwsjson11_serializeDocumentStringList(v.Tasks, ok); err != nil { + return err + } + } + + return nil +} + +func awsAwsjson11_serializeOpDocumentUpdateTaskSetInput(v *UpdateTaskSetInput, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.Cluster != nil { + ok := object.Key("cluster") + ok.String(*v.Cluster) + } + + if v.Scale != nil { + ok := object.Key("scale") + if err := awsAwsjson11_serializeDocumentScale(v.Scale, ok); err != nil { + return err + } + } + + if v.Service != nil { + ok := object.Key("service") + ok.String(*v.Service) + } + + if v.TaskSet != nil { + ok := object.Key("taskSet") + ok.String(*v.TaskSet) + } + + return nil +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/enums.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/enums.go new file mode 100644 index 000000000..a842b7b72 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/enums.go @@ -0,0 +1,1391 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +type AgentUpdateStatus string + +// Enum values for AgentUpdateStatus +const ( + AgentUpdateStatusPending AgentUpdateStatus = "PENDING" + AgentUpdateStatusStaging AgentUpdateStatus = "STAGING" + AgentUpdateStatusStaged AgentUpdateStatus = "STAGED" + AgentUpdateStatusUpdating AgentUpdateStatus = "UPDATING" + AgentUpdateStatusUpdated AgentUpdateStatus = "UPDATED" + AgentUpdateStatusFailed AgentUpdateStatus = "FAILED" +) + +// Values returns all known values for AgentUpdateStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (AgentUpdateStatus) Values() []AgentUpdateStatus { + return []AgentUpdateStatus{ + "PENDING", + "STAGING", + "STAGED", + "UPDATING", + "UPDATED", + "FAILED", + } +} + +type ApplicationProtocol string + +// Enum values for ApplicationProtocol +const ( + ApplicationProtocolHttp ApplicationProtocol = "http" + ApplicationProtocolHttp2 ApplicationProtocol = "http2" + ApplicationProtocolGrpc ApplicationProtocol = "grpc" +) + +// Values returns all known values for ApplicationProtocol. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ApplicationProtocol) Values() []ApplicationProtocol { + return []ApplicationProtocol{ + "http", + "http2", + "grpc", + } +} + +type AssignPublicIp string + +// Enum values for AssignPublicIp +const ( + AssignPublicIpEnabled AssignPublicIp = "ENABLED" + AssignPublicIpDisabled AssignPublicIp = "DISABLED" +) + +// Values returns all known values for AssignPublicIp. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (AssignPublicIp) Values() []AssignPublicIp { + return []AssignPublicIp{ + "ENABLED", + "DISABLED", + } +} + +type AvailabilityZoneRebalancing string + +// Enum values for AvailabilityZoneRebalancing +const ( + AvailabilityZoneRebalancingEnabled AvailabilityZoneRebalancing = "ENABLED" + AvailabilityZoneRebalancingDisabled AvailabilityZoneRebalancing = "DISABLED" +) + +// Values returns all known values for AvailabilityZoneRebalancing. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (AvailabilityZoneRebalancing) Values() []AvailabilityZoneRebalancing { + return []AvailabilityZoneRebalancing{ + "ENABLED", + "DISABLED", + } +} + +type CapacityProviderField string + +// Enum values for CapacityProviderField +const ( + CapacityProviderFieldTags CapacityProviderField = "TAGS" +) + +// Values returns all known values for CapacityProviderField. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (CapacityProviderField) Values() []CapacityProviderField { + return []CapacityProviderField{ + "TAGS", + } +} + +type CapacityProviderStatus string + +// Enum values for CapacityProviderStatus +const ( + CapacityProviderStatusActive CapacityProviderStatus = "ACTIVE" + CapacityProviderStatusInactive CapacityProviderStatus = "INACTIVE" +) + +// Values returns all known values for CapacityProviderStatus. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (CapacityProviderStatus) Values() []CapacityProviderStatus { + return []CapacityProviderStatus{ + "ACTIVE", + "INACTIVE", + } +} + +type CapacityProviderUpdateStatus string + +// Enum values for CapacityProviderUpdateStatus +const ( + CapacityProviderUpdateStatusDeleteInProgress CapacityProviderUpdateStatus = "DELETE_IN_PROGRESS" + CapacityProviderUpdateStatusDeleteComplete CapacityProviderUpdateStatus = "DELETE_COMPLETE" + CapacityProviderUpdateStatusDeleteFailed CapacityProviderUpdateStatus = "DELETE_FAILED" + CapacityProviderUpdateStatusUpdateInProgress CapacityProviderUpdateStatus = "UPDATE_IN_PROGRESS" + CapacityProviderUpdateStatusUpdateComplete CapacityProviderUpdateStatus = "UPDATE_COMPLETE" + CapacityProviderUpdateStatusUpdateFailed CapacityProviderUpdateStatus = "UPDATE_FAILED" +) + +// Values returns all known values for CapacityProviderUpdateStatus. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (CapacityProviderUpdateStatus) Values() []CapacityProviderUpdateStatus { + return []CapacityProviderUpdateStatus{ + "DELETE_IN_PROGRESS", + "DELETE_COMPLETE", + "DELETE_FAILED", + "UPDATE_IN_PROGRESS", + "UPDATE_COMPLETE", + "UPDATE_FAILED", + } +} + +type ClusterField string + +// Enum values for ClusterField +const ( + ClusterFieldAttachments ClusterField = "ATTACHMENTS" + ClusterFieldConfigurations ClusterField = "CONFIGURATIONS" + ClusterFieldSettings ClusterField = "SETTINGS" + ClusterFieldStatistics ClusterField = "STATISTICS" + ClusterFieldTags ClusterField = "TAGS" +) + +// Values returns all known values for ClusterField. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ClusterField) Values() []ClusterField { + return []ClusterField{ + "ATTACHMENTS", + "CONFIGURATIONS", + "SETTINGS", + "STATISTICS", + "TAGS", + } +} + +type ClusterSettingName string + +// Enum values for ClusterSettingName +const ( + ClusterSettingNameContainerInsights ClusterSettingName = "containerInsights" +) + +// Values returns all known values for ClusterSettingName. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ClusterSettingName) Values() []ClusterSettingName { + return []ClusterSettingName{ + "containerInsights", + } +} + +type Compatibility string + +// Enum values for Compatibility +const ( + CompatibilityEc2 Compatibility = "EC2" + CompatibilityFargate Compatibility = "FARGATE" + CompatibilityExternal Compatibility = "EXTERNAL" +) + +// Values returns all known values for Compatibility. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (Compatibility) Values() []Compatibility { + return []Compatibility{ + "EC2", + "FARGATE", + "EXTERNAL", + } +} + +type Connectivity string + +// Enum values for Connectivity +const ( + ConnectivityConnected Connectivity = "CONNECTED" + ConnectivityDisconnected Connectivity = "DISCONNECTED" +) + +// Values returns all known values for Connectivity. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (Connectivity) Values() []Connectivity { + return []Connectivity{ + "CONNECTED", + "DISCONNECTED", + } +} + +type ContainerCondition string + +// Enum values for ContainerCondition +const ( + ContainerConditionStart ContainerCondition = "START" + ContainerConditionComplete ContainerCondition = "COMPLETE" + ContainerConditionSuccess ContainerCondition = "SUCCESS" + ContainerConditionHealthy ContainerCondition = "HEALTHY" +) + +// Values returns all known values for ContainerCondition. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ContainerCondition) Values() []ContainerCondition { + return []ContainerCondition{ + "START", + "COMPLETE", + "SUCCESS", + "HEALTHY", + } +} + +type ContainerInstanceField string + +// Enum values for ContainerInstanceField +const ( + ContainerInstanceFieldTags ContainerInstanceField = "TAGS" + ContainerInstanceFieldContainerInstanceHealth ContainerInstanceField = "CONTAINER_INSTANCE_HEALTH" +) + +// Values returns all known values for ContainerInstanceField. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ContainerInstanceField) Values() []ContainerInstanceField { + return []ContainerInstanceField{ + "TAGS", + "CONTAINER_INSTANCE_HEALTH", + } +} + +type ContainerInstanceStatus string + +// Enum values for ContainerInstanceStatus +const ( + ContainerInstanceStatusActive ContainerInstanceStatus = "ACTIVE" + ContainerInstanceStatusDraining ContainerInstanceStatus = "DRAINING" + ContainerInstanceStatusRegistering ContainerInstanceStatus = "REGISTERING" + ContainerInstanceStatusDeregistering ContainerInstanceStatus = "DEREGISTERING" + ContainerInstanceStatusRegistrationFailed ContainerInstanceStatus = "REGISTRATION_FAILED" +) + +// Values returns all known values for ContainerInstanceStatus. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ContainerInstanceStatus) Values() []ContainerInstanceStatus { + return []ContainerInstanceStatus{ + "ACTIVE", + "DRAINING", + "REGISTERING", + "DEREGISTERING", + "REGISTRATION_FAILED", + } +} + +type CPUArchitecture string + +// Enum values for CPUArchitecture +const ( + CPUArchitectureX8664 CPUArchitecture = "X86_64" + CPUArchitectureArm64 CPUArchitecture = "ARM64" +) + +// Values returns all known values for CPUArchitecture. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (CPUArchitecture) Values() []CPUArchitecture { + return []CPUArchitecture{ + "X86_64", + "ARM64", + } +} + +type DeploymentControllerType string + +// Enum values for DeploymentControllerType +const ( + DeploymentControllerTypeEcs DeploymentControllerType = "ECS" + DeploymentControllerTypeCodeDeploy DeploymentControllerType = "CODE_DEPLOY" + DeploymentControllerTypeExternal DeploymentControllerType = "EXTERNAL" +) + +// Values returns all known values for DeploymentControllerType. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (DeploymentControllerType) Values() []DeploymentControllerType { + return []DeploymentControllerType{ + "ECS", + "CODE_DEPLOY", + "EXTERNAL", + } +} + +type DeploymentRolloutState string + +// Enum values for DeploymentRolloutState +const ( + DeploymentRolloutStateCompleted DeploymentRolloutState = "COMPLETED" + DeploymentRolloutStateFailed DeploymentRolloutState = "FAILED" + DeploymentRolloutStateInProgress DeploymentRolloutState = "IN_PROGRESS" +) + +// Values returns all known values for DeploymentRolloutState. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (DeploymentRolloutState) Values() []DeploymentRolloutState { + return []DeploymentRolloutState{ + "COMPLETED", + "FAILED", + "IN_PROGRESS", + } +} + +type DesiredStatus string + +// Enum values for DesiredStatus +const ( + DesiredStatusRunning DesiredStatus = "RUNNING" + DesiredStatusPending DesiredStatus = "PENDING" + DesiredStatusStopped DesiredStatus = "STOPPED" +) + +// Values returns all known values for DesiredStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (DesiredStatus) Values() []DesiredStatus { + return []DesiredStatus{ + "RUNNING", + "PENDING", + "STOPPED", + } +} + +type DeviceCgroupPermission string + +// Enum values for DeviceCgroupPermission +const ( + DeviceCgroupPermissionRead DeviceCgroupPermission = "read" + DeviceCgroupPermissionWrite DeviceCgroupPermission = "write" + DeviceCgroupPermissionMknod DeviceCgroupPermission = "mknod" +) + +// Values returns all known values for DeviceCgroupPermission. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (DeviceCgroupPermission) Values() []DeviceCgroupPermission { + return []DeviceCgroupPermission{ + "read", + "write", + "mknod", + } +} + +type EBSResourceType string + +// Enum values for EBSResourceType +const ( + EBSResourceTypeVolume EBSResourceType = "volume" +) + +// Values returns all known values for EBSResourceType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (EBSResourceType) Values() []EBSResourceType { + return []EBSResourceType{ + "volume", + } +} + +type EFSAuthorizationConfigIAM string + +// Enum values for EFSAuthorizationConfigIAM +const ( + EFSAuthorizationConfigIAMEnabled EFSAuthorizationConfigIAM = "ENABLED" + EFSAuthorizationConfigIAMDisabled EFSAuthorizationConfigIAM = "DISABLED" +) + +// Values returns all known values for EFSAuthorizationConfigIAM. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (EFSAuthorizationConfigIAM) Values() []EFSAuthorizationConfigIAM { + return []EFSAuthorizationConfigIAM{ + "ENABLED", + "DISABLED", + } +} + +type EFSTransitEncryption string + +// Enum values for EFSTransitEncryption +const ( + EFSTransitEncryptionEnabled EFSTransitEncryption = "ENABLED" + EFSTransitEncryptionDisabled EFSTransitEncryption = "DISABLED" +) + +// Values returns all known values for EFSTransitEncryption. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (EFSTransitEncryption) Values() []EFSTransitEncryption { + return []EFSTransitEncryption{ + "ENABLED", + "DISABLED", + } +} + +type EnvironmentFileType string + +// Enum values for EnvironmentFileType +const ( + EnvironmentFileTypeS3 EnvironmentFileType = "s3" +) + +// Values returns all known values for EnvironmentFileType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (EnvironmentFileType) Values() []EnvironmentFileType { + return []EnvironmentFileType{ + "s3", + } +} + +type ExecuteCommandLogging string + +// Enum values for ExecuteCommandLogging +const ( + ExecuteCommandLoggingNone ExecuteCommandLogging = "NONE" + ExecuteCommandLoggingDefault ExecuteCommandLogging = "DEFAULT" + ExecuteCommandLoggingOverride ExecuteCommandLogging = "OVERRIDE" +) + +// Values returns all known values for ExecuteCommandLogging. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ExecuteCommandLogging) Values() []ExecuteCommandLogging { + return []ExecuteCommandLogging{ + "NONE", + "DEFAULT", + "OVERRIDE", + } +} + +type FirelensConfigurationType string + +// Enum values for FirelensConfigurationType +const ( + FirelensConfigurationTypeFluentd FirelensConfigurationType = "fluentd" + FirelensConfigurationTypeFluentbit FirelensConfigurationType = "fluentbit" +) + +// Values returns all known values for FirelensConfigurationType. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (FirelensConfigurationType) Values() []FirelensConfigurationType { + return []FirelensConfigurationType{ + "fluentd", + "fluentbit", + } +} + +type HealthStatus string + +// Enum values for HealthStatus +const ( + HealthStatusHealthy HealthStatus = "HEALTHY" + HealthStatusUnhealthy HealthStatus = "UNHEALTHY" + HealthStatusUnknown HealthStatus = "UNKNOWN" +) + +// Values returns all known values for HealthStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (HealthStatus) Values() []HealthStatus { + return []HealthStatus{ + "HEALTHY", + "UNHEALTHY", + "UNKNOWN", + } +} + +type InstanceHealthCheckState string + +// Enum values for InstanceHealthCheckState +const ( + InstanceHealthCheckStateOk InstanceHealthCheckState = "OK" + InstanceHealthCheckStateImpaired InstanceHealthCheckState = "IMPAIRED" + InstanceHealthCheckStateInsufficientData InstanceHealthCheckState = "INSUFFICIENT_DATA" + InstanceHealthCheckStateInitializing InstanceHealthCheckState = "INITIALIZING" +) + +// Values returns all known values for InstanceHealthCheckState. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (InstanceHealthCheckState) Values() []InstanceHealthCheckState { + return []InstanceHealthCheckState{ + "OK", + "IMPAIRED", + "INSUFFICIENT_DATA", + "INITIALIZING", + } +} + +type InstanceHealthCheckType string + +// Enum values for InstanceHealthCheckType +const ( + InstanceHealthCheckTypeContainerRuntime InstanceHealthCheckType = "CONTAINER_RUNTIME" +) + +// Values returns all known values for InstanceHealthCheckType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (InstanceHealthCheckType) Values() []InstanceHealthCheckType { + return []InstanceHealthCheckType{ + "CONTAINER_RUNTIME", + } +} + +type IpcMode string + +// Enum values for IpcMode +const ( + IpcModeHost IpcMode = "host" + IpcModeTask IpcMode = "task" + IpcModeNone IpcMode = "none" +) + +// Values returns all known values for IpcMode. Note that this can be expanded in +// the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (IpcMode) Values() []IpcMode { + return []IpcMode{ + "host", + "task", + "none", + } +} + +type LaunchType string + +// Enum values for LaunchType +const ( + LaunchTypeEc2 LaunchType = "EC2" + LaunchTypeFargate LaunchType = "FARGATE" + LaunchTypeExternal LaunchType = "EXTERNAL" +) + +// Values returns all known values for LaunchType. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (LaunchType) Values() []LaunchType { + return []LaunchType{ + "EC2", + "FARGATE", + "EXTERNAL", + } +} + +type LogDriver string + +// Enum values for LogDriver +const ( + LogDriverJsonFile LogDriver = "json-file" + LogDriverSyslog LogDriver = "syslog" + LogDriverJournald LogDriver = "journald" + LogDriverGelf LogDriver = "gelf" + LogDriverFluentd LogDriver = "fluentd" + LogDriverAwslogs LogDriver = "awslogs" + LogDriverSplunk LogDriver = "splunk" + LogDriverAwsfirelens LogDriver = "awsfirelens" +) + +// Values returns all known values for LogDriver. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (LogDriver) Values() []LogDriver { + return []LogDriver{ + "json-file", + "syslog", + "journald", + "gelf", + "fluentd", + "awslogs", + "splunk", + "awsfirelens", + } +} + +type ManagedAgentName string + +// Enum values for ManagedAgentName +const ( + ManagedAgentNameExecuteCommandAgent ManagedAgentName = "ExecuteCommandAgent" +) + +// Values returns all known values for ManagedAgentName. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ManagedAgentName) Values() []ManagedAgentName { + return []ManagedAgentName{ + "ExecuteCommandAgent", + } +} + +type ManagedDraining string + +// Enum values for ManagedDraining +const ( + ManagedDrainingEnabled ManagedDraining = "ENABLED" + ManagedDrainingDisabled ManagedDraining = "DISABLED" +) + +// Values returns all known values for ManagedDraining. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ManagedDraining) Values() []ManagedDraining { + return []ManagedDraining{ + "ENABLED", + "DISABLED", + } +} + +type ManagedScalingStatus string + +// Enum values for ManagedScalingStatus +const ( + ManagedScalingStatusEnabled ManagedScalingStatus = "ENABLED" + ManagedScalingStatusDisabled ManagedScalingStatus = "DISABLED" +) + +// Values returns all known values for ManagedScalingStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ManagedScalingStatus) Values() []ManagedScalingStatus { + return []ManagedScalingStatus{ + "ENABLED", + "DISABLED", + } +} + +type ManagedTerminationProtection string + +// Enum values for ManagedTerminationProtection +const ( + ManagedTerminationProtectionEnabled ManagedTerminationProtection = "ENABLED" + ManagedTerminationProtectionDisabled ManagedTerminationProtection = "DISABLED" +) + +// Values returns all known values for ManagedTerminationProtection. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ManagedTerminationProtection) Values() []ManagedTerminationProtection { + return []ManagedTerminationProtection{ + "ENABLED", + "DISABLED", + } +} + +type NetworkMode string + +// Enum values for NetworkMode +const ( + NetworkModeBridge NetworkMode = "bridge" + NetworkModeHost NetworkMode = "host" + NetworkModeAwsvpc NetworkMode = "awsvpc" + NetworkModeNone NetworkMode = "none" +) + +// Values returns all known values for NetworkMode. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (NetworkMode) Values() []NetworkMode { + return []NetworkMode{ + "bridge", + "host", + "awsvpc", + "none", + } +} + +type OSFamily string + +// Enum values for OSFamily +const ( + OSFamilyWindowsServer2019Full OSFamily = "WINDOWS_SERVER_2019_FULL" + OSFamilyWindowsServer2019Core OSFamily = "WINDOWS_SERVER_2019_CORE" + OSFamilyWindowsServer2016Full OSFamily = "WINDOWS_SERVER_2016_FULL" + OSFamilyWindowsServer2004Core OSFamily = "WINDOWS_SERVER_2004_CORE" + OSFamilyWindowsServer2022Core OSFamily = "WINDOWS_SERVER_2022_CORE" + OSFamilyWindowsServer2022Full OSFamily = "WINDOWS_SERVER_2022_FULL" + OSFamilyWindowsServer20h2Core OSFamily = "WINDOWS_SERVER_20H2_CORE" + OSFamilyLinux OSFamily = "LINUX" +) + +// Values returns all known values for OSFamily. Note that this can be expanded in +// the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (OSFamily) Values() []OSFamily { + return []OSFamily{ + "WINDOWS_SERVER_2019_FULL", + "WINDOWS_SERVER_2019_CORE", + "WINDOWS_SERVER_2016_FULL", + "WINDOWS_SERVER_2004_CORE", + "WINDOWS_SERVER_2022_CORE", + "WINDOWS_SERVER_2022_FULL", + "WINDOWS_SERVER_20H2_CORE", + "LINUX", + } +} + +type PidMode string + +// Enum values for PidMode +const ( + PidModeHost PidMode = "host" + PidModeTask PidMode = "task" +) + +// Values returns all known values for PidMode. Note that this can be expanded in +// the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (PidMode) Values() []PidMode { + return []PidMode{ + "host", + "task", + } +} + +type PlacementConstraintType string + +// Enum values for PlacementConstraintType +const ( + PlacementConstraintTypeDistinctInstance PlacementConstraintType = "distinctInstance" + PlacementConstraintTypeMemberOf PlacementConstraintType = "memberOf" +) + +// Values returns all known values for PlacementConstraintType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (PlacementConstraintType) Values() []PlacementConstraintType { + return []PlacementConstraintType{ + "distinctInstance", + "memberOf", + } +} + +type PlacementStrategyType string + +// Enum values for PlacementStrategyType +const ( + PlacementStrategyTypeRandom PlacementStrategyType = "random" + PlacementStrategyTypeSpread PlacementStrategyType = "spread" + PlacementStrategyTypeBinpack PlacementStrategyType = "binpack" +) + +// Values returns all known values for PlacementStrategyType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (PlacementStrategyType) Values() []PlacementStrategyType { + return []PlacementStrategyType{ + "random", + "spread", + "binpack", + } +} + +type PlatformDeviceType string + +// Enum values for PlatformDeviceType +const ( + PlatformDeviceTypeGpu PlatformDeviceType = "GPU" +) + +// Values returns all known values for PlatformDeviceType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (PlatformDeviceType) Values() []PlatformDeviceType { + return []PlatformDeviceType{ + "GPU", + } +} + +type PropagateTags string + +// Enum values for PropagateTags +const ( + PropagateTagsTaskDefinition PropagateTags = "TASK_DEFINITION" + PropagateTagsService PropagateTags = "SERVICE" + PropagateTagsNone PropagateTags = "NONE" +) + +// Values returns all known values for PropagateTags. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (PropagateTags) Values() []PropagateTags { + return []PropagateTags{ + "TASK_DEFINITION", + "SERVICE", + "NONE", + } +} + +type ProxyConfigurationType string + +// Enum values for ProxyConfigurationType +const ( + ProxyConfigurationTypeAppmesh ProxyConfigurationType = "APPMESH" +) + +// Values returns all known values for ProxyConfigurationType. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ProxyConfigurationType) Values() []ProxyConfigurationType { + return []ProxyConfigurationType{ + "APPMESH", + } +} + +type ResourceType string + +// Enum values for ResourceType +const ( + ResourceTypeGpu ResourceType = "GPU" + ResourceTypeInferenceAccelerator ResourceType = "InferenceAccelerator" +) + +// Values returns all known values for ResourceType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ResourceType) Values() []ResourceType { + return []ResourceType{ + "GPU", + "InferenceAccelerator", + } +} + +type ScaleUnit string + +// Enum values for ScaleUnit +const ( + ScaleUnitPercent ScaleUnit = "PERCENT" +) + +// Values returns all known values for ScaleUnit. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ScaleUnit) Values() []ScaleUnit { + return []ScaleUnit{ + "PERCENT", + } +} + +type SchedulingStrategy string + +// Enum values for SchedulingStrategy +const ( + SchedulingStrategyReplica SchedulingStrategy = "REPLICA" + SchedulingStrategyDaemon SchedulingStrategy = "DAEMON" +) + +// Values returns all known values for SchedulingStrategy. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (SchedulingStrategy) Values() []SchedulingStrategy { + return []SchedulingStrategy{ + "REPLICA", + "DAEMON", + } +} + +type Scope string + +// Enum values for Scope +const ( + ScopeTask Scope = "task" + ScopeShared Scope = "shared" +) + +// Values returns all known values for Scope. Note that this can be expanded in +// the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (Scope) Values() []Scope { + return []Scope{ + "task", + "shared", + } +} + +type ServiceDeploymentRollbackMonitorsStatus string + +// Enum values for ServiceDeploymentRollbackMonitorsStatus +const ( + ServiceDeploymentRollbackMonitorsStatusTriggered ServiceDeploymentRollbackMonitorsStatus = "TRIGGERED" + ServiceDeploymentRollbackMonitorsStatusMonitoring ServiceDeploymentRollbackMonitorsStatus = "MONITORING" + ServiceDeploymentRollbackMonitorsStatusMonitoringComplete ServiceDeploymentRollbackMonitorsStatus = "MONITORING_COMPLETE" + ServiceDeploymentRollbackMonitorsStatusDisabled ServiceDeploymentRollbackMonitorsStatus = "DISABLED" +) + +// Values returns all known values for ServiceDeploymentRollbackMonitorsStatus. +// Note that this can be expanded in the future, and so it is only as up to date as +// the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ServiceDeploymentRollbackMonitorsStatus) Values() []ServiceDeploymentRollbackMonitorsStatus { + return []ServiceDeploymentRollbackMonitorsStatus{ + "TRIGGERED", + "MONITORING", + "MONITORING_COMPLETE", + "DISABLED", + } +} + +type ServiceDeploymentStatus string + +// Enum values for ServiceDeploymentStatus +const ( + ServiceDeploymentStatusPending ServiceDeploymentStatus = "PENDING" + ServiceDeploymentStatusSuccessful ServiceDeploymentStatus = "SUCCESSFUL" + ServiceDeploymentStatusStopped ServiceDeploymentStatus = "STOPPED" + ServiceDeploymentStatusStopRequested ServiceDeploymentStatus = "STOP_REQUESTED" + ServiceDeploymentStatusInProgress ServiceDeploymentStatus = "IN_PROGRESS" + ServiceDeploymentStatusRollbackInProgress ServiceDeploymentStatus = "ROLLBACK_IN_PROGRESS" + ServiceDeploymentStatusRollbackSuccessful ServiceDeploymentStatus = "ROLLBACK_SUCCESSFUL" + ServiceDeploymentStatusRollbackFailed ServiceDeploymentStatus = "ROLLBACK_FAILED" +) + +// Values returns all known values for ServiceDeploymentStatus. Note that this can +// be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ServiceDeploymentStatus) Values() []ServiceDeploymentStatus { + return []ServiceDeploymentStatus{ + "PENDING", + "SUCCESSFUL", + "STOPPED", + "STOP_REQUESTED", + "IN_PROGRESS", + "ROLLBACK_IN_PROGRESS", + "ROLLBACK_SUCCESSFUL", + "ROLLBACK_FAILED", + } +} + +type ServiceField string + +// Enum values for ServiceField +const ( + ServiceFieldTags ServiceField = "TAGS" +) + +// Values returns all known values for ServiceField. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (ServiceField) Values() []ServiceField { + return []ServiceField{ + "TAGS", + } +} + +type SettingName string + +// Enum values for SettingName +const ( + SettingNameServiceLongArnFormat SettingName = "serviceLongArnFormat" + SettingNameTaskLongArnFormat SettingName = "taskLongArnFormat" + SettingNameContainerInstanceLongArnFormat SettingName = "containerInstanceLongArnFormat" + SettingNameAwsvpcTrunking SettingName = "awsvpcTrunking" + SettingNameContainerInsights SettingName = "containerInsights" + SettingNameFargateFipsMode SettingName = "fargateFIPSMode" + SettingNameTagResourceAuthorization SettingName = "tagResourceAuthorization" + SettingNameFargateTaskRetirementWaitPeriod SettingName = "fargateTaskRetirementWaitPeriod" + SettingNameGuardDutyActivate SettingName = "guardDutyActivate" +) + +// Values returns all known values for SettingName. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (SettingName) Values() []SettingName { + return []SettingName{ + "serviceLongArnFormat", + "taskLongArnFormat", + "containerInstanceLongArnFormat", + "awsvpcTrunking", + "containerInsights", + "fargateFIPSMode", + "tagResourceAuthorization", + "fargateTaskRetirementWaitPeriod", + "guardDutyActivate", + } +} + +type SettingType string + +// Enum values for SettingType +const ( + SettingTypeUser SettingType = "user" + SettingTypeAwsManaged SettingType = "aws_managed" +) + +// Values returns all known values for SettingType. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (SettingType) Values() []SettingType { + return []SettingType{ + "user", + "aws_managed", + } +} + +type SortOrder string + +// Enum values for SortOrder +const ( + SortOrderAsc SortOrder = "ASC" + SortOrderDesc SortOrder = "DESC" +) + +// Values returns all known values for SortOrder. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (SortOrder) Values() []SortOrder { + return []SortOrder{ + "ASC", + "DESC", + } +} + +type StabilityStatus string + +// Enum values for StabilityStatus +const ( + StabilityStatusSteadyState StabilityStatus = "STEADY_STATE" + StabilityStatusStabilizing StabilityStatus = "STABILIZING" +) + +// Values returns all known values for StabilityStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (StabilityStatus) Values() []StabilityStatus { + return []StabilityStatus{ + "STEADY_STATE", + "STABILIZING", + } +} + +type TargetType string + +// Enum values for TargetType +const ( + TargetTypeContainerInstance TargetType = "container-instance" +) + +// Values returns all known values for TargetType. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TargetType) Values() []TargetType { + return []TargetType{ + "container-instance", + } +} + +type TaskDefinitionFamilyStatus string + +// Enum values for TaskDefinitionFamilyStatus +const ( + TaskDefinitionFamilyStatusActive TaskDefinitionFamilyStatus = "ACTIVE" + TaskDefinitionFamilyStatusInactive TaskDefinitionFamilyStatus = "INACTIVE" + TaskDefinitionFamilyStatusAll TaskDefinitionFamilyStatus = "ALL" +) + +// Values returns all known values for TaskDefinitionFamilyStatus. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskDefinitionFamilyStatus) Values() []TaskDefinitionFamilyStatus { + return []TaskDefinitionFamilyStatus{ + "ACTIVE", + "INACTIVE", + "ALL", + } +} + +type TaskDefinitionField string + +// Enum values for TaskDefinitionField +const ( + TaskDefinitionFieldTags TaskDefinitionField = "TAGS" +) + +// Values returns all known values for TaskDefinitionField. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskDefinitionField) Values() []TaskDefinitionField { + return []TaskDefinitionField{ + "TAGS", + } +} + +type TaskDefinitionPlacementConstraintType string + +// Enum values for TaskDefinitionPlacementConstraintType +const ( + TaskDefinitionPlacementConstraintTypeMemberOf TaskDefinitionPlacementConstraintType = "memberOf" +) + +// Values returns all known values for TaskDefinitionPlacementConstraintType. Note +// that this can be expanded in the future, and so it is only as up to date as the +// client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskDefinitionPlacementConstraintType) Values() []TaskDefinitionPlacementConstraintType { + return []TaskDefinitionPlacementConstraintType{ + "memberOf", + } +} + +type TaskDefinitionStatus string + +// Enum values for TaskDefinitionStatus +const ( + TaskDefinitionStatusActive TaskDefinitionStatus = "ACTIVE" + TaskDefinitionStatusInactive TaskDefinitionStatus = "INACTIVE" + TaskDefinitionStatusDeleteInProgress TaskDefinitionStatus = "DELETE_IN_PROGRESS" +) + +// Values returns all known values for TaskDefinitionStatus. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskDefinitionStatus) Values() []TaskDefinitionStatus { + return []TaskDefinitionStatus{ + "ACTIVE", + "INACTIVE", + "DELETE_IN_PROGRESS", + } +} + +type TaskField string + +// Enum values for TaskField +const ( + TaskFieldTags TaskField = "TAGS" +) + +// Values returns all known values for TaskField. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskField) Values() []TaskField { + return []TaskField{ + "TAGS", + } +} + +type TaskFilesystemType string + +// Enum values for TaskFilesystemType +const ( + TaskFilesystemTypeExt3 TaskFilesystemType = "ext3" + TaskFilesystemTypeExt4 TaskFilesystemType = "ext4" + TaskFilesystemTypeXfs TaskFilesystemType = "xfs" + TaskFilesystemTypeNtfs TaskFilesystemType = "ntfs" +) + +// Values returns all known values for TaskFilesystemType. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskFilesystemType) Values() []TaskFilesystemType { + return []TaskFilesystemType{ + "ext3", + "ext4", + "xfs", + "ntfs", + } +} + +type TaskSetField string + +// Enum values for TaskSetField +const ( + TaskSetFieldTags TaskSetField = "TAGS" +) + +// Values returns all known values for TaskSetField. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskSetField) Values() []TaskSetField { + return []TaskSetField{ + "TAGS", + } +} + +type TaskStopCode string + +// Enum values for TaskStopCode +const ( + TaskStopCodeTaskFailedToStart TaskStopCode = "TaskFailedToStart" + TaskStopCodeEssentialContainerExited TaskStopCode = "EssentialContainerExited" + TaskStopCodeUserInitiated TaskStopCode = "UserInitiated" + TaskStopCodeServiceSchedulerInitiated TaskStopCode = "ServiceSchedulerInitiated" + TaskStopCodeSpotInterruption TaskStopCode = "SpotInterruption" + TaskStopCodeTerminationNotice TaskStopCode = "TerminationNotice" +) + +// Values returns all known values for TaskStopCode. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TaskStopCode) Values() []TaskStopCode { + return []TaskStopCode{ + "TaskFailedToStart", + "EssentialContainerExited", + "UserInitiated", + "ServiceSchedulerInitiated", + "SpotInterruption", + "TerminationNotice", + } +} + +type TransportProtocol string + +// Enum values for TransportProtocol +const ( + TransportProtocolTcp TransportProtocol = "tcp" + TransportProtocolUdp TransportProtocol = "udp" +) + +// Values returns all known values for TransportProtocol. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (TransportProtocol) Values() []TransportProtocol { + return []TransportProtocol{ + "tcp", + "udp", + } +} + +type UlimitName string + +// Enum values for UlimitName +const ( + UlimitNameCore UlimitName = "core" + UlimitNameCpu UlimitName = "cpu" + UlimitNameData UlimitName = "data" + UlimitNameFsize UlimitName = "fsize" + UlimitNameLocks UlimitName = "locks" + UlimitNameMemlock UlimitName = "memlock" + UlimitNameMsgqueue UlimitName = "msgqueue" + UlimitNameNice UlimitName = "nice" + UlimitNameNofile UlimitName = "nofile" + UlimitNameNproc UlimitName = "nproc" + UlimitNameRss UlimitName = "rss" + UlimitNameRtprio UlimitName = "rtprio" + UlimitNameRttime UlimitName = "rttime" + UlimitNameSigpending UlimitName = "sigpending" + UlimitNameStack UlimitName = "stack" +) + +// Values returns all known values for UlimitName. Note that this can be expanded +// in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (UlimitName) Values() []UlimitName { + return []UlimitName{ + "core", + "cpu", + "data", + "fsize", + "locks", + "memlock", + "msgqueue", + "nice", + "nofile", + "nproc", + "rss", + "rtprio", + "rttime", + "sigpending", + "stack", + } +} + +type VersionConsistency string + +// Enum values for VersionConsistency +const ( + VersionConsistencyEnabled VersionConsistency = "enabled" + VersionConsistencyDisabled VersionConsistency = "disabled" +) + +// Values returns all known values for VersionConsistency. Note that this can be +// expanded in the future, and so it is only as up to date as the client. +// +// The ordering of this slice is not guaranteed to be stable across updates. +func (VersionConsistency) Values() []VersionConsistency { + return []VersionConsistency{ + "enabled", + "disabled", + } +} diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/errors.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/errors.go new file mode 100644 index 000000000..ec66bf2cf --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/errors.go @@ -0,0 +1,766 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +import ( + "fmt" + smithy "github.com/aws/smithy-go" +) + +// You don't have authorization to perform the requested action. +type AccessDeniedException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *AccessDeniedException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *AccessDeniedException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *AccessDeniedException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "AccessDeniedException" + } + return *e.ErrorCodeOverride +} +func (e *AccessDeniedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// You can apply up to 10 custom attributes for each resource. You can view the +// attributes of a resource with [ListAttributes]. You can remove existing attributes on a +// resource with [DeleteAttributes]. +// +// [ListAttributes]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListAttributes.html +// [DeleteAttributes]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteAttributes.html +type AttributeLimitExceededException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *AttributeLimitExceededException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *AttributeLimitExceededException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *AttributeLimitExceededException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "AttributeLimitExceededException" + } + return *e.ErrorCodeOverride +} +func (e *AttributeLimitExceededException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// Your Amazon Web Services account was blocked. For more information, contact [Amazon Web Services Support]. +// +// [Amazon Web Services Support]: http://aws.amazon.com/contact-us/ +type BlockedException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *BlockedException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *BlockedException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *BlockedException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "BlockedException" + } + return *e.ErrorCodeOverride +} +func (e *BlockedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// These errors are usually caused by a client action. This client action might be +// using an action or resource on behalf of a user that doesn't have permissions to +// use the action or resource. Or, it might be specifying an identifier that isn't +// valid. +// +// The following list includes additional causes for the error: +// +// - The RunTask could not be processed because you use managed scaling and there +// is a capacity error because the quota of tasks in the PROVISIONING per cluster +// has been reached. For information about the service quotas, see [Amazon ECS service quotas]. +// +// [Amazon ECS service quotas]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html +type ClientException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ClientException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ClientException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ClientException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ClientException" + } + return *e.ErrorCodeOverride +} +func (e *ClientException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// You can't delete a cluster that has registered container instances. First, +// deregister the container instances before you can delete the cluster. For more +// information, see [DeregisterContainerInstance]. +// +// [DeregisterContainerInstance]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeregisterContainerInstance.html +type ClusterContainsContainerInstancesException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ClusterContainsContainerInstancesException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ClusterContainsContainerInstancesException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ClusterContainsContainerInstancesException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ClusterContainsContainerInstancesException" + } + return *e.ErrorCodeOverride +} +func (e *ClusterContainsContainerInstancesException) ErrorFault() smithy.ErrorFault { + return smithy.FaultClient +} + +// You can't delete a cluster that contains services. First, update the service to +// reduce its desired task count to 0, and then delete the service. For more +// information, see [UpdateService]and [DeleteService]. +// +// [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html +// [DeleteService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteService.html +type ClusterContainsServicesException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ClusterContainsServicesException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ClusterContainsServicesException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ClusterContainsServicesException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ClusterContainsServicesException" + } + return *e.ErrorCodeOverride +} +func (e *ClusterContainsServicesException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// You can't delete a cluster that has active tasks. +type ClusterContainsTasksException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ClusterContainsTasksException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ClusterContainsTasksException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ClusterContainsTasksException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ClusterContainsTasksException" + } + return *e.ErrorCodeOverride +} +func (e *ClusterContainsTasksException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified cluster wasn't found. You can view your available clusters with [ListClusters]. +// Amazon ECS clusters are Region specific. +// +// [ListClusters]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListClusters.html +type ClusterNotFoundException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ClusterNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ClusterNotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ClusterNotFoundException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ClusterNotFoundException" + } + return *e.ErrorCodeOverride +} +func (e *ClusterNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The RunTask request could not be processed due to conflicts. The provided +// clientToken is already in use with a different RunTask request. The resourceIds +// are the existing task ARNs which are already associated with the clientToken . +// +// To fix this issue: +// +// - Run RunTask with a unique clientToken . +// +// - Run RunTask with the clientToken and the original set of parameters +type ConflictException struct { + Message *string + + ErrorCodeOverride *string + + ResourceIds []string + + noSmithyDocumentSerde +} + +func (e *ConflictException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ConflictException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ConflictException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ConflictException" + } + return *e.ErrorCodeOverride +} +func (e *ConflictException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified parameter isn't valid. Review the available parameters for the +// API request. +type InvalidParameterException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *InvalidParameterException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *InvalidParameterException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *InvalidParameterException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "InvalidParameterException" + } + return *e.ErrorCodeOverride +} +func (e *InvalidParameterException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The limit for the resource was exceeded. +type LimitExceededException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *LimitExceededException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *LimitExceededException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *LimitExceededException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "LimitExceededException" + } + return *e.ErrorCodeOverride +} +func (e *LimitExceededException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// Amazon ECS can't determine the current version of the Amazon ECS container +// agent on the container instance and doesn't have enough information to proceed +// with an update. This could be because the agent running on the container +// instance is a previous or custom version that doesn't use our version +// information. +type MissingVersionException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *MissingVersionException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *MissingVersionException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *MissingVersionException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "MissingVersionException" + } + return *e.ErrorCodeOverride +} +func (e *MissingVersionException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified namespace wasn't found. +type NamespaceNotFoundException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *NamespaceNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *NamespaceNotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *NamespaceNotFoundException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "NamespaceNotFoundException" + } + return *e.ErrorCodeOverride +} +func (e *NamespaceNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// There's no update available for this Amazon ECS container agent. This might be +// because the agent is already running the latest version or because it's so old +// that there's no update path to the current version. +type NoUpdateAvailableException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *NoUpdateAvailableException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *NoUpdateAvailableException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *NoUpdateAvailableException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "NoUpdateAvailableException" + } + return *e.ErrorCodeOverride +} +func (e *NoUpdateAvailableException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified platform version doesn't satisfy the required capabilities of the +// task definition. +type PlatformTaskDefinitionIncompatibilityException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *PlatformTaskDefinitionIncompatibilityException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *PlatformTaskDefinitionIncompatibilityException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *PlatformTaskDefinitionIncompatibilityException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "PlatformTaskDefinitionIncompatibilityException" + } + return *e.ErrorCodeOverride +} +func (e *PlatformTaskDefinitionIncompatibilityException) ErrorFault() smithy.ErrorFault { + return smithy.FaultClient +} + +// The specified platform version doesn't exist. +type PlatformUnknownException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *PlatformUnknownException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *PlatformUnknownException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *PlatformUnknownException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "PlatformUnknownException" + } + return *e.ErrorCodeOverride +} +func (e *PlatformUnknownException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified resource is in-use and can't be removed. +type ResourceInUseException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ResourceInUseException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ResourceInUseException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ResourceInUseException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ResourceInUseException" + } + return *e.ErrorCodeOverride +} +func (e *ResourceInUseException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified resource wasn't found. +type ResourceNotFoundException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ResourceNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ResourceNotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ResourceNotFoundException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ResourceNotFoundException" + } + return *e.ErrorCodeOverride +} +func (e *ResourceNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// These errors are usually caused by a server issue. +type ServerException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ServerException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ServerException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ServerException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ServerException" + } + return *e.ErrorCodeOverride +} +func (e *ServerException) ErrorFault() smithy.ErrorFault { return smithy.FaultServer } + +// The specified service isn't active. You can't update a service that's inactive. +// If you have previously deleted a service, you can re-create it with [CreateService]. +// +// [CreateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html +type ServiceNotActiveException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ServiceNotActiveException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ServiceNotActiveException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ServiceNotActiveException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ServiceNotActiveException" + } + return *e.ErrorCodeOverride +} +func (e *ServiceNotActiveException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified service wasn't found. You can view your available services with [ListServices]. +// Amazon ECS services are cluster specific and Region specific. +// +// [ListServices]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListServices.html +type ServiceNotFoundException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *ServiceNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *ServiceNotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *ServiceNotFoundException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "ServiceNotFoundException" + } + return *e.ErrorCodeOverride +} +func (e *ServiceNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The execute command cannot run. This error can be caused by any of the +// following configuration issues: +// +// - Incorrect IAM permissions +// +// - The SSM agent is not installed or is not running +// +// - There is an interface Amazon VPC endpoint for Amazon ECS, but there is not +// one for Systems Manager Session Manager +// +// For information about how to troubleshoot the issues, see [Troubleshooting issues with ECS Exec] in the Amazon +// Elastic Container Service Developer Guide. +// +// [Troubleshooting issues with ECS Exec]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html +type TargetNotConnectedException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *TargetNotConnectedException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *TargetNotConnectedException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *TargetNotConnectedException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "TargetNotConnectedException" + } + return *e.ErrorCodeOverride +} +func (e *TargetNotConnectedException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified target wasn't found. You can view your available container +// instances with [ListContainerInstances]. Amazon ECS container instances are cluster-specific and +// Region-specific. +// +// [ListContainerInstances]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListContainerInstances.html +type TargetNotFoundException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *TargetNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *TargetNotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *TargetNotFoundException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "TargetNotFoundException" + } + return *e.ErrorCodeOverride +} +func (e *TargetNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified task set wasn't found. You can view your available task sets with [DescribeTaskSets] +// . Task sets are specific to each cluster, service and Region. +// +// [DescribeTaskSets]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTaskSets.html +type TaskSetNotFoundException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *TaskSetNotFoundException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *TaskSetNotFoundException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *TaskSetNotFoundException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "TaskSetNotFoundException" + } + return *e.ErrorCodeOverride +} +func (e *TaskSetNotFoundException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// The specified task isn't supported in this Region. +type UnsupportedFeatureException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *UnsupportedFeatureException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *UnsupportedFeatureException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *UnsupportedFeatureException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "UnsupportedFeatureException" + } + return *e.ErrorCodeOverride +} +func (e *UnsupportedFeatureException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } + +// There's already a current Amazon ECS container agent update in progress on the +// container instance that's specified. If the container agent becomes disconnected +// while it's in a transitional stage, such as PENDING or STAGING , the update +// process can get stuck in that state. However, when the agent reconnects, it +// resumes where it stopped previously. +type UpdateInProgressException struct { + Message *string + + ErrorCodeOverride *string + + noSmithyDocumentSerde +} + +func (e *UpdateInProgressException) Error() string { + return fmt.Sprintf("%s: %s", e.ErrorCode(), e.ErrorMessage()) +} +func (e *UpdateInProgressException) ErrorMessage() string { + if e.Message == nil { + return "" + } + return *e.Message +} +func (e *UpdateInProgressException) ErrorCode() string { + if e == nil || e.ErrorCodeOverride == nil { + return "UpdateInProgressException" + } + return *e.ErrorCodeOverride +} +func (e *UpdateInProgressException) ErrorFault() smithy.ErrorFault { return smithy.FaultClient } diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/types.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/types.go new file mode 100644 index 000000000..21fb301b5 --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/types/types.go @@ -0,0 +1,6036 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package types + +import ( + smithydocument "github.com/aws/smithy-go/document" + "time" +) + +// An object representing a container instance or task attachment. +type Attachment struct { + + // Details of the attachment. + // + // For elastic network interfaces, this includes the network interface ID, the MAC + // address, the subnet ID, and the private IPv4 address. + // + // For Service Connect services, this includes portName , clientAliases , + // discoveryName , and ingressPortOverride . + // + // For Elastic Block Storage, this includes roleArn , deleteOnTermination , + // volumeName , volumeId , and statusReason (only when the attachment fails to + // create or attach). + Details []KeyValuePair + + // The unique identifier for the attachment. + Id *string + + // The status of the attachment. Valid values are PRECREATED , CREATED , ATTACHING + // , ATTACHED , DETACHING , DETACHED , DELETED , and FAILED . + Status *string + + // The type of the attachment, such as ElasticNetworkInterface , Service Connect , + // and AmazonElasticBlockStorage . + Type *string + + noSmithyDocumentSerde +} + +// An object representing a change in state for a task attachment. +type AttachmentStateChange struct { + + // The Amazon Resource Name (ARN) of the attachment. + // + // This member is required. + AttachmentArn *string + + // The status of the attachment. + // + // This member is required. + Status *string + + noSmithyDocumentSerde +} + +// An attribute is a name-value pair that's associated with an Amazon ECS object. +// Use attributes to extend the Amazon ECS data model by adding custom metadata to +// your resources. For more information, see [Attributes]in the Amazon Elastic Container +// Service Developer Guide. +// +// [Attributes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes +type Attribute struct { + + // The name of the attribute. The name must contain between 1 and 128 characters. + // The name may contain letters (uppercase and lowercase), numbers, hyphens (-), + // underscores (_), forward slashes (/), back slashes (\), or periods (.). + // + // This member is required. + Name *string + + // The ID of the target. You can specify the short form ID for a resource or the + // full Amazon Resource Name (ARN). + TargetId *string + + // The type of the target to attach the attribute with. This parameter is required + // if you use the short form ID for a resource instead of the full ARN. + TargetType TargetType + + // The value of the attribute. The value must contain between 1 and 128 + // characters. It can contain letters (uppercase and lowercase), numbers, hyphens + // (-), underscores (_), periods (.), at signs (@), forward slashes (/), back + // slashes (\), colons (:), or spaces. The value can't start or end with a space. + Value *string + + noSmithyDocumentSerde +} + +// The details of the Auto Scaling group for the capacity provider. +type AutoScalingGroupProvider struct { + + // The Amazon Resource Name (ARN) that identifies the Auto Scaling group, or the + // Auto Scaling group name. + // + // This member is required. + AutoScalingGroupArn *string + + // The managed draining option for the Auto Scaling group capacity provider. When + // you enable this, Amazon ECS manages and gracefully drains the EC2 container + // instances that are in the Auto Scaling group capacity provider. + ManagedDraining ManagedDraining + + // The managed scaling settings for the Auto Scaling group capacity provider. + ManagedScaling *ManagedScaling + + // The managed termination protection setting to use for the Auto Scaling group + // capacity provider. This determines whether the Auto Scaling group has managed + // termination protection. The default is off. + // + // When using managed termination protection, managed scaling must also be used + // otherwise managed termination protection doesn't work. + // + // When managed termination protection is on, Amazon ECS prevents the Amazon EC2 + // instances in an Auto Scaling group that contain tasks from being terminated + // during a scale-in action. The Auto Scaling group and each instance in the Auto + // Scaling group must have instance protection from scale-in actions on as well. + // For more information, see [Instance Protection]in the Auto Scaling User Guide. + // + // When managed termination protection is off, your Amazon EC2 instances aren't + // protected from termination when the Auto Scaling group scales in. + // + // [Instance Protection]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection + ManagedTerminationProtection ManagedTerminationProtection + + noSmithyDocumentSerde +} + +// The details of the Auto Scaling group capacity provider to update. +type AutoScalingGroupProviderUpdate struct { + + // The managed draining option for the Auto Scaling group capacity provider. When + // you enable this, Amazon ECS manages and gracefully drains the EC2 container + // instances that are in the Auto Scaling group capacity provider. + ManagedDraining ManagedDraining + + // The managed scaling settings for the Auto Scaling group capacity provider. + ManagedScaling *ManagedScaling + + // The managed termination protection setting to use for the Auto Scaling group + // capacity provider. This determines whether the Auto Scaling group has managed + // termination protection. + // + // When using managed termination protection, managed scaling must also be used + // otherwise managed termination protection doesn't work. + // + // When managed termination protection is on, Amazon ECS prevents the Amazon EC2 + // instances in an Auto Scaling group that contain tasks from being terminated + // during a scale-in action. The Auto Scaling group and each instance in the Auto + // Scaling group must have instance protection from scale-in actions on. For more + // information, see [Instance Protection]in the Auto Scaling User Guide. + // + // When managed termination protection is off, your Amazon EC2 instances aren't + // protected from termination when the Auto Scaling group scales in. + // + // [Instance Protection]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection + ManagedTerminationProtection ManagedTerminationProtection + + noSmithyDocumentSerde +} + +// An object representing the networking details for a task or service. For +// example +// awsVpcConfiguration={subnets=["subnet-12344321"],securityGroups=["sg-12344321"]} +// . +type AwsVpcConfiguration struct { + + // The IDs of the subnets associated with the task or service. There's a limit of + // 16 subnets that can be specified per awsvpcConfiguration . + // + // All specified subnets must be from the same VPC. + // + // This member is required. + Subnets []string + + // Whether the task's elastic network interface receives a public IP address. The + // default value is ENABLED . + AssignPublicIp AssignPublicIp + + // The IDs of the security groups associated with the task or service. If you + // don't specify a security group, the default security group for the VPC is used. + // There's a limit of 5 security groups that can be specified per + // awsvpcConfiguration . + // + // All specified security groups must be from the same VPC. + SecurityGroups []string + + noSmithyDocumentSerde +} + +// The details for a capacity provider. +type CapacityProvider struct { + + // The Auto Scaling group settings for the capacity provider. + AutoScalingGroupProvider *AutoScalingGroupProvider + + // The Amazon Resource Name (ARN) that identifies the capacity provider. + CapacityProviderArn *string + + // The name of the capacity provider. + Name *string + + // The current status of the capacity provider. Only capacity providers in an + // ACTIVE state can be used in a cluster. When a capacity provider is successfully + // deleted, it has an INACTIVE status. + Status CapacityProviderStatus + + // The metadata that you apply to the capacity provider to help you categorize and + // organize it. Each tag consists of a key and an optional value. You define both. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []Tag + + // The update status of the capacity provider. The following are the possible + // states that is returned. + // + // DELETE_IN_PROGRESS The capacity provider is in the process of being deleted. + // + // DELETE_COMPLETE The capacity provider was successfully deleted and has an + // INACTIVE status. + // + // DELETE_FAILED The capacity provider can't be deleted. The update status reason + // provides further details about why the delete failed. + UpdateStatus CapacityProviderUpdateStatus + + // The update status reason. This provides further details about the update status + // for the capacity provider. + UpdateStatusReason *string + + noSmithyDocumentSerde +} + +// The details of a capacity provider strategy. A capacity provider strategy can +// be set when using the [RunTask]or [CreateCluster] APIs or as the default capacity provider strategy for +// a cluster with the CreateCluster API. +// +// Only capacity providers that are already associated with a cluster and have an +// ACTIVE or UPDATING status can be used in a capacity provider strategy. The [PutClusterCapacityProviders] API +// is used to associate a capacity provider with a cluster. +// +// If specifying a capacity provider that uses an Auto Scaling group, the capacity +// provider must already be created. New Auto Scaling group capacity providers can +// be created with the [CreateClusterCapacityProvider]API operation. +// +// To use a Fargate capacity provider, specify either the FARGATE or FARGATE_SPOT +// capacity providers. The Fargate capacity providers are available to all accounts +// and only need to be associated with a cluster to be used in a capacity provider +// strategy. +// +// With FARGATE_SPOT , you can run interruption tolerant tasks at a rate that's +// discounted compared to the FARGATE price. FARGATE_SPOT runs tasks on spare +// compute capacity. When Amazon Web Services needs the capacity back, your tasks +// are interrupted with a two-minute warning. FARGATE_SPOT supports Linux tasks +// with the X86_64 architecture on platform version 1.3.0 or later. FARGATE_SPOT +// supports Linux tasks with the ARM64 architecture on platform version 1.4.0 or +// later. +// +// A capacity provider strategy can contain a maximum of 20 capacity providers. +// +// [PutClusterCapacityProviders]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutClusterCapacityProviders.html +// [RunTask]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html +// [CreateClusterCapacityProvider]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateClusterCapacityProvider.html +// [CreateCluster]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCluster.html +type CapacityProviderStrategyItem struct { + + // The short name of the capacity provider. + // + // This member is required. + CapacityProvider *string + + // The base value designates how many tasks, at a minimum, to run on the specified + // capacity provider. Only one capacity provider in a capacity provider strategy + // can have a base defined. If no value is specified, the default value of 0 is + // used. + Base int32 + + // The weight value designates the relative percentage of the total number of + // tasks launched that should use the specified capacity provider. The weight + // value is taken into consideration after the base value, if defined, is + // satisfied. + // + // If no weight value is specified, the default value of 0 is used. When multiple + // capacity providers are specified within a capacity provider strategy, at least + // one of the capacity providers must have a weight value greater than zero and any + // capacity providers with a weight of 0 can't be used to place tasks. If you + // specify multiple capacity providers in a strategy that all have a weight of 0 , + // any RunTask or CreateService actions using the capacity provider strategy will + // fail. + // + // An example scenario for using weights is defining a strategy that contains two + // capacity providers and both have a weight of 1 , then when the base is + // satisfied, the tasks will be split evenly across the two capacity providers. + // Using that same logic, if you specify a weight of 1 for capacityProviderA and a + // weight of 4 for capacityProviderB, then for every one task that's run using + // capacityProviderA, four tasks would use capacityProviderB. + Weight int32 + + noSmithyDocumentSerde +} + +// A regional grouping of one or more container instances where you can run task +// requests. Each account receives a default cluster the first time you use the +// Amazon ECS service, but you may also create other clusters. Clusters may contain +// more than one instance type simultaneously. +type Cluster struct { + + // The number of services that are running on the cluster in an ACTIVE state. You + // can view these services with [PListServices]. + // + // [PListServices]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListServices.html + ActiveServicesCount int32 + + // The resources attached to a cluster. When using a capacity provider with a + // cluster, the capacity provider and associated resources are returned as cluster + // attachments. + Attachments []Attachment + + // The status of the capacity providers associated with the cluster. The following + // are the states that are returned. + // + // UPDATE_IN_PROGRESS The available capacity providers for the cluster are + // updating. + // + // UPDATE_COMPLETE The capacity providers have successfully updated. + // + // UPDATE_FAILED The capacity provider updates failed. + AttachmentsStatus *string + + // The capacity providers associated with the cluster. + CapacityProviders []string + + // The Amazon Resource Name (ARN) that identifies the cluster. For more + // information about the ARN format, see [Amazon Resource Name (ARN)]in the Amazon ECS Developer Guide. + // + // [Amazon Resource Name (ARN)]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + ClusterArn *string + + // A user-generated string that you use to identify your cluster. + ClusterName *string + + // The execute command configuration for the cluster. + Configuration *ClusterConfiguration + + // The default capacity provider strategy for the cluster. When services or tasks + // are run in the cluster with no launch type or capacity provider strategy + // specified, the default capacity provider strategy is used. + DefaultCapacityProviderStrategy []CapacityProviderStrategyItem + + // The number of tasks in the cluster that are in the PENDING state. + PendingTasksCount int32 + + // The number of container instances registered into the cluster. This includes + // container instances in both ACTIVE and DRAINING status. + RegisteredContainerInstancesCount int32 + + // The number of tasks in the cluster that are in the RUNNING state. + RunningTasksCount int32 + + // Use this parameter to set a default Service Connect namespace. After you set a + // default Service Connect namespace, any new services with Service Connect turned + // on that are created in the cluster are added as client services in the + // namespace. This setting only applies to new services that set the enabled + // parameter to true in the ServiceConnectConfiguration . You can set the namespace + // of each service individually in the ServiceConnectConfiguration to override + // this default parameter. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectDefaults *ClusterServiceConnectDefaults + + // The settings for the cluster. This parameter indicates whether CloudWatch + // Container Insights is on or off for a cluster. + Settings []ClusterSetting + + // Additional information about your clusters that are separated by launch type. + // They include the following: + // + // - runningEC2TasksCount + // + // - RunningFargateTasksCount + // + // - pendingEC2TasksCount + // + // - pendingFargateTasksCount + // + // - activeEC2ServiceCount + // + // - activeFargateServiceCount + // + // - drainingEC2ServiceCount + // + // - drainingFargateServiceCount + Statistics []KeyValuePair + + // The status of the cluster. The following are the possible states that are + // returned. + // + // ACTIVE The cluster is ready to accept tasks and if applicable you can register + // container instances with the cluster. + // + // PROVISIONING The cluster has capacity providers that are associated with it and + // the resources needed for the capacity provider are being created. + // + // DEPROVISIONING The cluster has capacity providers that are associated with it + // and the resources needed for the capacity provider are being deleted. + // + // FAILED The cluster has capacity providers that are associated with it and the + // resources needed for the capacity provider have failed to create. + // + // INACTIVE The cluster has been deleted. Clusters with an INACTIVE status may + // remain discoverable in your account for a period of time. However, this behavior + // is subject to change in the future. We don't recommend that you rely on INACTIVE + // clusters persisting. + Status *string + + // The metadata that you apply to the cluster to help you categorize and organize + // them. Each tag consists of a key and an optional value. You define both. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []Tag + + noSmithyDocumentSerde +} + +// The execute command and managed storage configuration for the cluster. +type ClusterConfiguration struct { + + // The details of the execute command configuration. + ExecuteCommandConfiguration *ExecuteCommandConfiguration + + // The details of the managed storage configuration. + ManagedStorageConfiguration *ManagedStorageConfiguration + + noSmithyDocumentSerde +} + +// Use this parameter to set a default Service Connect namespace. After you set a +// default Service Connect namespace, any new services with Service Connect turned +// on that are created in the cluster are added as client services in the +// namespace. This setting only applies to new services that set the enabled +// parameter to true in the ServiceConnectConfiguration . You can set the namespace +// of each service individually in the ServiceConnectConfiguration to override +// this default parameter. +// +// Tasks that run in a namespace can use short names to connect to services in the +// namespace. Tasks can connect to services across all of the clusters in the +// namespace. Tasks connect through a managed proxy container that collects logs +// and metrics for increased visibility. Only the tasks that Amazon ECS services +// create are supported with Service Connect. For more information, see [Service Connect]in the +// Amazon Elastic Container Service Developer Guide. +// +// [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html +type ClusterServiceConnectDefaults struct { + + // The namespace name or full Amazon Resource Name (ARN) of the Cloud Map + // namespace. When you create a service and don't specify a Service Connect + // configuration, this namespace is used. + Namespace *string + + noSmithyDocumentSerde +} + +// Use this parameter to set a default Service Connect namespace. After you set a +// default Service Connect namespace, any new services with Service Connect turned +// on that are created in the cluster are added as client services in the +// namespace. This setting only applies to new services that set the enabled +// parameter to true in the ServiceConnectConfiguration . You can set the namespace +// of each service individually in the ServiceConnectConfiguration to override +// this default parameter. +// +// Tasks that run in a namespace can use short names to connect to services in the +// namespace. Tasks can connect to services across all of the clusters in the +// namespace. Tasks connect through a managed proxy container that collects logs +// and metrics for increased visibility. Only the tasks that Amazon ECS services +// create are supported with Service Connect. For more information, see [Service Connect]in the +// Amazon Elastic Container Service Developer Guide. +// +// [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html +type ClusterServiceConnectDefaultsRequest struct { + + // The namespace name or full Amazon Resource Name (ARN) of the Cloud Map + // namespace that's used when you create a service and don't specify a Service + // Connect configuration. The namespace name can include up to 1024 characters. The + // name is case-sensitive. The name can't include hyphens (-), tilde (~), greater + // than (>), less than (<), or slash (/). + // + // If you enter an existing namespace name or ARN, then that namespace will be + // used. Any namespace type is supported. The namespace must be in this account and + // this Amazon Web Services Region. + // + // If you enter a new name, a Cloud Map namespace will be created. Amazon ECS + // creates a Cloud Map namespace with the "API calls" method of instance discovery + // only. This instance discovery method is the "HTTP" namespace type in the Command + // Line Interface. Other types of instance discovery aren't used by Service + // Connect. + // + // If you update the cluster with an empty string "" for the namespace name, the + // cluster configuration for Service Connect is removed. Note that the namespace + // will remain in Cloud Map and must be deleted separately. + // + // For more information about Cloud Map, see [Working with Services] in the Cloud Map Developer Guide. + // + // [Working with Services]: https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html + // + // This member is required. + Namespace *string + + noSmithyDocumentSerde +} + +// The settings to use when creating a cluster. This parameter is used to turn on +// CloudWatch Container Insights with enhanced observability or CloudWatch +// Container Insights for a cluster. +// +// Container Insights with enhanced observability provides all the Container +// Insights metrics, plus additional task and container metrics. This version +// supports enhanced observability for Amazon ECS clusters using the Amazon EC2 and +// Fargate launch types. After you configure Container Insights with enhanced +// observability on Amazon ECS, Container Insights auto-collects detailed +// infrastructure telemetry from the cluster level down to the container level in +// your environment and displays these critical performance data in curated +// dashboards removing the heavy lifting in observability set-up. +// +// For more information, see [Monitor Amazon ECS containers using Container Insights with enhanced observability] in the Amazon Elastic Container Service Developer +// Guide. +// +// [Monitor Amazon ECS containers using Container Insights with enhanced observability]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch-container-insights.html +type ClusterSetting struct { + + // The name of the cluster setting. The value is containerInsights . + Name ClusterSettingName + + // The value to set for the cluster setting. The supported values are enhanced , + // enabled , and disabled . + // + // To use Container Insights with enhanced observability, set the containerInsights + // account setting to enhanced . + // + // To use Container Insights, set the containerInsights account setting to enabled . + // + // If a cluster value is specified, it will override the containerInsights value + // set with [PutAccountSetting]or [PutAccountSettingDefault]. + // + // [PutAccountSettingDefault]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSettingDefault.html + // [PutAccountSetting]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAccountSetting.html + Value *string + + noSmithyDocumentSerde +} + +// A Docker container that's part of a task. +type Container struct { + + // The Amazon Resource Name (ARN) of the container. + ContainerArn *string + + // The number of CPU units set for the container. The value is 0 if no value was + // specified in the container definition when the task definition was registered. + Cpu *string + + // The exit code returned from the container. + ExitCode *int32 + + // The IDs of each GPU assigned to the container. + GpuIds []string + + // The health status of the container. If health checks aren't configured for this + // container in its task definition, then it reports the health status as UNKNOWN . + HealthStatus HealthStatus + + // The image used for the container. + Image *string + + // The container image manifest digest. + ImageDigest *string + + // The last known status of the container. + LastStatus *string + + // The details of any Amazon ECS managed agents associated with the container. + ManagedAgents []ManagedAgent + + // The hard limit (in MiB) of memory set for the container. + Memory *string + + // The soft limit (in MiB) of memory set for the container. + MemoryReservation *string + + // The name of the container. + Name *string + + // The network bindings associated with the container. + NetworkBindings []NetworkBinding + + // The network interfaces associated with the container. + NetworkInterfaces []NetworkInterface + + // A short (255 max characters) human-readable string to provide additional + // details about a running or stopped container. + Reason *string + + // The ID of the Docker container. + RuntimeId *string + + // The ARN of the task. + TaskArn *string + + noSmithyDocumentSerde +} + +// Container definitions are used in task definitions to describe the different +// containers that are launched as part of a task. +type ContainerDefinition struct { + + // The command that's passed to the container. This parameter maps to Cmd in the + // docker container create command and the COMMAND parameter to docker run. If + // there are multiple arguments, each argument is a separated string in the array. + Command []string + + // The number of cpu units reserved for the container. This parameter maps to + // CpuShares in the docker container create commandand the --cpu-shares option to + // docker run. + // + // This field is optional for tasks using the Fargate launch type, and the only + // requirement is that the total amount of CPU reserved for all containers within a + // task be lower than the task-level cpu value. + // + // You can determine the number of CPU units that are available per EC2 instance + // type by multiplying the vCPUs listed for that instance type on the [Amazon EC2 Instances]detail page + // by 1,024. + // + // Linux containers share unallocated CPU units with other containers on the + // container instance with the same ratio as their allocated amount. For example, + // if you run a single-container task on a single-core instance type with 512 CPU + // units specified for that container, and that's the only task running on the + // container instance, that container could use the full 1,024 CPU unit share at + // any given time. However, if you launched another copy of the same task on that + // container instance, each task is guaranteed a minimum of 512 CPU units when + // needed. Moreover, each container could float to higher CPU usage if the other + // container was not using it. If both tasks were 100% active all of the time, they + // would be limited to 512 CPU units. + // + // On Linux container instances, the Docker daemon on the container instance uses + // the CPU value to calculate the relative CPU share ratios for running containers. + // The minimum valid CPU share value that the Linux kernel allows is 2, and the + // maximum valid CPU share value that the Linux kernel allows is 262144. However, + // the CPU parameter isn't required, and you can use CPU values below 2 or above + // 262144 in your container definitions. For CPU values below 2 (including null) or + // above 262144, the behavior varies based on your Amazon ECS container agent + // version: + // + // - Agent versions less than or equal to 1.1.0: Null and zero CPU values are + // passed to Docker as 0, which Docker then converts to 1,024 CPU shares. CPU + // values of 1 are passed to Docker as 1, which the Linux kernel converts to two + // CPU shares. + // + // - Agent versions greater than or equal to 1.2.0: Null, zero, and CPU values + // of 1 are passed to Docker as 2. + // + // - Agent versions greater than or equal to 1.84.0: CPU values greater than 256 + // vCPU are passed to Docker as 256, which is equivalent to 262144 CPU shares. + // + // On Windows container instances, the CPU limit is enforced as an absolute limit, + // or a quota. Windows containers only have access to the specified amount of CPU + // that's described in the task definition. A null or zero CPU value is passed to + // Docker as 0 , which Windows interprets as 1% of one CPU. + // + // [Amazon EC2 Instances]: http://aws.amazon.com/ec2/instance-types/ + Cpu int32 + + // A list of ARNs in SSM or Amazon S3 to a credential spec ( CredSpec ) file that + // configures the container for Active Directory authentication. We recommend that + // you use this parameter instead of the dockerSecurityOptions . The maximum number + // of ARNs is 1. + // + // There are two formats for each ARN. + // + // credentialspecdomainless:MyARN You use credentialspecdomainless:MyARN to + // provide a CredSpec with an additional section for a secret in Secrets Manager. + // You provide the login credentials to the domain in the secret. + // + // Each task that runs on any container instance can join different domains. + // + // You can use this format without joining the container instance to a domain. + // + // credentialspec:MyARN You use credentialspec:MyARN to provide a CredSpec for a + // single domain. + // + // You must join the container instance to the domain before you start any tasks + // that use this task definition. + // + // In both formats, replace MyARN with the ARN in SSM or Amazon S3. + // + // If you provide a credentialspecdomainless:MyARN , the credspec must provide a + // ARN in Secrets Manager for a secret containing the username, password, and the + // domain to connect to. For better security, the instance isn't joined to the + // domain for domainless authentication. Other applications on the instance can't + // use the domainless credentials. You can use this parameter to run tasks on the + // same instance, even it the tasks need to join different domains. For more + // information, see [Using gMSAs for Windows Containers]and [Using gMSAs for Linux Containers]. + // + // [Using gMSAs for Windows Containers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html + // [Using gMSAs for Linux Containers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html + CredentialSpecs []string + + // The dependencies defined for container startup and shutdown. A container can + // contain multiple dependencies on other containers in a task definition. When a + // dependency is defined for container startup, for container shutdown it is + // reversed. + // + // For tasks using the EC2 launch type, the container instances require at least + // version 1.26.0 of the container agent to turn on container dependencies. + // However, we recommend using the latest container agent version. For information + // about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent]in + // the Amazon Elastic Container Service Developer Guide. If you're using an Amazon + // ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the + // ecs-init package. If your container instances are launched from version 20190301 + // or later, then they contain the required versions of the container agent and + // ecs-init . For more information, see [Amazon ECS-optimized Linux AMI] in the Amazon Elastic Container Service + // Developer Guide. + // + // For tasks using the Fargate launch type, the task or service requires the + // following platforms: + // + // - Linux platform version 1.3.0 or later. + // + // - Windows platform version 1.0.0 or later. + // + // [Updating the Amazon ECS Container Agent]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html + // [Amazon ECS-optimized Linux AMI]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html + DependsOn []ContainerDependency + + // When this parameter is true, networking is off within the container. This + // parameter maps to NetworkDisabled in the docker container create command. + // + // This parameter is not supported for Windows containers. + DisableNetworking *bool + + // A list of DNS search domains that are presented to the container. This + // parameter maps to DnsSearch in the docker container create command and the + // --dns-search option to docker run. + // + // This parameter is not supported for Windows containers. + DnsSearchDomains []string + + // A list of DNS servers that are presented to the container. This parameter maps + // to Dns in the docker container create command and the --dns option to docker + // run. + // + // This parameter is not supported for Windows containers. + DnsServers []string + + // A key/value map of labels to add to the container. This parameter maps to Labels + // in the docker container create command and the --label option to docker run. + // This parameter requires version 1.18 of the Docker Remote API or greater on your + // container instance. To check the Docker Remote API version on your container + // instance, log in to your container instance and run the following command: sudo + // docker version --format '{{.Server.APIVersion}}' + DockerLabels map[string]string + + // A list of strings to provide custom configuration for multiple security + // systems. This field isn't valid for containers in tasks using the Fargate launch + // type. + // + // For Linux tasks on EC2, this parameter can be used to reference custom labels + // for SELinux and AppArmor multi-level security systems. + // + // For any tasks on EC2, this parameter can be used to reference a credential spec + // file that configures a container for Active Directory authentication. For more + // information, see [Using gMSAs for Windows Containers]and [Using gMSAs for Linux Containers] in the Amazon Elastic Container Service Developer Guide. + // + // This parameter maps to SecurityOpt in the docker container create command and + // the --security-opt option to docker run. + // + // The Amazon ECS container agent running on a container instance must register + // with the ECS_SELINUX_CAPABLE=true or ECS_APPARMOR_CAPABLE=true environment + // variables before containers placed on that instance can use these security + // options. For more information, see [Amazon ECS Container Agent Configuration]in the Amazon Elastic Container Service + // Developer Guide. + // + // Valid values: "no-new-privileges" | "apparmor:PROFILE" | "label:value" | + // "credentialspec:CredentialSpecFilePath" + // + // [Using gMSAs for Windows Containers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/windows-gmsa.html + // [Using gMSAs for Linux Containers]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/linux-gmsa.html + // [Amazon ECS Container Agent Configuration]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html + DockerSecurityOptions []string + + // Early versions of the Amazon ECS container agent don't properly handle + // entryPoint parameters. If you have problems using entryPoint , update your + // container agent or enter your commands and arguments as command array items + // instead. + // + // The entry point that's passed to the container. This parameter maps to + // Entrypoint in the docker container create command and the --entrypoint option + // to docker run. + EntryPoint []string + + // The environment variables to pass to a container. This parameter maps to Env in + // the docker container create command and the --env option to docker run. + // + // We don't recommend that you use plaintext environment variables for sensitive + // information, such as credential data. + Environment []KeyValuePair + + // A list of files containing the environment variables to pass to a container. + // This parameter maps to the --env-file option to docker run. + // + // You can specify up to ten environment files. The file must have a .env file + // extension. Each line in an environment file contains an environment variable in + // VARIABLE=VALUE format. Lines beginning with # are treated as comments and are + // ignored. + // + // If there are environment variables specified using the environment parameter in + // a container definition, they take precedence over the variables contained within + // an environment file. If multiple environment files are specified that contain + // the same variable, they're processed from the top down. We recommend that you + // use unique variable names. For more information, see [Specifying Environment Variables]in the Amazon Elastic + // Container Service Developer Guide. + // + // [Specifying Environment Variables]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/taskdef-envfiles.html + EnvironmentFiles []EnvironmentFile + + // If the essential parameter of a container is marked as true , and that container + // fails or stops for any reason, all other containers that are part of the task + // are stopped. If the essential parameter of a container is marked as false , its + // failure doesn't affect the rest of the containers in a task. If this parameter + // is omitted, a container is assumed to be essential. + // + // All tasks must have at least one essential container. If you have an + // application that's composed of multiple containers, group containers that are + // used for a common purpose into components, and separate the different components + // into multiple task definitions. For more information, see [Application Architecture]in the Amazon Elastic + // Container Service Developer Guide. + // + // [Application Architecture]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/application_architecture.html + Essential *bool + + // A list of hostnames and IP address mappings to append to the /etc/hosts file on + // the container. This parameter maps to ExtraHosts in the docker container create + // command and the --add-host option to docker run. + // + // This parameter isn't supported for Windows containers or tasks that use the + // awsvpc network mode. + ExtraHosts []HostEntry + + // The FireLens configuration for the container. This is used to specify and + // configure a log router for container logs. For more information, see [Custom Log Routing]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Custom Log Routing]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html + FirelensConfiguration *FirelensConfiguration + + // The container health check command and associated configuration parameters for + // the container. This parameter maps to HealthCheck in the docker container + // create command and the HEALTHCHECK parameter of docker run. + HealthCheck *HealthCheck + + // The hostname to use for your container. This parameter maps to Hostname in the + // docker container create command and the --hostname option to docker run. + // + // The hostname parameter is not supported if you're using the awsvpc network mode. + Hostname *string + + // The image used to start a container. This string is passed directly to the + // Docker daemon. By default, images in the Docker Hub registry are available. + // Other repositories are specified with either repository-url/image:tag or + // repository-url/image@digest . Up to 255 letters (uppercase and lowercase), + // numbers, hyphens, underscores, colons, periods, forward slashes, and number + // signs are allowed. This parameter maps to Image in the docker container create + // command and the IMAGE parameter of docker run. + // + // - When a new task starts, the Amazon ECS container agent pulls the latest + // version of the specified image and tag for the container to use. However, + // subsequent updates to a repository image aren't propagated to already running + // tasks. + // + // - Images in Amazon ECR repositories can be specified by either using the full + // registry/repository:tag or registry/repository@digest . For example, + // 012345678910.dkr.ecr..amazonaws.com/:latest or + // 012345678910.dkr.ecr..amazonaws.com/@sha256:94afd1f2e64d908bc90dbca0035a5b567EXAMPLE + // . + // + // - Images in official repositories on Docker Hub use a single name (for + // example, ubuntu or mongo ). + // + // - Images in other repositories on Docker Hub are qualified with an + // organization name (for example, amazon/amazon-ecs-agent ). + // + // - Images in other online repositories are qualified further by a domain name + // (for example, quay.io/assemblyline/ubuntu ). + Image *string + + // When this parameter is true , you can deploy containerized applications that + // require stdin or a tty to be allocated. This parameter maps to OpenStdin in the + // docker container create command and the --interactive option to docker run. + Interactive *bool + + // The links parameter allows containers to communicate with each other without + // the need for port mappings. This parameter is only supported if the network mode + // of a task definition is bridge . The name:internalName construct is analogous + // to name:alias in Docker links. Up to 255 letters (uppercase and lowercase), + // numbers, underscores, and hyphens are allowed.. This parameter maps to Links in + // the docker container create command and the --link option to docker run. + // + // This parameter is not supported for Windows containers. + // + // Containers that are collocated on a single container instance may be able to + // communicate with each other without requiring links or host port mappings. + // Network isolation is achieved on the container instance using security groups + // and VPC settings. + Links []string + + // Linux-specific modifications that are applied to the container, such as Linux + // kernel capabilities. For more information see [KernelCapabilities]. + // + // This parameter is not supported for Windows containers. + // + // [KernelCapabilities]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html + LinuxParameters *LinuxParameters + + // The log configuration specification for the container. + // + // This parameter maps to LogConfig in the docker container create command and the + // --log-driver option to docker run. By default, containers use the same logging + // driver that the Docker daemon uses. However the container can use a different + // logging driver than the Docker daemon by specifying a log driver with this + // parameter in the container definition. To use a different logging driver for a + // container, the log system must be configured properly on the container instance + // (or on a different log server for remote logging options). + // + // Amazon ECS currently supports a subset of the logging drivers available to the + // Docker daemon (shown in the [LogConfiguration]data type). Additional log drivers may be available + // in future releases of the Amazon ECS container agent. + // + // This parameter requires version 1.18 of the Docker Remote API or greater on + // your container instance. To check the Docker Remote API version on your + // container instance, log in to your container instance and run the following + // command: sudo docker version --format '{{.Server.APIVersion}}' + // + // The Amazon ECS container agent running on a container instance must register + // the logging drivers available on that instance with the + // ECS_AVAILABLE_LOGGING_DRIVERS environment variable before containers placed on + // that instance can use these log configuration options. For more information, see + // [Amazon ECS Container Agent Configuration]in the Amazon Elastic Container Service Developer Guide. + // + // [LogConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html + // [Amazon ECS Container Agent Configuration]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html + LogConfiguration *LogConfiguration + + // The amount (in MiB) of memory to present to the container. If your container + // attempts to exceed the memory specified here, the container is killed. The total + // amount of memory reserved for all containers within a task must be lower than + // the task memory value, if one is specified. This parameter maps to Memory in + // the docker container create command and the --memory option to docker run. + // + // If using the Fargate launch type, this parameter is optional. + // + // If using the EC2 launch type, you must specify either a task-level memory value + // or a container-level memory value. If you specify both a container-level memory + // and memoryReservation value, memory must be greater than memoryReservation . If + // you specify memoryReservation , then that value is subtracted from the available + // memory resources for the container instance where the container is placed. + // Otherwise, the value of memory is used. + // + // The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a + // container. So, don't specify less than 6 MiB of memory for your containers. + // + // The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory + // for a container. So, don't specify less than 4 MiB of memory for your + // containers. + Memory *int32 + + // The soft limit (in MiB) of memory to reserve for the container. When system + // memory is under heavy contention, Docker attempts to keep the container memory + // to this soft limit. However, your container can consume more memory when it + // needs to, up to either the hard limit specified with the memory parameter (if + // applicable), or all of the available memory on the container instance, whichever + // comes first. This parameter maps to MemoryReservation in the docker container + // create command and the --memory-reservation option to docker run. + // + // If a task-level memory value is not specified, you must specify a non-zero + // integer for one or both of memory or memoryReservation in a container + // definition. If you specify both, memory must be greater than memoryReservation . + // If you specify memoryReservation , then that value is subtracted from the + // available memory resources for the container instance where the container is + // placed. Otherwise, the value of memory is used. + // + // For example, if your container normally uses 128 MiB of memory, but + // occasionally bursts to 256 MiB of memory for short periods of time, you can set + // a memoryReservation of 128 MiB, and a memory hard limit of 300 MiB. This + // configuration would allow the container to only reserve 128 MiB of memory from + // the remaining resources on the container instance, but also allow the container + // to consume more memory resources when needed. + // + // The Docker 20.10.0 or later daemon reserves a minimum of 6 MiB of memory for a + // container. So, don't specify less than 6 MiB of memory for your containers. + // + // The Docker 19.03.13-ce or earlier daemon reserves a minimum of 4 MiB of memory + // for a container. So, don't specify less than 4 MiB of memory for your + // containers. + MemoryReservation *int32 + + // The mount points for data volumes in your container. + // + // This parameter maps to Volumes in the docker container create command and the + // --volume option to docker run. + // + // Windows containers can mount whole directories on the same drive as + // $env:ProgramData . Windows containers can't mount directories on a different + // drive, and mount point can't be across drives. + MountPoints []MountPoint + + // The name of a container. If you're linking multiple containers together in a + // task definition, the name of one container can be entered in the links of + // another container to connect the containers. Up to 255 letters (uppercase and + // lowercase), numbers, underscores, and hyphens are allowed. This parameter maps + // to name in the docker container create command and the --name option to docker + // run. + Name *string + + // The list of port mappings for the container. Port mappings allow containers to + // access ports on the host container instance to send or receive traffic. + // + // For task definitions that use the awsvpc network mode, only specify the + // containerPort . The hostPort can be left blank or it must be the same value as + // the containerPort . + // + // Port mappings on Windows use the NetNAT gateway address rather than localhost . + // There's no loopback for port mappings on Windows, so you can't access a + // container's mapped port from the host itself. + // + // This parameter maps to PortBindings in the the docker container create command + // and the --publish option to docker run. If the network mode of a task + // definition is set to none , then you can't specify port mappings. If the network + // mode of a task definition is set to host , then host ports must either be + // undefined or they must match the container port in the port mapping. + // + // After a task reaches the RUNNING status, manual and automatic host and + // container port assignments are visible in the Network Bindings section of a + // container description for a selected task in the Amazon ECS console. The + // assignments are also visible in the networkBindings section [DescribeTasks] responses. + // + // [DescribeTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html + PortMappings []PortMapping + + // When this parameter is true, the container is given elevated privileges on the + // host container instance (similar to the root user). This parameter maps to + // Privileged in the docker container create command and the --privileged option + // to docker run + // + // This parameter is not supported for Windows containers or tasks run on Fargate. + Privileged *bool + + // When this parameter is true , a TTY is allocated. This parameter maps to Tty in + // the docker container create command and the --tty option to docker run. + PseudoTerminal *bool + + // When this parameter is true, the container is given read-only access to its + // root file system. This parameter maps to ReadonlyRootfs in the docker container + // create command and the --read-only option to docker run. + // + // This parameter is not supported for Windows containers. + ReadonlyRootFilesystem *bool + + // The private repository authentication credentials to use. + RepositoryCredentials *RepositoryCredentials + + // The type and amount of a resource to assign to a container. The only supported + // resource is a GPU. + ResourceRequirements []ResourceRequirement + + // The restart policy for a container. When you set up a restart policy, Amazon + // ECS can restart the container without needing to replace the task. For more + // information, see [Restart individual containers in Amazon ECS tasks with container restart policies]in the Amazon Elastic Container Service Developer Guide. + // + // [Restart individual containers in Amazon ECS tasks with container restart policies]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-restart-policy.html + RestartPolicy *ContainerRestartPolicy + + // The secrets to pass to the container. For more information, see [Specifying Sensitive Data] in the Amazon + // Elastic Container Service Developer Guide. + // + // [Specifying Sensitive Data]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html + Secrets []Secret + + // Time duration (in seconds) to wait before giving up on resolving dependencies + // for a container. For example, you specify two containers in a task definition + // with containerA having a dependency on containerB reaching a COMPLETE , SUCCESS + // , or HEALTHY status. If a startTimeout value is specified for containerB and it + // doesn't reach the desired status within that time then containerA gives up and + // not start. This results in the task transitioning to a STOPPED state. + // + // When the ECS_CONTAINER_START_TIMEOUT container agent configuration variable is + // used, it's enforced independently from this start timeout value. + // + // For tasks using the Fargate launch type, the task or service requires the + // following platforms: + // + // - Linux platform version 1.3.0 or later. + // + // - Windows platform version 1.0.0 or later. + // + // For tasks using the EC2 launch type, your container instances require at least + // version 1.26.0 of the container agent to use a container start timeout value. + // However, we recommend using the latest container agent version. For information + // about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent]in + // the Amazon Elastic Container Service Developer Guide. If you're using an Amazon + // ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the + // ecs-init package. If your container instances are launched from version 20190301 + // or later, then they contain the required versions of the container agent and + // ecs-init . For more information, see [Amazon ECS-optimized Linux AMI] in the Amazon Elastic Container Service + // Developer Guide. + // + // The valid values for Fargate are 2-120 seconds. + // + // [Updating the Amazon ECS Container Agent]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html + // [Amazon ECS-optimized Linux AMI]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html + StartTimeout *int32 + + // Time duration (in seconds) to wait before the container is forcefully killed if + // it doesn't exit normally on its own. + // + // For tasks using the Fargate launch type, the task or service requires the + // following platforms: + // + // - Linux platform version 1.3.0 or later. + // + // - Windows platform version 1.0.0 or later. + // + // For tasks that use the Fargate launch type, the max stop timeout value is 120 + // seconds and if the parameter is not specified, the default value of 30 seconds + // is used. + // + // For tasks that use the EC2 launch type, if the stopTimeout parameter isn't + // specified, the value set for the Amazon ECS container agent configuration + // variable ECS_CONTAINER_STOP_TIMEOUT is used. If neither the stopTimeout + // parameter or the ECS_CONTAINER_STOP_TIMEOUT agent configuration variable are + // set, then the default values of 30 seconds for Linux containers and 30 seconds + // on Windows containers are used. Your container instances require at least + // version 1.26.0 of the container agent to use a container stop timeout value. + // However, we recommend using the latest container agent version. For information + // about checking your agent version and updating to the latest version, see [Updating the Amazon ECS Container Agent]in + // the Amazon Elastic Container Service Developer Guide. If you're using an Amazon + // ECS-optimized Linux AMI, your instance needs at least version 1.26.0-1 of the + // ecs-init package. If your container instances are launched from version 20190301 + // or later, then they contain the required versions of the container agent and + // ecs-init . For more information, see [Amazon ECS-optimized Linux AMI] in the Amazon Elastic Container Service + // Developer Guide. + // + // The valid values for Fargate are 2-120 seconds. + // + // [Updating the Amazon ECS Container Agent]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html + // [Amazon ECS-optimized Linux AMI]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html + StopTimeout *int32 + + // A list of namespaced kernel parameters to set in the container. This parameter + // maps to Sysctls in the docker container create command and the --sysctl option + // to docker run. For example, you can configure net.ipv4.tcp_keepalive_time + // setting to maintain longer lived connections. + SystemControls []SystemControl + + // A list of ulimits to set in the container. If a ulimit value is specified in a + // task definition, it overrides the default values set by Docker. This parameter + // maps to Ulimits in the docker container create command and the --ulimit option + // to docker run. Valid naming values are displayed in the [Ulimit]data type. + // + // Amazon ECS tasks hosted on Fargate use the default resource limit values set by + // the operating system with the exception of the nofile resource limit parameter + // which Fargate overrides. The nofile resource limit sets a restriction on the + // number of open files that a container can use. The default nofile soft limit is + // 65535 and the default hard limit is 65535 . + // + // This parameter requires version 1.18 of the Docker Remote API or greater on + // your container instance. To check the Docker Remote API version on your + // container instance, log in to your container instance and run the following + // command: sudo docker version --format '{{.Server.APIVersion}}' + // + // This parameter is not supported for Windows containers. + // + // [Ulimit]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html + Ulimits []Ulimit + + // The user to use inside the container. This parameter maps to User in the docker + // container create command and the --user option to docker run. + // + // When running tasks using the host network mode, don't run containers using the + // root user (UID 0). We recommend using a non-root user for better security. + // + // You can specify the user using the following formats. If specifying a UID or + // GID, you must specify it as a positive integer. + // + // - user + // + // - user:group + // + // - uid + // + // - uid:gid + // + // - user:gid + // + // - uid:group + // + // This parameter is not supported for Windows containers. + User *string + + // Specifies whether Amazon ECS will resolve the container image tag provided in + // the container definition to an image digest. By default, the value is enabled . + // If you set the value for a container as disabled , Amazon ECS will not resolve + // the provided container image tag to a digest and will use the original image URI + // specified in the container definition for deployment. For more information about + // container image resolution, see [Container image resolution]in the Amazon ECS Developer Guide. + // + // [Container image resolution]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html#deployment-container-image-stability + VersionConsistency VersionConsistency + + // Data volumes to mount from another container. This parameter maps to VolumesFrom + // in the docker container create command and the --volumes-from option to docker + // run. + VolumesFrom []VolumeFrom + + // The working directory to run commands inside the container in. This parameter + // maps to WorkingDir in the docker container create command and the --workdir + // option to docker run. + WorkingDirectory *string + + noSmithyDocumentSerde +} + +// The dependencies defined for container startup and shutdown. A container can +// contain multiple dependencies. When a dependency is defined for container +// startup, for container shutdown it is reversed. +// +// Your Amazon ECS container instances require at least version 1.26.0 of the +// container agent to use container dependencies. However, we recommend using the +// latest container agent version. For information about checking your agent +// version and updating to the latest version, see [Updating the Amazon ECS Container Agent]in the Amazon Elastic Container +// Service Developer Guide. If you're using an Amazon ECS-optimized Linux AMI, your +// instance needs at least version 1.26.0-1 of the ecs-init package. If your +// container instances are launched from version 20190301 or later, then they +// contain the required versions of the container agent and ecs-init . For more +// information, see [Amazon ECS-optimized Linux AMI]in the Amazon Elastic Container Service Developer Guide. +// +// For tasks that use the Fargate launch type, the task or service requires the +// following platforms: +// +// - Linux platform version 1.3.0 or later. +// +// - Windows platform version 1.0.0 or later. +// +// For more information about how to create a container dependency, see [Container dependency] in the +// Amazon Elastic Container Service Developer Guide. +// +// [Updating the Amazon ECS Container Agent]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html +// [Amazon ECS-optimized Linux AMI]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html +// [Container dependency]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/example_task_definitions.html#example_task_definition-containerdependency +type ContainerDependency struct { + + // The dependency condition of the container. The following are the available + // conditions and their behavior: + // + // - START - This condition emulates the behavior of links and volumes today. It + // validates that a dependent container is started before permitting other + // containers to start. + // + // - COMPLETE - This condition validates that a dependent container runs to + // completion (exits) before permitting other containers to start. This can be + // useful for nonessential containers that run a script and then exit. This + // condition can't be set on an essential container. + // + // - SUCCESS - This condition is the same as COMPLETE , but it also requires that + // the container exits with a zero status. This condition can't be set on an + // essential container. + // + // - HEALTHY - This condition validates that the dependent container passes its + // Docker health check before permitting other containers to start. This requires + // that the dependent container has health checks configured. This condition is + // confirmed only at task startup. + // + // This member is required. + Condition ContainerCondition + + // The name of a container. + // + // This member is required. + ContainerName *string + + noSmithyDocumentSerde +} + +// The details about the container image a service revision uses. +// +// To ensure that all tasks in a service use the same container image, Amazon ECS +// resolves container image names and any image tags specified in the task +// definition to container image digests. +// +// After the container image digest has been established, Amazon ECS uses the +// digest to start any other desired tasks, and for any future service and service +// revision updates. This leads to all tasks in a service always running identical +// container images, resulting in version consistency for your software. For more +// information, see [Container image resolution]in the Amazon ECS Developer Guide. +// +// [Container image resolution]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html#deployment-container-image-stability +type ContainerImage struct { + + // The name of the container. + ContainerName *string + + // The container image. + Image *string + + // The container image digest. + ImageDigest *string + + noSmithyDocumentSerde +} + +// An Amazon EC2 or External instance that's running the Amazon ECS agent and has +// been registered with a cluster. +type ContainerInstance struct { + + // This parameter returns true if the agent is connected to Amazon ECS. An + // instance with an agent that may be unhealthy or stopped return false . Only + // instances connected to an agent can accept task placement requests. + AgentConnected bool + + // The status of the most recent agent update. If an update wasn't ever requested, + // this value is NULL . + AgentUpdateStatus AgentUpdateStatus + + // The resources attached to a container instance, such as an elastic network + // interface. + Attachments []Attachment + + // The attributes set for the container instance, either by the Amazon ECS + // container agent at instance registration or manually with the [PutAttributes]operation. + // + // [PutAttributes]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAttributes.html + Attributes []Attribute + + // The capacity provider that's associated with the container instance. + CapacityProviderName *string + + // The Amazon Resource Name (ARN) of the container instance. For more information + // about the ARN format, see [Amazon Resource Name (ARN)]in the Amazon ECS Developer Guide. + // + // [Amazon Resource Name (ARN)]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + ContainerInstanceArn *string + + // The ID of the container instance. For Amazon EC2 instances, this value is the + // Amazon EC2 instance ID. For external instances, this value is the Amazon Web + // Services Systems Manager managed instance ID. + Ec2InstanceId *string + + // An object representing the health status of the container instance. + HealthStatus *ContainerInstanceHealthStatus + + // The number of tasks on the container instance that are in the PENDING status. + PendingTasksCount int32 + + // The Unix timestamp for the time when the container instance was registered. + RegisteredAt *time.Time + + // For CPU and memory resource types, this parameter describes the amount of each + // resource that was available on the container instance when the container agent + // registered it with Amazon ECS. This value represents the total amount of CPU and + // memory that can be allocated on this container instance to tasks. For port + // resource types, this parameter describes the ports that were reserved by the + // Amazon ECS container agent when it registered the container instance with Amazon + // ECS. + RegisteredResources []Resource + + // For CPU and memory resource types, this parameter describes the remaining CPU + // and memory that wasn't already allocated to tasks and is therefore available for + // new tasks. For port resource types, this parameter describes the ports that were + // reserved by the Amazon ECS container agent (at instance registration time) and + // any task containers that have reserved port mappings on the host (with the host + // or bridge network mode). Any port that's not specified here is available for + // new tasks. + RemainingResources []Resource + + // The number of tasks on the container instance that have a desired status ( + // desiredStatus ) of RUNNING . + RunningTasksCount int32 + + // The status of the container instance. The valid values are REGISTERING , + // REGISTRATION_FAILED , ACTIVE , INACTIVE , DEREGISTERING , or DRAINING . + // + // If your account has opted in to the awsvpcTrunking account setting, then any + // newly registered container instance will transition to a REGISTERING status + // while the trunk elastic network interface is provisioned for the instance. If + // the registration fails, the instance will transition to a REGISTRATION_FAILED + // status. You can describe the container instance and see the reason for failure + // in the statusReason parameter. Once the container instance is terminated, the + // instance transitions to a DEREGISTERING status while the trunk elastic network + // interface is deprovisioned. The instance then transitions to an INACTIVE status. + // + // The ACTIVE status indicates that the container instance can accept tasks. The + // DRAINING indicates that new tasks aren't placed on the container instance and + // any service tasks running on the container instance are removed if possible. For + // more information, see [Container instance draining]in the Amazon Elastic Container Service Developer Guide. + // + // [Container instance draining]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-instance-draining.html + Status *string + + // The reason that the container instance reached its current status. + StatusReason *string + + // The metadata that you apply to the container instance to help you categorize + // and organize them. Each tag consists of a key and an optional value. You define + // both. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []Tag + + // The version counter for the container instance. Every time a container instance + // experiences a change that triggers a CloudWatch event, the version counter is + // incremented. If you're replicating your Amazon ECS container instance state with + // CloudWatch Events, you can compare the version of a container instance reported + // by the Amazon ECS APIs with the version reported in CloudWatch Events for the + // container instance (inside the detail object) to verify that the version in + // your event stream is current. + Version int64 + + // The version information for the Amazon ECS container agent and Docker daemon + // running on the container instance. + VersionInfo *VersionInfo + + noSmithyDocumentSerde +} + +// An object representing the health status of the container instance. +type ContainerInstanceHealthStatus struct { + + // An array of objects representing the details of the container instance health + // status. + Details []InstanceHealthCheckResult + + // The overall health status of the container instance. This is an aggregate + // status of all container instance health checks. + OverallStatus InstanceHealthCheckState + + noSmithyDocumentSerde +} + +// The overrides that are sent to a container. An empty container override can be +// passed in. An example of an empty container override is {"containerOverrides": +// [ ] } . If a non-empty container override is specified, the name parameter must +// be included. +// +// You can use Secrets Manager or Amazon Web Services Systems Manager Parameter +// Store to store the sensitive data. For more information, see [Retrieve secrets through environment variables]in the Amazon ECS +// Developer Guide. +// +// [Retrieve secrets through environment variables]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/secrets-envvar.html +type ContainerOverride struct { + + // The command to send to the container that overrides the default command from + // the Docker image or the task definition. You must also specify a container name. + Command []string + + // The number of cpu units reserved for the container, instead of the default + // value from the task definition. You must also specify a container name. + Cpu *int32 + + // The environment variables to send to the container. You can add new environment + // variables, which are added to the container at launch, or you can override the + // existing environment variables from the Docker image or the task definition. You + // must also specify a container name. + Environment []KeyValuePair + + // A list of files containing the environment variables to pass to a container, + // instead of the value from the container definition. + EnvironmentFiles []EnvironmentFile + + // The hard limit (in MiB) of memory to present to the container, instead of the + // default value from the task definition. If your container attempts to exceed the + // memory specified here, the container is killed. You must also specify a + // container name. + Memory *int32 + + // The soft limit (in MiB) of memory to reserve for the container, instead of the + // default value from the task definition. You must also specify a container name. + MemoryReservation *int32 + + // The name of the container that receives the override. This parameter is + // required if any override is specified. + Name *string + + // The type and amount of a resource to assign to a container, instead of the + // default value from the task definition. The only supported resource is a GPU. + ResourceRequirements []ResourceRequirement + + noSmithyDocumentSerde +} + +// You can enable a restart policy for each container defined in your task +// definition, to overcome transient failures faster and maintain task +// availability. When you enable a restart policy for a container, Amazon ECS can +// restart the container if it exits, without needing to replace the task. For more +// information, see [Restart individual containers in Amazon ECS tasks with container restart policies]in the Amazon Elastic Container Service Developer Guide. +// +// [Restart individual containers in Amazon ECS tasks with container restart policies]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-restart-policy.html +type ContainerRestartPolicy struct { + + // Specifies whether a restart policy is enabled for the container. + // + // This member is required. + Enabled *bool + + // A list of exit codes that Amazon ECS will ignore and not attempt a restart on. + // You can specify a maximum of 50 container exit codes. By default, Amazon ECS + // does not ignore any exit codes. + IgnoredExitCodes []int32 + + // A period of time (in seconds) that the container must run for before a restart + // can be attempted. A container can be restarted only once every + // restartAttemptPeriod seconds. If a container isn't able to run for this time + // period and exits early, it will not be restarted. You can set a minimum + // restartAttemptPeriod of 60 seconds and a maximum restartAttemptPeriod of 1800 + // seconds. By default, a container must run for 300 seconds before it can be + // restarted. + RestartAttemptPeriod *int32 + + noSmithyDocumentSerde +} + +// An object that represents a change in state for a container. +type ContainerStateChange struct { + + // The name of the container. + ContainerName *string + + // The exit code for the container, if the state change is a result of the + // container exiting. + ExitCode *int32 + + // The container image SHA 256 digest. + ImageDigest *string + + // Any network bindings that are associated with the container. + NetworkBindings []NetworkBinding + + // The reason for the state change. + Reason *string + + // The ID of the Docker container. + RuntimeId *string + + // The status of the container. + Status *string + + noSmithyDocumentSerde +} + +// The optional filter to narrow the ListServiceDeployment results. +// +// If you do not specify a value, service deployments that were created before the +// current time are included in the result. +type CreatedAt struct { + + // Include service deployments in the result that were created after this time. + // The format is yyyy-MM-dd HH:mm:ss.SSSSSS. + After *time.Time + + // Include service deployments in the result that were created before this time. + // The format is yyyy-MM-dd HH:mm:ss.SSSSSS. + Before *time.Time + + noSmithyDocumentSerde +} + +// The details of an Amazon ECS service deployment. This is used only when a +// service uses the ECS deployment controller type. +type Deployment struct { + + // The capacity provider strategy that the deployment is using. + CapacityProviderStrategy []CapacityProviderStrategyItem + + // The Unix timestamp for the time when the service deployment was created. + CreatedAt *time.Time + + // The most recent desired count of tasks that was specified for the service to + // deploy or maintain. + DesiredCount int32 + + // The number of consecutively failed tasks in the deployment. A task is + // considered a failure if the service scheduler can't launch the task, the task + // doesn't transition to a RUNNING state, or if it fails any of its defined health + // checks and is stopped. + // + // Once a service deployment has one or more successfully running tasks, the + // failed task count resets to zero and stops being evaluated. + FailedTasks int32 + + // The Fargate ephemeral storage settings for the deployment. + FargateEphemeralStorage *DeploymentEphemeralStorage + + // The ID of the deployment. + Id *string + + // The launch type the tasks in the service are using. For more information, see [Amazon ECS Launch Types] + // in the Amazon Elastic Container Service Developer Guide. + // + // [Amazon ECS Launch Types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + LaunchType LaunchType + + // The VPC subnet and security group configuration for tasks that receive their + // own elastic network interface by using the awsvpc networking mode. + NetworkConfiguration *NetworkConfiguration + + // The number of tasks in the deployment that are in the PENDING status. + PendingCount int32 + + // The operating system that your tasks in the service, or tasks are running on. A + // platform family is specified only for tasks using the Fargate launch type. + // + // All tasks that run as part of this service must use the same platformFamily + // value as the service, for example, LINUX. . + PlatformFamily *string + + // The platform version that your tasks in the service run on. A platform version + // is only specified for tasks using the Fargate launch type. If one isn't + // specified, the LATEST platform version is used. For more information, see [Fargate Platform Versions] in + // the Amazon Elastic Container Service Developer Guide. + // + // [Fargate Platform Versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + PlatformVersion *string + + // The rolloutState of a service is only returned for services that use the + // rolling update ( ECS ) deployment type that aren't behind a Classic Load + // Balancer. + // + // The rollout state of the deployment. When a service deployment is started, it + // begins in an IN_PROGRESS state. When the service reaches a steady state, the + // deployment transitions to a COMPLETED state. If the service fails to reach a + // steady state and circuit breaker is turned on, the deployment transitions to a + // FAILED state. A deployment in FAILED state doesn't launch any new tasks. For + // more information, see [DeploymentCircuitBreaker]. + // + // [DeploymentCircuitBreaker]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeploymentCircuitBreaker.html + RolloutState DeploymentRolloutState + + // A description of the rollout state of a deployment. + RolloutStateReason *string + + // The number of tasks in the deployment that are in the RUNNING status. + RunningCount int32 + + // The details of the Service Connect configuration that's used by this + // deployment. Compare the configuration between multiple deployments when + // troubleshooting issues with new deployments. + // + // The configuration for this service to discover and connect to services, and be + // discovered by, and connected from, other services within a namespace. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectConfiguration *ServiceConnectConfiguration + + // The list of Service Connect resources that are associated with this deployment. + // Each list entry maps a discovery name to a Cloud Map service name. + ServiceConnectResources []ServiceConnectServiceResource + + // The status of the deployment. The following describes each state. + // + // PRIMARY The most recent deployment of a service. + // + // ACTIVE A service deployment that still has running tasks, but are in the + // process of being replaced with a new PRIMARY deployment. + // + // INACTIVE A deployment that has been completely replaced. + Status *string + + // The most recent task definition that was specified for the tasks in the service + // to use. + TaskDefinition *string + + // The Unix timestamp for the time when the service deployment was last updated. + UpdatedAt *time.Time + + // The details of the volume that was configuredAtLaunch . You can configure + // different settings like the size, throughput, volumeType, and ecryption in [ServiceManagedEBSVolumeConfiguration]. + // The name of the volume must match the name from the task definition. + // + // [ServiceManagedEBSVolumeConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceManagedEBSVolumeConfiguration.html + VolumeConfigurations []ServiceVolumeConfiguration + + // The VPC Lattice configuration for the service deployment. + VpcLatticeConfigurations []VpcLatticeConfiguration + + noSmithyDocumentSerde +} + +// One of the methods which provide a way for you to quickly identify when a +// deployment has failed, and then to optionally roll back the failure to the last +// working deployment. +// +// When the alarms are generated, Amazon ECS sets the service deployment to +// failed. Set the rollback parameter to have Amazon ECS to roll back your service +// to the last completed deployment after a failure. +// +// You can only use the DeploymentAlarms method to detect failures when the +// DeploymentController is set to ECS (rolling update). +// +// For more information, see [Rolling update] in the Amazon Elastic Container Service Developer +// Guide . +// +// [Rolling update]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html +type DeploymentAlarms struct { + + // One or more CloudWatch alarm names. Use a "," to separate the alarms. + // + // This member is required. + AlarmNames []string + + // Determines whether to use the CloudWatch alarm option in the service deployment + // process. + // + // This member is required. + Enable bool + + // Determines whether to configure Amazon ECS to roll back the service if a + // service deployment fails. If rollback is used, when a service deployment fails, + // the service is rolled back to the last deployment that completed successfully. + // + // This member is required. + Rollback bool + + noSmithyDocumentSerde +} + +// The deployment circuit breaker can only be used for services using the rolling +// update ( ECS ) deployment type. +// +// The deployment circuit breaker determines whether a service deployment will +// fail if the service can't reach a steady state. If it is turned on, a service +// deployment will transition to a failed state and stop launching new tasks. You +// can also configure Amazon ECS to roll back your service to the last completed +// deployment after a failure. For more information, see [Rolling update]in the Amazon Elastic +// Container Service Developer Guide. +// +// For more information about API failure reasons, see [API failure reasons] in the Amazon Elastic +// Container Service Developer Guide. +// +// [API failure reasons]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html +// [Rolling update]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html +type DeploymentCircuitBreaker struct { + + // Determines whether to use the deployment circuit breaker logic for the service. + // + // This member is required. + Enable bool + + // Determines whether to configure Amazon ECS to roll back the service if a + // service deployment fails. If rollback is on, when a service deployment fails, + // the service is rolled back to the last deployment that completed successfully. + // + // This member is required. + Rollback bool + + noSmithyDocumentSerde +} + +// Optional deployment parameters that control how many tasks run during a +// deployment and the ordering of stopping and starting tasks. +type DeploymentConfiguration struct { + + // Information about the CloudWatch alarms. + Alarms *DeploymentAlarms + + // The deployment circuit breaker can only be used for services using the rolling + // update ( ECS ) deployment type. + // + // The deployment circuit breaker determines whether a service deployment will + // fail if the service can't reach a steady state. If you use the deployment + // circuit breaker, a service deployment will transition to a failed state and stop + // launching new tasks. If you use the rollback option, when a service deployment + // fails, the service is rolled back to the last deployment that completed + // successfully. For more information, see [Rolling update]in the Amazon Elastic Container Service + // Developer Guide + // + // [Rolling update]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html + DeploymentCircuitBreaker *DeploymentCircuitBreaker + + // If a service is using the rolling update ( ECS ) deployment type, the + // maximumPercent parameter represents an upper limit on the number of your + // service's tasks that are allowed in the RUNNING or PENDING state during a + // deployment, as a percentage of the desiredCount (rounded down to the nearest + // integer). This parameter enables you to define the deployment batch size. For + // example, if your service is using the REPLICA service scheduler and has a + // desiredCount of four tasks and a maximumPercent value of 200%, the scheduler + // may start four new tasks before stopping the four older tasks (provided that the + // cluster resources required to do this are available). The default maximumPercent + // value for a service using the REPLICA service scheduler is 200%. + // + // The Amazon ECS scheduler uses this parameter to replace unhealthy tasks by + // starting replacement tasks first and then stopping the unhealthy tasks, as long + // as cluster resources for starting replacement tasks are available. For more + // information about how the scheduler replaces unhealthy tasks, see [Amazon ECS services]. + // + // If a service is using either the blue/green ( CODE_DEPLOY ) or EXTERNAL + // deployment types, and tasks in the service use the EC2 launch type, the maximum + // percent value is set to the default value. The maximum percent value is used to + // define the upper limit on the number of the tasks in the service that remain in + // the RUNNING state while the container instances are in the DRAINING state. + // + // You can't specify a custom maximumPercent value for a service that uses either + // the blue/green ( CODE_DEPLOY ) or EXTERNAL deployment types and has tasks that + // use the EC2 launch type. + // + // If the service uses either the blue/green ( CODE_DEPLOY ) or EXTERNAL + // deployment types, and the tasks in the service use the Fargate launch type, the + // maximum percent value is not used. The value is still returned when describing + // your service. + // + // [Amazon ECS services]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html + MaximumPercent *int32 + + // If a service is using the rolling update ( ECS ) deployment type, the + // minimumHealthyPercent represents a lower limit on the number of your service's + // tasks that must remain in the RUNNING state during a deployment, as a + // percentage of the desiredCount (rounded up to the nearest integer). This + // parameter enables you to deploy without using additional cluster capacity. For + // example, if your service has a desiredCount of four tasks and a + // minimumHealthyPercent of 50%, the service scheduler may stop two existing tasks + // to free up cluster capacity before starting two new tasks. + // + // If any tasks are unhealthy and if maximumPercent doesn't allow the Amazon ECS + // scheduler to start replacement tasks, the scheduler stops the unhealthy tasks + // one-by-one — using the minimumHealthyPercent as a constraint — to clear up + // capacity to launch replacement tasks. For more information about how the + // scheduler replaces unhealthy tasks, see [Amazon ECS services]. + // + // For services that do not use a load balancer, the following should be noted: + // + // - A service is considered healthy if all essential containers within the + // tasks in the service pass their health checks. + // + // - If a task has no essential containers with a health check defined, the + // service scheduler will wait for 40 seconds after a task reaches a RUNNING + // state before the task is counted towards the minimum healthy percent total. + // + // - If a task has one or more essential containers with a health check defined, + // the service scheduler will wait for the task to reach a healthy status before + // counting it towards the minimum healthy percent total. A task is considered + // healthy when all essential containers within the task have passed their health + // checks. The amount of time the service scheduler can wait for is determined by + // the container health check settings. + // + // For services that do use a load balancer, the following should be noted: + // + // - If a task has no essential containers with a health check defined, the + // service scheduler will wait for the load balancer target group health check to + // return a healthy status before counting the task towards the minimum healthy + // percent total. + // + // - If a task has an essential container with a health check defined, the + // service scheduler will wait for both the task to reach a healthy status and the + // load balancer target group health check to return a healthy status before + // counting the task towards the minimum healthy percent total. + // + // The default value for a replica service for minimumHealthyPercent is 100%. The + // default minimumHealthyPercent value for a service using the DAEMON service + // schedule is 0% for the CLI, the Amazon Web Services SDKs, and the APIs and 50% + // for the Amazon Web Services Management Console. + // + // The minimum number of healthy tasks during a deployment is the desiredCount + // multiplied by the minimumHealthyPercent /100, rounded up to the nearest integer + // value. + // + // If a service is using either the blue/green ( CODE_DEPLOY ) or EXTERNAL + // deployment types and is running tasks that use the EC2 launch type, the minimum + // healthy percent value is set to the default value. The minimum healthy percent + // value is used to define the lower limit on the number of the tasks in the + // service that remain in the RUNNING state while the container instances are in + // the DRAINING state. + // + // You can't specify a custom minimumHealthyPercent value for a service that uses + // either the blue/green ( CODE_DEPLOY ) or EXTERNAL deployment types and has + // tasks that use the EC2 launch type. + // + // If a service is using either the blue/green ( CODE_DEPLOY ) or EXTERNAL + // deployment types and is running tasks that use the Fargate launch type, the + // minimum healthy percent value is not used, although it is returned when + // describing your service. + // + // [Amazon ECS services]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html + MinimumHealthyPercent *int32 + + noSmithyDocumentSerde +} + +// The deployment controller to use for the service. +type DeploymentController struct { + + // The deployment controller type to use. + // + // There are three deployment controller types available: + // + // ECS The rolling update ( ECS ) deployment type involves replacing the current + // running version of the container with the latest version. The number of + // containers Amazon ECS adds or removes from the service during a rolling update + // is controlled by adjusting the minimum and maximum number of healthy tasks + // allowed during a service deployment, as specified in the [DeploymentConfiguration]. + // + // For more information about rolling deployments, see [Deploy Amazon ECS services by replacing tasks] in the Amazon Elastic + // Container Service Developer Guide. + // + // CODE_DEPLOY The blue/green ( CODE_DEPLOY ) deployment type uses the blue/green + // deployment model powered by CodeDeploy, which allows you to verify a new + // deployment of a service before sending production traffic to it. + // + // For more information about blue/green deployments, see [Validate the state of an Amazon ECS service before deployment] in the Amazon Elastic + // Container Service Developer Guide. + // + // EXTERNAL The external ( EXTERNAL ) deployment type enables you to use any + // third-party deployment controller for full control over the deployment process + // for an Amazon ECS service. + // + // For more information about external deployments, see [Deploy Amazon ECS services using a third-party controller] in the Amazon Elastic + // Container Service Developer Guide. + // + // [Validate the state of an Amazon ECS service before deployment]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html + // [Deploy Amazon ECS services by replacing tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-ecs.html + // [Deploy Amazon ECS services using a third-party controller]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-external.html + // [DeploymentConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeploymentConfiguration.html + // + // This member is required. + Type DeploymentControllerType + + noSmithyDocumentSerde +} + +// The amount of ephemeral storage to allocate for the deployment. +type DeploymentEphemeralStorage struct { + + // Specify an Key Management Service key ID to encrypt the ephemeral storage for + // deployment. + KmsKeyId *string + + noSmithyDocumentSerde +} + +// An object representing a container instance host device. +type Device struct { + + // The path for the device on the host container instance. + // + // This member is required. + HostPath *string + + // The path inside the container at which to expose the host device. + ContainerPath *string + + // The explicit permissions to provide to the container for the device. By + // default, the container has permissions for read , write , and mknod for the + // device. + Permissions []DeviceCgroupPermission + + noSmithyDocumentSerde +} + +// This parameter is specified when you're using Docker volumes. Docker volumes +// are only supported when you're using the EC2 launch type. Windows containers +// only support the use of the local driver. To use bind mounts, specify a host +// instead. +type DockerVolumeConfiguration struct { + + // If this value is true , the Docker volume is created if it doesn't already exist. + // + // This field is only used if the scope is shared . + Autoprovision *bool + + // The Docker volume driver to use. The driver value must match the driver name + // provided by Docker because it is used for task placement. If the driver was + // installed using the Docker plugin CLI, use docker plugin ls to retrieve the + // driver name from your container instance. If the driver was installed using + // another method, use Docker plugin discovery to retrieve the driver name. This + // parameter maps to Driver in the docker container create command and the xxdriver + // option to docker volume create. + Driver *string + + // A map of Docker driver-specific options passed through. This parameter maps to + // DriverOpts in the docker create-volume command and the xxopt option to docker + // volume create. + DriverOpts map[string]string + + // Custom metadata to add to your Docker volume. This parameter maps to Labels in + // the docker container create command and the xxlabel option to docker volume + // create. + Labels map[string]string + + // The scope for the Docker volume that determines its lifecycle. Docker volumes + // that are scoped to a task are automatically provisioned when the task starts + // and destroyed when the task stops. Docker volumes that are scoped as shared + // persist after the task stops. + Scope Scope + + noSmithyDocumentSerde +} + +// The tag specifications of an Amazon EBS volume. +type EBSTagSpecification struct { + + // The type of volume resource. + // + // This member is required. + ResourceType EBSResourceType + + // Determines whether to propagate the tags from the task definition to 
the + // Amazon EBS volume. Tags can only propagate to a SERVICE specified in + // ServiceVolumeConfiguration . If no value is specified, the tags aren't + // 
propagated. + PropagateTags PropagateTags + + // The tags applied to this Amazon EBS volume. AmazonECSCreated and + // AmazonECSManaged are reserved tags that can't be used. + Tags []Tag + + noSmithyDocumentSerde +} + +// The authorization configuration details for the Amazon EFS file system. +type EFSAuthorizationConfig struct { + + // The Amazon EFS access point ID to use. If an access point is specified, the + // root directory value specified in the EFSVolumeConfiguration must either be + // omitted or set to / which will enforce the path set on the EFS access point. If + // an access point is used, transit encryption must be on in the + // EFSVolumeConfiguration . For more information, see [Working with Amazon EFS access points] in the Amazon Elastic File + // System User Guide. + // + // [Working with Amazon EFS access points]: https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html + AccessPointId *string + + // Determines whether to use the Amazon ECS task role defined in a task definition + // when mounting the Amazon EFS file system. If it is turned on, transit encryption + // must be turned on in the EFSVolumeConfiguration . If this parameter is omitted, + // the default value of DISABLED is used. For more information, see [Using Amazon EFS access points] in the Amazon + // Elastic Container Service Developer Guide. + // + // [Using Amazon EFS access points]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html#efs-volume-accesspoints + Iam EFSAuthorizationConfigIAM + + noSmithyDocumentSerde +} + +// This parameter is specified when you're using an Amazon Elastic File System +// file system for task storage. For more information, see [Amazon EFS volumes]in the Amazon Elastic +// Container Service Developer Guide. +// +// [Amazon EFS volumes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/efs-volumes.html +type EFSVolumeConfiguration struct { + + // The Amazon EFS file system ID to use. + // + // This member is required. + FileSystemId *string + + // The authorization configuration details for the Amazon EFS file system. + AuthorizationConfig *EFSAuthorizationConfig + + // The directory within the Amazon EFS file system to mount as the root directory + // inside the host. If this parameter is omitted, the root of the Amazon EFS volume + // will be used. Specifying / will have the same effect as omitting this parameter. + // + // If an EFS access point is specified in the authorizationConfig , the root + // directory parameter must either be omitted or set to / which will enforce the + // path set on the EFS access point. + RootDirectory *string + + // Determines whether to use encryption for Amazon EFS data in transit between the + // Amazon ECS host and the Amazon EFS server. Transit encryption must be turned on + // if Amazon EFS IAM authorization is used. If this parameter is omitted, the + // default value of DISABLED is used. For more information, see [Encrypting data in transit] in the Amazon + // Elastic File System User Guide. + // + // [Encrypting data in transit]: https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html + TransitEncryption EFSTransitEncryption + + // The port to use when sending encrypted data between the Amazon ECS host and the + // Amazon EFS server. If you do not specify a transit encryption port, it will use + // the port selection strategy that the Amazon EFS mount helper uses. For more + // information, see [EFS mount helper]in the Amazon Elastic File System User Guide. + // + // [EFS mount helper]: https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html + TransitEncryptionPort *int32 + + noSmithyDocumentSerde +} + +// A list of files containing the environment variables to pass to a container. +// You can specify up to ten environment files. The file must have a .env file +// extension. Each line in an environment file should contain an environment +// variable in VARIABLE=VALUE format. Lines beginning with # are treated as +// comments and are ignored. +// +// If there are environment variables specified using the environment parameter in +// a container definition, they take precedence over the variables contained within +// an environment file. If multiple environment files are specified that contain +// the same variable, they're processed from the top down. We recommend that you +// use unique variable names. For more information, see [Use a file to pass environment variables to a container]in the Amazon Elastic +// Container Service Developer Guide. +// +// Environment variable files are objects in Amazon S3 and all Amazon S3 security +// considerations apply. +// +// You must use the following platforms for the Fargate launch type: +// +// - Linux platform version 1.4.0 or later. +// +// - Windows platform version 1.0.0 or later. +// +// Consider the following when using the Fargate launch type: +// +// - The file is handled like a native Docker env-file. +// +// - There is no support for shell escape handling. +// +// - The container entry point interperts the VARIABLE values. +// +// [Use a file to pass environment variables to a container]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/use-environment-file.html +type EnvironmentFile struct { + + // The file type to use. Environment files are objects in Amazon S3. The only + // supported value is s3 . + // + // This member is required. + Type EnvironmentFileType + + // The Amazon Resource Name (ARN) of the Amazon S3 object containing the + // environment variable file. + // + // This member is required. + Value *string + + noSmithyDocumentSerde +} + +// The amount of ephemeral storage to allocate for the task. This parameter is +// used to expand the total amount of ephemeral storage available, beyond the +// default amount, for tasks hosted on Fargate. For more information, see [Using data volumes in tasks]in the +// Amazon ECS Developer Guide;. +// +// For tasks using the Fargate launch type, the task requires the following +// platforms: +// +// - Linux platform version 1.4.0 or later. +// +// - Windows platform version 1.0.0 or later. +// +// [Using data volumes in tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html +type EphemeralStorage struct { + + // The total amount, in GiB, of ephemeral storage to set for the task. The minimum + // supported value is 21 GiB and the maximum supported value is 200 GiB. + // + // This member is required. + SizeInGiB int32 + + noSmithyDocumentSerde +} + +// The details of the execute command configuration. +type ExecuteCommandConfiguration struct { + + // Specify an Key Management Service key ID to encrypt the data between the local + // client and the container. + KmsKeyId *string + + // The log configuration for the results of the execute command actions. The logs + // can be sent to CloudWatch Logs or an Amazon S3 bucket. When logging=OVERRIDE is + // specified, a logConfiguration must be provided. + LogConfiguration *ExecuteCommandLogConfiguration + + // The log setting to use for redirecting logs for your execute command results. + // The following log settings are available. + // + // - NONE : The execute command session is not logged. + // + // - DEFAULT : The awslogs configuration in the task definition is used. If no + // logging parameter is specified, it defaults to this value. If no awslogs log + // driver is configured in the task definition, the output won't be logged. + // + // - OVERRIDE : Specify the logging details as a part of logConfiguration . If + // the OVERRIDE logging option is specified, the logConfiguration is required. + Logging ExecuteCommandLogging + + noSmithyDocumentSerde +} + +// The log configuration for the results of the execute command actions. The logs +// can be sent to CloudWatch Logs or an Amazon S3 bucket. +type ExecuteCommandLogConfiguration struct { + + // Determines whether to use encryption on the CloudWatch logs. If not specified, + // encryption will be off. + CloudWatchEncryptionEnabled bool + + // The name of the CloudWatch log group to send logs to. + // + // The CloudWatch log group must already be created. + CloudWatchLogGroupName *string + + // The name of the S3 bucket to send logs to. + // + // The S3 bucket must already be created. + S3BucketName *string + + // Determines whether to use encryption on the S3 logs. If not specified, + // encryption is not used. + S3EncryptionEnabled bool + + // An optional folder in the S3 bucket to place logs in. + S3KeyPrefix *string + + noSmithyDocumentSerde +} + +// A failed resource. For a list of common causes, see [API failure reasons] in the Amazon Elastic +// Container Service Developer Guide. +// +// [API failure reasons]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/api_failures_messages.html +type Failure struct { + + // The Amazon Resource Name (ARN) of the failed resource. + Arn *string + + // The details of the failure. + Detail *string + + // The reason for the failure. + Reason *string + + noSmithyDocumentSerde +} + +// The FireLens configuration for the container. This is used to specify and +// configure a log router for container logs. For more information, see [Custom log routing]in the +// Amazon Elastic Container Service Developer Guide. +// +// [Custom log routing]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html +type FirelensConfiguration struct { + + // The log router to use. The valid values are fluentd or fluentbit . + // + // This member is required. + Type FirelensConfigurationType + + // The options to use when configuring the log router. This field is optional and + // can be used to specify a custom configuration file or to add additional + // metadata, such as the task, task definition, cluster, and container instance + // details to the log event. If specified, the syntax to use is + // "options":{"enable-ecs-log-metadata":"true|false","config-file-type:"s3|file","config-file-value":"arn:aws:s3:::mybucket/fluent.conf|filepath"} + // . For more information, see [Creating a task definition that uses a FireLens configuration]in the Amazon Elastic Container Service Developer + // Guide. + // + // Tasks hosted on Fargate only support the file configuration file type. + // + // [Creating a task definition that uses a FireLens configuration]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html#firelens-taskdef + Options map[string]string + + noSmithyDocumentSerde +} + +// The authorization configuration details for Amazon FSx for Windows File Server +// file system. See [FSxWindowsFileServerVolumeConfiguration]in the Amazon ECS API Reference. +// +// For more information and the input format, see [Amazon FSx for Windows File Server Volumes] in the Amazon Elastic Container +// Service Developer Guide. +// +// [Amazon FSx for Windows File Server Volumes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html +// [FSxWindowsFileServerVolumeConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_FSxWindowsFileServerVolumeConfiguration.html +type FSxWindowsFileServerAuthorizationConfig struct { + + // The authorization credential option to use. The authorization credential + // options can be provided using either the Amazon Resource Name (ARN) of an + // Secrets Manager secret or SSM Parameter Store parameter. The ARN refers to the + // stored credentials. + // + // This member is required. + CredentialsParameter *string + + // A fully qualified domain name hosted by an [Directory Service] Managed Microsoft AD (Active + // Directory) or self-hosted AD on Amazon EC2. + // + // [Directory Service]: https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_microsoft_ad.html + // + // This member is required. + Domain *string + + noSmithyDocumentSerde +} + +// This parameter is specified when you're using [Amazon FSx for Windows File Server] file system for task storage. +// +// For more information and the input format, see [Amazon FSx for Windows File Server volumes] in the Amazon Elastic Container +// Service Developer Guide. +// +// [Amazon FSx for Windows File Server]: https://docs.aws.amazon.com/fsx/latest/WindowsGuide/what-is.html +// [Amazon FSx for Windows File Server volumes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/wfsx-volumes.html +type FSxWindowsFileServerVolumeConfiguration struct { + + // The authorization configuration details for the Amazon FSx for Windows File + // Server file system. + // + // This member is required. + AuthorizationConfig *FSxWindowsFileServerAuthorizationConfig + + // The Amazon FSx for Windows File Server file system ID to use. + // + // This member is required. + FileSystemId *string + + // The directory within the Amazon FSx for Windows File Server file system to + // mount as the root directory inside the host. + // + // This member is required. + RootDirectory *string + + noSmithyDocumentSerde +} + +// An object representing a container health check. Health check parameters that +// are specified in a container definition override any Docker health checks that +// exist in the container image (such as those specified in a parent image or from +// the image's Dockerfile). This configuration maps to the HEALTHCHECK parameter +// of docker run. +// +// The Amazon ECS container agent only monitors and reports on the health checks +// specified in the task definition. Amazon ECS does not monitor Docker health +// checks that are embedded in a container image and not specified in the container +// definition. Health check parameters that are specified in a container definition +// override any Docker health checks that exist in the container image. +// +// You can view the health status of both individual containers and a task with +// the DescribeTasks API operation or when viewing the task details in the console. +// +// The health check is designed to make sure that your containers survive agent +// restarts, upgrades, or temporary unavailability. +// +// Amazon ECS performs health checks on containers with the default that launched +// the container instance or the task. +// +// The following describes the possible healthStatus values for a container: +// +// - HEALTHY -The container health check has passed successfully. +// +// - UNHEALTHY -The container health check has failed. +// +// - UNKNOWN -The container health check is being evaluated, there's no container +// health check defined, or Amazon ECS doesn't have the health status of the +// container. +// +// The following describes the possible healthStatus values based on the container +// health checker status of essential containers in the task with the following +// priority order (high to low): +// +// - UNHEALTHY -One or more essential containers have failed their health check. +// +// - UNKNOWN -Any essential container running within the task is in an UNKNOWN +// state and no other essential containers have an UNHEALTHY state. +// +// - HEALTHY -All essential containers within the task have passed their health +// checks. +// +// Consider the following task health example with 2 containers. +// +// - If Container1 is UNHEALTHY and Container2 is UNKNOWN , the task health is +// UNHEALTHY . +// +// - If Container1 is UNHEALTHY and Container2 is HEALTHY , the task health is +// UNHEALTHY . +// +// - If Container1 is HEALTHY and Container2 is UNKNOWN , the task health is +// UNKNOWN . +// +// - If Container1 is HEALTHY and Container2 is HEALTHY , the task health is +// HEALTHY . +// +// Consider the following task health example with 3 containers. +// +// - If Container1 is UNHEALTHY and Container2 is UNKNOWN , and Container3 is +// UNKNOWN , the task health is UNHEALTHY . +// +// - If Container1 is UNHEALTHY and Container2 is UNKNOWN , and Container3 is +// HEALTHY , the task health is UNHEALTHY . +// +// - If Container1 is UNHEALTHY and Container2 is HEALTHY , and Container3 is +// HEALTHY , the task health is UNHEALTHY . +// +// - If Container1 is HEALTHY and Container2 is UNKNOWN , and Container3 is +// HEALTHY , the task health is UNKNOWN . +// +// - If Container1 is HEALTHY and Container2 is UNKNOWN , and Container3 is +// UNKNOWN , the task health is UNKNOWN . +// +// - If Container1 is HEALTHY and Container2 is HEALTHY , and Container3 is +// HEALTHY , the task health is HEALTHY . +// +// If a task is run manually, and not as part of a service, the task will continue +// its lifecycle regardless of its health status. For tasks that are part of a +// service, if the task reports as unhealthy then the task will be stopped and the +// service scheduler will replace it. +// +// The following are notes about container health check support: +// +// - If the Amazon ECS container agent becomes disconnected from the Amazon ECS +// service, this won't cause a container to transition to an UNHEALTHY status. +// This is by design, to ensure that containers remain running during agent +// restarts or temporary unavailability. The health check status is the "last heard +// from" response from the Amazon ECS agent, so if the container was considered +// HEALTHY prior to the disconnect, that status will remain until the agent +// reconnects and another health check occurs. There are no assumptions made about +// the status of the container health checks. +// +// - Container health checks require version 1.17.0 or greater of the Amazon ECS +// container agent. For more information, see [Updating the Amazon ECS container agent]. +// +// - Container health checks are supported for Fargate tasks if you're using +// platform version 1.1.0 or greater. For more information, see [Fargate platform versions]. +// +// - Container health checks aren't supported for tasks that are part of a +// service that's configured to use a Classic Load Balancer. +// +// [Updating the Amazon ECS container agent]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html +// [Fargate platform versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html +type HealthCheck struct { + + // A string array representing the command that the container runs to determine if + // it is healthy. The string array must start with CMD to run the command + // arguments directly, or CMD-SHELL to run the command with the container's + // default shell. + // + // When you use the Amazon Web Services Management Console JSON panel, the Command + // Line Interface, or the APIs, enclose the list of commands in double quotes and + // brackets. + // + // [ "CMD-SHELL", "curl -f http://localhost/ || exit 1" ] + // + // You don't include the double quotes and brackets when you use the Amazon Web + // Services Management Console. + // + // CMD-SHELL, curl -f http://localhost/ || exit 1 + // + // An exit code of 0 indicates success, and non-zero exit code indicates failure. + // For more information, see HealthCheck in the docker container create command. + // + // This member is required. + Command []string + + // The time period in seconds between each health check execution. You may specify + // between 5 and 300 seconds. The default value is 30 seconds. + Interval *int32 + + // The number of times to retry a failed health check before the container is + // considered unhealthy. You may specify between 1 and 10 retries. The default + // value is 3. + Retries *int32 + + // The optional grace period to provide containers time to bootstrap before failed + // health checks count towards the maximum number of retries. You can specify + // between 0 and 300 seconds. By default, the startPeriod is off. + // + // If a health check succeeds within the startPeriod , then the container is + // considered healthy and any subsequent failures count toward the maximum number + // of retries. + StartPeriod *int32 + + // The time period in seconds to wait for a health check to succeed before it is + // considered a failure. You may specify between 2 and 60 seconds. The default + // value is 5. + Timeout *int32 + + noSmithyDocumentSerde +} + +// Hostnames and IP address entries that are added to the /etc/hosts file of a +// container via the extraHosts parameter of its [ContainerDefinition]. +// +// [ContainerDefinition]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html +type HostEntry struct { + + // The hostname to use in the /etc/hosts entry. + // + // This member is required. + Hostname *string + + // The IP address to use in the /etc/hosts entry. + // + // This member is required. + IpAddress *string + + noSmithyDocumentSerde +} + +// Details on a container instance bind mount host volume. +type HostVolumeProperties struct { + + // When the host parameter is used, specify a sourcePath to declare the path on + // the host container instance that's presented to the container. If this parameter + // is empty, then the Docker daemon has assigned a host path for you. If the host + // parameter contains a sourcePath file location, then the data volume persists at + // the specified location on the host container instance until you delete it + // manually. If the sourcePath value doesn't exist on the host container instance, + // the Docker daemon creates it. If the location does exist, the contents of the + // source path folder are exported. + // + // If you're using the Fargate launch type, the sourcePath parameter is not + // supported. + SourcePath *string + + noSmithyDocumentSerde +} + +// Details on an Elastic Inference accelerator. For more information, see [Working with Amazon Elastic Inference on Amazon ECS] in the +// Amazon Elastic Container Service Developer Guide. +// +// [Working with Amazon Elastic Inference on Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html +type InferenceAccelerator struct { + + // The Elastic Inference accelerator device name. The deviceName must also be + // referenced in a container definition as a [ResourceRequirement]. + // + // [ResourceRequirement]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ResourceRequirement.html + // + // This member is required. + DeviceName *string + + // The Elastic Inference accelerator type to use. + // + // This member is required. + DeviceType *string + + noSmithyDocumentSerde +} + +// Details on an Elastic Inference accelerator task override. This parameter is +// used to override the Elastic Inference accelerator specified in the task +// definition. For more information, see [Working with Amazon Elastic Inference on Amazon ECS]in the Amazon Elastic Container Service +// Developer Guide. +// +// [Working with Amazon Elastic Inference on Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html +type InferenceAcceleratorOverride struct { + + // The Elastic Inference accelerator device name to override for the task. This + // parameter must match a deviceName specified in the task definition. + DeviceName *string + + // The Elastic Inference accelerator type to use. + DeviceType *string + + noSmithyDocumentSerde +} + +// An object representing the result of a container instance health status check. +type InstanceHealthCheckResult struct { + + // The Unix timestamp for when the container instance health status last changed. + LastStatusChange *time.Time + + // The Unix timestamp for when the container instance health status was last + // updated. + LastUpdated *time.Time + + // The container instance health status. + Status InstanceHealthCheckState + + // The type of container instance health status that was verified. + Type InstanceHealthCheckType + + noSmithyDocumentSerde +} + +// The Linux capabilities to add or remove from the default Docker configuration +// for a container defined in the task definition. For more detailed information +// about these Linux capabilities, see the [capabilities(7)]Linux manual page. +// +// [capabilities(7)]: http://man7.org/linux/man-pages/man7/capabilities.7.html +type KernelCapabilities struct { + + // The Linux capabilities for the container that have been added to the default + // configuration provided by Docker. This parameter maps to CapAdd in the docker + // container create command and the --cap-add option to docker run. + // + // Tasks launched on Fargate only support adding the SYS_PTRACE kernel capability. + // + // Valid values: "ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | + // "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" + // | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | + // "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | + // "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | + // "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | + // "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | + // "SYSLOG" | "WAKE_ALARM" + Add []string + + // The Linux capabilities for the container that have been removed from the + // default configuration provided by Docker. This parameter maps to CapDrop in the + // docker container create command and the --cap-drop option to docker run. + // + // Valid values: "ALL" | "AUDIT_CONTROL" | "AUDIT_WRITE" | "BLOCK_SUSPEND" | + // "CHOWN" | "DAC_OVERRIDE" | "DAC_READ_SEARCH" | "FOWNER" | "FSETID" | "IPC_LOCK" + // | "IPC_OWNER" | "KILL" | "LEASE" | "LINUX_IMMUTABLE" | "MAC_ADMIN" | + // "MAC_OVERRIDE" | "MKNOD" | "NET_ADMIN" | "NET_BIND_SERVICE" | "NET_BROADCAST" | + // "NET_RAW" | "SETFCAP" | "SETGID" | "SETPCAP" | "SETUID" | "SYS_ADMIN" | + // "SYS_BOOT" | "SYS_CHROOT" | "SYS_MODULE" | "SYS_NICE" | "SYS_PACCT" | + // "SYS_PTRACE" | "SYS_RAWIO" | "SYS_RESOURCE" | "SYS_TIME" | "SYS_TTY_CONFIG" | + // "SYSLOG" | "WAKE_ALARM" + Drop []string + + noSmithyDocumentSerde +} + +// A key-value pair object. +type KeyValuePair struct { + + // The name of the key-value pair. For environment variables, this is the name of + // the environment variable. + Name *string + + // The value of the key-value pair. For environment variables, this is the value + // of the environment variable. + Value *string + + noSmithyDocumentSerde +} + +// The Linux-specific options that are applied to the container, such as Linux [KernelCapabilities]. +// +// [KernelCapabilities]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html +type LinuxParameters struct { + + // The Linux capabilities for the container that are added to or dropped from the + // default configuration provided by Docker. + // + // For tasks that use the Fargate launch type, capabilities is supported for all + // platform versions but the add parameter is only supported if using platform + // version 1.4.0 or later. + Capabilities *KernelCapabilities + + // Any host devices to expose to the container. This parameter maps to Devices in + // the docker container create command and the --device option to docker run. + // + // If you're using tasks that use the Fargate launch type, the devices parameter + // isn't supported. + Devices []Device + + // Run an init process inside the container that forwards signals and reaps + // processes. This parameter maps to the --init option to docker run. This + // parameter requires version 1.25 of the Docker Remote API or greater on your + // container instance. To check the Docker Remote API version on your container + // instance, log in to your container instance and run the following command: sudo + // docker version --format '{{.Server.APIVersion}}' + InitProcessEnabled *bool + + // The total amount of swap memory (in MiB) a container can use. This parameter + // will be translated to the --memory-swap option to docker run where the value + // would be the sum of the container memory plus the maxSwap value. + // + // If a maxSwap value of 0 is specified, the container will not use swap. Accepted + // values are 0 or any positive integer. If the maxSwap parameter is omitted, the + // container will use the swap configuration for the container instance it is + // running on. A maxSwap value must be set for the swappiness parameter to be used. + // + // If you're using tasks that use the Fargate launch type, the maxSwap parameter + // isn't supported. + // + // If you're using tasks on Amazon Linux 2023 the swappiness parameter isn't + // supported. + MaxSwap *int32 + + // The value for the size (in MiB) of the /dev/shm volume. This parameter maps to + // the --shm-size option to docker run. + // + // If you are using tasks that use the Fargate launch type, the sharedMemorySize + // parameter is not supported. + SharedMemorySize *int32 + + // This allows you to tune a container's memory swappiness behavior. A swappiness + // value of 0 will cause swapping to not happen unless absolutely necessary. A + // swappiness value of 100 will cause pages to be swapped very aggressively. + // Accepted values are whole numbers between 0 and 100 . If the swappiness + // parameter is not specified, a default value of 60 is used. If a value is not + // specified for maxSwap then this parameter is ignored. This parameter maps to + // the --memory-swappiness option to docker run. + // + // If you're using tasks that use the Fargate launch type, the swappiness + // parameter isn't supported. + // + // If you're using tasks on Amazon Linux 2023 the swappiness parameter isn't + // supported. + Swappiness *int32 + + // The container path, mount options, and size (in MiB) of the tmpfs mount. This + // parameter maps to the --tmpfs option to docker run. + // + // If you're using tasks that use the Fargate launch type, the tmpfs parameter + // isn't supported. + Tmpfs []Tmpfs + + noSmithyDocumentSerde +} + +// The load balancer configuration to use with a service or task set. +// +// When you add, update, or remove a load balancer configuration, Amazon ECS +// starts a new deployment with the updated Elastic Load Balancing configuration. +// This causes tasks to register to and deregister from load balancers. +// +// We recommend that you verify this on a test environment before you update the +// Elastic Load Balancing configuration. +// +// A service-linked role is required for services that use multiple target groups. +// For more information, see [Using service-linked roles]in the Amazon Elastic Container Service Developer +// Guide. +// +// [Using service-linked roles]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using-service-linked-roles.html +type LoadBalancer struct { + + // The name of the container (as it appears in a container definition) to + // associate with the load balancer. + // + // You need to specify the container name when configuring the target group for an + // Amazon ECS load balancer. + ContainerName *string + + // The port on the container to associate with the load balancer. This port must + // correspond to a containerPort in the task definition the tasks in the service + // are using. For tasks that use the EC2 launch type, the container instance + // they're launched on must allow ingress traffic on the hostPort of the port + // mapping. + ContainerPort *int32 + + // The name of the load balancer to associate with the Amazon ECS service or task + // set. + // + // If you are using an Application Load Balancer or a Network Load Balancer the + // load balancer name parameter should be omitted. + LoadBalancerName *string + + // The full Amazon Resource Name (ARN) of the Elastic Load Balancing target group + // or groups associated with a service or task set. + // + // A target group ARN is only specified when using an Application Load Balancer or + // Network Load Balancer. + // + // For services using the ECS deployment controller, you can specify one or + // multiple target groups. For more information, see [Registering multiple target groups with a service]in the Amazon Elastic + // Container Service Developer Guide. + // + // For services using the CODE_DEPLOY deployment controller, you're required to + // define two target groups for the load balancer. For more information, see [Blue/green deployment with CodeDeploy]in + // the Amazon Elastic Container Service Developer Guide. + // + // If your service's task definition uses the awsvpc network mode, you must choose + // ip as the target type, not instance . Do this when creating your target groups + // because tasks that use the awsvpc network mode are associated with an elastic + // network interface, not an Amazon EC2 instance. This network mode is required for + // the Fargate launch type. + // + // [Registering multiple target groups with a service]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html + // [Blue/green deployment with CodeDeploy]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-bluegreen.html + TargetGroupArn *string + + noSmithyDocumentSerde +} + +// The log configuration for the container. This parameter maps to LogConfig in +// the docker container create command and the --log-driver option to docker run. +// +// By default, containers use the same logging driver that the Docker daemon uses. +// However, the container might use a different logging driver than the Docker +// daemon by specifying a log driver configuration in the container definition. +// +// Understand the following when specifying a log configuration for your +// containers. +// +// - Amazon ECS currently supports a subset of the logging drivers available to +// the Docker daemon. Additional log drivers may be available in future releases of +// the Amazon ECS container agent. +// +// For tasks on Fargate, the supported log drivers are awslogs , splunk , and +// +// awsfirelens . +// +// For tasks hosted on Amazon EC2 instances, the supported log drivers are awslogs +// +// , fluentd , gelf , json-file , journald , syslog , splunk , and awsfirelens . +// +// - This parameter requires version 1.18 of the Docker Remote API or greater on +// your container instance. +// +// - For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container +// agent must register the available logging drivers with the +// ECS_AVAILABLE_LOGGING_DRIVERS environment variable before containers placed on +// that instance can use these log configuration options. For more information, see +// [Amazon ECS container agent configuration]in the Amazon Elastic Container Service Developer Guide. +// +// - For tasks that are on Fargate, because you don't have access to the +// underlying infrastructure your tasks are hosted on, any additional software +// needed must be installed outside of the task. For example, the Fluentd output +// aggregators or a remote host running Logstash to send Gelf logs to. +// +// [Amazon ECS container agent configuration]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html +type LogConfiguration struct { + + // The log driver to use for the container. + // + // For tasks on Fargate, the supported log drivers are awslogs , splunk , and + // awsfirelens . + // + // For tasks hosted on Amazon EC2 instances, the supported log drivers are awslogs + // , fluentd , gelf , json-file , journald , syslog , splunk , and awsfirelens . + // + // For more information about using the awslogs log driver, see [Send Amazon ECS logs to CloudWatch] in the Amazon + // Elastic Container Service Developer Guide. + // + // For more information about using the awsfirelens log driver, see [Send Amazon ECS logs to an Amazon Web Services service or Amazon Web Services Partner]. + // + // If you have a custom driver that isn't listed, you can fork the Amazon ECS + // container agent project that's [available on GitHub]and customize it to work with that driver. We + // encourage you to submit pull requests for changes that you would like to have + // included. However, we don't currently provide support for running modified + // copies of this software. + // + // [Send Amazon ECS logs to an Amazon Web Services service or Amazon Web Services Partner]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_firelens.html + // [Send Amazon ECS logs to CloudWatch]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html + // [available on GitHub]: https://github.com/aws/amazon-ecs-agent + // + // This member is required. + LogDriver LogDriver + + // The configuration options to send to the log driver. + // + // The options you can specify depend on the log driver. Some of the options you + // can specify when you use the awslogs log driver to route logs to Amazon + // CloudWatch include the following: + // + // awslogs-create-group Required: No + // + // Specify whether you want the log group to be created automatically. If this + // option isn't specified, it defaults to false . + // + // Your IAM policy must include the logs:CreateLogGroup permission before you + // attempt to use awslogs-create-group . + // + // awslogs-region Required: Yes + // + // Specify the Amazon Web Services Region that the awslogs log driver is to send + // your Docker logs to. You can choose to send all of your logs from clusters in + // different Regions to a single region in CloudWatch Logs. This is so that they're + // all visible in one location. Otherwise, you can separate them by Region for more + // granularity. Make sure that the specified log group exists in the Region that + // you specify with this option. + // + // awslogs-group Required: Yes + // + // Make sure to specify a log group that the awslogs log driver sends its log + // streams to. + // + // awslogs-stream-prefix Required: Yes, when using the Fargate launch + // type.Optional for the EC2 launch type, required for the Fargate launch type. + // + // Use the awslogs-stream-prefix option to associate a log stream with the + // specified prefix, the container name, and the ID of the Amazon ECS task that the + // container belongs to. If you specify a prefix with this option, then the log + // stream takes the format prefix-name/container-name/ecs-task-id . + // + // If you don't specify a prefix with this option, then the log stream is named + // after the container ID that's assigned by the Docker daemon on the container + // instance. Because it's difficult to trace logs back to the container that sent + // them with just the Docker container ID (which is only available on the container + // instance), we recommend that you specify a prefix with this option. + // + // For Amazon ECS services, you can use the service name as the prefix. Doing so, + // you can trace log streams to the service that the container belongs to, the name + // of the container that sent them, and the ID of the task that the container + // belongs to. + // + // You must specify a stream-prefix for your logs to have your logs appear in the + // Log pane when using the Amazon ECS console. + // + // awslogs-datetime-format Required: No + // + // This option defines a multiline start pattern in Python strftime format. A log + // message consists of a line that matches the pattern and any following lines that + // don’t match the pattern. The matched line is the delimiter between log messages. + // + // One example of a use case for using this format is for parsing output such as a + // stack dump, which might otherwise be logged in multiple entries. The correct + // pattern allows it to be captured in a single entry. + // + // For more information, see [awslogs-datetime-format]. + // + // You cannot configure both the awslogs-datetime-format and + // awslogs-multiline-pattern options. + // + // Multiline logging performs regular expression parsing and matching of all log + // messages. This might have a negative impact on logging performance. + // + // awslogs-multiline-pattern Required: No + // + // This option defines a multiline start pattern that uses a regular expression. A + // log message consists of a line that matches the pattern and any following lines + // that don’t match the pattern. The matched line is the delimiter between log + // messages. + // + // For more information, see [awslogs-multiline-pattern]. + // + // This option is ignored if awslogs-datetime-format is also configured. + // + // You cannot configure both the awslogs-datetime-format and + // awslogs-multiline-pattern options. + // + // Multiline logging performs regular expression parsing and matching of all log + // messages. This might have a negative impact on logging performance. + // + // mode Required: No + // + // Valid values: non-blocking | blocking + // + // This option defines the delivery mode of log messages from the container to + // CloudWatch Logs. The delivery mode you choose affects application availability + // when the flow of logs from container to CloudWatch is interrupted. + // + // If you use the blocking mode and the flow of logs to CloudWatch is interrupted, + // calls from container code to write to the stdout and stderr streams will block. + // The logging thread of the application will block as a result. This may cause the + // application to become unresponsive and lead to container healthcheck failure. + // + // If you use the non-blocking mode, the container's logs are instead stored in an + // in-memory intermediate buffer configured with the max-buffer-size option. This + // prevents the application from becoming unresponsive when logs cannot be sent to + // CloudWatch. We recommend using this mode if you want to ensure service + // availability and are okay with some log loss. For more information, see [Preventing log loss with non-blocking mode in the awslogs container log driver]awslogs . + // + // max-buffer-size Required: No + // + // Default value: 1m + // + // When non-blocking mode is used, the max-buffer-size log option controls the + // size of the buffer that's used for intermediate message storage. Make sure to + // specify an adequate buffer size based on your application. When the buffer fills + // up, further logs cannot be stored. Logs that cannot be stored are lost. + // + // To route logs using the splunk log router, you need to specify a splunk-token + // and a splunk-url . + // + // When you use the awsfirelens log router to route logs to an Amazon Web Services + // Service or Amazon Web Services Partner Network destination for log storage and + // analytics, you can set the log-driver-buffer-limit option to limit the number + // of events that are buffered in memory, before being sent to the log router + // container. It can help to resolve potential log loss issue because high + // throughput might result in memory running out for the buffer inside of Docker. + // + // Other options you can specify when using awsfirelens to route logs depend on + // the destination. When you export logs to Amazon Data Firehose, you can specify + // the Amazon Web Services Region with region and a name for the log stream with + // delivery_stream . + // + // When you export logs to Amazon Kinesis Data Streams, you can specify an Amazon + // Web Services Region with region and a data stream name with stream . + // + // When you export logs to Amazon OpenSearch Service, you can specify options like + // Name , Host (OpenSearch Service endpoint without protocol), Port , Index , Type + // , Aws_auth , Aws_region , Suppress_Type_Name , and tls . For more information, + // see [Under the hood: FireLens for Amazon ECS Tasks]. + // + // When you export logs to Amazon S3, you can specify the bucket using the bucket + // option. You can also specify region , total_file_size , upload_timeout , and + // use_put_object as options. + // + // This parameter requires version 1.19 of the Docker Remote API or greater on + // your container instance. To check the Docker Remote API version on your + // container instance, log in to your container instance and run the following + // command: sudo docker version --format '{{.Server.APIVersion}}' + // + // [awslogs-multiline-pattern]: https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern + // [Under the hood: FireLens for Amazon ECS Tasks]: http://aws.amazon.com/blogs/containers/under-the-hood-firelens-for-amazon-ecs-tasks/ + // [awslogs-datetime-format]: https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format + // [Preventing log loss with non-blocking mode in the awslogs container log driver]: http://aws.amazon.com/blogs/containers/preventing-log-loss-with-non-blocking-mode-in-the-awslogs-container-log-driver/ + Options map[string]string + + // The secrets to pass to the log configuration. For more information, see [Specifying sensitive data] in the + // Amazon Elastic Container Service Developer Guide. + // + // [Specifying sensitive data]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html + SecretOptions []Secret + + noSmithyDocumentSerde +} + +// Details about the managed agent status for the container. +type ManagedAgent struct { + + // The Unix timestamp for the time when the managed agent was last started. + LastStartedAt *time.Time + + // The last known status of the managed agent. + LastStatus *string + + // The name of the managed agent. When the execute command feature is turned on, + // the managed agent name is ExecuteCommandAgent . + Name ManagedAgentName + + // The reason for why the managed agent is in the state it is in. + Reason *string + + noSmithyDocumentSerde +} + +// An object representing a change in state for a managed agent. +type ManagedAgentStateChange struct { + + // The name of the container that's associated with the managed agent. + // + // This member is required. + ContainerName *string + + // The name of the managed agent. + // + // This member is required. + ManagedAgentName ManagedAgentName + + // The status of the managed agent. + // + // This member is required. + Status *string + + // The reason for the status of the managed agent. + Reason *string + + noSmithyDocumentSerde +} + +// The managed scaling settings for the Auto Scaling group capacity provider. +// +// When managed scaling is turned on, Amazon ECS manages the scale-in and +// scale-out actions of the Auto Scaling group. Amazon ECS manages a target +// tracking scaling policy using an Amazon ECS managed CloudWatch metric with the +// specified targetCapacity value as the target value for the metric. For more +// information, see [Using managed scaling]in the Amazon Elastic Container Service Developer Guide. +// +// If managed scaling is off, the user must manage the scaling of the Auto Scaling +// group. +// +// [Using managed scaling]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/asg-capacity-providers.html#asg-capacity-providers-managed-scaling +type ManagedScaling struct { + + // The period of time, in seconds, after a newly launched Amazon EC2 instance can + // contribute to CloudWatch metrics for Auto Scaling group. If this parameter is + // omitted, the default value of 300 seconds is used. + InstanceWarmupPeriod *int32 + + // The maximum number of Amazon EC2 instances that Amazon ECS will scale out at + // one time. If this parameter is omitted, the default value of 10000 is used. + MaximumScalingStepSize *int32 + + // The minimum number of Amazon EC2 instances that Amazon ECS will scale out at + // one time. The scale in process is not affected by this parameter If this + // parameter is omitted, the default value of 1 is used. + // + // When additional capacity is required, Amazon ECS will scale up the minimum + // scaling step size even if the actual demand is less than the minimum scaling + // step size. + // + // If you use a capacity provider with an Auto Scaling group configured with more + // than one Amazon EC2 instance type or Availability Zone, Amazon ECS will scale up + // by the exact minimum scaling step size value and will ignore both the maximum + // scaling step size as well as the capacity demand. + MinimumScalingStepSize *int32 + + // Determines whether to use managed scaling for the capacity provider. + Status ManagedScalingStatus + + // The target capacity utilization as a percentage for the capacity provider. The + // specified value must be greater than 0 and less than or equal to 100 . For + // example, if you want the capacity provider to maintain 10% spare capacity, then + // that means the utilization is 90%, so use a targetCapacity of 90 . The default + // value of 100 percent results in the Amazon EC2 instances in your Auto Scaling + // group being completely used. + TargetCapacity *int32 + + noSmithyDocumentSerde +} + +// The managed storage configuration for the cluster. +type ManagedStorageConfiguration struct { + + // Specify the Key Management Service key ID for the Fargate ephemeral storage. + FargateEphemeralStorageKmsKeyId *string + + // Specify a Key Management Service key ID to encrypt the managed storage. + KmsKeyId *string + + noSmithyDocumentSerde +} + +// The details for a volume mount point that's used in a container definition. +type MountPoint struct { + + // The path on the container to mount the host volume at. + ContainerPath *string + + // If this value is true , the container has read-only access to the volume. If + // this value is false , then the container can write to the volume. The default + // value is false . + ReadOnly *bool + + // The name of the volume to mount. Must be a volume name referenced in the name + // parameter of task definition volume . + SourceVolume *string + + noSmithyDocumentSerde +} + +// Details on the network bindings between a container and its host container +// instance. After a task reaches the RUNNING status, manual and automatic host +// and container port assignments are visible in the networkBindings section of [DescribeTasks] +// API responses. +// +// [DescribeTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html +type NetworkBinding struct { + + // The IP address that the container is bound to on the container instance. + BindIP *string + + // The port number on the container that's used with the network binding. + ContainerPort *int32 + + // The port number range on the container that's bound to the dynamically mapped + // host port range. + // + // The following rules apply when you specify a containerPortRange : + // + // - You must use either the bridge network mode or the awsvpc network mode. + // + // - This parameter is available for both the EC2 and Fargate launch types. + // + // - This parameter is available for both the Linux and Windows operating + // systems. + // + // - The container instance must have at least version 1.67.0 of the container + // agent and at least version 1.67.0-1 of the ecs-init package + // + // - You can specify a maximum of 100 port ranges per container. + // + // - You do not specify a hostPortRange . The value of the hostPortRange is set + // as follows: + // + // - For containers in a task with the awsvpc network mode, the hostPortRange is + // set to the same value as the containerPortRange . This is a static mapping + // strategy. + // + // - For containers in a task with the bridge network mode, the Amazon ECS agent + // finds open host ports from the default ephemeral range and passes it to docker + // to bind them to the container ports. + // + // - The containerPortRange valid values are between 1 and 65535. + // + // - A port can only be included in one port mapping per container. + // + // - You cannot specify overlapping port ranges. + // + // - The first port in the range must be less than last port in the range. + // + // - Docker recommends that you turn off the docker-proxy in the Docker daemon + // config file when you have a large number of ports. + // + // For more information, see [Issue #11185]on the Github website. + // + // For information about how to turn off the docker-proxy in the Docker daemon + // config file, see [Docker daemon]in the Amazon ECS Developer Guide. + // + // You can call [DescribeTasks]DescribeTasks to view the hostPortRange which are the host ports + // that are bound to the container ports. + // + // [Docker daemon]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon + // [DescribeTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html + // [Issue #11185]: https://github.com/moby/moby/issues/11185 + ContainerPortRange *string + + // The port number on the host that's used with the network binding. + HostPort *int32 + + // The port number range on the host that's used with the network binding. This is + // assigned is assigned by Docker and delivered by the Amazon ECS agent. + HostPortRange *string + + // The protocol used for the network binding. + Protocol TransportProtocol + + noSmithyDocumentSerde +} + +// The network configuration for a task or service. +type NetworkConfiguration struct { + + // The VPC subnets and security groups that are associated with a task. + // + // All specified subnets and security groups must be from the same VPC. + AwsvpcConfiguration *AwsVpcConfiguration + + noSmithyDocumentSerde +} + +// An object representing the elastic network interface for tasks that use the +// awsvpc network mode. +type NetworkInterface struct { + + // The attachment ID for the network interface. + AttachmentId *string + + // The private IPv6 address for the network interface. + Ipv6Address *string + + // The private IPv4 address for the network interface. + PrivateIpv4Address *string + + noSmithyDocumentSerde +} + +// An object representing a constraint on task placement. For more information, +// see [Task placement constraints]in the Amazon Elastic Container Service Developer Guide. +// +// If you're using the Fargate launch type, task placement constraints aren't +// supported. +// +// [Task placement constraints]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html +type PlacementConstraint struct { + + // A cluster query language expression to apply to the constraint. The expression + // can have a maximum length of 2000 characters. You can't specify an expression if + // the constraint type is distinctInstance . For more information, see [Cluster query language] in the + // Amazon Elastic Container Service Developer Guide. + // + // [Cluster query language]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html + Expression *string + + // The type of constraint. Use distinctInstance to ensure that each task in a + // particular group is running on a different container instance. Use memberOf to + // restrict the selection to a group of valid candidates. + Type PlacementConstraintType + + noSmithyDocumentSerde +} + +// The task placement strategy for a task or service. For more information, see [Task placement strategies] +// in the Amazon Elastic Container Service Developer Guide. +// +// [Task placement strategies]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html +type PlacementStrategy struct { + + // The field to apply the placement strategy against. For the spread placement + // strategy, valid values are instanceId (or host , which has the same effect), or + // any platform or custom attribute that's applied to a container instance, such as + // attribute:ecs.availability-zone . For the binpack placement strategy, valid + // values are cpu and memory . For the random placement strategy, this field is + // not used. + Field *string + + // The type of placement strategy. The random placement strategy randomly places + // tasks on available candidates. The spread placement strategy spreads placement + // across available candidates evenly based on the field parameter. The binpack + // strategy places tasks on available candidates that have the least available + // amount of the resource that's specified with the field parameter. For example, + // if you binpack on memory, a task is placed on the instance with the least amount + // of remaining memory but still enough to run the task. + Type PlacementStrategyType + + noSmithyDocumentSerde +} + +// The devices that are available on the container instance. The only supported +// device type is a GPU. +type PlatformDevice struct { + + // The ID for the GPUs on the container instance. The available GPU IDs can also + // be obtained on the container instance in the + // /var/lib/ecs/gpu/nvidia_gpu_info.json file. + // + // This member is required. + Id *string + + // The type of device that's available on the container instance. The only + // supported value is GPU . + // + // This member is required. + Type PlatformDeviceType + + noSmithyDocumentSerde +} + +// Port mappings allow containers to access ports on the host container instance +// to send or receive traffic. Port mappings are specified as part of the container +// definition. +// +// If you use containers in a task with the awsvpc or host network mode, specify +// the exposed ports using containerPort . The hostPort can be left blank or it +// must be the same value as the containerPort . +// +// Most fields of this parameter ( containerPort , hostPort , protocol ) maps to +// PortBindings in the docker container create command and the --publish option to +// docker run . If the network mode of a task definition is set to host , host +// ports must either be undefined or match the container port in the port mapping. +// +// You can't expose the same container port for multiple protocols. If you attempt +// this, an error is returned. +// +// After a task reaches the RUNNING status, manual and automatic host and +// container port assignments are visible in the networkBindings section of [DescribeTasks] API +// responses. +// +// [DescribeTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html +type PortMapping struct { + + // The application protocol that's used for the port mapping. This parameter only + // applies to Service Connect. We recommend that you set this parameter to be + // consistent with the protocol that your application uses. If you set this + // parameter, Amazon ECS adds protocol-specific connection handling to the Service + // Connect proxy. If you set this parameter, Amazon ECS adds protocol-specific + // telemetry in the Amazon ECS console and CloudWatch. + // + // If you don't set a value for this parameter, then TCP is used. However, Amazon + // ECS doesn't add protocol-specific telemetry for TCP. + // + // appProtocol is immutable in a Service Connect service. Updating this field + // requires a service deletion and redeployment. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + AppProtocol ApplicationProtocol + + // The port number on the container that's bound to the user-specified or + // automatically assigned host port. + // + // If you use containers in a task with the awsvpc or host network mode, specify + // the exposed ports using containerPort . + // + // If you use containers in a task with the bridge network mode and you specify a + // container port and not a host port, your container automatically receives a host + // port in the ephemeral port range. For more information, see hostPort . Port + // mappings that are automatically assigned in this way do not count toward the 100 + // reserved ports limit of a container instance. + ContainerPort *int32 + + // The port number range on the container that's bound to the dynamically mapped + // host port range. + // + // The following rules apply when you specify a containerPortRange : + // + // - You must use either the bridge network mode or the awsvpc network mode. + // + // - This parameter is available for both the EC2 and Fargate launch types. + // + // - This parameter is available for both the Linux and Windows operating + // systems. + // + // - The container instance must have at least version 1.67.0 of the container + // agent and at least version 1.67.0-1 of the ecs-init package + // + // - You can specify a maximum of 100 port ranges per container. + // + // - You do not specify a hostPortRange . The value of the hostPortRange is set + // as follows: + // + // - For containers in a task with the awsvpc network mode, the hostPortRange is + // set to the same value as the containerPortRange . This is a static mapping + // strategy. + // + // - For containers in a task with the bridge network mode, the Amazon ECS agent + // finds open host ports from the default ephemeral range and passes it to docker + // to bind them to the container ports. + // + // - The containerPortRange valid values are between 1 and 65535. + // + // - A port can only be included in one port mapping per container. + // + // - You cannot specify overlapping port ranges. + // + // - The first port in the range must be less than last port in the range. + // + // - Docker recommends that you turn off the docker-proxy in the Docker daemon + // config file when you have a large number of ports. + // + // For more information, see [Issue #11185]on the Github website. + // + // For information about how to turn off the docker-proxy in the Docker daemon + // config file, see [Docker daemon]in the Amazon ECS Developer Guide. + // + // You can call [DescribeTasks]DescribeTasks to view the hostPortRange which are the host ports + // that are bound to the container ports. + // + // [Docker daemon]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html#bootstrap_docker_daemon + // [DescribeTasks]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html + // [Issue #11185]: https://github.com/moby/moby/issues/11185 + ContainerPortRange *string + + // The port number on the container instance to reserve for your container. + // + // If you specify a containerPortRange , leave this field empty and the value of + // the hostPort is set as follows: + // + // - For containers in a task with the awsvpc network mode, the hostPort is set + // to the same value as the containerPort . This is a static mapping strategy. + // + // - For containers in a task with the bridge network mode, the Amazon ECS agent + // finds open ports on the host and automatically binds them to the container + // ports. This is a dynamic mapping strategy. + // + // If you use containers in a task with the awsvpc or host network mode, the + // hostPort can either be left blank or set to the same value as the containerPort . + // + // If you use containers in a task with the bridge network mode, you can specify a + // non-reserved host port for your container port mapping, or you can omit the + // hostPort (or set it to 0 ) while specifying a containerPort and your container + // automatically receives a port in the ephemeral port range for your container + // instance operating system and Docker version. + // + // The default ephemeral port range for Docker version 1.6.0 and later is listed + // on the instance under /proc/sys/net/ipv4/ip_local_port_range . If this kernel + // parameter is unavailable, the default ephemeral port range from 49153 through + // 65535 (Linux) or 49152 through 65535 (Windows) is used. Do not attempt to + // specify a host port in the ephemeral port range as these are reserved for + // automatic assignment. In general, ports below 32768 are outside of the ephemeral + // port range. + // + // The default reserved ports are 22 for SSH, the Docker ports 2375 and 2376, and + // the Amazon ECS container agent ports 51678-51680. Any host port that was + // previously specified in a running task is also reserved while the task is + // running. That is, after a task stops, the host port is released. The current + // reserved ports are displayed in the remainingResources of [DescribeContainerInstances] output. A container + // instance can have up to 100 reserved ports at a time. This number includes the + // default reserved ports. Automatically assigned ports aren't included in the 100 + // reserved ports quota. + // + // [DescribeContainerInstances]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeContainerInstances.html + HostPort *int32 + + // The name that's used for the port mapping. This parameter is the name that you + // use in the serviceConnectConfiguration and the vpcLatticeConfigurations of a + // service. The name can include up to 64 characters. The characters can include + // lowercase letters, numbers, underscores (_), and hyphens (-). The name can't + // start with a hyphen. + Name *string + + // The protocol used for the port mapping. Valid values are tcp and udp . The + // default is tcp . protocol is immutable in a Service Connect service. Updating + // this field requires a service deletion and redeployment. + Protocol TransportProtocol + + noSmithyDocumentSerde +} + +// An object representing the protection status details for a task. You can set +// the protection status with the [UpdateTaskProtection]API and get the status of tasks with the [GetTaskProtection] API. +// +// [UpdateTaskProtection]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateTaskProtection.html +// [GetTaskProtection]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_GetTaskProtection.html +type ProtectedTask struct { + + // The epoch time when protection for the task will expire. + ExpirationDate *time.Time + + // The protection status of the task. If scale-in protection is on for a task, the + // value is true . Otherwise, it is false . + ProtectionEnabled bool + + // The task ARN. + TaskArn *string + + noSmithyDocumentSerde +} + +// The configuration details for the App Mesh proxy. +// +// For tasks that use the EC2 launch type, the container instances require at +// least version 1.26.0 of the container agent and at least version 1.26.0-1 of the +// ecs-init package to use a proxy configuration. If your container instances are +// launched from the Amazon ECS optimized AMI version 20190301 or later, then they +// contain the required versions of the container agent and ecs-init . For more +// information, see [Amazon ECS-optimized Linux AMI] +// +// [Amazon ECS-optimized Linux AMI]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html +type ProxyConfiguration struct { + + // The name of the container that will serve as the App Mesh proxy. + // + // This member is required. + ContainerName *string + + // The set of network configuration parameters to provide the Container Network + // Interface (CNI) plugin, specified as key-value pairs. + // + // - IgnoredUID - (Required) The user ID (UID) of the proxy container as defined + // by the user parameter in a container definition. This is used to ensure the + // proxy ignores its own traffic. If IgnoredGID is specified, this field can be + // empty. + // + // - IgnoredGID - (Required) The group ID (GID) of the proxy container as defined + // by the user parameter in a container definition. This is used to ensure the + // proxy ignores its own traffic. If IgnoredUID is specified, this field can be + // empty. + // + // - AppPorts - (Required) The list of ports that the application uses. Network + // traffic to these ports is forwarded to the ProxyIngressPort and + // ProxyEgressPort . + // + // - ProxyIngressPort - (Required) Specifies the port that incoming traffic to + // the AppPorts is directed to. + // + // - ProxyEgressPort - (Required) Specifies the port that outgoing traffic from + // the AppPorts is directed to. + // + // - EgressIgnoredPorts - (Required) The egress traffic going to the specified + // ports is ignored and not redirected to the ProxyEgressPort . It can be an + // empty list. + // + // - EgressIgnoredIPs - (Required) The egress traffic going to the specified IP + // addresses is ignored and not redirected to the ProxyEgressPort . It can be an + // empty list. + Properties []KeyValuePair + + // The proxy type. The only supported value is APPMESH . + Type ProxyConfigurationType + + noSmithyDocumentSerde +} + +// The repository credentials for private registry authentication. +type RepositoryCredentials struct { + + // The Amazon Resource Name (ARN) of the secret containing the private repository + // credentials. + // + // When you use the Amazon ECS API, CLI, or Amazon Web Services SDK, if the secret + // exists in the same Region as the task that you're launching then you can use + // either the full ARN or the name of the secret. When you use the Amazon Web + // Services Management Console, you must specify the full ARN of the secret. + // + // This member is required. + CredentialsParameter *string + + noSmithyDocumentSerde +} + +// Describes the resources available for a container instance. +type Resource struct { + + // When the doubleValue type is set, the value of the resource must be a double + // precision floating-point type. + DoubleValue float64 + + // When the integerValue type is set, the value of the resource must be an integer. + IntegerValue int32 + + // When the longValue type is set, the value of the resource must be an extended + // precision floating-point type. + LongValue int64 + + // The name of the resource, such as CPU , MEMORY , PORTS , PORTS_UDP , or a + // user-defined resource. + Name *string + + // When the stringSetValue type is set, the value of the resource must be a string + // type. + StringSetValue []string + + // The type of the resource. Valid values: INTEGER , DOUBLE , LONG , or STRINGSET . + Type *string + + noSmithyDocumentSerde +} + +// The type and amount of a resource to assign to a container. The supported +// resource types are GPUs and Elastic Inference accelerators. For more +// information, see [Working with GPUs on Amazon ECS]or [Working with Amazon Elastic Inference on Amazon ECS] in the Amazon Elastic Container Service Developer Guide +// +// [Working with Amazon Elastic Inference on Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-inference.html +// [Working with GPUs on Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-gpu.html +type ResourceRequirement struct { + + // The type of resource to assign to a container. + // + // This member is required. + Type ResourceType + + // The value for the specified resource type. + // + // When the type is GPU , the value is the number of physical GPUs the Amazon ECS + // container agent reserves for the container. The number of GPUs that's reserved + // for all containers in a task can't exceed the number of available GPUs on the + // container instance that the task is launched on. + // + // When the type is InferenceAccelerator , the value matches the deviceName for an [InferenceAccelerator] + // specified in a task definition. + // + // [InferenceAccelerator]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_InferenceAccelerator.html + // + // This member is required. + Value *string + + noSmithyDocumentSerde +} + +// Information about the service deployment rollback. +type Rollback struct { + + // The reason the rollback happened. For example, the circuit breaker initiated + // the rollback operation. + Reason *string + + // The ARN of the service revision deployed as part of the rollback. + // + // When the type is GPU , the value is the number of physical GPUs the Amazon ECS + // container agent reserves for the container. The number of GPUs that's reserved + // for all containers in a task can't exceed the number of available GPUs on the + // container instance that the task is launched on. + // + // When the type is InferenceAccelerator , the value matches the deviceName for an [InferenceAccelerator] + // specified in a task definition. + // + // [InferenceAccelerator]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_InferenceAccelerator.html + ServiceRevisionArn *string + + // Time time that the rollback started. The format is yyyy-MM-dd HH:mm:ss.SSSSSS. + StartedAt *time.Time + + noSmithyDocumentSerde +} + +// Information about the platform for the Amazon ECS service or task. +// +// For more information about RuntimePlatform , see [RuntimePlatform] in the Amazon Elastic +// Container Service Developer Guide. +// +// [RuntimePlatform]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform +type RuntimePlatform struct { + + // The CPU architecture. + // + // You can run your Linux tasks on an ARM-based platform by setting the value to + // ARM64 . This option is available for tasks that run on Linux Amazon EC2 instance + // or Linux containers on Fargate. + CpuArchitecture CPUArchitecture + + // The operating system. + OperatingSystemFamily OSFamily + + noSmithyDocumentSerde +} + +// A floating-point percentage of the desired number of tasks to place and keep +// running in the task set. +type Scale struct { + + // The unit of measure for the scale value. + Unit ScaleUnit + + // The value, specified as a percent total of a service's desiredCount , to scale + // the task set. Accepted values are numbers between 0 and 100. + Value float64 + + noSmithyDocumentSerde +} + +// An object representing the secret to expose to your container. Secrets can be +// exposed to a container in the following ways: +// +// - To inject sensitive data into your containers as environment variables, use +// the secrets container definition parameter. +// +// - To reference sensitive information in the log configuration of a container, +// use the secretOptions container definition parameter. +// +// For more information, see [Specifying sensitive data] in the Amazon Elastic Container Service Developer +// Guide. +// +// [Specifying sensitive data]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data.html +type Secret struct { + + // The name of the secret. + // + // This member is required. + Name *string + + // The secret to expose to the container. The supported values are either the full + // ARN of the Secrets Manager secret or the full ARN of the parameter in the SSM + // Parameter Store. + // + // For information about the require Identity and Access Management permissions, + // see [Required IAM permissions for Amazon ECS secrets](for Secrets Manager) or [Required IAM permissions for Amazon ECS secrets] (for Systems Manager Parameter store) in the + // Amazon Elastic Container Service Developer Guide. + // + // If the SSM Parameter Store parameter exists in the same Region as the task + // you're launching, then you can use either the full ARN or name of the parameter. + // If the parameter exists in a different Region, then the full ARN must be + // specified. + // + // [Required IAM permissions for Amazon ECS secrets]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-parameters.html + // + // This member is required. + ValueFrom *string + + noSmithyDocumentSerde +} + +// Details on a service within a cluster. +type Service struct { + + // Indicates whether to use Availability Zone rebalancing for the service. + // + // For more information, see [Balancing an Amazon ECS service across Availability Zones] in the Amazon Elastic Container Service Developer + // Guide. + // + // [Balancing an Amazon ECS service across Availability Zones]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-rebalancing.html + AvailabilityZoneRebalancing AvailabilityZoneRebalancing + + // The capacity provider strategy the service uses. When using the + // DescribeServices API, this field is omitted if the service was created using a + // launch type. + CapacityProviderStrategy []CapacityProviderStrategyItem + + // The Amazon Resource Name (ARN) of the cluster that hosts the service. + ClusterArn *string + + // The Unix timestamp for the time when the service was created. + CreatedAt *time.Time + + // The principal that created the service. + CreatedBy *string + + // Optional deployment parameters that control how many tasks run during the + // deployment and the ordering of stopping and starting tasks. + DeploymentConfiguration *DeploymentConfiguration + + // The deployment controller type the service is using. + DeploymentController *DeploymentController + + // The current state of deployments for the service. + Deployments []Deployment + + // The desired number of instantiations of the task definition to keep running on + // the service. This value is specified when the service is created with [CreateService], and it + // can be modified with [UpdateService]. + // + // [CreateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html + // [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html + DesiredCount int32 + + // Determines whether to use Amazon ECS managed tags for the tasks in the service. + // For more information, see [Tagging Your Amazon ECS Resources]in the Amazon Elastic Container Service Developer + // Guide. + // + // [Tagging Your Amazon ECS Resources]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html + EnableECSManagedTags bool + + // Determines whether the execute command functionality is turned on for the + // service. If true , the execute command functionality is turned on for all + // containers in tasks as part of the service. + EnableExecuteCommand bool + + // The event stream for your service. A maximum of 100 of the latest events are + // displayed. + Events []ServiceEvent + + // The period of time, in seconds, that the Amazon ECS service scheduler ignores + // unhealthy Elastic Load Balancing target health checks after a task has first + // started. + HealthCheckGracePeriodSeconds *int32 + + // The launch type the service is using. When using the DescribeServices API, this + // field is omitted if the service was created using a capacity provider strategy. + LaunchType LaunchType + + // A list of Elastic Load Balancing load balancer objects. It contains the load + // balancer name, the container name, and the container port to access from the + // load balancer. The container name is as it appears in a container definition. + LoadBalancers []LoadBalancer + + // The VPC subnet and security group configuration for tasks that receive their + // own elastic network interface by using the awsvpc networking mode. + NetworkConfiguration *NetworkConfiguration + + // The number of tasks in the cluster that are in the PENDING state. + PendingCount int32 + + // The placement constraints for the tasks in the service. + PlacementConstraints []PlacementConstraint + + // The placement strategy that determines how tasks for the service are placed. + PlacementStrategy []PlacementStrategy + + // The operating system that your tasks in the service run on. A platform family + // is specified only for tasks using the Fargate launch type. + // + // All tasks that run as part of this service must use the same platformFamily + // value as the service (for example, LINUX ). + PlatformFamily *string + + // The platform version to run your service on. A platform version is only + // specified for tasks that are hosted on Fargate. If one isn't specified, the + // LATEST platform version is used. For more information, see [Fargate Platform Versions] in the Amazon + // Elastic Container Service Developer Guide. + // + // [Fargate Platform Versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + PlatformVersion *string + + // Determines whether to propagate the tags from the task definition or the + // service to the task. If no value is specified, the tags aren't propagated. + PropagateTags PropagateTags + + // The ARN of the IAM role that's associated with the service. It allows the + // Amazon ECS container agent to register container instances with an Elastic Load + // Balancing load balancer. + RoleArn *string + + // The number of tasks in the cluster that are in the RUNNING state. + RunningCount int32 + + // The scheduling strategy to use for the service. For more information, see [Services]. + // + // There are two service scheduler strategies available. + // + // - REPLICA -The replica scheduling strategy places and maintains the desired + // number of tasks across your cluster. By default, the service scheduler spreads + // tasks across Availability Zones. You can use task placement strategies and + // constraints to customize task placement decisions. + // + // - DAEMON -The daemon scheduling strategy deploys exactly one task on each + // active container instance. This task meets all of the task placement constraints + // that you specify in your cluster. The service scheduler also evaluates the task + // placement constraints for running tasks. It stop tasks that don't meet the + // placement constraints. + // + // Fargate tasks don't support the DAEMON scheduling strategy. + // + // [Services]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html + SchedulingStrategy SchedulingStrategy + + // The ARN that identifies the service. For more information about the ARN format, + // see [Amazon Resource Name (ARN)]in the Amazon ECS Developer Guide. + // + // [Amazon Resource Name (ARN)]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids + ServiceArn *string + + // The name of your service. Up to 255 letters (uppercase and lowercase), numbers, + // underscores, and hyphens are allowed. Service names must be unique within a + // cluster. However, you can have similarly named services in multiple clusters + // within a Region or across multiple Regions. + ServiceName *string + + // The details for the service discovery registries to assign to this service. For + // more information, see [Service Discovery]. + // + // [Service Discovery]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html + ServiceRegistries []ServiceRegistry + + // The status of the service. The valid values are ACTIVE , DRAINING , or INACTIVE . + Status *string + + // The metadata that you apply to the service to help you categorize and organize + // them. Each tag consists of a key and an optional value. You define bot the key + // and value. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []Tag + + // The task definition to use for tasks in the service. This value is specified + // when the service is created with [CreateService], and it can be modified with [UpdateService]. + // + // [CreateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html + // [UpdateService]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html + TaskDefinition *string + + // Information about a set of Amazon ECS tasks in either an CodeDeploy or an + // EXTERNAL deployment. An Amazon ECS task set includes details such as the desired + // number of tasks, how many tasks are running, and whether the task set serves + // production traffic. + TaskSets []TaskSet + + noSmithyDocumentSerde +} + +// Each alias ("endpoint") is a fully-qualified name and port number that other +// tasks ("clients") can use to connect to this service. +// +// Each name and port mapping must be unique within the namespace. +// +// Tasks that run in a namespace can use short names to connect to services in the +// namespace. Tasks can connect to services across all of the clusters in the +// namespace. Tasks connect through a managed proxy container that collects logs +// and metrics for increased visibility. Only the tasks that Amazon ECS services +// create are supported with Service Connect. For more information, see [Service Connect]in the +// Amazon Elastic Container Service Developer Guide. +// +// [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html +type ServiceConnectClientAlias struct { + + // The listening port number for the Service Connect proxy. This port is available + // inside of all of the tasks within the same namespace. + // + // To avoid changing your applications in client Amazon ECS services, set this to + // the same port that the client application uses by default. For more information, + // see [Service Connect]in the Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + // + // This member is required. + Port *int32 + + // The dnsName is the name that you use in the applications of client tasks to + // connect to this service. The name must be a valid DNS name but doesn't need to + // be fully-qualified. The name can include up to 127 characters. The name can + // include lowercase letters, numbers, underscores (_), hyphens (-), and periods + // (.). The name can't start with a hyphen. + // + // If this parameter isn't specified, the default value of discoveryName.namespace + // is used. If the discoveryName isn't specified, the port mapping name from the + // task definition is used in portName.namespace . + // + // To avoid changing your applications in client Amazon ECS services, set this to + // the same name that the client application uses by default. For example, a few + // common names are database , db , or the lowercase name of a database, such as + // mysql or redis . For more information, see [Service Connect] in the Amazon Elastic Container + // Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + DnsName *string + + noSmithyDocumentSerde +} + +// The Service Connect configuration of your Amazon ECS service. The configuration +// for this service to discover and connect to services, and be discovered by, and +// connected from, other services within a namespace. +// +// Tasks that run in a namespace can use short names to connect to services in the +// namespace. Tasks can connect to services across all of the clusters in the +// namespace. Tasks connect through a managed proxy container that collects logs +// and metrics for increased visibility. Only the tasks that Amazon ECS services +// create are supported with Service Connect. For more information, see [Service Connect]in the +// Amazon Elastic Container Service Developer Guide. +// +// [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html +type ServiceConnectConfiguration struct { + + // Specifies whether to use Service Connect with this service. + // + // This member is required. + Enabled bool + + // The log configuration for the container. This parameter maps to LogConfig in + // the docker container create command and the --log-driver option to docker run. + // + // By default, containers use the same logging driver that the Docker daemon uses. + // However, the container might use a different logging driver than the Docker + // daemon by specifying a log driver configuration in the container definition. + // + // Understand the following when specifying a log configuration for your + // containers. + // + // - Amazon ECS currently supports a subset of the logging drivers available to + // the Docker daemon. Additional log drivers may be available in future releases of + // the Amazon ECS container agent. + // + // For tasks on Fargate, the supported log drivers are awslogs , splunk , and + // awsfirelens . + // + // For tasks hosted on Amazon EC2 instances, the supported log drivers are awslogs + // , fluentd , gelf , json-file , journald , syslog , splunk , and awsfirelens . + // + // - This parameter requires version 1.18 of the Docker Remote API or greater on + // your container instance. + // + // - For tasks that are hosted on Amazon EC2 instances, the Amazon ECS container + // agent must register the available logging drivers with the + // ECS_AVAILABLE_LOGGING_DRIVERS environment variable before containers placed on + // that instance can use these log configuration options. For more information, see + // [Amazon ECS container agent configuration]in the Amazon Elastic Container Service Developer Guide. + // + // - For tasks that are on Fargate, because you don't have access to the + // underlying infrastructure your tasks are hosted on, any additional software + // needed must be installed outside of the task. For example, the Fluentd output + // aggregators or a remote host running Logstash to send Gelf logs to. + // + // [Amazon ECS container agent configuration]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html + LogConfiguration *LogConfiguration + + // The namespace name or full Amazon Resource Name (ARN) of the Cloud Map + // namespace for use with Service Connect. The namespace must be in the same Amazon + // Web Services Region as the Amazon ECS service and cluster. The type of namespace + // doesn't affect Service Connect. For more information about Cloud Map, see [Working with Services]in + // the Cloud Map Developer Guide. + // + // [Working with Services]: https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html + Namespace *string + + // The list of Service Connect service objects. These are names and aliases (also + // known as endpoints) that are used by other Amazon ECS services to connect to + // this service. + // + // This field is not required for a "client" Amazon ECS service that's a member of + // a namespace only to connect to other services within the namespace. An example + // of this would be a frontend application that accepts incoming requests from + // either a load balancer that's attached to the service or by other means. + // + // An object selects a port from the task definition, assigns a name for the Cloud + // Map service, and a list of aliases (endpoints) and ports for client applications + // to refer to this service. + Services []ServiceConnectService + + noSmithyDocumentSerde +} + +// The Service Connect service object configuration. For more information, see [Service Connect] in +// the Amazon Elastic Container Service Developer Guide. +// +// [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html +type ServiceConnectService struct { + + // The portName must match the name of one of the portMappings from all the + // containers in the task definition of this Amazon ECS service. + // + // This member is required. + PortName *string + + // The list of client aliases for this Service Connect service. You use these to + // assign names that can be used by client applications. The maximum number of + // client aliases that you can have in this list is 1. + // + // Each alias ("endpoint") is a fully-qualified name and port number that other + // Amazon ECS tasks ("clients") can use to connect to this service. + // + // Each name and port mapping must be unique within the namespace. + // + // For each ServiceConnectService , you must provide at least one clientAlias with + // one port . + ClientAliases []ServiceConnectClientAlias + + // The discoveryName is the name of the new Cloud Map service that Amazon ECS + // creates for this Amazon ECS service. This must be unique within the Cloud Map + // namespace. The name can contain up to 64 characters. The name can include + // lowercase letters, numbers, underscores (_), and hyphens (-). The name can't + // start with a hyphen. + // + // If the discoveryName isn't specified, the port mapping name from the task + // definition is used in portName.namespace . + DiscoveryName *string + + // The port number for the Service Connect proxy to listen on. + // + // Use the value of this field to bypass the proxy for traffic on the port number + // specified in the named portMapping in the task definition of this application, + // and then use it in your VPC security groups to allow traffic into the proxy for + // this Amazon ECS service. + // + // In awsvpc mode and Fargate, the default value is the container port number. The + // container port number is in the portMapping in the task definition. In bridge + // mode, the default value is the ephemeral port of the Service Connect proxy. + IngressPortOverride *int32 + + // A reference to an object that represents the configured timeouts for Service + // Connect. + Timeout *TimeoutConfiguration + + // A reference to an object that represents a Transport Layer Security (TLS) + // configuration. + Tls *ServiceConnectTlsConfiguration + + noSmithyDocumentSerde +} + +// The Service Connect resource. Each configuration maps a discovery name to a +// Cloud Map service name. The data is stored in Cloud Map as part of the Service +// Connect configuration for each discovery name of this Amazon ECS service. +// +// A task can resolve the dnsName for each of the clientAliases of a service. +// However a task can't resolve the discovery names. If you want to connect to a +// service, refer to the ServiceConnectConfiguration of that service for the list +// of clientAliases that you can use. +type ServiceConnectServiceResource struct { + + // The Amazon Resource Name (ARN) for the namespace in Cloud Map that matches the + // discovery name for this Service Connect resource. You can use this ARN in other + // integrations with Cloud Map. However, Service Connect can't ensure connectivity + // outside of Amazon ECS. + DiscoveryArn *string + + // The discovery name of this Service Connect resource. + // + // The discoveryName is the name of the new Cloud Map service that Amazon ECS + // creates for this Amazon ECS service. This must be unique within the Cloud Map + // namespace. The name can contain up to 64 characters. The name can include + // lowercase letters, numbers, underscores (_), and hyphens (-). The name can't + // start with a hyphen. + // + // If the discoveryName isn't specified, the port mapping name from the task + // definition is used in portName.namespace . + DiscoveryName *string + + noSmithyDocumentSerde +} + +// The certificate root authority that secures your service. +type ServiceConnectTlsCertificateAuthority struct { + + // The ARN of the Amazon Web Services Private Certificate Authority certificate. + AwsPcaAuthorityArn *string + + noSmithyDocumentSerde +} + +// The key that encrypts and decrypts your resources for Service Connect TLS. +type ServiceConnectTlsConfiguration struct { + + // The signer certificate authority. + // + // This member is required. + IssuerCertificateAuthority *ServiceConnectTlsCertificateAuthority + + // The Amazon Web Services Key Management Service key. + KmsKey *string + + // The Amazon Resource Name (ARN) of the IAM role that's associated with the + // Service Connect TLS. + RoleArn *string + + noSmithyDocumentSerde +} + +// Information about the service deployment. +// +// Service deployments provide a comprehensive view of your deployments. For +// information about service deployments, see [View service history using Amazon ECS service deployments]in the Amazon Elastic Container +// Service Developer Guide . +// +// [View service history using Amazon ECS service deployments]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-deployment.html +type ServiceDeployment struct { + + // The CloudWatch alarms that determine when a service deployment fails. + Alarms *ServiceDeploymentAlarms + + // The ARN of the cluster that hosts the service. + ClusterArn *string + + // The time the service deployment was created. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + CreatedAt *time.Time + + // The circuit breaker configuration that determines a service deployment failed. + DeploymentCircuitBreaker *ServiceDeploymentCircuitBreaker + + // Optional deployment parameters that control how many tasks run during a + // deployment and the ordering of stopping and starting tasks. + DeploymentConfiguration *DeploymentConfiguration + + // The time the service deployment finished. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + FinishedAt *time.Time + + // The rollback options the service deployment uses when the deployment fails. + Rollback *Rollback + + // The ARN of the service for this service deployment. + ServiceArn *string + + // The ARN of the service deployment. + ServiceDeploymentArn *string + + // The currently deployed workload configuration. + SourceServiceRevisions []ServiceRevisionSummary + + // The time the service deployment statred. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + StartedAt *time.Time + + // The service deployment state. + Status ServiceDeploymentStatus + + // Information about why the service deployment is in the current status. For + // example, the circuit breaker detected a failure. + StatusReason *string + + // The time the service deployment stopped. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + // + // The service deployment stops when any of the following actions happen: + // + // - A user manually stops the deployment + // + // - The rollback option is not in use for the failure detection mechanism (the + // circuit breaker or alarm-based) and the service fails. + StoppedAt *time.Time + + // The workload configuration being deployed. + TargetServiceRevision *ServiceRevisionSummary + + // The time that the service deployment was last updated. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + UpdatedAt *time.Time + + noSmithyDocumentSerde +} + +// The CloudWatch alarms used to determine a service deployment failed. +// +// Amazon ECS considers the service deployment as failed when any of the alarms +// move to the ALARM state. For more information, see [How CloudWatch alarms detect Amazon ECS deployment failures] in the Amazon ECS Developer +// Guide. +// +// [How CloudWatch alarms detect Amazon ECS deployment failures]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-alarm-failure.html +type ServiceDeploymentAlarms struct { + + // The name of the CloudWatch alarms that determine when a service deployment + // failed. A "," separates the alarms. + AlarmNames []string + + // The status of the alarms check. Amazon ECS is not using alarms for service + // deployment failures when the status is DISABLED . + Status ServiceDeploymentRollbackMonitorsStatus + + // One or more CloudWatch alarm names that have been triggered during the service + // deployment. A "," separates the alarm names. + TriggeredAlarmNames []string + + noSmithyDocumentSerde +} + +// The service deployment properties that are retured when you call +// ListServiceDeployments . +// +// This provides a high-level overview of the service deployment. +type ServiceDeploymentBrief struct { + + // The ARN of the cluster that hosts the service. + ClusterArn *string + + // The time that the service deployment was created. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + CreatedAt *time.Time + + // The time that the service deployment completed. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + FinishedAt *time.Time + + // The ARN of the service for this service deployment. + ServiceArn *string + + // The ARN of the service deployment. + ServiceDeploymentArn *string + + // The time that the service deployment statred. The format is yyyy-MM-dd + // HH:mm:ss.SSSSSS. + StartedAt *time.Time + + // The status of the service deployment + Status ServiceDeploymentStatus + + // Information about why the service deployment is in the current status. For + // example, the circuit breaker detected a deployment failure. + StatusReason *string + + // The ARN of the service revision being deplyed. + TargetServiceRevisionArn *string + + noSmithyDocumentSerde +} + +// Information about the circuit breaker used to determine when a service +// deployment has failed. +// +// The deployment circuit breaker is the rolling update mechanism that determines +// if the tasks reach a steady state. The deployment circuit breaker has an option +// that will automatically roll back a failed deployment to the last cpompleted +// service revision. For more information, see [How the Amazon ECS deployment circuit breaker detects failures]in the Amazon ECS Developer Guide. +// +// [How the Amazon ECS deployment circuit breaker detects failures]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-circuit-breaker.html +type ServiceDeploymentCircuitBreaker struct { + + // The number of times the circuit breaker detected a service deploymeny failure. + FailureCount int32 + + // The circuit breaker status. Amazon ECS is not using the circuit breaker for + // service deployment failures when the status is DISABLED . + Status ServiceDeploymentRollbackMonitorsStatus + + // The threshhold which determines that the service deployment failed. + // + // The deployment circuit breaker calculates the threshold value, and then uses + // the value to determine when to move the deployment to a FAILED state. The + // deployment circuit breaker has a minimum threshold of 3 and a maximum threshold + // of 200. and uses the values in the following formula to determine the deployment + // failure. + // + // 0.5 * desired task count + Threshold int32 + + noSmithyDocumentSerde +} + +// The details for an event that's associated with a service. +type ServiceEvent struct { + + // The Unix timestamp for the time when the event was triggered. + CreatedAt *time.Time + + // The ID string for the event. + Id *string + + // The event message. + Message *string + + noSmithyDocumentSerde +} + +// The configuration for the Amazon EBS volume that Amazon ECS creates and manages +// on your behalf. These settings are used to create each Amazon EBS volume, with +// one volume created for each task in the service. For information about the +// supported launch types and operating systems, see [Supported operating systems and launch types]in the Amazon Elastic +// Container Service Developer Guide. +// +// Many of these parameters map 1:1 with the Amazon EBS CreateVolume API request +// parameters. +// +// [Supported operating systems and launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volumes-configuration +type ServiceManagedEBSVolumeConfiguration struct { + + // The ARN of the IAM role to associate with this volume. This is the Amazon ECS + // infrastructure IAM role that is used to manage your Amazon Web Services + // infrastructure. We recommend using the Amazon ECS-managed + // AmazonECSInfrastructureRolePolicyForVolumes IAM policy with this role. For more + // information, see [Amazon ECS infrastructure IAM role]in the Amazon ECS Developer Guide. + // + // [Amazon ECS infrastructure IAM role]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html + // + // This member is required. + RoleArn *string + + // Indicates whether the volume should be encrypted. If no value is specified, + // encryption is turned on by default. This parameter maps 1:1 with the Encrypted + // parameter of the [CreateVolume API]in the Amazon EC2 API Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + Encrypted *bool + + // The filesystem type for the volume. For volumes created from a snapshot, you + // must specify the same filesystem type that the volume was using when the + // snapshot was created. If there is a filesystem type mismatch, the task will fail + // to start. + // + // The available Linux filesystem types are
 ext3 , ext4 , and xfs . If no value is + // specified, the xfs filesystem type is used by default. + // + // The available Windows filesystem types are NTFS . + FilesystemType TaskFilesystemType + + // The number of I/O operations per second (IOPS). For gp3 , io1 , and io2 + // volumes, this represents the number of IOPS that are provisioned for the volume. + // For gp2 volumes, this represents the baseline performance of the volume and the + // rate at which the volume accumulates I/O credits for bursting. + // + // The following are the supported values for each volume type. + // + // - gp3 : 3,000 - 16,000 IOPS + // + // - io1 : 100 - 64,000 IOPS + // + // - io2 : 100 - 256,000 IOPS + // + // This parameter is required for io1 and io2 volume types. The default for gp3 + // volumes is 3,000 IOPS . This parameter is not supported for st1 , sc1 , or + // standard volume types. + // + // This parameter maps 1:1 with the Iops parameter of the [CreateVolume API] in the Amazon EC2 API + // Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + Iops *int32 + + // The Amazon Resource Name (ARN) identifier of the Amazon Web Services Key + // Management Service key to use for Amazon EBS encryption. When encryption is + // turned on and no Amazon Web Services Key Management Service key is specified, + // the default Amazon Web Services managed key for Amazon EBS volumes is used. This + // parameter maps 1:1 with the KmsKeyId parameter of the [CreateVolume API] in the Amazon EC2 API + // Reference. + // + // Amazon Web Services authenticates the Amazon Web Services Key Management + // Service key asynchronously. Therefore, if you specify an ID, alias, or ARN that + // is invalid, the action can appear to complete, but eventually fails. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + KmsKeyId *string + + // The size of the volume in GiB. You must specify either a volume size or a + // snapshot ID. If you specify a snapshot ID, the snapshot size is used for the + // volume size by default. You can optionally specify a volume size greater than or + // equal to the snapshot size. This parameter maps 1:1 with the Size parameter of + // the [CreateVolume API]in the Amazon EC2 API Reference. + // + // The following are the supported volume size values for each volume type. + // + // - gp2 and gp3 : 1-16,384 + // + // - io1 and io2 : 4-16,384 + // + // - st1 and sc1 : 125-16,384 + // + // - standard : 1-1,024 + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + SizeInGiB *int32 + + // The snapshot that Amazon ECS uses to create the volume. You must specify either + // a snapshot ID or a volume size. This parameter maps 1:1 with the SnapshotId + // parameter of the [CreateVolume API]in the Amazon EC2 API Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + SnapshotId *string + + // The tags to apply to the volume. Amazon ECS applies service-managed tags by + // default. This parameter maps 1:1 with the TagSpecifications.N parameter of the [CreateVolume API] + // in the Amazon EC2 API Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + TagSpecifications []EBSTagSpecification + + // The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 + // MiB/s. This parameter maps 1:1 with the Throughput parameter of the [CreateVolume API] in the + // Amazon EC2 API Reference. + // + // This parameter is only supported for the gp3 volume type. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + Throughput *int32 + + // The volume type. This parameter maps 1:1 with the VolumeType parameter of the [CreateVolume API] + // in the Amazon EC2 API Reference. For more information, see [Amazon EBS volume types]in the Amazon EC2 + // User Guide. + // + // The following are the supported volume types. + // + // - General Purpose SSD: gp2 | gp3 + // + // - Provisioned IOPS SSD: io1 | io2 + // + // - Throughput Optimized HDD: st1 + // + // - Cold HDD: sc1 + // + // - Magnetic: standard + // + // The magnetic volume type is not supported on Fargate. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + // [Amazon EBS volume types]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html + VolumeType *string + + noSmithyDocumentSerde +} + +// The details for the service registry. +// +// Each service may be associated with one service registry. Multiple service +// registries for each service are not supported. +// +// When you add, update, or remove the service registries configuration, Amazon +// ECS starts a new deployment. New tasks are registered and deregistered to the +// updated service registry configuration. +type ServiceRegistry struct { + + // The container name value to be used for your service discovery service. It's + // already specified in the task definition. If the task definition that your + // service task specifies uses the bridge or host network mode, you must specify a + // containerName and containerPort combination from the task definition. If the + // task definition that your service task specifies uses the awsvpc network mode + // and a type SRV DNS record is used, you must specify either a containerName and + // containerPort combination or a port value. However, you can't specify both. + ContainerName *string + + // The port value to be used for your service discovery service. It's already + // specified in the task definition. If the task definition your service task + // specifies uses the bridge or host network mode, you must specify a containerName + // and containerPort combination from the task definition. If the task definition + // your service task specifies uses the awsvpc network mode and a type SRV DNS + // record is used, you must specify either a containerName and containerPort + // combination or a port value. However, you can't specify both. + ContainerPort *int32 + + // The port value used if your service discovery service specified an SRV record. + // This field might be used if both the awsvpc network mode and SRV records are + // used. + Port *int32 + + // The Amazon Resource Name (ARN) of the service registry. The currently supported + // service registry is Cloud Map. For more information, see [CreateService]. + // + // [CreateService]: https://docs.aws.amazon.com/cloud-map/latest/api/API_CreateService.html + RegistryArn *string + + noSmithyDocumentSerde +} + +// Information about the service revision. +// +// A service revision contains a record of the workload configuration Amazon ECS +// is attempting to deploy. Whenever you create or deploy a service, Amazon ECS +// automatically creates and captures the configuration that you're trying to +// deploy in the service revision. For information about service revisions, see [Amazon ECS service revisions]in +// the Amazon Elastic Container Service Developer Guide . +// +// [Amazon ECS service revisions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-revision.html +type ServiceRevision struct { + + // The capacity provider strategy the service revision uses. + CapacityProviderStrategy []CapacityProviderStrategyItem + + // The ARN of the cluster that hosts the service. + ClusterArn *string + + // The container images the service revision uses. + ContainerImages []ContainerImage + + // The time that the service revision was created. The format is yyyy-mm-dd + // HH:mm:ss.SSSSS. + CreatedAt *time.Time + + // The amount of ephemeral storage to allocate for the deployment. + FargateEphemeralStorage *DeploymentEphemeralStorage + + // Indicates whether Runtime Monitoring is turned on. + GuardDutyEnabled bool + + // The launch type the service revision uses. + LaunchType LaunchType + + // The load balancers the service revision uses. + LoadBalancers []LoadBalancer + + // The network configuration for a task or service. + NetworkConfiguration *NetworkConfiguration + + // The platform family the service revision uses. + PlatformFamily *string + + // For the Fargate launch type, the platform version the service revision uses. + PlatformVersion *string + + // The ARN of the service for the service revision. + ServiceArn *string + + // The Service Connect configuration of your Amazon ECS service. The configuration + // for this service to discover and connect to services, and be discovered by, and + // connected from, other services within a namespace. + // + // Tasks that run in a namespace can use short names to connect to services in the + // namespace. Tasks can connect to services across all of the clusters in the + // namespace. Tasks connect through a managed proxy container that collects logs + // and metrics for increased visibility. Only the tasks that Amazon ECS services + // create are supported with Service Connect. For more information, see [Service Connect]in the + // Amazon Elastic Container Service Developer Guide. + // + // [Service Connect]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-connect.html + ServiceConnectConfiguration *ServiceConnectConfiguration + + // The service registries (for Service Discovery) the service revision uses. + ServiceRegistries []ServiceRegistry + + // The ARN of the service revision. + ServiceRevisionArn *string + + // The task definition the service revision uses. + TaskDefinition *string + + // The volumes that are configured at deployment that the service revision uses. + VolumeConfigurations []ServiceVolumeConfiguration + + // The VPC Lattice configuration for the service revision. + VpcLatticeConfigurations []VpcLatticeConfiguration + + noSmithyDocumentSerde +} + +// The information about the number of requested, pending, and running tasks for a +// service revision. +type ServiceRevisionSummary struct { + + // The ARN of the service revision. + Arn *string + + // The number of pending tasks for the service revision. + PendingTaskCount int32 + + // The number of requested tasks for the service revision. + RequestedTaskCount int32 + + // The number of running tasks for the service revision. + RunningTaskCount int32 + + noSmithyDocumentSerde +} + +// The configuration for a volume specified in the task definition as a volume +// that is configured at launch time. Currently, the only supported volume type is +// an Amazon EBS volume. +type ServiceVolumeConfiguration struct { + + // The name of the volume. This value must match the volume name from the Volume + // object in the task definition. + // + // This member is required. + Name *string + + // The configuration for the Amazon EBS volume that Amazon ECS creates and manages + // on your behalf. These settings are used to create each Amazon EBS volume, with + // one volume created for each task in the service. The Amazon EBS volumes are + // visible in your account in the Amazon EC2 console once they are created. + ManagedEBSVolume *ServiceManagedEBSVolumeConfiguration + + noSmithyDocumentSerde +} + +// The details for the execute command session. +type Session struct { + + // The ID of the execute command session. + SessionId *string + + // A URL to the managed agent on the container that the SSM Session Manager client + // uses to send commands and receive output from the container. + StreamUrl *string + + // An encrypted token value containing session and caller information. It's used + // to authenticate the connection to the container. + TokenValue *string + + noSmithyDocumentSerde +} + +// The current account setting for a resource. +type Setting struct { + + // The Amazon ECS resource name. + Name SettingName + + // The ARN of the principal. It can be a user, role, or the root user. If this + // field is omitted, the authenticated user is assumed. + PrincipalArn *string + + // Indicates whether Amazon Web Services manages the account setting, or if the + // user manages it. + // + // aws_managed account settings are read-only, as Amazon Web Services manages such + // on the customer's behalf. Currently, the guardDutyActivate account setting is + // the only one Amazon Web Services manages. + Type SettingType + + // Determines whether the account setting is on or off for the specified resource. + Value *string + + noSmithyDocumentSerde +} + +// A list of namespaced kernel parameters to set in the container. This parameter +// maps to Sysctls in the docker container create command and the --sysctl option +// to docker run. For example, you can configure net.ipv4.tcp_keepalive_time +// setting to maintain longer lived connections. +// +// We don't recommend that you specify network-related systemControls parameters +// for multiple containers in a single task that also uses either the awsvpc or +// host network mode. Doing this has the following disadvantages: +// +// - For tasks that use the awsvpc network mode including Fargate, if you set +// systemControls for any container, it applies to all containers in the task. If +// you set different systemControls for multiple containers in a single task, the +// container that's started last determines which systemControls take effect. +// +// - For tasks that use the host network mode, the network namespace +// systemControls aren't supported. +// +// If you're setting an IPC resource namespace to use for the containers in the +// task, the following conditions apply to your system controls. For more +// information, see [IPC mode]. +// +// - For tasks that use the host IPC mode, IPC namespace systemControls aren't +// supported. +// +// - For tasks that use the task IPC mode, IPC namespace systemControls values +// apply to all containers within a task. +// +// This parameter is not supported for Windows containers. +// +// This parameter is only supported for tasks that are hosted on Fargate if the +// tasks are using platform version 1.4.0 or later (Linux). This isn't supported +// for Windows containers on Fargate. +// +// [IPC mode]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#task_definition_ipcmode +type SystemControl struct { + + // The namespaced kernel parameter to set a value for. + Namespace *string + + // The namespaced kernel parameter to set a value for. + // + // Valid IPC namespace values: "kernel.msgmax" | "kernel.msgmnb" | "kernel.msgmni" + // | "kernel.sem" | "kernel.shmall" | "kernel.shmmax" | "kernel.shmmni" | + // "kernel.shm_rmid_forced" , and Sysctls that start with "fs.mqueue.*" + // + // Valid network namespace values: Sysctls that start with "net.*" + // + // All of these values are supported by Fargate. + Value *string + + noSmithyDocumentSerde +} + +// The metadata that you apply to a resource to help you categorize and organize +// them. Each tag consists of a key and an optional value. You define them. +// +// The following basic restrictions apply to tags: +// +// - Maximum number of tags per resource - 50 +// +// - For each resource, each tag key must be unique, and each tag key can have +// only one value. +// +// - Maximum key length - 128 Unicode characters in UTF-8 +// +// - Maximum value length - 256 Unicode characters in UTF-8 +// +// - If your tagging schema is used across multiple services and resources, +// remember that other services may have restrictions on allowed characters. +// Generally allowed characters are: letters, numbers, and spaces representable in +// UTF-8, and the following characters: + - = . _ : / @. +// +// - Tag keys and values are case-sensitive. +// +// - Do not use aws: , AWS: , or any upper or lowercase combination of such as a +// prefix for either keys or values as it is reserved for Amazon Web Services use. +// You cannot edit or delete tag keys or values with this prefix. Tags with this +// prefix do not count against your tags per resource limit. +type Tag struct { + + // One part of a key-value pair that make up a tag. A key is a general label that + // acts like a category for more specific tag values. + Key *string + + // The optional part of a key-value pair that make up a tag. A value acts as a + // descriptor within a tag category (key). + Value *string + + noSmithyDocumentSerde +} + +// Details on a task in a cluster. +type Task struct { + + // The Elastic Network Adapter that's associated with the task if the task uses + // the awsvpc network mode. + Attachments []Attachment + + // The attributes of the task + Attributes []Attribute + + // The Availability Zone for the task. + AvailabilityZone *string + + // The capacity provider that's associated with the task. + CapacityProviderName *string + + // The ARN of the cluster that hosts the task. + ClusterArn *string + + // The connectivity status of a task. + Connectivity Connectivity + + // The Unix timestamp for the time when the task last went into CONNECTED status. + ConnectivityAt *time.Time + + // The ARN of the container instances that host the task. + ContainerInstanceArn *string + + // The containers that's associated with the task. + Containers []Container + + // The number of CPU units used by the task as expressed in a task definition. It + // can be expressed as an integer using CPU units (for example, 1024 ). It can also + // be expressed as a string using vCPUs (for example, 1 vCPU or 1 vcpu ). String + // values are converted to an integer that indicates the CPU units when the task + // definition is registered. + // + // If you use the EC2 launch type, this field is optional. Supported values are + // between 128 CPU units ( 0.125 vCPUs) and 10240 CPU units ( 10 vCPUs). + // + // If you use the Fargate launch type, this field is required. You must use one of + // the following values. These values determine the range of supported values for + // the memory parameter: + // + // The CPU units cannot be less than 1 vCPU when you use Windows containers on + // Fargate. + // + // - 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 + // GB) + // + // - 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 + // GB), 4096 (4 GB) + // + // - 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 + // GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) + // + // - 2048 (2 vCPU) - Available memory values: 4096 (4 GB) and 16384 (16 GB) in + // increments of 1024 (1 GB) + // + // - 4096 (4 vCPU) - Available memory values: 8192 (8 GB) and 30720 (30 GB) in + // increments of 1024 (1 GB) + // + // - 8192 (8 vCPU) - Available memory values: 16 GB and 60 GB in 4 GB increments + // + // This option requires Linux platform 1.4.0 or later. + // + // - 16384 (16vCPU) - Available memory values: 32GB and 120 GB in 8 GB increments + // + // This option requires Linux platform 1.4.0 or later. + Cpu *string + + // The Unix timestamp for the time when the task was created. More specifically, + // it's for the time when the task entered the PENDING state. + CreatedAt *time.Time + + // The desired status of the task. For more information, see [Task Lifecycle]. + // + // [Task Lifecycle]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-lifecycle.html + DesiredStatus *string + + // Determines whether execute command functionality is turned on for this task. If + // true , execute command functionality is turned on all the containers in the task. + EnableExecuteCommand bool + + // The ephemeral storage settings for the task. + EphemeralStorage *EphemeralStorage + + // The Unix timestamp for the time when the task execution stopped. + ExecutionStoppedAt *time.Time + + // The Fargate ephemeral storage settings for the task. + FargateEphemeralStorage *TaskEphemeralStorage + + // The name of the task group that's associated with the task. + Group *string + + // The health status for the task. It's determined by the health of the essential + // containers in the task. If all essential containers in the task are reporting as + // HEALTHY , the task status also reports as HEALTHY . If any essential containers + // in the task are reporting as UNHEALTHY or UNKNOWN , the task status also reports + // as UNHEALTHY or UNKNOWN . + // + // The Amazon ECS container agent doesn't monitor or report on Docker health + // checks that are embedded in a container image and not specified in the container + // definition. For example, this includes those specified in a parent image or from + // the image's Dockerfile. Health check parameters that are specified in a + // container definition override any Docker health checks that are found in the + // container image. + HealthStatus HealthStatus + + // The Elastic Inference accelerator that's associated with the task. + InferenceAccelerators []InferenceAccelerator + + // The last known status for the task. For more information, see [Task Lifecycle]. + // + // [Task Lifecycle]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-lifecycle.html + LastStatus *string + + // The infrastructure where your task runs on. For more information, see [Amazon ECS launch types] in the + // Amazon Elastic Container Service Developer Guide. + // + // [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + LaunchType LaunchType + + // The amount of memory (in MiB) that the task uses as expressed in a task + // definition. It can be expressed as an integer using MiB (for example, 1024 ). If + // it's expressed as a string using GB (for example, 1GB or 1 GB ), it's converted + // to an integer indicating the MiB when the task definition is registered. + // + // If you use the EC2 launch type, this field is optional. + // + // If you use the Fargate launch type, this field is required. You must use one of + // the following values. The value that you choose determines the range of + // supported values for the cpu parameter. + // + // - 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) + // + // - 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: + // 512 (.5 vCPU) + // + // - 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 + // GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) + // + // - Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - + // Available cpu values: 2048 (2 vCPU) + // + // - Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - + // Available cpu values: 4096 (4 vCPU) + // + // - Between 16 GB and 60 GB in 4 GB increments - Available cpu values: 8192 (8 + // vCPU) + // + // This option requires Linux platform 1.4.0 or later. + // + // - Between 32GB and 120 GB in 8 GB increments - Available cpu values: 16384 (16 + // vCPU) + // + // This option requires Linux platform 1.4.0 or later. + Memory *string + + // One or more container overrides. + Overrides *TaskOverride + + // The operating system that your tasks are running on. A platform family is + // specified only for tasks that use the Fargate launch type. + // + // All tasks that run as part of this service must use the same platformFamily + // value as the service (for example, LINUX. ). + PlatformFamily *string + + // The platform version where your task runs on. A platform version is only + // specified for tasks that use the Fargate launch type. If you didn't specify one, + // the LATEST platform version is used. For more information, see [Fargate Platform Versions] in the Amazon + // Elastic Container Service Developer Guide. + // + // [Fargate Platform Versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + PlatformVersion *string + + // The Unix timestamp for the time when the container image pull began. + PullStartedAt *time.Time + + // The Unix timestamp for the time when the container image pull completed. + PullStoppedAt *time.Time + + // The Unix timestamp for the time when the task started. More specifically, it's + // for the time when the task transitioned from the PENDING state to the RUNNING + // state. + StartedAt *time.Time + + // The tag specified when a task is started. If an Amazon ECS service started the + // task, the startedBy parameter contains the deployment ID of that service. + StartedBy *string + + // The stop code indicating why a task was stopped. The stoppedReason might + // contain additional details. + // + // For more information about stop code, see [Stopped tasks error codes] in the Amazon ECS Developer Guide. + // + // [Stopped tasks error codes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/stopped-task-error-codes.html + StopCode TaskStopCode + + // The Unix timestamp for the time when the task was stopped. More specifically, + // it's for the time when the task transitioned from the RUNNING state to the + // STOPPED state. + StoppedAt *time.Time + + // The reason that the task was stopped. + StoppedReason *string + + // The Unix timestamp for the time when the task stops. More specifically, it's + // for the time when the task transitions from the RUNNING state to STOPPING . + StoppingAt *time.Time + + // The metadata that you apply to the task to help you categorize and organize the + // task. Each tag consists of a key and an optional value. You define both the key + // and value. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []Tag + + // The Amazon Resource Name (ARN) of the task. + TaskArn *string + + // The ARN of the task definition that creates the task. + TaskDefinitionArn *string + + // The version counter for the task. Every time a task experiences a change that + // starts a CloudWatch event, the version counter is incremented. If you replicate + // your Amazon ECS task state with CloudWatch Events, you can compare the version + // of a task reported by the Amazon ECS API actions with the version reported in + // CloudWatch Events for the task (inside the detail object) to verify that the + // version in your event stream is current. + Version int64 + + noSmithyDocumentSerde +} + +// The details of a task definition which describes the container and volume +// definitions of an Amazon Elastic Container Service task. You can specify which +// Docker images to use, the required resources, and other configurations related +// to launching the task definition through an Amazon ECS service or task. +type TaskDefinition struct { + + // Amazon ECS validates the task definition parameters with those supported by the + // launch type. For more information, see [Amazon ECS launch types]in the Amazon Elastic Container Service + // Developer Guide. + // + // [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + Compatibilities []Compatibility + + // A list of container definitions in JSON format that describe the different + // containers that make up your task. For more information about container + // definition parameters and defaults, see [Amazon ECS Task Definitions]in the Amazon Elastic Container Service + // Developer Guide. + // + // [Amazon ECS Task Definitions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_defintions.html + ContainerDefinitions []ContainerDefinition + + // The number of cpu units used by the task. If you use the EC2 launch type, this + // field is optional. Any value can be used. If you use the Fargate launch type, + // this field is required. You must use one of the following values. The value that + // you choose determines your range of valid values for the memory parameter. + // + // If you use the EC2 launch type, this field is optional. Supported values are + // between 128 CPU units ( 0.125 vCPUs) and 10240 CPU units ( 10 vCPUs). + // + // The CPU units cannot be less than 1 vCPU when you use Windows containers on + // Fargate. + // + // - 256 (.25 vCPU) - Available memory values: 512 (0.5 GB), 1024 (1 GB), 2048 (2 + // GB) + // + // - 512 (.5 vCPU) - Available memory values: 1024 (1 GB), 2048 (2 GB), 3072 (3 + // GB), 4096 (4 GB) + // + // - 1024 (1 vCPU) - Available memory values: 2048 (2 GB), 3072 (3 GB), 4096 (4 + // GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 GB), 8192 (8 GB) + // + // - 2048 (2 vCPU) - Available memory values: 4096 (4 GB) and 16384 (16 GB) in + // increments of 1024 (1 GB) + // + // - 4096 (4 vCPU) - Available memory values: 8192 (8 GB) and 30720 (30 GB) in + // increments of 1024 (1 GB) + // + // - 8192 (8 vCPU) - Available memory values: 16 GB and 60 GB in 4 GB increments + // + // This option requires Linux platform 1.4.0 or later. + // + // - 16384 (16vCPU) - Available memory values: 32GB and 120 GB in 8 GB increments + // + // This option requires Linux platform 1.4.0 or later. + Cpu *string + + // The Unix timestamp for the time when the task definition was deregistered. + DeregisteredAt *time.Time + + // Enables fault injection and allows for fault injection requests to be accepted + // from the task's containers. The default value is false . + EnableFaultInjection *bool + + // The ephemeral storage settings to use for tasks run with the task definition. + EphemeralStorage *EphemeralStorage + + // The Amazon Resource Name (ARN) of the task execution role that grants the + // Amazon ECS container agent permission to make Amazon Web Services API calls on + // your behalf. For informationabout the required IAM roles for Amazon ECS, see [IAM roles for Amazon ECS]in + // the Amazon Elastic Container Service Developer Guide. + // + // [IAM roles for Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-ecs-iam-role-overview.html + ExecutionRoleArn *string + + // The name of a family that this task definition is registered to. Up to 255 + // characters are allowed. Letters (both uppercase and lowercase letters), numbers, + // hyphens (-), and underscores (_) are allowed. + // + // A family groups multiple versions of a task definition. Amazon ECS gives the + // first task definition that you registered to a family a revision number of 1. + // Amazon ECS gives sequential revision numbers to each task definition that you + // add. + Family *string + + // The Elastic Inference accelerator that's associated with the task. + InferenceAccelerators []InferenceAccelerator + + // The IPC resource namespace to use for the containers in the task. The valid + // values are host , task , or none . If host is specified, then all containers + // within the tasks that specified the host IPC mode on the same container + // instance share the same IPC resources with the host Amazon EC2 instance. If task + // is specified, all containers within the specified task share the same IPC + // resources. If none is specified, then IPC resources within the containers of a + // task are private and not shared with other containers in a task or on the + // container instance. If no value is specified, then the IPC resource namespace + // sharing depends on the Docker daemon setting on the container instance. + // + // If the host IPC mode is used, be aware that there is a heightened risk of + // undesired IPC namespace expose. + // + // If you are setting namespaced kernel parameters using systemControls for the + // containers in the task, the following will apply to your IPC resource namespace. + // For more information, see [System Controls]in the Amazon Elastic Container Service Developer + // Guide. + // + // - For tasks that use the host IPC mode, IPC namespace related systemControls + // are not supported. + // + // - For tasks that use the task IPC mode, IPC namespace related systemControls + // will apply to all containers within a task. + // + // This parameter is not supported for Windows containers or tasks run on Fargate. + // + // [System Controls]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html + IpcMode IpcMode + + // The amount (in MiB) of memory used by the task. + // + // If your tasks runs on Amazon EC2 instances, you must specify either a + // task-level memory value or a container-level memory value. This field is + // optional and any value can be used. If a task-level memory value is specified, + // the container-level memory value is optional. For more information regarding + // container-level memory and memory reservation, see [ContainerDefinition]. + // + // If your tasks runs on Fargate, this field is required. You must use one of the + // following values. The value you choose determines your range of valid values for + // the cpu parameter. + // + // - 512 (0.5 GB), 1024 (1 GB), 2048 (2 GB) - Available cpu values: 256 (.25 vCPU) + // + // - 1024 (1 GB), 2048 (2 GB), 3072 (3 GB), 4096 (4 GB) - Available cpu values: + // 512 (.5 vCPU) + // + // - 2048 (2 GB), 3072 (3 GB), 4096 (4 GB), 5120 (5 GB), 6144 (6 GB), 7168 (7 + // GB), 8192 (8 GB) - Available cpu values: 1024 (1 vCPU) + // + // - Between 4096 (4 GB) and 16384 (16 GB) in increments of 1024 (1 GB) - + // Available cpu values: 2048 (2 vCPU) + // + // - Between 8192 (8 GB) and 30720 (30 GB) in increments of 1024 (1 GB) - + // Available cpu values: 4096 (4 vCPU) + // + // - Between 16 GB and 60 GB in 4 GB increments - Available cpu values: 8192 (8 + // vCPU) + // + // This option requires Linux platform 1.4.0 or later. + // + // - Between 32GB and 120 GB in 8 GB increments - Available cpu values: 16384 (16 + // vCPU) + // + // This option requires Linux platform 1.4.0 or later. + // + // [ContainerDefinition]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html + Memory *string + + // The Docker networking mode to use for the containers in the task. The valid + // values are none , bridge , awsvpc , and host . If no network mode is specified, + // the default is bridge . + // + // For Amazon ECS tasks on Fargate, the awsvpc network mode is required. For + // Amazon ECS tasks on Amazon EC2 Linux instances, any network mode can be used. + // For Amazon ECS tasks on Amazon EC2 Windows instances, or awsvpc can be used. If + // the network mode is set to none , you cannot specify port mappings in your + // container definitions, and the tasks containers do not have external + // connectivity. The host and awsvpc network modes offer the highest networking + // performance for containers because they use the EC2 network stack instead of the + // virtualized network stack provided by the bridge mode. + // + // With the host and awsvpc network modes, exposed container ports are mapped + // directly to the corresponding host port (for the host network mode) or the + // attached elastic network interface port (for the awsvpc network mode), so you + // cannot take advantage of dynamic host port mappings. + // + // When using the host network mode, you should not run containers using the root + // user (UID 0). It is considered best practice to use a non-root user. + // + // If the network mode is awsvpc , the task is allocated an elastic network + // interface, and you must specify a [NetworkConfiguration]value when you create a service or run a task + // with the task definition. For more information, see [Task Networking]in the Amazon Elastic + // Container Service Developer Guide. + // + // If the network mode is host , you cannot run multiple instantiations of the same + // task on a single container instance when port mappings are used. + // + // [Task Networking]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html + // [NetworkConfiguration]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_NetworkConfiguration.html + NetworkMode NetworkMode + + // The process namespace to use for the containers in the task. The valid values + // are host or task . On Fargate for Linux containers, the only valid value is task + // . For example, monitoring sidecars might need pidMode to access information + // about other containers running in the same task. + // + // If host is specified, all containers within the tasks that specified the host + // PID mode on the same container instance share the same process namespace with + // the host Amazon EC2 instance. + // + // If task is specified, all containers within the specified task share the same + // process namespace. + // + // If no value is specified, the default is a private namespace for each container. + // + // If the host PID mode is used, there's a heightened risk of undesired process + // namespace exposure. + // + // This parameter is not supported for Windows containers. + // + // This parameter is only supported for tasks that are hosted on Fargate if the + // tasks are using platform version 1.4.0 or later (Linux). This isn't supported + // for Windows containers on Fargate. + PidMode PidMode + + // An array of placement constraint objects to use for tasks. + // + // This parameter isn't supported for tasks run on Fargate. + PlacementConstraints []TaskDefinitionPlacementConstraint + + // The configuration details for the App Mesh proxy. + // + // Your Amazon ECS container instances require at least version 1.26.0 of the + // container agent and at least version 1.26.0-1 of the ecs-init package to use a + // proxy configuration. If your container instances are launched from the Amazon + // ECS optimized AMI version 20190301 or later, they contain the required versions + // of the container agent and ecs-init . For more information, see [Amazon ECS-optimized Linux AMI] in the Amazon + // Elastic Container Service Developer Guide. + // + // [Amazon ECS-optimized Linux AMI]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html + ProxyConfiguration *ProxyConfiguration + + // The Unix timestamp for the time when the task definition was registered. + RegisteredAt *time.Time + + // The principal that registered the task definition. + RegisteredBy *string + + // The container instance attributes required by your task. When an Amazon EC2 + // instance is registered to your cluster, the Amazon ECS container agent assigns + // some standard attributes to the instance. You can apply custom attributes. These + // are specified as key-value pairs using the Amazon ECS console or the [PutAttributes]API. These + // attributes are used when determining task placement for tasks hosted on Amazon + // EC2 instances. For more information, see [Attributes]in the Amazon Elastic Container + // Service Developer Guide. + // + // This parameter isn't supported for tasks run on Fargate. + // + // [PutAttributes]: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PutAttributes.html + // [Attributes]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html#attributes + RequiresAttributes []Attribute + + // The task launch types the task definition was validated against. The valid + // values are EC2 , FARGATE , and EXTERNAL . For more information, see [Amazon ECS launch types] in the + // Amazon Elastic Container Service Developer Guide. + // + // [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + RequiresCompatibilities []Compatibility + + // The revision of the task in a particular family. The revision is a version + // number of a task definition in a family. When you register a task definition for + // the first time, the revision is 1 . Each time that you register a new revision + // of a task definition in the same family, the revision value always increases by + // one. This is even if you deregistered previous revisions in this family. + Revision int32 + + // The operating system that your task definitions are running on. A platform + // family is specified only for tasks using the Fargate launch type. + // + // When you specify a task in a service, this value must match the runtimePlatform + // value of the service. + RuntimePlatform *RuntimePlatform + + // The status of the task definition. + Status TaskDefinitionStatus + + // The full Amazon Resource Name (ARN) of the task definition. + TaskDefinitionArn *string + + // The short name or full Amazon Resource Name (ARN) of the Identity and Access + // Management role that grants containers in the task permission to call Amazon Web + // Services APIs on your behalf. For informationabout the required IAM roles for + // Amazon ECS, see [IAM roles for Amazon ECS]in the Amazon Elastic Container Service Developer Guide. + // + // [IAM roles for Amazon ECS]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/security-ecs-iam-role-overview.html + TaskRoleArn *string + + // The list of data volume definitions for the task. For more information, see [Using data volumes in tasks] in + // the Amazon Elastic Container Service Developer Guide. + // + // The host and sourcePath parameters aren't supported for tasks run on Fargate. + // + // [Using data volumes in tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html + Volumes []Volume + + noSmithyDocumentSerde +} + +// The constraint on task placement in the task definition. For more information, +// see [Task placement constraints]in the Amazon Elastic Container Service Developer Guide. +// +// Task placement constraints aren't supported for tasks run on Fargate. +// +// [Task placement constraints]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-constraints.html +type TaskDefinitionPlacementConstraint struct { + + // A cluster query language expression to apply to the constraint. For more + // information, see [Cluster query language]in the Amazon Elastic Container Service Developer Guide. + // + // [Cluster query language]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html + Expression *string + + // The type of constraint. The MemberOf constraint restricts selection to be from + // a group of valid candidates. + Type TaskDefinitionPlacementConstraintType + + noSmithyDocumentSerde +} + +// The amount of ephemeral storage to allocate for the task. +type TaskEphemeralStorage struct { + + // Specify an Key Management Service key ID to encrypt the ephemeral storage for + // the task. + KmsKeyId *string + + // The total amount, in GiB, of the ephemeral storage to set for the task. The + // minimum supported value is 20 GiB and the maximum supported value is
 200 GiB. + SizeInGiB int32 + + noSmithyDocumentSerde +} + +// The configuration for the Amazon EBS volume that Amazon ECS creates and manages +// on your behalf. These settings are used to create each Amazon EBS volume, with +// one volume created for each task. +type TaskManagedEBSVolumeConfiguration struct { + + // The ARN of the IAM role to associate with this volume. This is the Amazon ECS + // infrastructure IAM role that is used to manage your Amazon Web Services + // infrastructure. We recommend using the Amazon ECS-managed + // AmazonECSInfrastructureRolePolicyForVolumes IAM policy with this role. For more + // information, see [Amazon ECS infrastructure IAM role]in the Amazon ECS Developer Guide. + // + // [Amazon ECS infrastructure IAM role]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html + // + // This member is required. + RoleArn *string + + // Indicates whether the volume should be encrypted. If no value is specified, + // encryption is turned on by default. This parameter maps 1:1 with the Encrypted + // parameter of the [CreateVolume API]in the Amazon EC2 API Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + Encrypted *bool + + // The Linux filesystem type for the volume. For volumes created from a snapshot, + // you must specify the same filesystem type that the volume was using when the + // snapshot was created. If there is a filesystem type mismatch, the task will fail + // to start. + // + // The available filesystem types are
 ext3 , ext4 , and xfs . If no value is + // specified, the xfs filesystem type is used by default. + FilesystemType TaskFilesystemType + + // The number of I/O operations per second (IOPS). For gp3 , io1 , and io2 + // volumes, this represents the number of IOPS that are provisioned for the volume. + // For gp2 volumes, this represents the baseline performance of the volume and the + // rate at which the volume accumulates I/O credits for bursting. + // + // The following are the supported values for each volume type. + // + // - gp3 : 3,000 - 16,000 IOPS + // + // - io1 : 100 - 64,000 IOPS + // + // - io2 : 100 - 256,000 IOPS + // + // This parameter is required for io1 and io2 volume types. The default for gp3 + // volumes is 3,000 IOPS . This parameter is not supported for st1 , sc1 , or + // standard volume types. + // + // This parameter maps 1:1 with the Iops parameter of the [CreateVolume API] in the Amazon EC2 API + // Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + Iops *int32 + + // The Amazon Resource Name (ARN) identifier of the Amazon Web Services Key + // Management Service key to use for Amazon EBS encryption. When encryption is + // turned on and no Amazon Web Services Key Management Service key is specified, + // the default Amazon Web Services managed key for Amazon EBS volumes is used. This + // parameter maps 1:1 with the KmsKeyId parameter of the [CreateVolume API] in the Amazon EC2 API + // Reference. + // + // Amazon Web Services authenticates the Amazon Web Services Key Management + // Service key asynchronously. Therefore, if you specify an ID, alias, or ARN that + // is invalid, the action can appear to complete, but eventually fails. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + KmsKeyId *string + + // The size of the volume in GiB. You must specify either a volume size or a + // snapshot ID. If you specify a snapshot ID, the snapshot size is used for the + // volume size by default. You can optionally specify a volume size greater than or + // equal to the snapshot size. This parameter maps 1:1 with the Size parameter of + // the [CreateVolume API]in the Amazon EC2 API Reference. + // + // The following are the supported volume size values for each volume type. + // + // - gp2 and gp3 : 1-16,384 + // + // - io1 and io2 : 4-16,384 + // + // - st1 and sc1 : 125-16,384 + // + // - standard : 1-1,024 + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + SizeInGiB *int32 + + // The snapshot that Amazon ECS uses to create the volume. You must specify either + // a snapshot ID or a volume size. This parameter maps 1:1 with the SnapshotId + // parameter of the [CreateVolume API]in the Amazon EC2 API Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + SnapshotId *string + + // The tags to apply to the volume. Amazon ECS applies service-managed tags by + // default. This parameter maps 1:1 with the TagSpecifications.N parameter of the [CreateVolume API] + // in the Amazon EC2 API Reference. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + TagSpecifications []EBSTagSpecification + + // The termination policy for the volume when the task exits. This provides a way + // to control whether Amazon ECS terminates the Amazon EBS volume when the task + // stops. + TerminationPolicy *TaskManagedEBSVolumeTerminationPolicy + + // The throughput to provision for a volume, in MiB/s, with a maximum of 1,000 + // MiB/s. This parameter maps 1:1 with the Throughput parameter of the [CreateVolume API] in the + // Amazon EC2 API Reference. + // + // This parameter is only supported for the gp3 volume type. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + Throughput *int32 + + // The volume type. This parameter maps 1:1 with the VolumeType parameter of the [CreateVolume API] + // in the Amazon EC2 API Reference. For more information, see [Amazon EBS volume types]in the Amazon EC2 + // User Guide. + // + // The following are the supported volume types. + // + // - General Purpose SSD: gp2 | gp3 + // + // - Provisioned IOPS SSD: io1 | io2 + // + // - Throughput Optimized HDD: st1 + // + // - Cold HDD: sc1 + // + // - Magnetic: standard + // + // The magnetic volume type is not supported on Fargate. + // + // [CreateVolume API]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVolume.html + // [Amazon EBS volume types]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html + VolumeType *string + + noSmithyDocumentSerde +} + +// The termination policy for the Amazon EBS volume when the task exits. For more +// information, see [Amazon ECS volume termination policy]. +// +// [Amazon ECS volume termination policy]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ebs-volumes.html#ebs-volume-types +type TaskManagedEBSVolumeTerminationPolicy struct { + + // Indicates whether the volume should be deleted on when the task stops. If a + // value of true is specified, 
Amazon ECS deletes the Amazon EBS volume on your + // behalf when the task goes into the STOPPED state. If no value is specified, the + // 
default value is true is used. When set to false , Amazon ECS leaves the volume + // in your 
account. + // + // This member is required. + DeleteOnTermination *bool + + noSmithyDocumentSerde +} + +// The overrides that are associated with a task. +type TaskOverride struct { + + // One or more container overrides that are sent to a task. + ContainerOverrides []ContainerOverride + + // The CPU override for the task. + Cpu *string + + // The ephemeral storage setting override for the task. + // + // This parameter is only supported for tasks hosted on Fargate that use the + // following platform versions: + // + // - Linux platform version 1.4.0 or later. + // + // - Windows platform version 1.0.0 or later. + EphemeralStorage *EphemeralStorage + + // The Amazon Resource Name (ARN) of the task execution role override for the + // task. For more information, see [Amazon ECS task execution IAM role]in the Amazon Elastic Container Service + // Developer Guide. + // + // [Amazon ECS task execution IAM role]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html + ExecutionRoleArn *string + + // The Elastic Inference accelerator override for the task. + InferenceAcceleratorOverrides []InferenceAcceleratorOverride + + // The memory override for the task. + Memory *string + + // The Amazon Resource Name (ARN) of the role that containers in this task can + // assume. All containers in this task are granted the permissions that are + // specified in this role. For more information, see [IAM Role for Tasks]in the Amazon Elastic + // Container Service Developer Guide. + // + // [IAM Role for Tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html + TaskRoleArn *string + + noSmithyDocumentSerde +} + +// Information about a set of Amazon ECS tasks in either an CodeDeploy or an +// EXTERNAL deployment. An Amazon ECS task set includes details such as the desired +// number of tasks, how many tasks are running, and whether the task set serves +// production traffic. +type TaskSet struct { + + // The capacity provider strategy that are associated with the task set. + CapacityProviderStrategy []CapacityProviderStrategyItem + + // The Amazon Resource Name (ARN) of the cluster that the service that hosts the + // task set exists in. + ClusterArn *string + + // The computed desired count for the task set. This is calculated by multiplying + // the service's desiredCount by the task set's scale percentage. The result is + // always rounded up. For example, if the computed desired count is 1.2, it rounds + // up to 2 tasks. + ComputedDesiredCount int32 + + // The Unix timestamp for the time when the task set was created. + CreatedAt *time.Time + + // The external ID associated with the task set. + // + // If an CodeDeploy deployment created a task set, the externalId parameter + // contains the CodeDeploy deployment ID. + // + // If a task set is created for an external deployment and is associated with a + // service discovery registry, the externalId parameter contains the + // ECS_TASK_SET_EXTERNAL_ID Cloud Map attribute. + ExternalId *string + + // The Fargate ephemeral storage settings for the task set. + FargateEphemeralStorage *DeploymentEphemeralStorage + + // The ID of the task set. + Id *string + + // The launch type the tasks in the task set are using. For more information, see [Amazon ECS launch types] + // in the Amazon Elastic Container Service Developer Guide. + // + // [Amazon ECS launch types]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html + LaunchType LaunchType + + // Details on a load balancer that are used with a task set. + LoadBalancers []LoadBalancer + + // The network configuration for the task set. + NetworkConfiguration *NetworkConfiguration + + // The number of tasks in the task set that are in the PENDING status during a + // deployment. A task in the PENDING state is preparing to enter the RUNNING + // state. A task set enters the PENDING status when it launches for the first time + // or when it's restarted after being in the STOPPED state. + PendingCount int32 + + // The operating system that your tasks in the set are running on. A platform + // family is specified only for tasks that use the Fargate launch type. + // + // All tasks in the set must have the same value. + PlatformFamily *string + + // The Fargate platform version where the tasks in the task set are running. A + // platform version is only specified for tasks run on Fargate. For more + // information, see [Fargate platform versions]in the Amazon Elastic Container Service Developer Guide. + // + // [Fargate platform versions]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html + PlatformVersion *string + + // The number of tasks in the task set that are in the RUNNING status during a + // deployment. A task in the RUNNING state is running and ready for use. + RunningCount int32 + + // A floating-point percentage of your desired number of tasks to place and keep + // running in the task set. + Scale *Scale + + // The Amazon Resource Name (ARN) of the service the task set exists in. + ServiceArn *string + + // The details for the service discovery registries to assign to this task set. + // For more information, see [Service discovery]. + // + // [Service discovery]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html + ServiceRegistries []ServiceRegistry + + // The stability status. This indicates whether the task set has reached a steady + // state. If the following conditions are met, the task set are in STEADY_STATE : + // + // - The task runningCount is equal to the computedDesiredCount . + // + // - The pendingCount is 0 . + // + // - There are no tasks that are running on container instances in the DRAINING + // status. + // + // - All tasks are reporting a healthy status from the load balancers, service + // discovery, and container health checks. + // + // If any of those conditions aren't met, the stability status returns STABILIZING . + StabilityStatus StabilityStatus + + // The Unix timestamp for the time when the task set stability status was + // retrieved. + StabilityStatusAt *time.Time + + // The tag specified when a task set is started. If an CodeDeploy deployment + // created the task set, the startedBy parameter is CODE_DEPLOY . If an external + // deployment created the task set, the startedBy field isn't used. + StartedBy *string + + // The status of the task set. The following describes each state. + // + // PRIMARY The task set is serving production traffic. + // + // ACTIVE The task set isn't serving production traffic. + // + // DRAINING The tasks in the task set are being stopped, and their corresponding + // targets are being deregistered from their target group. + Status *string + + // The metadata that you apply to the task set to help you categorize and organize + // them. Each tag consists of a key and an optional value. You define both. + // + // The following basic restrictions apply to tags: + // + // - Maximum number of tags per resource - 50 + // + // - For each resource, each tag key must be unique, and each tag key can have + // only one value. + // + // - Maximum key length - 128 Unicode characters in UTF-8 + // + // - Maximum value length - 256 Unicode characters in UTF-8 + // + // - If your tagging schema is used across multiple services and resources, + // remember that other services may have restrictions on allowed characters. + // Generally allowed characters are: letters, numbers, and spaces representable in + // UTF-8, and the following characters: + - = . _ : / @. + // + // - Tag keys and values are case-sensitive. + // + // - Do not use aws: , AWS: , or any upper or lowercase combination of such as a + // prefix for either keys or values as it is reserved for Amazon Web Services use. + // You cannot edit or delete tag keys or values with this prefix. Tags with this + // prefix do not count against your tags per resource limit. + Tags []Tag + + // The task definition that the task set is using. + TaskDefinition *string + + // The Amazon Resource Name (ARN) of the task set. + TaskSetArn *string + + // The Unix timestamp for the time when the task set was last updated. + UpdatedAt *time.Time + + noSmithyDocumentSerde +} + +// Configuration settings for the task volume that was configuredAtLaunch that +// weren't set during RegisterTaskDef . +type TaskVolumeConfiguration struct { + + // The name of the volume. This value must match the volume name from the Volume + // object in the task definition. + // + // This member is required. + Name *string + + // The configuration for the Amazon EBS volume that Amazon ECS creates and manages + // on your behalf. These settings are used to create each Amazon EBS volume, with + // one volume created for each task. The Amazon EBS volumes are visible in your + // account in the Amazon EC2 console once they are created. + ManagedEBSVolume *TaskManagedEBSVolumeConfiguration + + noSmithyDocumentSerde +} + +// An object that represents the timeout configurations for Service Connect. +// +// If idleTimeout is set to a time that is less than perRequestTimeout , the +// connection will close when the idleTimeout is reached and not the +// perRequestTimeout . +type TimeoutConfiguration struct { + + // The amount of time in seconds a connection will stay active while idle. A value + // of 0 can be set to disable idleTimeout . + // + // The idleTimeout default for HTTP / HTTP2 / GRPC is 5 minutes. + // + // The idleTimeout default for TCP is 1 hour. + IdleTimeoutSeconds *int32 + + // The amount of time waiting for the upstream to respond with a complete response + // per request. A value of 0 can be set to disable perRequestTimeout . + // perRequestTimeout can only be set if Service Connect appProtocol isn't TCP . + // Only idleTimeout is allowed for TCP appProtocol . + PerRequestTimeoutSeconds *int32 + + noSmithyDocumentSerde +} + +// The container path, mount options, and size of the tmpfs mount. +type Tmpfs struct { + + // The absolute file path where the tmpfs volume is to be mounted. + // + // This member is required. + ContainerPath *string + + // The maximum size (in MiB) of the tmpfs volume. + // + // This member is required. + Size int32 + + // The list of tmpfs volume mount options. + // + // Valid values: "defaults" | "ro" | "rw" | "suid" | "nosuid" | "dev" | "nodev" | + // "exec" | "noexec" | "sync" | "async" | "dirsync" | "remount" | "mand" | "nomand" + // | "atime" | "noatime" | "diratime" | "nodiratime" | "bind" | "rbind" | + // "unbindable" | "runbindable" | "private" | "rprivate" | "shared" | "rshared" | + // "slave" | "rslave" | "relatime" | "norelatime" | "strictatime" | "nostrictatime" + // | "mode" | "uid" | "gid" | "nr_inodes" | "nr_blocks" | "mpol" + MountOptions []string + + noSmithyDocumentSerde +} + +// The ulimit settings to pass to the container. +// +// Amazon ECS tasks hosted on Fargate use the default resource limit values set by +// the operating system with the exception of the nofile resource limit parameter +// which Fargate overrides. The nofile resource limit sets a restriction on the +// number of open files that a container can use. The default nofile soft limit is +// 65535 and the default hard limit is 65535 . +// +// You can specify the ulimit settings for a container in a task definition. +type Ulimit struct { + + // The hard limit for the ulimit type. The value can be specified in bytes, + // seconds, or as a count, depending on the type of the ulimit . + // + // This member is required. + HardLimit int32 + + // The type of the ulimit . + // + // This member is required. + Name UlimitName + + // The soft limit for the ulimit type. The value can be specified in bytes, + // seconds, or as a count, depending on the type of the ulimit . + // + // This member is required. + SoftLimit int32 + + noSmithyDocumentSerde +} + +// The Docker and Amazon ECS container agent version information about a container +// instance. +type VersionInfo struct { + + // The Git commit hash for the Amazon ECS container agent build on the [amazon-ecs-agent] GitHub + // repository. + // + // [amazon-ecs-agent]: https://github.com/aws/amazon-ecs-agent/commits/master + AgentHash *string + + // The version number of the Amazon ECS container agent. + AgentVersion *string + + // The Docker version that's running on the container instance. + DockerVersion *string + + noSmithyDocumentSerde +} + +// The data volume configuration for tasks launched using this task definition. +// Specifying a volume configuration in a task definition is optional. The volume +// configuration may contain multiple volumes but only one volume configured at +// launch is supported. Each volume defined in the volume configuration may only +// specify a name and one of either configuredAtLaunch , dockerVolumeConfiguration +// , efsVolumeConfiguration , fsxWindowsFileServerVolumeConfiguration , or host . +// If an empty volume configuration is specified, by default Amazon ECS uses a host +// volume. For more information, see [Using data volumes in tasks]. +// +// [Using data volumes in tasks]: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_data_volumes.html +type Volume struct { + + // Indicates whether the volume should be configured at launch time. This is used + // to create Amazon EBS volumes for standalone tasks or tasks created as part of a + // service. Each task definition revision may only have one volume configured at + // launch in the volume configuration. + // + // To configure a volume at launch time, use this task definition revision and + // specify a volumeConfigurations object when calling the CreateService , + // UpdateService , RunTask or StartTask APIs. + ConfiguredAtLaunch *bool + + // This parameter is specified when you use Docker volumes. + // + // Windows containers only support the use of the local driver. To use bind + // mounts, specify the host parameter instead. + // + // Docker volumes aren't supported by tasks run on Fargate. + DockerVolumeConfiguration *DockerVolumeConfiguration + + // This parameter is specified when you use an Amazon Elastic File System file + // system for task storage. + EfsVolumeConfiguration *EFSVolumeConfiguration + + // This parameter is specified when you use Amazon FSx for Windows File Server + // file system for task storage. + FsxWindowsFileServerVolumeConfiguration *FSxWindowsFileServerVolumeConfiguration + + // This parameter is specified when you use bind mount host volumes. The contents + // of the host parameter determine whether your bind mount host volume persists on + // the host container instance and where it's stored. If the host parameter is + // empty, then the Docker daemon assigns a host path for your data volume. However, + // the data isn't guaranteed to persist after the containers that are associated + // with it stop running. + // + // Windows containers can mount whole directories on the same drive as + // $env:ProgramData . Windows containers can't mount directories on a different + // drive, and mount point can't be across drives. For example, you can mount + // C:\my\path:C:\my\path and D:\:D:\ , but not D:\my\path:C:\my\path or + // D:\:C:\my\path . + Host *HostVolumeProperties + + // The name of the volume. Up to 255 letters (uppercase and lowercase), numbers, + // underscores, and hyphens are allowed. + // + // When using a volume configured at launch, the name is required and must also be + // specified as the volume name in the ServiceVolumeConfiguration or + // TaskVolumeConfiguration parameter when creating your service or standalone task. + // + // For all other types of volumes, this name is referenced in the sourceVolume + // parameter of the mountPoints object in the container definition. + // + // When a volume is using the efsVolumeConfiguration , the name is required. + Name *string + + noSmithyDocumentSerde +} + +// Details on a data volume from another container in the same task definition. +type VolumeFrom struct { + + // If this value is true , the container has read-only access to the volume. If + // this value is false , then the container can write to the volume. The default + // value is false . + ReadOnly *bool + + // The name of another container within the same task definition to mount volumes + // from. + SourceContainer *string + + noSmithyDocumentSerde +} + +// The VPC Lattice configuration for your service that holds the information for +// the target group(s) Amazon ECS tasks will be registered to. +type VpcLatticeConfiguration struct { + + // The name of the port mapping to register in the VPC Lattice target group. This + // is the name of the portMapping you defined in your task definition. + // + // This member is required. + PortName *string + + // The ARN of the IAM role to associate with this VPC Lattice configuration. This + // is the Amazon ECS
 infrastructure IAM role that is used to manage your VPC + // Lattice infrastructure. + // + // This member is required. + RoleArn *string + + // The full Amazon Resource Name (ARN) of the target group or groups associated + // with the VPC Lattice configuration that the Amazon ECS tasks will be registered + // to. + // + // This member is required. + TargetGroupArn *string + + noSmithyDocumentSerde +} + +type noSmithyDocumentSerde = smithydocument.NoSerde diff --git a/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/validators.go b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/validators.go new file mode 100644 index 000000000..9c0b406cb --- /dev/null +++ b/vendor/github.com/aws/aws-sdk-go-v2/service/ecs/validators.go @@ -0,0 +1,3430 @@ +// Code generated by smithy-go-codegen DO NOT EDIT. + +package ecs + +import ( + "context" + "fmt" + "github.com/aws/aws-sdk-go-v2/service/ecs/types" + smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/middleware" +) + +type validateOpCreateCapacityProvider struct { +} + +func (*validateOpCreateCapacityProvider) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateCapacityProvider) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateCapacityProviderInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateCapacityProviderInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateCluster struct { +} + +func (*validateOpCreateCluster) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateCluster) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateClusterInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateClusterInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateService struct { +} + +func (*validateOpCreateService) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateService) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateServiceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateServiceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpCreateTaskSet struct { +} + +func (*validateOpCreateTaskSet) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpCreateTaskSet) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*CreateTaskSetInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpCreateTaskSetInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteAccountSetting struct { +} + +func (*validateOpDeleteAccountSetting) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteAccountSetting) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteAccountSettingInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteAccountSettingInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteAttributes struct { +} + +func (*validateOpDeleteAttributes) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteAttributes) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteAttributesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteAttributesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteCapacityProvider struct { +} + +func (*validateOpDeleteCapacityProvider) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteCapacityProvider) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteCapacityProviderInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteCapacityProviderInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteCluster struct { +} + +func (*validateOpDeleteCluster) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteCluster) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteClusterInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteClusterInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteService struct { +} + +func (*validateOpDeleteService) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteService) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteServiceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteServiceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteTaskDefinitions struct { +} + +func (*validateOpDeleteTaskDefinitions) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteTaskDefinitions) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteTaskDefinitionsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteTaskDefinitionsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeleteTaskSet struct { +} + +func (*validateOpDeleteTaskSet) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeleteTaskSet) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeleteTaskSetInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeleteTaskSetInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeregisterContainerInstance struct { +} + +func (*validateOpDeregisterContainerInstance) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeregisterContainerInstance) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeregisterContainerInstanceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeregisterContainerInstanceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDeregisterTaskDefinition struct { +} + +func (*validateOpDeregisterTaskDefinition) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDeregisterTaskDefinition) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DeregisterTaskDefinitionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDeregisterTaskDefinitionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeContainerInstances struct { +} + +func (*validateOpDescribeContainerInstances) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeContainerInstances) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeContainerInstancesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeContainerInstancesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeServiceDeployments struct { +} + +func (*validateOpDescribeServiceDeployments) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeServiceDeployments) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeServiceDeploymentsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeServiceDeploymentsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeServiceRevisions struct { +} + +func (*validateOpDescribeServiceRevisions) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeServiceRevisions) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeServiceRevisionsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeServiceRevisionsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeServices struct { +} + +func (*validateOpDescribeServices) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeServices) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeServicesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeServicesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeTaskDefinition struct { +} + +func (*validateOpDescribeTaskDefinition) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeTaskDefinition) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeTaskDefinitionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeTaskDefinitionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeTaskSets struct { +} + +func (*validateOpDescribeTaskSets) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeTaskSets) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeTaskSetsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeTaskSetsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpDescribeTasks struct { +} + +func (*validateOpDescribeTasks) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpDescribeTasks) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*DescribeTasksInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpDescribeTasksInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpExecuteCommand struct { +} + +func (*validateOpExecuteCommand) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpExecuteCommand) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ExecuteCommandInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpExecuteCommandInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpGetTaskProtection struct { +} + +func (*validateOpGetTaskProtection) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpGetTaskProtection) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*GetTaskProtectionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpGetTaskProtectionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListAttributes struct { +} + +func (*validateOpListAttributes) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListAttributes) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListAttributesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListAttributesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListServiceDeployments struct { +} + +func (*validateOpListServiceDeployments) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListServiceDeployments) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListServiceDeploymentsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListServiceDeploymentsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListServicesByNamespace struct { +} + +func (*validateOpListServicesByNamespace) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListServicesByNamespace) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListServicesByNamespaceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListServicesByNamespaceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpListTagsForResource struct { +} + +func (*validateOpListTagsForResource) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpListTagsForResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*ListTagsForResourceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpListTagsForResourceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpPutAccountSettingDefault struct { +} + +func (*validateOpPutAccountSettingDefault) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpPutAccountSettingDefault) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*PutAccountSettingDefaultInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpPutAccountSettingDefaultInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpPutAccountSetting struct { +} + +func (*validateOpPutAccountSetting) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpPutAccountSetting) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*PutAccountSettingInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpPutAccountSettingInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpPutAttributes struct { +} + +func (*validateOpPutAttributes) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpPutAttributes) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*PutAttributesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpPutAttributesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpPutClusterCapacityProviders struct { +} + +func (*validateOpPutClusterCapacityProviders) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpPutClusterCapacityProviders) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*PutClusterCapacityProvidersInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpPutClusterCapacityProvidersInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpRegisterContainerInstance struct { +} + +func (*validateOpRegisterContainerInstance) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpRegisterContainerInstance) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*RegisterContainerInstanceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpRegisterContainerInstanceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpRegisterTaskDefinition struct { +} + +func (*validateOpRegisterTaskDefinition) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpRegisterTaskDefinition) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*RegisterTaskDefinitionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpRegisterTaskDefinitionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpRunTask struct { +} + +func (*validateOpRunTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpRunTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*RunTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpRunTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStartTask struct { +} + +func (*validateOpStartTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStartTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StartTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStartTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpStopTask struct { +} + +func (*validateOpStopTask) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpStopTask) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*StopTaskInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpStopTaskInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpSubmitAttachmentStateChanges struct { +} + +func (*validateOpSubmitAttachmentStateChanges) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpSubmitAttachmentStateChanges) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*SubmitAttachmentStateChangesInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpSubmitAttachmentStateChangesInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpSubmitTaskStateChange struct { +} + +func (*validateOpSubmitTaskStateChange) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpSubmitTaskStateChange) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*SubmitTaskStateChangeInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpSubmitTaskStateChangeInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpTagResource struct { +} + +func (*validateOpTagResource) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpTagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*TagResourceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpTagResourceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUntagResource struct { +} + +func (*validateOpUntagResource) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUntagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UntagResourceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUntagResourceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateCapacityProvider struct { +} + +func (*validateOpUpdateCapacityProvider) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateCapacityProvider) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateCapacityProviderInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateCapacityProviderInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateCluster struct { +} + +func (*validateOpUpdateCluster) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateCluster) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateClusterInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateClusterInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateClusterSettings struct { +} + +func (*validateOpUpdateClusterSettings) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateClusterSettings) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateClusterSettingsInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateClusterSettingsInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateContainerAgent struct { +} + +func (*validateOpUpdateContainerAgent) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateContainerAgent) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateContainerAgentInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateContainerAgentInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateContainerInstancesState struct { +} + +func (*validateOpUpdateContainerInstancesState) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateContainerInstancesState) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateContainerInstancesStateInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateContainerInstancesStateInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateService struct { +} + +func (*validateOpUpdateService) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateService) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateServiceInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateServiceInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateServicePrimaryTaskSet struct { +} + +func (*validateOpUpdateServicePrimaryTaskSet) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateServicePrimaryTaskSet) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateServicePrimaryTaskSetInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateServicePrimaryTaskSetInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateTaskProtection struct { +} + +func (*validateOpUpdateTaskProtection) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateTaskProtection) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateTaskProtectionInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateTaskProtectionInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +type validateOpUpdateTaskSet struct { +} + +func (*validateOpUpdateTaskSet) ID() string { + return "OperationInputValidation" +} + +func (m *validateOpUpdateTaskSet) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) ( + out middleware.InitializeOutput, metadata middleware.Metadata, err error, +) { + input, ok := in.Parameters.(*UpdateTaskSetInput) + if !ok { + return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters) + } + if err := validateOpUpdateTaskSetInput(input); err != nil { + return out, metadata, err + } + return next.HandleInitialize(ctx, in) +} + +func addOpCreateCapacityProviderValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateCapacityProvider{}, middleware.After) +} + +func addOpCreateClusterValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateCluster{}, middleware.After) +} + +func addOpCreateServiceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateService{}, middleware.After) +} + +func addOpCreateTaskSetValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpCreateTaskSet{}, middleware.After) +} + +func addOpDeleteAccountSettingValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteAccountSetting{}, middleware.After) +} + +func addOpDeleteAttributesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteAttributes{}, middleware.After) +} + +func addOpDeleteCapacityProviderValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteCapacityProvider{}, middleware.After) +} + +func addOpDeleteClusterValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteCluster{}, middleware.After) +} + +func addOpDeleteServiceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteService{}, middleware.After) +} + +func addOpDeleteTaskDefinitionsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteTaskDefinitions{}, middleware.After) +} + +func addOpDeleteTaskSetValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeleteTaskSet{}, middleware.After) +} + +func addOpDeregisterContainerInstanceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeregisterContainerInstance{}, middleware.After) +} + +func addOpDeregisterTaskDefinitionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDeregisterTaskDefinition{}, middleware.After) +} + +func addOpDescribeContainerInstancesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeContainerInstances{}, middleware.After) +} + +func addOpDescribeServiceDeploymentsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeServiceDeployments{}, middleware.After) +} + +func addOpDescribeServiceRevisionsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeServiceRevisions{}, middleware.After) +} + +func addOpDescribeServicesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeServices{}, middleware.After) +} + +func addOpDescribeTaskDefinitionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeTaskDefinition{}, middleware.After) +} + +func addOpDescribeTaskSetsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeTaskSets{}, middleware.After) +} + +func addOpDescribeTasksValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpDescribeTasks{}, middleware.After) +} + +func addOpExecuteCommandValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpExecuteCommand{}, middleware.After) +} + +func addOpGetTaskProtectionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpGetTaskProtection{}, middleware.After) +} + +func addOpListAttributesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListAttributes{}, middleware.After) +} + +func addOpListServiceDeploymentsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListServiceDeployments{}, middleware.After) +} + +func addOpListServicesByNamespaceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListServicesByNamespace{}, middleware.After) +} + +func addOpListTagsForResourceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpListTagsForResource{}, middleware.After) +} + +func addOpPutAccountSettingDefaultValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpPutAccountSettingDefault{}, middleware.After) +} + +func addOpPutAccountSettingValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpPutAccountSetting{}, middleware.After) +} + +func addOpPutAttributesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpPutAttributes{}, middleware.After) +} + +func addOpPutClusterCapacityProvidersValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpPutClusterCapacityProviders{}, middleware.After) +} + +func addOpRegisterContainerInstanceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpRegisterContainerInstance{}, middleware.After) +} + +func addOpRegisterTaskDefinitionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpRegisterTaskDefinition{}, middleware.After) +} + +func addOpRunTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpRunTask{}, middleware.After) +} + +func addOpStartTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStartTask{}, middleware.After) +} + +func addOpStopTaskValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpStopTask{}, middleware.After) +} + +func addOpSubmitAttachmentStateChangesValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpSubmitAttachmentStateChanges{}, middleware.After) +} + +func addOpSubmitTaskStateChangeValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpSubmitTaskStateChange{}, middleware.After) +} + +func addOpTagResourceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpTagResource{}, middleware.After) +} + +func addOpUntagResourceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUntagResource{}, middleware.After) +} + +func addOpUpdateCapacityProviderValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateCapacityProvider{}, middleware.After) +} + +func addOpUpdateClusterValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateCluster{}, middleware.After) +} + +func addOpUpdateClusterSettingsValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateClusterSettings{}, middleware.After) +} + +func addOpUpdateContainerAgentValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateContainerAgent{}, middleware.After) +} + +func addOpUpdateContainerInstancesStateValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateContainerInstancesState{}, middleware.After) +} + +func addOpUpdateServiceValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateService{}, middleware.After) +} + +func addOpUpdateServicePrimaryTaskSetValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateServicePrimaryTaskSet{}, middleware.After) +} + +func addOpUpdateTaskProtectionValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateTaskProtection{}, middleware.After) +} + +func addOpUpdateTaskSetValidationMiddleware(stack *middleware.Stack) error { + return stack.Initialize.Add(&validateOpUpdateTaskSet{}, middleware.After) +} + +func validateAttachmentStateChange(v *types.AttachmentStateChange) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AttachmentStateChange"} + if v.AttachmentArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AttachmentArn")) + } + if v.Status == nil { + invalidParams.Add(smithy.NewErrParamRequired("Status")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateAttachmentStateChanges(v []types.AttachmentStateChange) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AttachmentStateChanges"} + for i := range v { + if err := validateAttachmentStateChange(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateAttribute(v *types.Attribute) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Attribute"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateAttributes(v []types.Attribute) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Attributes"} + for i := range v { + if err := validateAttribute(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateAutoScalingGroupProvider(v *types.AutoScalingGroupProvider) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AutoScalingGroupProvider"} + if v.AutoScalingGroupArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("AutoScalingGroupArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateAwsVpcConfiguration(v *types.AwsVpcConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "AwsVpcConfiguration"} + if v.Subnets == nil { + invalidParams.Add(smithy.NewErrParamRequired("Subnets")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateCapacityProviderStrategy(v []types.CapacityProviderStrategyItem) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CapacityProviderStrategy"} + for i := range v { + if err := validateCapacityProviderStrategyItem(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateCapacityProviderStrategyItem(v *types.CapacityProviderStrategyItem) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CapacityProviderStrategyItem"} + if v.CapacityProvider == nil { + invalidParams.Add(smithy.NewErrParamRequired("CapacityProvider")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateClusterServiceConnectDefaultsRequest(v *types.ClusterServiceConnectDefaultsRequest) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ClusterServiceConnectDefaultsRequest"} + if v.Namespace == nil { + invalidParams.Add(smithy.NewErrParamRequired("Namespace")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateContainerDefinition(v *types.ContainerDefinition) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ContainerDefinition"} + if v.RepositoryCredentials != nil { + if err := validateRepositoryCredentials(v.RepositoryCredentials); err != nil { + invalidParams.AddNested("RepositoryCredentials", err.(smithy.InvalidParamsError)) + } + } + if v.RestartPolicy != nil { + if err := validateContainerRestartPolicy(v.RestartPolicy); err != nil { + invalidParams.AddNested("RestartPolicy", err.(smithy.InvalidParamsError)) + } + } + if v.EnvironmentFiles != nil { + if err := validateEnvironmentFiles(v.EnvironmentFiles); err != nil { + invalidParams.AddNested("EnvironmentFiles", err.(smithy.InvalidParamsError)) + } + } + if v.LinuxParameters != nil { + if err := validateLinuxParameters(v.LinuxParameters); err != nil { + invalidParams.AddNested("LinuxParameters", err.(smithy.InvalidParamsError)) + } + } + if v.Secrets != nil { + if err := validateSecretList(v.Secrets); err != nil { + invalidParams.AddNested("Secrets", err.(smithy.InvalidParamsError)) + } + } + if v.DependsOn != nil { + if err := validateContainerDependencies(v.DependsOn); err != nil { + invalidParams.AddNested("DependsOn", err.(smithy.InvalidParamsError)) + } + } + if v.ExtraHosts != nil { + if err := validateHostEntryList(v.ExtraHosts); err != nil { + invalidParams.AddNested("ExtraHosts", err.(smithy.InvalidParamsError)) + } + } + if v.Ulimits != nil { + if err := validateUlimitList(v.Ulimits); err != nil { + invalidParams.AddNested("Ulimits", err.(smithy.InvalidParamsError)) + } + } + if v.LogConfiguration != nil { + if err := validateLogConfiguration(v.LogConfiguration); err != nil { + invalidParams.AddNested("LogConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.HealthCheck != nil { + if err := validateHealthCheck(v.HealthCheck); err != nil { + invalidParams.AddNested("HealthCheck", err.(smithy.InvalidParamsError)) + } + } + if v.ResourceRequirements != nil { + if err := validateResourceRequirements(v.ResourceRequirements); err != nil { + invalidParams.AddNested("ResourceRequirements", err.(smithy.InvalidParamsError)) + } + } + if v.FirelensConfiguration != nil { + if err := validateFirelensConfiguration(v.FirelensConfiguration); err != nil { + invalidParams.AddNested("FirelensConfiguration", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateContainerDefinitions(v []types.ContainerDefinition) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ContainerDefinitions"} + for i := range v { + if err := validateContainerDefinition(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateContainerDependencies(v []types.ContainerDependency) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ContainerDependencies"} + for i := range v { + if err := validateContainerDependency(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateContainerDependency(v *types.ContainerDependency) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ContainerDependency"} + if v.ContainerName == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerName")) + } + if len(v.Condition) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Condition")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateContainerOverride(v *types.ContainerOverride) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ContainerOverride"} + if v.EnvironmentFiles != nil { + if err := validateEnvironmentFiles(v.EnvironmentFiles); err != nil { + invalidParams.AddNested("EnvironmentFiles", err.(smithy.InvalidParamsError)) + } + } + if v.ResourceRequirements != nil { + if err := validateResourceRequirements(v.ResourceRequirements); err != nil { + invalidParams.AddNested("ResourceRequirements", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateContainerOverrides(v []types.ContainerOverride) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ContainerOverrides"} + for i := range v { + if err := validateContainerOverride(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateContainerRestartPolicy(v *types.ContainerRestartPolicy) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ContainerRestartPolicy"} + if v.Enabled == nil { + invalidParams.Add(smithy.NewErrParamRequired("Enabled")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateDeploymentAlarms(v *types.DeploymentAlarms) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeploymentAlarms"} + if v.AlarmNames == nil { + invalidParams.Add(smithy.NewErrParamRequired("AlarmNames")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateDeploymentCircuitBreaker(v *types.DeploymentCircuitBreaker) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeploymentCircuitBreaker"} + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateDeploymentConfiguration(v *types.DeploymentConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeploymentConfiguration"} + if v.DeploymentCircuitBreaker != nil { + if err := validateDeploymentCircuitBreaker(v.DeploymentCircuitBreaker); err != nil { + invalidParams.AddNested("DeploymentCircuitBreaker", err.(smithy.InvalidParamsError)) + } + } + if v.Alarms != nil { + if err := validateDeploymentAlarms(v.Alarms); err != nil { + invalidParams.AddNested("Alarms", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateDeploymentController(v *types.DeploymentController) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeploymentController"} + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateDevice(v *types.Device) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Device"} + if v.HostPath == nil { + invalidParams.Add(smithy.NewErrParamRequired("HostPath")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateDevicesList(v []types.Device) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DevicesList"} + for i := range v { + if err := validateDevice(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEBSTagSpecification(v *types.EBSTagSpecification) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EBSTagSpecification"} + if len(v.ResourceType) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("ResourceType")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEBSTagSpecifications(v []types.EBSTagSpecification) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EBSTagSpecifications"} + for i := range v { + if err := validateEBSTagSpecification(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEFSVolumeConfiguration(v *types.EFSVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EFSVolumeConfiguration"} + if v.FileSystemId == nil { + invalidParams.Add(smithy.NewErrParamRequired("FileSystemId")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEnvironmentFile(v *types.EnvironmentFile) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EnvironmentFile"} + if v.Value == nil { + invalidParams.Add(smithy.NewErrParamRequired("Value")) + } + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEnvironmentFiles(v []types.EnvironmentFile) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EnvironmentFiles"} + for i := range v { + if err := validateEnvironmentFile(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateEphemeralStorage(v *types.EphemeralStorage) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "EphemeralStorage"} + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateFirelensConfiguration(v *types.FirelensConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "FirelensConfiguration"} + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateFSxWindowsFileServerAuthorizationConfig(v *types.FSxWindowsFileServerAuthorizationConfig) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "FSxWindowsFileServerAuthorizationConfig"} + if v.CredentialsParameter == nil { + invalidParams.Add(smithy.NewErrParamRequired("CredentialsParameter")) + } + if v.Domain == nil { + invalidParams.Add(smithy.NewErrParamRequired("Domain")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateFSxWindowsFileServerVolumeConfiguration(v *types.FSxWindowsFileServerVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "FSxWindowsFileServerVolumeConfiguration"} + if v.FileSystemId == nil { + invalidParams.Add(smithy.NewErrParamRequired("FileSystemId")) + } + if v.RootDirectory == nil { + invalidParams.Add(smithy.NewErrParamRequired("RootDirectory")) + } + if v.AuthorizationConfig == nil { + invalidParams.Add(smithy.NewErrParamRequired("AuthorizationConfig")) + } else if v.AuthorizationConfig != nil { + if err := validateFSxWindowsFileServerAuthorizationConfig(v.AuthorizationConfig); err != nil { + invalidParams.AddNested("AuthorizationConfig", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateHealthCheck(v *types.HealthCheck) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "HealthCheck"} + if v.Command == nil { + invalidParams.Add(smithy.NewErrParamRequired("Command")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateHostEntry(v *types.HostEntry) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "HostEntry"} + if v.Hostname == nil { + invalidParams.Add(smithy.NewErrParamRequired("Hostname")) + } + if v.IpAddress == nil { + invalidParams.Add(smithy.NewErrParamRequired("IpAddress")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateHostEntryList(v []types.HostEntry) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "HostEntryList"} + for i := range v { + if err := validateHostEntry(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateInferenceAccelerator(v *types.InferenceAccelerator) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "InferenceAccelerator"} + if v.DeviceName == nil { + invalidParams.Add(smithy.NewErrParamRequired("DeviceName")) + } + if v.DeviceType == nil { + invalidParams.Add(smithy.NewErrParamRequired("DeviceType")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateInferenceAccelerators(v []types.InferenceAccelerator) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "InferenceAccelerators"} + for i := range v { + if err := validateInferenceAccelerator(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateLinuxParameters(v *types.LinuxParameters) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "LinuxParameters"} + if v.Devices != nil { + if err := validateDevicesList(v.Devices); err != nil { + invalidParams.AddNested("Devices", err.(smithy.InvalidParamsError)) + } + } + if v.Tmpfs != nil { + if err := validateTmpfsList(v.Tmpfs); err != nil { + invalidParams.AddNested("Tmpfs", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateLogConfiguration(v *types.LogConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "LogConfiguration"} + if len(v.LogDriver) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("LogDriver")) + } + if v.SecretOptions != nil { + if err := validateSecretList(v.SecretOptions); err != nil { + invalidParams.AddNested("SecretOptions", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateManagedAgentStateChange(v *types.ManagedAgentStateChange) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ManagedAgentStateChange"} + if v.ContainerName == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerName")) + } + if len(v.ManagedAgentName) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("ManagedAgentName")) + } + if v.Status == nil { + invalidParams.Add(smithy.NewErrParamRequired("Status")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateManagedAgentStateChanges(v []types.ManagedAgentStateChange) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ManagedAgentStateChanges"} + for i := range v { + if err := validateManagedAgentStateChange(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateNetworkConfiguration(v *types.NetworkConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "NetworkConfiguration"} + if v.AwsvpcConfiguration != nil { + if err := validateAwsVpcConfiguration(v.AwsvpcConfiguration); err != nil { + invalidParams.AddNested("AwsvpcConfiguration", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validatePlatformDevice(v *types.PlatformDevice) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PlatformDevice"} + if v.Id == nil { + invalidParams.Add(smithy.NewErrParamRequired("Id")) + } + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validatePlatformDevices(v []types.PlatformDevice) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PlatformDevices"} + for i := range v { + if err := validatePlatformDevice(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateProxyConfiguration(v *types.ProxyConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ProxyConfiguration"} + if v.ContainerName == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerName")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateRepositoryCredentials(v *types.RepositoryCredentials) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "RepositoryCredentials"} + if v.CredentialsParameter == nil { + invalidParams.Add(smithy.NewErrParamRequired("CredentialsParameter")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateResourceRequirement(v *types.ResourceRequirement) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ResourceRequirement"} + if v.Value == nil { + invalidParams.Add(smithy.NewErrParamRequired("Value")) + } + if len(v.Type) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Type")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateResourceRequirements(v []types.ResourceRequirement) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ResourceRequirements"} + for i := range v { + if err := validateResourceRequirement(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateSecret(v *types.Secret) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Secret"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.ValueFrom == nil { + invalidParams.Add(smithy.NewErrParamRequired("ValueFrom")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateSecretList(v []types.Secret) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "SecretList"} + for i := range v { + if err := validateSecret(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceConnectClientAlias(v *types.ServiceConnectClientAlias) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceConnectClientAlias"} + if v.Port == nil { + invalidParams.Add(smithy.NewErrParamRequired("Port")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceConnectClientAliasList(v []types.ServiceConnectClientAlias) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceConnectClientAliasList"} + for i := range v { + if err := validateServiceConnectClientAlias(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceConnectConfiguration(v *types.ServiceConnectConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceConnectConfiguration"} + if v.Services != nil { + if err := validateServiceConnectServiceList(v.Services); err != nil { + invalidParams.AddNested("Services", err.(smithy.InvalidParamsError)) + } + } + if v.LogConfiguration != nil { + if err := validateLogConfiguration(v.LogConfiguration); err != nil { + invalidParams.AddNested("LogConfiguration", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceConnectService(v *types.ServiceConnectService) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceConnectService"} + if v.PortName == nil { + invalidParams.Add(smithy.NewErrParamRequired("PortName")) + } + if v.ClientAliases != nil { + if err := validateServiceConnectClientAliasList(v.ClientAliases); err != nil { + invalidParams.AddNested("ClientAliases", err.(smithy.InvalidParamsError)) + } + } + if v.Tls != nil { + if err := validateServiceConnectTlsConfiguration(v.Tls); err != nil { + invalidParams.AddNested("Tls", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceConnectServiceList(v []types.ServiceConnectService) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceConnectServiceList"} + for i := range v { + if err := validateServiceConnectService(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceConnectTlsConfiguration(v *types.ServiceConnectTlsConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceConnectTlsConfiguration"} + if v.IssuerCertificateAuthority == nil { + invalidParams.Add(smithy.NewErrParamRequired("IssuerCertificateAuthority")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceManagedEBSVolumeConfiguration(v *types.ServiceManagedEBSVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceManagedEBSVolumeConfiguration"} + if v.TagSpecifications != nil { + if err := validateEBSTagSpecifications(v.TagSpecifications); err != nil { + invalidParams.AddNested("TagSpecifications", err.(smithy.InvalidParamsError)) + } + } + if v.RoleArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("RoleArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceVolumeConfiguration(v *types.ServiceVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceVolumeConfiguration"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.ManagedEBSVolume != nil { + if err := validateServiceManagedEBSVolumeConfiguration(v.ManagedEBSVolume); err != nil { + invalidParams.AddNested("ManagedEBSVolume", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateServiceVolumeConfigurations(v []types.ServiceVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ServiceVolumeConfigurations"} + for i := range v { + if err := validateServiceVolumeConfiguration(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTaskManagedEBSVolumeConfiguration(v *types.TaskManagedEBSVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TaskManagedEBSVolumeConfiguration"} + if v.TagSpecifications != nil { + if err := validateEBSTagSpecifications(v.TagSpecifications); err != nil { + invalidParams.AddNested("TagSpecifications", err.(smithy.InvalidParamsError)) + } + } + if v.RoleArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("RoleArn")) + } + if v.TerminationPolicy != nil { + if err := validateTaskManagedEBSVolumeTerminationPolicy(v.TerminationPolicy); err != nil { + invalidParams.AddNested("TerminationPolicy", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTaskManagedEBSVolumeTerminationPolicy(v *types.TaskManagedEBSVolumeTerminationPolicy) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TaskManagedEBSVolumeTerminationPolicy"} + if v.DeleteOnTermination == nil { + invalidParams.Add(smithy.NewErrParamRequired("DeleteOnTermination")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTaskOverride(v *types.TaskOverride) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TaskOverride"} + if v.ContainerOverrides != nil { + if err := validateContainerOverrides(v.ContainerOverrides); err != nil { + invalidParams.AddNested("ContainerOverrides", err.(smithy.InvalidParamsError)) + } + } + if v.EphemeralStorage != nil { + if err := validateEphemeralStorage(v.EphemeralStorage); err != nil { + invalidParams.AddNested("EphemeralStorage", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTaskVolumeConfiguration(v *types.TaskVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TaskVolumeConfiguration"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.ManagedEBSVolume != nil { + if err := validateTaskManagedEBSVolumeConfiguration(v.ManagedEBSVolume); err != nil { + invalidParams.AddNested("ManagedEBSVolume", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTaskVolumeConfigurations(v []types.TaskVolumeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TaskVolumeConfigurations"} + for i := range v { + if err := validateTaskVolumeConfiguration(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTmpfs(v *types.Tmpfs) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Tmpfs"} + if v.ContainerPath == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerPath")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateTmpfsList(v []types.Tmpfs) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TmpfsList"} + for i := range v { + if err := validateTmpfs(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateUlimit(v *types.Ulimit) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Ulimit"} + if len(v.Name) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateUlimitList(v []types.Ulimit) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UlimitList"} + for i := range v { + if err := validateUlimit(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateVolume(v *types.Volume) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "Volume"} + if v.EfsVolumeConfiguration != nil { + if err := validateEFSVolumeConfiguration(v.EfsVolumeConfiguration); err != nil { + invalidParams.AddNested("EfsVolumeConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.FsxWindowsFileServerVolumeConfiguration != nil { + if err := validateFSxWindowsFileServerVolumeConfiguration(v.FsxWindowsFileServerVolumeConfiguration); err != nil { + invalidParams.AddNested("FsxWindowsFileServerVolumeConfiguration", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateVolumeList(v []types.Volume) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "VolumeList"} + for i := range v { + if err := validateVolume(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateVpcLatticeConfiguration(v *types.VpcLatticeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "VpcLatticeConfiguration"} + if v.RoleArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("RoleArn")) + } + if v.TargetGroupArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("TargetGroupArn")) + } + if v.PortName == nil { + invalidParams.Add(smithy.NewErrParamRequired("PortName")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateVpcLatticeConfigurations(v []types.VpcLatticeConfiguration) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "VpcLatticeConfigurations"} + for i := range v { + if err := validateVpcLatticeConfiguration(&v[i]); err != nil { + invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateCapacityProviderInput(v *CreateCapacityProviderInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateCapacityProviderInput"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.AutoScalingGroupProvider == nil { + invalidParams.Add(smithy.NewErrParamRequired("AutoScalingGroupProvider")) + } else if v.AutoScalingGroupProvider != nil { + if err := validateAutoScalingGroupProvider(v.AutoScalingGroupProvider); err != nil { + invalidParams.AddNested("AutoScalingGroupProvider", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateClusterInput(v *CreateClusterInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateClusterInput"} + if v.DefaultCapacityProviderStrategy != nil { + if err := validateCapacityProviderStrategy(v.DefaultCapacityProviderStrategy); err != nil { + invalidParams.AddNested("DefaultCapacityProviderStrategy", err.(smithy.InvalidParamsError)) + } + } + if v.ServiceConnectDefaults != nil { + if err := validateClusterServiceConnectDefaultsRequest(v.ServiceConnectDefaults); err != nil { + invalidParams.AddNested("ServiceConnectDefaults", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateServiceInput(v *CreateServiceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateServiceInput"} + if v.ServiceName == nil { + invalidParams.Add(smithy.NewErrParamRequired("ServiceName")) + } + if v.CapacityProviderStrategy != nil { + if err := validateCapacityProviderStrategy(v.CapacityProviderStrategy); err != nil { + invalidParams.AddNested("CapacityProviderStrategy", err.(smithy.InvalidParamsError)) + } + } + if v.DeploymentConfiguration != nil { + if err := validateDeploymentConfiguration(v.DeploymentConfiguration); err != nil { + invalidParams.AddNested("DeploymentConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.NetworkConfiguration != nil { + if err := validateNetworkConfiguration(v.NetworkConfiguration); err != nil { + invalidParams.AddNested("NetworkConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.DeploymentController != nil { + if err := validateDeploymentController(v.DeploymentController); err != nil { + invalidParams.AddNested("DeploymentController", err.(smithy.InvalidParamsError)) + } + } + if v.ServiceConnectConfiguration != nil { + if err := validateServiceConnectConfiguration(v.ServiceConnectConfiguration); err != nil { + invalidParams.AddNested("ServiceConnectConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.VolumeConfigurations != nil { + if err := validateServiceVolumeConfigurations(v.VolumeConfigurations); err != nil { + invalidParams.AddNested("VolumeConfigurations", err.(smithy.InvalidParamsError)) + } + } + if v.VpcLatticeConfigurations != nil { + if err := validateVpcLatticeConfigurations(v.VpcLatticeConfigurations); err != nil { + invalidParams.AddNested("VpcLatticeConfigurations", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpCreateTaskSetInput(v *CreateTaskSetInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "CreateTaskSetInput"} + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.TaskDefinition == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskDefinition")) + } + if v.NetworkConfiguration != nil { + if err := validateNetworkConfiguration(v.NetworkConfiguration); err != nil { + invalidParams.AddNested("NetworkConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.CapacityProviderStrategy != nil { + if err := validateCapacityProviderStrategy(v.CapacityProviderStrategy); err != nil { + invalidParams.AddNested("CapacityProviderStrategy", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteAccountSettingInput(v *DeleteAccountSettingInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteAccountSettingInput"} + if len(v.Name) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteAttributesInput(v *DeleteAttributesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteAttributesInput"} + if v.Attributes == nil { + invalidParams.Add(smithy.NewErrParamRequired("Attributes")) + } else if v.Attributes != nil { + if err := validateAttributes(v.Attributes); err != nil { + invalidParams.AddNested("Attributes", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteCapacityProviderInput(v *DeleteCapacityProviderInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteCapacityProviderInput"} + if v.CapacityProvider == nil { + invalidParams.Add(smithy.NewErrParamRequired("CapacityProvider")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteClusterInput(v *DeleteClusterInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteClusterInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteServiceInput(v *DeleteServiceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteServiceInput"} + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteTaskDefinitionsInput(v *DeleteTaskDefinitionsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteTaskDefinitionsInput"} + if v.TaskDefinitions == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskDefinitions")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeleteTaskSetInput(v *DeleteTaskSetInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeleteTaskSetInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if v.TaskSet == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskSet")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeregisterContainerInstanceInput(v *DeregisterContainerInstanceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeregisterContainerInstanceInput"} + if v.ContainerInstance == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerInstance")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDeregisterTaskDefinitionInput(v *DeregisterTaskDefinitionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DeregisterTaskDefinitionInput"} + if v.TaskDefinition == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskDefinition")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeContainerInstancesInput(v *DescribeContainerInstancesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeContainerInstancesInput"} + if v.ContainerInstances == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerInstances")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeServiceDeploymentsInput(v *DescribeServiceDeploymentsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeServiceDeploymentsInput"} + if v.ServiceDeploymentArns == nil { + invalidParams.Add(smithy.NewErrParamRequired("ServiceDeploymentArns")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeServiceRevisionsInput(v *DescribeServiceRevisionsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeServiceRevisionsInput"} + if v.ServiceRevisionArns == nil { + invalidParams.Add(smithy.NewErrParamRequired("ServiceRevisionArns")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeServicesInput(v *DescribeServicesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeServicesInput"} + if v.Services == nil { + invalidParams.Add(smithy.NewErrParamRequired("Services")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeTaskDefinitionInput(v *DescribeTaskDefinitionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeTaskDefinitionInput"} + if v.TaskDefinition == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskDefinition")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeTaskSetsInput(v *DescribeTaskSetsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeTaskSetsInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpDescribeTasksInput(v *DescribeTasksInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "DescribeTasksInput"} + if v.Tasks == nil { + invalidParams.Add(smithy.NewErrParamRequired("Tasks")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpExecuteCommandInput(v *ExecuteCommandInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ExecuteCommandInput"} + if v.Command == nil { + invalidParams.Add(smithy.NewErrParamRequired("Command")) + } + if v.Task == nil { + invalidParams.Add(smithy.NewErrParamRequired("Task")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpGetTaskProtectionInput(v *GetTaskProtectionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "GetTaskProtectionInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListAttributesInput(v *ListAttributesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListAttributesInput"} + if len(v.TargetType) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("TargetType")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListServiceDeploymentsInput(v *ListServiceDeploymentsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListServiceDeploymentsInput"} + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListServicesByNamespaceInput(v *ListServicesByNamespaceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListServicesByNamespaceInput"} + if v.Namespace == nil { + invalidParams.Add(smithy.NewErrParamRequired("Namespace")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpListTagsForResourceInput(v *ListTagsForResourceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "ListTagsForResourceInput"} + if v.ResourceArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpPutAccountSettingDefaultInput(v *PutAccountSettingDefaultInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PutAccountSettingDefaultInput"} + if len(v.Name) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.Value == nil { + invalidParams.Add(smithy.NewErrParamRequired("Value")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpPutAccountSettingInput(v *PutAccountSettingInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PutAccountSettingInput"} + if len(v.Name) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.Value == nil { + invalidParams.Add(smithy.NewErrParamRequired("Value")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpPutAttributesInput(v *PutAttributesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PutAttributesInput"} + if v.Attributes == nil { + invalidParams.Add(smithy.NewErrParamRequired("Attributes")) + } else if v.Attributes != nil { + if err := validateAttributes(v.Attributes); err != nil { + invalidParams.AddNested("Attributes", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpPutClusterCapacityProvidersInput(v *PutClusterCapacityProvidersInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "PutClusterCapacityProvidersInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.CapacityProviders == nil { + invalidParams.Add(smithy.NewErrParamRequired("CapacityProviders")) + } + if v.DefaultCapacityProviderStrategy == nil { + invalidParams.Add(smithy.NewErrParamRequired("DefaultCapacityProviderStrategy")) + } else if v.DefaultCapacityProviderStrategy != nil { + if err := validateCapacityProviderStrategy(v.DefaultCapacityProviderStrategy); err != nil { + invalidParams.AddNested("DefaultCapacityProviderStrategy", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpRegisterContainerInstanceInput(v *RegisterContainerInstanceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "RegisterContainerInstanceInput"} + if v.Attributes != nil { + if err := validateAttributes(v.Attributes); err != nil { + invalidParams.AddNested("Attributes", err.(smithy.InvalidParamsError)) + } + } + if v.PlatformDevices != nil { + if err := validatePlatformDevices(v.PlatformDevices); err != nil { + invalidParams.AddNested("PlatformDevices", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpRegisterTaskDefinitionInput(v *RegisterTaskDefinitionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "RegisterTaskDefinitionInput"} + if v.Family == nil { + invalidParams.Add(smithy.NewErrParamRequired("Family")) + } + if v.ContainerDefinitions == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerDefinitions")) + } else if v.ContainerDefinitions != nil { + if err := validateContainerDefinitions(v.ContainerDefinitions); err != nil { + invalidParams.AddNested("ContainerDefinitions", err.(smithy.InvalidParamsError)) + } + } + if v.Volumes != nil { + if err := validateVolumeList(v.Volumes); err != nil { + invalidParams.AddNested("Volumes", err.(smithy.InvalidParamsError)) + } + } + if v.ProxyConfiguration != nil { + if err := validateProxyConfiguration(v.ProxyConfiguration); err != nil { + invalidParams.AddNested("ProxyConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.InferenceAccelerators != nil { + if err := validateInferenceAccelerators(v.InferenceAccelerators); err != nil { + invalidParams.AddNested("InferenceAccelerators", err.(smithy.InvalidParamsError)) + } + } + if v.EphemeralStorage != nil { + if err := validateEphemeralStorage(v.EphemeralStorage); err != nil { + invalidParams.AddNested("EphemeralStorage", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpRunTaskInput(v *RunTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "RunTaskInput"} + if v.CapacityProviderStrategy != nil { + if err := validateCapacityProviderStrategy(v.CapacityProviderStrategy); err != nil { + invalidParams.AddNested("CapacityProviderStrategy", err.(smithy.InvalidParamsError)) + } + } + if v.NetworkConfiguration != nil { + if err := validateNetworkConfiguration(v.NetworkConfiguration); err != nil { + invalidParams.AddNested("NetworkConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.Overrides != nil { + if err := validateTaskOverride(v.Overrides); err != nil { + invalidParams.AddNested("Overrides", err.(smithy.InvalidParamsError)) + } + } + if v.TaskDefinition == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskDefinition")) + } + if v.VolumeConfigurations != nil { + if err := validateTaskVolumeConfigurations(v.VolumeConfigurations); err != nil { + invalidParams.AddNested("VolumeConfigurations", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStartTaskInput(v *StartTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StartTaskInput"} + if v.ContainerInstances == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerInstances")) + } + if v.NetworkConfiguration != nil { + if err := validateNetworkConfiguration(v.NetworkConfiguration); err != nil { + invalidParams.AddNested("NetworkConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.Overrides != nil { + if err := validateTaskOverride(v.Overrides); err != nil { + invalidParams.AddNested("Overrides", err.(smithy.InvalidParamsError)) + } + } + if v.TaskDefinition == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskDefinition")) + } + if v.VolumeConfigurations != nil { + if err := validateTaskVolumeConfigurations(v.VolumeConfigurations); err != nil { + invalidParams.AddNested("VolumeConfigurations", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpStopTaskInput(v *StopTaskInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "StopTaskInput"} + if v.Task == nil { + invalidParams.Add(smithy.NewErrParamRequired("Task")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpSubmitAttachmentStateChangesInput(v *SubmitAttachmentStateChangesInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "SubmitAttachmentStateChangesInput"} + if v.Attachments == nil { + invalidParams.Add(smithy.NewErrParamRequired("Attachments")) + } else if v.Attachments != nil { + if err := validateAttachmentStateChanges(v.Attachments); err != nil { + invalidParams.AddNested("Attachments", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpSubmitTaskStateChangeInput(v *SubmitTaskStateChangeInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "SubmitTaskStateChangeInput"} + if v.Attachments != nil { + if err := validateAttachmentStateChanges(v.Attachments); err != nil { + invalidParams.AddNested("Attachments", err.(smithy.InvalidParamsError)) + } + } + if v.ManagedAgents != nil { + if err := validateManagedAgentStateChanges(v.ManagedAgents); err != nil { + invalidParams.AddNested("ManagedAgents", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpTagResourceInput(v *TagResourceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "TagResourceInput"} + if v.ResourceArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) + } + if v.Tags == nil { + invalidParams.Add(smithy.NewErrParamRequired("Tags")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUntagResourceInput(v *UntagResourceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UntagResourceInput"} + if v.ResourceArn == nil { + invalidParams.Add(smithy.NewErrParamRequired("ResourceArn")) + } + if v.TagKeys == nil { + invalidParams.Add(smithy.NewErrParamRequired("TagKeys")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateCapacityProviderInput(v *UpdateCapacityProviderInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateCapacityProviderInput"} + if v.Name == nil { + invalidParams.Add(smithy.NewErrParamRequired("Name")) + } + if v.AutoScalingGroupProvider == nil { + invalidParams.Add(smithy.NewErrParamRequired("AutoScalingGroupProvider")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateClusterInput(v *UpdateClusterInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateClusterInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.ServiceConnectDefaults != nil { + if err := validateClusterServiceConnectDefaultsRequest(v.ServiceConnectDefaults); err != nil { + invalidParams.AddNested("ServiceConnectDefaults", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateClusterSettingsInput(v *UpdateClusterSettingsInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateClusterSettingsInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.Settings == nil { + invalidParams.Add(smithy.NewErrParamRequired("Settings")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateContainerAgentInput(v *UpdateContainerAgentInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateContainerAgentInput"} + if v.ContainerInstance == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerInstance")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateContainerInstancesStateInput(v *UpdateContainerInstancesStateInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateContainerInstancesStateInput"} + if v.ContainerInstances == nil { + invalidParams.Add(smithy.NewErrParamRequired("ContainerInstances")) + } + if len(v.Status) == 0 { + invalidParams.Add(smithy.NewErrParamRequired("Status")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateServiceInput(v *UpdateServiceInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateServiceInput"} + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if v.CapacityProviderStrategy != nil { + if err := validateCapacityProviderStrategy(v.CapacityProviderStrategy); err != nil { + invalidParams.AddNested("CapacityProviderStrategy", err.(smithy.InvalidParamsError)) + } + } + if v.DeploymentConfiguration != nil { + if err := validateDeploymentConfiguration(v.DeploymentConfiguration); err != nil { + invalidParams.AddNested("DeploymentConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.NetworkConfiguration != nil { + if err := validateNetworkConfiguration(v.NetworkConfiguration); err != nil { + invalidParams.AddNested("NetworkConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.ServiceConnectConfiguration != nil { + if err := validateServiceConnectConfiguration(v.ServiceConnectConfiguration); err != nil { + invalidParams.AddNested("ServiceConnectConfiguration", err.(smithy.InvalidParamsError)) + } + } + if v.VolumeConfigurations != nil { + if err := validateServiceVolumeConfigurations(v.VolumeConfigurations); err != nil { + invalidParams.AddNested("VolumeConfigurations", err.(smithy.InvalidParamsError)) + } + } + if v.VpcLatticeConfigurations != nil { + if err := validateVpcLatticeConfigurations(v.VpcLatticeConfigurations); err != nil { + invalidParams.AddNested("VpcLatticeConfigurations", err.(smithy.InvalidParamsError)) + } + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateServicePrimaryTaskSetInput(v *UpdateServicePrimaryTaskSetInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateServicePrimaryTaskSetInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if v.PrimaryTaskSet == nil { + invalidParams.Add(smithy.NewErrParamRequired("PrimaryTaskSet")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateTaskProtectionInput(v *UpdateTaskProtectionInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateTaskProtectionInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.Tasks == nil { + invalidParams.Add(smithy.NewErrParamRequired("Tasks")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} + +func validateOpUpdateTaskSetInput(v *UpdateTaskSetInput) error { + if v == nil { + return nil + } + invalidParams := smithy.InvalidParamsError{Context: "UpdateTaskSetInput"} + if v.Cluster == nil { + invalidParams.Add(smithy.NewErrParamRequired("Cluster")) + } + if v.Service == nil { + invalidParams.Add(smithy.NewErrParamRequired("Service")) + } + if v.TaskSet == nil { + invalidParams.Add(smithy.NewErrParamRequired("TaskSet")) + } + if v.Scale == nil { + invalidParams.Add(smithy.NewErrParamRequired("Scale")) + } + if invalidParams.Len() > 0 { + return invalidParams + } else { + return nil + } +} diff --git a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go index 2a44182a9..ad0d14b86 100644 --- a/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go +++ b/vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go @@ -31,6 +31,7 @@ const ( ApSoutheast3RegionID = "ap-southeast-3" // Asia Pacific (Jakarta). ApSoutheast4RegionID = "ap-southeast-4" // Asia Pacific (Melbourne). CaCentral1RegionID = "ca-central-1" // Canada (Central). + CaWest1RegionID = "ca-west-1" // Canada West (Calgary). EuCentral1RegionID = "eu-central-1" // Europe (Frankfurt). EuCentral2RegionID = "eu-central-2" // Europe (Zurich). EuNorth1RegionID = "eu-north-1" // Europe (Stockholm). @@ -190,6 +191,9 @@ var awsPartition = partition{ "ca-central-1": region{ Description: "Canada (Central)", }, + "ca-west-1": region{ + Description: "Canada West (Calgary)", + }, "eu-central-1": region{ Description: "Europe (Frankfurt)", }, @@ -291,6 +295,9 @@ var awsPartition = partition{ }: endpoint{ Hostname: "access-analyzer-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -477,6 +484,24 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "acm-fips.ca-west-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1-fips", + }: endpoint{ + Hostname: "acm-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -636,6 +661,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "acm-pca-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "acm-pca-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -669,6 +703,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "acm-pca-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -755,6 +798,13 @@ var awsPartition = partition{ }, }, }, + "agreement-marketplace": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + }, + }, "airflow": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -1040,6 +1090,21 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "api.detective-fips.ca-central-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-central-1-fips", + }: endpoint{ + Hostname: "api.detective-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -1247,6 +1312,14 @@ var awsPartition = partition{ Region: "ca-central-1", }, }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{ + Hostname: "api.ecr.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + }, endpointKey{ Region: "dkr-us-east-1", }: endpoint{ @@ -1818,6 +1891,12 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -1827,12 +1906,27 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, endpointKey{ Region: "us-east-1", }: endpoint{}, @@ -1910,6 +2004,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -2209,196 +2306,217 @@ var awsPartition = partition{ Hostname: "apigateway-fips.ca-central-1.amazonaws.com", }, endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-2", + Region: "ca-west-1", }: endpoint{}, endpointKey{ - Region: "eu-north-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-3", - }: endpoint{}, - endpointKey{ - Region: "fips-ca-central-1", - }: endpoint{ - Hostname: "apigateway-fips.ca-central-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "ca-central-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-east-1", - }: endpoint{ - Hostname: "apigateway-fips.us-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-east-2", - }: endpoint{ - Hostname: "apigateway-fips.us-east-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-1", - }: endpoint{ - Hostname: "apigateway-fips.us-west-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-2", - }: endpoint{ - Hostname: "apigateway-fips.us-west-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "il-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-south-1", - }: endpoint{}, - endpointKey{ - Region: "sa-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", + Region: "ca-west-1", Variant: fipsVariant, }: endpoint{ - Hostname: "apigateway-fips.us-east-1.amazonaws.com", + Hostname: "apigateway-fips.ca-west-1.amazonaws.com", }, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "apigateway-fips.us-east-2.amazonaws.com", - }, - endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "apigateway-fips.us-west-1.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "apigateway-fips.us-west-2.amazonaws.com", - }, - }, - }, - "app-integrations": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "af-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, - "appconfig": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "af-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-east-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-south-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-4", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "fips-ca-central-1", + }: endpoint{ + Hostname: "apigateway-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "apigateway-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "apigateway-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "apigateway-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "apigateway-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "apigateway-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "apigateway-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "apigateway-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "apigateway-fips.us-west-1.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "apigateway-fips.us-west-2.amazonaws.com", + }, + }, + }, + "app-integrations": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, + "appconfig": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -2487,6 +2605,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -2572,21 +2693,81 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "appflow-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "appflow-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "appflow-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "appflow-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "sa-east-1", }: endpoint{}, endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "appflow-fips.us-east-1.amazonaws.com", + }, endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "appflow-fips.us-east-2.amazonaws.com", + }, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "appflow-fips.us-west-1.amazonaws.com", + }, endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "appflow-fips.us-west-2.amazonaws.com", + }, }, }, "application-autoscaling": service{ @@ -2632,6 +2813,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -3085,6 +3269,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -3097,6 +3284,12 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-1", }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -3275,6 +3468,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -3302,6 +3498,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -3414,6 +3613,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -3833,15 +4035,75 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "auditmanager-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-1-fips", + }: endpoint{ + Hostname: "auditmanager-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "auditmanager-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2-fips", + }: endpoint{ + Hostname: "auditmanager-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "auditmanager-fips.us-west-1.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1-fips", + }: endpoint{ + Hostname: "auditmanager-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "auditmanager-fips.us-west-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2-fips", + }: endpoint{ + Hostname: "auditmanager-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, }, }, "autoscaling": service{ @@ -3887,6 +4149,21 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "autoscaling-fips.ca-central-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "autoscaling-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -3911,6 +4188,60 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-ca-central-1", + }: endpoint{ + Hostname: "autoscaling-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "autoscaling-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "autoscaling-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "autoscaling-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "autoscaling-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "autoscaling-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "il-central-1", }: endpoint{}, @@ -3926,15 +4257,39 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "autoscaling-fips.us-east-1.amazonaws.com", + }, endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "autoscaling-fips.us-east-2.amazonaws.com", + }, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "autoscaling-fips.us-west-1.amazonaws.com", + }, endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "autoscaling-fips.us-west-2.amazonaws.com", + }, }, }, "autoscaling-plans": service{ @@ -4298,6 +4653,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -4408,6 +4766,137 @@ var awsPartition = partition{ }, }, }, + "bedrock": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "bedrock-ap-northeast-1", + }: endpoint{ + Hostname: "bedrock.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + endpointKey{ + Region: "bedrock-ap-southeast-1", + }: endpoint{ + Hostname: "bedrock.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + endpointKey{ + Region: "bedrock-eu-central-1", + }: endpoint{ + Hostname: "bedrock.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + endpointKey{ + Region: "bedrock-fips-us-east-1", + }: endpoint{ + Hostname: "bedrock-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + endpointKey{ + Region: "bedrock-fips-us-west-2", + }: endpoint{ + Hostname: "bedrock-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + endpointKey{ + Region: "bedrock-runtime-ap-northeast-1", + }: endpoint{ + Hostname: "bedrock-runtime.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + endpointKey{ + Region: "bedrock-runtime-ap-southeast-1", + }: endpoint{ + Hostname: "bedrock-runtime.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + endpointKey{ + Region: "bedrock-runtime-eu-central-1", + }: endpoint{ + Hostname: "bedrock-runtime.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + endpointKey{ + Region: "bedrock-runtime-fips-us-east-1", + }: endpoint{ + Hostname: "bedrock-runtime-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + endpointKey{ + Region: "bedrock-runtime-fips-us-west-2", + }: endpoint{ + Hostname: "bedrock-runtime-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + endpointKey{ + Region: "bedrock-runtime-us-east-1", + }: endpoint{ + Hostname: "bedrock-runtime.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + endpointKey{ + Region: "bedrock-runtime-us-west-2", + }: endpoint{ + Hostname: "bedrock-runtime.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + endpointKey{ + Region: "bedrock-us-east-1", + }: endpoint{ + Hostname: "bedrock.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + endpointKey{ + Region: "bedrock-us-west-2", + }: endpoint{ + Hostname: "bedrock.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, "billingconductor": service{ PartitionEndpoint: "aws-global", IsRegionalized: boxedFalse, @@ -4710,6 +5199,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -4774,6 +5266,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "cloudcontrolapi-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "cloudcontrolapi-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -4807,6 +5308,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "cloudcontrolapi-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -4962,6 +5472,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -5121,6 +5634,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -5252,6 +5768,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -5412,6 +5931,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -5835,6 +6357,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -5993,15 +6518,27 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -6023,6 +6560,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-south-1", }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -6077,6 +6617,12 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -6279,6 +6825,9 @@ var awsPartition = partition{ }, "cognito-identity": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, endpointKey{ Region: "ap-northeast-1", }: endpoint{}, @@ -6297,6 +6846,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -6403,6 +6955,9 @@ var awsPartition = partition{ }, "cognito-idp": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, endpointKey{ Region: "ap-northeast-1", }: endpoint{}, @@ -6421,6 +6976,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -6772,6 +7330,14 @@ var awsPartition = partition{ Region: "ap-south-1", }, }, + endpointKey{ + Region: "ap-south-2", + }: endpoint{ + Hostname: "compute-optimizer.ap-south-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-south-2", + }, + }, endpointKey{ Region: "ap-southeast-1", }: endpoint{ @@ -6788,6 +7354,22 @@ var awsPartition = partition{ Region: "ap-southeast-2", }, }, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{ + Hostname: "compute-optimizer.ap-southeast-3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-3", + }, + }, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{ + Hostname: "compute-optimizer.ap-southeast-4.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-4", + }, + }, endpointKey{ Region: "ca-central-1", }: endpoint{ @@ -6804,6 +7386,14 @@ var awsPartition = partition{ Region: "eu-central-1", }, }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{ + Hostname: "compute-optimizer.eu-central-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-2", + }, + }, endpointKey{ Region: "eu-north-1", }: endpoint{ @@ -6820,6 +7410,14 @@ var awsPartition = partition{ Region: "eu-south-1", }, }, + endpointKey{ + Region: "eu-south-2", + }: endpoint{ + Hostname: "compute-optimizer.eu-south-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-south-2", + }, + }, endpointKey{ Region: "eu-west-1", }: endpoint{ @@ -6844,6 +7442,22 @@ var awsPartition = partition{ Region: "eu-west-3", }, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{ + Hostname: "compute-optimizer.il-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "il-central-1", + }, + }, + endpointKey{ + Region: "me-central-1", + }: endpoint{ + Hostname: "compute-optimizer.me-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "me-central-1", + }, + }, endpointKey{ Region: "me-south-1", }: endpoint{ @@ -6932,6 +7546,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -7212,6 +7829,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -7221,6 +7841,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -7242,12 +7865,18 @@ var awsPartition = partition{ endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, endpointKey{ Region: "eu-south-1", }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -7260,6 +7889,9 @@ var awsPartition = partition{ endpointKey{ Region: "il-central-1", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -7340,6 +7972,18 @@ var awsPartition = partition{ }, }, }, + "cost-optimization-hub": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-east-1", + }: endpoint{ + Hostname: "cost-optimization-hub.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + }, + }, "cur": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -7876,6 +8520,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "datasync-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datasync-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -7909,6 +8562,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "datasync-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -7995,6 +8657,190 @@ var awsPartition = partition{ }, }, }, + "datazone": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{ + Hostname: "datazone.af-south-1.api.aws", + }, + endpointKey{ + Region: "ap-east-1", + }: endpoint{ + Hostname: "datazone.ap-east-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{ + Hostname: "datazone.ap-northeast-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{ + Hostname: "datazone.ap-northeast-2.api.aws", + }, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{ + Hostname: "datazone.ap-northeast-3.api.aws", + }, + endpointKey{ + Region: "ap-south-1", + }: endpoint{ + Hostname: "datazone.ap-south-1.api.aws", + }, + endpointKey{ + Region: "ap-south-2", + }: endpoint{ + Hostname: "datazone.ap-south-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{ + Hostname: "datazone.ap-southeast-1.api.aws", + }, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{ + Hostname: "datazone.ap-southeast-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{ + Hostname: "datazone.ap-southeast-3.api.aws", + }, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{ + Hostname: "datazone.ap-southeast-4.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + }: endpoint{ + Hostname: "datazone.ca-central-1.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.ca-central-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{ + Hostname: "datazone.ca-west-1.api.aws", + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{ + Hostname: "datazone.eu-central-1.api.aws", + }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{ + Hostname: "datazone.eu-central-2.api.aws", + }, + endpointKey{ + Region: "eu-north-1", + }: endpoint{ + Hostname: "datazone.eu-north-1.api.aws", + }, + endpointKey{ + Region: "eu-south-1", + }: endpoint{ + Hostname: "datazone.eu-south-1.api.aws", + }, + endpointKey{ + Region: "eu-south-2", + }: endpoint{ + Hostname: "datazone.eu-south-2.api.aws", + }, + endpointKey{ + Region: "eu-west-1", + }: endpoint{ + Hostname: "datazone.eu-west-1.api.aws", + }, + endpointKey{ + Region: "eu-west-2", + }: endpoint{ + Hostname: "datazone.eu-west-2.api.aws", + }, + endpointKey{ + Region: "eu-west-3", + }: endpoint{ + Hostname: "datazone.eu-west-3.api.aws", + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{ + Hostname: "datazone.il-central-1.api.aws", + }, + endpointKey{ + Region: "me-central-1", + }: endpoint{ + Hostname: "datazone.me-central-1.api.aws", + }, + endpointKey{ + Region: "me-south-1", + }: endpoint{ + Hostname: "datazone.me-south-1.api.aws", + }, + endpointKey{ + Region: "sa-east-1", + }: endpoint{ + Hostname: "datazone.sa-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-1", + }: endpoint{ + Hostname: "datazone.us-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{ + Hostname: "datazone.us-east-2.api.aws", + }, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{ + Hostname: "datazone.us-west-1.api.aws", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{ + Hostname: "datazone.us-west-2.api.aws", + }, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datazone-fips.us-west-2.amazonaws.com", + }, + }, + }, "dax": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -8215,6 +9061,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -8388,6 +9237,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -8412,6 +9264,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -8473,6 +9328,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "dms", }: endpoint{ @@ -8788,6 +9646,45 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "drs-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "drs-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "drs-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "drs-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -8800,15 +9697,39 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "drs-fips.us-east-1.amazonaws.com", + }, endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "drs-fips.us-east-2.amazonaws.com", + }, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "drs-fips.us-west-1.amazonaws.com", + }, endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "drs-fips.us-west-2.amazonaws.com", + }, }, }, "ds": service{ @@ -8855,6 +9776,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "ds-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ds-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -8888,6 +9818,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "ds-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -9032,6 +9971,24 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "dynamodb-fips.ca-west-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1-fips", + }: endpoint{ + Hostname: "dynamodb-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -9195,6 +10152,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "ebs-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ebs-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -9228,6 +10194,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "ebs-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -9369,6 +10344,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "ec2-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ec2-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -9408,6 +10392,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "ec2-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -9556,6 +10549,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -9737,6 +10733,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -9847,6 +10846,166 @@ var awsPartition = partition{ }, }, }, + "eks-auth": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{ + Hostname: "eks-auth.af-south-1.api.aws", + }, + endpointKey{ + Region: "ap-east-1", + }: endpoint{ + Hostname: "eks-auth.ap-east-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{ + Hostname: "eks-auth.ap-northeast-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{ + Hostname: "eks-auth.ap-northeast-2.api.aws", + }, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{ + Hostname: "eks-auth.ap-northeast-3.api.aws", + }, + endpointKey{ + Region: "ap-south-1", + }: endpoint{ + Hostname: "eks-auth.ap-south-1.api.aws", + }, + endpointKey{ + Region: "ap-south-2", + }: endpoint{ + Hostname: "eks-auth.ap-south-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{ + Hostname: "eks-auth.ap-southeast-1.api.aws", + }, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{ + Hostname: "eks-auth.ap-southeast-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{ + Hostname: "eks-auth.ap-southeast-3.api.aws", + }, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{ + Hostname: "eks-auth.ap-southeast-4.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + }: endpoint{ + Hostname: "eks-auth.ca-central-1.api.aws", + }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{ + Hostname: "eks-auth.ca-west-1.api.aws", + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{ + Hostname: "eks-auth.eu-central-1.api.aws", + }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{ + Hostname: "eks-auth.eu-central-2.api.aws", + }, + endpointKey{ + Region: "eu-north-1", + }: endpoint{ + Hostname: "eks-auth.eu-north-1.api.aws", + }, + endpointKey{ + Region: "eu-south-1", + }: endpoint{ + Hostname: "eks-auth.eu-south-1.api.aws", + }, + endpointKey{ + Region: "eu-south-2", + }: endpoint{ + Hostname: "eks-auth.eu-south-2.api.aws", + }, + endpointKey{ + Region: "eu-west-1", + }: endpoint{ + Hostname: "eks-auth.eu-west-1.api.aws", + }, + endpointKey{ + Region: "eu-west-2", + }: endpoint{ + Hostname: "eks-auth.eu-west-2.api.aws", + }, + endpointKey{ + Region: "eu-west-3", + }: endpoint{ + Hostname: "eks-auth.eu-west-3.api.aws", + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{ + Hostname: "eks-auth.il-central-1.api.aws", + }, + endpointKey{ + Region: "me-central-1", + }: endpoint{ + Hostname: "eks-auth.me-central-1.api.aws", + }, + endpointKey{ + Region: "me-south-1", + }: endpoint{ + Hostname: "eks-auth.me-south-1.api.aws", + }, + endpointKey{ + Region: "sa-east-1", + }: endpoint{ + Hostname: "eks-auth.sa-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-1", + }: endpoint{ + Hostname: "eks-auth.us-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{ + Hostname: "eks-auth.us-east-2.api.aws", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{ + Hostname: "eks-auth.us-west-1.api.aws", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{ + Hostname: "eks-auth.us-west-2.api.aws", + }, + }, + }, "elasticache": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -9885,6 +11044,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -10247,6 +11409,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "elasticfilesystem-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "elasticfilesystem-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -10427,6 +11598,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "elasticfilesystem-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-eu-central-1", }: endpoint{ @@ -10688,6 +11868,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -10848,6 +12031,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "elasticmapreduce-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "elasticmapreduce-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{ @@ -10883,6 +12075,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "elasticmapreduce-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -10946,6 +12147,12 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "elasticmapreduce.us-east-2.api.aws", + }, endpointKey{ Region: "us-east-2", Variant: fipsVariant, @@ -11029,6 +12236,12 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "email-fips.ca-central-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -11047,6 +12260,15 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-ca-central-1", + }: endpoint{ + Hostname: "email-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -11056,6 +12278,24 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "email-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "email-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-west-2", }: endpoint{ @@ -11086,9 +12326,21 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "email-fips.us-east-2.amazonaws.com", + }, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "email-fips.us-west-1.amazonaws.com", + }, endpointKey{ Region: "us-west-2", }: endpoint{}, @@ -11114,6 +12366,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -11123,6 +12378,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -11195,6 +12453,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -11241,6 +12502,9 @@ var awsPartition = partition{ }, "emr-serverless": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, endpointKey{ Region: "ap-east-1", }: endpoint{}, @@ -11250,6 +12514,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -11259,6 +12526,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -11274,6 +12544,12 @@ var awsPartition = partition{ endpointKey{ Region: "eu-north-1", }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -11328,6 +12604,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -11496,6 +12775,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "aos.ca-central-1.api.aws", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "aos.ca-west-1.api.aws", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -11750,239 +13038,260 @@ var awsPartition = partition{ Region: "ca-central-1", }: endpoint{}, endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-2", - }: endpoint{}, - endpointKey{ - Region: "eu-north-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-3", - }: endpoint{}, - endpointKey{ - Region: "fips-us-east-1", - }: endpoint{ - Hostname: "events-fips.us-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-east-2", - }: endpoint{ - Hostname: "events-fips.us-east-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-1", - }: endpoint{ - Hostname: "events-fips.us-west-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-2", - }: endpoint{ - Hostname: "events-fips.us-west-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "il-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-south-1", - }: endpoint{}, - endpointKey{ - Region: "sa-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "events-fips.us-east-1.amazonaws.com", - }, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "events-fips.us-east-2.amazonaws.com", - }, - endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "events-fips.us-west-1.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "events-fips.us-west-2.amazonaws.com", - }, - }, - }, - "evidently": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{ - Hostname: "evidently.ap-northeast-1.amazonaws.com", - }, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{ - Hostname: "evidently.ap-southeast-1.amazonaws.com", - }, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{ - Hostname: "evidently.ap-southeast-2.amazonaws.com", - }, - endpointKey{ - Region: "eu-central-1", - }: endpoint{ - Hostname: "evidently.eu-central-1.amazonaws.com", - }, - endpointKey{ - Region: "eu-north-1", - }: endpoint{ - Hostname: "evidently.eu-north-1.amazonaws.com", - }, - endpointKey{ - Region: "eu-west-1", - }: endpoint{ - Hostname: "evidently.eu-west-1.amazonaws.com", - }, - endpointKey{ - Region: "us-east-1", - }: endpoint{ - Hostname: "evidently.us-east-1.amazonaws.com", - }, - endpointKey{ - Region: "us-east-2", - }: endpoint{ - Hostname: "evidently.us-east-2.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2", - }: endpoint{ - Hostname: "evidently.us-west-2.amazonaws.com", - }, - }, - }, - "finspace": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, - "finspace-api": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, - "firehose": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "af-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-east-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-south-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-4", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "events-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "events-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "events-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "events-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "events-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "events-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "events-fips.us-west-1.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "events-fips.us-west-2.amazonaws.com", + }, + }, + }, + "evidently": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{ + Hostname: "evidently.ap-northeast-1.amazonaws.com", + }, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{ + Hostname: "evidently.ap-southeast-1.amazonaws.com", + }, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{ + Hostname: "evidently.ap-southeast-2.amazonaws.com", + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{ + Hostname: "evidently.eu-central-1.amazonaws.com", + }, + endpointKey{ + Region: "eu-north-1", + }: endpoint{ + Hostname: "evidently.eu-north-1.amazonaws.com", + }, + endpointKey{ + Region: "eu-west-1", + }: endpoint{ + Hostname: "evidently.eu-west-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-1", + }: endpoint{ + Hostname: "evidently.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{ + Hostname: "evidently.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{ + Hostname: "evidently.us-west-2.amazonaws.com", + }, + }, + }, + "finspace": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, + "finspace-api": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, + "firehose": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", }: endpoint{}, endpointKey{ Region: "eu-central-1", @@ -13017,16 +14326,6 @@ var awsPartition = partition{ }: endpoint{}, }, }, - "gamesparks": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - }, - }, "geo": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -13258,6 +14557,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -13687,6 +14989,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -13985,6 +15290,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -14012,6 +15320,9 @@ var awsPartition = partition{ endpointKey{ Region: "il-central-1", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -14256,6 +15567,9 @@ var awsPartition = partition{ }, "inspector2": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, endpointKey{ Region: "ap-east-1", }: endpoint{}, @@ -14265,6 +15579,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -14274,12 +15591,18 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, @@ -14454,6 +15777,11 @@ var awsPartition = partition{ }: endpoint{ Hostname: "internetmonitor-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{ + Hostname: "internetmonitor.ca-west-1.api.aws", + }, endpointKey{ Region: "eu-central-1", }: endpoint{ @@ -15275,12 +16603,45 @@ var awsPartition = partition{ }, "iottwinmaker": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "api-ap-northeast-1", + }: endpoint{ + Hostname: "api.iottwinmaker.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + endpointKey{ + Region: "api-ap-northeast-2", + }: endpoint{ + Hostname: "api.iottwinmaker.ap-northeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + endpointKey{ + Region: "api-ap-south-1", + }: endpoint{ + Hostname: "api.iottwinmaker.ap-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-south-1", + }, + }, endpointKey{ Region: "api-ap-southeast-1", }: endpoint{ @@ -15329,6 +16690,30 @@ var awsPartition = partition{ Region: "us-west-2", }, }, + endpointKey{ + Region: "data-ap-northeast-1", + }: endpoint{ + Hostname: "data.iottwinmaker.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + endpointKey{ + Region: "data-ap-northeast-2", + }: endpoint{ + Hostname: "data.iottwinmaker.ap-northeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + endpointKey{ + Region: "data-ap-south-1", + }: endpoint{ + Hostname: "data.iottwinmaker.ap-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-south-1", + }, + }, endpointKey{ Region: "data-ap-southeast-1", }: endpoint{ @@ -15945,6 +17330,11 @@ var awsPartition = partition{ }: endpoint{ Hostname: "kendra-ranking-fips.ca-central-1.api.aws", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{ + Hostname: "kendra-ranking.ca-west-1.api.aws", + }, endpointKey{ Region: "eu-central-2", }: endpoint{ @@ -16073,6 +17463,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -16550,6 +17943,24 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "kms-fips.ca-west-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1-fips", + }: endpoint{ + Hostname: "kms-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -16878,6 +18289,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -17098,6 +18512,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "lambda.ca-central-1.api.aws", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "lambda.ca-west-1.api.aws", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -17324,6 +18747,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -17333,18 +18759,27 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, endpointKey{ Region: "eu-south-1", }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -17393,6 +18828,9 @@ var awsPartition = partition{ endpointKey{ Region: "il-central-1", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -17475,6 +18913,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -17586,185 +19027,6 @@ var awsPartition = partition{ }, }, "license-manager-user-subscriptions": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "af-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-east-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-3", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-north-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-3", - }: endpoint{}, - endpointKey{ - Region: "fips-us-east-1", - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-east-2", - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-east-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-1", - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-west-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-2", - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-west-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "il-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-south-1", - }: endpoint{}, - endpointKey{ - Region: "sa-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-east-1.amazonaws.com", - }, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-east-2.amazonaws.com", - }, - endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-west-1.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "license-manager-user-subscriptions-fips.us-west-2.amazonaws.com", - }, - }, - }, - "lightsail": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-north-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-3", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, - "logs": service{ Endpoints: serviceEndpoints{ endpointKey{ Region: "af-south-1", @@ -17826,6 +19088,359 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-1.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "license-manager-user-subscriptions-fips.us-west-2.amazonaws.com", + }, + }, + }, + "lightsail": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, + "logs": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "af-south-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.af-south-1.api.aws", + }, + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-east-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-northeast-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-northeast-2.api.aws", + }, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-northeast-3.api.aws", + }, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-south-1.api.aws", + }, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-south-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-southeast-1.api.aws", + }, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-southeast-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-southeast-3.api.aws", + }, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ap-southeast-4.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ca-central-1.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "logs-fips.ca-central-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.ca-west-1.api.aws", + }, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "logs-fips.ca-west-1.amazonaws.com", + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-central-1.api.aws", + }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-central-2.api.aws", + }, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-north-1.api.aws", + }, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-south-1.api.aws", + }, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-south-2.api.aws", + }, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-west-1.api.aws", + }, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-west-2.api.aws", + }, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.eu-west-3.api.aws", + }, + endpointKey{ + Region: "fips-ca-central-1", + }: endpoint{ + Hostname: "logs-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "logs-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -17865,18 +19480,48 @@ var awsPartition = partition{ endpointKey{ Region: "il-central-1", }: endpoint{}, + endpointKey{ + Region: "il-central-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.il-central-1.api.aws", + }, endpointKey{ Region: "me-central-1", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.me-central-1.api.aws", + }, endpointKey{ Region: "me-south-1", }: endpoint{}, + endpointKey{ + Region: "me-south-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.me-south-1.api.aws", + }, endpointKey{ Region: "sa-east-1", }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.sa-east-1.api.aws", + }, endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.us-east-1.api.aws", + }, endpointKey{ Region: "us-east-1", Variant: fipsVariant, @@ -17886,6 +19531,12 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.us-east-2.api.aws", + }, endpointKey{ Region: "us-east-2", Variant: fipsVariant, @@ -17895,6 +19546,12 @@ var awsPartition = partition{ endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.us-west-1.api.aws", + }, endpointKey{ Region: "us-west-1", Variant: fipsVariant, @@ -17904,6 +19561,12 @@ var awsPartition = partition{ endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "logs.us-west-2.api.aws", + }, endpointKey{ Region: "us-west-2", Variant: fipsVariant, @@ -17983,12 +19646,18 @@ var awsPartition = partition{ }, "m2": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, endpointKey{ Region: "ap-northeast-1", }: endpoint{}, endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -18008,6 +19677,15 @@ var awsPartition = partition{ endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -18047,6 +19725,9 @@ var awsPartition = partition{ Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "sa-east-1", }: endpoint{}, @@ -18090,46 +19771,6 @@ var awsPartition = partition{ }: endpoint{}, }, }, - "macie": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "fips-us-east-1", - }: endpoint{ - Hostname: "macie-fips.us-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-2", - }: endpoint{ - Hostname: "macie-fips.us-west-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "macie-fips.us-east-1.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "macie-fips.us-west-2.amazonaws.com", - }, - }, - }, "macie2": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -18282,6 +19923,13 @@ var awsPartition = partition{ }: endpoint{}, }, }, + "managedblockchain-query": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + }, + }, "marketplacecommerceanalytics": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -18355,12 +20003,18 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -18379,6 +20033,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "sa-east-1", }: endpoint{}, @@ -18540,6 +20197,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -18549,6 +20209,12 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -18631,6 +20297,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -18640,6 +20309,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -18683,6 +20355,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -18692,6 +20367,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -18735,6 +20413,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, @@ -18744,6 +20425,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -18812,12 +20496,30 @@ var awsPartition = partition{ }, "meetings-chime": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, endpointKey{ Region: "il-central-1", }: endpoint{}, @@ -19083,6 +20785,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -19516,6 +21221,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -19724,6 +21432,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -20045,6 +21756,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -20199,6 +21913,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -20339,6 +22056,14 @@ var awsPartition = partition{ Region: "eu-central-1", }, }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{ + Hostname: "oidc.eu-central-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-2", + }, + }, endpointKey{ Region: "eu-north-1", }: endpoint{ @@ -20387,6 +22112,14 @@ var awsPartition = partition{ Region: "il-central-1", }, }, + endpointKey{ + Region: "me-central-1", + }: endpoint{ + Hostname: "oidc.me-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "me-central-1", + }, + }, endpointKey{ Region: "me-south-1", }: endpoint{ @@ -20489,6 +22222,14 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{ + Hostname: "omics.il-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "il-central-1", + }, + }, endpointKey{ Region: "us-east-1", }: endpoint{ @@ -20642,21 +22383,36 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, endpointKey{ Region: "eu-west-2", }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, endpointKey{ Region: "us-east-1", }: endpoint{}, @@ -20961,6 +22717,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -21170,6 +22929,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -21185,12 +22947,18 @@ var awsPartition = partition{ endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, endpointKey{ Region: "eu-south-1", }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -21437,6 +23205,14 @@ var awsPartition = partition{ Region: "eu-central-1", }, }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{ + Hostname: "portal.sso.eu-central-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-2", + }, + }, endpointKey{ Region: "eu-north-1", }: endpoint{ @@ -21485,6 +23261,14 @@ var awsPartition = partition{ Region: "il-central-1", }, }, + endpointKey{ + Region: "me-central-1", + }: endpoint{ + Hostname: "portal.sso.me-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "me-central-1", + }, + }, endpointKey{ Region: "me-south-1", }: endpoint{ @@ -21535,6 +23319,19 @@ var awsPartition = partition{ }, }, }, + "private-networks": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, "profile": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -21676,6 +23473,166 @@ var awsPartition = partition{ }: endpoint{}, }, }, + "qbusiness": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{ + Hostname: "qbusiness.af-south-1.api.aws", + }, + endpointKey{ + Region: "ap-east-1", + }: endpoint{ + Hostname: "qbusiness.ap-east-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{ + Hostname: "qbusiness.ap-northeast-1.api.aws", + }, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{ + Hostname: "qbusiness.ap-northeast-2.api.aws", + }, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{ + Hostname: "qbusiness.ap-northeast-3.api.aws", + }, + endpointKey{ + Region: "ap-south-1", + }: endpoint{ + Hostname: "qbusiness.ap-south-1.api.aws", + }, + endpointKey{ + Region: "ap-south-2", + }: endpoint{ + Hostname: "qbusiness.ap-south-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{ + Hostname: "qbusiness.ap-southeast-1.api.aws", + }, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{ + Hostname: "qbusiness.ap-southeast-2.api.aws", + }, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{ + Hostname: "qbusiness.ap-southeast-3.api.aws", + }, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{ + Hostname: "qbusiness.ap-southeast-4.api.aws", + }, + endpointKey{ + Region: "ca-central-1", + }: endpoint{ + Hostname: "qbusiness.ca-central-1.api.aws", + }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{ + Hostname: "qbusiness.ca-west-1.api.aws", + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{ + Hostname: "qbusiness.eu-central-1.api.aws", + }, + endpointKey{ + Region: "eu-central-2", + }: endpoint{ + Hostname: "qbusiness.eu-central-2.api.aws", + }, + endpointKey{ + Region: "eu-north-1", + }: endpoint{ + Hostname: "qbusiness.eu-north-1.api.aws", + }, + endpointKey{ + Region: "eu-south-1", + }: endpoint{ + Hostname: "qbusiness.eu-south-1.api.aws", + }, + endpointKey{ + Region: "eu-south-2", + }: endpoint{ + Hostname: "qbusiness.eu-south-2.api.aws", + }, + endpointKey{ + Region: "eu-west-1", + }: endpoint{ + Hostname: "qbusiness.eu-west-1.api.aws", + }, + endpointKey{ + Region: "eu-west-2", + }: endpoint{ + Hostname: "qbusiness.eu-west-2.api.aws", + }, + endpointKey{ + Region: "eu-west-3", + }: endpoint{ + Hostname: "qbusiness.eu-west-3.api.aws", + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{ + Hostname: "qbusiness.il-central-1.api.aws", + }, + endpointKey{ + Region: "me-central-1", + }: endpoint{ + Hostname: "qbusiness.me-central-1.api.aws", + }, + endpointKey{ + Region: "me-south-1", + }: endpoint{ + Hostname: "qbusiness.me-south-1.api.aws", + }, + endpointKey{ + Region: "sa-east-1", + }: endpoint{ + Hostname: "qbusiness.sa-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-1", + }: endpoint{ + Hostname: "qbusiness.us-east-1.api.aws", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{ + Hostname: "qbusiness.us-east-2.api.aws", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{ + Hostname: "qbusiness.us-west-1.api.aws", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{ + Hostname: "qbusiness.us-west-2.api.aws", + }, + }, + }, "qldb": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -21866,6 +23823,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "ram-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ram-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -21899,6 +23865,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "ram-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -22029,6 +24004,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "rbin-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rbin-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -22062,6 +24046,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "rbin-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -22201,6 +24194,24 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.ca-west-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1-fips", + }: endpoint{ + Hostname: "rds-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -22243,6 +24254,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "rds-fips.ca-west-1", + }: endpoint{ + Hostname: "rds-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "rds-fips.us-east-1", }: endpoint{ @@ -22297,6 +24317,24 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "rds.ca-west-1", + }: endpoint{ + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds.ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "rds.us-east-1", }: endpoint{ @@ -22599,6 +24637,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "redshift-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -22632,6 +24679,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "redshift-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -22738,6 +24794,12 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-serverless-fips.ca-central-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -22753,18 +24815,87 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-ca-central-1", + }: endpoint{ + Hostname: "redshift-serverless-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "redshift-serverless-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "redshift-serverless-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "redshift-serverless-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "redshift-serverless-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-serverless-fips.us-east-1.amazonaws.com", + }, endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-serverless-fips.us-east-2.amazonaws.com", + }, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-serverless-fips.us-west-1.amazonaws.com", + }, endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-serverless-fips.us-west-2.amazonaws.com", + }, }, }, "rekognition": service{ @@ -23088,123 +25219,64 @@ var awsPartition = partition{ }, }, "resource-explorer-2": service{ - Defaults: endpointDefaults{ - defaultKey{}: endpoint{ - DNSSuffix: "api.aws", - }, - defaultKey{ - Variant: fipsVariant, - }: endpoint{ - Hostname: "{service}-fips.{region}.{dnsSuffix}", - DNSSuffix: "api.aws", - }, - }, Endpoints: serviceEndpoints{ endpointKey{ Region: "ap-northeast-1", - }: endpoint{ - Hostname: "resource-explorer-2.ap-northeast-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "ap-northeast-2", - }: endpoint{ - Hostname: "resource-explorer-2.ap-northeast-2.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "ap-northeast-3", - }: endpoint{ - Hostname: "resource-explorer-2.ap-northeast-3.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "ap-south-1", - }: endpoint{ - Hostname: "resource-explorer-2.ap-south-1.api.aws", - }, - endpointKey{ - Region: "ap-south-2", - }: endpoint{ - Hostname: "resource-explorer-2.ap-south-2.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", - }: endpoint{ - Hostname: "resource-explorer-2.ap-southeast-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "ap-southeast-2", - }: endpoint{ - Hostname: "resource-explorer-2.ap-southeast-2.api.aws", - }, + }: endpoint{}, endpointKey{ - Region: "ap-southeast-4", - }: endpoint{ - Hostname: "resource-explorer-2.ap-southeast-4.api.aws", - }, + Region: "ap-southeast-3", + }: endpoint{}, endpointKey{ Region: "ca-central-1", - }: endpoint{ - Hostname: "resource-explorer-2.ca-central-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "eu-central-1", - }: endpoint{ - Hostname: "resource-explorer-2.eu-central-1.api.aws", - }, - endpointKey{ - Region: "eu-central-2", - }: endpoint{ - Hostname: "resource-explorer-2.eu-central-2.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "eu-north-1", - }: endpoint{ - Hostname: "resource-explorer-2.eu-north-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "eu-west-1", - }: endpoint{ - Hostname: "resource-explorer-2.eu-west-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "eu-west-2", - }: endpoint{ - Hostname: "resource-explorer-2.eu-west-2.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "eu-west-3", - }: endpoint{ - Hostname: "resource-explorer-2.eu-west-3.api.aws", - }, + }: endpoint{}, endpointKey{ - Region: "il-central-1", - }: endpoint{ - Hostname: "resource-explorer-2.il-central-1.api.aws", - }, + Region: "me-south-1", + }: endpoint{}, endpointKey{ Region: "sa-east-1", - }: endpoint{ - Hostname: "resource-explorer-2.sa-east-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "us-east-1", - }: endpoint{ - Hostname: "resource-explorer-2.us-east-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "us-east-2", - }: endpoint{ - Hostname: "resource-explorer-2.us-east-2.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "us-west-1", - }: endpoint{ - Hostname: "resource-explorer-2.us-west-1.api.aws", - }, + }: endpoint{}, endpointKey{ Region: "us-west-2", - }: endpoint{ - Hostname: "resource-explorer-2.us-west-2.api.aws", - }, + }: endpoint{}, }, }, "resource-groups": service{ @@ -23245,6 +25317,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -23400,6 +25475,9 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, @@ -23409,18 +25487,30 @@ var awsPartition = partition{ endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, endpointKey{ Region: "eu-south-1", }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -23430,6 +25520,48 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "rolesanywhere-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "rolesanywhere-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "rolesanywhere-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "rolesanywhere-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -23439,15 +25571,39 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rolesanywhere-fips.us-east-1.amazonaws.com", + }, endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rolesanywhere-fips.us-east-2.amazonaws.com", + }, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rolesanywhere-fips.us-west-1.amazonaws.com", + }, endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rolesanywhere-fips.us-west-2.amazonaws.com", + }, }, }, "route53": service{ @@ -23544,6 +25700,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -23784,6 +25943,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -24061,6 +26223,27 @@ var awsPartition = partition{ }: endpoint{ Hostname: "s3-fips.dualstack.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "s3.dualstack.ca-west-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "s3-fips.ca-west-1.amazonaws.com", + }, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "s3-fips.dualstack.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -24146,6 +26329,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "s3-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -24839,55 +27031,123 @@ var awsPartition = partition{ endpointKey{ Region: "af-south-1", }: endpoint{}, + endpointKey{ + Region: "af-south-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-east-1", }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-northeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-northeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-northeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ap-southeast-3", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "ca-central-1", Variant: fipsVariant, }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "eu-south-1", }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "eu-west-2", }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "fips-ca-central-1", }: endpoint{ @@ -24921,40 +27181,84 @@ var awsPartition = partition{ endpointKey{ Region: "il-central-1", }: endpoint{}, + endpointKey{ + Region: "il-central-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, + endpointKey{ + Region: "me-south-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "sa-east-1", }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-east-1", }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-east-1", Variant: fipsVariant, }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-east-2", }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-east-2", Variant: fipsVariant, }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-west-1", }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-west-1", Variant: fipsVariant, }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-west-2", }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-west-2", Variant: fipsVariant, }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, }, }, "sagemaker-geospatial": service{ @@ -25120,141 +27424,456 @@ var awsPartition = partition{ Region: "eu-west-3", }: endpoint{}, endpointKey{ - Region: "me-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-south-1", - }: endpoint{}, - endpointKey{ - Region: "sa-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, - "sdb": service{ - Defaults: endpointDefaults{ - defaultKey{}: endpoint{ - Protocols: []string{"http", "https"}, - SignatureVersions: []string{"v2"}, + Region: "me-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, + "sdb": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"v2"}, + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{ + Hostname: "sdb.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, + "secretsmanager": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "af-south-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ca-central-1-fips", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "ca-west-1-fips", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "il-central-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-east-1-fips", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-east-2-fips", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-west-1-fips", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, + endpointKey{ + Region: "us-west-2-fips", + }: endpoint{ + + Deprecated: boxedTrue, + }, + }, + }, + "securityhub": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "securityhub-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, }, - }, - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "sa-east-1", - }: endpoint{}, endpointKey{ - Region: "us-east-1", + Region: "fips-us-east-2", }: endpoint{ - Hostname: "sdb.amazonaws.com", + Hostname: "securityhub-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, }, endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, - "secretsmanager": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "af-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-east-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-south-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-4", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - Variant: fipsVariant, + Region: "fips-us-west-1", }: endpoint{ - Hostname: "secretsmanager-fips.ca-central-1.amazonaws.com", + Hostname: "securityhub-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, }, endpointKey{ - Region: "ca-central-1-fips", + Region: "fips-us-west-2", }: endpoint{ - Hostname: "secretsmanager-fips.ca-central-1.amazonaws.com", + Hostname: "securityhub-fips.us-west-2.amazonaws.com", CredentialScope: credentialScope{ - Region: "ca-central-1", + Region: "us-west-2", }, Deprecated: boxedTrue, }, - endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-2", - }: endpoint{}, - endpointKey{ - Region: "eu-north-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-3", - }: endpoint{}, endpointKey{ Region: "il-central-1", }: endpoint{}, @@ -25274,16 +27893,7 @@ var awsPartition = partition{ Region: "us-east-1", Variant: fipsVariant, }: endpoint{ - Hostname: "secretsmanager-fips.us-east-1.amazonaws.com", - }, - endpointKey{ - Region: "us-east-1-fips", - }: endpoint{ - Hostname: "secretsmanager-fips.us-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-1", - }, - Deprecated: boxedTrue, + Hostname: "securityhub-fips.us-east-1.amazonaws.com", }, endpointKey{ Region: "us-east-2", @@ -25292,16 +27902,7 @@ var awsPartition = partition{ Region: "us-east-2", Variant: fipsVariant, }: endpoint{ - Hostname: "secretsmanager-fips.us-east-2.amazonaws.com", - }, - endpointKey{ - Region: "us-east-2-fips", - }: endpoint{ - Hostname: "secretsmanager-fips.us-east-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-2", - }, - Deprecated: boxedTrue, + Hostname: "securityhub-fips.us-east-2.amazonaws.com", }, endpointKey{ Region: "us-west-1", @@ -25310,16 +27911,7 @@ var awsPartition = partition{ Region: "us-west-1", Variant: fipsVariant, }: endpoint{ - Hostname: "secretsmanager-fips.us-west-1.amazonaws.com", - }, - endpointKey{ - Region: "us-west-1-fips", - }: endpoint{ - Hostname: "secretsmanager-fips.us-west-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-1", - }, - Deprecated: boxedTrue, + Hostname: "securityhub-fips.us-west-1.amazonaws.com", }, endpointKey{ Region: "us-west-2", @@ -25328,27 +27920,12 @@ var awsPartition = partition{ Region: "us-west-2", Variant: fipsVariant, }: endpoint{ - Hostname: "secretsmanager-fips.us-west-2.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2-fips", - }: endpoint{ - Hostname: "secretsmanager-fips.us-west-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-2", - }, - Deprecated: boxedTrue, + Hostname: "securityhub-fips.us-west-2.amazonaws.com", }, }, }, - "securityhub": service{ + "securitylake": service{ Endpoints: serviceEndpoints{ - endpointKey{ - Region: "af-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-east-1", - }: endpoint{}, endpointKey{ Region: "ap-northeast-1", }: endpoint{}, @@ -25361,39 +27938,21 @@ var awsPartition = partition{ endpointKey{ Region: "ap-south-1", }: endpoint{}, - endpointKey{ - Region: "ap-south-2", - }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, - endpointKey{ - Region: "ap-southeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-4", - }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, - endpointKey{ - Region: "eu-central-2", - }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, - endpointKey{ - Region: "eu-south-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-2", - }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, @@ -25406,7 +27965,7 @@ var awsPartition = partition{ endpointKey{ Region: "fips-us-east-1", }: endpoint{ - Hostname: "securityhub-fips.us-east-1.amazonaws.com", + Hostname: "securitylake-fips.us-east-1.amazonaws.com", CredentialScope: credentialScope{ Region: "us-east-1", }, @@ -25415,7 +27974,7 @@ var awsPartition = partition{ endpointKey{ Region: "fips-us-east-2", }: endpoint{ - Hostname: "securityhub-fips.us-east-2.amazonaws.com", + Hostname: "securitylake-fips.us-east-2.amazonaws.com", CredentialScope: credentialScope{ Region: "us-east-2", }, @@ -25424,7 +27983,7 @@ var awsPartition = partition{ endpointKey{ Region: "fips-us-west-1", }: endpoint{ - Hostname: "securityhub-fips.us-west-1.amazonaws.com", + Hostname: "securitylake-fips.us-west-1.amazonaws.com", CredentialScope: credentialScope{ Region: "us-west-1", }, @@ -25433,21 +27992,12 @@ var awsPartition = partition{ endpointKey{ Region: "fips-us-west-2", }: endpoint{ - Hostname: "securityhub-fips.us-west-2.amazonaws.com", + Hostname: "securitylake-fips.us-west-2.amazonaws.com", CredentialScope: credentialScope{ Region: "us-west-2", }, Deprecated: boxedTrue, }, - endpointKey{ - Region: "il-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-south-1", - }: endpoint{}, endpointKey{ Region: "sa-east-1", }: endpoint{}, @@ -25458,7 +28008,7 @@ var awsPartition = partition{ Region: "us-east-1", Variant: fipsVariant, }: endpoint{ - Hostname: "securityhub-fips.us-east-1.amazonaws.com", + Hostname: "securitylake-fips.us-east-1.amazonaws.com", }, endpointKey{ Region: "us-east-2", @@ -25467,7 +28017,7 @@ var awsPartition = partition{ Region: "us-east-2", Variant: fipsVariant, }: endpoint{ - Hostname: "securityhub-fips.us-east-2.amazonaws.com", + Hostname: "securitylake-fips.us-east-2.amazonaws.com", }, endpointKey{ Region: "us-west-1", @@ -25476,7 +28026,7 @@ var awsPartition = partition{ Region: "us-west-1", Variant: fipsVariant, }: endpoint{ - Hostname: "securityhub-fips.us-west-1.amazonaws.com", + Hostname: "securitylake-fips.us-west-1.amazonaws.com", }, endpointKey{ Region: "us-west-2", @@ -25485,53 +28035,10 @@ var awsPartition = partition{ Region: "us-west-2", Variant: fipsVariant, }: endpoint{ - Hostname: "securityhub-fips.us-west-2.amazonaws.com", + Hostname: "securitylake-fips.us-west-2.amazonaws.com", }, }, }, - "securitylake": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "sa-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, "serverlessrepo": service{ Defaults: endpointDefaults{ defaultKey{}: endpoint{ @@ -25823,6 +28330,9 @@ var awsPartition = partition{ }: endpoint{ Hostname: "servicecatalog-appregistry-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -25892,6 +28402,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -26343,6 +28856,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -26593,6 +29109,38 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-verification-us-east-1", + }: endpoint{ + Hostname: "verification.signer-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + endpointKey{ + Region: "fips-verification-us-east-2", + }: endpoint{ + Hostname: "verification.signer-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + endpointKey{ + Region: "fips-verification-us-west-1", + }: endpoint{ + Hostname: "verification.signer-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + endpointKey{ + Region: "fips-verification-us-west-2", + }: endpoint{ + Hostname: "verification.signer-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -26635,6 +29183,166 @@ var awsPartition = partition{ }: endpoint{ Hostname: "signer-fips.us-west-2.amazonaws.com", }, + endpointKey{ + Region: "verification-af-south-1", + }: endpoint{ + Hostname: "verification.signer.af-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "af-south-1", + }, + }, + endpointKey{ + Region: "verification-ap-east-1", + }: endpoint{ + Hostname: "verification.signer.ap-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-east-1", + }, + }, + endpointKey{ + Region: "verification-ap-northeast-1", + }: endpoint{ + Hostname: "verification.signer.ap-northeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-1", + }, + }, + endpointKey{ + Region: "verification-ap-northeast-2", + }: endpoint{ + Hostname: "verification.signer.ap-northeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-northeast-2", + }, + }, + endpointKey{ + Region: "verification-ap-south-1", + }: endpoint{ + Hostname: "verification.signer.ap-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-south-1", + }, + }, + endpointKey{ + Region: "verification-ap-southeast-1", + }: endpoint{ + Hostname: "verification.signer.ap-southeast-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-1", + }, + }, + endpointKey{ + Region: "verification-ap-southeast-2", + }: endpoint{ + Hostname: "verification.signer.ap-southeast-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ap-southeast-2", + }, + }, + endpointKey{ + Region: "verification-ca-central-1", + }: endpoint{ + Hostname: "verification.signer.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + }, + endpointKey{ + Region: "verification-eu-central-1", + }: endpoint{ + Hostname: "verification.signer.eu-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-central-1", + }, + }, + endpointKey{ + Region: "verification-eu-north-1", + }: endpoint{ + Hostname: "verification.signer.eu-north-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-north-1", + }, + }, + endpointKey{ + Region: "verification-eu-south-1", + }: endpoint{ + Hostname: "verification.signer.eu-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-south-1", + }, + }, + endpointKey{ + Region: "verification-eu-west-1", + }: endpoint{ + Hostname: "verification.signer.eu-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-1", + }, + }, + endpointKey{ + Region: "verification-eu-west-2", + }: endpoint{ + Hostname: "verification.signer.eu-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-2", + }, + }, + endpointKey{ + Region: "verification-eu-west-3", + }: endpoint{ + Hostname: "verification.signer.eu-west-3.amazonaws.com", + CredentialScope: credentialScope{ + Region: "eu-west-3", + }, + }, + endpointKey{ + Region: "verification-me-south-1", + }: endpoint{ + Hostname: "verification.signer.me-south-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "me-south-1", + }, + }, + endpointKey{ + Region: "verification-sa-east-1", + }: endpoint{ + Hostname: "verification.signer.sa-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "sa-east-1", + }, + }, + endpointKey{ + Region: "verification-us-east-1", + }: endpoint{ + Hostname: "verification.signer.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + }, + endpointKey{ + Region: "verification-us-east-2", + }: endpoint{ + Hostname: "verification.signer.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + }, + endpointKey{ + Region: "verification-us-west-1", + }: endpoint{ + Hostname: "verification.signer.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + }, + endpointKey{ + Region: "verification-us-west-2", + }: endpoint{ + Hostname: "verification.signer.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + }, }, }, "simspaceweaver": service{ @@ -26689,18 +29397,36 @@ var awsPartition = partition{ }, "sms-voice": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, endpointKey{ Region: "ap-northeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, endpointKey{ Region: "ap-south-1", }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -26713,12 +29439,27 @@ var awsPartition = partition{ endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-1", }: endpoint{}, endpointKey{ Region: "eu-west-2", }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, endpointKey{ Region: "fips-ca-central-1", }: endpoint{ @@ -26737,6 +29478,24 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "sms-voice-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "sms-voice-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-west-2", }: endpoint{ @@ -26746,6 +29505,18 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, endpointKey{ Region: "us-east-1", }: endpoint{}, @@ -26755,6 +29526,24 @@ var awsPartition = partition{ }: endpoint{ Hostname: "sms-voice-fips.us-east-1.amazonaws.com", }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "sms-voice-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "sms-voice-fips.us-west-1.amazonaws.com", + }, endpointKey{ Region: "us-west-2", }: endpoint{}, @@ -27119,6 +29908,15 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "sns-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -27143,6 +29941,15 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "sns-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -27273,6 +30080,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -27430,6 +30240,15 @@ var awsPartition = partition{ }: endpoint{ Hostname: "ssm-fips.ca-central-1.amazonaws.com", }, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ssm-fips.ca-west-1.amazonaws.com", + }, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -27463,6 +30282,15 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "fips-ca-west-1", + }: endpoint{ + Hostname: "ssm-fips.ca-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-east-1", }: endpoint{ @@ -27968,6 +30796,9 @@ var awsPartition = partition{ endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, endpointKey{ Region: "eu-north-1", }: endpoint{}, @@ -27986,6 +30817,9 @@ var awsPartition = partition{ endpointKey{ Region: "il-central-1", }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, endpointKey{ Region: "me-south-1", }: endpoint{}, @@ -28044,6 +30878,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -28363,6 +31200,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -28469,6 +31309,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -28643,6 +31486,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -28791,6 +31637,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -28939,6 +31788,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -29107,17 +31959,57 @@ var awsPartition = partition{ }, }, }, + "thinclient": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + }, + }, "tnb": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, endpointKey{ Region: "eu-west-3", }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, endpointKey{ Region: "us-east-1", }: endpoint{}, @@ -29495,54 +32387,265 @@ var awsPartition = partition{ endpointKey{ Region: "eu-west-3", }: endpoint{}, - endpointKey{ - Region: "fips-ca-central-1", - }: endpoint{ - Hostname: "transfer-fips.ca-central-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "ca-central-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-east-1", - }: endpoint{ - Hostname: "transfer-fips.us-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-east-2", - }: endpoint{ - Hostname: "transfer-fips.us-east-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-1", - }: endpoint{ - Hostname: "transfer-fips.us-west-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-1", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "fips-us-west-2", - }: endpoint{ - Hostname: "transfer-fips.us-west-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-2", - }, - Deprecated: boxedTrue, - }, - endpointKey{ - Region: "il-central-1", - }: endpoint{}, + endpointKey{ + Region: "fips-ca-central-1", + }: endpoint{ + Hostname: "transfer-fips.ca-central-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "ca-central-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-1", + }: endpoint{ + Hostname: "transfer-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-east-2", + }: endpoint{ + Hostname: "transfer-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-1", + }: endpoint{ + Hostname: "transfer-fips.us-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-west-2", + }: endpoint{ + Hostname: "transfer-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-central-1", + }: endpoint{}, + endpointKey{ + Region: "me-south-1", + }: endpoint{}, + endpointKey{ + Region: "sa-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "transfer-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "transfer-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "transfer-fips.us-west-1.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "transfer-fips.us-west-2.amazonaws.com", + }, + }, + }, + "translate": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + Protocols: []string{"https"}, + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "translate-fips.us-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-east-1-fips", + }: endpoint{ + Hostname: "translate-fips.us-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-east-2", + }: endpoint{}, + endpointKey{ + Region: "us-east-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "translate-fips.us-east-2.amazonaws.com", + }, + endpointKey{ + Region: "us-east-2-fips", + }: endpoint{ + Hostname: "translate-fips.us-east-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-east-2", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + }: endpoint{}, + endpointKey{ + Region: "us-west-2", + Variant: fipsVariant, + }: endpoint{ + Hostname: "translate-fips.us-west-2.amazonaws.com", + }, + endpointKey{ + Region: "us-west-2-fips", + }: endpoint{ + Hostname: "translate-fips.us-west-2.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-west-2", + }, + Deprecated: boxedTrue, + }, + }, + }, + "verifiedpermissions": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "af-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-east-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-northeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-south-1", + }: endpoint{}, + endpointKey{ + Region: "ap-south-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-3", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-4", + }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-1", + }: endpoint{}, + endpointKey{ + Region: "eu-central-2", + }: endpoint{}, + endpointKey{ + Region: "eu-north-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-1", + }: endpoint{}, + endpointKey{ + Region: "eu-south-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-1", + }: endpoint{}, + endpointKey{ + Region: "eu-west-2", + }: endpoint{}, + endpointKey{ + Region: "eu-west-3", + }: endpoint{}, endpointKey{ Region: "me-central-1", }: endpoint{}, @@ -29555,239 +32658,31 @@ var awsPartition = partition{ endpointKey{ Region: "us-east-1", }: endpoint{}, - endpointKey{ - Region: "us-east-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "transfer-fips.us-east-1.amazonaws.com", - }, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "transfer-fips.us-east-2.amazonaws.com", - }, - endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "transfer-fips.us-west-1.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "transfer-fips.us-west-2.amazonaws.com", - }, - }, - }, - "translate": service{ - Defaults: endpointDefaults{ - defaultKey{}: endpoint{ - Protocols: []string{"https"}, - }, - }, - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ap-east-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-2", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-north-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-3", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - Variant: fipsVariant, - }: endpoint{ - Hostname: "translate-fips.us-east-1.amazonaws.com", - }, - endpointKey{ - Region: "us-east-1-fips", - }: endpoint{ - Hostname: "translate-fips.us-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-1", - }, - Deprecated: boxedTrue, - }, endpointKey{ Region: "us-east-2", }: endpoint{}, - endpointKey{ - Region: "us-east-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "translate-fips.us-east-2.amazonaws.com", - }, - endpointKey{ - Region: "us-east-2-fips", - }: endpoint{ - Hostname: "translate-fips.us-east-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-east-2", - }, - Deprecated: boxedTrue, - }, endpointKey{ Region: "us-west-1", }: endpoint{}, endpointKey{ Region: "us-west-2", }: endpoint{}, - endpointKey{ - Region: "us-west-2", - Variant: fipsVariant, - }: endpoint{ - Hostname: "translate-fips.us-west-2.amazonaws.com", - }, - endpointKey{ - Region: "us-west-2-fips", - }: endpoint{ - Hostname: "translate-fips.us-west-2.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-west-2", - }, - Deprecated: boxedTrue, - }, }, }, - "verifiedpermissions": service{ + "voice-chime": service{ Endpoints: serviceEndpoints{ - endpointKey{ - Region: "af-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-east-1", - }: endpoint{}, endpointKey{ Region: "ap-northeast-1", }: endpoint{}, endpointKey{ Region: "ap-northeast-2", }: endpoint{}, - endpointKey{ - Region: "ap-northeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-south-1", - }: endpoint{}, - endpointKey{ - Region: "ap-south-2", - }: endpoint{}, endpointKey{ Region: "ap-southeast-1", }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, - endpointKey{ - Region: "ap-southeast-3", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-4", - }: endpoint{}, - endpointKey{ - Region: "ca-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-1", - }: endpoint{}, - endpointKey{ - Region: "eu-central-2", - }: endpoint{}, - endpointKey{ - Region: "eu-north-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-1", - }: endpoint{}, - endpointKey{ - Region: "eu-south-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-1", - }: endpoint{}, - endpointKey{ - Region: "eu-west-2", - }: endpoint{}, - endpointKey{ - Region: "eu-west-3", - }: endpoint{}, - endpointKey{ - Region: "me-central-1", - }: endpoint{}, - endpointKey{ - Region: "me-south-1", - }: endpoint{}, - endpointKey{ - Region: "sa-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-1", - }: endpoint{}, - endpointKey{ - Region: "us-east-2", - }: endpoint{}, - endpointKey{ - Region: "us-west-1", - }: endpoint{}, - endpointKey{ - Region: "us-west-2", - }: endpoint{}, - }, - }, - "voice-chime": service{ - Endpoints: serviceEndpoints{ - endpointKey{ - Region: "ap-northeast-1", - }: endpoint{}, - endpointKey{ - Region: "ap-northeast-2", - }: endpoint{}, - endpointKey{ - Region: "ap-southeast-1", - }: endpoint{}, endpointKey{ Region: "ca-central-1", }: endpoint{}, @@ -31549,9 +34444,18 @@ var awsPartition = partition{ endpointKey{ Region: "ap-northeast-1", }: endpoint{}, + endpointKey{ + Region: "ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ap-southeast-1", + }: endpoint{}, endpointKey{ Region: "ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ca-central-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -31573,9 +34477,18 @@ var awsPartition = partition{ endpointKey{ Region: "ui-ap-northeast-1", }: endpoint{}, + endpointKey{ + Region: "ui-ap-northeast-2", + }: endpoint{}, + endpointKey{ + Region: "ui-ap-southeast-1", + }: endpoint{}, endpointKey{ Region: "ui-ap-southeast-2", }: endpoint{}, + endpointKey{ + Region: "ui-ca-central-1", + }: endpoint{}, endpointKey{ Region: "ui-eu-central-1", }: endpoint{}, @@ -31724,6 +34637,9 @@ var awsPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "il-central-1", + }: endpoint{}, endpointKey{ Region: "sa-east-1", }: endpoint{}, @@ -31819,6 +34735,9 @@ var awsPartition = partition{ endpointKey{ Region: "ca-central-1", }: endpoint{}, + endpointKey{ + Region: "ca-west-1", + }: endpoint{}, endpointKey{ Region: "eu-central-1", }: endpoint{}, @@ -32051,6 +34970,20 @@ var awscnPartition = partition{ }, }, }, + "api.pricing": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + CredentialScope: credentialScope{ + Service: "pricing", + }, + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{}, + }, + }, "api.sagemaker": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -32468,6 +35401,31 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "datazone": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.amazonwebservices.com.cn", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.amazonwebservices.com.cn", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{ + Hostname: "datazone.cn-north-1.api.amazonwebservices.com.cn", + }, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{ + Hostname: "datazone.cn-northwest-1.api.amazonwebservices.com.cn", + }, + }, + }, "dax": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -32595,6 +35553,31 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "eks-auth": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.amazonwebservices.com.cn", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.amazonwebservices.com.cn", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{ + Hostname: "eks-auth.cn-north-1.api.amazonwebservices.com.cn", + }, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{ + Hostname: "eks-auth.cn-northwest-1.api.amazonwebservices.com.cn", + }, + }, + }, "elasticache": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -32680,9 +35663,21 @@ var awscnPartition = partition{ endpointKey{ Region: "cn-north-1", }: endpoint{}, + endpointKey{ + Region: "cn-north-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "elasticmapreduce.cn-north-1.api.amazonwebservices.com.cn", + }, endpointKey{ Region: "cn-northwest-1", }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "elasticmapreduce.cn-northwest-1.api.amazonwebservices.com.cn", + }, }, }, "emr-containers": service{ @@ -32892,6 +35887,16 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "inspector2": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{}, + }, + }, "internetmonitor": service{ Defaults: endpointDefaults{ defaultKey{}: endpoint{ @@ -32970,6 +35975,29 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "iottwinmaker": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "api-cn-north-1", + }: endpoint{ + Hostname: "api.iottwinmaker.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + endpointKey{ + Region: "cn-north-1", + }: endpoint{}, + endpointKey{ + Region: "data-cn-north-1", + }: endpoint{ + Hostname: "data.iottwinmaker.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + }, + }, "kafka": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -33181,6 +36209,16 @@ var awscnPartition = partition{ }, }, }, + "network-firewall": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{}, + }, + }, "oam": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -33191,6 +36229,26 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "oidc": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{ + Hostname: "oidc.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{ + Hostname: "oidc.cn-northwest-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, + }, + }, "organizations": service{ PartitionEndpoint: "aws-cn-global", IsRegionalized: boxedFalse, @@ -33222,6 +36280,16 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "pipes": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{}, + }, + }, "polly": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -33229,6 +36297,58 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "portal.sso": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{ + Hostname: "portal.sso.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{ + Hostname: "portal.sso.cn-northwest-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, + }, + }, + "qbusiness": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.amazonwebservices.com.cn", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.amazonwebservices.com.cn", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{ + Hostname: "qbusiness.cn-north-1.api.amazonwebservices.com.cn", + }, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{ + Hostname: "qbusiness.cn-northwest-1.api.amazonwebservices.com.cn", + }, + }, + }, + "quicksight": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{}, + }, + }, "ram": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -33269,29 +36389,11 @@ var awscnPartition = partition{ }: endpoint{}, }, }, - "resource-explorer-2": service{ - Defaults: endpointDefaults{ - defaultKey{}: endpoint{ - DNSSuffix: "api.amazonwebservices.com.cn", - }, - defaultKey{ - Variant: fipsVariant, - }: endpoint{ - Hostname: "{service}-fips.{region}.{dnsSuffix}", - DNSSuffix: "api.amazonwebservices.com.cn", - }, - }, + "redshift-serverless": service{ Endpoints: serviceEndpoints{ endpointKey{ Region: "cn-north-1", - }: endpoint{ - Hostname: "resource-explorer-2.cn-north-1.api.amazonwebservices.com.cn", - }, - endpointKey{ - Region: "cn-northwest-1", - }: endpoint{ - Hostname: "resource-explorer-2.cn-northwest-1.api.amazonwebservices.com.cn", - }, + }: endpoint{}, }, }, "resource-groups": service{ @@ -33481,9 +36583,17 @@ var awscnPartition = partition{ endpointKey{ Region: "cn-north-1", }: endpoint{}, + endpointKey{ + Region: "cn-north-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "cn-northwest-1", }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + Variant: dualStackVariant, + }: endpoint{}, }, }, "securityhub": service{ @@ -33570,6 +36680,22 @@ var awscnPartition = partition{ endpointKey{ Region: "cn-northwest-1", }: endpoint{}, + endpointKey{ + Region: "verification-cn-north-1", + }: endpoint{ + Hostname: "verification.signer.cn-north-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-north-1", + }, + }, + endpointKey{ + Region: "verification-cn-northwest-1", + }: endpoint{ + Hostname: "verification.signer.cn-northwest-1.amazonaws.com.cn", + CredentialScope: credentialScope{ + Region: "cn-northwest-1", + }, + }, }, }, "sms": service{ @@ -33660,14 +36786,36 @@ var awscnPartition = partition{ }: endpoint{}, }, }, + "sso": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "cn-north-1", + }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + }: endpoint{}, + }, + }, "states": service{ Endpoints: serviceEndpoints{ endpointKey{ Region: "cn-north-1", }: endpoint{}, + endpointKey{ + Region: "cn-north-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "states.cn-north-1.api.amazonwebservices.com.cn", + }, endpointKey{ Region: "cn-northwest-1", }: endpoint{}, + endpointKey{ + Region: "cn-northwest-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "states.cn-northwest-1.api.amazonwebservices.com.cn", + }, }, }, "storagegateway": service{ @@ -34441,12 +37589,42 @@ var awsusgovPartition = partition{ }, "appconfigdata": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + Hostname: "appconfigdata.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-gov-west-1", + }: endpoint{ + Hostname: "appconfigdata.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "appconfigdata.us-gov-east-1.amazonaws.com", + }, endpointKey{ Region: "us-gov-west-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "appconfigdata.us-gov-west-1.amazonaws.com", + }, }, }, "application-autoscaling": service{ @@ -34581,6 +37759,16 @@ var awsusgovPartition = partition{ }, }, }, + "arc-zonal-shift": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{}, + }, + }, "athena": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -34764,6 +37952,13 @@ var awsusgovPartition = partition{ }, }, }, + "bedrock": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{}, + }, + }, "cassandra": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -35179,6 +38374,13 @@ var awsusgovPartition = partition{ }, }, }, + "codestar-connections": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + }, + }, "cognito-identity": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -35522,6 +38724,31 @@ var awsusgovPartition = partition{ }, }, }, + "datazone": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{ + Hostname: "datazone.us-gov-east-1.api.aws", + }, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{ + Hostname: "datazone.us-gov-west-1.api.aws", + }, + }, + }, "directconnect": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -35669,6 +38896,46 @@ var awsusgovPartition = partition{ }, }, }, + "drs": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + Hostname: "drs-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-gov-west-1", + }: endpoint{ + Hostname: "drs-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "drs-fips.us-gov-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "drs-fips.us-gov-west-1.amazonaws.com", + }, + }, + }, "ds": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -35904,6 +39171,31 @@ var awsusgovPartition = partition{ }, }, }, + "eks-auth": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{ + Hostname: "eks-auth.us-gov-east-1.api.aws", + }, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{ + Hostname: "eks-auth.us-gov-west-1.api.aws", + }, + }, + }, "elasticache": service{ Defaults: endpointDefaults{ defaultKey{}: endpoint{}, @@ -36124,6 +39416,12 @@ var awsusgovPartition = partition{ endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "elasticmapreduce.us-gov-east-1.api.aws", + }, endpointKey{ Region: "us-gov-east-1", Variant: fipsVariant, @@ -36135,6 +39433,13 @@ var awsusgovPartition = partition{ }: endpoint{ Protocols: []string{"https"}, }, + endpointKey{ + Region: "us-gov-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "elasticmapreduce.us-gov-west-1.api.aws", + Protocols: []string{"https"}, + }, endpointKey{ Region: "us-gov-west-1", Variant: fipsVariant, @@ -36176,6 +39481,16 @@ var awsusgovPartition = partition{ }: endpoint{}, }, }, + "emr-serverless": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{}, + }, + }, "es": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -36544,21 +39859,45 @@ var awsusgovPartition = partition{ endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "glue.us-gov-east-1.api.aws", + }, endpointKey{ Region: "us-gov-east-1", Variant: fipsVariant, }: endpoint{ Hostname: "glue-fips.us-gov-east-1.amazonaws.com", }, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "glue-fips.us-gov-east-1.api.aws", + }, endpointKey{ Region: "us-gov-west-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "glue.us-gov-west-1.api.aws", + }, endpointKey{ Region: "us-gov-west-1", Variant: fipsVariant, }: endpoint{ Hostname: "glue-fips.us-gov-west-1.amazonaws.com", }, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "glue-fips.us-gov-west-1.api.aws", + }, }, }, "greengrass": service{ @@ -36676,7 +40015,21 @@ var awsusgovPartition = partition{ }, }, "health": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + SSLCommonName: "health.us-gov-west-1.amazonaws.com", + Protocols: []string{"https"}, + }, + }, Endpoints: serviceEndpoints{ + endpointKey{ + Region: "aws-us-gov-global", + }: endpoint{ + Hostname: "global.health.us-gov.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, endpointKey{ Region: "fips-us-gov-west-1", }: endpoint{ @@ -37393,21 +40746,45 @@ var awsusgovPartition = partition{ endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "lakeformation.us-gov-east-1.api.aws", + }, endpointKey{ Region: "us-gov-east-1", Variant: fipsVariant, }: endpoint{ Hostname: "lakeformation-fips.us-gov-east-1.amazonaws.com", }, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "lakeformation-fips.us-gov-east-1.api.aws", + }, endpointKey{ Region: "us-gov-west-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: dualStackVariant, + }: endpoint{ + Hostname: "lakeformation.us-gov-west-1.api.aws", + }, endpointKey{ Region: "us-gov-west-1", Variant: fipsVariant, }: endpoint{ Hostname: "lakeformation-fips.us-gov-west-1.amazonaws.com", }, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "lakeformation-fips.us-gov-west-1.api.aws", + }, }, }, "lambda": service{ @@ -37552,6 +40929,36 @@ var awsusgovPartition = partition{ }, }, }, + "m2": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-gov-west-1", + }: endpoint{ + + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, + }: endpoint{}, + }, + }, "managedblockchain": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -38108,6 +41515,31 @@ var awsusgovPartition = partition{ }, }, }, + "qbusiness": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + DNSSuffix: "api.aws", + }, + defaultKey{ + Variant: fipsVariant, + }: endpoint{ + Hostname: "{service}-fips.{region}.{dnsSuffix}", + DNSSuffix: "api.aws", + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{ + Hostname: "qbusiness.us-gov-east-1.api.aws", + }, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{ + Hostname: "qbusiness.us-gov-west-1.api.aws", + }, + }, + }, "quicksight": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -38349,28 +41781,43 @@ var awsusgovPartition = partition{ }, }, }, - "resource-explorer-2": service{ - Defaults: endpointDefaults{ - defaultKey{}: endpoint{ - DNSSuffix: "api.aws", + "resiliencehub": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + Hostname: "resiliencehub-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: boxedTrue, }, - defaultKey{ - Variant: fipsVariant, + endpointKey{ + Region: "fips-us-gov-west-1", }: endpoint{ - Hostname: "{service}-fips.{region}.{dnsSuffix}", - DNSSuffix: "api.aws", + Hostname: "resiliencehub-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + Deprecated: boxedTrue, }, - }, - Endpoints: serviceEndpoints{ endpointKey{ Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, }: endpoint{ - Hostname: "resource-explorer-2.us-gov-east-1.api.aws", + Hostname: "resiliencehub-fips.us-gov-east-1.amazonaws.com", }, endpointKey{ Region: "us-gov-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, }: endpoint{ - Hostname: "resource-explorer-2.us-gov-west-1.api.aws", + Hostname: "resiliencehub-fips.us-gov-west-1.amazonaws.com", }, }, }, @@ -38429,6 +41876,46 @@ var awsusgovPartition = partition{ }: endpoint{}, }, }, + "rolesanywhere": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + Hostname: "rolesanywhere-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-gov-west-1", + }: endpoint{ + Hostname: "rolesanywhere-fips.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rolesanywhere-fips.us-gov-east-1.amazonaws.com", + }, + endpointKey{ + Region: "us-gov-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rolesanywhere-fips.us-gov-west-1.amazonaws.com", + }, + }, + }, "route53": service{ PartitionEndpoint: "aws-us-gov-global", IsRegionalized: boxedFalse, @@ -38789,17 +42276,33 @@ var awsusgovPartition = partition{ endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-gov-east-1", Variant: fipsVariant, }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-gov-west-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-gov-west-1", Variant: fipsVariant, }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, }, }, "secretsmanager": service{ @@ -38807,37 +42310,43 @@ var awsusgovPartition = partition{ endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-gov-east-1", Variant: fipsVariant, - }: endpoint{ - Hostname: "secretsmanager-fips.us-gov-east-1.amazonaws.com", - }, + }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-gov-east-1-fips", }: endpoint{ - Hostname: "secretsmanager-fips.us-gov-east-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-gov-east-1", - }, + Deprecated: boxedTrue, }, endpointKey{ Region: "us-gov-west-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-gov-west-1", Variant: fipsVariant, - }: endpoint{ - Hostname: "secretsmanager-fips.us-gov-west-1.amazonaws.com", - }, + }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{}, endpointKey{ Region: "us-gov-west-1-fips", }: endpoint{ - Hostname: "secretsmanager-fips.us-gov-west-1.amazonaws.com", - CredentialScope: credentialScope{ - Region: "us-gov-west-1", - }, + Deprecated: boxedTrue, }, }, @@ -39135,12 +42644,42 @@ var awsusgovPartition = partition{ }, "simspaceweaver": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + Hostname: "simspaceweaver.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-gov-west-1", + }: endpoint{ + Hostname: "simspaceweaver.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-gov-east-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "simspaceweaver.us-gov-east-1.amazonaws.com", + }, endpointKey{ Region: "us-gov-west-1", }: endpoint{}, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "simspaceweaver.us-gov-west-1.amazonaws.com", + }, }, }, "sms": service{ @@ -39167,6 +42706,15 @@ var awsusgovPartition = partition{ }, "sms-voice": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-gov-east-1", + }: endpoint{ + Hostname: "sms-voice-fips.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "fips-us-gov-west-1", }: endpoint{ @@ -39176,6 +42724,15 @@ var awsusgovPartition = partition{ }, Deprecated: boxedTrue, }, + endpointKey{ + Region: "us-gov-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "sms-voice-fips.us-gov-east-1.amazonaws.com", + }, endpointKey{ Region: "us-gov-west-1", }: endpoint{}, @@ -39358,6 +42915,24 @@ var awsusgovPartition = partition{ Region: "us-gov-east-1", }, }, + endpointKey{ + Region: "us-gov-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "sso.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + }, + endpointKey{ + Region: "us-gov-east-1-fips", + }: endpoint{ + Hostname: "sso.us-gov-east-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-gov-west-1", }: endpoint{ @@ -39366,6 +42941,24 @@ var awsusgovPartition = partition{ Region: "us-gov-west-1", }, }, + endpointKey{ + Region: "us-gov-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "sso.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + }, + endpointKey{ + Region: "us-gov-west-1-fips", + }: endpoint{ + Hostname: "sso.us-gov-west-1.amazonaws.com", + CredentialScope: credentialScope{ + Region: "us-gov-west-1", + }, + Deprecated: boxedTrue, + }, }, }, "states": service{ @@ -40138,6 +43731,20 @@ var awsisoPartition = partition{ }, }, }, + "api.pricing": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + CredentialScope: credentialScope{ + Service: "pricing", + }, + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-iso-east-1", + }: endpoint{}, + }, + }, "api.sagemaker": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -40187,6 +43794,16 @@ var awsisoPartition = partition{ }: endpoint{}, }, }, + "arc-zonal-shift": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-iso-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + }: endpoint{}, + }, + }, "athena": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -40275,6 +43892,46 @@ var awsisoPartition = partition{ }: endpoint{}, }, }, + "datasync": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-iso-east-1", + }: endpoint{ + Hostname: "datasync-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-iso-west-1", + }: endpoint{ + Hostname: "datasync-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "us-iso-east-1", + }: endpoint{}, + endpointKey{ + Region: "us-iso-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datasync-fips.us-iso-east-1.c2s.ic.gov", + }, + endpointKey{ + Region: "us-iso-west-1", + }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "datasync-fips.us-iso-west-1.c2s.ic.gov", + }, + }, + }, "directconnect": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -40397,6 +44054,9 @@ var awsisoPartition = partition{ endpointKey{ Region: "us-iso-east-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + }: endpoint{}, }, }, "ec2": service{ @@ -40498,14 +44158,45 @@ var awsisoPartition = partition{ }, "elasticmapreduce": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-iso-east-1", + }: endpoint{ + Hostname: "elasticmapreduce.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-iso-west-1", + }: endpoint{ + Hostname: "elasticmapreduce.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-iso-east-1", }: endpoint{ Protocols: []string{"https"}, }, + endpointKey{ + Region: "us-iso-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "elasticmapreduce.us-iso-east-1.c2s.ic.gov", + Protocols: []string{"https"}, + }, endpointKey{ Region: "us-iso-west-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "elasticmapreduce.us-iso-west-1.c2s.ic.gov", + }, }, }, "es": service{ @@ -40557,6 +44248,19 @@ var awsisoPartition = partition{ }: endpoint{}, }, }, + "guardduty": service{ + IsRegionalized: boxedTrue, + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + Protocols: []string{"https"}, + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-iso-east-1", + }: endpoint{}, + }, + }, "health": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -40707,12 +44411,42 @@ var awsisoPartition = partition{ }, "ram": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-iso-east-1", + }: endpoint{ + Hostname: "ram-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-iso-west-1", + }: endpoint{ + Hostname: "ram-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-iso-east-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ram-fips.us-iso-east-1.c2s.ic.gov", + }, endpointKey{ Region: "us-iso-west-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ram-fips.us-iso-west-1.c2s.ic.gov", + }, }, }, "rbin": service{ @@ -40757,22 +44491,136 @@ var awsisoPartition = partition{ }, "rds": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "rds-fips.us-iso-east-1", + }: endpoint{ + Hostname: "rds-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds-fips.us-iso-west-1", + }: endpoint{ + Hostname: "rds-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds.us-iso-east-1", + }: endpoint{ + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds.us-iso-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds.us-iso-west-1", + }: endpoint{ + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds.us-iso-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-iso-east-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.us-iso-east-1.c2s.ic.gov", + }, + endpointKey{ + Region: "us-iso-east-1-fips", + }: endpoint{ + Hostname: "rds-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-iso-west-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.us-iso-west-1.c2s.ic.gov", + }, + endpointKey{ + Region: "us-iso-west-1-fips", + }: endpoint{ + Hostname: "rds-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, }, }, "redshift": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-iso-east-1", + }: endpoint{ + Hostname: "redshift-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-iso-west-1", + }: endpoint{ + Hostname: "redshift-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-iso-east-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-fips.us-iso-east-1.c2s.ic.gov", + }, endpointKey{ Region: "us-iso-west-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-fips.us-iso-west-1.c2s.ic.gov", + }, }, }, "resource-groups": service{ @@ -40823,15 +44671,61 @@ var awsisoPartition = partition{ }, }, Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-iso-east-1", + }: endpoint{ + Hostname: "s3-fips.us-iso-east-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "fips-us-iso-west-1", + }: endpoint{ + Hostname: "s3-fips.us-iso-west-1.c2s.ic.gov", + CredentialScope: credentialScope{ + Region: "us-iso-west-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-iso-east-1", }: endpoint{ Protocols: []string{"http", "https"}, SignatureVersions: []string{"s3v4"}, }, + endpointKey{ + Region: "us-iso-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "s3-fips.us-iso-east-1.c2s.ic.gov", + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, + endpointKey{ + Region: "us-iso-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "s3-fips.dualstack.us-iso-east-1.c2s.ic.gov", + Protocols: []string{"http", "https"}, + SignatureVersions: []string{"s3v4"}, + }, endpointKey{ Region: "us-iso-west-1", }: endpoint{}, + endpointKey{ + Region: "us-iso-west-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "s3-fips.us-iso-west-1.c2s.ic.gov", + }, + endpointKey{ + Region: "us-iso-west-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "s3-fips.dualstack.us-iso-west-1.c2s.ic.gov", + }, }, }, "secretsmanager": service{ @@ -41057,6 +44951,27 @@ var awsisobPartition = partition{ }, }, }, + "api.pricing": service{ + Defaults: endpointDefaults{ + defaultKey{}: endpoint{ + CredentialScope: credentialScope{ + Service: "pricing", + }, + }, + }, + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-isob-east-1", + }: endpoint{}, + }, + }, + "api.sagemaker": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-isob-east-1", + }: endpoint{}, + }, + }, "appconfig": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -41083,6 +44998,13 @@ var awsisobPartition = partition{ }: endpoint{}, }, }, + "arc-zonal-shift": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-isob-east-1", + }: endpoint{}, + }, + }, "autoscaling": service{ Defaults: endpointDefaults{ defaultKey{}: endpoint{ @@ -41095,6 +45017,13 @@ var awsisobPartition = partition{ }: endpoint{}, }, }, + "cloudcontrolapi": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-isob-east-1", + }: endpoint{}, + }, + }, "cloudformation": service{ Endpoints: serviceEndpoints{ endpointKey{ @@ -41291,9 +45220,24 @@ var awsisobPartition = partition{ }, "elasticmapreduce": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-isob-east-1", + }: endpoint{ + Hostname: "elasticmapreduce.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-isob-east-1", }: endpoint{}, + endpointKey{ + Region: "us-isob-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "elasticmapreduce.us-isob-east-1.sc2s.sgov.gov", + }, }, }, "es": service{ @@ -41434,9 +45378,24 @@ var awsisobPartition = partition{ }, "ram": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-isob-east-1", + }: endpoint{ + Hostname: "ram-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-isob-east-1", }: endpoint{}, + endpointKey{ + Region: "us-isob-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "ram-fips.us-isob-east-1.sc2s.sgov.gov", + }, }, }, "rbin": service{ @@ -41463,16 +45422,73 @@ var awsisobPartition = partition{ }, "rds": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "rds-fips.us-isob-east-1", + }: endpoint{ + Hostname: "rds-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds.us-isob-east-1", + }: endpoint{ + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, + endpointKey{ + Region: "rds.us-isob-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-isob-east-1", }: endpoint{}, + endpointKey{ + Region: "us-isob-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "rds-fips.us-isob-east-1.sc2s.sgov.gov", + }, + endpointKey{ + Region: "us-isob-east-1-fips", + }: endpoint{ + Hostname: "rds-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, }, }, "redshift": service{ Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-isob-east-1", + }: endpoint{ + Hostname: "redshift-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-isob-east-1", }: endpoint{}, + endpointKey{ + Region: "us-isob-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "redshift-fips.us-isob-east-1.sc2s.sgov.gov", + }, }, }, "resource-groups": service{ @@ -41503,6 +45519,13 @@ var awsisobPartition = partition{ }: endpoint{}, }, }, + "runtime.sagemaker": service{ + Endpoints: serviceEndpoints{ + endpointKey{ + Region: "us-isob-east-1", + }: endpoint{}, + }, + }, "s3": service{ Defaults: endpointDefaults{ defaultKey{}: endpoint{ @@ -41511,9 +45534,30 @@ var awsisobPartition = partition{ }, }, Endpoints: serviceEndpoints{ + endpointKey{ + Region: "fips-us-isob-east-1", + }: endpoint{ + Hostname: "s3-fips.us-isob-east-1.sc2s.sgov.gov", + CredentialScope: credentialScope{ + Region: "us-isob-east-1", + }, + Deprecated: boxedTrue, + }, endpointKey{ Region: "us-isob-east-1", }: endpoint{}, + endpointKey{ + Region: "us-isob-east-1", + Variant: fipsVariant, + }: endpoint{ + Hostname: "s3-fips.us-isob-east-1.sc2s.sgov.gov", + }, + endpointKey{ + Region: "us-isob-east-1", + Variant: fipsVariant | dualStackVariant, + }: endpoint{ + Hostname: "s3-fips.dualstack.us-isob-east-1.sc2s.sgov.gov", + }, }, }, "secretsmanager": service{ diff --git a/vendor/github.com/aws/smithy-go/CHANGELOG.md b/vendor/github.com/aws/smithy-go/CHANGELOG.md index 39ffae999..56b19e3a1 100644 --- a/vendor/github.com/aws/smithy-go/CHANGELOG.md +++ b/vendor/github.com/aws/smithy-go/CHANGELOG.md @@ -1,3 +1,52 @@ +# Release (2024-11-15) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.22.1 + * **Bug Fix**: Fix failure to replace URI path segments when their names overlap. + +# Release (2024-10-03) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.22.0 + * **Feature**: Add HTTP client metrics. + +# Release (2024-09-25) + +## Module Highlights +* `github.com/aws/smithy-go/aws-http-auth`: [v1.0.0](aws-http-auth/CHANGELOG.md#v100-2024-09-25) + * **Release**: Initial release of module aws-http-auth, which implements generically consumable SigV4 and SigV4a request signing. + +# Release (2024-09-19) + +## General Highlights +* **Dependency Update**: Updated to the latest SDK module versions + +## Module Highlights +* `github.com/aws/smithy-go`: v1.21.0 + * **Feature**: Add tracing and metrics APIs, and builtin instrumentation for both, in generated clients. +* `github.com/aws/smithy-go/metrics/smithyotelmetrics`: [v1.0.0](metrics/smithyotelmetrics/CHANGELOG.md#v100-2024-09-19) + * **Release**: Initial release of `smithyotelmetrics` module, which is used to adapt an OpenTelemetry SDK meter provider to be used with Smithy clients. +* `github.com/aws/smithy-go/tracing/smithyoteltracing`: [v1.0.0](tracing/smithyoteltracing/CHANGELOG.md#v100-2024-09-19) + * **Release**: Initial release of `smithyoteltracing` module, which is used to adapt an OpenTelemetry SDK tracer provider to be used with Smithy clients. + +# Release (2024-08-14) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.20.4 + * **Dependency Update**: Bump minimum Go version to 1.21. + +# Release (2024-06-27) + +## Module Highlights +* `github.com/aws/smithy-go`: v1.20.3 + * **Bug Fix**: Fix encoding/cbor test overflow on x86. + # Release (2024-03-29) * No change notes available for this release. diff --git a/vendor/github.com/aws/smithy-go/README.md b/vendor/github.com/aws/smithy-go/README.md index c374f6928..08df74589 100644 --- a/vendor/github.com/aws/smithy-go/README.md +++ b/vendor/github.com/aws/smithy-go/README.md @@ -1,19 +1,21 @@ -## Smithy Go +# Smithy Go [![Go Build Status](https://github.com/aws/smithy-go/actions/workflows/go.yml/badge.svg?branch=main)](https://github.com/aws/smithy-go/actions/workflows/go.yml)[![Codegen Build Status](https://github.com/aws/smithy-go/actions/workflows/codegen.yml/badge.svg?branch=main)](https://github.com/aws/smithy-go/actions/workflows/codegen.yml) -[Smithy](https://smithy.io/) code generators for Go. +[Smithy](https://smithy.io/) code generators for Go and the accompanying smithy-go runtime. + +The smithy-go runtime requires a minimum version of Go 1.20. **WARNING: All interfaces are subject to change.** -## Can I use this? +## Can I use the code generators? In order to generate a usable smithy client you must provide a [protocol definition](https://github.com/aws/smithy-go/blob/main/codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/integration/ProtocolGenerator.java), such as [AWS restJson1](https://smithy.io/2.0/aws/protocols/aws-restjson1-protocol.html), in order to generate transport mechanisms and serialization/deserialization code ("serde") accordingly. -The code generator does not currently support any protocols out of the box, +The code generator does not currently support any protocols out of the box other than the new `smithy.protocols#rpcv2Cbor`, therefore the useability of this project on its own is currently limited. Support for all [AWS protocols](https://smithy.io/2.0/aws/protocols/index.html) exists in [aws-sdk-go-v2](https://github.com/aws/aws-sdk-go-v2). We are @@ -21,6 +23,70 @@ tracking the movement of those out of the SDK into smithy-go in [#458](https://github.com/aws/smithy-go/issues/458), but there's currently no timeline for doing so. +## Plugins + +This repository implements the following Smithy build plugins: + +| ID | GAV prefix | Description | +|----|------------|-------------| +| `go-codegen` | `software.amazon.smithy.go:smithy-go-codegen` | Implements Go client code generation for Smithy models. | +| `go-server-codegen` | `software.amazon.smithy.go:smithy-go-codegen` | Implements Go server code generation for Smithy models. | + +**NOTE: Build plugins are not currently published to mavenCentral. You must publish to mavenLocal to make the build plugins visible to the Smithy CLI. The artifact version is currently fixed at 0.1.0.** + +## `go-codegen` + +### Configuration + +[`GoSettings`](codegen/smithy-go-codegen/src/main/java/software/amazon/smithy/go/codegen/GoSettings.java) +contains all of the settings enabled from `smithy-build.json` and helper +methods and types. The up-to-date list of top-level properties enabled for +`go-client-codegen` can be found in `GoSettings::from()`. + +| Setting | Type | Required | Description | +|-----------------|---------|----------|-----------------------------------------------------------------------------------------------------------------------------| +| `service` | string | yes | The Shape ID of the service for which to generate the client. | +| `module` | string | yes | Name of the module in `generated.json` (and `go.mod` if `generateGoMod` is enabled) and `doc.go`. | +| `generateGoMod` | boolean | | Whether to generate a default `go.mod` file. The default value is `false`. | +| `goDirective` | string | | [Go directive](https://go.dev/ref/mod#go-mod-file-go) of the module. The default value is the minimum supported Go version. | + +### Supported protocols + +| Protocol | Notes | +|----------|-------| +| [`smithy.protocols#rpcv2Cbor`](https://smithy.io/2.0/additional-specs/protocols/smithy-rpc-v2.html) | Event streaming not yet implemented. | + +### Example + +This example applies the `go-codegen` build plugin to the Smithy quickstart +example created from `smithy init`: + +```json +{ + "version": "1.0", + "sources": [ + "models" + ], + "maven": { + "dependencies": [ + "software.amazon.smithy.go:smithy-go-codegen:0.1.0" + ] + }, + "plugins": { + "go-codegen": { + "service": "example.weather#Weather", + "module": "github.com/example/weather", + "generateGoMod": true, + "goDirective": "1.20" + } + } +} +``` + +## `go-server-codegen` + +This plugin is a work-in-progress and is currently undocumented. + ## License This project is licensed under the Apache-2.0 License. diff --git a/vendor/github.com/aws/smithy-go/encoding/httpbinding/path_replace.go b/vendor/github.com/aws/smithy-go/encoding/httpbinding/path_replace.go index e78926c9a..9ae308540 100644 --- a/vendor/github.com/aws/smithy-go/encoding/httpbinding/path_replace.go +++ b/vendor/github.com/aws/smithy-go/encoding/httpbinding/path_replace.go @@ -22,33 +22,33 @@ func bufCap(b []byte, n int) []byte { // replacePathElement replaces a single element in the path []byte. // Escape is used to control whether the value will be escaped using Amazon path escape style. func replacePathElement(path, fieldBuf []byte, key, val string, escape bool) ([]byte, []byte, error) { - fieldBuf = bufCap(fieldBuf, len(key)+3) // { [+] } + // search for "{}". If not found, search for the greedy version "{+}". If none are found, return error + fieldBuf = bufCap(fieldBuf, len(key)+2) // { } fieldBuf = append(fieldBuf, uriTokenStart) fieldBuf = append(fieldBuf, key...) + fieldBuf = append(fieldBuf, uriTokenStop) start := bytes.Index(path, fieldBuf) - end := start + len(fieldBuf) - if start < 0 || len(path[end:]) == 0 { - // TODO what to do about error? - return path, fieldBuf, fmt.Errorf("invalid path index, start=%d,end=%d. %s", start, end, path) - } - encodeSep := true - if path[end] == uriTokenSkip { - // '+' token means do not escape slashes + if start < 0 { + fieldBuf = bufCap(fieldBuf, len(key)+3) // { [+] } + fieldBuf = append(fieldBuf, uriTokenStart) + fieldBuf = append(fieldBuf, key...) + fieldBuf = append(fieldBuf, uriTokenSkip) + fieldBuf = append(fieldBuf, uriTokenStop) + + start = bytes.Index(path, fieldBuf) + if start < 0 { + return path, fieldBuf, fmt.Errorf("invalid path index, start=%d. %s", start, path) + } encodeSep = false - end++ } + end := start + len(fieldBuf) if escape { val = EscapePath(val, encodeSep) } - if path[end] != uriTokenStop { - return path, fieldBuf, fmt.Errorf("invalid path element, does not contain token stop, %s", path) - } - end++ - fieldBuf = bufCap(fieldBuf, len(val)) fieldBuf = append(fieldBuf, val...) diff --git a/vendor/github.com/aws/smithy-go/go_module_metadata.go b/vendor/github.com/aws/smithy-go/go_module_metadata.go index a6b22f353..212eae4fa 100644 --- a/vendor/github.com/aws/smithy-go/go_module_metadata.go +++ b/vendor/github.com/aws/smithy-go/go_module_metadata.go @@ -3,4 +3,4 @@ package smithy // goModuleVersion is the tagged release for this module -const goModuleVersion = "1.20.2" +const goModuleVersion = "1.22.1" diff --git a/vendor/github.com/aws/smithy-go/metrics/metrics.go b/vendor/github.com/aws/smithy-go/metrics/metrics.go new file mode 100644 index 000000000..c009d9f27 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/metrics/metrics.go @@ -0,0 +1,136 @@ +// Package metrics defines the metrics APIs used by Smithy clients. +package metrics + +import ( + "context" + + "github.com/aws/smithy-go" +) + +// MeterProvider is the entry point for creating a Meter. +type MeterProvider interface { + Meter(scope string, opts ...MeterOption) Meter +} + +// MeterOption applies configuration to a Meter. +type MeterOption func(o *MeterOptions) + +// MeterOptions represents configuration for a Meter. +type MeterOptions struct { + Properties smithy.Properties +} + +// Meter is the entry point for creation of measurement instruments. +type Meter interface { + // integer/synchronous + Int64Counter(name string, opts ...InstrumentOption) (Int64Counter, error) + Int64UpDownCounter(name string, opts ...InstrumentOption) (Int64UpDownCounter, error) + Int64Gauge(name string, opts ...InstrumentOption) (Int64Gauge, error) + Int64Histogram(name string, opts ...InstrumentOption) (Int64Histogram, error) + + // integer/asynchronous + Int64AsyncCounter(name string, callback Int64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Int64AsyncUpDownCounter(name string, callback Int64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Int64AsyncGauge(name string, callback Int64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + + // floating-point/synchronous + Float64Counter(name string, opts ...InstrumentOption) (Float64Counter, error) + Float64UpDownCounter(name string, opts ...InstrumentOption) (Float64UpDownCounter, error) + Float64Gauge(name string, opts ...InstrumentOption) (Float64Gauge, error) + Float64Histogram(name string, opts ...InstrumentOption) (Float64Histogram, error) + + // floating-point/asynchronous + Float64AsyncCounter(name string, callback Float64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Float64AsyncUpDownCounter(name string, callback Float64Callback, opts ...InstrumentOption) (AsyncInstrument, error) + Float64AsyncGauge(name string, callback Float64Callback, opts ...InstrumentOption) (AsyncInstrument, error) +} + +// InstrumentOption applies configuration to an instrument. +type InstrumentOption func(o *InstrumentOptions) + +// InstrumentOptions represents configuration for an instrument. +type InstrumentOptions struct { + UnitLabel string + Description string +} + +// Int64Counter measures a monotonically increasing int64 value. +type Int64Counter interface { + Add(context.Context, int64, ...RecordMetricOption) +} + +// Int64UpDownCounter measures a fluctuating int64 value. +type Int64UpDownCounter interface { + Add(context.Context, int64, ...RecordMetricOption) +} + +// Int64Gauge samples a discrete int64 value. +type Int64Gauge interface { + Sample(context.Context, int64, ...RecordMetricOption) +} + +// Int64Histogram records multiple data points for an int64 value. +type Int64Histogram interface { + Record(context.Context, int64, ...RecordMetricOption) +} + +// Float64Counter measures a monotonically increasing float64 value. +type Float64Counter interface { + Add(context.Context, float64, ...RecordMetricOption) +} + +// Float64UpDownCounter measures a fluctuating float64 value. +type Float64UpDownCounter interface { + Add(context.Context, float64, ...RecordMetricOption) +} + +// Float64Gauge samples a discrete float64 value. +type Float64Gauge interface { + Sample(context.Context, float64, ...RecordMetricOption) +} + +// Float64Histogram records multiple data points for an float64 value. +type Float64Histogram interface { + Record(context.Context, float64, ...RecordMetricOption) +} + +// AsyncInstrument is the universal handle returned for creation of all async +// instruments. +// +// Callers use the Stop() API to unregister the callback passed at instrument +// creation. +type AsyncInstrument interface { + Stop() +} + +// Int64Callback describes a function invoked when an async int64 instrument is +// read. +type Int64Callback func(context.Context, Int64Observer) + +// Int64Observer is the interface passed to async int64 instruments. +// +// Callers use the Observe() API of this interface to report metrics to the +// underlying collector. +type Int64Observer interface { + Observe(context.Context, int64, ...RecordMetricOption) +} + +// Float64Callback describes a function invoked when an async float64 +// instrument is read. +type Float64Callback func(context.Context, Float64Observer) + +// Float64Observer is the interface passed to async int64 instruments. +// +// Callers use the Observe() API of this interface to report metrics to the +// underlying collector. +type Float64Observer interface { + Observe(context.Context, float64, ...RecordMetricOption) +} + +// RecordMetricOption applies configuration to a recorded metric. +type RecordMetricOption func(o *RecordMetricOptions) + +// RecordMetricOptions represents configuration for a recorded metric. +type RecordMetricOptions struct { + Properties smithy.Properties +} diff --git a/vendor/github.com/aws/smithy-go/metrics/nop.go b/vendor/github.com/aws/smithy-go/metrics/nop.go new file mode 100644 index 000000000..fb374e1fb --- /dev/null +++ b/vendor/github.com/aws/smithy-go/metrics/nop.go @@ -0,0 +1,67 @@ +package metrics + +import "context" + +// NopMeterProvider is a no-op metrics implementation. +type NopMeterProvider struct{} + +var _ MeterProvider = (*NopMeterProvider)(nil) + +// Meter returns a meter which creates no-op instruments. +func (NopMeterProvider) Meter(string, ...MeterOption) Meter { + return nopMeter{} +} + +type nopMeter struct{} + +var _ Meter = (*nopMeter)(nil) + +func (nopMeter) Int64Counter(string, ...InstrumentOption) (Int64Counter, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64UpDownCounter(string, ...InstrumentOption) (Int64UpDownCounter, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64Gauge(string, ...InstrumentOption) (Int64Gauge, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64Histogram(string, ...InstrumentOption) (Int64Histogram, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64AsyncCounter(string, Int64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64AsyncUpDownCounter(string, Int64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Int64AsyncGauge(string, Int64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[int64]{}, nil +} +func (nopMeter) Float64Counter(string, ...InstrumentOption) (Float64Counter, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64UpDownCounter(string, ...InstrumentOption) (Float64UpDownCounter, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64Gauge(string, ...InstrumentOption) (Float64Gauge, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64Histogram(string, ...InstrumentOption) (Float64Histogram, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64AsyncCounter(string, Float64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64AsyncUpDownCounter(string, Float64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[float64]{}, nil +} +func (nopMeter) Float64AsyncGauge(string, Float64Callback, ...InstrumentOption) (AsyncInstrument, error) { + return nopInstrument[float64]{}, nil +} + +type nopInstrument[N any] struct{} + +func (nopInstrument[N]) Add(context.Context, N, ...RecordMetricOption) {} +func (nopInstrument[N]) Sample(context.Context, N, ...RecordMetricOption) {} +func (nopInstrument[N]) Record(context.Context, N, ...RecordMetricOption) {} +func (nopInstrument[_]) Stop() {} diff --git a/vendor/github.com/aws/smithy-go/middleware/context.go b/vendor/github.com/aws/smithy-go/middleware/context.go new file mode 100644 index 000000000..f51aa4f04 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/middleware/context.go @@ -0,0 +1,41 @@ +package middleware + +import "context" + +type ( + serviceIDKey struct{} + operationNameKey struct{} +) + +// WithServiceID adds a service ID to the context, scoped to middleware stack +// values. +// +// This API is called in the client runtime when bootstrapping an operation and +// should not typically be used directly. +func WithServiceID(parent context.Context, id string) context.Context { + return WithStackValue(parent, serviceIDKey{}, id) +} + +// GetServiceID retrieves the service ID from the context. This is typically +// the service shape's name from its Smithy model. Service clients for specific +// systems (e.g. AWS SDK) may use an alternate designated value. +func GetServiceID(ctx context.Context) string { + id, _ := GetStackValue(ctx, serviceIDKey{}).(string) + return id +} + +// WithOperationName adds the operation name to the context, scoped to +// middleware stack values. +// +// This API is called in the client runtime when bootstrapping an operation and +// should not typically be used directly. +func WithOperationName(parent context.Context, id string) context.Context { + return WithStackValue(parent, operationNameKey{}, id) +} + +// GetOperationName retrieves the operation name from the context. This is +// typically the operation shape's name from its Smithy model. +func GetOperationName(ctx context.Context) string { + name, _ := GetStackValue(ctx, operationNameKey{}).(string) + return name +} diff --git a/vendor/github.com/aws/smithy-go/properties.go b/vendor/github.com/aws/smithy-go/properties.go index c9af66c0e..68df4c4e0 100644 --- a/vendor/github.com/aws/smithy-go/properties.go +++ b/vendor/github.com/aws/smithy-go/properties.go @@ -1,9 +1,11 @@ package smithy +import "maps" + // PropertiesReader provides an interface for reading metadata from the // underlying metadata container. type PropertiesReader interface { - Get(key interface{}) interface{} + Get(key any) any } // Properties provides storing and reading metadata values. Keys may be any @@ -12,14 +14,14 @@ type PropertiesReader interface { // The zero value for a Properties instance is ready for reads/writes without // any additional initialization. type Properties struct { - values map[interface{}]interface{} + values map[any]any } // Get attempts to retrieve the value the key points to. Returns nil if the // key was not found. // // Panics if key type is not comparable. -func (m *Properties) Get(key interface{}) interface{} { +func (m *Properties) Get(key any) any { m.lazyInit() return m.values[key] } @@ -28,7 +30,7 @@ func (m *Properties) Get(key interface{}) interface{} { // that key it will be replaced with the new value. // // Panics if the key type is not comparable. -func (m *Properties) Set(key, value interface{}) { +func (m *Properties) Set(key, value any) { m.lazyInit() m.values[key] = value } @@ -36,7 +38,7 @@ func (m *Properties) Set(key, value interface{}) { // Has returns whether the key exists in the metadata. // // Panics if the key type is not comparable. -func (m *Properties) Has(key interface{}) bool { +func (m *Properties) Has(key any) bool { m.lazyInit() _, ok := m.values[key] return ok @@ -55,8 +57,13 @@ func (m *Properties) SetAll(other *Properties) { } } +// Values returns a shallow clone of the property set's values. +func (m *Properties) Values() map[any]any { + return maps.Clone(m.values) +} + func (m *Properties) lazyInit() { if m.values == nil { - m.values = map[interface{}]interface{}{} + m.values = map[any]any{} } } diff --git a/vendor/github.com/aws/smithy-go/tracing/context.go b/vendor/github.com/aws/smithy-go/tracing/context.go new file mode 100644 index 000000000..a404ed9d3 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/tracing/context.go @@ -0,0 +1,96 @@ +package tracing + +import "context" + +type ( + operationTracerKey struct{} + spanLineageKey struct{} +) + +// GetSpan returns the active trace Span on the context. +// +// The boolean in the return indicates whether a Span was actually in the +// context, but a no-op implementation will be returned if not, so callers +// can generally disregard the boolean unless they wish to explicitly confirm +// presence/absence of a Span. +func GetSpan(ctx context.Context) (Span, bool) { + lineage := getLineage(ctx) + if len(lineage) == 0 { + return nopSpan{}, false + } + + return lineage[len(lineage)-1], true +} + +// WithSpan sets the active trace Span on the context. +func WithSpan(parent context.Context, span Span) context.Context { + lineage := getLineage(parent) + if len(lineage) == 0 { + return context.WithValue(parent, spanLineageKey{}, []Span{span}) + } + + lineage = append(lineage, span) + return context.WithValue(parent, spanLineageKey{}, lineage) +} + +// PopSpan pops the current Span off the context, setting the active Span on +// the returned Context back to its parent and returning the REMOVED one. +// +// PopSpan on a context with no active Span will return a no-op instance. +// +// This is mostly necessary for the runtime to manage base trace spans due to +// the wrapped-function nature of the middleware stack. End-users of Smithy +// clients SHOULD NOT generally be using this API. +func PopSpan(parent context.Context) (context.Context, Span) { + lineage := getLineage(parent) + if len(lineage) == 0 { + return parent, nopSpan{} + } + + span := lineage[len(lineage)-1] + lineage = lineage[:len(lineage)-1] + return context.WithValue(parent, spanLineageKey{}, lineage), span +} + +func getLineage(ctx context.Context) []Span { + v := ctx.Value(spanLineageKey{}) + if v == nil { + return nil + } + + return v.([]Span) +} + +// GetOperationTracer returns the embedded operation-scoped Tracer on a +// Context. +// +// The boolean in the return indicates whether a Tracer was actually in the +// context, but a no-op implementation will be returned if not, so callers +// can generally disregard the boolean unless they wish to explicitly confirm +// presence/absence of a Tracer. +func GetOperationTracer(ctx context.Context) (Tracer, bool) { + v := ctx.Value(operationTracerKey{}) + if v == nil { + return nopTracer{}, false + } + + return v.(Tracer), true +} + +// WithOperationTracer returns a child Context embedding the given Tracer. +// +// The runtime will use this embed a scoped tracer for client operations, +// Smithy/SDK client callers DO NOT need to do this explicitly. +func WithOperationTracer(parent context.Context, tracer Tracer) context.Context { + return context.WithValue(parent, operationTracerKey{}, tracer) +} + +// StartSpan is a convenience API for creating tracing Spans from a Context. +// +// StartSpan uses the operation-scoped Tracer, previously stored using +// [WithOperationTracer], to start the Span. If a Tracer has not been embedded +// the returned Span will be a no-op implementation. +func StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) { + tracer, _ := GetOperationTracer(ctx) + return tracer.StartSpan(ctx, name, opts...) +} diff --git a/vendor/github.com/aws/smithy-go/tracing/nop.go b/vendor/github.com/aws/smithy-go/tracing/nop.go new file mode 100644 index 000000000..573d28b1c --- /dev/null +++ b/vendor/github.com/aws/smithy-go/tracing/nop.go @@ -0,0 +1,32 @@ +package tracing + +import "context" + +// NopTracerProvider is a no-op tracing implementation. +type NopTracerProvider struct{} + +var _ TracerProvider = (*NopTracerProvider)(nil) + +// Tracer returns a tracer which creates no-op spans. +func (NopTracerProvider) Tracer(string, ...TracerOption) Tracer { + return nopTracer{} +} + +type nopTracer struct{} + +var _ Tracer = (*nopTracer)(nil) + +func (nopTracer) StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) { + return ctx, nopSpan{} +} + +type nopSpan struct{} + +var _ Span = (*nopSpan)(nil) + +func (nopSpan) Name() string { return "" } +func (nopSpan) Context() SpanContext { return SpanContext{} } +func (nopSpan) AddEvent(string, ...EventOption) {} +func (nopSpan) SetProperty(any, any) {} +func (nopSpan) SetStatus(SpanStatus) {} +func (nopSpan) End() {} diff --git a/vendor/github.com/aws/smithy-go/tracing/tracing.go b/vendor/github.com/aws/smithy-go/tracing/tracing.go new file mode 100644 index 000000000..089ed3932 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/tracing/tracing.go @@ -0,0 +1,95 @@ +// Package tracing defines tracing APIs to be used by Smithy clients. +package tracing + +import ( + "context" + + "github.com/aws/smithy-go" +) + +// SpanStatus records the "success" state of an observed span. +type SpanStatus int + +// Enumeration of SpanStatus. +const ( + SpanStatusUnset SpanStatus = iota + SpanStatusOK + SpanStatusError +) + +// SpanKind indicates the nature of the work being performed. +type SpanKind int + +// Enumeration of SpanKind. +const ( + SpanKindInternal SpanKind = iota + SpanKindClient + SpanKindServer + SpanKindProducer + SpanKindConsumer +) + +// TracerProvider is the entry point for creating client traces. +type TracerProvider interface { + Tracer(scope string, opts ...TracerOption) Tracer +} + +// TracerOption applies configuration to a tracer. +type TracerOption func(o *TracerOptions) + +// TracerOptions represent configuration for tracers. +type TracerOptions struct { + Properties smithy.Properties +} + +// Tracer is the entry point for creating observed client Spans. +// +// Spans created by tracers propagate by existing on the Context. Consumers of +// the API can use [GetSpan] to pull the active Span from a Context. +// +// Creation of child Spans is implicit through Context persistence. If +// CreateSpan is called with a Context that holds a Span, the result will be a +// child of that Span. +type Tracer interface { + StartSpan(ctx context.Context, name string, opts ...SpanOption) (context.Context, Span) +} + +// SpanOption applies configuration to a span. +type SpanOption func(o *SpanOptions) + +// SpanOptions represent configuration for span events. +type SpanOptions struct { + Kind SpanKind + Properties smithy.Properties +} + +// Span records a conceptually individual unit of work that takes place in a +// Smithy client operation. +type Span interface { + Name() string + Context() SpanContext + AddEvent(name string, opts ...EventOption) + SetStatus(status SpanStatus) + SetProperty(k, v any) + End() +} + +// EventOption applies configuration to a span event. +type EventOption func(o *EventOptions) + +// EventOptions represent configuration for span events. +type EventOptions struct { + Properties smithy.Properties +} + +// SpanContext uniquely identifies a Span. +type SpanContext struct { + TraceID string + SpanID string + IsRemote bool +} + +// IsValid is true when a span has nonzero trace and span IDs. +func (ctx *SpanContext) IsValid() bool { + return len(ctx.TraceID) != 0 && len(ctx.SpanID) != 0 +} diff --git a/vendor/github.com/aws/smithy-go/transport/http/client.go b/vendor/github.com/aws/smithy-go/transport/http/client.go index e691c69bf..0fceae81d 100644 --- a/vendor/github.com/aws/smithy-go/transport/http/client.go +++ b/vendor/github.com/aws/smithy-go/transport/http/client.go @@ -6,7 +6,9 @@ import ( "net/http" smithy "github.com/aws/smithy-go" + "github.com/aws/smithy-go/metrics" "github.com/aws/smithy-go/middleware" + "github.com/aws/smithy-go/tracing" ) // ClientDo provides the interface for custom HTTP client implementations. @@ -27,13 +29,30 @@ func (fn ClientDoFunc) Do(r *http.Request) (*http.Response, error) { // implementation is http.Client. type ClientHandler struct { client ClientDo + + Meter metrics.Meter // For HTTP client metrics. } // NewClientHandler returns an initialized middleware handler for the client. +// +// Deprecated: Use [NewClientHandlerWithOptions]. func NewClientHandler(client ClientDo) ClientHandler { - return ClientHandler{ + return NewClientHandlerWithOptions(client) +} + +// NewClientHandlerWithOptions returns an initialized middleware handler for the client +// with applied options. +func NewClientHandlerWithOptions(client ClientDo, opts ...func(*ClientHandler)) ClientHandler { + h := ClientHandler{ client: client, } + for _, opt := range opts { + opt(&h) + } + if h.Meter == nil { + h.Meter = metrics.NopMeterProvider{}.Meter("") + } + return h } // Handle implements the middleware Handler interface, that will invoke the @@ -42,6 +61,14 @@ func NewClientHandler(client ClientDo) ClientHandler { func (c ClientHandler) Handle(ctx context.Context, input interface{}) ( out interface{}, metadata middleware.Metadata, err error, ) { + ctx, span := tracing.StartSpan(ctx, "DoHTTPRequest") + defer span.End() + + ctx, client, err := withMetrics(ctx, c.client, c.Meter) + if err != nil { + return nil, metadata, fmt.Errorf("instrument with HTTP metrics: %w", err) + } + req, ok := input.(*Request) if !ok { return nil, metadata, fmt.Errorf("expect Smithy http.Request value as input, got unsupported type %T", input) @@ -52,7 +79,17 @@ func (c ClientHandler) Handle(ctx context.Context, input interface{}) ( return nil, metadata, err } - resp, err := c.client.Do(builtRequest) + span.SetProperty("http.method", req.Method) + span.SetProperty("http.request_content_length", -1) // at least indicate unknown + length, ok, err := req.StreamLength() + if err != nil { + return nil, metadata, err + } + if ok { + span.SetProperty("http.request_content_length", length) + } + + resp, err := client.Do(builtRequest) if resp == nil { // Ensure a http response value is always present to prevent unexpected // panics. @@ -79,6 +116,10 @@ func (c ClientHandler) Handle(ctx context.Context, input interface{}) ( _ = builtRequest.Body.Close() } + span.SetProperty("net.protocol.version", fmt.Sprintf("%d.%d", resp.ProtoMajor, resp.ProtoMinor)) + span.SetProperty("http.status_code", resp.StatusCode) + span.SetProperty("http.response_content_length", resp.ContentLength) + return &Response{Response: resp}, metadata, err } diff --git a/vendor/github.com/aws/smithy-go/transport/http/metrics.go b/vendor/github.com/aws/smithy-go/transport/http/metrics.go new file mode 100644 index 000000000..ab1101394 --- /dev/null +++ b/vendor/github.com/aws/smithy-go/transport/http/metrics.go @@ -0,0 +1,184 @@ +package http + +import ( + "context" + "crypto/tls" + "net/http" + "net/http/httptrace" + "time" + + "github.com/aws/smithy-go/metrics" +) + +var now = time.Now + +// withMetrics instruments an HTTP client and context to collect HTTP metrics. +func withMetrics(parent context.Context, client ClientDo, meter metrics.Meter) ( + context.Context, ClientDo, error, +) { + hm, err := newHTTPMetrics(meter) + if err != nil { + return nil, nil, err + } + + ctx := httptrace.WithClientTrace(parent, &httptrace.ClientTrace{ + DNSStart: hm.DNSStart, + ConnectStart: hm.ConnectStart, + TLSHandshakeStart: hm.TLSHandshakeStart, + + GotConn: hm.GotConn(parent), + PutIdleConn: hm.PutIdleConn(parent), + ConnectDone: hm.ConnectDone(parent), + DNSDone: hm.DNSDone(parent), + TLSHandshakeDone: hm.TLSHandshakeDone(parent), + GotFirstResponseByte: hm.GotFirstResponseByte(parent), + }) + return ctx, &timedClientDo{client, hm}, nil +} + +type timedClientDo struct { + ClientDo + hm *httpMetrics +} + +func (c *timedClientDo) Do(r *http.Request) (*http.Response, error) { + c.hm.doStart = now() + resp, err := c.ClientDo.Do(r) + + c.hm.DoRequestDuration.Record(r.Context(), elapsed(c.hm.doStart)) + return resp, err +} + +type httpMetrics struct { + DNSLookupDuration metrics.Float64Histogram // client.http.connections.dns_lookup_duration + ConnectDuration metrics.Float64Histogram // client.http.connections.acquire_duration + TLSHandshakeDuration metrics.Float64Histogram // client.http.connections.tls_handshake_duration + ConnectionUsage metrics.Int64UpDownCounter // client.http.connections.usage + + DoRequestDuration metrics.Float64Histogram // client.http.do_request_duration + TimeToFirstByte metrics.Float64Histogram // client.http.time_to_first_byte + + doStart time.Time + dnsStart time.Time + connectStart time.Time + tlsStart time.Time +} + +func newHTTPMetrics(meter metrics.Meter) (*httpMetrics, error) { + hm := &httpMetrics{} + + var err error + hm.DNSLookupDuration, err = meter.Float64Histogram("client.http.connections.dns_lookup_duration", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = "The time it takes a request to perform DNS lookup." + }) + if err != nil { + return nil, err + } + hm.ConnectDuration, err = meter.Float64Histogram("client.http.connections.acquire_duration", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = "The time it takes a request to acquire a connection." + }) + if err != nil { + return nil, err + } + hm.TLSHandshakeDuration, err = meter.Float64Histogram("client.http.connections.tls_handshake_duration", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = "The time it takes an HTTP request to perform the TLS handshake." + }) + if err != nil { + return nil, err + } + hm.ConnectionUsage, err = meter.Int64UpDownCounter("client.http.connections.usage", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "{connection}" + o.Description = "Current state of connections pool." + }) + if err != nil { + return nil, err + } + hm.DoRequestDuration, err = meter.Float64Histogram("client.http.do_request_duration", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = "Time spent performing an entire HTTP transaction." + }) + if err != nil { + return nil, err + } + hm.TimeToFirstByte, err = meter.Float64Histogram("client.http.time_to_first_byte", func(o *metrics.InstrumentOptions) { + o.UnitLabel = "s" + o.Description = "Time from start of transaction to when the first response byte is available." + }) + if err != nil { + return nil, err + } + + return hm, nil +} + +func (m *httpMetrics) DNSStart(httptrace.DNSStartInfo) { + m.dnsStart = now() +} + +func (m *httpMetrics) ConnectStart(string, string) { + m.connectStart = now() +} + +func (m *httpMetrics) TLSHandshakeStart() { + m.tlsStart = now() +} + +func (m *httpMetrics) GotConn(ctx context.Context) func(httptrace.GotConnInfo) { + return func(httptrace.GotConnInfo) { + m.addConnAcquired(ctx, 1) + } +} + +func (m *httpMetrics) PutIdleConn(ctx context.Context) func(error) { + return func(error) { + m.addConnAcquired(ctx, -1) + } +} + +func (m *httpMetrics) DNSDone(ctx context.Context) func(httptrace.DNSDoneInfo) { + return func(httptrace.DNSDoneInfo) { + m.DNSLookupDuration.Record(ctx, elapsed(m.dnsStart)) + } +} + +func (m *httpMetrics) ConnectDone(ctx context.Context) func(string, string, error) { + return func(string, string, error) { + m.ConnectDuration.Record(ctx, elapsed(m.connectStart)) + } +} + +func (m *httpMetrics) TLSHandshakeDone(ctx context.Context) func(tls.ConnectionState, error) { + return func(tls.ConnectionState, error) { + m.TLSHandshakeDuration.Record(ctx, elapsed(m.tlsStart)) + } +} + +func (m *httpMetrics) GotFirstResponseByte(ctx context.Context) func() { + return func() { + m.TimeToFirstByte.Record(ctx, elapsed(m.doStart)) + } +} + +func (m *httpMetrics) addConnAcquired(ctx context.Context, incr int64) { + m.ConnectionUsage.Add(ctx, incr, func(o *metrics.RecordMetricOptions) { + o.Properties.Set("state", "acquired") + }) +} + +// Not used: it is recommended to track acquired vs idle conn, but we can't +// determine when something is truly idle with the current HTTP client hooks +// available to us. +func (m *httpMetrics) addConnIdle(ctx context.Context, incr int64) { + m.ConnectionUsage.Add(ctx, incr, func(o *metrics.RecordMetricOptions) { + o.Properties.Set("state", "idle") + }) +} + +func elapsed(start time.Time) float64 { + end := now() + elapsed := end.Sub(start) + return float64(elapsed) / 1e9 +} diff --git a/vendor/github.com/cespare/xxhash/v2/README.md b/vendor/github.com/cespare/xxhash/v2/README.md index 8bf0e5b78..33c88305c 100644 --- a/vendor/github.com/cespare/xxhash/v2/README.md +++ b/vendor/github.com/cespare/xxhash/v2/README.md @@ -70,3 +70,5 @@ benchstat <(go test -benchtime 500ms -count 15 -bench 'Sum64$') - [VictoriaMetrics](https://github.com/VictoriaMetrics/VictoriaMetrics) - [FreeCache](https://github.com/coocood/freecache) - [FastCache](https://github.com/VictoriaMetrics/fastcache) +- [Ristretto](https://github.com/dgraph-io/ristretto) +- [Badger](https://github.com/dgraph-io/badger) diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash.go b/vendor/github.com/cespare/xxhash/v2/xxhash.go index a9e0d45c9..78bddf1ce 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash.go +++ b/vendor/github.com/cespare/xxhash/v2/xxhash.go @@ -19,10 +19,13 @@ const ( // Store the primes in an array as well. // // The consts are used when possible in Go code to avoid MOVs but we need a -// contiguous array of the assembly code. +// contiguous array for the assembly code. var primes = [...]uint64{prime1, prime2, prime3, prime4, prime5} // Digest implements hash.Hash64. +// +// Note that a zero-valued Digest is not ready to receive writes. +// Call Reset or create a Digest using New before calling other methods. type Digest struct { v1 uint64 v2 uint64 @@ -33,19 +36,31 @@ type Digest struct { n int // how much of mem is used } -// New creates a new Digest that computes the 64-bit xxHash algorithm. +// New creates a new Digest with a zero seed. func New() *Digest { + return NewWithSeed(0) +} + +// NewWithSeed creates a new Digest with the given seed. +func NewWithSeed(seed uint64) *Digest { var d Digest - d.Reset() + d.ResetWithSeed(seed) return &d } // Reset clears the Digest's state so that it can be reused. +// It uses a seed value of zero. func (d *Digest) Reset() { - d.v1 = primes[0] + prime2 - d.v2 = prime2 - d.v3 = 0 - d.v4 = -primes[0] + d.ResetWithSeed(0) +} + +// ResetWithSeed clears the Digest's state so that it can be reused. +// It uses the given seed to initialize the state. +func (d *Digest) ResetWithSeed(seed uint64) { + d.v1 = seed + prime1 + prime2 + d.v2 = seed + prime2 + d.v3 = seed + d.v4 = seed - prime1 d.total = 0 d.n = 0 } diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go b/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go index 9216e0a40..78f95f256 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_asm.go @@ -6,7 +6,7 @@ package xxhash -// Sum64 computes the 64-bit xxHash digest of b. +// Sum64 computes the 64-bit xxHash digest of b with a zero seed. // //go:noescape func Sum64(b []byte) uint64 diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_other.go b/vendor/github.com/cespare/xxhash/v2/xxhash_other.go index 26df13bba..118e49e81 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_other.go +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_other.go @@ -3,7 +3,7 @@ package xxhash -// Sum64 computes the 64-bit xxHash digest of b. +// Sum64 computes the 64-bit xxHash digest of b with a zero seed. func Sum64(b []byte) uint64 { // A simpler version would be // d := New() diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go index e86f1b5fd..05f5e7dfe 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_safe.go @@ -5,7 +5,7 @@ package xxhash -// Sum64String computes the 64-bit xxHash digest of s. +// Sum64String computes the 64-bit xxHash digest of s with a zero seed. func Sum64String(s string) uint64 { return Sum64([]byte(s)) } diff --git a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go index 1c1638fd8..cf9d42aed 100644 --- a/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go +++ b/vendor/github.com/cespare/xxhash/v2/xxhash_unsafe.go @@ -33,7 +33,7 @@ import ( // // See https://github.com/golang/go/issues/42739 for discussion. -// Sum64String computes the 64-bit xxHash digest of s. +// Sum64String computes the 64-bit xxHash digest of s with a zero seed. // It may be faster than Sum64([]byte(s)) by avoiding a copy. func Sum64String(s string) uint64 { b := *(*[]byte)(unsafe.Pointer(&sliceHeader{s, len(s)})) diff --git a/vendor/github.com/golang/glog/glog_file.go b/vendor/github.com/golang/glog/glog_file.go index a1551dbc8..8eb8b08c6 100644 --- a/vendor/github.com/golang/glog/glog_file.go +++ b/vendor/github.com/golang/glog/glog_file.go @@ -26,7 +26,6 @@ import ( "fmt" "io" "os" - "os/user" "path/filepath" "runtime" "strings" @@ -68,9 +67,8 @@ func init() { host = shortHostname(h) } - current, err := user.Current() - if err == nil { - userName = current.Username + if u := lookupUser(); u != "" { + userName = u } // Sanitize userName since it is used to construct file paths. userName = strings.Map(func(r rune) rune { diff --git a/vendor/github.com/golang/glog/glog_file_nonwindows.go b/vendor/github.com/golang/glog/glog_file_nonwindows.go new file mode 100644 index 000000000..d5cdb793c --- /dev/null +++ b/vendor/github.com/golang/glog/glog_file_nonwindows.go @@ -0,0 +1,12 @@ +//go:build !windows + +package glog + +import "os/user" + +func lookupUser() string { + if current, err := user.Current(); err == nil { + return current.Username + } + return "" +} diff --git a/vendor/github.com/golang/glog/glog_file_windows.go b/vendor/github.com/golang/glog/glog_file_windows.go new file mode 100644 index 000000000..a9e4f609d --- /dev/null +++ b/vendor/github.com/golang/glog/glog_file_windows.go @@ -0,0 +1,30 @@ +//go:build windows + +package glog + +import ( + "syscall" +) + +// This follows the logic in the standard library's user.Current() function, except +// that it leaves out the potentially expensive calls required to look up the user's +// display name in Active Directory. +func lookupUser() string { + token, err := syscall.OpenCurrentProcessToken() + if err != nil { + return "" + } + defer token.Close() + tokenUser, err := token.GetTokenUser() + if err != nil { + return "" + } + username, _, accountType, err := tokenUser.User.Sid.LookupAccount("") + if err != nil { + return "" + } + if accountType != syscall.SidTypeUser { + return "" + } + return username +} diff --git a/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md b/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md index 2eebedbc7..b2ff2631d 100644 --- a/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md +++ b/vendor/github.com/hashicorp/hcl/v2/CHANGELOG.md @@ -1,5 +1,22 @@ # HCL Changelog +## v2.22.0 (August 26, 2024) + +### Enhancements + +* feat: return an ExprSyntaxError for invalid references that end in a dot ([#692](https://github.com/hashicorp/hcl/pull/692)) + +## v2.21.0 (June 19, 2024) + +### Enhancements + +* Introduce `ParseTraversalPartial`, which allows traversals that include the splat (`[*]`) index operator. ([#673](https://github.com/hashicorp/hcl/pull/673)) +* ext/dynblock: Now accepts marked values in `for_each`, and will transfer those marks (as much as technically possible) to values in the generated blocks. ([#679](https://github.com/hashicorp/hcl/pull/679)) + +### Bugs Fixed + +* Expression evaluation will no longer panic if the splat operator is applied to an unknown value that has cty marks. ([#678](https://github.com/hashicorp/hcl/pull/678)) + ## v2.20.1 (March 26, 2024) ### Bugs Fixed diff --git a/vendor/github.com/pulumi/esc/.version b/vendor/github.com/pulumi/esc/.version index f374f6662..78bc1abd1 100644 --- a/vendor/github.com/pulumi/esc/.version +++ b/vendor/github.com/pulumi/esc/.version @@ -1 +1 @@ -0.9.1 +0.10.0 diff --git a/vendor/github.com/pulumi/esc/CHANGELOG.md b/vendor/github.com/pulumi/esc/CHANGELOG.md index 6ed5dc406..c1e57e9e6 100644 --- a/vendor/github.com/pulumi/esc/CHANGELOG.md +++ b/vendor/github.com/pulumi/esc/CHANGELOG.md @@ -1,6 +1,42 @@ CHANGELOG ========= +## 0.10.0 + +### Improvements + +- Add commands to manage environment tags. + [#345](https://github.com/pulumi/esc/pull/345) + +- Coerce non-string scalars passed to `esc env set --secret` to strings + [#353](https://github.com/pulumi/esc/pull/353) + +- `esc env get --show-secrets` now shows secrets from imported environments. + [#355](https://github.com/pulumi/esc/pull/355) + +- Add support for projects. + [#369](https://github.com/pulumi/esc/pull/369) + +- Add deprecation warning for legacy environment name format (/ or ) in favor of / or //. + [#375](https://github.com/pulumi/esc/pull/375) + +- Add clone environment command. + [#376](https://github.com/pulumi/esc/pull/376) + +- Add project filter flag to env ls command. + [#382](https://github.com/pulumi/esc/pull/382) + + +### Bug Fixes + +- Fix a panic in fetching current credentials when the access key had expired. + [#368](https://github.com/pulumi/esc/pull/368) + +### Breaking Changes + +- The minimum Go version supported is now 1.21. + [#379](https://github.com/pulumi/esc/pull/379) + ## 0.9.1 ### Improvements diff --git a/vendor/github.com/pulumi/esc/CHANGELOG_PENDING.md b/vendor/github.com/pulumi/esc/CHANGELOG_PENDING.md index 05e6ced76..5c2a5aa0b 100644 --- a/vendor/github.com/pulumi/esc/CHANGELOG_PENDING.md +++ b/vendor/github.com/pulumi/esc/CHANGELOG_PENDING.md @@ -2,3 +2,4 @@ ### Bug Fixes +### Breaking changes diff --git a/vendor/github.com/pulumi/esc/README.md b/vendor/github.com/pulumi/esc/README.md index baa964bd2..0cb7b93f8 100644 --- a/vendor/github.com/pulumi/esc/README.md +++ b/vendor/github.com/pulumi/esc/README.md @@ -1,38 +1,64 @@ +

+ + + + + [![License](https://img.shields.io/github/license/pulumi/pulumi)](LICENSE) + [![Slack](http://www.pulumi.com/images/docs/badges/slack.svg)](https://slack.pulumi.com?utm_campaign=pulumi-esc-github-repo&utm_source=github.com&utm_medium=slack-badge) + [![X (formerly Twitter) Follow](https://img.shields.io/twitter/follow/PulumiCorp)](https://x.com/PulumiCorp) +

+ # Pulumi ESC (Environments, Secrets, and Configuration) -Pulumi ESC is a new product from Pulumi that manages and tames secrets and configuration complexity across all of your cloud infrastructure and application environments. Pulumi ESC introduces a new category of configuration-as-code product, motivated by our experience working with hundreds of Pulumi IaC customers to address their needs in managing secrets and configuration at scale within their Pulumi infrastructure and across other cloud applications and infrastructure projects. +**[Pulumi ESC](https://www.pulumi.com/product/esc/)** is an open source secrets management platform that tames secrets and configuration complexity across all of your cloud infrastructure and application environments. + +With Pulumi ESC, teams can aggregate secrets and configurations from many sources, manage hierarchical collections of configurations and secrets as environments, and consume them through a variety of means including CLI, SDK, REST API, Pulumi Cloud Web Console and Pulumi-service provider. -Pulumi ESC enables teams to aggregate secrets and configuration from many sources, manage hierarchical collections of configuration and secrets ("environments"), and consume those configuration and secrets from a variety of different infrastructure and application services. Pulumi ESC works hand-in-hand with Pulumi IaC to simplify configuration management, but also works independently from Pulumi IaC, as a solution for managing environments, secrets and configuration for any application or infrastructure project. +Pulumi ESC not only works great for your applications and IaC, including Pulumi IaC, but it also makes your day-to-day developer workflow much more secure and streamlined. For example, the Pulumi ESC CLI (esc) allows you to give your developers immediate, just-in-time authenticated, and short-lived access to cloud credentials across any cloud provider with just a single command: `esc run aws-staging -- aws s3 ls`. -For example, the Pulumi ESC CLI (`esc`) makes it possible to give your developers immediate, just-in-time authenticated and short-lived access to cloud credentials across any cloud provider with just a single command: `esc run aws-staging -- aws s3 ls`. +In this example, an ESC environment named aws-staging has all the necessary staging environment configuration and OIDC setup to connect to AWS. Running this command opens up a temporary environment and executes the aws s3 ls command in that environment. The temporary AWS credentials are not stored anywhere, making them secure and also allowing you to switch between different environments dynamically. -![Pulumi ESC Overview GIF](./assets/esc.gif) +![Pulumi's open source secrets management solution overview](./assets/esc.gif) -Pulumi ESC is offered as a managed service as part of Pulumi Cloud, and this repo contains the implementation of the following key components of the ESC offering: +Pulumi ESC is also offered as a managed service as part of [Pulumi Cloud,](https://www.pulumi.com/product/pulumi-cloud/?utm_campaign=pulumi-esc-github-repo&utm_source=github.com) and this repo contains the implementation of the following key components of the ESC open source secrets and configuration management solution: 1. The `esc` CLI: A CLI tool for managing and consuming environments, secrets and configuration using Pulumi ESC. 2. The Pulumi ESC evaluator: The core specification and implementation of the document format for defining environments, and the syntax and semantics for evaluating environments to produce a set of configuration and secrets. -## Resources +
+ + Click here to get started with Pulumi's open source secrets manager ESC + +
-* [Getting Started](https://pulumi.com/docs/pulumi-cloud/esc/get-started) -* [Download and Install](https://pulumi.com/docs/install/esc/) -* [Documentation](https://pulumi.com/docs/pulumi-cloud/esc) -* [Community Slack](https://slack.pulumi.com/) +## Table of contents +- :rocket: [Getting Started](#getting-started-with-pulumi-esc) +- :blue_book: [Documentation](https://pulumi.com/docs/pulumi-cloud/esc) +- :hammer_and_wrench: [How Pulumi ESC Works](#how-pulumi-esc-works) +- :white_check_mark: [Pulumi ESC Features](#pulumi-esc-features) +- :compass: [Pulumi ESC Roadmap](#resources) +- :busts_in_silhouette: [Community](#resources) +- :computer: [Resources](#resources) -## How Pulumi ESC works +## Getting Started with Pulumi ESC -![Pulumi ESC Graphic V4](./assets/overview.png) +For a hands-on, self-paced tutorial see our Pulumi ESC [Getting Started](https://pulumi.com/docs/pulumi-cloud/esc/get-started?utm_campaign=pulumi-esc-github-repo&utm_source=github.com&utm_medium=getting-started-install) to quickly get up and running. -1. Pulumi ESC enables you to define environments, which are collections of secrets and configuration. Each environment can be composed from multiple environments. -2. Pulumi ESC supports a variety of configuration and secrets sources, and it has an extensible plugin model that allows third-party sources. -3. Pulumi ESC has a rich API that allows for easy integration. Every value in an environment can be accessed from any execution environment. -4. Every environment can be locked down with RBAC, versioned, and audited. +### Download and Install Pulumi ESC + +1. **Install**: + + To install the latest Pulumi ESC release, run the following (see full + [installation instructions](https://www.pulumi.com/docs/install/esc/?utm_campaign=pulumi-esc-github-repo&utm_source=github.com&utm_medium=getting-started-install) for additional installation options): -## Building the CLI Locally + ```bash + $ curl -fsSL https://get.pulumi.com/ | sh + ``` -You can build the CLI locally for testing by running: +### Building the ESC CLI Locally + +You can build the CLI locally for testing by cloning this repo and running: ```shell $ make install @@ -40,7 +66,16 @@ $ make install This will produce an `esc` binary in your `GOBIN` directory. -## Why Pulumi ESC? +## How Pulumi ESC Works + +![Pulumi ESC: Open source secrets management overview](./assets/overview.png) + +1. Pulumi ESC enables you to define environments, which are collections of secrets and configuration. Each environment can be composed from multiple environments. +2. Pulumi ESC supports a variety of configuration and secrets sources, and it has an extensible plugin model that allows third-party sources. +3. Pulumi ESC has a rich API that allows for easy integration. Every value in an environment can be accessed from any execution environment. +4. Every environment can be locked down with RBAC, versioned, and audited. + +### Why Pulumi ESC? Pulumi ESC was designed to address a set of challenges that many infrastructure and application development teams face in managing configuration and secrets across their various environments: @@ -48,14 +83,39 @@ Pulumi ESC was designed to address a set of challenges that many infrastructure * __Duplication and Copy/Paste__: Secrets are duplicated in many places. Frequently coupled to application/system-specific configuration stores. * __Too Many Long-lived Static Secrets__: Long lived static credentials are over-used, exposing companies to significant security risk. Rotation is operationally challenging. Not all systems support direct integration with OIDC and other dynamic secrets provisioning systems. -Pulumi ESC was born to address these problems and needs head on. It does so through a few core design principles: - -* __Hierarchical and Composable__: Environments contain collections of secrets and configuration, but can also import one or more other environments. Values can be overridden, interpolated from other values, and arbitrarily nested. This allows for flexible composition and reuse, and avoids copy paste. -* __Any Secrets Provider__: Support for dynamic configuration providers allow Pulumi ESC to integrate with secrets stored in any other provider. Organizations often use AWS Secrets Manager, Vault, Azure OIDC and/or 1Password plus many more sources of truth for their secrets and configuration. Pulumi ESC supports them all, providing a single interface to your configuration and secrets, no matter where their source of truth is. Pulumi ESC works with these tools to provide improved management of secrets and configuration. -* __Consume from Anywhere__: The `esc` CLI and the Pulumi ESC Rest API enables environments to be accessed from any application, infrastructure provider, automation system. At launch, first-class integrations are available with Pulumi IaC, local environment and .env files, GitHub Actions, and more. -* __Auditable__: Environments must be “opened” to compute and see the set of value they provide, and this action is recorded in audit logs, including a full record of how each value was sourced from within the hierarchy of environments that contributed to it. -* __Authentication and RBAC__: Pulumi ESC brokers access to secrets and configuration that live in other systems, and so authentication and granular RBAC are critical to ensure robust access controls across your organization. Pulumi ESC leverages the same Pulumi Cloud identity, RBAC, Teams, SAML/SCIM and scoped access tokens that are used for Pulumi IaC today, extending these all to managing access to Environments as well as Stacks. -* __Configuration as Code__: Environments are defined as YAML documents which can describe how to project and compose secrets and configuration, integrate dynamic configuration providers, and compute new configuration from other values (construing a URL from a DNS name, or concatenating multiple configuration values into a derived value). The incredible flexibility of a code-based approach over traditional point-and-click interfaces allows Pulumi ESC to offer rich expressiveness for managing complex configuration. +Pulumi ESC was born to address these problems and needs head on with the following features. + +### Pulumi ESC Features + +* __Hierarchical Environments__: Environments contain collections of secrets and configuration, but can also import one or more other environments. Values can be overridden, interpolated from other values, and arbitrarily nested. This allows for flexible composition and reuse, and avoids copy paste. +* __Dynamic + Static Secrets__: Supports static values and dynamic values pulled from systems; static values can be encrypted, and dynamic secrets plugins include AWS OIDC, HashiCorp Vault, AWS Secrets Manager, 1Password, and Pulumi StackReference. +* __Auditable__: Every environment opening is recorded in audit logs, providing a concrete set of configuration derived from imported environments and dynamic secrets. +* __Consume from Anywhere__: The `esc` CLI and the Pulumi ESC Rest API enable environments to be accessed from any application, infrastructure provider, or automation system. At launch, first-class integrations are available with Pulumi IaC, local environment and .env files, GitHub Actions, and more. +* __Authentication and RBAC__: Pulumi ESC brokers access to secrets and configuration that live in other systems, and so authentication and granular RBAC are critical to ensure robust access controls across your organization. Pulumi ESC leverages the same Pulumi Cloud identity, RBAC, Teams, SAML/SCIM and scoped access tokens that are used for Pulumi IaC today, extending these all to managing access to Environments as well as Stacks. +* __Configuration as Code__: Environments are defined as YAML documents which describe how to project and compose secrets and configuration, integrate dynamic configuration providers, and compute new configuration from other values (construing a URL from a DNS name, or concatenating multiple configuration values into a derived value). The incredible flexibility of a code-based approach over traditional point-and-click interfaces allows Pulumi ESC to offer rich expressiveness for managing complex configuration. +* __Open Source + Managed__: Offers an open-source server with pluggable storage and authentication, as well as a managed service in Pulumi Cloud and Pulumi Cloud Self-hosted options. +* __Version Control and Rollback__: Manage environment changes with full auditability and rollback capabilities. +* __Language SDKs__: Use ESC in Python, TypeScript/JavaScript, and Go applications. +* __Traceability and Auditing__: Environments must be “opened” to compute and see the set of values they provide, and this action is recorded in audit logs, including a full record of how each value was sourced from within the hierarchy of environments that contributed to it. +* __Composable Environments__: Combine multiple environments for greater flexibility. +* __Dynamic Configuration Providers__: Support for dynamic configuration providers for more flexible management. * __Fully Managed__: Pulumi ESC is offered as a fully managed cloud service in Pulumi Cloud (and Pulumi Cloud Self-hosted in the near future). The pulumi/esc project is open source, and contains the evaluation engine for environments, the esc CLI, and in the future, the extensible plugins for source and target integrations. +## Pulumi ESC Roadmap + +Review the planned work for the upcoming quarter and a selected backlog of issues that are on our mind but not yet scheduled on the [Pulumi Roadmap.](https://github.com/orgs/pulumi/projects/44) + +## Community + +- Join us in the [Pulumi Community Slack](https://slack.pulumi.com/?utm_campaign=pulumi-esc-github-repo&utm_source=github.com&utm_medium=welcome-slack) to connect with our community and engineering team and ask questions. All conversations and questions are welcome. +- Send us a tweet via [@PulumiCorp](https://twitter.com/PulumiCorp) +- Watch videos and workshops on [Pulumi TV](https://www.youtube.com/pulumitv) + +## Resources +- [Docs](https://pulumi.com/docs/pulumi-cloud/esc?utm_campaign=pulumi-esc-github-repo&utm_source=github.com&utm_medium=esc-resources) +- [Slack](https://slack.pulumi.com/?utm_campaign=pulumi-esc-github-repo&utm_source=github.com&utm_medium=welcome-slack) +- [Twitter](https://twitter.com/PulumiCorp) +- [YouTube](https://www.youtube.com/pulumitv) +- [Blog](https://pulumi.com/blog?utm_campaign=pulumi-esc-github-repo&utm_source=github.com&utm_medium=esc-resources) +- [Roadmap](https://github.com/orgs/pulumi/projects/44) diff --git a/vendor/github.com/pulumi/esc/ast/environment.go b/vendor/github.com/pulumi/esc/ast/environment.go index 0d17b2d1a..1e504461c 100644 --- a/vendor/github.com/pulumi/esc/ast/environment.go +++ b/vendor/github.com/pulumi/esc/ast/environment.go @@ -1,4 +1,4 @@ -// Copyright 2023, Pulumi Corporation. +// Copyright 2024, Pulumi Corporation. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -293,6 +293,7 @@ func parseField(name string, dest reflect.Value, node syntax.Node) syntax.Diagno xv := reflect.ValueOf(x) if !xv.Type().AssignableTo(dest.Type()) { diags.Extend(exprFieldTypeMismatchError(name, dest.Interface(), x)) + v = reflect.New(dest.Type().Elem()) } else { v = xv } diff --git a/vendor/github.com/pulumi/esc/environment.go b/vendor/github.com/pulumi/esc/environment.go index 0c24bc812..551314abf 100644 --- a/vendor/github.com/pulumi/esc/environment.go +++ b/vendor/github.com/pulumi/esc/environment.go @@ -22,6 +22,7 @@ import ( "github.com/pulumi/esc/schema" ) +const AnonymousProjectName = "" const AnonymousEnvironmentName = "" type EnvExecContext interface { diff --git a/vendor/github.com/pulumi/esc/eval/eval.go b/vendor/github.com/pulumi/esc/eval/eval.go index 2692ff875..8c89d32c9 100644 --- a/vendor/github.com/pulumi/esc/eval/eval.go +++ b/vendor/github.com/pulumi/esc/eval/eval.go @@ -79,7 +79,7 @@ func EvalEnvironment( environments EnvironmentLoader, execContext *esc.ExecContext, ) (*esc.Environment, syntax.Diagnostics) { - return evalEnvironment(ctx, false, name, env, decrypter, providers, environments, execContext) + return evalEnvironment(ctx, false, name, env, decrypter, providers, environments, execContext, true) } // CheckEnvironment symbolically evaluates the given environment. Calls to fn::open are not invoked, and instead @@ -88,11 +88,13 @@ func CheckEnvironment( ctx context.Context, name string, env *ast.EnvironmentDecl, + decrypter Decrypter, providers ProviderLoader, environments EnvironmentLoader, execContext *esc.ExecContext, + showSecrets bool, ) (*esc.Environment, syntax.Diagnostics) { - return evalEnvironment(ctx, true, name, env, nil, providers, environments, execContext) + return evalEnvironment(ctx, true, name, env, decrypter, providers, environments, execContext, showSecrets) } // evalEnvironment evaluates an environment and exports the result of evaluation. @@ -105,12 +107,13 @@ func evalEnvironment( providers ProviderLoader, envs EnvironmentLoader, execContext *esc.ExecContext, + showSecrets bool, ) (*esc.Environment, syntax.Diagnostics) { if env == nil || (len(env.Values.GetEntries()) == 0 && len(env.Imports.GetElements()) == 0) { return nil, nil } - ec := newEvalContext(ctx, validating, name, env, decrypter, providers, envs, map[string]*imported{}, execContext) + ec := newEvalContext(ctx, validating, name, env, decrypter, providers, envs, map[string]*imported{}, execContext, showSecrets) v, diags := ec.evaluate() s := schema.Never().Schema() @@ -144,6 +147,7 @@ type imported struct { type evalContext struct { ctx context.Context // the cancellation context for evaluation validating bool // true if we are only checking the environment + showSecrets bool // true if secrets should be decrypted during validation name string // the name of the environment env *ast.EnvironmentDecl // the root of the environment AST decrypter Decrypter // the decrypter to use for the environment @@ -170,10 +174,12 @@ func newEvalContext( environments EnvironmentLoader, imports map[string]*imported, execContext *esc.ExecContext, + showSecrets bool, ) *evalContext { return &evalContext{ ctx: ctx, validating: validating, + showSecrets: showSecrets, name: name, env: env, decrypter: decrypter, @@ -184,6 +190,11 @@ func newEvalContext( } } +// decryptSecrets returns true if static secrets should be decrypted. +func (e *evalContext) decryptSecrets() bool { + return !e.validating || e.showSecrets +} + // error records an evaluation error associated with an expression. func (e *evalContext) error(expr ast.Expr, summary string) { diag := ast.ExprError(expr, summary) @@ -447,7 +458,7 @@ func (e *evalContext) evaluateImport(myImports map[string]*value, decl *ast.Impo return } - imp := newEvalContext(e.ctx, e.validating, name, env, dec, e.providers, e.environments, e.imports, e.execContext) + imp := newEvalContext(e.ctx, e.validating, name, env, dec, e.providers, e.environments, e.imports, e.execContext, e.showSecrets) v, diags := imp.evaluate() e.diags.Extend(diags...) @@ -854,7 +865,7 @@ func (e *evalContext) evaluateBuiltinSecret(x *expr, repr *secretExpr) *value { v.unknown = true return v } - if e.validating { + if !e.decryptSecrets() { v.unknown = true return v } diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/LICENSE b/vendor/github.com/pulumi/pulumi-aws-native/sdk/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/cidr.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/cidr.go new file mode 100644 index 000000000..9728bdb8b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/cidr.go @@ -0,0 +1,73 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func Cidr(ctx *pulumi.Context, args *CidrArgs, opts ...pulumi.InvokeOption) (*CidrResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv CidrResult + err := ctx.Invoke("aws-native:index:cidr", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type CidrArgs struct { + CidrBits int `pulumi:"cidrBits"` + Count int `pulumi:"count"` + IpBlock string `pulumi:"ipBlock"` +} + +type CidrResult struct { + Subnets []string `pulumi:"subnets"` +} + +func CidrOutput(ctx *pulumi.Context, args CidrOutputArgs, opts ...pulumi.InvokeOption) CidrResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (CidrResultOutput, error) { + args := v.(CidrArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:cidr", args, CidrResultOutput{}, options).(CidrResultOutput), nil + }).(CidrResultOutput) +} + +type CidrOutputArgs struct { + CidrBits pulumi.IntInput `pulumi:"cidrBits"` + Count pulumi.IntInput `pulumi:"count"` + IpBlock pulumi.StringInput `pulumi:"ipBlock"` +} + +func (CidrOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*CidrArgs)(nil)).Elem() +} + +type CidrResultOutput struct{ *pulumi.OutputState } + +func (CidrResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CidrResult)(nil)).Elem() +} + +func (o CidrResultOutput) ToCidrResultOutput() CidrResultOutput { + return o +} + +func (o CidrResultOutput) ToCidrResultOutputWithContext(ctx context.Context) CidrResultOutput { + return o +} + +func (o CidrResultOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v CidrResult) []string { return v.Subnets }).(pulumi.StringArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(CidrResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/doc.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/doc.go new file mode 100644 index 000000000..275f7ee1c --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/doc.go @@ -0,0 +1,2 @@ +// A native Pulumi package for creating and managing Amazon Web Services (AWS) resources. +package aws diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/extensionResource.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/extensionResource.go new file mode 100644 index 000000000..fa15e8826 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/extensionResource.go @@ -0,0 +1,154 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// A special resource that enables deploying CloudFormation Extensions (third-party resources). An extension has to be pre-registered in your AWS account in order to use this resource. +type ExtensionResource struct { + pulumi.CustomResourceState + + // Dictionary of the extension resource attributes. + Outputs pulumi.MapOutput `pulumi:"outputs"` +} + +// NewExtensionResource registers a new resource with the given unique name, arguments, and options. +func NewExtensionResource(ctx *pulumi.Context, + name string, args *ExtensionResourceArgs, opts ...pulumi.ResourceOption) (*ExtensionResource, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Properties == nil { + return nil, errors.New("invalid value for required argument 'Properties'") + } + if args.Type == nil { + return nil, errors.New("invalid value for required argument 'Type'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource ExtensionResource + err := ctx.RegisterResource("aws-native:index:ExtensionResource", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetExtensionResource gets an existing ExtensionResource 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 GetExtensionResource(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ExtensionResourceState, opts ...pulumi.ResourceOption) (*ExtensionResource, error) { + var resource ExtensionResource + err := ctx.ReadResource("aws-native:index:ExtensionResource", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ExtensionResource resources. +type extensionResourceState struct { +} + +type ExtensionResourceState struct { +} + +func (ExtensionResourceState) ElementType() reflect.Type { + return reflect.TypeOf((*extensionResourceState)(nil)).Elem() +} + +type extensionResourceArgs struct { + // Optional auto-naming specification for the resource. + // If provided and the name is not specified manually, the provider will automatically generate a name based on the Pulumi resource name and a random suffix. + AutoNaming *AutoNaming `pulumi:"autoNaming"` + // Property names as defined by `createOnlyProperties` in the CloudFormation schema. Create-only properties can't be set during updates, so will not be included in patches even if they are also marked as write-only, and will cause an error if attempted to be updated. Therefore any property here should also be included in the `replaceOnChanges` resource option too. + // In the CloudFormation schema these are fully qualified property paths (e.g. `/properties/AccessToken`) whereas here we only include the top-level property name (e.g. `AccessToken`). + CreateOnly []string `pulumi:"createOnly"` + // Property bag containing the properties for the resource. These should be defined using the casing expected by the CloudControl API as these values are sent exact as provided. + Properties map[string]interface{} `pulumi:"properties"` + // Optional name of the property containing the tags. Defaults to "Tags" if the `tagsStyle` is set to either "stringMap" or "keyValueArray". This is used to apply default tags to the resource and can be ignored if not using default tags. + TagsProperty *string `pulumi:"tagsProperty"` + // Optional style of tags this resource uses. Valid values are "stringMap", "keyValueArray" or "none". Defaults to `keyValueArray` if `tagsProperty` is set. This is used to apply default tags to the resource and can be ignored if not using default tags. + TagsStyle *string `pulumi:"tagsStyle"` + // CloudFormation type name. This has three parts, each separated by two colons. For AWS resources this starts with `AWS::` e.g. `AWS::Logs::LogGroup`. Third party resources should use a namespace prefix e.g. `MyCompany::MyService::MyResource`. + Type string `pulumi:"type"` + // Property names as defined by `writeOnlyProperties` in the CloudFormation schema. Write-only properties are not returned during read operations and have to be included in all update operations as CloudControl itself can't read their previous values. + // In the CloudFormation schema these are fully qualified property paths (e.g. `/properties/AccessToken`) whereas here we only include the top-level property name (e.g. `AccessToken`). + WriteOnly []string `pulumi:"writeOnly"` +} + +// The set of arguments for constructing a ExtensionResource resource. +type ExtensionResourceArgs struct { + // Optional auto-naming specification for the resource. + // If provided and the name is not specified manually, the provider will automatically generate a name based on the Pulumi resource name and a random suffix. + AutoNaming AutoNamingPtrInput + // Property names as defined by `createOnlyProperties` in the CloudFormation schema. Create-only properties can't be set during updates, so will not be included in patches even if they are also marked as write-only, and will cause an error if attempted to be updated. Therefore any property here should also be included in the `replaceOnChanges` resource option too. + // In the CloudFormation schema these are fully qualified property paths (e.g. `/properties/AccessToken`) whereas here we only include the top-level property name (e.g. `AccessToken`). + CreateOnly pulumi.StringArrayInput + // Property bag containing the properties for the resource. These should be defined using the casing expected by the CloudControl API as these values are sent exact as provided. + Properties pulumi.MapInput + // Optional name of the property containing the tags. Defaults to "Tags" if the `tagsStyle` is set to either "stringMap" or "keyValueArray". This is used to apply default tags to the resource and can be ignored if not using default tags. + TagsProperty pulumi.StringPtrInput + // Optional style of tags this resource uses. Valid values are "stringMap", "keyValueArray" or "none". Defaults to `keyValueArray` if `tagsProperty` is set. This is used to apply default tags to the resource and can be ignored if not using default tags. + TagsStyle pulumi.StringPtrInput + // CloudFormation type name. This has three parts, each separated by two colons. For AWS resources this starts with `AWS::` e.g. `AWS::Logs::LogGroup`. Third party resources should use a namespace prefix e.g. `MyCompany::MyService::MyResource`. + Type pulumi.StringInput + // Property names as defined by `writeOnlyProperties` in the CloudFormation schema. Write-only properties are not returned during read operations and have to be included in all update operations as CloudControl itself can't read their previous values. + // In the CloudFormation schema these are fully qualified property paths (e.g. `/properties/AccessToken`) whereas here we only include the top-level property name (e.g. `AccessToken`). + WriteOnly pulumi.StringArrayInput +} + +func (ExtensionResourceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*extensionResourceArgs)(nil)).Elem() +} + +type ExtensionResourceInput interface { + pulumi.Input + + ToExtensionResourceOutput() ExtensionResourceOutput + ToExtensionResourceOutputWithContext(ctx context.Context) ExtensionResourceOutput +} + +func (*ExtensionResource) ElementType() reflect.Type { + return reflect.TypeOf((**ExtensionResource)(nil)).Elem() +} + +func (i *ExtensionResource) ToExtensionResourceOutput() ExtensionResourceOutput { + return i.ToExtensionResourceOutputWithContext(context.Background()) +} + +func (i *ExtensionResource) ToExtensionResourceOutputWithContext(ctx context.Context) ExtensionResourceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ExtensionResourceOutput) +} + +type ExtensionResourceOutput struct{ *pulumi.OutputState } + +func (ExtensionResourceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ExtensionResource)(nil)).Elem() +} + +func (o ExtensionResourceOutput) ToExtensionResourceOutput() ExtensionResourceOutput { + return o +} + +func (o ExtensionResourceOutput) ToExtensionResourceOutputWithContext(ctx context.Context) ExtensionResourceOutput { + return o +} + +// Dictionary of the extension resource attributes. +func (o ExtensionResourceOutput) Outputs() pulumi.MapOutput { + return o.ApplyT(func(v *ExtensionResource) pulumi.MapOutput { return v.Outputs }).(pulumi.MapOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ExtensionResourceInput)(nil)).Elem(), &ExtensionResource{}) + pulumi.RegisterOutputType(ExtensionResourceOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAccountId.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAccountId.go new file mode 100644 index 000000000..f6292a184 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAccountId.go @@ -0,0 +1,55 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func GetAccountId(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetAccountIdResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetAccountIdResult + err := ctx.Invoke("aws-native:index:getAccountId", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type GetAccountIdResult struct { + AccountId string `pulumi:"accountId"` +} + +func GetAccountIdOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetAccountIdResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (GetAccountIdResultOutput, error) { + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:getAccountId", nil, GetAccountIdResultOutput{}, options).(GetAccountIdResultOutput), nil + }).(GetAccountIdResultOutput) +} + +type GetAccountIdResultOutput struct{ *pulumi.OutputState } + +func (GetAccountIdResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetAccountIdResult)(nil)).Elem() +} + +func (o GetAccountIdResultOutput) ToGetAccountIdResultOutput() GetAccountIdResultOutput { + return o +} + +func (o GetAccountIdResultOutput) ToGetAccountIdResultOutputWithContext(ctx context.Context) GetAccountIdResultOutput { + return o +} + +func (o GetAccountIdResultOutput) AccountId() pulumi.StringOutput { + return o.ApplyT(func(v GetAccountIdResult) string { return v.AccountId }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetAccountIdResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAzs.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAzs.go new file mode 100644 index 000000000..beefdc0aa --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getAzs.go @@ -0,0 +1,69 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func GetAzs(ctx *pulumi.Context, args *GetAzsArgs, opts ...pulumi.InvokeOption) (*GetAzsResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetAzsResult + err := ctx.Invoke("aws-native:index:getAzs", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type GetAzsArgs struct { + Region *string `pulumi:"region"` +} + +type GetAzsResult struct { + Azs []string `pulumi:"azs"` +} + +func GetAzsOutput(ctx *pulumi.Context, args GetAzsOutputArgs, opts ...pulumi.InvokeOption) GetAzsResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (GetAzsResultOutput, error) { + args := v.(GetAzsArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:getAzs", args, GetAzsResultOutput{}, options).(GetAzsResultOutput), nil + }).(GetAzsResultOutput) +} + +type GetAzsOutputArgs struct { + Region pulumi.StringPtrInput `pulumi:"region"` +} + +func (GetAzsOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetAzsArgs)(nil)).Elem() +} + +type GetAzsResultOutput struct{ *pulumi.OutputState } + +func (GetAzsResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetAzsResult)(nil)).Elem() +} + +func (o GetAzsResultOutput) ToGetAzsResultOutput() GetAzsResultOutput { + return o +} + +func (o GetAzsResultOutput) ToGetAzsResultOutputWithContext(ctx context.Context) GetAzsResultOutput { + return o +} + +func (o GetAzsResultOutput) Azs() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetAzsResult) []string { return v.Azs }).(pulumi.StringArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(GetAzsResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getPartition.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getPartition.go new file mode 100644 index 000000000..24062afda --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getPartition.go @@ -0,0 +1,64 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func GetPartition(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetPartitionResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetPartitionResult + err := ctx.Invoke("aws-native:index:getPartition", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type GetPartitionResult struct { + // Base DNS domain name for the current partition (e.g., `amazonaws.com` in AWS Commercial, `amazonaws.com.cn` in AWS China). + DnsSuffix string `pulumi:"dnsSuffix"` + // Identifier of the current partition (e.g., `aws` in AWS Commercial, `aws-cn` in AWS China). + Partition string `pulumi:"partition"` +} + +func GetPartitionOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetPartitionResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (GetPartitionResultOutput, error) { + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:getPartition", nil, GetPartitionResultOutput{}, options).(GetPartitionResultOutput), nil + }).(GetPartitionResultOutput) +} + +type GetPartitionResultOutput struct{ *pulumi.OutputState } + +func (GetPartitionResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPartitionResult)(nil)).Elem() +} + +func (o GetPartitionResultOutput) ToGetPartitionResultOutput() GetPartitionResultOutput { + return o +} + +func (o GetPartitionResultOutput) ToGetPartitionResultOutputWithContext(ctx context.Context) GetPartitionResultOutput { + return o +} + +// Base DNS domain name for the current partition (e.g., `amazonaws.com` in AWS Commercial, `amazonaws.com.cn` in AWS China). +func (o GetPartitionResultOutput) DnsSuffix() pulumi.StringOutput { + return o.ApplyT(func(v GetPartitionResult) string { return v.DnsSuffix }).(pulumi.StringOutput) +} + +// Identifier of the current partition (e.g., `aws` in AWS Commercial, `aws-cn` in AWS China). +func (o GetPartitionResultOutput) Partition() pulumi.StringOutput { + return o.ApplyT(func(v GetPartitionResult) string { return v.Partition }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetPartitionResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getRegion.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getRegion.go new file mode 100644 index 000000000..04bc395b6 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getRegion.go @@ -0,0 +1,55 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func GetRegion(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetRegionResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetRegionResult + err := ctx.Invoke("aws-native:index:getRegion", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type GetRegionResult struct { + Region string `pulumi:"region"` +} + +func GetRegionOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetRegionResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (GetRegionResultOutput, error) { + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:getRegion", nil, GetRegionResultOutput{}, options).(GetRegionResultOutput), nil + }).(GetRegionResultOutput) +} + +type GetRegionResultOutput struct{ *pulumi.OutputState } + +func (GetRegionResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRegionResult)(nil)).Elem() +} + +func (o GetRegionResultOutput) ToGetRegionResultOutput() GetRegionResultOutput { + return o +} + +func (o GetRegionResultOutput) ToGetRegionResultOutputWithContext(ctx context.Context) GetRegionResultOutput { + return o +} + +func (o GetRegionResultOutput) Region() pulumi.StringOutput { + return o.ApplyT(func(v GetRegionResult) string { return v.Region }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetRegionResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterList.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterList.go new file mode 100644 index 000000000..a69621809 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterList.go @@ -0,0 +1,69 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func GetSsmParameterList(ctx *pulumi.Context, args *GetSsmParameterListArgs, opts ...pulumi.InvokeOption) (*GetSsmParameterListResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetSsmParameterListResult + err := ctx.Invoke("aws-native:index:getSsmParameterList", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type GetSsmParameterListArgs struct { + Name string `pulumi:"name"` +} + +type GetSsmParameterListResult struct { + Value []string `pulumi:"value"` +} + +func GetSsmParameterListOutput(ctx *pulumi.Context, args GetSsmParameterListOutputArgs, opts ...pulumi.InvokeOption) GetSsmParameterListResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (GetSsmParameterListResultOutput, error) { + args := v.(GetSsmParameterListArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:getSsmParameterList", args, GetSsmParameterListResultOutput{}, options).(GetSsmParameterListResultOutput), nil + }).(GetSsmParameterListResultOutput) +} + +type GetSsmParameterListOutputArgs struct { + Name pulumi.StringInput `pulumi:"name"` +} + +func (GetSsmParameterListOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetSsmParameterListArgs)(nil)).Elem() +} + +type GetSsmParameterListResultOutput struct{ *pulumi.OutputState } + +func (GetSsmParameterListResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSsmParameterListResult)(nil)).Elem() +} + +func (o GetSsmParameterListResultOutput) ToGetSsmParameterListResultOutput() GetSsmParameterListResultOutput { + return o +} + +func (o GetSsmParameterListResultOutput) ToGetSsmParameterListResultOutputWithContext(ctx context.Context) GetSsmParameterListResultOutput { + return o +} + +func (o GetSsmParameterListResultOutput) Value() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetSsmParameterListResult) []string { return v.Value }).(pulumi.StringArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(GetSsmParameterListResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterString.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterString.go new file mode 100644 index 000000000..dd38f5fb0 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getSsmParameterString.go @@ -0,0 +1,69 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func GetSsmParameterString(ctx *pulumi.Context, args *GetSsmParameterStringArgs, opts ...pulumi.InvokeOption) (*GetSsmParameterStringResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetSsmParameterStringResult + err := ctx.Invoke("aws-native:index:getSsmParameterString", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type GetSsmParameterStringArgs struct { + Name string `pulumi:"name"` +} + +type GetSsmParameterStringResult struct { + Value string `pulumi:"value"` +} + +func GetSsmParameterStringOutput(ctx *pulumi.Context, args GetSsmParameterStringOutputArgs, opts ...pulumi.InvokeOption) GetSsmParameterStringResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (GetSsmParameterStringResultOutput, error) { + args := v.(GetSsmParameterStringArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:getSsmParameterString", args, GetSsmParameterStringResultOutput{}, options).(GetSsmParameterStringResultOutput), nil + }).(GetSsmParameterStringResultOutput) +} + +type GetSsmParameterStringOutputArgs struct { + Name pulumi.StringInput `pulumi:"name"` +} + +func (GetSsmParameterStringOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetSsmParameterStringArgs)(nil)).Elem() +} + +type GetSsmParameterStringResultOutput struct{ *pulumi.OutputState } + +func (GetSsmParameterStringResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSsmParameterStringResult)(nil)).Elem() +} + +func (o GetSsmParameterStringResultOutput) ToGetSsmParameterStringResultOutput() GetSsmParameterStringResultOutput { + return o +} + +func (o GetSsmParameterStringResultOutput) ToGetSsmParameterStringResultOutputWithContext(ctx context.Context) GetSsmParameterStringResultOutput { + return o +} + +func (o GetSsmParameterStringResultOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v GetSsmParameterStringResult) string { return v.Value }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetSsmParameterStringResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getUrlSuffix.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getUrlSuffix.go new file mode 100644 index 000000000..fc489414a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/getUrlSuffix.go @@ -0,0 +1,55 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func GetUrlSuffix(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetUrlSuffixResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetUrlSuffixResult + err := ctx.Invoke("aws-native:index:getUrlSuffix", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type GetUrlSuffixResult struct { + UrlSuffix string `pulumi:"urlSuffix"` +} + +func GetUrlSuffixOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetUrlSuffixResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (GetUrlSuffixResultOutput, error) { + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:getUrlSuffix", nil, GetUrlSuffixResultOutput{}, options).(GetUrlSuffixResultOutput), nil + }).(GetUrlSuffixResultOutput) +} + +type GetUrlSuffixResultOutput struct{ *pulumi.OutputState } + +func (GetUrlSuffixResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetUrlSuffixResult)(nil)).Elem() +} + +func (o GetUrlSuffixResultOutput) ToGetUrlSuffixResultOutput() GetUrlSuffixResultOutput { + return o +} + +func (o GetUrlSuffixResultOutput) ToGetUrlSuffixResultOutputWithContext(ctx context.Context) GetUrlSuffixResultOutput { + return o +} + +func (o GetUrlSuffixResultOutput) UrlSuffix() pulumi.StringOutput { + return o.ApplyT(func(v GetUrlSuffixResult) string { return v.UrlSuffix }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetUrlSuffixResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/importValue.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/importValue.go new file mode 100644 index 000000000..440289b9f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/importValue.go @@ -0,0 +1,69 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +func ImportValue(ctx *pulumi.Context, args *ImportValueArgs, opts ...pulumi.InvokeOption) (*ImportValueResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv ImportValueResult + err := ctx.Invoke("aws-native:index:importValue", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type ImportValueArgs struct { + Name string `pulumi:"name"` +} + +type ImportValueResult struct { + Value interface{} `pulumi:"value"` +} + +func ImportValueOutput(ctx *pulumi.Context, args ImportValueOutputArgs, opts ...pulumi.InvokeOption) ImportValueResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (ImportValueResultOutput, error) { + args := v.(ImportValueArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:index:importValue", args, ImportValueResultOutput{}, options).(ImportValueResultOutput), nil + }).(ImportValueResultOutput) +} + +type ImportValueOutputArgs struct { + Name pulumi.StringInput `pulumi:"name"` +} + +func (ImportValueOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ImportValueArgs)(nil)).Elem() +} + +type ImportValueResultOutput struct{ *pulumi.OutputState } + +func (ImportValueResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ImportValueResult)(nil)).Elem() +} + +func (o ImportValueResultOutput) ToImportValueResultOutput() ImportValueResultOutput { + return o +} + +func (o ImportValueResultOutput) ToImportValueResultOutputWithContext(ctx context.Context) ImportValueResultOutput { + return o +} + +func (o ImportValueResultOutput) Value() pulumi.AnyOutput { + return o.ApplyT(func(v ImportValueResult) interface{} { return v.Value }).(pulumi.AnyOutput) +} + +func init() { + pulumi.RegisterOutputType(ImportValueResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/init.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/init.go new file mode 100644 index 000000000..0f500bcbd --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/init.go @@ -0,0 +1,66 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws-native:index:ExtensionResource": + r = &ExtensionResource{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +type pkg struct { + version semver.Version +} + +func (p *pkg) Version() semver.Version { + return p.version +} + +func (p *pkg) ConstructProvider(ctx *pulumi.Context, name, typ, urn string) (pulumi.ProviderResource, error) { + if typ != "pulumi:providers:aws-native" { + return nil, fmt.Errorf("unknown provider type: %s", typ) + } + + r := &Provider{} + err := ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return r, err +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws-native", + "index", + &module{version}, + ) + pulumi.RegisterResourcePackage( + "aws-native", + &pkg{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiUtilities.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiUtilities.go new file mode 100644 index 000000000..b5afee042 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiUtilities.go @@ -0,0 +1,184 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package internal + +import ( + "fmt" + "os" + "reflect" + "regexp" + "strconv" + "strings" + + "github.com/blang/semver" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +import ( + "github.com/pulumi/pulumi/sdk/v3/go/pulumi/internals" +) + +type envParser func(v string) interface{} + +func ParseEnvBool(v string) interface{} { + b, err := strconv.ParseBool(v) + if err != nil { + return nil + } + return b +} + +func ParseEnvInt(v string) interface{} { + i, err := strconv.ParseInt(v, 0, 0) + if err != nil { + return nil + } + return int(i) +} + +func ParseEnvFloat(v string) interface{} { + f, err := strconv.ParseFloat(v, 64) + if err != nil { + return nil + } + return f +} + +func ParseEnvStringArray(v string) interface{} { + var result pulumi.StringArray + for _, item := range strings.Split(v, ";") { + result = append(result, pulumi.String(item)) + } + return result +} + +func GetEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} { + for _, v := range vars { + if value, ok := os.LookupEnv(v); ok { + if parser != nil { + return parser(value) + } + return value + } + } + return def +} + +// PkgVersion uses reflection to determine the version of the current package. +// If a version cannot be determined, v1 will be assumed. The second return +// value is always nil. +func PkgVersion() (semver.Version, error) { + // emptyVersion defaults to v0.0.0 + if !SdkVersion.Equals(semver.Version{}) { + return SdkVersion, nil + } + type sentinal struct{} + pkgPath := reflect.TypeOf(sentinal{}).PkgPath() + re := regexp.MustCompile("^.*/pulumi-aws-native/sdk(/v\\d+)?") + if match := re.FindStringSubmatch(pkgPath); match != nil { + vStr := match[1] + if len(vStr) == 0 { // If the version capture group was empty, default to v1. + return semver.Version{Major: 1}, nil + } + return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil + } + return semver.Version{Major: 1}, nil +} + +// isZero is a null safe check for if a value is it's types zero value. +func IsZero(v interface{}) bool { + if v == nil { + return true + } + return reflect.ValueOf(v).IsZero() +} + +func CallPlain( + ctx *pulumi.Context, + tok string, + args pulumi.Input, + output pulumi.Output, + self pulumi.Resource, + property string, + resultPtr reflect.Value, + errorPtr *error, + opts ...pulumi.InvokeOption, +) { + res, err := callPlainInner(ctx, tok, args, output, self, opts...) + if err != nil { + *errorPtr = err + return + } + + v := reflect.ValueOf(res) + + // extract res.property field if asked to do so + if property != "" { + v = v.FieldByName("Res") + } + + // return by setting the result pointer; this style of returns shortens the generated code without generics + resultPtr.Elem().Set(v) +} + +func callPlainInner( + ctx *pulumi.Context, + tok string, + args pulumi.Input, + output pulumi.Output, + self pulumi.Resource, + opts ...pulumi.InvokeOption, +) (any, error) { + o, err := ctx.Call(tok, args, output, self, opts...) + if err != nil { + return nil, err + } + + outputData, err := internals.UnsafeAwaitOutput(ctx.Context(), o) + if err != nil { + return nil, err + } + + // Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency. + known := outputData.Known + value := outputData.Value + secret := outputData.Secret + + problem := "" + if !known { + problem = "an unknown value" + } else if secret { + problem = "a secret value" + } + + if problem != "" { + return nil, fmt.Errorf("Plain resource method %q incorrectly returned %s. "+ + "This is an error in the provider, please report this to the provider developer.", + tok, problem) + } + + return value, nil +} + +// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource. +func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption { + defaults := []pulumi.ResourceOption{} + + version := semver.MustParse("1.17.0") + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} + +// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke. +func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption { + defaults := []pulumi.InvokeOption{} + + version := semver.MustParse("1.17.0") + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiVersion.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiVersion.go new file mode 100644 index 000000000..4ad7cb873 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal/pulumiVersion.go @@ -0,0 +1,11 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package internal + +import ( + "github.com/blang/semver" +) + +var SdkVersion semver.Version = semver.Version{} +var pluginDownloadURL string = "" diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/provider.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/provider.go new file mode 100644 index 000000000..3fa93e822 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/provider.go @@ -0,0 +1,239 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The provider type for the AWS Cloud Control package. By default, resources use package-wide configuration settings, however an explicit `Provider` instance may be created and passed during resource construction to achieve fine-grained programmatic control over provider settings. See the [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information. +type Provider struct { + pulumi.ProviderResourceState + + // The profile for API operations. If not set, the default profile created with `aws configure` will be used. + Profile pulumi.StringPtrOutput `pulumi:"profile"` + // The region where AWS operations will take place. Examples are `us-east-1`, `us-west-2`, etc. + Region pulumi.StringPtrOutput `pulumi:"region"` + // The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role for Cloud Control API to use when performing this resource operation. Note, this is a unique feature for server side security enforcement, not to be confused with assumeRole, which is used to obtain temporary client credentials. If you do not specify a role, Cloud Control API uses a temporary session created using your AWS user credentials instead. + RoleArn pulumi.StringPtrOutput `pulumi:"roleArn"` + // The path to the shared credentials file. If not set this defaults to `~/.aws/credentials`. + SharedCredentialsFile pulumi.StringPtrOutput `pulumi:"sharedCredentialsFile"` +} + +// NewProvider registers a new resource with the given unique name, arguments, and options. +func NewProvider(ctx *pulumi.Context, + name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AutoNaming != nil { + args.AutoNaming = args.AutoNaming.ToProviderAutoNamingPtrOutput().ApplyT(func(v *ProviderAutoNaming) *ProviderAutoNaming { return v.Defaults() }).(ProviderAutoNamingPtrOutput) + } + if args.Profile == nil { + if d := internal.GetEnvOrDefault(nil, nil, "AWS_PROFILE"); d != nil { + args.Profile = pulumi.StringPtr(d.(string)) + } + } + if args.Region == nil { + if d := internal.GetEnvOrDefault(nil, nil, "AWS_REGION", "AWS_DEFAULT_REGION"); d != nil { + args.Region = pulumi.String(d.(string)) + } + } + if args.SharedCredentialsFile == nil { + if d := internal.GetEnvOrDefault(nil, nil, "AWS_SHARED_CREDENTIALS_FILE"); d != nil { + args.SharedCredentialsFile = pulumi.StringPtr(d.(string)) + } + } + if args.SkipCredentialsValidation == nil { + args.SkipCredentialsValidation = pulumi.BoolPtr(true) + } + if args.SkipGetEc2Platforms == nil { + args.SkipGetEc2Platforms = pulumi.BoolPtr(true) + } + if args.SkipMetadataApiCheck == nil { + args.SkipMetadataApiCheck = pulumi.BoolPtr(true) + } + if args.SkipRegionValidation == nil { + args.SkipRegionValidation = pulumi.BoolPtr(true) + } + if args.AccessKey != nil { + args.AccessKey = pulumi.ToSecret(args.AccessKey).(pulumi.StringPtrInput) + } + if args.SecretKey != nil { + args.SecretKey = pulumi.ToSecret(args.SecretKey).(pulumi.StringPtrInput) + } + if args.Token != nil { + args.Token = pulumi.ToSecret(args.Token).(pulumi.StringPtrInput) + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Provider + err := ctx.RegisterResource("pulumi:providers:aws-native", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type providerArgs struct { + // The access key for API operations. You can retrieve this from the ‘Security & Credentials’ section of the AWS console. + AccessKey *string `pulumi:"accessKey"` + // List of allowed AWS account IDs to prevent you from mistakenly using an incorrect one. Conflicts with `forbiddenAccountIds`. + AllowedAccountIds []string `pulumi:"allowedAccountIds"` + // Configuration for retrieving temporary credentials from the STS service. + AssumeRole *ProviderAssumeRole `pulumi:"assumeRole"` + // The configuration for automatically naming resources. + AutoNaming *ProviderAutoNaming `pulumi:"autoNaming"` + // Configuration block with resource tag settings to apply across all resources handled by this provider. This is designed to replace redundant per-resource `tags` configurations. Provider tags can be overridden with new values, but not excluded from specific resources. To override provider tag values, use the `tags` argument within a resource to configure new tag values for matching keys. + DefaultTags *ProviderDefaultTags `pulumi:"defaultTags"` + // Configuration block for customizing service endpoints. + Endpoints []ProviderEndpoint `pulumi:"endpoints"` + // List of forbidden AWS account IDs to prevent you from mistakenly using the wrong one (and potentially end up destroying a live environment). Conflicts with `allowedAccountIds`. + ForbiddenAccountIds []string `pulumi:"forbiddenAccountIds"` + // Configuration block with resource tag settings to ignore across all resources handled by this provider (except any individual service tag resources such as `ec2.Tag`) for situations where external systems are managing certain resource tags. + IgnoreTags *ProviderIgnoreTags `pulumi:"ignoreTags"` + // Explicitly allow the provider to perform "insecure" SSL requests. If omitted,default value is `false`. + Insecure *bool `pulumi:"insecure"` + // The maximum number of times an AWS API request is being executed. If the API request still fails, an error is thrown. + MaxRetries *int `pulumi:"maxRetries"` + // The profile for API operations. If not set, the default profile created with `aws configure` will be used. + Profile *string `pulumi:"profile"` + // The region where AWS operations will take place. Examples are `us-east-1`, `us-west-2`, etc. + Region string `pulumi:"region"` + // The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role for Cloud Control API to use when performing this resource operation. Note, this is a unique feature for server side security enforcement, not to be confused with assumeRole, which is used to obtain temporary client credentials. If you do not specify a role, Cloud Control API uses a temporary session created using your AWS user credentials instead. + RoleArn *string `pulumi:"roleArn"` + // Set this to true to force the request to use path-style addressing, i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client will use virtual hosted bucket addressing when possible (`http://BUCKET.s3.amazonaws.com/KEY`). Specific to the Amazon S3 service. + S3ForcePathStyle *bool `pulumi:"s3ForcePathStyle"` + // The secret key for API operations. You can retrieve this from the 'Security & Credentials' section of the AWS console. + SecretKey *string `pulumi:"secretKey"` + // The path to the shared credentials file. If not set this defaults to `~/.aws/credentials`. + SharedCredentialsFile *string `pulumi:"sharedCredentialsFile"` + // Skip the credentials validation via STS API. Used for AWS API implementations that do not have STS available/implemented. + SkipCredentialsValidation *bool `pulumi:"skipCredentialsValidation"` + // Skip getting the supported EC2 platforms. Used by users that don't have `ec2:DescribeAccountAttributes` permissions. + SkipGetEc2Platforms *bool `pulumi:"skipGetEc2Platforms"` + // Skip the AWS Metadata API check. Useful for AWS API implementations that do not have a metadata API endpoint. Setting to true prevents Pulumi from authenticating via the Metadata API. You may need to use other authentication methods like static credentials, configuration variables, or environment variables. + SkipMetadataApiCheck *bool `pulumi:"skipMetadataApiCheck"` + // Skip static validation of region name. Used by users of alternative AWS-like APIs or users with access to regions that are not public. + SkipRegionValidation *bool `pulumi:"skipRegionValidation"` + // Skip requesting the account ID. Used for AWS API implementations that do not have IAM/STS API and/or metadata API. + SkipRequestingAccountId *bool `pulumi:"skipRequestingAccountId"` + // Session token for validating temporary credentials. Typically provided after successful identity federation or Multi-Factor Authentication (MFA) login. With MFA login, this is the session token provided afterward, not the 6 digit MFA code used to get temporary credentials. + Token *string `pulumi:"token"` +} + +// The set of arguments for constructing a Provider resource. +type ProviderArgs struct { + // The access key for API operations. You can retrieve this from the ‘Security & Credentials’ section of the AWS console. + AccessKey pulumi.StringPtrInput + // List of allowed AWS account IDs to prevent you from mistakenly using an incorrect one. Conflicts with `forbiddenAccountIds`. + AllowedAccountIds pulumi.StringArrayInput + // Configuration for retrieving temporary credentials from the STS service. + AssumeRole ProviderAssumeRolePtrInput + // The configuration for automatically naming resources. + AutoNaming ProviderAutoNamingPtrInput + // Configuration block with resource tag settings to apply across all resources handled by this provider. This is designed to replace redundant per-resource `tags` configurations. Provider tags can be overridden with new values, but not excluded from specific resources. To override provider tag values, use the `tags` argument within a resource to configure new tag values for matching keys. + DefaultTags ProviderDefaultTagsPtrInput + // Configuration block for customizing service endpoints. + Endpoints ProviderEndpointArrayInput + // List of forbidden AWS account IDs to prevent you from mistakenly using the wrong one (and potentially end up destroying a live environment). Conflicts with `allowedAccountIds`. + ForbiddenAccountIds pulumi.StringArrayInput + // Configuration block with resource tag settings to ignore across all resources handled by this provider (except any individual service tag resources such as `ec2.Tag`) for situations where external systems are managing certain resource tags. + IgnoreTags ProviderIgnoreTagsPtrInput + // Explicitly allow the provider to perform "insecure" SSL requests. If omitted,default value is `false`. + Insecure pulumi.BoolPtrInput + // The maximum number of times an AWS API request is being executed. If the API request still fails, an error is thrown. + MaxRetries pulumi.IntPtrInput + // The profile for API operations. If not set, the default profile created with `aws configure` will be used. + Profile pulumi.StringPtrInput + // The region where AWS operations will take place. Examples are `us-east-1`, `us-west-2`, etc. + Region pulumi.StringInput + // The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role for Cloud Control API to use when performing this resource operation. Note, this is a unique feature for server side security enforcement, not to be confused with assumeRole, which is used to obtain temporary client credentials. If you do not specify a role, Cloud Control API uses a temporary session created using your AWS user credentials instead. + RoleArn pulumi.StringPtrInput + // Set this to true to force the request to use path-style addressing, i.e., `http://s3.amazonaws.com/BUCKET/KEY`. By default, the S3 client will use virtual hosted bucket addressing when possible (`http://BUCKET.s3.amazonaws.com/KEY`). Specific to the Amazon S3 service. + S3ForcePathStyle pulumi.BoolPtrInput + // The secret key for API operations. You can retrieve this from the 'Security & Credentials' section of the AWS console. + SecretKey pulumi.StringPtrInput + // The path to the shared credentials file. If not set this defaults to `~/.aws/credentials`. + SharedCredentialsFile pulumi.StringPtrInput + // Skip the credentials validation via STS API. Used for AWS API implementations that do not have STS available/implemented. + SkipCredentialsValidation pulumi.BoolPtrInput + // Skip getting the supported EC2 platforms. Used by users that don't have `ec2:DescribeAccountAttributes` permissions. + SkipGetEc2Platforms pulumi.BoolPtrInput + // Skip the AWS Metadata API check. Useful for AWS API implementations that do not have a metadata API endpoint. Setting to true prevents Pulumi from authenticating via the Metadata API. You may need to use other authentication methods like static credentials, configuration variables, or environment variables. + SkipMetadataApiCheck pulumi.BoolPtrInput + // Skip static validation of region name. Used by users of alternative AWS-like APIs or users with access to regions that are not public. + SkipRegionValidation pulumi.BoolPtrInput + // Skip requesting the account ID. Used for AWS API implementations that do not have IAM/STS API and/or metadata API. + SkipRequestingAccountId pulumi.BoolPtrInput + // Session token for validating temporary credentials. Typically provided after successful identity federation or Multi-Factor Authentication (MFA) login. With MFA login, this is the session token provided afterward, not the 6 digit MFA code used to get temporary credentials. + Token pulumi.StringPtrInput +} + +func (ProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*providerArgs)(nil)).Elem() +} + +type ProviderInput interface { + pulumi.Input + + ToProviderOutput() ProviderOutput + ToProviderOutputWithContext(ctx context.Context) ProviderOutput +} + +func (*Provider) ElementType() reflect.Type { + return reflect.TypeOf((**Provider)(nil)).Elem() +} + +func (i *Provider) ToProviderOutput() ProviderOutput { + return i.ToProviderOutputWithContext(context.Background()) +} + +func (i *Provider) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderOutput) +} + +type ProviderOutput struct{ *pulumi.OutputState } + +func (ProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Provider)(nil)).Elem() +} + +func (o ProviderOutput) ToProviderOutput() ProviderOutput { + return o +} + +func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { + return o +} + +// The profile for API operations. If not set, the default profile created with `aws configure` will be used. +func (o ProviderOutput) Profile() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Profile }).(pulumi.StringPtrOutput) +} + +// The region where AWS operations will take place. Examples are `us-east-1`, `us-west-2`, etc. +func (o ProviderOutput) Region() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Region }).(pulumi.StringPtrOutput) +} + +// The Amazon Resource Name (ARN) of the AWS Identity and Access Management (IAM) role for Cloud Control API to use when performing this resource operation. Note, this is a unique feature for server side security enforcement, not to be confused with assumeRole, which is used to obtain temporary client credentials. If you do not specify a role, Cloud Control API uses a temporary session created using your AWS user credentials instead. +func (o ProviderOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.RoleArn }).(pulumi.StringPtrOutput) +} + +// The path to the shared credentials file. If not set this defaults to `~/.aws/credentials`. +func (o ProviderOutput) SharedCredentialsFile() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.SharedCredentialsFile }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ProviderInput)(nil)).Elem(), &Provider{}) + pulumi.RegisterOutputType(ProviderOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumi-plugin.json b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumi-plugin.json new file mode 100644 index 000000000..14d94867a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumi-plugin.json @@ -0,0 +1,5 @@ +{ + "resource": true, + "name": "aws-native", + "version": "1.17.0" +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiEnums.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiEnums.go new file mode 100644 index 000000000..9b8f4a194 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiEnums.go @@ -0,0 +1,89 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +// A Region represents any valid Amazon region that may be targeted with deployments. +type Region string + +const ( + // Africa (Cape Town) + RegionAfSouth1 = Region("af-south-1") + // Asia Pacific (Hong Kong) + RegionApEast1 = Region("ap-east-1") + // Asia Pacific (Tokyo) + RegionApNortheast1 = Region("ap-northeast-1") + // Asia Pacific (Seoul) + RegionApNortheast2 = Region("ap-northeast-2") + // Asia Pacific (Osaka) + RegionApNortheast3 = Region("ap-northeast-3") + // Asia Pacific (Mumbai) + RegionApSouth1 = Region("ap-south-1") + // Asia Pacific (Hyderabad) + RegionApSouth2 = Region("ap-south-2") + // Asia Pacific (Singapore) + RegionApSoutheast1 = Region("ap-southeast-1") + // Asia Pacific (Sydney) + RegionApSoutheast2 = Region("ap-southeast-2") + // Asia Pacific (Jakarta) + RegionApSoutheast3 = Region("ap-southeast-3") + // Asia Pacific (Melbourne) + RegionApSoutheast4 = Region("ap-southeast-4") + // Asia Pacific (Malaysia) + RegionApSoutheast5 = Region("ap-southeast-5") + // Canada (Central) + RegionCaCentral1 = Region("ca-central-1") + // Canada West (Calgary) + RegionCaWest1 = Region("ca-west-1") + // China (Beijing) + RegionCnNorth1 = Region("cn-north-1") + // China (Ningxia) + RegionCnNorthwest1 = Region("cn-northwest-1") + // Europe (Frankfurt) + RegionEuCentral1 = Region("eu-central-1") + // Europe (Zurich) + RegionEuCentral2 = Region("eu-central-2") + // EU ISOE West + RegionEuIsoeWest1 = Region("eu-isoe-west-1") + // Europe (Stockholm) + RegionEuNorth1 = Region("eu-north-1") + // Europe (Milan) + RegionEuSouth1 = Region("eu-south-1") + // Europe (Spain) + RegionEuSouth2 = Region("eu-south-2") + // Europe (Ireland) + RegionEuWest1 = Region("eu-west-1") + // Europe (London) + RegionEuWest2 = Region("eu-west-2") + // Europe (Paris) + RegionEuWest3 = Region("eu-west-3") + // Israel (Tel Aviv) + RegionIlCentral1 = Region("il-central-1") + // Middle East (UAE) + RegionMeCentral1 = Region("me-central-1") + // Middle East (Bahrain) + RegionMeSouth1 = Region("me-south-1") + // South America (Sao Paulo) + RegionSaEast1 = Region("sa-east-1") + // US East (N. Virginia) + RegionUsEast1 = Region("us-east-1") + // US East (Ohio) + RegionUsEast2 = Region("us-east-2") + // AWS GovCloud (US-East) + RegionUsGovEast1 = Region("us-gov-east-1") + // AWS GovCloud (US-West) + RegionUsGovWest1 = Region("us-gov-west-1") + // US ISO East + RegionUsIsoEast1 = Region("us-iso-east-1") + // US ISO WEST + RegionUsIsoWest1 = Region("us-iso-west-1") + // US ISOB East (Ohio) + RegionUsIsobEast1 = Region("us-isob-east-1") + // US West (N. California) + RegionUsWest1 = Region("us-west-1") + // US West (Oregon) + RegionUsWest2 = Region("us-west-2") +) + +func init() { +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiTypes.go new file mode 100644 index 000000000..46e5fee1b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/pulumiTypes.go @@ -0,0 +1,1336 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package aws + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +// Auto-naming specification for the resource. +type AutoNaming struct { + // The maximum length of the name. + MaxLength *int `pulumi:"maxLength"` + // The minimum length of the name. + MinLength *int `pulumi:"minLength"` + // The name of the property in the Cloud Control payload that is used to set the name of the resource. + PropertyName *string `pulumi:"propertyName"` +} + +// AutoNamingInput is an input type that accepts AutoNamingArgs and AutoNamingOutput values. +// You can construct a concrete instance of `AutoNamingInput` via: +// +// AutoNamingArgs{...} +type AutoNamingInput interface { + pulumi.Input + + ToAutoNamingOutput() AutoNamingOutput + ToAutoNamingOutputWithContext(context.Context) AutoNamingOutput +} + +// Auto-naming specification for the resource. +type AutoNamingArgs struct { + // The maximum length of the name. + MaxLength pulumi.IntPtrInput `pulumi:"maxLength"` + // The minimum length of the name. + MinLength pulumi.IntPtrInput `pulumi:"minLength"` + // The name of the property in the Cloud Control payload that is used to set the name of the resource. + PropertyName pulumi.StringPtrInput `pulumi:"propertyName"` +} + +func (AutoNamingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AutoNaming)(nil)).Elem() +} + +func (i AutoNamingArgs) ToAutoNamingOutput() AutoNamingOutput { + return i.ToAutoNamingOutputWithContext(context.Background()) +} + +func (i AutoNamingArgs) ToAutoNamingOutputWithContext(ctx context.Context) AutoNamingOutput { + return pulumi.ToOutputWithContext(ctx, i).(AutoNamingOutput) +} + +func (i AutoNamingArgs) ToAutoNamingPtrOutput() AutoNamingPtrOutput { + return i.ToAutoNamingPtrOutputWithContext(context.Background()) +} + +func (i AutoNamingArgs) ToAutoNamingPtrOutputWithContext(ctx context.Context) AutoNamingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AutoNamingOutput).ToAutoNamingPtrOutputWithContext(ctx) +} + +// AutoNamingPtrInput is an input type that accepts AutoNamingArgs, AutoNamingPtr and AutoNamingPtrOutput values. +// You can construct a concrete instance of `AutoNamingPtrInput` via: +// +// AutoNamingArgs{...} +// +// or: +// +// nil +type AutoNamingPtrInput interface { + pulumi.Input + + ToAutoNamingPtrOutput() AutoNamingPtrOutput + ToAutoNamingPtrOutputWithContext(context.Context) AutoNamingPtrOutput +} + +type autoNamingPtrType AutoNamingArgs + +func AutoNamingPtr(v *AutoNamingArgs) AutoNamingPtrInput { + return (*autoNamingPtrType)(v) +} + +func (*autoNamingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AutoNaming)(nil)).Elem() +} + +func (i *autoNamingPtrType) ToAutoNamingPtrOutput() AutoNamingPtrOutput { + return i.ToAutoNamingPtrOutputWithContext(context.Background()) +} + +func (i *autoNamingPtrType) ToAutoNamingPtrOutputWithContext(ctx context.Context) AutoNamingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AutoNamingPtrOutput) +} + +// Auto-naming specification for the resource. +type AutoNamingOutput struct{ *pulumi.OutputState } + +func (AutoNamingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AutoNaming)(nil)).Elem() +} + +func (o AutoNamingOutput) ToAutoNamingOutput() AutoNamingOutput { + return o +} + +func (o AutoNamingOutput) ToAutoNamingOutputWithContext(ctx context.Context) AutoNamingOutput { + return o +} + +func (o AutoNamingOutput) ToAutoNamingPtrOutput() AutoNamingPtrOutput { + return o.ToAutoNamingPtrOutputWithContext(context.Background()) +} + +func (o AutoNamingOutput) ToAutoNamingPtrOutputWithContext(ctx context.Context) AutoNamingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AutoNaming) *AutoNaming { + return &v + }).(AutoNamingPtrOutput) +} + +// The maximum length of the name. +func (o AutoNamingOutput) MaxLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v AutoNaming) *int { return v.MaxLength }).(pulumi.IntPtrOutput) +} + +// The minimum length of the name. +func (o AutoNamingOutput) MinLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v AutoNaming) *int { return v.MinLength }).(pulumi.IntPtrOutput) +} + +// The name of the property in the Cloud Control payload that is used to set the name of the resource. +func (o AutoNamingOutput) PropertyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v AutoNaming) *string { return v.PropertyName }).(pulumi.StringPtrOutput) +} + +type AutoNamingPtrOutput struct{ *pulumi.OutputState } + +func (AutoNamingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AutoNaming)(nil)).Elem() +} + +func (o AutoNamingPtrOutput) ToAutoNamingPtrOutput() AutoNamingPtrOutput { + return o +} + +func (o AutoNamingPtrOutput) ToAutoNamingPtrOutputWithContext(ctx context.Context) AutoNamingPtrOutput { + return o +} + +func (o AutoNamingPtrOutput) Elem() AutoNamingOutput { + return o.ApplyT(func(v *AutoNaming) AutoNaming { + if v != nil { + return *v + } + var ret AutoNaming + return ret + }).(AutoNamingOutput) +} + +// The maximum length of the name. +func (o AutoNamingPtrOutput) MaxLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v *AutoNaming) *int { + if v == nil { + return nil + } + return v.MaxLength + }).(pulumi.IntPtrOutput) +} + +// The minimum length of the name. +func (o AutoNamingPtrOutput) MinLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v *AutoNaming) *int { + if v == nil { + return nil + } + return v.MinLength + }).(pulumi.IntPtrOutput) +} + +// The name of the property in the Cloud Control payload that is used to set the name of the resource. +func (o AutoNamingPtrOutput) PropertyName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AutoNaming) *string { + if v == nil { + return nil + } + return v.PropertyName + }).(pulumi.StringPtrOutput) +} + +// A set of tags to apply to the resource. +type CreateOnlyTag struct { + // The key name of the tag + Key string `pulumi:"key"` + // The value of the tag + Value string `pulumi:"value"` +} + +// CreateOnlyTagInput is an input type that accepts CreateOnlyTagArgs and CreateOnlyTagOutput values. +// You can construct a concrete instance of `CreateOnlyTagInput` via: +// +// CreateOnlyTagArgs{...} +type CreateOnlyTagInput interface { + pulumi.Input + + ToCreateOnlyTagOutput() CreateOnlyTagOutput + ToCreateOnlyTagOutputWithContext(context.Context) CreateOnlyTagOutput +} + +// A set of tags to apply to the resource. +type CreateOnlyTagArgs struct { + // The key name of the tag + Key pulumi.StringInput `pulumi:"key"` + // The value of the tag + Value pulumi.StringInput `pulumi:"value"` +} + +func (CreateOnlyTagArgs) ElementType() reflect.Type { + return reflect.TypeOf((*CreateOnlyTag)(nil)).Elem() +} + +func (i CreateOnlyTagArgs) ToCreateOnlyTagOutput() CreateOnlyTagOutput { + return i.ToCreateOnlyTagOutputWithContext(context.Background()) +} + +func (i CreateOnlyTagArgs) ToCreateOnlyTagOutputWithContext(ctx context.Context) CreateOnlyTagOutput { + return pulumi.ToOutputWithContext(ctx, i).(CreateOnlyTagOutput) +} + +// CreateOnlyTagArrayInput is an input type that accepts CreateOnlyTagArray and CreateOnlyTagArrayOutput values. +// You can construct a concrete instance of `CreateOnlyTagArrayInput` via: +// +// CreateOnlyTagArray{ CreateOnlyTagArgs{...} } +type CreateOnlyTagArrayInput interface { + pulumi.Input + + ToCreateOnlyTagArrayOutput() CreateOnlyTagArrayOutput + ToCreateOnlyTagArrayOutputWithContext(context.Context) CreateOnlyTagArrayOutput +} + +type CreateOnlyTagArray []CreateOnlyTagInput + +func (CreateOnlyTagArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]CreateOnlyTag)(nil)).Elem() +} + +func (i CreateOnlyTagArray) ToCreateOnlyTagArrayOutput() CreateOnlyTagArrayOutput { + return i.ToCreateOnlyTagArrayOutputWithContext(context.Background()) +} + +func (i CreateOnlyTagArray) ToCreateOnlyTagArrayOutputWithContext(ctx context.Context) CreateOnlyTagArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(CreateOnlyTagArrayOutput) +} + +// A set of tags to apply to the resource. +type CreateOnlyTagOutput struct{ *pulumi.OutputState } + +func (CreateOnlyTagOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CreateOnlyTag)(nil)).Elem() +} + +func (o CreateOnlyTagOutput) ToCreateOnlyTagOutput() CreateOnlyTagOutput { + return o +} + +func (o CreateOnlyTagOutput) ToCreateOnlyTagOutputWithContext(ctx context.Context) CreateOnlyTagOutput { + return o +} + +// The key name of the tag +func (o CreateOnlyTagOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v CreateOnlyTag) string { return v.Key }).(pulumi.StringOutput) +} + +// The value of the tag +func (o CreateOnlyTagOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v CreateOnlyTag) string { return v.Value }).(pulumi.StringOutput) +} + +type CreateOnlyTagArrayOutput struct{ *pulumi.OutputState } + +func (CreateOnlyTagArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]CreateOnlyTag)(nil)).Elem() +} + +func (o CreateOnlyTagArrayOutput) ToCreateOnlyTagArrayOutput() CreateOnlyTagArrayOutput { + return o +} + +func (o CreateOnlyTagArrayOutput) ToCreateOnlyTagArrayOutputWithContext(ctx context.Context) CreateOnlyTagArrayOutput { + return o +} + +func (o CreateOnlyTagArrayOutput) Index(i pulumi.IntInput) CreateOnlyTagOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) CreateOnlyTag { + return vs[0].([]CreateOnlyTag)[vs[1].(int)] + }).(CreateOnlyTagOutput) +} + +// The configuration for a Provider to assume a role. +type ProviderAssumeRole struct { + // Number of seconds to restrict the assume role session duration. + DurationSeconds *int `pulumi:"durationSeconds"` + // External identifier to use when assuming the role. + ExternalId *string `pulumi:"externalId"` + // IAM Policy JSON describing further restricting permissions for the IAM Role being assumed. + Policy *string `pulumi:"policy"` + // Set of Amazon Resource Names (ARNs) of IAM Policies describing further restricting permissions for the role. + PolicyArns []string `pulumi:"policyArns"` + // Amazon Resource Name (ARN) of the IAM Role to assume. + RoleArn *string `pulumi:"roleArn"` + // Session name to use when assuming the role. + SessionName *string `pulumi:"sessionName"` + // Map of assume role session tags. + Tags map[string]string `pulumi:"tags"` + // A list of keys for session tags that you want to set as transitive. If you set a tag key as transitive, the corresponding key and value passes to subsequent sessions in a role chain. + TransitiveTagKeys []string `pulumi:"transitiveTagKeys"` +} + +// ProviderAssumeRoleInput is an input type that accepts ProviderAssumeRoleArgs and ProviderAssumeRoleOutput values. +// You can construct a concrete instance of `ProviderAssumeRoleInput` via: +// +// ProviderAssumeRoleArgs{...} +type ProviderAssumeRoleInput interface { + pulumi.Input + + ToProviderAssumeRoleOutput() ProviderAssumeRoleOutput + ToProviderAssumeRoleOutputWithContext(context.Context) ProviderAssumeRoleOutput +} + +// The configuration for a Provider to assume a role. +type ProviderAssumeRoleArgs struct { + // Number of seconds to restrict the assume role session duration. + DurationSeconds pulumi.IntPtrInput `pulumi:"durationSeconds"` + // External identifier to use when assuming the role. + ExternalId pulumi.StringPtrInput `pulumi:"externalId"` + // IAM Policy JSON describing further restricting permissions for the IAM Role being assumed. + Policy pulumi.StringPtrInput `pulumi:"policy"` + // Set of Amazon Resource Names (ARNs) of IAM Policies describing further restricting permissions for the role. + PolicyArns pulumi.StringArrayInput `pulumi:"policyArns"` + // Amazon Resource Name (ARN) of the IAM Role to assume. + RoleArn pulumi.StringPtrInput `pulumi:"roleArn"` + // Session name to use when assuming the role. + SessionName pulumi.StringPtrInput `pulumi:"sessionName"` + // Map of assume role session tags. + Tags pulumi.StringMapInput `pulumi:"tags"` + // A list of keys for session tags that you want to set as transitive. If you set a tag key as transitive, the corresponding key and value passes to subsequent sessions in a role chain. + TransitiveTagKeys pulumi.StringArrayInput `pulumi:"transitiveTagKeys"` +} + +func (ProviderAssumeRoleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderAssumeRole)(nil)).Elem() +} + +func (i ProviderAssumeRoleArgs) ToProviderAssumeRoleOutput() ProviderAssumeRoleOutput { + return i.ToProviderAssumeRoleOutputWithContext(context.Background()) +} + +func (i ProviderAssumeRoleArgs) ToProviderAssumeRoleOutputWithContext(ctx context.Context) ProviderAssumeRoleOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderAssumeRoleOutput) +} + +func (i ProviderAssumeRoleArgs) ToProviderAssumeRolePtrOutput() ProviderAssumeRolePtrOutput { + return i.ToProviderAssumeRolePtrOutputWithContext(context.Background()) +} + +func (i ProviderAssumeRoleArgs) ToProviderAssumeRolePtrOutputWithContext(ctx context.Context) ProviderAssumeRolePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderAssumeRoleOutput).ToProviderAssumeRolePtrOutputWithContext(ctx) +} + +// ProviderAssumeRolePtrInput is an input type that accepts ProviderAssumeRoleArgs, ProviderAssumeRolePtr and ProviderAssumeRolePtrOutput values. +// You can construct a concrete instance of `ProviderAssumeRolePtrInput` via: +// +// ProviderAssumeRoleArgs{...} +// +// or: +// +// nil +type ProviderAssumeRolePtrInput interface { + pulumi.Input + + ToProviderAssumeRolePtrOutput() ProviderAssumeRolePtrOutput + ToProviderAssumeRolePtrOutputWithContext(context.Context) ProviderAssumeRolePtrOutput +} + +type providerAssumeRolePtrType ProviderAssumeRoleArgs + +func ProviderAssumeRolePtr(v *ProviderAssumeRoleArgs) ProviderAssumeRolePtrInput { + return (*providerAssumeRolePtrType)(v) +} + +func (*providerAssumeRolePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderAssumeRole)(nil)).Elem() +} + +func (i *providerAssumeRolePtrType) ToProviderAssumeRolePtrOutput() ProviderAssumeRolePtrOutput { + return i.ToProviderAssumeRolePtrOutputWithContext(context.Background()) +} + +func (i *providerAssumeRolePtrType) ToProviderAssumeRolePtrOutputWithContext(ctx context.Context) ProviderAssumeRolePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderAssumeRolePtrOutput) +} + +// The configuration for a Provider to assume a role. +type ProviderAssumeRoleOutput struct{ *pulumi.OutputState } + +func (ProviderAssumeRoleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderAssumeRole)(nil)).Elem() +} + +func (o ProviderAssumeRoleOutput) ToProviderAssumeRoleOutput() ProviderAssumeRoleOutput { + return o +} + +func (o ProviderAssumeRoleOutput) ToProviderAssumeRoleOutputWithContext(ctx context.Context) ProviderAssumeRoleOutput { + return o +} + +func (o ProviderAssumeRoleOutput) ToProviderAssumeRolePtrOutput() ProviderAssumeRolePtrOutput { + return o.ToProviderAssumeRolePtrOutputWithContext(context.Background()) +} + +func (o ProviderAssumeRoleOutput) ToProviderAssumeRolePtrOutputWithContext(ctx context.Context) ProviderAssumeRolePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ProviderAssumeRole) *ProviderAssumeRole { + return &v + }).(ProviderAssumeRolePtrOutput) +} + +// Number of seconds to restrict the assume role session duration. +func (o ProviderAssumeRoleOutput) DurationSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v ProviderAssumeRole) *int { return v.DurationSeconds }).(pulumi.IntPtrOutput) +} + +// External identifier to use when assuming the role. +func (o ProviderAssumeRoleOutput) ExternalId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderAssumeRole) *string { return v.ExternalId }).(pulumi.StringPtrOutput) +} + +// IAM Policy JSON describing further restricting permissions for the IAM Role being assumed. +func (o ProviderAssumeRoleOutput) Policy() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderAssumeRole) *string { return v.Policy }).(pulumi.StringPtrOutput) +} + +// Set of Amazon Resource Names (ARNs) of IAM Policies describing further restricting permissions for the role. +func (o ProviderAssumeRoleOutput) PolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v ProviderAssumeRole) []string { return v.PolicyArns }).(pulumi.StringArrayOutput) +} + +// Amazon Resource Name (ARN) of the IAM Role to assume. +func (o ProviderAssumeRoleOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderAssumeRole) *string { return v.RoleArn }).(pulumi.StringPtrOutput) +} + +// Session name to use when assuming the role. +func (o ProviderAssumeRoleOutput) SessionName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderAssumeRole) *string { return v.SessionName }).(pulumi.StringPtrOutput) +} + +// Map of assume role session tags. +func (o ProviderAssumeRoleOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v ProviderAssumeRole) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// A list of keys for session tags that you want to set as transitive. If you set a tag key as transitive, the corresponding key and value passes to subsequent sessions in a role chain. +func (o ProviderAssumeRoleOutput) TransitiveTagKeys() pulumi.StringArrayOutput { + return o.ApplyT(func(v ProviderAssumeRole) []string { return v.TransitiveTagKeys }).(pulumi.StringArrayOutput) +} + +type ProviderAssumeRolePtrOutput struct{ *pulumi.OutputState } + +func (ProviderAssumeRolePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderAssumeRole)(nil)).Elem() +} + +func (o ProviderAssumeRolePtrOutput) ToProviderAssumeRolePtrOutput() ProviderAssumeRolePtrOutput { + return o +} + +func (o ProviderAssumeRolePtrOutput) ToProviderAssumeRolePtrOutputWithContext(ctx context.Context) ProviderAssumeRolePtrOutput { + return o +} + +func (o ProviderAssumeRolePtrOutput) Elem() ProviderAssumeRoleOutput { + return o.ApplyT(func(v *ProviderAssumeRole) ProviderAssumeRole { + if v != nil { + return *v + } + var ret ProviderAssumeRole + return ret + }).(ProviderAssumeRoleOutput) +} + +// Number of seconds to restrict the assume role session duration. +func (o ProviderAssumeRolePtrOutput) DurationSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ProviderAssumeRole) *int { + if v == nil { + return nil + } + return v.DurationSeconds + }).(pulumi.IntPtrOutput) +} + +// External identifier to use when assuming the role. +func (o ProviderAssumeRolePtrOutput) ExternalId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ProviderAssumeRole) *string { + if v == nil { + return nil + } + return v.ExternalId + }).(pulumi.StringPtrOutput) +} + +// IAM Policy JSON describing further restricting permissions for the IAM Role being assumed. +func (o ProviderAssumeRolePtrOutput) Policy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ProviderAssumeRole) *string { + if v == nil { + return nil + } + return v.Policy + }).(pulumi.StringPtrOutput) +} + +// Set of Amazon Resource Names (ARNs) of IAM Policies describing further restricting permissions for the role. +func (o ProviderAssumeRolePtrOutput) PolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ProviderAssumeRole) []string { + if v == nil { + return nil + } + return v.PolicyArns + }).(pulumi.StringArrayOutput) +} + +// Amazon Resource Name (ARN) of the IAM Role to assume. +func (o ProviderAssumeRolePtrOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ProviderAssumeRole) *string { + if v == nil { + return nil + } + return v.RoleArn + }).(pulumi.StringPtrOutput) +} + +// Session name to use when assuming the role. +func (o ProviderAssumeRolePtrOutput) SessionName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ProviderAssumeRole) *string { + if v == nil { + return nil + } + return v.SessionName + }).(pulumi.StringPtrOutput) +} + +// Map of assume role session tags. +func (o ProviderAssumeRolePtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *ProviderAssumeRole) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// A list of keys for session tags that you want to set as transitive. If you set a tag key as transitive, the corresponding key and value passes to subsequent sessions in a role chain. +func (o ProviderAssumeRolePtrOutput) TransitiveTagKeys() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ProviderAssumeRole) []string { + if v == nil { + return nil + } + return v.TransitiveTagKeys + }).(pulumi.StringArrayOutput) +} + +// The configuration for automatically naming resources. +type ProviderAutoNaming struct { + // Automatically trim the auto-generated name to meet the maximum length constraint. + AutoTrim *bool `pulumi:"autoTrim"` + // The minimum length of the random suffix to append to the auto-generated name. + RandomSuffixMinLength *int `pulumi:"randomSuffixMinLength"` +} + +// Defaults sets the appropriate defaults for ProviderAutoNaming +func (val *ProviderAutoNaming) Defaults() *ProviderAutoNaming { + if val == nil { + return nil + } + tmp := *val + if tmp.RandomSuffixMinLength == nil { + randomSuffixMinLength_ := 1 + tmp.RandomSuffixMinLength = &randomSuffixMinLength_ + } + return &tmp +} + +// ProviderAutoNamingInput is an input type that accepts ProviderAutoNamingArgs and ProviderAutoNamingOutput values. +// You can construct a concrete instance of `ProviderAutoNamingInput` via: +// +// ProviderAutoNamingArgs{...} +type ProviderAutoNamingInput interface { + pulumi.Input + + ToProviderAutoNamingOutput() ProviderAutoNamingOutput + ToProviderAutoNamingOutputWithContext(context.Context) ProviderAutoNamingOutput +} + +// The configuration for automatically naming resources. +type ProviderAutoNamingArgs struct { + // Automatically trim the auto-generated name to meet the maximum length constraint. + AutoTrim pulumi.BoolPtrInput `pulumi:"autoTrim"` + // The minimum length of the random suffix to append to the auto-generated name. + RandomSuffixMinLength pulumi.IntPtrInput `pulumi:"randomSuffixMinLength"` +} + +// Defaults sets the appropriate defaults for ProviderAutoNamingArgs +func (val *ProviderAutoNamingArgs) Defaults() *ProviderAutoNamingArgs { + if val == nil { + return nil + } + tmp := *val + if tmp.RandomSuffixMinLength == nil { + tmp.RandomSuffixMinLength = pulumi.IntPtr(1) + } + return &tmp +} +func (ProviderAutoNamingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderAutoNaming)(nil)).Elem() +} + +func (i ProviderAutoNamingArgs) ToProviderAutoNamingOutput() ProviderAutoNamingOutput { + return i.ToProviderAutoNamingOutputWithContext(context.Background()) +} + +func (i ProviderAutoNamingArgs) ToProviderAutoNamingOutputWithContext(ctx context.Context) ProviderAutoNamingOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderAutoNamingOutput) +} + +func (i ProviderAutoNamingArgs) ToProviderAutoNamingPtrOutput() ProviderAutoNamingPtrOutput { + return i.ToProviderAutoNamingPtrOutputWithContext(context.Background()) +} + +func (i ProviderAutoNamingArgs) ToProviderAutoNamingPtrOutputWithContext(ctx context.Context) ProviderAutoNamingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderAutoNamingOutput).ToProviderAutoNamingPtrOutputWithContext(ctx) +} + +// ProviderAutoNamingPtrInput is an input type that accepts ProviderAutoNamingArgs, ProviderAutoNamingPtr and ProviderAutoNamingPtrOutput values. +// You can construct a concrete instance of `ProviderAutoNamingPtrInput` via: +// +// ProviderAutoNamingArgs{...} +// +// or: +// +// nil +type ProviderAutoNamingPtrInput interface { + pulumi.Input + + ToProviderAutoNamingPtrOutput() ProviderAutoNamingPtrOutput + ToProviderAutoNamingPtrOutputWithContext(context.Context) ProviderAutoNamingPtrOutput +} + +type providerAutoNamingPtrType ProviderAutoNamingArgs + +func ProviderAutoNamingPtr(v *ProviderAutoNamingArgs) ProviderAutoNamingPtrInput { + return (*providerAutoNamingPtrType)(v) +} + +func (*providerAutoNamingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderAutoNaming)(nil)).Elem() +} + +func (i *providerAutoNamingPtrType) ToProviderAutoNamingPtrOutput() ProviderAutoNamingPtrOutput { + return i.ToProviderAutoNamingPtrOutputWithContext(context.Background()) +} + +func (i *providerAutoNamingPtrType) ToProviderAutoNamingPtrOutputWithContext(ctx context.Context) ProviderAutoNamingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderAutoNamingPtrOutput) +} + +// The configuration for automatically naming resources. +type ProviderAutoNamingOutput struct{ *pulumi.OutputState } + +func (ProviderAutoNamingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderAutoNaming)(nil)).Elem() +} + +func (o ProviderAutoNamingOutput) ToProviderAutoNamingOutput() ProviderAutoNamingOutput { + return o +} + +func (o ProviderAutoNamingOutput) ToProviderAutoNamingOutputWithContext(ctx context.Context) ProviderAutoNamingOutput { + return o +} + +func (o ProviderAutoNamingOutput) ToProviderAutoNamingPtrOutput() ProviderAutoNamingPtrOutput { + return o.ToProviderAutoNamingPtrOutputWithContext(context.Background()) +} + +func (o ProviderAutoNamingOutput) ToProviderAutoNamingPtrOutputWithContext(ctx context.Context) ProviderAutoNamingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ProviderAutoNaming) *ProviderAutoNaming { + return &v + }).(ProviderAutoNamingPtrOutput) +} + +// Automatically trim the auto-generated name to meet the maximum length constraint. +func (o ProviderAutoNamingOutput) AutoTrim() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ProviderAutoNaming) *bool { return v.AutoTrim }).(pulumi.BoolPtrOutput) +} + +// The minimum length of the random suffix to append to the auto-generated name. +func (o ProviderAutoNamingOutput) RandomSuffixMinLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v ProviderAutoNaming) *int { return v.RandomSuffixMinLength }).(pulumi.IntPtrOutput) +} + +type ProviderAutoNamingPtrOutput struct{ *pulumi.OutputState } + +func (ProviderAutoNamingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderAutoNaming)(nil)).Elem() +} + +func (o ProviderAutoNamingPtrOutput) ToProviderAutoNamingPtrOutput() ProviderAutoNamingPtrOutput { + return o +} + +func (o ProviderAutoNamingPtrOutput) ToProviderAutoNamingPtrOutputWithContext(ctx context.Context) ProviderAutoNamingPtrOutput { + return o +} + +func (o ProviderAutoNamingPtrOutput) Elem() ProviderAutoNamingOutput { + return o.ApplyT(func(v *ProviderAutoNaming) ProviderAutoNaming { + if v != nil { + return *v + } + var ret ProviderAutoNaming + return ret + }).(ProviderAutoNamingOutput) +} + +// Automatically trim the auto-generated name to meet the maximum length constraint. +func (o ProviderAutoNamingPtrOutput) AutoTrim() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ProviderAutoNaming) *bool { + if v == nil { + return nil + } + return v.AutoTrim + }).(pulumi.BoolPtrOutput) +} + +// The minimum length of the random suffix to append to the auto-generated name. +func (o ProviderAutoNamingPtrOutput) RandomSuffixMinLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ProviderAutoNaming) *int { + if v == nil { + return nil + } + return v.RandomSuffixMinLength + }).(pulumi.IntPtrOutput) +} + +// The configuration with resource tag settings to apply across all resources handled by this provider. This is designed to replace redundant per-resource `tags` configurations. Provider tags can be overridden with new values, but not excluded from specific resources. To override provider tag values, use the `tags` argument within a resource to configure new tag values for matching keys. +type ProviderDefaultTags struct { + // A group of tags to set across all resources. + Tags map[string]string `pulumi:"tags"` +} + +// ProviderDefaultTagsInput is an input type that accepts ProviderDefaultTagsArgs and ProviderDefaultTagsOutput values. +// You can construct a concrete instance of `ProviderDefaultTagsInput` via: +// +// ProviderDefaultTagsArgs{...} +type ProviderDefaultTagsInput interface { + pulumi.Input + + ToProviderDefaultTagsOutput() ProviderDefaultTagsOutput + ToProviderDefaultTagsOutputWithContext(context.Context) ProviderDefaultTagsOutput +} + +// The configuration with resource tag settings to apply across all resources handled by this provider. This is designed to replace redundant per-resource `tags` configurations. Provider tags can be overridden with new values, but not excluded from specific resources. To override provider tag values, use the `tags` argument within a resource to configure new tag values for matching keys. +type ProviderDefaultTagsArgs struct { + // A group of tags to set across all resources. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (ProviderDefaultTagsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderDefaultTags)(nil)).Elem() +} + +func (i ProviderDefaultTagsArgs) ToProviderDefaultTagsOutput() ProviderDefaultTagsOutput { + return i.ToProviderDefaultTagsOutputWithContext(context.Background()) +} + +func (i ProviderDefaultTagsArgs) ToProviderDefaultTagsOutputWithContext(ctx context.Context) ProviderDefaultTagsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderDefaultTagsOutput) +} + +func (i ProviderDefaultTagsArgs) ToProviderDefaultTagsPtrOutput() ProviderDefaultTagsPtrOutput { + return i.ToProviderDefaultTagsPtrOutputWithContext(context.Background()) +} + +func (i ProviderDefaultTagsArgs) ToProviderDefaultTagsPtrOutputWithContext(ctx context.Context) ProviderDefaultTagsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderDefaultTagsOutput).ToProviderDefaultTagsPtrOutputWithContext(ctx) +} + +// ProviderDefaultTagsPtrInput is an input type that accepts ProviderDefaultTagsArgs, ProviderDefaultTagsPtr and ProviderDefaultTagsPtrOutput values. +// You can construct a concrete instance of `ProviderDefaultTagsPtrInput` via: +// +// ProviderDefaultTagsArgs{...} +// +// or: +// +// nil +type ProviderDefaultTagsPtrInput interface { + pulumi.Input + + ToProviderDefaultTagsPtrOutput() ProviderDefaultTagsPtrOutput + ToProviderDefaultTagsPtrOutputWithContext(context.Context) ProviderDefaultTagsPtrOutput +} + +type providerDefaultTagsPtrType ProviderDefaultTagsArgs + +func ProviderDefaultTagsPtr(v *ProviderDefaultTagsArgs) ProviderDefaultTagsPtrInput { + return (*providerDefaultTagsPtrType)(v) +} + +func (*providerDefaultTagsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderDefaultTags)(nil)).Elem() +} + +func (i *providerDefaultTagsPtrType) ToProviderDefaultTagsPtrOutput() ProviderDefaultTagsPtrOutput { + return i.ToProviderDefaultTagsPtrOutputWithContext(context.Background()) +} + +func (i *providerDefaultTagsPtrType) ToProviderDefaultTagsPtrOutputWithContext(ctx context.Context) ProviderDefaultTagsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderDefaultTagsPtrOutput) +} + +// The configuration with resource tag settings to apply across all resources handled by this provider. This is designed to replace redundant per-resource `tags` configurations. Provider tags can be overridden with new values, but not excluded from specific resources. To override provider tag values, use the `tags` argument within a resource to configure new tag values for matching keys. +type ProviderDefaultTagsOutput struct{ *pulumi.OutputState } + +func (ProviderDefaultTagsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderDefaultTags)(nil)).Elem() +} + +func (o ProviderDefaultTagsOutput) ToProviderDefaultTagsOutput() ProviderDefaultTagsOutput { + return o +} + +func (o ProviderDefaultTagsOutput) ToProviderDefaultTagsOutputWithContext(ctx context.Context) ProviderDefaultTagsOutput { + return o +} + +func (o ProviderDefaultTagsOutput) ToProviderDefaultTagsPtrOutput() ProviderDefaultTagsPtrOutput { + return o.ToProviderDefaultTagsPtrOutputWithContext(context.Background()) +} + +func (o ProviderDefaultTagsOutput) ToProviderDefaultTagsPtrOutputWithContext(ctx context.Context) ProviderDefaultTagsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ProviderDefaultTags) *ProviderDefaultTags { + return &v + }).(ProviderDefaultTagsPtrOutput) +} + +// A group of tags to set across all resources. +func (o ProviderDefaultTagsOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v ProviderDefaultTags) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type ProviderDefaultTagsPtrOutput struct{ *pulumi.OutputState } + +func (ProviderDefaultTagsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderDefaultTags)(nil)).Elem() +} + +func (o ProviderDefaultTagsPtrOutput) ToProviderDefaultTagsPtrOutput() ProviderDefaultTagsPtrOutput { + return o +} + +func (o ProviderDefaultTagsPtrOutput) ToProviderDefaultTagsPtrOutputWithContext(ctx context.Context) ProviderDefaultTagsPtrOutput { + return o +} + +func (o ProviderDefaultTagsPtrOutput) Elem() ProviderDefaultTagsOutput { + return o.ApplyT(func(v *ProviderDefaultTags) ProviderDefaultTags { + if v != nil { + return *v + } + var ret ProviderDefaultTags + return ret + }).(ProviderDefaultTagsOutput) +} + +// A group of tags to set across all resources. +func (o ProviderDefaultTagsPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *ProviderDefaultTags) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// The configuration for for customizing service endpoints. +type ProviderEndpoint struct { + // Override the default endpoint for AWS CloudControl + Cloudcontrol *string `pulumi:"cloudcontrol"` + // Override the default endpoint for AWS CloudFormation + Cloudformation *string `pulumi:"cloudformation"` + // Override the default endpoint for AWS Elastic Compute Cloud (EC2) + Ec2 *string `pulumi:"ec2"` + // Override the default endpoint for AWS Systems Manager + Ssm *string `pulumi:"ssm"` + // Override the default endpoint for AWS Security Token Service (STS) + Sts *string `pulumi:"sts"` +} + +// ProviderEndpointInput is an input type that accepts ProviderEndpointArgs and ProviderEndpointOutput values. +// You can construct a concrete instance of `ProviderEndpointInput` via: +// +// ProviderEndpointArgs{...} +type ProviderEndpointInput interface { + pulumi.Input + + ToProviderEndpointOutput() ProviderEndpointOutput + ToProviderEndpointOutputWithContext(context.Context) ProviderEndpointOutput +} + +// The configuration for for customizing service endpoints. +type ProviderEndpointArgs struct { + // Override the default endpoint for AWS CloudControl + Cloudcontrol pulumi.StringPtrInput `pulumi:"cloudcontrol"` + // Override the default endpoint for AWS CloudFormation + Cloudformation pulumi.StringPtrInput `pulumi:"cloudformation"` + // Override the default endpoint for AWS Elastic Compute Cloud (EC2) + Ec2 pulumi.StringPtrInput `pulumi:"ec2"` + // Override the default endpoint for AWS Systems Manager + Ssm pulumi.StringPtrInput `pulumi:"ssm"` + // Override the default endpoint for AWS Security Token Service (STS) + Sts pulumi.StringPtrInput `pulumi:"sts"` +} + +func (ProviderEndpointArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderEndpoint)(nil)).Elem() +} + +func (i ProviderEndpointArgs) ToProviderEndpointOutput() ProviderEndpointOutput { + return i.ToProviderEndpointOutputWithContext(context.Background()) +} + +func (i ProviderEndpointArgs) ToProviderEndpointOutputWithContext(ctx context.Context) ProviderEndpointOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderEndpointOutput) +} + +// ProviderEndpointArrayInput is an input type that accepts ProviderEndpointArray and ProviderEndpointArrayOutput values. +// You can construct a concrete instance of `ProviderEndpointArrayInput` via: +// +// ProviderEndpointArray{ ProviderEndpointArgs{...} } +type ProviderEndpointArrayInput interface { + pulumi.Input + + ToProviderEndpointArrayOutput() ProviderEndpointArrayOutput + ToProviderEndpointArrayOutputWithContext(context.Context) ProviderEndpointArrayOutput +} + +type ProviderEndpointArray []ProviderEndpointInput + +func (ProviderEndpointArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProviderEndpoint)(nil)).Elem() +} + +func (i ProviderEndpointArray) ToProviderEndpointArrayOutput() ProviderEndpointArrayOutput { + return i.ToProviderEndpointArrayOutputWithContext(context.Background()) +} + +func (i ProviderEndpointArray) ToProviderEndpointArrayOutputWithContext(ctx context.Context) ProviderEndpointArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderEndpointArrayOutput) +} + +// The configuration for for customizing service endpoints. +type ProviderEndpointOutput struct{ *pulumi.OutputState } + +func (ProviderEndpointOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderEndpoint)(nil)).Elem() +} + +func (o ProviderEndpointOutput) ToProviderEndpointOutput() ProviderEndpointOutput { + return o +} + +func (o ProviderEndpointOutput) ToProviderEndpointOutputWithContext(ctx context.Context) ProviderEndpointOutput { + return o +} + +// Override the default endpoint for AWS CloudControl +func (o ProviderEndpointOutput) Cloudcontrol() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderEndpoint) *string { return v.Cloudcontrol }).(pulumi.StringPtrOutput) +} + +// Override the default endpoint for AWS CloudFormation +func (o ProviderEndpointOutput) Cloudformation() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderEndpoint) *string { return v.Cloudformation }).(pulumi.StringPtrOutput) +} + +// Override the default endpoint for AWS Elastic Compute Cloud (EC2) +func (o ProviderEndpointOutput) Ec2() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderEndpoint) *string { return v.Ec2 }).(pulumi.StringPtrOutput) +} + +// Override the default endpoint for AWS Systems Manager +func (o ProviderEndpointOutput) Ssm() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderEndpoint) *string { return v.Ssm }).(pulumi.StringPtrOutput) +} + +// Override the default endpoint for AWS Security Token Service (STS) +func (o ProviderEndpointOutput) Sts() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderEndpoint) *string { return v.Sts }).(pulumi.StringPtrOutput) +} + +type ProviderEndpointArrayOutput struct{ *pulumi.OutputState } + +func (ProviderEndpointArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProviderEndpoint)(nil)).Elem() +} + +func (o ProviderEndpointArrayOutput) ToProviderEndpointArrayOutput() ProviderEndpointArrayOutput { + return o +} + +func (o ProviderEndpointArrayOutput) ToProviderEndpointArrayOutputWithContext(ctx context.Context) ProviderEndpointArrayOutput { + return o +} + +func (o ProviderEndpointArrayOutput) Index(i pulumi.IntInput) ProviderEndpointOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ProviderEndpoint { + return vs[0].([]ProviderEndpoint)[vs[1].(int)] + }).(ProviderEndpointOutput) +} + +// The configuration with resource tag settings to ignore across all resources handled by this provider (except any individual service tag resources such as `ec2.Tag`) for situations where external systems are managing certain resource tags. +type ProviderIgnoreTags struct { + // List of exact resource tag keys to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning the tag in any `tags` attributes and displaying any configuration difference for the tag value. If any resource configuration still has this tag key configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. + KeyPrefixes []string `pulumi:"keyPrefixes"` + // List of resource tag key prefixes to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning any tag key matching the prefixes in any `tags` attributes and displaying any configuration difference for those tag values. If any resource configuration still has a tag matching one of the prefixes configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. + Keys []string `pulumi:"keys"` +} + +// ProviderIgnoreTagsInput is an input type that accepts ProviderIgnoreTagsArgs and ProviderIgnoreTagsOutput values. +// You can construct a concrete instance of `ProviderIgnoreTagsInput` via: +// +// ProviderIgnoreTagsArgs{...} +type ProviderIgnoreTagsInput interface { + pulumi.Input + + ToProviderIgnoreTagsOutput() ProviderIgnoreTagsOutput + ToProviderIgnoreTagsOutputWithContext(context.Context) ProviderIgnoreTagsOutput +} + +// The configuration with resource tag settings to ignore across all resources handled by this provider (except any individual service tag resources such as `ec2.Tag`) for situations where external systems are managing certain resource tags. +type ProviderIgnoreTagsArgs struct { + // List of exact resource tag keys to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning the tag in any `tags` attributes and displaying any configuration difference for the tag value. If any resource configuration still has this tag key configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. + KeyPrefixes pulumi.StringArrayInput `pulumi:"keyPrefixes"` + // List of resource tag key prefixes to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning any tag key matching the prefixes in any `tags` attributes and displaying any configuration difference for those tag values. If any resource configuration still has a tag matching one of the prefixes configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. + Keys pulumi.StringArrayInput `pulumi:"keys"` +} + +func (ProviderIgnoreTagsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderIgnoreTags)(nil)).Elem() +} + +func (i ProviderIgnoreTagsArgs) ToProviderIgnoreTagsOutput() ProviderIgnoreTagsOutput { + return i.ToProviderIgnoreTagsOutputWithContext(context.Background()) +} + +func (i ProviderIgnoreTagsArgs) ToProviderIgnoreTagsOutputWithContext(ctx context.Context) ProviderIgnoreTagsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderIgnoreTagsOutput) +} + +func (i ProviderIgnoreTagsArgs) ToProviderIgnoreTagsPtrOutput() ProviderIgnoreTagsPtrOutput { + return i.ToProviderIgnoreTagsPtrOutputWithContext(context.Background()) +} + +func (i ProviderIgnoreTagsArgs) ToProviderIgnoreTagsPtrOutputWithContext(ctx context.Context) ProviderIgnoreTagsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderIgnoreTagsOutput).ToProviderIgnoreTagsPtrOutputWithContext(ctx) +} + +// ProviderIgnoreTagsPtrInput is an input type that accepts ProviderIgnoreTagsArgs, ProviderIgnoreTagsPtr and ProviderIgnoreTagsPtrOutput values. +// You can construct a concrete instance of `ProviderIgnoreTagsPtrInput` via: +// +// ProviderIgnoreTagsArgs{...} +// +// or: +// +// nil +type ProviderIgnoreTagsPtrInput interface { + pulumi.Input + + ToProviderIgnoreTagsPtrOutput() ProviderIgnoreTagsPtrOutput + ToProviderIgnoreTagsPtrOutputWithContext(context.Context) ProviderIgnoreTagsPtrOutput +} + +type providerIgnoreTagsPtrType ProviderIgnoreTagsArgs + +func ProviderIgnoreTagsPtr(v *ProviderIgnoreTagsArgs) ProviderIgnoreTagsPtrInput { + return (*providerIgnoreTagsPtrType)(v) +} + +func (*providerIgnoreTagsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderIgnoreTags)(nil)).Elem() +} + +func (i *providerIgnoreTagsPtrType) ToProviderIgnoreTagsPtrOutput() ProviderIgnoreTagsPtrOutput { + return i.ToProviderIgnoreTagsPtrOutputWithContext(context.Background()) +} + +func (i *providerIgnoreTagsPtrType) ToProviderIgnoreTagsPtrOutputWithContext(ctx context.Context) ProviderIgnoreTagsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderIgnoreTagsPtrOutput) +} + +// The configuration with resource tag settings to ignore across all resources handled by this provider (except any individual service tag resources such as `ec2.Tag`) for situations where external systems are managing certain resource tags. +type ProviderIgnoreTagsOutput struct{ *pulumi.OutputState } + +func (ProviderIgnoreTagsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderIgnoreTags)(nil)).Elem() +} + +func (o ProviderIgnoreTagsOutput) ToProviderIgnoreTagsOutput() ProviderIgnoreTagsOutput { + return o +} + +func (o ProviderIgnoreTagsOutput) ToProviderIgnoreTagsOutputWithContext(ctx context.Context) ProviderIgnoreTagsOutput { + return o +} + +func (o ProviderIgnoreTagsOutput) ToProviderIgnoreTagsPtrOutput() ProviderIgnoreTagsPtrOutput { + return o.ToProviderIgnoreTagsPtrOutputWithContext(context.Background()) +} + +func (o ProviderIgnoreTagsOutput) ToProviderIgnoreTagsPtrOutputWithContext(ctx context.Context) ProviderIgnoreTagsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ProviderIgnoreTags) *ProviderIgnoreTags { + return &v + }).(ProviderIgnoreTagsPtrOutput) +} + +// List of exact resource tag keys to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning the tag in any `tags` attributes and displaying any configuration difference for the tag value. If any resource configuration still has this tag key configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. +func (o ProviderIgnoreTagsOutput) KeyPrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v ProviderIgnoreTags) []string { return v.KeyPrefixes }).(pulumi.StringArrayOutput) +} + +// List of resource tag key prefixes to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning any tag key matching the prefixes in any `tags` attributes and displaying any configuration difference for those tag values. If any resource configuration still has a tag matching one of the prefixes configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. +func (o ProviderIgnoreTagsOutput) Keys() pulumi.StringArrayOutput { + return o.ApplyT(func(v ProviderIgnoreTags) []string { return v.Keys }).(pulumi.StringArrayOutput) +} + +type ProviderIgnoreTagsPtrOutput struct{ *pulumi.OutputState } + +func (ProviderIgnoreTagsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ProviderIgnoreTags)(nil)).Elem() +} + +func (o ProviderIgnoreTagsPtrOutput) ToProviderIgnoreTagsPtrOutput() ProviderIgnoreTagsPtrOutput { + return o +} + +func (o ProviderIgnoreTagsPtrOutput) ToProviderIgnoreTagsPtrOutputWithContext(ctx context.Context) ProviderIgnoreTagsPtrOutput { + return o +} + +func (o ProviderIgnoreTagsPtrOutput) Elem() ProviderIgnoreTagsOutput { + return o.ApplyT(func(v *ProviderIgnoreTags) ProviderIgnoreTags { + if v != nil { + return *v + } + var ret ProviderIgnoreTags + return ret + }).(ProviderIgnoreTagsOutput) +} + +// List of exact resource tag keys to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning the tag in any `tags` attributes and displaying any configuration difference for the tag value. If any resource configuration still has this tag key configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. +func (o ProviderIgnoreTagsPtrOutput) KeyPrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ProviderIgnoreTags) []string { + if v == nil { + return nil + } + return v.KeyPrefixes + }).(pulumi.StringArrayOutput) +} + +// List of resource tag key prefixes to ignore across all resources handled by this provider. This configuration prevents Pulumi from returning any tag key matching the prefixes in any `tags` attributes and displaying any configuration difference for those tag values. If any resource configuration still has a tag matching one of the prefixes configured in the `tags` argument, it will display a perpetual difference until the tag is removed from the argument or `ignoreChanges` is also used. +func (o ProviderIgnoreTagsPtrOutput) Keys() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ProviderIgnoreTags) []string { + if v == nil { + return nil + } + return v.Keys + }).(pulumi.StringArrayOutput) +} + +// A set of tags to apply to the resource. +type Tag struct { + // The key name of the tag + Key string `pulumi:"key"` + // The value of the tag + Value string `pulumi:"value"` +} + +// TagInput is an input type that accepts TagArgs and TagOutput values. +// You can construct a concrete instance of `TagInput` via: +// +// TagArgs{...} +type TagInput interface { + pulumi.Input + + ToTagOutput() TagOutput + ToTagOutputWithContext(context.Context) TagOutput +} + +// A set of tags to apply to the resource. +type TagArgs struct { + // The key name of the tag + Key pulumi.StringInput `pulumi:"key"` + // The value of the tag + Value pulumi.StringInput `pulumi:"value"` +} + +func (TagArgs) ElementType() reflect.Type { + return reflect.TypeOf((*Tag)(nil)).Elem() +} + +func (i TagArgs) ToTagOutput() TagOutput { + return i.ToTagOutputWithContext(context.Background()) +} + +func (i TagArgs) ToTagOutputWithContext(ctx context.Context) TagOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagOutput) +} + +// TagArrayInput is an input type that accepts TagArray and TagArrayOutput values. +// You can construct a concrete instance of `TagArrayInput` via: +// +// TagArray{ TagArgs{...} } +type TagArrayInput interface { + pulumi.Input + + ToTagArrayOutput() TagArrayOutput + ToTagArrayOutputWithContext(context.Context) TagArrayOutput +} + +type TagArray []TagInput + +func (TagArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]Tag)(nil)).Elem() +} + +func (i TagArray) ToTagArrayOutput() TagArrayOutput { + return i.ToTagArrayOutputWithContext(context.Background()) +} + +func (i TagArray) ToTagArrayOutputWithContext(ctx context.Context) TagArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagArrayOutput) +} + +// A set of tags to apply to the resource. +type TagOutput struct{ *pulumi.OutputState } + +func (TagOutput) ElementType() reflect.Type { + return reflect.TypeOf((*Tag)(nil)).Elem() +} + +func (o TagOutput) ToTagOutput() TagOutput { + return o +} + +func (o TagOutput) ToTagOutputWithContext(ctx context.Context) TagOutput { + return o +} + +// The key name of the tag +func (o TagOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v Tag) string { return v.Key }).(pulumi.StringOutput) +} + +// The value of the tag +func (o TagOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v Tag) string { return v.Value }).(pulumi.StringOutput) +} + +type TagArrayOutput struct{ *pulumi.OutputState } + +func (TagArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]Tag)(nil)).Elem() +} + +func (o TagArrayOutput) ToTagArrayOutput() TagArrayOutput { + return o +} + +func (o TagArrayOutput) ToTagArrayOutputWithContext(ctx context.Context) TagArrayOutput { + return o +} + +func (o TagArrayOutput) Index(i pulumi.IntInput) TagOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) Tag { + return vs[0].([]Tag)[vs[1].(int)] + }).(TagOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AutoNamingInput)(nil)).Elem(), AutoNamingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AutoNamingPtrInput)(nil)).Elem(), AutoNamingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CreateOnlyTagInput)(nil)).Elem(), CreateOnlyTagArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CreateOnlyTagArrayInput)(nil)).Elem(), CreateOnlyTagArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderAssumeRoleInput)(nil)).Elem(), ProviderAssumeRoleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderAssumeRolePtrInput)(nil)).Elem(), ProviderAssumeRoleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderAutoNamingInput)(nil)).Elem(), ProviderAutoNamingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderAutoNamingPtrInput)(nil)).Elem(), ProviderAutoNamingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderDefaultTagsInput)(nil)).Elem(), ProviderDefaultTagsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderDefaultTagsPtrInput)(nil)).Elem(), ProviderDefaultTagsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderEndpointInput)(nil)).Elem(), ProviderEndpointArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderEndpointArrayInput)(nil)).Elem(), ProviderEndpointArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderIgnoreTagsInput)(nil)).Elem(), ProviderIgnoreTagsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderIgnoreTagsPtrInput)(nil)).Elem(), ProviderIgnoreTagsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TagInput)(nil)).Elem(), TagArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TagArrayInput)(nil)).Elem(), TagArray{}) + pulumi.RegisterOutputType(AutoNamingOutput{}) + pulumi.RegisterOutputType(AutoNamingPtrOutput{}) + pulumi.RegisterOutputType(CreateOnlyTagOutput{}) + pulumi.RegisterOutputType(CreateOnlyTagArrayOutput{}) + pulumi.RegisterOutputType(ProviderAssumeRoleOutput{}) + pulumi.RegisterOutputType(ProviderAssumeRolePtrOutput{}) + pulumi.RegisterOutputType(ProviderAutoNamingOutput{}) + pulumi.RegisterOutputType(ProviderAutoNamingPtrOutput{}) + pulumi.RegisterOutputType(ProviderDefaultTagsOutput{}) + pulumi.RegisterOutputType(ProviderDefaultTagsPtrOutput{}) + pulumi.RegisterOutputType(ProviderEndpointOutput{}) + pulumi.RegisterOutputType(ProviderEndpointArrayOutput{}) + pulumi.RegisterOutputType(ProviderIgnoreTagsOutput{}) + pulumi.RegisterOutputType(ProviderIgnoreTagsPtrOutput{}) + pulumi.RegisterOutputType(TagOutput{}) + pulumi.RegisterOutputType(TagArrayOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getSchedule.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getSchedule.go new file mode 100644 index 000000000..b5bcbbcd7 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getSchedule.go @@ -0,0 +1,148 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package scheduler + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Definition of AWS::Scheduler::Schedule Resource Type +func LookupSchedule(ctx *pulumi.Context, args *LookupScheduleArgs, opts ...pulumi.InvokeOption) (*LookupScheduleResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupScheduleResult + err := ctx.Invoke("aws-native:scheduler:getSchedule", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type LookupScheduleArgs struct { + // The name of the schedule. + Name string `pulumi:"name"` +} + +type LookupScheduleResult struct { + // The Amazon Resource Name (ARN) of the schedule. + Arn *string `pulumi:"arn"` + // The description of the schedule. + Description *string `pulumi:"description"` + // The date, in UTC, before which the schedule can invoke its target. Depending on the schedule's recurrence expression, invocations might stop on, or before, the EndDate you specify. + EndDate *string `pulumi:"endDate"` + // Allows you to configure a time window during which EventBridge Scheduler invokes the schedule. + FlexibleTimeWindow *ScheduleFlexibleTimeWindow `pulumi:"flexibleTimeWindow"` + // The name of the schedule group to associate with this schedule. If you omit this, the default schedule group is used. + GroupName *string `pulumi:"groupName"` + // The ARN for a KMS Key that will be used to encrypt customer data. + KmsKeyArn *string `pulumi:"kmsKeyArn"` + // The scheduling expression. + ScheduleExpression *string `pulumi:"scheduleExpression"` + // The timezone in which the scheduling expression is evaluated. + ScheduleExpressionTimezone *string `pulumi:"scheduleExpressionTimezone"` + // The date, in UTC, after which the schedule can begin invoking its target. Depending on the schedule's recurrence expression, invocations might occur on, or after, the StartDate you specify. + StartDate *string `pulumi:"startDate"` + // Specifies whether the schedule is enabled or disabled. + // + // *Allowed Values* : `ENABLED` | `DISABLED` + State *ScheduleStateEnum `pulumi:"state"` + // The schedule's target details. + Target *ScheduleTarget `pulumi:"target"` +} + +func LookupScheduleOutput(ctx *pulumi.Context, args LookupScheduleOutputArgs, opts ...pulumi.InvokeOption) LookupScheduleResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupScheduleResultOutput, error) { + args := v.(LookupScheduleArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:scheduler:getSchedule", args, LookupScheduleResultOutput{}, options).(LookupScheduleResultOutput), nil + }).(LookupScheduleResultOutput) +} + +type LookupScheduleOutputArgs struct { + // The name of the schedule. + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupScheduleOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupScheduleArgs)(nil)).Elem() +} + +type LookupScheduleResultOutput struct{ *pulumi.OutputState } + +func (LookupScheduleResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupScheduleResult)(nil)).Elem() +} + +func (o LookupScheduleResultOutput) ToLookupScheduleResultOutput() LookupScheduleResultOutput { + return o +} + +func (o LookupScheduleResultOutput) ToLookupScheduleResultOutputWithContext(ctx context.Context) LookupScheduleResultOutput { + return o +} + +// The Amazon Resource Name (ARN) of the schedule. +func (o LookupScheduleResultOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.Arn }).(pulumi.StringPtrOutput) +} + +// The description of the schedule. +func (o LookupScheduleResultOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// The date, in UTC, before which the schedule can invoke its target. Depending on the schedule's recurrence expression, invocations might stop on, or before, the EndDate you specify. +func (o LookupScheduleResultOutput) EndDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.EndDate }).(pulumi.StringPtrOutput) +} + +// Allows you to configure a time window during which EventBridge Scheduler invokes the schedule. +func (o LookupScheduleResultOutput) FlexibleTimeWindow() ScheduleFlexibleTimeWindowPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *ScheduleFlexibleTimeWindow { return v.FlexibleTimeWindow }).(ScheduleFlexibleTimeWindowPtrOutput) +} + +// The name of the schedule group to associate with this schedule. If you omit this, the default schedule group is used. +func (o LookupScheduleResultOutput) GroupName() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.GroupName }).(pulumi.StringPtrOutput) +} + +// The ARN for a KMS Key that will be used to encrypt customer data. +func (o LookupScheduleResultOutput) KmsKeyArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.KmsKeyArn }).(pulumi.StringPtrOutput) +} + +// The scheduling expression. +func (o LookupScheduleResultOutput) ScheduleExpression() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.ScheduleExpression }).(pulumi.StringPtrOutput) +} + +// The timezone in which the scheduling expression is evaluated. +func (o LookupScheduleResultOutput) ScheduleExpressionTimezone() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.ScheduleExpressionTimezone }).(pulumi.StringPtrOutput) +} + +// The date, in UTC, after which the schedule can begin invoking its target. Depending on the schedule's recurrence expression, invocations might occur on, or after, the StartDate you specify. +func (o LookupScheduleResultOutput) StartDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *string { return v.StartDate }).(pulumi.StringPtrOutput) +} + +// Specifies whether the schedule is enabled or disabled. +// +// *Allowed Values* : `ENABLED` | `DISABLED` +func (o LookupScheduleResultOutput) State() ScheduleStateEnumPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *ScheduleStateEnum { return v.State }).(ScheduleStateEnumPtrOutput) +} + +// The schedule's target details. +func (o LookupScheduleResultOutput) Target() ScheduleTargetPtrOutput { + return o.ApplyT(func(v LookupScheduleResult) *ScheduleTarget { return v.Target }).(ScheduleTargetPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupScheduleResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getScheduleGroup.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getScheduleGroup.go new file mode 100644 index 000000000..7639c9d0c --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/getScheduleGroup.go @@ -0,0 +1,107 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package scheduler + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws" + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Definition of AWS::Scheduler::ScheduleGroup Resource Type +func LookupScheduleGroup(ctx *pulumi.Context, args *LookupScheduleGroupArgs, opts ...pulumi.InvokeOption) (*LookupScheduleGroupResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupScheduleGroupResult + err := ctx.Invoke("aws-native:scheduler:getScheduleGroup", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +type LookupScheduleGroupArgs struct { + // The name of the schedule group. + Name string `pulumi:"name"` +} + +type LookupScheduleGroupResult struct { + // The Amazon Resource Name (ARN) of the schedule group. + Arn *string `pulumi:"arn"` + // The time at which the schedule group was created. + CreationDate *string `pulumi:"creationDate"` + // The time at which the schedule group was last modified. + LastModificationDate *string `pulumi:"lastModificationDate"` + // Specifies the state of the schedule group. + // + // *Allowed Values* : `ACTIVE` | `DELETING` + State *ScheduleGroupStateEnum `pulumi:"state"` + // The list of tags to associate with the schedule group. + Tags []aws.Tag `pulumi:"tags"` +} + +func LookupScheduleGroupOutput(ctx *pulumi.Context, args LookupScheduleGroupOutputArgs, opts ...pulumi.InvokeOption) LookupScheduleGroupResultOutput { + return pulumi.ToOutputWithContext(ctx.Context(), args). + ApplyT(func(v interface{}) (LookupScheduleGroupResultOutput, error) { + args := v.(LookupScheduleGroupArgs) + options := pulumi.InvokeOutputOptions{InvokeOptions: internal.PkgInvokeDefaultOpts(opts)} + return ctx.InvokeOutput("aws-native:scheduler:getScheduleGroup", args, LookupScheduleGroupResultOutput{}, options).(LookupScheduleGroupResultOutput), nil + }).(LookupScheduleGroupResultOutput) +} + +type LookupScheduleGroupOutputArgs struct { + // The name of the schedule group. + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupScheduleGroupOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupScheduleGroupArgs)(nil)).Elem() +} + +type LookupScheduleGroupResultOutput struct{ *pulumi.OutputState } + +func (LookupScheduleGroupResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupScheduleGroupResult)(nil)).Elem() +} + +func (o LookupScheduleGroupResultOutput) ToLookupScheduleGroupResultOutput() LookupScheduleGroupResultOutput { + return o +} + +func (o LookupScheduleGroupResultOutput) ToLookupScheduleGroupResultOutputWithContext(ctx context.Context) LookupScheduleGroupResultOutput { + return o +} + +// The Amazon Resource Name (ARN) of the schedule group. +func (o LookupScheduleGroupResultOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleGroupResult) *string { return v.Arn }).(pulumi.StringPtrOutput) +} + +// The time at which the schedule group was created. +func (o LookupScheduleGroupResultOutput) CreationDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleGroupResult) *string { return v.CreationDate }).(pulumi.StringPtrOutput) +} + +// The time at which the schedule group was last modified. +func (o LookupScheduleGroupResultOutput) LastModificationDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupScheduleGroupResult) *string { return v.LastModificationDate }).(pulumi.StringPtrOutput) +} + +// Specifies the state of the schedule group. +// +// *Allowed Values* : `ACTIVE` | `DELETING` +func (o LookupScheduleGroupResultOutput) State() ScheduleGroupStateEnumPtrOutput { + return o.ApplyT(func(v LookupScheduleGroupResult) *ScheduleGroupStateEnum { return v.State }).(ScheduleGroupStateEnumPtrOutput) +} + +// The list of tags to associate with the schedule group. +func (o LookupScheduleGroupResultOutput) Tags() aws.TagArrayOutput { + return o.ApplyT(func(v LookupScheduleGroupResult) []aws.Tag { return v.Tags }).(aws.TagArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupScheduleGroupResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/init.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/init.go new file mode 100644 index 000000000..2fcda66d7 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/init.go @@ -0,0 +1,46 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package scheduler + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws-native:scheduler:Schedule": + r = &Schedule{} + case "aws-native:scheduler:ScheduleGroup": + r = &ScheduleGroup{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws-native", + "scheduler", + &module{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiEnums.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiEnums.go new file mode 100644 index 000000000..c4017b382 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiEnums.go @@ -0,0 +1,1299 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package scheduler + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Specifies whether the task's elastic network interface receives a public IP address. You can specify ENABLED only when LaunchType in EcsParameters is set to FARGATE. +type ScheduleAssignPublicIp string + +const ( + ScheduleAssignPublicIpEnabled = ScheduleAssignPublicIp("ENABLED") + ScheduleAssignPublicIpDisabled = ScheduleAssignPublicIp("DISABLED") +) + +func (ScheduleAssignPublicIp) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleAssignPublicIp)(nil)).Elem() +} + +func (e ScheduleAssignPublicIp) ToScheduleAssignPublicIpOutput() ScheduleAssignPublicIpOutput { + return pulumi.ToOutput(e).(ScheduleAssignPublicIpOutput) +} + +func (e ScheduleAssignPublicIp) ToScheduleAssignPublicIpOutputWithContext(ctx context.Context) ScheduleAssignPublicIpOutput { + return pulumi.ToOutputWithContext(ctx, e).(ScheduleAssignPublicIpOutput) +} + +func (e ScheduleAssignPublicIp) ToScheduleAssignPublicIpPtrOutput() ScheduleAssignPublicIpPtrOutput { + return e.ToScheduleAssignPublicIpPtrOutputWithContext(context.Background()) +} + +func (e ScheduleAssignPublicIp) ToScheduleAssignPublicIpPtrOutputWithContext(ctx context.Context) ScheduleAssignPublicIpPtrOutput { + return ScheduleAssignPublicIp(e).ToScheduleAssignPublicIpOutputWithContext(ctx).ToScheduleAssignPublicIpPtrOutputWithContext(ctx) +} + +func (e ScheduleAssignPublicIp) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleAssignPublicIp) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleAssignPublicIp) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e ScheduleAssignPublicIp) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type ScheduleAssignPublicIpOutput struct{ *pulumi.OutputState } + +func (ScheduleAssignPublicIpOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleAssignPublicIp)(nil)).Elem() +} + +func (o ScheduleAssignPublicIpOutput) ToScheduleAssignPublicIpOutput() ScheduleAssignPublicIpOutput { + return o +} + +func (o ScheduleAssignPublicIpOutput) ToScheduleAssignPublicIpOutputWithContext(ctx context.Context) ScheduleAssignPublicIpOutput { + return o +} + +func (o ScheduleAssignPublicIpOutput) ToScheduleAssignPublicIpPtrOutput() ScheduleAssignPublicIpPtrOutput { + return o.ToScheduleAssignPublicIpPtrOutputWithContext(context.Background()) +} + +func (o ScheduleAssignPublicIpOutput) ToScheduleAssignPublicIpPtrOutputWithContext(ctx context.Context) ScheduleAssignPublicIpPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleAssignPublicIp) *ScheduleAssignPublicIp { + return &v + }).(ScheduleAssignPublicIpPtrOutput) +} + +func (o ScheduleAssignPublicIpOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o ScheduleAssignPublicIpOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleAssignPublicIp) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o ScheduleAssignPublicIpOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleAssignPublicIpOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleAssignPublicIp) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type ScheduleAssignPublicIpPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleAssignPublicIpPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleAssignPublicIp)(nil)).Elem() +} + +func (o ScheduleAssignPublicIpPtrOutput) ToScheduleAssignPublicIpPtrOutput() ScheduleAssignPublicIpPtrOutput { + return o +} + +func (o ScheduleAssignPublicIpPtrOutput) ToScheduleAssignPublicIpPtrOutputWithContext(ctx context.Context) ScheduleAssignPublicIpPtrOutput { + return o +} + +func (o ScheduleAssignPublicIpPtrOutput) Elem() ScheduleAssignPublicIpOutput { + return o.ApplyT(func(v *ScheduleAssignPublicIp) ScheduleAssignPublicIp { + if v != nil { + return *v + } + var ret ScheduleAssignPublicIp + return ret + }).(ScheduleAssignPublicIpOutput) +} + +func (o ScheduleAssignPublicIpPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleAssignPublicIpPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *ScheduleAssignPublicIp) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// ScheduleAssignPublicIpInput is an input type that accepts values of the ScheduleAssignPublicIp enum +// A concrete instance of `ScheduleAssignPublicIpInput` can be one of the following: +// +// ScheduleAssignPublicIpEnabled +// ScheduleAssignPublicIpDisabled +type ScheduleAssignPublicIpInput interface { + pulumi.Input + + ToScheduleAssignPublicIpOutput() ScheduleAssignPublicIpOutput + ToScheduleAssignPublicIpOutputWithContext(context.Context) ScheduleAssignPublicIpOutput +} + +var scheduleAssignPublicIpPtrType = reflect.TypeOf((**ScheduleAssignPublicIp)(nil)).Elem() + +type ScheduleAssignPublicIpPtrInput interface { + pulumi.Input + + ToScheduleAssignPublicIpPtrOutput() ScheduleAssignPublicIpPtrOutput + ToScheduleAssignPublicIpPtrOutputWithContext(context.Context) ScheduleAssignPublicIpPtrOutput +} + +type scheduleAssignPublicIpPtr string + +func ScheduleAssignPublicIpPtr(v string) ScheduleAssignPublicIpPtrInput { + return (*scheduleAssignPublicIpPtr)(&v) +} + +func (*scheduleAssignPublicIpPtr) ElementType() reflect.Type { + return scheduleAssignPublicIpPtrType +} + +func (in *scheduleAssignPublicIpPtr) ToScheduleAssignPublicIpPtrOutput() ScheduleAssignPublicIpPtrOutput { + return pulumi.ToOutput(in).(ScheduleAssignPublicIpPtrOutput) +} + +func (in *scheduleAssignPublicIpPtr) ToScheduleAssignPublicIpPtrOutputWithContext(ctx context.Context) ScheduleAssignPublicIpPtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(ScheduleAssignPublicIpPtrOutput) +} + +// Determines whether the schedule is executed within a flexible time window. +type ScheduleFlexibleTimeWindowMode string + +const ( + ScheduleFlexibleTimeWindowModeOff = ScheduleFlexibleTimeWindowMode("OFF") + ScheduleFlexibleTimeWindowModeFlexible = ScheduleFlexibleTimeWindowMode("FLEXIBLE") +) + +func (ScheduleFlexibleTimeWindowMode) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleFlexibleTimeWindowMode)(nil)).Elem() +} + +func (e ScheduleFlexibleTimeWindowMode) ToScheduleFlexibleTimeWindowModeOutput() ScheduleFlexibleTimeWindowModeOutput { + return pulumi.ToOutput(e).(ScheduleFlexibleTimeWindowModeOutput) +} + +func (e ScheduleFlexibleTimeWindowMode) ToScheduleFlexibleTimeWindowModeOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowModeOutput { + return pulumi.ToOutputWithContext(ctx, e).(ScheduleFlexibleTimeWindowModeOutput) +} + +func (e ScheduleFlexibleTimeWindowMode) ToScheduleFlexibleTimeWindowModePtrOutput() ScheduleFlexibleTimeWindowModePtrOutput { + return e.ToScheduleFlexibleTimeWindowModePtrOutputWithContext(context.Background()) +} + +func (e ScheduleFlexibleTimeWindowMode) ToScheduleFlexibleTimeWindowModePtrOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowModePtrOutput { + return ScheduleFlexibleTimeWindowMode(e).ToScheduleFlexibleTimeWindowModeOutputWithContext(ctx).ToScheduleFlexibleTimeWindowModePtrOutputWithContext(ctx) +} + +func (e ScheduleFlexibleTimeWindowMode) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleFlexibleTimeWindowMode) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleFlexibleTimeWindowMode) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e ScheduleFlexibleTimeWindowMode) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type ScheduleFlexibleTimeWindowModeOutput struct{ *pulumi.OutputState } + +func (ScheduleFlexibleTimeWindowModeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleFlexibleTimeWindowMode)(nil)).Elem() +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToScheduleFlexibleTimeWindowModeOutput() ScheduleFlexibleTimeWindowModeOutput { + return o +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToScheduleFlexibleTimeWindowModeOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowModeOutput { + return o +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToScheduleFlexibleTimeWindowModePtrOutput() ScheduleFlexibleTimeWindowModePtrOutput { + return o.ToScheduleFlexibleTimeWindowModePtrOutputWithContext(context.Background()) +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToScheduleFlexibleTimeWindowModePtrOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowModePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleFlexibleTimeWindowMode) *ScheduleFlexibleTimeWindowMode { + return &v + }).(ScheduleFlexibleTimeWindowModePtrOutput) +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleFlexibleTimeWindowMode) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleFlexibleTimeWindowModeOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleFlexibleTimeWindowMode) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type ScheduleFlexibleTimeWindowModePtrOutput struct{ *pulumi.OutputState } + +func (ScheduleFlexibleTimeWindowModePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleFlexibleTimeWindowMode)(nil)).Elem() +} + +func (o ScheduleFlexibleTimeWindowModePtrOutput) ToScheduleFlexibleTimeWindowModePtrOutput() ScheduleFlexibleTimeWindowModePtrOutput { + return o +} + +func (o ScheduleFlexibleTimeWindowModePtrOutput) ToScheduleFlexibleTimeWindowModePtrOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowModePtrOutput { + return o +} + +func (o ScheduleFlexibleTimeWindowModePtrOutput) Elem() ScheduleFlexibleTimeWindowModeOutput { + return o.ApplyT(func(v *ScheduleFlexibleTimeWindowMode) ScheduleFlexibleTimeWindowMode { + if v != nil { + return *v + } + var ret ScheduleFlexibleTimeWindowMode + return ret + }).(ScheduleFlexibleTimeWindowModeOutput) +} + +func (o ScheduleFlexibleTimeWindowModePtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleFlexibleTimeWindowModePtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *ScheduleFlexibleTimeWindowMode) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// ScheduleFlexibleTimeWindowModeInput is an input type that accepts values of the ScheduleFlexibleTimeWindowMode enum +// A concrete instance of `ScheduleFlexibleTimeWindowModeInput` can be one of the following: +// +// ScheduleFlexibleTimeWindowModeOff +// ScheduleFlexibleTimeWindowModeFlexible +type ScheduleFlexibleTimeWindowModeInput interface { + pulumi.Input + + ToScheduleFlexibleTimeWindowModeOutput() ScheduleFlexibleTimeWindowModeOutput + ToScheduleFlexibleTimeWindowModeOutputWithContext(context.Context) ScheduleFlexibleTimeWindowModeOutput +} + +var scheduleFlexibleTimeWindowModePtrType = reflect.TypeOf((**ScheduleFlexibleTimeWindowMode)(nil)).Elem() + +type ScheduleFlexibleTimeWindowModePtrInput interface { + pulumi.Input + + ToScheduleFlexibleTimeWindowModePtrOutput() ScheduleFlexibleTimeWindowModePtrOutput + ToScheduleFlexibleTimeWindowModePtrOutputWithContext(context.Context) ScheduleFlexibleTimeWindowModePtrOutput +} + +type scheduleFlexibleTimeWindowModePtr string + +func ScheduleFlexibleTimeWindowModePtr(v string) ScheduleFlexibleTimeWindowModePtrInput { + return (*scheduleFlexibleTimeWindowModePtr)(&v) +} + +func (*scheduleFlexibleTimeWindowModePtr) ElementType() reflect.Type { + return scheduleFlexibleTimeWindowModePtrType +} + +func (in *scheduleFlexibleTimeWindowModePtr) ToScheduleFlexibleTimeWindowModePtrOutput() ScheduleFlexibleTimeWindowModePtrOutput { + return pulumi.ToOutput(in).(ScheduleFlexibleTimeWindowModePtrOutput) +} + +func (in *scheduleFlexibleTimeWindowModePtr) ToScheduleFlexibleTimeWindowModePtrOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowModePtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(ScheduleFlexibleTimeWindowModePtrOutput) +} + +// Specifies the state of the schedule group. +type ScheduleGroupStateEnum string + +const ( + ScheduleGroupStateEnumActive = ScheduleGroupStateEnum("ACTIVE") + ScheduleGroupStateEnumDeleting = ScheduleGroupStateEnum("DELETING") +) + +type ScheduleGroupStateEnumOutput struct{ *pulumi.OutputState } + +func (ScheduleGroupStateEnumOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleGroupStateEnum)(nil)).Elem() +} + +func (o ScheduleGroupStateEnumOutput) ToScheduleGroupStateEnumOutput() ScheduleGroupStateEnumOutput { + return o +} + +func (o ScheduleGroupStateEnumOutput) ToScheduleGroupStateEnumOutputWithContext(ctx context.Context) ScheduleGroupStateEnumOutput { + return o +} + +func (o ScheduleGroupStateEnumOutput) ToScheduleGroupStateEnumPtrOutput() ScheduleGroupStateEnumPtrOutput { + return o.ToScheduleGroupStateEnumPtrOutputWithContext(context.Background()) +} + +func (o ScheduleGroupStateEnumOutput) ToScheduleGroupStateEnumPtrOutputWithContext(ctx context.Context) ScheduleGroupStateEnumPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleGroupStateEnum) *ScheduleGroupStateEnum { + return &v + }).(ScheduleGroupStateEnumPtrOutput) +} + +func (o ScheduleGroupStateEnumOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o ScheduleGroupStateEnumOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleGroupStateEnum) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o ScheduleGroupStateEnumOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleGroupStateEnumOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleGroupStateEnum) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type ScheduleGroupStateEnumPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleGroupStateEnumPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleGroupStateEnum)(nil)).Elem() +} + +func (o ScheduleGroupStateEnumPtrOutput) ToScheduleGroupStateEnumPtrOutput() ScheduleGroupStateEnumPtrOutput { + return o +} + +func (o ScheduleGroupStateEnumPtrOutput) ToScheduleGroupStateEnumPtrOutputWithContext(ctx context.Context) ScheduleGroupStateEnumPtrOutput { + return o +} + +func (o ScheduleGroupStateEnumPtrOutput) Elem() ScheduleGroupStateEnumOutput { + return o.ApplyT(func(v *ScheduleGroupStateEnum) ScheduleGroupStateEnum { + if v != nil { + return *v + } + var ret ScheduleGroupStateEnum + return ret + }).(ScheduleGroupStateEnumOutput) +} + +func (o ScheduleGroupStateEnumPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleGroupStateEnumPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *ScheduleGroupStateEnum) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. The FARGATE value is supported only in the Regions where AWS Fargate with Amazon ECS is supported. For more information, see AWS Fargate on Amazon ECS in the Amazon Elastic Container Service Developer Guide. +type ScheduleLaunchType string + +const ( + ScheduleLaunchTypeEc2 = ScheduleLaunchType("EC2") + ScheduleLaunchTypeFargate = ScheduleLaunchType("FARGATE") + ScheduleLaunchTypeExternal = ScheduleLaunchType("EXTERNAL") +) + +func (ScheduleLaunchType) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleLaunchType)(nil)).Elem() +} + +func (e ScheduleLaunchType) ToScheduleLaunchTypeOutput() ScheduleLaunchTypeOutput { + return pulumi.ToOutput(e).(ScheduleLaunchTypeOutput) +} + +func (e ScheduleLaunchType) ToScheduleLaunchTypeOutputWithContext(ctx context.Context) ScheduleLaunchTypeOutput { + return pulumi.ToOutputWithContext(ctx, e).(ScheduleLaunchTypeOutput) +} + +func (e ScheduleLaunchType) ToScheduleLaunchTypePtrOutput() ScheduleLaunchTypePtrOutput { + return e.ToScheduleLaunchTypePtrOutputWithContext(context.Background()) +} + +func (e ScheduleLaunchType) ToScheduleLaunchTypePtrOutputWithContext(ctx context.Context) ScheduleLaunchTypePtrOutput { + return ScheduleLaunchType(e).ToScheduleLaunchTypeOutputWithContext(ctx).ToScheduleLaunchTypePtrOutputWithContext(ctx) +} + +func (e ScheduleLaunchType) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleLaunchType) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleLaunchType) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e ScheduleLaunchType) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type ScheduleLaunchTypeOutput struct{ *pulumi.OutputState } + +func (ScheduleLaunchTypeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleLaunchType)(nil)).Elem() +} + +func (o ScheduleLaunchTypeOutput) ToScheduleLaunchTypeOutput() ScheduleLaunchTypeOutput { + return o +} + +func (o ScheduleLaunchTypeOutput) ToScheduleLaunchTypeOutputWithContext(ctx context.Context) ScheduleLaunchTypeOutput { + return o +} + +func (o ScheduleLaunchTypeOutput) ToScheduleLaunchTypePtrOutput() ScheduleLaunchTypePtrOutput { + return o.ToScheduleLaunchTypePtrOutputWithContext(context.Background()) +} + +func (o ScheduleLaunchTypeOutput) ToScheduleLaunchTypePtrOutputWithContext(ctx context.Context) ScheduleLaunchTypePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleLaunchType) *ScheduleLaunchType { + return &v + }).(ScheduleLaunchTypePtrOutput) +} + +func (o ScheduleLaunchTypeOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o ScheduleLaunchTypeOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleLaunchType) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o ScheduleLaunchTypeOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleLaunchTypeOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleLaunchType) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type ScheduleLaunchTypePtrOutput struct{ *pulumi.OutputState } + +func (ScheduleLaunchTypePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleLaunchType)(nil)).Elem() +} + +func (o ScheduleLaunchTypePtrOutput) ToScheduleLaunchTypePtrOutput() ScheduleLaunchTypePtrOutput { + return o +} + +func (o ScheduleLaunchTypePtrOutput) ToScheduleLaunchTypePtrOutputWithContext(ctx context.Context) ScheduleLaunchTypePtrOutput { + return o +} + +func (o ScheduleLaunchTypePtrOutput) Elem() ScheduleLaunchTypeOutput { + return o.ApplyT(func(v *ScheduleLaunchType) ScheduleLaunchType { + if v != nil { + return *v + } + var ret ScheduleLaunchType + return ret + }).(ScheduleLaunchTypeOutput) +} + +func (o ScheduleLaunchTypePtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleLaunchTypePtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *ScheduleLaunchType) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// ScheduleLaunchTypeInput is an input type that accepts values of the ScheduleLaunchType enum +// A concrete instance of `ScheduleLaunchTypeInput` can be one of the following: +// +// ScheduleLaunchTypeEc2 +// ScheduleLaunchTypeFargate +// ScheduleLaunchTypeExternal +type ScheduleLaunchTypeInput interface { + pulumi.Input + + ToScheduleLaunchTypeOutput() ScheduleLaunchTypeOutput + ToScheduleLaunchTypeOutputWithContext(context.Context) ScheduleLaunchTypeOutput +} + +var scheduleLaunchTypePtrType = reflect.TypeOf((**ScheduleLaunchType)(nil)).Elem() + +type ScheduleLaunchTypePtrInput interface { + pulumi.Input + + ToScheduleLaunchTypePtrOutput() ScheduleLaunchTypePtrOutput + ToScheduleLaunchTypePtrOutputWithContext(context.Context) ScheduleLaunchTypePtrOutput +} + +type scheduleLaunchTypePtr string + +func ScheduleLaunchTypePtr(v string) ScheduleLaunchTypePtrInput { + return (*scheduleLaunchTypePtr)(&v) +} + +func (*scheduleLaunchTypePtr) ElementType() reflect.Type { + return scheduleLaunchTypePtrType +} + +func (in *scheduleLaunchTypePtr) ToScheduleLaunchTypePtrOutput() ScheduleLaunchTypePtrOutput { + return pulumi.ToOutput(in).(ScheduleLaunchTypePtrOutput) +} + +func (in *scheduleLaunchTypePtr) ToScheduleLaunchTypePtrOutputWithContext(ctx context.Context) ScheduleLaunchTypePtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(ScheduleLaunchTypePtrOutput) +} + +// The type of constraint. Use distinctInstance to ensure that each task in a particular group is running on a different container instance. Use memberOf to restrict the selection to a group of valid candidates. +type SchedulePlacementConstraintType string + +const ( + SchedulePlacementConstraintTypeDistinctInstance = SchedulePlacementConstraintType("distinctInstance") + SchedulePlacementConstraintTypeMemberOf = SchedulePlacementConstraintType("memberOf") +) + +func (SchedulePlacementConstraintType) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementConstraintType)(nil)).Elem() +} + +func (e SchedulePlacementConstraintType) ToSchedulePlacementConstraintTypeOutput() SchedulePlacementConstraintTypeOutput { + return pulumi.ToOutput(e).(SchedulePlacementConstraintTypeOutput) +} + +func (e SchedulePlacementConstraintType) ToSchedulePlacementConstraintTypeOutputWithContext(ctx context.Context) SchedulePlacementConstraintTypeOutput { + return pulumi.ToOutputWithContext(ctx, e).(SchedulePlacementConstraintTypeOutput) +} + +func (e SchedulePlacementConstraintType) ToSchedulePlacementConstraintTypePtrOutput() SchedulePlacementConstraintTypePtrOutput { + return e.ToSchedulePlacementConstraintTypePtrOutputWithContext(context.Background()) +} + +func (e SchedulePlacementConstraintType) ToSchedulePlacementConstraintTypePtrOutputWithContext(ctx context.Context) SchedulePlacementConstraintTypePtrOutput { + return SchedulePlacementConstraintType(e).ToSchedulePlacementConstraintTypeOutputWithContext(ctx).ToSchedulePlacementConstraintTypePtrOutputWithContext(ctx) +} + +func (e SchedulePlacementConstraintType) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e SchedulePlacementConstraintType) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e SchedulePlacementConstraintType) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e SchedulePlacementConstraintType) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type SchedulePlacementConstraintTypeOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementConstraintTypeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementConstraintType)(nil)).Elem() +} + +func (o SchedulePlacementConstraintTypeOutput) ToSchedulePlacementConstraintTypeOutput() SchedulePlacementConstraintTypeOutput { + return o +} + +func (o SchedulePlacementConstraintTypeOutput) ToSchedulePlacementConstraintTypeOutputWithContext(ctx context.Context) SchedulePlacementConstraintTypeOutput { + return o +} + +func (o SchedulePlacementConstraintTypeOutput) ToSchedulePlacementConstraintTypePtrOutput() SchedulePlacementConstraintTypePtrOutput { + return o.ToSchedulePlacementConstraintTypePtrOutputWithContext(context.Background()) +} + +func (o SchedulePlacementConstraintTypeOutput) ToSchedulePlacementConstraintTypePtrOutputWithContext(ctx context.Context) SchedulePlacementConstraintTypePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SchedulePlacementConstraintType) *SchedulePlacementConstraintType { + return &v + }).(SchedulePlacementConstraintTypePtrOutput) +} + +func (o SchedulePlacementConstraintTypeOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o SchedulePlacementConstraintTypeOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e SchedulePlacementConstraintType) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o SchedulePlacementConstraintTypeOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o SchedulePlacementConstraintTypeOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e SchedulePlacementConstraintType) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type SchedulePlacementConstraintTypePtrOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementConstraintTypePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SchedulePlacementConstraintType)(nil)).Elem() +} + +func (o SchedulePlacementConstraintTypePtrOutput) ToSchedulePlacementConstraintTypePtrOutput() SchedulePlacementConstraintTypePtrOutput { + return o +} + +func (o SchedulePlacementConstraintTypePtrOutput) ToSchedulePlacementConstraintTypePtrOutputWithContext(ctx context.Context) SchedulePlacementConstraintTypePtrOutput { + return o +} + +func (o SchedulePlacementConstraintTypePtrOutput) Elem() SchedulePlacementConstraintTypeOutput { + return o.ApplyT(func(v *SchedulePlacementConstraintType) SchedulePlacementConstraintType { + if v != nil { + return *v + } + var ret SchedulePlacementConstraintType + return ret + }).(SchedulePlacementConstraintTypeOutput) +} + +func (o SchedulePlacementConstraintTypePtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o SchedulePlacementConstraintTypePtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *SchedulePlacementConstraintType) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// SchedulePlacementConstraintTypeInput is an input type that accepts values of the SchedulePlacementConstraintType enum +// A concrete instance of `SchedulePlacementConstraintTypeInput` can be one of the following: +// +// SchedulePlacementConstraintTypeDistinctInstance +// SchedulePlacementConstraintTypeMemberOf +type SchedulePlacementConstraintTypeInput interface { + pulumi.Input + + ToSchedulePlacementConstraintTypeOutput() SchedulePlacementConstraintTypeOutput + ToSchedulePlacementConstraintTypeOutputWithContext(context.Context) SchedulePlacementConstraintTypeOutput +} + +var schedulePlacementConstraintTypePtrType = reflect.TypeOf((**SchedulePlacementConstraintType)(nil)).Elem() + +type SchedulePlacementConstraintTypePtrInput interface { + pulumi.Input + + ToSchedulePlacementConstraintTypePtrOutput() SchedulePlacementConstraintTypePtrOutput + ToSchedulePlacementConstraintTypePtrOutputWithContext(context.Context) SchedulePlacementConstraintTypePtrOutput +} + +type schedulePlacementConstraintTypePtr string + +func SchedulePlacementConstraintTypePtr(v string) SchedulePlacementConstraintTypePtrInput { + return (*schedulePlacementConstraintTypePtr)(&v) +} + +func (*schedulePlacementConstraintTypePtr) ElementType() reflect.Type { + return schedulePlacementConstraintTypePtrType +} + +func (in *schedulePlacementConstraintTypePtr) ToSchedulePlacementConstraintTypePtrOutput() SchedulePlacementConstraintTypePtrOutput { + return pulumi.ToOutput(in).(SchedulePlacementConstraintTypePtrOutput) +} + +func (in *schedulePlacementConstraintTypePtr) ToSchedulePlacementConstraintTypePtrOutputWithContext(ctx context.Context) SchedulePlacementConstraintTypePtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(SchedulePlacementConstraintTypePtrOutput) +} + +// The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task). +type SchedulePlacementStrategyType string + +const ( + SchedulePlacementStrategyTypeRandom = SchedulePlacementStrategyType("random") + SchedulePlacementStrategyTypeSpread = SchedulePlacementStrategyType("spread") + SchedulePlacementStrategyTypeBinpack = SchedulePlacementStrategyType("binpack") +) + +func (SchedulePlacementStrategyType) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementStrategyType)(nil)).Elem() +} + +func (e SchedulePlacementStrategyType) ToSchedulePlacementStrategyTypeOutput() SchedulePlacementStrategyTypeOutput { + return pulumi.ToOutput(e).(SchedulePlacementStrategyTypeOutput) +} + +func (e SchedulePlacementStrategyType) ToSchedulePlacementStrategyTypeOutputWithContext(ctx context.Context) SchedulePlacementStrategyTypeOutput { + return pulumi.ToOutputWithContext(ctx, e).(SchedulePlacementStrategyTypeOutput) +} + +func (e SchedulePlacementStrategyType) ToSchedulePlacementStrategyTypePtrOutput() SchedulePlacementStrategyTypePtrOutput { + return e.ToSchedulePlacementStrategyTypePtrOutputWithContext(context.Background()) +} + +func (e SchedulePlacementStrategyType) ToSchedulePlacementStrategyTypePtrOutputWithContext(ctx context.Context) SchedulePlacementStrategyTypePtrOutput { + return SchedulePlacementStrategyType(e).ToSchedulePlacementStrategyTypeOutputWithContext(ctx).ToSchedulePlacementStrategyTypePtrOutputWithContext(ctx) +} + +func (e SchedulePlacementStrategyType) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e SchedulePlacementStrategyType) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e SchedulePlacementStrategyType) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e SchedulePlacementStrategyType) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type SchedulePlacementStrategyTypeOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementStrategyTypeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementStrategyType)(nil)).Elem() +} + +func (o SchedulePlacementStrategyTypeOutput) ToSchedulePlacementStrategyTypeOutput() SchedulePlacementStrategyTypeOutput { + return o +} + +func (o SchedulePlacementStrategyTypeOutput) ToSchedulePlacementStrategyTypeOutputWithContext(ctx context.Context) SchedulePlacementStrategyTypeOutput { + return o +} + +func (o SchedulePlacementStrategyTypeOutput) ToSchedulePlacementStrategyTypePtrOutput() SchedulePlacementStrategyTypePtrOutput { + return o.ToSchedulePlacementStrategyTypePtrOutputWithContext(context.Background()) +} + +func (o SchedulePlacementStrategyTypeOutput) ToSchedulePlacementStrategyTypePtrOutputWithContext(ctx context.Context) SchedulePlacementStrategyTypePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SchedulePlacementStrategyType) *SchedulePlacementStrategyType { + return &v + }).(SchedulePlacementStrategyTypePtrOutput) +} + +func (o SchedulePlacementStrategyTypeOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o SchedulePlacementStrategyTypeOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e SchedulePlacementStrategyType) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o SchedulePlacementStrategyTypeOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o SchedulePlacementStrategyTypeOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e SchedulePlacementStrategyType) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type SchedulePlacementStrategyTypePtrOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementStrategyTypePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SchedulePlacementStrategyType)(nil)).Elem() +} + +func (o SchedulePlacementStrategyTypePtrOutput) ToSchedulePlacementStrategyTypePtrOutput() SchedulePlacementStrategyTypePtrOutput { + return o +} + +func (o SchedulePlacementStrategyTypePtrOutput) ToSchedulePlacementStrategyTypePtrOutputWithContext(ctx context.Context) SchedulePlacementStrategyTypePtrOutput { + return o +} + +func (o SchedulePlacementStrategyTypePtrOutput) Elem() SchedulePlacementStrategyTypeOutput { + return o.ApplyT(func(v *SchedulePlacementStrategyType) SchedulePlacementStrategyType { + if v != nil { + return *v + } + var ret SchedulePlacementStrategyType + return ret + }).(SchedulePlacementStrategyTypeOutput) +} + +func (o SchedulePlacementStrategyTypePtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o SchedulePlacementStrategyTypePtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *SchedulePlacementStrategyType) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// SchedulePlacementStrategyTypeInput is an input type that accepts values of the SchedulePlacementStrategyType enum +// A concrete instance of `SchedulePlacementStrategyTypeInput` can be one of the following: +// +// SchedulePlacementStrategyTypeRandom +// SchedulePlacementStrategyTypeSpread +// SchedulePlacementStrategyTypeBinpack +type SchedulePlacementStrategyTypeInput interface { + pulumi.Input + + ToSchedulePlacementStrategyTypeOutput() SchedulePlacementStrategyTypeOutput + ToSchedulePlacementStrategyTypeOutputWithContext(context.Context) SchedulePlacementStrategyTypeOutput +} + +var schedulePlacementStrategyTypePtrType = reflect.TypeOf((**SchedulePlacementStrategyType)(nil)).Elem() + +type SchedulePlacementStrategyTypePtrInput interface { + pulumi.Input + + ToSchedulePlacementStrategyTypePtrOutput() SchedulePlacementStrategyTypePtrOutput + ToSchedulePlacementStrategyTypePtrOutputWithContext(context.Context) SchedulePlacementStrategyTypePtrOutput +} + +type schedulePlacementStrategyTypePtr string + +func SchedulePlacementStrategyTypePtr(v string) SchedulePlacementStrategyTypePtrInput { + return (*schedulePlacementStrategyTypePtr)(&v) +} + +func (*schedulePlacementStrategyTypePtr) ElementType() reflect.Type { + return schedulePlacementStrategyTypePtrType +} + +func (in *schedulePlacementStrategyTypePtr) ToSchedulePlacementStrategyTypePtrOutput() SchedulePlacementStrategyTypePtrOutput { + return pulumi.ToOutput(in).(SchedulePlacementStrategyTypePtrOutput) +} + +func (in *schedulePlacementStrategyTypePtr) ToSchedulePlacementStrategyTypePtrOutputWithContext(ctx context.Context) SchedulePlacementStrategyTypePtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(SchedulePlacementStrategyTypePtrOutput) +} + +// Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the TagResource API action. +type SchedulePropagateTags string + +const ( + SchedulePropagateTagsTaskDefinition = SchedulePropagateTags("TASK_DEFINITION") +) + +func (SchedulePropagateTags) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePropagateTags)(nil)).Elem() +} + +func (e SchedulePropagateTags) ToSchedulePropagateTagsOutput() SchedulePropagateTagsOutput { + return pulumi.ToOutput(e).(SchedulePropagateTagsOutput) +} + +func (e SchedulePropagateTags) ToSchedulePropagateTagsOutputWithContext(ctx context.Context) SchedulePropagateTagsOutput { + return pulumi.ToOutputWithContext(ctx, e).(SchedulePropagateTagsOutput) +} + +func (e SchedulePropagateTags) ToSchedulePropagateTagsPtrOutput() SchedulePropagateTagsPtrOutput { + return e.ToSchedulePropagateTagsPtrOutputWithContext(context.Background()) +} + +func (e SchedulePropagateTags) ToSchedulePropagateTagsPtrOutputWithContext(ctx context.Context) SchedulePropagateTagsPtrOutput { + return SchedulePropagateTags(e).ToSchedulePropagateTagsOutputWithContext(ctx).ToSchedulePropagateTagsPtrOutputWithContext(ctx) +} + +func (e SchedulePropagateTags) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e SchedulePropagateTags) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e SchedulePropagateTags) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e SchedulePropagateTags) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type SchedulePropagateTagsOutput struct{ *pulumi.OutputState } + +func (SchedulePropagateTagsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePropagateTags)(nil)).Elem() +} + +func (o SchedulePropagateTagsOutput) ToSchedulePropagateTagsOutput() SchedulePropagateTagsOutput { + return o +} + +func (o SchedulePropagateTagsOutput) ToSchedulePropagateTagsOutputWithContext(ctx context.Context) SchedulePropagateTagsOutput { + return o +} + +func (o SchedulePropagateTagsOutput) ToSchedulePropagateTagsPtrOutput() SchedulePropagateTagsPtrOutput { + return o.ToSchedulePropagateTagsPtrOutputWithContext(context.Background()) +} + +func (o SchedulePropagateTagsOutput) ToSchedulePropagateTagsPtrOutputWithContext(ctx context.Context) SchedulePropagateTagsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SchedulePropagateTags) *SchedulePropagateTags { + return &v + }).(SchedulePropagateTagsPtrOutput) +} + +func (o SchedulePropagateTagsOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o SchedulePropagateTagsOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e SchedulePropagateTags) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o SchedulePropagateTagsOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o SchedulePropagateTagsOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e SchedulePropagateTags) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type SchedulePropagateTagsPtrOutput struct{ *pulumi.OutputState } + +func (SchedulePropagateTagsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SchedulePropagateTags)(nil)).Elem() +} + +func (o SchedulePropagateTagsPtrOutput) ToSchedulePropagateTagsPtrOutput() SchedulePropagateTagsPtrOutput { + return o +} + +func (o SchedulePropagateTagsPtrOutput) ToSchedulePropagateTagsPtrOutputWithContext(ctx context.Context) SchedulePropagateTagsPtrOutput { + return o +} + +func (o SchedulePropagateTagsPtrOutput) Elem() SchedulePropagateTagsOutput { + return o.ApplyT(func(v *SchedulePropagateTags) SchedulePropagateTags { + if v != nil { + return *v + } + var ret SchedulePropagateTags + return ret + }).(SchedulePropagateTagsOutput) +} + +func (o SchedulePropagateTagsPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o SchedulePropagateTagsPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *SchedulePropagateTags) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// SchedulePropagateTagsInput is an input type that accepts values of the SchedulePropagateTags enum +// A concrete instance of `SchedulePropagateTagsInput` can be one of the following: +// +// SchedulePropagateTagsTaskDefinition +type SchedulePropagateTagsInput interface { + pulumi.Input + + ToSchedulePropagateTagsOutput() SchedulePropagateTagsOutput + ToSchedulePropagateTagsOutputWithContext(context.Context) SchedulePropagateTagsOutput +} + +var schedulePropagateTagsPtrType = reflect.TypeOf((**SchedulePropagateTags)(nil)).Elem() + +type SchedulePropagateTagsPtrInput interface { + pulumi.Input + + ToSchedulePropagateTagsPtrOutput() SchedulePropagateTagsPtrOutput + ToSchedulePropagateTagsPtrOutputWithContext(context.Context) SchedulePropagateTagsPtrOutput +} + +type schedulePropagateTagsPtr string + +func SchedulePropagateTagsPtr(v string) SchedulePropagateTagsPtrInput { + return (*schedulePropagateTagsPtr)(&v) +} + +func (*schedulePropagateTagsPtr) ElementType() reflect.Type { + return schedulePropagateTagsPtrType +} + +func (in *schedulePropagateTagsPtr) ToSchedulePropagateTagsPtrOutput() SchedulePropagateTagsPtrOutput { + return pulumi.ToOutput(in).(SchedulePropagateTagsPtrOutput) +} + +func (in *schedulePropagateTagsPtr) ToSchedulePropagateTagsPtrOutputWithContext(ctx context.Context) SchedulePropagateTagsPtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(SchedulePropagateTagsPtrOutput) +} + +// Specifies whether the schedule is enabled or disabled. +type ScheduleStateEnum string + +const ( + ScheduleStateEnumEnabled = ScheduleStateEnum("ENABLED") + ScheduleStateEnumDisabled = ScheduleStateEnum("DISABLED") +) + +func (ScheduleStateEnum) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleStateEnum)(nil)).Elem() +} + +func (e ScheduleStateEnum) ToScheduleStateEnumOutput() ScheduleStateEnumOutput { + return pulumi.ToOutput(e).(ScheduleStateEnumOutput) +} + +func (e ScheduleStateEnum) ToScheduleStateEnumOutputWithContext(ctx context.Context) ScheduleStateEnumOutput { + return pulumi.ToOutputWithContext(ctx, e).(ScheduleStateEnumOutput) +} + +func (e ScheduleStateEnum) ToScheduleStateEnumPtrOutput() ScheduleStateEnumPtrOutput { + return e.ToScheduleStateEnumPtrOutputWithContext(context.Background()) +} + +func (e ScheduleStateEnum) ToScheduleStateEnumPtrOutputWithContext(ctx context.Context) ScheduleStateEnumPtrOutput { + return ScheduleStateEnum(e).ToScheduleStateEnumOutputWithContext(ctx).ToScheduleStateEnumPtrOutputWithContext(ctx) +} + +func (e ScheduleStateEnum) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleStateEnum) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ScheduleStateEnum) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e ScheduleStateEnum) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type ScheduleStateEnumOutput struct{ *pulumi.OutputState } + +func (ScheduleStateEnumOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleStateEnum)(nil)).Elem() +} + +func (o ScheduleStateEnumOutput) ToScheduleStateEnumOutput() ScheduleStateEnumOutput { + return o +} + +func (o ScheduleStateEnumOutput) ToScheduleStateEnumOutputWithContext(ctx context.Context) ScheduleStateEnumOutput { + return o +} + +func (o ScheduleStateEnumOutput) ToScheduleStateEnumPtrOutput() ScheduleStateEnumPtrOutput { + return o.ToScheduleStateEnumPtrOutputWithContext(context.Background()) +} + +func (o ScheduleStateEnumOutput) ToScheduleStateEnumPtrOutputWithContext(ctx context.Context) ScheduleStateEnumPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleStateEnum) *ScheduleStateEnum { + return &v + }).(ScheduleStateEnumPtrOutput) +} + +func (o ScheduleStateEnumOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o ScheduleStateEnumOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleStateEnum) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o ScheduleStateEnumOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleStateEnumOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ScheduleStateEnum) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type ScheduleStateEnumPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleStateEnumPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleStateEnum)(nil)).Elem() +} + +func (o ScheduleStateEnumPtrOutput) ToScheduleStateEnumPtrOutput() ScheduleStateEnumPtrOutput { + return o +} + +func (o ScheduleStateEnumPtrOutput) ToScheduleStateEnumPtrOutputWithContext(ctx context.Context) ScheduleStateEnumPtrOutput { + return o +} + +func (o ScheduleStateEnumPtrOutput) Elem() ScheduleStateEnumOutput { + return o.ApplyT(func(v *ScheduleStateEnum) ScheduleStateEnum { + if v != nil { + return *v + } + var ret ScheduleStateEnum + return ret + }).(ScheduleStateEnumOutput) +} + +func (o ScheduleStateEnumPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ScheduleStateEnumPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *ScheduleStateEnum) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// ScheduleStateEnumInput is an input type that accepts values of the ScheduleStateEnum enum +// A concrete instance of `ScheduleStateEnumInput` can be one of the following: +// +// ScheduleStateEnumEnabled +// ScheduleStateEnumDisabled +type ScheduleStateEnumInput interface { + pulumi.Input + + ToScheduleStateEnumOutput() ScheduleStateEnumOutput + ToScheduleStateEnumOutputWithContext(context.Context) ScheduleStateEnumOutput +} + +var scheduleStateEnumPtrType = reflect.TypeOf((**ScheduleStateEnum)(nil)).Elem() + +type ScheduleStateEnumPtrInput interface { + pulumi.Input + + ToScheduleStateEnumPtrOutput() ScheduleStateEnumPtrOutput + ToScheduleStateEnumPtrOutputWithContext(context.Context) ScheduleStateEnumPtrOutput +} + +type scheduleStateEnumPtr string + +func ScheduleStateEnumPtr(v string) ScheduleStateEnumPtrInput { + return (*scheduleStateEnumPtr)(&v) +} + +func (*scheduleStateEnumPtr) ElementType() reflect.Type { + return scheduleStateEnumPtrType +} + +func (in *scheduleStateEnumPtr) ToScheduleStateEnumPtrOutput() ScheduleStateEnumPtrOutput { + return pulumi.ToOutput(in).(ScheduleStateEnumPtrOutput) +} + +func (in *scheduleStateEnumPtr) ToScheduleStateEnumPtrOutputWithContext(ctx context.Context) ScheduleStateEnumPtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(ScheduleStateEnumPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleAssignPublicIpInput)(nil)).Elem(), ScheduleAssignPublicIp("ENABLED")) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleAssignPublicIpPtrInput)(nil)).Elem(), ScheduleAssignPublicIp("ENABLED")) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleFlexibleTimeWindowModeInput)(nil)).Elem(), ScheduleFlexibleTimeWindowMode("OFF")) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleFlexibleTimeWindowModePtrInput)(nil)).Elem(), ScheduleFlexibleTimeWindowMode("OFF")) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleLaunchTypeInput)(nil)).Elem(), ScheduleLaunchType("EC2")) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleLaunchTypePtrInput)(nil)).Elem(), ScheduleLaunchType("EC2")) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementConstraintTypeInput)(nil)).Elem(), SchedulePlacementConstraintType("distinctInstance")) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementConstraintTypePtrInput)(nil)).Elem(), SchedulePlacementConstraintType("distinctInstance")) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementStrategyTypeInput)(nil)).Elem(), SchedulePlacementStrategyType("random")) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementStrategyTypePtrInput)(nil)).Elem(), SchedulePlacementStrategyType("random")) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePropagateTagsInput)(nil)).Elem(), SchedulePropagateTags("TASK_DEFINITION")) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePropagateTagsPtrInput)(nil)).Elem(), SchedulePropagateTags("TASK_DEFINITION")) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleStateEnumInput)(nil)).Elem(), ScheduleStateEnum("ENABLED")) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleStateEnumPtrInput)(nil)).Elem(), ScheduleStateEnum("ENABLED")) + pulumi.RegisterOutputType(ScheduleAssignPublicIpOutput{}) + pulumi.RegisterOutputType(ScheduleAssignPublicIpPtrOutput{}) + pulumi.RegisterOutputType(ScheduleFlexibleTimeWindowModeOutput{}) + pulumi.RegisterOutputType(ScheduleFlexibleTimeWindowModePtrOutput{}) + pulumi.RegisterOutputType(ScheduleGroupStateEnumOutput{}) + pulumi.RegisterOutputType(ScheduleGroupStateEnumPtrOutput{}) + pulumi.RegisterOutputType(ScheduleLaunchTypeOutput{}) + pulumi.RegisterOutputType(ScheduleLaunchTypePtrOutput{}) + pulumi.RegisterOutputType(SchedulePlacementConstraintTypeOutput{}) + pulumi.RegisterOutputType(SchedulePlacementConstraintTypePtrOutput{}) + pulumi.RegisterOutputType(SchedulePlacementStrategyTypeOutput{}) + pulumi.RegisterOutputType(SchedulePlacementStrategyTypePtrOutput{}) + pulumi.RegisterOutputType(SchedulePropagateTagsOutput{}) + pulumi.RegisterOutputType(SchedulePropagateTagsPtrOutput{}) + pulumi.RegisterOutputType(ScheduleStateEnumOutput{}) + pulumi.RegisterOutputType(ScheduleStateEnumPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiTypes.go new file mode 100644 index 000000000..2cf1e2469 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/pulumiTypes.go @@ -0,0 +1,2491 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package scheduler + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +// This structure specifies the VPC subnets and security groups for the task, and whether a public IP address is to be used. This structure is relevant only for ECS tasks that use the awsvpc network mode. +type ScheduleAwsVpcConfiguration struct { + // Specifies whether the task's elastic network interface receives a public IP address. You can specify `ENABLED` only when `LaunchType` in `EcsParameters` is set to `FARGATE` . + AssignPublicIp *ScheduleAssignPublicIp `pulumi:"assignPublicIp"` + // Specifies the security groups associated with the task. These security groups must all be in the same VPC. You can specify as many as five security groups. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups []string `pulumi:"securityGroups"` + // Specifies the subnets associated with the task. These subnets must all be in the same VPC. You can specify as many as 16 subnets. + Subnets []string `pulumi:"subnets"` +} + +// ScheduleAwsVpcConfigurationInput is an input type that accepts ScheduleAwsVpcConfigurationArgs and ScheduleAwsVpcConfigurationOutput values. +// You can construct a concrete instance of `ScheduleAwsVpcConfigurationInput` via: +// +// ScheduleAwsVpcConfigurationArgs{...} +type ScheduleAwsVpcConfigurationInput interface { + pulumi.Input + + ToScheduleAwsVpcConfigurationOutput() ScheduleAwsVpcConfigurationOutput + ToScheduleAwsVpcConfigurationOutputWithContext(context.Context) ScheduleAwsVpcConfigurationOutput +} + +// This structure specifies the VPC subnets and security groups for the task, and whether a public IP address is to be used. This structure is relevant only for ECS tasks that use the awsvpc network mode. +type ScheduleAwsVpcConfigurationArgs struct { + // Specifies whether the task's elastic network interface receives a public IP address. You can specify `ENABLED` only when `LaunchType` in `EcsParameters` is set to `FARGATE` . + AssignPublicIp ScheduleAssignPublicIpPtrInput `pulumi:"assignPublicIp"` + // Specifies the security groups associated with the task. These security groups must all be in the same VPC. You can specify as many as five security groups. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups pulumi.StringArrayInput `pulumi:"securityGroups"` + // Specifies the subnets associated with the task. These subnets must all be in the same VPC. You can specify as many as 16 subnets. + Subnets pulumi.StringArrayInput `pulumi:"subnets"` +} + +func (ScheduleAwsVpcConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleAwsVpcConfiguration)(nil)).Elem() +} + +func (i ScheduleAwsVpcConfigurationArgs) ToScheduleAwsVpcConfigurationOutput() ScheduleAwsVpcConfigurationOutput { + return i.ToScheduleAwsVpcConfigurationOutputWithContext(context.Background()) +} + +func (i ScheduleAwsVpcConfigurationArgs) ToScheduleAwsVpcConfigurationOutputWithContext(ctx context.Context) ScheduleAwsVpcConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleAwsVpcConfigurationOutput) +} + +func (i ScheduleAwsVpcConfigurationArgs) ToScheduleAwsVpcConfigurationPtrOutput() ScheduleAwsVpcConfigurationPtrOutput { + return i.ToScheduleAwsVpcConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ScheduleAwsVpcConfigurationArgs) ToScheduleAwsVpcConfigurationPtrOutputWithContext(ctx context.Context) ScheduleAwsVpcConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleAwsVpcConfigurationOutput).ToScheduleAwsVpcConfigurationPtrOutputWithContext(ctx) +} + +// ScheduleAwsVpcConfigurationPtrInput is an input type that accepts ScheduleAwsVpcConfigurationArgs, ScheduleAwsVpcConfigurationPtr and ScheduleAwsVpcConfigurationPtrOutput values. +// You can construct a concrete instance of `ScheduleAwsVpcConfigurationPtrInput` via: +// +// ScheduleAwsVpcConfigurationArgs{...} +// +// or: +// +// nil +type ScheduleAwsVpcConfigurationPtrInput interface { + pulumi.Input + + ToScheduleAwsVpcConfigurationPtrOutput() ScheduleAwsVpcConfigurationPtrOutput + ToScheduleAwsVpcConfigurationPtrOutputWithContext(context.Context) ScheduleAwsVpcConfigurationPtrOutput +} + +type scheduleAwsVpcConfigurationPtrType ScheduleAwsVpcConfigurationArgs + +func ScheduleAwsVpcConfigurationPtr(v *ScheduleAwsVpcConfigurationArgs) ScheduleAwsVpcConfigurationPtrInput { + return (*scheduleAwsVpcConfigurationPtrType)(v) +} + +func (*scheduleAwsVpcConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleAwsVpcConfiguration)(nil)).Elem() +} + +func (i *scheduleAwsVpcConfigurationPtrType) ToScheduleAwsVpcConfigurationPtrOutput() ScheduleAwsVpcConfigurationPtrOutput { + return i.ToScheduleAwsVpcConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *scheduleAwsVpcConfigurationPtrType) ToScheduleAwsVpcConfigurationPtrOutputWithContext(ctx context.Context) ScheduleAwsVpcConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleAwsVpcConfigurationPtrOutput) +} + +// This structure specifies the VPC subnets and security groups for the task, and whether a public IP address is to be used. This structure is relevant only for ECS tasks that use the awsvpc network mode. +type ScheduleAwsVpcConfigurationOutput struct{ *pulumi.OutputState } + +func (ScheduleAwsVpcConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleAwsVpcConfiguration)(nil)).Elem() +} + +func (o ScheduleAwsVpcConfigurationOutput) ToScheduleAwsVpcConfigurationOutput() ScheduleAwsVpcConfigurationOutput { + return o +} + +func (o ScheduleAwsVpcConfigurationOutput) ToScheduleAwsVpcConfigurationOutputWithContext(ctx context.Context) ScheduleAwsVpcConfigurationOutput { + return o +} + +func (o ScheduleAwsVpcConfigurationOutput) ToScheduleAwsVpcConfigurationPtrOutput() ScheduleAwsVpcConfigurationPtrOutput { + return o.ToScheduleAwsVpcConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ScheduleAwsVpcConfigurationOutput) ToScheduleAwsVpcConfigurationPtrOutputWithContext(ctx context.Context) ScheduleAwsVpcConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleAwsVpcConfiguration) *ScheduleAwsVpcConfiguration { + return &v + }).(ScheduleAwsVpcConfigurationPtrOutput) +} + +// Specifies whether the task's elastic network interface receives a public IP address. You can specify `ENABLED` only when `LaunchType` in `EcsParameters` is set to `FARGATE` . +func (o ScheduleAwsVpcConfigurationOutput) AssignPublicIp() ScheduleAssignPublicIpPtrOutput { + return o.ApplyT(func(v ScheduleAwsVpcConfiguration) *ScheduleAssignPublicIp { return v.AssignPublicIp }).(ScheduleAssignPublicIpPtrOutput) +} + +// Specifies the security groups associated with the task. These security groups must all be in the same VPC. You can specify as many as five security groups. If you do not specify a security group, the default security group for the VPC is used. +func (o ScheduleAwsVpcConfigurationOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v ScheduleAwsVpcConfiguration) []string { return v.SecurityGroups }).(pulumi.StringArrayOutput) +} + +// Specifies the subnets associated with the task. These subnets must all be in the same VPC. You can specify as many as 16 subnets. +func (o ScheduleAwsVpcConfigurationOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v ScheduleAwsVpcConfiguration) []string { return v.Subnets }).(pulumi.StringArrayOutput) +} + +type ScheduleAwsVpcConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleAwsVpcConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleAwsVpcConfiguration)(nil)).Elem() +} + +func (o ScheduleAwsVpcConfigurationPtrOutput) ToScheduleAwsVpcConfigurationPtrOutput() ScheduleAwsVpcConfigurationPtrOutput { + return o +} + +func (o ScheduleAwsVpcConfigurationPtrOutput) ToScheduleAwsVpcConfigurationPtrOutputWithContext(ctx context.Context) ScheduleAwsVpcConfigurationPtrOutput { + return o +} + +func (o ScheduleAwsVpcConfigurationPtrOutput) Elem() ScheduleAwsVpcConfigurationOutput { + return o.ApplyT(func(v *ScheduleAwsVpcConfiguration) ScheduleAwsVpcConfiguration { + if v != nil { + return *v + } + var ret ScheduleAwsVpcConfiguration + return ret + }).(ScheduleAwsVpcConfigurationOutput) +} + +// Specifies whether the task's elastic network interface receives a public IP address. You can specify `ENABLED` only when `LaunchType` in `EcsParameters` is set to `FARGATE` . +func (o ScheduleAwsVpcConfigurationPtrOutput) AssignPublicIp() ScheduleAssignPublicIpPtrOutput { + return o.ApplyT(func(v *ScheduleAwsVpcConfiguration) *ScheduleAssignPublicIp { + if v == nil { + return nil + } + return v.AssignPublicIp + }).(ScheduleAssignPublicIpPtrOutput) +} + +// Specifies the security groups associated with the task. These security groups must all be in the same VPC. You can specify as many as five security groups. If you do not specify a security group, the default security group for the VPC is used. +func (o ScheduleAwsVpcConfigurationPtrOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ScheduleAwsVpcConfiguration) []string { + if v == nil { + return nil + } + return v.SecurityGroups + }).(pulumi.StringArrayOutput) +} + +// Specifies the subnets associated with the task. These subnets must all be in the same VPC. You can specify as many as 16 subnets. +func (o ScheduleAwsVpcConfigurationPtrOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ScheduleAwsVpcConfiguration) []string { + if v == nil { + return nil + } + return v.Subnets + }).(pulumi.StringArrayOutput) +} + +// The details of a capacity provider strategy. +type ScheduleCapacityProviderStrategyItem struct { + // The base value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. If no value is specified, the default value of 0 is used. + Base *float64 `pulumi:"base"` + // The short name of the capacity provider. + CapacityProvider string `pulumi:"capacityProvider"` + // The weight value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The weight value is taken into consideration after the base value, if defined, is satisfied. + Weight *float64 `pulumi:"weight"` +} + +// ScheduleCapacityProviderStrategyItemInput is an input type that accepts ScheduleCapacityProviderStrategyItemArgs and ScheduleCapacityProviderStrategyItemOutput values. +// You can construct a concrete instance of `ScheduleCapacityProviderStrategyItemInput` via: +// +// ScheduleCapacityProviderStrategyItemArgs{...} +type ScheduleCapacityProviderStrategyItemInput interface { + pulumi.Input + + ToScheduleCapacityProviderStrategyItemOutput() ScheduleCapacityProviderStrategyItemOutput + ToScheduleCapacityProviderStrategyItemOutputWithContext(context.Context) ScheduleCapacityProviderStrategyItemOutput +} + +// The details of a capacity provider strategy. +type ScheduleCapacityProviderStrategyItemArgs struct { + // The base value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. If no value is specified, the default value of 0 is used. + Base pulumi.Float64PtrInput `pulumi:"base"` + // The short name of the capacity provider. + CapacityProvider pulumi.StringInput `pulumi:"capacityProvider"` + // The weight value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The weight value is taken into consideration after the base value, if defined, is satisfied. + Weight pulumi.Float64PtrInput `pulumi:"weight"` +} + +func (ScheduleCapacityProviderStrategyItemArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleCapacityProviderStrategyItem)(nil)).Elem() +} + +func (i ScheduleCapacityProviderStrategyItemArgs) ToScheduleCapacityProviderStrategyItemOutput() ScheduleCapacityProviderStrategyItemOutput { + return i.ToScheduleCapacityProviderStrategyItemOutputWithContext(context.Background()) +} + +func (i ScheduleCapacityProviderStrategyItemArgs) ToScheduleCapacityProviderStrategyItemOutputWithContext(ctx context.Context) ScheduleCapacityProviderStrategyItemOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleCapacityProviderStrategyItemOutput) +} + +// ScheduleCapacityProviderStrategyItemArrayInput is an input type that accepts ScheduleCapacityProviderStrategyItemArray and ScheduleCapacityProviderStrategyItemArrayOutput values. +// You can construct a concrete instance of `ScheduleCapacityProviderStrategyItemArrayInput` via: +// +// ScheduleCapacityProviderStrategyItemArray{ ScheduleCapacityProviderStrategyItemArgs{...} } +type ScheduleCapacityProviderStrategyItemArrayInput interface { + pulumi.Input + + ToScheduleCapacityProviderStrategyItemArrayOutput() ScheduleCapacityProviderStrategyItemArrayOutput + ToScheduleCapacityProviderStrategyItemArrayOutputWithContext(context.Context) ScheduleCapacityProviderStrategyItemArrayOutput +} + +type ScheduleCapacityProviderStrategyItemArray []ScheduleCapacityProviderStrategyItemInput + +func (ScheduleCapacityProviderStrategyItemArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ScheduleCapacityProviderStrategyItem)(nil)).Elem() +} + +func (i ScheduleCapacityProviderStrategyItemArray) ToScheduleCapacityProviderStrategyItemArrayOutput() ScheduleCapacityProviderStrategyItemArrayOutput { + return i.ToScheduleCapacityProviderStrategyItemArrayOutputWithContext(context.Background()) +} + +func (i ScheduleCapacityProviderStrategyItemArray) ToScheduleCapacityProviderStrategyItemArrayOutputWithContext(ctx context.Context) ScheduleCapacityProviderStrategyItemArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleCapacityProviderStrategyItemArrayOutput) +} + +// The details of a capacity provider strategy. +type ScheduleCapacityProviderStrategyItemOutput struct{ *pulumi.OutputState } + +func (ScheduleCapacityProviderStrategyItemOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleCapacityProviderStrategyItem)(nil)).Elem() +} + +func (o ScheduleCapacityProviderStrategyItemOutput) ToScheduleCapacityProviderStrategyItemOutput() ScheduleCapacityProviderStrategyItemOutput { + return o +} + +func (o ScheduleCapacityProviderStrategyItemOutput) ToScheduleCapacityProviderStrategyItemOutputWithContext(ctx context.Context) ScheduleCapacityProviderStrategyItemOutput { + return o +} + +// The base value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. If no value is specified, the default value of 0 is used. +func (o ScheduleCapacityProviderStrategyItemOutput) Base() pulumi.Float64PtrOutput { + return o.ApplyT(func(v ScheduleCapacityProviderStrategyItem) *float64 { return v.Base }).(pulumi.Float64PtrOutput) +} + +// The short name of the capacity provider. +func (o ScheduleCapacityProviderStrategyItemOutput) CapacityProvider() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleCapacityProviderStrategyItem) string { return v.CapacityProvider }).(pulumi.StringOutput) +} + +// The weight value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The weight value is taken into consideration after the base value, if defined, is satisfied. +func (o ScheduleCapacityProviderStrategyItemOutput) Weight() pulumi.Float64PtrOutput { + return o.ApplyT(func(v ScheduleCapacityProviderStrategyItem) *float64 { return v.Weight }).(pulumi.Float64PtrOutput) +} + +type ScheduleCapacityProviderStrategyItemArrayOutput struct{ *pulumi.OutputState } + +func (ScheduleCapacityProviderStrategyItemArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ScheduleCapacityProviderStrategyItem)(nil)).Elem() +} + +func (o ScheduleCapacityProviderStrategyItemArrayOutput) ToScheduleCapacityProviderStrategyItemArrayOutput() ScheduleCapacityProviderStrategyItemArrayOutput { + return o +} + +func (o ScheduleCapacityProviderStrategyItemArrayOutput) ToScheduleCapacityProviderStrategyItemArrayOutputWithContext(ctx context.Context) ScheduleCapacityProviderStrategyItemArrayOutput { + return o +} + +func (o ScheduleCapacityProviderStrategyItemArrayOutput) Index(i pulumi.IntInput) ScheduleCapacityProviderStrategyItemOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ScheduleCapacityProviderStrategyItem { + return vs[0].([]ScheduleCapacityProviderStrategyItem)[vs[1].(int)] + }).(ScheduleCapacityProviderStrategyItemOutput) +} + +// A DeadLetterConfig object that contains information about a dead-letter queue configuration. +type ScheduleDeadLetterConfig struct { + // The ARN of the SQS queue specified as the target for the dead-letter queue. + Arn *string `pulumi:"arn"` +} + +// ScheduleDeadLetterConfigInput is an input type that accepts ScheduleDeadLetterConfigArgs and ScheduleDeadLetterConfigOutput values. +// You can construct a concrete instance of `ScheduleDeadLetterConfigInput` via: +// +// ScheduleDeadLetterConfigArgs{...} +type ScheduleDeadLetterConfigInput interface { + pulumi.Input + + ToScheduleDeadLetterConfigOutput() ScheduleDeadLetterConfigOutput + ToScheduleDeadLetterConfigOutputWithContext(context.Context) ScheduleDeadLetterConfigOutput +} + +// A DeadLetterConfig object that contains information about a dead-letter queue configuration. +type ScheduleDeadLetterConfigArgs struct { + // The ARN of the SQS queue specified as the target for the dead-letter queue. + Arn pulumi.StringPtrInput `pulumi:"arn"` +} + +func (ScheduleDeadLetterConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleDeadLetterConfig)(nil)).Elem() +} + +func (i ScheduleDeadLetterConfigArgs) ToScheduleDeadLetterConfigOutput() ScheduleDeadLetterConfigOutput { + return i.ToScheduleDeadLetterConfigOutputWithContext(context.Background()) +} + +func (i ScheduleDeadLetterConfigArgs) ToScheduleDeadLetterConfigOutputWithContext(ctx context.Context) ScheduleDeadLetterConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleDeadLetterConfigOutput) +} + +func (i ScheduleDeadLetterConfigArgs) ToScheduleDeadLetterConfigPtrOutput() ScheduleDeadLetterConfigPtrOutput { + return i.ToScheduleDeadLetterConfigPtrOutputWithContext(context.Background()) +} + +func (i ScheduleDeadLetterConfigArgs) ToScheduleDeadLetterConfigPtrOutputWithContext(ctx context.Context) ScheduleDeadLetterConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleDeadLetterConfigOutput).ToScheduleDeadLetterConfigPtrOutputWithContext(ctx) +} + +// ScheduleDeadLetterConfigPtrInput is an input type that accepts ScheduleDeadLetterConfigArgs, ScheduleDeadLetterConfigPtr and ScheduleDeadLetterConfigPtrOutput values. +// You can construct a concrete instance of `ScheduleDeadLetterConfigPtrInput` via: +// +// ScheduleDeadLetterConfigArgs{...} +// +// or: +// +// nil +type ScheduleDeadLetterConfigPtrInput interface { + pulumi.Input + + ToScheduleDeadLetterConfigPtrOutput() ScheduleDeadLetterConfigPtrOutput + ToScheduleDeadLetterConfigPtrOutputWithContext(context.Context) ScheduleDeadLetterConfigPtrOutput +} + +type scheduleDeadLetterConfigPtrType ScheduleDeadLetterConfigArgs + +func ScheduleDeadLetterConfigPtr(v *ScheduleDeadLetterConfigArgs) ScheduleDeadLetterConfigPtrInput { + return (*scheduleDeadLetterConfigPtrType)(v) +} + +func (*scheduleDeadLetterConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleDeadLetterConfig)(nil)).Elem() +} + +func (i *scheduleDeadLetterConfigPtrType) ToScheduleDeadLetterConfigPtrOutput() ScheduleDeadLetterConfigPtrOutput { + return i.ToScheduleDeadLetterConfigPtrOutputWithContext(context.Background()) +} + +func (i *scheduleDeadLetterConfigPtrType) ToScheduleDeadLetterConfigPtrOutputWithContext(ctx context.Context) ScheduleDeadLetterConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleDeadLetterConfigPtrOutput) +} + +// A DeadLetterConfig object that contains information about a dead-letter queue configuration. +type ScheduleDeadLetterConfigOutput struct{ *pulumi.OutputState } + +func (ScheduleDeadLetterConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleDeadLetterConfig)(nil)).Elem() +} + +func (o ScheduleDeadLetterConfigOutput) ToScheduleDeadLetterConfigOutput() ScheduleDeadLetterConfigOutput { + return o +} + +func (o ScheduleDeadLetterConfigOutput) ToScheduleDeadLetterConfigOutputWithContext(ctx context.Context) ScheduleDeadLetterConfigOutput { + return o +} + +func (o ScheduleDeadLetterConfigOutput) ToScheduleDeadLetterConfigPtrOutput() ScheduleDeadLetterConfigPtrOutput { + return o.ToScheduleDeadLetterConfigPtrOutputWithContext(context.Background()) +} + +func (o ScheduleDeadLetterConfigOutput) ToScheduleDeadLetterConfigPtrOutputWithContext(ctx context.Context) ScheduleDeadLetterConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleDeadLetterConfig) *ScheduleDeadLetterConfig { + return &v + }).(ScheduleDeadLetterConfigPtrOutput) +} + +// The ARN of the SQS queue specified as the target for the dead-letter queue. +func (o ScheduleDeadLetterConfigOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v ScheduleDeadLetterConfig) *string { return v.Arn }).(pulumi.StringPtrOutput) +} + +type ScheduleDeadLetterConfigPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleDeadLetterConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleDeadLetterConfig)(nil)).Elem() +} + +func (o ScheduleDeadLetterConfigPtrOutput) ToScheduleDeadLetterConfigPtrOutput() ScheduleDeadLetterConfigPtrOutput { + return o +} + +func (o ScheduleDeadLetterConfigPtrOutput) ToScheduleDeadLetterConfigPtrOutputWithContext(ctx context.Context) ScheduleDeadLetterConfigPtrOutput { + return o +} + +func (o ScheduleDeadLetterConfigPtrOutput) Elem() ScheduleDeadLetterConfigOutput { + return o.ApplyT(func(v *ScheduleDeadLetterConfig) ScheduleDeadLetterConfig { + if v != nil { + return *v + } + var ret ScheduleDeadLetterConfig + return ret + }).(ScheduleDeadLetterConfigOutput) +} + +// The ARN of the SQS queue specified as the target for the dead-letter queue. +func (o ScheduleDeadLetterConfigPtrOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleDeadLetterConfig) *string { + if v == nil { + return nil + } + return v.Arn + }).(pulumi.StringPtrOutput) +} + +// The custom parameters to be used when the target is an Amazon ECS task. +type ScheduleEcsParameters struct { + // The capacity provider strategy to use for the task. + CapacityProviderStrategy []ScheduleCapacityProviderStrategyItem `pulumi:"capacityProviderStrategy"` + // Specifies whether to enable Amazon ECS managed tags for the task. For more information, see Tagging Your Amazon ECS Resources in the Amazon Elastic Container Service Developer Guide. + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + // Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + // Specifies an ECS task group for the task. The maximum length is 255 characters. + Group *string `pulumi:"group"` + // Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. The `FARGATE` value is supported only in the Regions where Fargate with Amazon ECS is supported. For more information, see [AWS Fargate on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) in the *Amazon ECS Developer Guide* . + LaunchType *ScheduleLaunchType `pulumi:"launchType"` + // This structure specifies the network configuration for an ECS task. + NetworkConfiguration *ScheduleNetworkConfiguration `pulumi:"networkConfiguration"` + // An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). + PlacementConstraints []SchedulePlacementConstraint `pulumi:"placementConstraints"` + // The placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. + PlacementStrategy []SchedulePlacementStrategy `pulumi:"placementStrategy"` + // Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as 1.1.0. + PlatformVersion *string `pulumi:"platformVersion"` + // Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the Amazon ECS [`TagResource`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html) API action. + PropagateTags *SchedulePropagateTags `pulumi:"propagateTags"` + // The reference ID to use for the task. + ReferenceId *string `pulumi:"referenceId"` + // The metadata that you apply to the task to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. To learn more, see RunTask in the Amazon ECS API Reference. + Tags []map[string]string `pulumi:"tags"` + // The number of tasks to create based on TaskDefinition. The default is 1. + TaskCount *float64 `pulumi:"taskCount"` + // The ARN of the task definition to use if the event target is an Amazon ECS task. + TaskDefinitionArn string `pulumi:"taskDefinitionArn"` +} + +// ScheduleEcsParametersInput is an input type that accepts ScheduleEcsParametersArgs and ScheduleEcsParametersOutput values. +// You can construct a concrete instance of `ScheduleEcsParametersInput` via: +// +// ScheduleEcsParametersArgs{...} +type ScheduleEcsParametersInput interface { + pulumi.Input + + ToScheduleEcsParametersOutput() ScheduleEcsParametersOutput + ToScheduleEcsParametersOutputWithContext(context.Context) ScheduleEcsParametersOutput +} + +// The custom parameters to be used when the target is an Amazon ECS task. +type ScheduleEcsParametersArgs struct { + // The capacity provider strategy to use for the task. + CapacityProviderStrategy ScheduleCapacityProviderStrategyItemArrayInput `pulumi:"capacityProviderStrategy"` + // Specifies whether to enable Amazon ECS managed tags for the task. For more information, see Tagging Your Amazon ECS Resources in the Amazon Elastic Container Service Developer Guide. + EnableEcsManagedTags pulumi.BoolPtrInput `pulumi:"enableEcsManagedTags"` + // Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. + EnableExecuteCommand pulumi.BoolPtrInput `pulumi:"enableExecuteCommand"` + // Specifies an ECS task group for the task. The maximum length is 255 characters. + Group pulumi.StringPtrInput `pulumi:"group"` + // Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. The `FARGATE` value is supported only in the Regions where Fargate with Amazon ECS is supported. For more information, see [AWS Fargate on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) in the *Amazon ECS Developer Guide* . + LaunchType ScheduleLaunchTypePtrInput `pulumi:"launchType"` + // This structure specifies the network configuration for an ECS task. + NetworkConfiguration ScheduleNetworkConfigurationPtrInput `pulumi:"networkConfiguration"` + // An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). + PlacementConstraints SchedulePlacementConstraintArrayInput `pulumi:"placementConstraints"` + // The placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. + PlacementStrategy SchedulePlacementStrategyArrayInput `pulumi:"placementStrategy"` + // Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as 1.1.0. + PlatformVersion pulumi.StringPtrInput `pulumi:"platformVersion"` + // Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the Amazon ECS [`TagResource`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html) API action. + PropagateTags SchedulePropagateTagsPtrInput `pulumi:"propagateTags"` + // The reference ID to use for the task. + ReferenceId pulumi.StringPtrInput `pulumi:"referenceId"` + // The metadata that you apply to the task to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. To learn more, see RunTask in the Amazon ECS API Reference. + Tags pulumi.StringMapArrayInput `pulumi:"tags"` + // The number of tasks to create based on TaskDefinition. The default is 1. + TaskCount pulumi.Float64PtrInput `pulumi:"taskCount"` + // The ARN of the task definition to use if the event target is an Amazon ECS task. + TaskDefinitionArn pulumi.StringInput `pulumi:"taskDefinitionArn"` +} + +func (ScheduleEcsParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleEcsParameters)(nil)).Elem() +} + +func (i ScheduleEcsParametersArgs) ToScheduleEcsParametersOutput() ScheduleEcsParametersOutput { + return i.ToScheduleEcsParametersOutputWithContext(context.Background()) +} + +func (i ScheduleEcsParametersArgs) ToScheduleEcsParametersOutputWithContext(ctx context.Context) ScheduleEcsParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleEcsParametersOutput) +} + +func (i ScheduleEcsParametersArgs) ToScheduleEcsParametersPtrOutput() ScheduleEcsParametersPtrOutput { + return i.ToScheduleEcsParametersPtrOutputWithContext(context.Background()) +} + +func (i ScheduleEcsParametersArgs) ToScheduleEcsParametersPtrOutputWithContext(ctx context.Context) ScheduleEcsParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleEcsParametersOutput).ToScheduleEcsParametersPtrOutputWithContext(ctx) +} + +// ScheduleEcsParametersPtrInput is an input type that accepts ScheduleEcsParametersArgs, ScheduleEcsParametersPtr and ScheduleEcsParametersPtrOutput values. +// You can construct a concrete instance of `ScheduleEcsParametersPtrInput` via: +// +// ScheduleEcsParametersArgs{...} +// +// or: +// +// nil +type ScheduleEcsParametersPtrInput interface { + pulumi.Input + + ToScheduleEcsParametersPtrOutput() ScheduleEcsParametersPtrOutput + ToScheduleEcsParametersPtrOutputWithContext(context.Context) ScheduleEcsParametersPtrOutput +} + +type scheduleEcsParametersPtrType ScheduleEcsParametersArgs + +func ScheduleEcsParametersPtr(v *ScheduleEcsParametersArgs) ScheduleEcsParametersPtrInput { + return (*scheduleEcsParametersPtrType)(v) +} + +func (*scheduleEcsParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleEcsParameters)(nil)).Elem() +} + +func (i *scheduleEcsParametersPtrType) ToScheduleEcsParametersPtrOutput() ScheduleEcsParametersPtrOutput { + return i.ToScheduleEcsParametersPtrOutputWithContext(context.Background()) +} + +func (i *scheduleEcsParametersPtrType) ToScheduleEcsParametersPtrOutputWithContext(ctx context.Context) ScheduleEcsParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleEcsParametersPtrOutput) +} + +// The custom parameters to be used when the target is an Amazon ECS task. +type ScheduleEcsParametersOutput struct{ *pulumi.OutputState } + +func (ScheduleEcsParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleEcsParameters)(nil)).Elem() +} + +func (o ScheduleEcsParametersOutput) ToScheduleEcsParametersOutput() ScheduleEcsParametersOutput { + return o +} + +func (o ScheduleEcsParametersOutput) ToScheduleEcsParametersOutputWithContext(ctx context.Context) ScheduleEcsParametersOutput { + return o +} + +func (o ScheduleEcsParametersOutput) ToScheduleEcsParametersPtrOutput() ScheduleEcsParametersPtrOutput { + return o.ToScheduleEcsParametersPtrOutputWithContext(context.Background()) +} + +func (o ScheduleEcsParametersOutput) ToScheduleEcsParametersPtrOutputWithContext(ctx context.Context) ScheduleEcsParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleEcsParameters) *ScheduleEcsParameters { + return &v + }).(ScheduleEcsParametersPtrOutput) +} + +// The capacity provider strategy to use for the task. +func (o ScheduleEcsParametersOutput) CapacityProviderStrategy() ScheduleCapacityProviderStrategyItemArrayOutput { + return o.ApplyT(func(v ScheduleEcsParameters) []ScheduleCapacityProviderStrategyItem { + return v.CapacityProviderStrategy + }).(ScheduleCapacityProviderStrategyItemArrayOutput) +} + +// Specifies whether to enable Amazon ECS managed tags for the task. For more information, see Tagging Your Amazon ECS Resources in the Amazon Elastic Container Service Developer Guide. +func (o ScheduleEcsParametersOutput) EnableEcsManagedTags() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *bool { return v.EnableEcsManagedTags }).(pulumi.BoolPtrOutput) +} + +// Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. +func (o ScheduleEcsParametersOutput) EnableExecuteCommand() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *bool { return v.EnableExecuteCommand }).(pulumi.BoolPtrOutput) +} + +// Specifies an ECS task group for the task. The maximum length is 255 characters. +func (o ScheduleEcsParametersOutput) Group() pulumi.StringPtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *string { return v.Group }).(pulumi.StringPtrOutput) +} + +// Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. The `FARGATE` value is supported only in the Regions where Fargate with Amazon ECS is supported. For more information, see [AWS Fargate on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) in the *Amazon ECS Developer Guide* . +func (o ScheduleEcsParametersOutput) LaunchType() ScheduleLaunchTypePtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *ScheduleLaunchType { return v.LaunchType }).(ScheduleLaunchTypePtrOutput) +} + +// This structure specifies the network configuration for an ECS task. +func (o ScheduleEcsParametersOutput) NetworkConfiguration() ScheduleNetworkConfigurationPtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *ScheduleNetworkConfiguration { return v.NetworkConfiguration }).(ScheduleNetworkConfigurationPtrOutput) +} + +// An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). +func (o ScheduleEcsParametersOutput) PlacementConstraints() SchedulePlacementConstraintArrayOutput { + return o.ApplyT(func(v ScheduleEcsParameters) []SchedulePlacementConstraint { return v.PlacementConstraints }).(SchedulePlacementConstraintArrayOutput) +} + +// The placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. +func (o ScheduleEcsParametersOutput) PlacementStrategy() SchedulePlacementStrategyArrayOutput { + return o.ApplyT(func(v ScheduleEcsParameters) []SchedulePlacementStrategy { return v.PlacementStrategy }).(SchedulePlacementStrategyArrayOutput) +} + +// Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as 1.1.0. +func (o ScheduleEcsParametersOutput) PlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *string { return v.PlatformVersion }).(pulumi.StringPtrOutput) +} + +// Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the Amazon ECS [`TagResource`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html) API action. +func (o ScheduleEcsParametersOutput) PropagateTags() SchedulePropagateTagsPtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *SchedulePropagateTags { return v.PropagateTags }).(SchedulePropagateTagsPtrOutput) +} + +// The reference ID to use for the task. +func (o ScheduleEcsParametersOutput) ReferenceId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *string { return v.ReferenceId }).(pulumi.StringPtrOutput) +} + +// The metadata that you apply to the task to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. To learn more, see RunTask in the Amazon ECS API Reference. +func (o ScheduleEcsParametersOutput) Tags() pulumi.StringMapArrayOutput { + return o.ApplyT(func(v ScheduleEcsParameters) []map[string]string { return v.Tags }).(pulumi.StringMapArrayOutput) +} + +// The number of tasks to create based on TaskDefinition. The default is 1. +func (o ScheduleEcsParametersOutput) TaskCount() pulumi.Float64PtrOutput { + return o.ApplyT(func(v ScheduleEcsParameters) *float64 { return v.TaskCount }).(pulumi.Float64PtrOutput) +} + +// The ARN of the task definition to use if the event target is an Amazon ECS task. +func (o ScheduleEcsParametersOutput) TaskDefinitionArn() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleEcsParameters) string { return v.TaskDefinitionArn }).(pulumi.StringOutput) +} + +type ScheduleEcsParametersPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleEcsParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleEcsParameters)(nil)).Elem() +} + +func (o ScheduleEcsParametersPtrOutput) ToScheduleEcsParametersPtrOutput() ScheduleEcsParametersPtrOutput { + return o +} + +func (o ScheduleEcsParametersPtrOutput) ToScheduleEcsParametersPtrOutputWithContext(ctx context.Context) ScheduleEcsParametersPtrOutput { + return o +} + +func (o ScheduleEcsParametersPtrOutput) Elem() ScheduleEcsParametersOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) ScheduleEcsParameters { + if v != nil { + return *v + } + var ret ScheduleEcsParameters + return ret + }).(ScheduleEcsParametersOutput) +} + +// The capacity provider strategy to use for the task. +func (o ScheduleEcsParametersPtrOutput) CapacityProviderStrategy() ScheduleCapacityProviderStrategyItemArrayOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) []ScheduleCapacityProviderStrategyItem { + if v == nil { + return nil + } + return v.CapacityProviderStrategy + }).(ScheduleCapacityProviderStrategyItemArrayOutput) +} + +// Specifies whether to enable Amazon ECS managed tags for the task. For more information, see Tagging Your Amazon ECS Resources in the Amazon Elastic Container Service Developer Guide. +func (o ScheduleEcsParametersPtrOutput) EnableEcsManagedTags() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *bool { + if v == nil { + return nil + } + return v.EnableEcsManagedTags + }).(pulumi.BoolPtrOutput) +} + +// Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. +func (o ScheduleEcsParametersPtrOutput) EnableExecuteCommand() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *bool { + if v == nil { + return nil + } + return v.EnableExecuteCommand + }).(pulumi.BoolPtrOutput) +} + +// Specifies an ECS task group for the task. The maximum length is 255 characters. +func (o ScheduleEcsParametersPtrOutput) Group() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *string { + if v == nil { + return nil + } + return v.Group + }).(pulumi.StringPtrOutput) +} + +// Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. The `FARGATE` value is supported only in the Regions where Fargate with Amazon ECS is supported. For more information, see [AWS Fargate on Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) in the *Amazon ECS Developer Guide* . +func (o ScheduleEcsParametersPtrOutput) LaunchType() ScheduleLaunchTypePtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *ScheduleLaunchType { + if v == nil { + return nil + } + return v.LaunchType + }).(ScheduleLaunchTypePtrOutput) +} + +// This structure specifies the network configuration for an ECS task. +func (o ScheduleEcsParametersPtrOutput) NetworkConfiguration() ScheduleNetworkConfigurationPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *ScheduleNetworkConfiguration { + if v == nil { + return nil + } + return v.NetworkConfiguration + }).(ScheduleNetworkConfigurationPtrOutput) +} + +// An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). +func (o ScheduleEcsParametersPtrOutput) PlacementConstraints() SchedulePlacementConstraintArrayOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) []SchedulePlacementConstraint { + if v == nil { + return nil + } + return v.PlacementConstraints + }).(SchedulePlacementConstraintArrayOutput) +} + +// The placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. +func (o ScheduleEcsParametersPtrOutput) PlacementStrategy() SchedulePlacementStrategyArrayOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) []SchedulePlacementStrategy { + if v == nil { + return nil + } + return v.PlacementStrategy + }).(SchedulePlacementStrategyArrayOutput) +} + +// Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as 1.1.0. +func (o ScheduleEcsParametersPtrOutput) PlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *string { + if v == nil { + return nil + } + return v.PlatformVersion + }).(pulumi.StringPtrOutput) +} + +// Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. To add tags to a task after task creation, use the Amazon ECS [`TagResource`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html) API action. +func (o ScheduleEcsParametersPtrOutput) PropagateTags() SchedulePropagateTagsPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *SchedulePropagateTags { + if v == nil { + return nil + } + return v.PropagateTags + }).(SchedulePropagateTagsPtrOutput) +} + +// The reference ID to use for the task. +func (o ScheduleEcsParametersPtrOutput) ReferenceId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *string { + if v == nil { + return nil + } + return v.ReferenceId + }).(pulumi.StringPtrOutput) +} + +// The metadata that you apply to the task to help you categorize and organize them. Each tag consists of a key and an optional value, both of which you define. To learn more, see RunTask in the Amazon ECS API Reference. +func (o ScheduleEcsParametersPtrOutput) Tags() pulumi.StringMapArrayOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) []map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapArrayOutput) +} + +// The number of tasks to create based on TaskDefinition. The default is 1. +func (o ScheduleEcsParametersPtrOutput) TaskCount() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *float64 { + if v == nil { + return nil + } + return v.TaskCount + }).(pulumi.Float64PtrOutput) +} + +// The ARN of the task definition to use if the event target is an Amazon ECS task. +func (o ScheduleEcsParametersPtrOutput) TaskDefinitionArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleEcsParameters) *string { + if v == nil { + return nil + } + return &v.TaskDefinitionArn + }).(pulumi.StringPtrOutput) +} + +// EventBridge PutEvent predefined target type. +type ScheduleEventBridgeParameters struct { + // Free-form string, with a maximum of 128 characters, used to decide what fields to expect in the event detail. + DetailType string `pulumi:"detailType"` + // The source of the event. + Source string `pulumi:"source"` +} + +// ScheduleEventBridgeParametersInput is an input type that accepts ScheduleEventBridgeParametersArgs and ScheduleEventBridgeParametersOutput values. +// You can construct a concrete instance of `ScheduleEventBridgeParametersInput` via: +// +// ScheduleEventBridgeParametersArgs{...} +type ScheduleEventBridgeParametersInput interface { + pulumi.Input + + ToScheduleEventBridgeParametersOutput() ScheduleEventBridgeParametersOutput + ToScheduleEventBridgeParametersOutputWithContext(context.Context) ScheduleEventBridgeParametersOutput +} + +// EventBridge PutEvent predefined target type. +type ScheduleEventBridgeParametersArgs struct { + // Free-form string, with a maximum of 128 characters, used to decide what fields to expect in the event detail. + DetailType pulumi.StringInput `pulumi:"detailType"` + // The source of the event. + Source pulumi.StringInput `pulumi:"source"` +} + +func (ScheduleEventBridgeParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleEventBridgeParameters)(nil)).Elem() +} + +func (i ScheduleEventBridgeParametersArgs) ToScheduleEventBridgeParametersOutput() ScheduleEventBridgeParametersOutput { + return i.ToScheduleEventBridgeParametersOutputWithContext(context.Background()) +} + +func (i ScheduleEventBridgeParametersArgs) ToScheduleEventBridgeParametersOutputWithContext(ctx context.Context) ScheduleEventBridgeParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleEventBridgeParametersOutput) +} + +func (i ScheduleEventBridgeParametersArgs) ToScheduleEventBridgeParametersPtrOutput() ScheduleEventBridgeParametersPtrOutput { + return i.ToScheduleEventBridgeParametersPtrOutputWithContext(context.Background()) +} + +func (i ScheduleEventBridgeParametersArgs) ToScheduleEventBridgeParametersPtrOutputWithContext(ctx context.Context) ScheduleEventBridgeParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleEventBridgeParametersOutput).ToScheduleEventBridgeParametersPtrOutputWithContext(ctx) +} + +// ScheduleEventBridgeParametersPtrInput is an input type that accepts ScheduleEventBridgeParametersArgs, ScheduleEventBridgeParametersPtr and ScheduleEventBridgeParametersPtrOutput values. +// You can construct a concrete instance of `ScheduleEventBridgeParametersPtrInput` via: +// +// ScheduleEventBridgeParametersArgs{...} +// +// or: +// +// nil +type ScheduleEventBridgeParametersPtrInput interface { + pulumi.Input + + ToScheduleEventBridgeParametersPtrOutput() ScheduleEventBridgeParametersPtrOutput + ToScheduleEventBridgeParametersPtrOutputWithContext(context.Context) ScheduleEventBridgeParametersPtrOutput +} + +type scheduleEventBridgeParametersPtrType ScheduleEventBridgeParametersArgs + +func ScheduleEventBridgeParametersPtr(v *ScheduleEventBridgeParametersArgs) ScheduleEventBridgeParametersPtrInput { + return (*scheduleEventBridgeParametersPtrType)(v) +} + +func (*scheduleEventBridgeParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleEventBridgeParameters)(nil)).Elem() +} + +func (i *scheduleEventBridgeParametersPtrType) ToScheduleEventBridgeParametersPtrOutput() ScheduleEventBridgeParametersPtrOutput { + return i.ToScheduleEventBridgeParametersPtrOutputWithContext(context.Background()) +} + +func (i *scheduleEventBridgeParametersPtrType) ToScheduleEventBridgeParametersPtrOutputWithContext(ctx context.Context) ScheduleEventBridgeParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleEventBridgeParametersPtrOutput) +} + +// EventBridge PutEvent predefined target type. +type ScheduleEventBridgeParametersOutput struct{ *pulumi.OutputState } + +func (ScheduleEventBridgeParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleEventBridgeParameters)(nil)).Elem() +} + +func (o ScheduleEventBridgeParametersOutput) ToScheduleEventBridgeParametersOutput() ScheduleEventBridgeParametersOutput { + return o +} + +func (o ScheduleEventBridgeParametersOutput) ToScheduleEventBridgeParametersOutputWithContext(ctx context.Context) ScheduleEventBridgeParametersOutput { + return o +} + +func (o ScheduleEventBridgeParametersOutput) ToScheduleEventBridgeParametersPtrOutput() ScheduleEventBridgeParametersPtrOutput { + return o.ToScheduleEventBridgeParametersPtrOutputWithContext(context.Background()) +} + +func (o ScheduleEventBridgeParametersOutput) ToScheduleEventBridgeParametersPtrOutputWithContext(ctx context.Context) ScheduleEventBridgeParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleEventBridgeParameters) *ScheduleEventBridgeParameters { + return &v + }).(ScheduleEventBridgeParametersPtrOutput) +} + +// Free-form string, with a maximum of 128 characters, used to decide what fields to expect in the event detail. +func (o ScheduleEventBridgeParametersOutput) DetailType() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleEventBridgeParameters) string { return v.DetailType }).(pulumi.StringOutput) +} + +// The source of the event. +func (o ScheduleEventBridgeParametersOutput) Source() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleEventBridgeParameters) string { return v.Source }).(pulumi.StringOutput) +} + +type ScheduleEventBridgeParametersPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleEventBridgeParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleEventBridgeParameters)(nil)).Elem() +} + +func (o ScheduleEventBridgeParametersPtrOutput) ToScheduleEventBridgeParametersPtrOutput() ScheduleEventBridgeParametersPtrOutput { + return o +} + +func (o ScheduleEventBridgeParametersPtrOutput) ToScheduleEventBridgeParametersPtrOutputWithContext(ctx context.Context) ScheduleEventBridgeParametersPtrOutput { + return o +} + +func (o ScheduleEventBridgeParametersPtrOutput) Elem() ScheduleEventBridgeParametersOutput { + return o.ApplyT(func(v *ScheduleEventBridgeParameters) ScheduleEventBridgeParameters { + if v != nil { + return *v + } + var ret ScheduleEventBridgeParameters + return ret + }).(ScheduleEventBridgeParametersOutput) +} + +// Free-form string, with a maximum of 128 characters, used to decide what fields to expect in the event detail. +func (o ScheduleEventBridgeParametersPtrOutput) DetailType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleEventBridgeParameters) *string { + if v == nil { + return nil + } + return &v.DetailType + }).(pulumi.StringPtrOutput) +} + +// The source of the event. +func (o ScheduleEventBridgeParametersPtrOutput) Source() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleEventBridgeParameters) *string { + if v == nil { + return nil + } + return &v.Source + }).(pulumi.StringPtrOutput) +} + +// Flexible time window allows configuration of a window within which a schedule can be invoked +type ScheduleFlexibleTimeWindow struct { + // The maximum time window during which a schedule can be invoked. + MaximumWindowInMinutes *float64 `pulumi:"maximumWindowInMinutes"` + // Determines whether the schedule is invoked within a flexible time window. You must use quotation marks when you specify this value in your JSON or YAML template. + // + // *Allowed Values* : `"OFF"` | `"FLEXIBLE"` + Mode ScheduleFlexibleTimeWindowMode `pulumi:"mode"` +} + +// ScheduleFlexibleTimeWindowInput is an input type that accepts ScheduleFlexibleTimeWindowArgs and ScheduleFlexibleTimeWindowOutput values. +// You can construct a concrete instance of `ScheduleFlexibleTimeWindowInput` via: +// +// ScheduleFlexibleTimeWindowArgs{...} +type ScheduleFlexibleTimeWindowInput interface { + pulumi.Input + + ToScheduleFlexibleTimeWindowOutput() ScheduleFlexibleTimeWindowOutput + ToScheduleFlexibleTimeWindowOutputWithContext(context.Context) ScheduleFlexibleTimeWindowOutput +} + +// Flexible time window allows configuration of a window within which a schedule can be invoked +type ScheduleFlexibleTimeWindowArgs struct { + // The maximum time window during which a schedule can be invoked. + MaximumWindowInMinutes pulumi.Float64PtrInput `pulumi:"maximumWindowInMinutes"` + // Determines whether the schedule is invoked within a flexible time window. You must use quotation marks when you specify this value in your JSON or YAML template. + // + // *Allowed Values* : `"OFF"` | `"FLEXIBLE"` + Mode ScheduleFlexibleTimeWindowModeInput `pulumi:"mode"` +} + +func (ScheduleFlexibleTimeWindowArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleFlexibleTimeWindow)(nil)).Elem() +} + +func (i ScheduleFlexibleTimeWindowArgs) ToScheduleFlexibleTimeWindowOutput() ScheduleFlexibleTimeWindowOutput { + return i.ToScheduleFlexibleTimeWindowOutputWithContext(context.Background()) +} + +func (i ScheduleFlexibleTimeWindowArgs) ToScheduleFlexibleTimeWindowOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleFlexibleTimeWindowOutput) +} + +// Flexible time window allows configuration of a window within which a schedule can be invoked +type ScheduleFlexibleTimeWindowOutput struct{ *pulumi.OutputState } + +func (ScheduleFlexibleTimeWindowOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleFlexibleTimeWindow)(nil)).Elem() +} + +func (o ScheduleFlexibleTimeWindowOutput) ToScheduleFlexibleTimeWindowOutput() ScheduleFlexibleTimeWindowOutput { + return o +} + +func (o ScheduleFlexibleTimeWindowOutput) ToScheduleFlexibleTimeWindowOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowOutput { + return o +} + +// The maximum time window during which a schedule can be invoked. +func (o ScheduleFlexibleTimeWindowOutput) MaximumWindowInMinutes() pulumi.Float64PtrOutput { + return o.ApplyT(func(v ScheduleFlexibleTimeWindow) *float64 { return v.MaximumWindowInMinutes }).(pulumi.Float64PtrOutput) +} + +// Determines whether the schedule is invoked within a flexible time window. You must use quotation marks when you specify this value in your JSON or YAML template. +// +// *Allowed Values* : `"OFF"` | `"FLEXIBLE"` +func (o ScheduleFlexibleTimeWindowOutput) Mode() ScheduleFlexibleTimeWindowModeOutput { + return o.ApplyT(func(v ScheduleFlexibleTimeWindow) ScheduleFlexibleTimeWindowMode { return v.Mode }).(ScheduleFlexibleTimeWindowModeOutput) +} + +type ScheduleFlexibleTimeWindowPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleFlexibleTimeWindowPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleFlexibleTimeWindow)(nil)).Elem() +} + +func (o ScheduleFlexibleTimeWindowPtrOutput) ToScheduleFlexibleTimeWindowPtrOutput() ScheduleFlexibleTimeWindowPtrOutput { + return o +} + +func (o ScheduleFlexibleTimeWindowPtrOutput) ToScheduleFlexibleTimeWindowPtrOutputWithContext(ctx context.Context) ScheduleFlexibleTimeWindowPtrOutput { + return o +} + +func (o ScheduleFlexibleTimeWindowPtrOutput) Elem() ScheduleFlexibleTimeWindowOutput { + return o.ApplyT(func(v *ScheduleFlexibleTimeWindow) ScheduleFlexibleTimeWindow { + if v != nil { + return *v + } + var ret ScheduleFlexibleTimeWindow + return ret + }).(ScheduleFlexibleTimeWindowOutput) +} + +// The maximum time window during which a schedule can be invoked. +func (o ScheduleFlexibleTimeWindowPtrOutput) MaximumWindowInMinutes() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *ScheduleFlexibleTimeWindow) *float64 { + if v == nil { + return nil + } + return v.MaximumWindowInMinutes + }).(pulumi.Float64PtrOutput) +} + +// Determines whether the schedule is invoked within a flexible time window. You must use quotation marks when you specify this value in your JSON or YAML template. +// +// *Allowed Values* : `"OFF"` | `"FLEXIBLE"` +func (o ScheduleFlexibleTimeWindowPtrOutput) Mode() ScheduleFlexibleTimeWindowModePtrOutput { + return o.ApplyT(func(v *ScheduleFlexibleTimeWindow) *ScheduleFlexibleTimeWindowMode { + if v == nil { + return nil + } + return &v.Mode + }).(ScheduleFlexibleTimeWindowModePtrOutput) +} + +// Tag to associate with the resource. +type ScheduleGroupTag struct { + // Key for the tag + Key string `pulumi:"key"` + // Value for the tag + Value string `pulumi:"value"` +} + +// The custom parameter you can use to control the shard to which EventBridge Scheduler sends the event. +type ScheduleKinesisParameters struct { + // The custom parameter used as the Kinesis partition key. For more information, see Amazon Kinesis Streams Key Concepts in the Amazon Kinesis Streams Developer Guide. + PartitionKey string `pulumi:"partitionKey"` +} + +// ScheduleKinesisParametersInput is an input type that accepts ScheduleKinesisParametersArgs and ScheduleKinesisParametersOutput values. +// You can construct a concrete instance of `ScheduleKinesisParametersInput` via: +// +// ScheduleKinesisParametersArgs{...} +type ScheduleKinesisParametersInput interface { + pulumi.Input + + ToScheduleKinesisParametersOutput() ScheduleKinesisParametersOutput + ToScheduleKinesisParametersOutputWithContext(context.Context) ScheduleKinesisParametersOutput +} + +// The custom parameter you can use to control the shard to which EventBridge Scheduler sends the event. +type ScheduleKinesisParametersArgs struct { + // The custom parameter used as the Kinesis partition key. For more information, see Amazon Kinesis Streams Key Concepts in the Amazon Kinesis Streams Developer Guide. + PartitionKey pulumi.StringInput `pulumi:"partitionKey"` +} + +func (ScheduleKinesisParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleKinesisParameters)(nil)).Elem() +} + +func (i ScheduleKinesisParametersArgs) ToScheduleKinesisParametersOutput() ScheduleKinesisParametersOutput { + return i.ToScheduleKinesisParametersOutputWithContext(context.Background()) +} + +func (i ScheduleKinesisParametersArgs) ToScheduleKinesisParametersOutputWithContext(ctx context.Context) ScheduleKinesisParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleKinesisParametersOutput) +} + +func (i ScheduleKinesisParametersArgs) ToScheduleKinesisParametersPtrOutput() ScheduleKinesisParametersPtrOutput { + return i.ToScheduleKinesisParametersPtrOutputWithContext(context.Background()) +} + +func (i ScheduleKinesisParametersArgs) ToScheduleKinesisParametersPtrOutputWithContext(ctx context.Context) ScheduleKinesisParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleKinesisParametersOutput).ToScheduleKinesisParametersPtrOutputWithContext(ctx) +} + +// ScheduleKinesisParametersPtrInput is an input type that accepts ScheduleKinesisParametersArgs, ScheduleKinesisParametersPtr and ScheduleKinesisParametersPtrOutput values. +// You can construct a concrete instance of `ScheduleKinesisParametersPtrInput` via: +// +// ScheduleKinesisParametersArgs{...} +// +// or: +// +// nil +type ScheduleKinesisParametersPtrInput interface { + pulumi.Input + + ToScheduleKinesisParametersPtrOutput() ScheduleKinesisParametersPtrOutput + ToScheduleKinesisParametersPtrOutputWithContext(context.Context) ScheduleKinesisParametersPtrOutput +} + +type scheduleKinesisParametersPtrType ScheduleKinesisParametersArgs + +func ScheduleKinesisParametersPtr(v *ScheduleKinesisParametersArgs) ScheduleKinesisParametersPtrInput { + return (*scheduleKinesisParametersPtrType)(v) +} + +func (*scheduleKinesisParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleKinesisParameters)(nil)).Elem() +} + +func (i *scheduleKinesisParametersPtrType) ToScheduleKinesisParametersPtrOutput() ScheduleKinesisParametersPtrOutput { + return i.ToScheduleKinesisParametersPtrOutputWithContext(context.Background()) +} + +func (i *scheduleKinesisParametersPtrType) ToScheduleKinesisParametersPtrOutputWithContext(ctx context.Context) ScheduleKinesisParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleKinesisParametersPtrOutput) +} + +// The custom parameter you can use to control the shard to which EventBridge Scheduler sends the event. +type ScheduleKinesisParametersOutput struct{ *pulumi.OutputState } + +func (ScheduleKinesisParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleKinesisParameters)(nil)).Elem() +} + +func (o ScheduleKinesisParametersOutput) ToScheduleKinesisParametersOutput() ScheduleKinesisParametersOutput { + return o +} + +func (o ScheduleKinesisParametersOutput) ToScheduleKinesisParametersOutputWithContext(ctx context.Context) ScheduleKinesisParametersOutput { + return o +} + +func (o ScheduleKinesisParametersOutput) ToScheduleKinesisParametersPtrOutput() ScheduleKinesisParametersPtrOutput { + return o.ToScheduleKinesisParametersPtrOutputWithContext(context.Background()) +} + +func (o ScheduleKinesisParametersOutput) ToScheduleKinesisParametersPtrOutputWithContext(ctx context.Context) ScheduleKinesisParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleKinesisParameters) *ScheduleKinesisParameters { + return &v + }).(ScheduleKinesisParametersPtrOutput) +} + +// The custom parameter used as the Kinesis partition key. For more information, see Amazon Kinesis Streams Key Concepts in the Amazon Kinesis Streams Developer Guide. +func (o ScheduleKinesisParametersOutput) PartitionKey() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleKinesisParameters) string { return v.PartitionKey }).(pulumi.StringOutput) +} + +type ScheduleKinesisParametersPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleKinesisParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleKinesisParameters)(nil)).Elem() +} + +func (o ScheduleKinesisParametersPtrOutput) ToScheduleKinesisParametersPtrOutput() ScheduleKinesisParametersPtrOutput { + return o +} + +func (o ScheduleKinesisParametersPtrOutput) ToScheduleKinesisParametersPtrOutputWithContext(ctx context.Context) ScheduleKinesisParametersPtrOutput { + return o +} + +func (o ScheduleKinesisParametersPtrOutput) Elem() ScheduleKinesisParametersOutput { + return o.ApplyT(func(v *ScheduleKinesisParameters) ScheduleKinesisParameters { + if v != nil { + return *v + } + var ret ScheduleKinesisParameters + return ret + }).(ScheduleKinesisParametersOutput) +} + +// The custom parameter used as the Kinesis partition key. For more information, see Amazon Kinesis Streams Key Concepts in the Amazon Kinesis Streams Developer Guide. +func (o ScheduleKinesisParametersPtrOutput) PartitionKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleKinesisParameters) *string { + if v == nil { + return nil + } + return &v.PartitionKey + }).(pulumi.StringPtrOutput) +} + +// This structure specifies the network configuration for an ECS task. +type ScheduleNetworkConfiguration struct { + // Specifies the Amazon VPC subnets and security groups for the task, and whether a public IP address is to be used. This structure is relevant only for ECS tasks that use the awsvpc network mode. + AwsvpcConfiguration *ScheduleAwsVpcConfiguration `pulumi:"awsvpcConfiguration"` +} + +// ScheduleNetworkConfigurationInput is an input type that accepts ScheduleNetworkConfigurationArgs and ScheduleNetworkConfigurationOutput values. +// You can construct a concrete instance of `ScheduleNetworkConfigurationInput` via: +// +// ScheduleNetworkConfigurationArgs{...} +type ScheduleNetworkConfigurationInput interface { + pulumi.Input + + ToScheduleNetworkConfigurationOutput() ScheduleNetworkConfigurationOutput + ToScheduleNetworkConfigurationOutputWithContext(context.Context) ScheduleNetworkConfigurationOutput +} + +// This structure specifies the network configuration for an ECS task. +type ScheduleNetworkConfigurationArgs struct { + // Specifies the Amazon VPC subnets and security groups for the task, and whether a public IP address is to be used. This structure is relevant only for ECS tasks that use the awsvpc network mode. + AwsvpcConfiguration ScheduleAwsVpcConfigurationPtrInput `pulumi:"awsvpcConfiguration"` +} + +func (ScheduleNetworkConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleNetworkConfiguration)(nil)).Elem() +} + +func (i ScheduleNetworkConfigurationArgs) ToScheduleNetworkConfigurationOutput() ScheduleNetworkConfigurationOutput { + return i.ToScheduleNetworkConfigurationOutputWithContext(context.Background()) +} + +func (i ScheduleNetworkConfigurationArgs) ToScheduleNetworkConfigurationOutputWithContext(ctx context.Context) ScheduleNetworkConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleNetworkConfigurationOutput) +} + +func (i ScheduleNetworkConfigurationArgs) ToScheduleNetworkConfigurationPtrOutput() ScheduleNetworkConfigurationPtrOutput { + return i.ToScheduleNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ScheduleNetworkConfigurationArgs) ToScheduleNetworkConfigurationPtrOutputWithContext(ctx context.Context) ScheduleNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleNetworkConfigurationOutput).ToScheduleNetworkConfigurationPtrOutputWithContext(ctx) +} + +// ScheduleNetworkConfigurationPtrInput is an input type that accepts ScheduleNetworkConfigurationArgs, ScheduleNetworkConfigurationPtr and ScheduleNetworkConfigurationPtrOutput values. +// You can construct a concrete instance of `ScheduleNetworkConfigurationPtrInput` via: +// +// ScheduleNetworkConfigurationArgs{...} +// +// or: +// +// nil +type ScheduleNetworkConfigurationPtrInput interface { + pulumi.Input + + ToScheduleNetworkConfigurationPtrOutput() ScheduleNetworkConfigurationPtrOutput + ToScheduleNetworkConfigurationPtrOutputWithContext(context.Context) ScheduleNetworkConfigurationPtrOutput +} + +type scheduleNetworkConfigurationPtrType ScheduleNetworkConfigurationArgs + +func ScheduleNetworkConfigurationPtr(v *ScheduleNetworkConfigurationArgs) ScheduleNetworkConfigurationPtrInput { + return (*scheduleNetworkConfigurationPtrType)(v) +} + +func (*scheduleNetworkConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleNetworkConfiguration)(nil)).Elem() +} + +func (i *scheduleNetworkConfigurationPtrType) ToScheduleNetworkConfigurationPtrOutput() ScheduleNetworkConfigurationPtrOutput { + return i.ToScheduleNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *scheduleNetworkConfigurationPtrType) ToScheduleNetworkConfigurationPtrOutputWithContext(ctx context.Context) ScheduleNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleNetworkConfigurationPtrOutput) +} + +// This structure specifies the network configuration for an ECS task. +type ScheduleNetworkConfigurationOutput struct{ *pulumi.OutputState } + +func (ScheduleNetworkConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleNetworkConfiguration)(nil)).Elem() +} + +func (o ScheduleNetworkConfigurationOutput) ToScheduleNetworkConfigurationOutput() ScheduleNetworkConfigurationOutput { + return o +} + +func (o ScheduleNetworkConfigurationOutput) ToScheduleNetworkConfigurationOutputWithContext(ctx context.Context) ScheduleNetworkConfigurationOutput { + return o +} + +func (o ScheduleNetworkConfigurationOutput) ToScheduleNetworkConfigurationPtrOutput() ScheduleNetworkConfigurationPtrOutput { + return o.ToScheduleNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ScheduleNetworkConfigurationOutput) ToScheduleNetworkConfigurationPtrOutputWithContext(ctx context.Context) ScheduleNetworkConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleNetworkConfiguration) *ScheduleNetworkConfiguration { + return &v + }).(ScheduleNetworkConfigurationPtrOutput) +} + +// Specifies the Amazon VPC subnets and security groups for the task, and whether a public IP address is to be used. This structure is relevant only for ECS tasks that use the awsvpc network mode. +func (o ScheduleNetworkConfigurationOutput) AwsvpcConfiguration() ScheduleAwsVpcConfigurationPtrOutput { + return o.ApplyT(func(v ScheduleNetworkConfiguration) *ScheduleAwsVpcConfiguration { return v.AwsvpcConfiguration }).(ScheduleAwsVpcConfigurationPtrOutput) +} + +type ScheduleNetworkConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleNetworkConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleNetworkConfiguration)(nil)).Elem() +} + +func (o ScheduleNetworkConfigurationPtrOutput) ToScheduleNetworkConfigurationPtrOutput() ScheduleNetworkConfigurationPtrOutput { + return o +} + +func (o ScheduleNetworkConfigurationPtrOutput) ToScheduleNetworkConfigurationPtrOutputWithContext(ctx context.Context) ScheduleNetworkConfigurationPtrOutput { + return o +} + +func (o ScheduleNetworkConfigurationPtrOutput) Elem() ScheduleNetworkConfigurationOutput { + return o.ApplyT(func(v *ScheduleNetworkConfiguration) ScheduleNetworkConfiguration { + if v != nil { + return *v + } + var ret ScheduleNetworkConfiguration + return ret + }).(ScheduleNetworkConfigurationOutput) +} + +// Specifies the Amazon VPC subnets and security groups for the task, and whether a public IP address is to be used. This structure is relevant only for ECS tasks that use the awsvpc network mode. +func (o ScheduleNetworkConfigurationPtrOutput) AwsvpcConfiguration() ScheduleAwsVpcConfigurationPtrOutput { + return o.ApplyT(func(v *ScheduleNetworkConfiguration) *ScheduleAwsVpcConfiguration { + if v == nil { + return nil + } + return v.AwsvpcConfiguration + }).(ScheduleAwsVpcConfigurationPtrOutput) +} + +// An object representing a constraint on task placement. +type SchedulePlacementConstraint struct { + // A cluster query language expression to apply to the constraint. You cannot specify an expression if the constraint type is distinctInstance. To learn more, see Cluster Query Language in the Amazon Elastic Container Service Developer Guide. + Expression *string `pulumi:"expression"` + // The type of constraint. Use `distinctInstance` to ensure that each task in a particular group is running on a different container instance. Use `memberOf` to restrict the selection to a group of valid candidates. + Type *SchedulePlacementConstraintType `pulumi:"type"` +} + +// SchedulePlacementConstraintInput is an input type that accepts SchedulePlacementConstraintArgs and SchedulePlacementConstraintOutput values. +// You can construct a concrete instance of `SchedulePlacementConstraintInput` via: +// +// SchedulePlacementConstraintArgs{...} +type SchedulePlacementConstraintInput interface { + pulumi.Input + + ToSchedulePlacementConstraintOutput() SchedulePlacementConstraintOutput + ToSchedulePlacementConstraintOutputWithContext(context.Context) SchedulePlacementConstraintOutput +} + +// An object representing a constraint on task placement. +type SchedulePlacementConstraintArgs struct { + // A cluster query language expression to apply to the constraint. You cannot specify an expression if the constraint type is distinctInstance. To learn more, see Cluster Query Language in the Amazon Elastic Container Service Developer Guide. + Expression pulumi.StringPtrInput `pulumi:"expression"` + // The type of constraint. Use `distinctInstance` to ensure that each task in a particular group is running on a different container instance. Use `memberOf` to restrict the selection to a group of valid candidates. + Type SchedulePlacementConstraintTypePtrInput `pulumi:"type"` +} + +func (SchedulePlacementConstraintArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementConstraint)(nil)).Elem() +} + +func (i SchedulePlacementConstraintArgs) ToSchedulePlacementConstraintOutput() SchedulePlacementConstraintOutput { + return i.ToSchedulePlacementConstraintOutputWithContext(context.Background()) +} + +func (i SchedulePlacementConstraintArgs) ToSchedulePlacementConstraintOutputWithContext(ctx context.Context) SchedulePlacementConstraintOutput { + return pulumi.ToOutputWithContext(ctx, i).(SchedulePlacementConstraintOutput) +} + +// SchedulePlacementConstraintArrayInput is an input type that accepts SchedulePlacementConstraintArray and SchedulePlacementConstraintArrayOutput values. +// You can construct a concrete instance of `SchedulePlacementConstraintArrayInput` via: +// +// SchedulePlacementConstraintArray{ SchedulePlacementConstraintArgs{...} } +type SchedulePlacementConstraintArrayInput interface { + pulumi.Input + + ToSchedulePlacementConstraintArrayOutput() SchedulePlacementConstraintArrayOutput + ToSchedulePlacementConstraintArrayOutputWithContext(context.Context) SchedulePlacementConstraintArrayOutput +} + +type SchedulePlacementConstraintArray []SchedulePlacementConstraintInput + +func (SchedulePlacementConstraintArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SchedulePlacementConstraint)(nil)).Elem() +} + +func (i SchedulePlacementConstraintArray) ToSchedulePlacementConstraintArrayOutput() SchedulePlacementConstraintArrayOutput { + return i.ToSchedulePlacementConstraintArrayOutputWithContext(context.Background()) +} + +func (i SchedulePlacementConstraintArray) ToSchedulePlacementConstraintArrayOutputWithContext(ctx context.Context) SchedulePlacementConstraintArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SchedulePlacementConstraintArrayOutput) +} + +// An object representing a constraint on task placement. +type SchedulePlacementConstraintOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementConstraintOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementConstraint)(nil)).Elem() +} + +func (o SchedulePlacementConstraintOutput) ToSchedulePlacementConstraintOutput() SchedulePlacementConstraintOutput { + return o +} + +func (o SchedulePlacementConstraintOutput) ToSchedulePlacementConstraintOutputWithContext(ctx context.Context) SchedulePlacementConstraintOutput { + return o +} + +// A cluster query language expression to apply to the constraint. You cannot specify an expression if the constraint type is distinctInstance. To learn more, see Cluster Query Language in the Amazon Elastic Container Service Developer Guide. +func (o SchedulePlacementConstraintOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v SchedulePlacementConstraint) *string { return v.Expression }).(pulumi.StringPtrOutput) +} + +// The type of constraint. Use `distinctInstance` to ensure that each task in a particular group is running on a different container instance. Use `memberOf` to restrict the selection to a group of valid candidates. +func (o SchedulePlacementConstraintOutput) Type() SchedulePlacementConstraintTypePtrOutput { + return o.ApplyT(func(v SchedulePlacementConstraint) *SchedulePlacementConstraintType { return v.Type }).(SchedulePlacementConstraintTypePtrOutput) +} + +type SchedulePlacementConstraintArrayOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementConstraintArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SchedulePlacementConstraint)(nil)).Elem() +} + +func (o SchedulePlacementConstraintArrayOutput) ToSchedulePlacementConstraintArrayOutput() SchedulePlacementConstraintArrayOutput { + return o +} + +func (o SchedulePlacementConstraintArrayOutput) ToSchedulePlacementConstraintArrayOutputWithContext(ctx context.Context) SchedulePlacementConstraintArrayOutput { + return o +} + +func (o SchedulePlacementConstraintArrayOutput) Index(i pulumi.IntInput) SchedulePlacementConstraintOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SchedulePlacementConstraint { + return vs[0].([]SchedulePlacementConstraint)[vs[1].(int)] + }).(SchedulePlacementConstraintOutput) +} + +// The task placement strategy for a task or service. +type SchedulePlacementStrategy struct { + // The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used. + Field *string `pulumi:"field"` + // The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task). + Type *SchedulePlacementStrategyType `pulumi:"type"` +} + +// SchedulePlacementStrategyInput is an input type that accepts SchedulePlacementStrategyArgs and SchedulePlacementStrategyOutput values. +// You can construct a concrete instance of `SchedulePlacementStrategyInput` via: +// +// SchedulePlacementStrategyArgs{...} +type SchedulePlacementStrategyInput interface { + pulumi.Input + + ToSchedulePlacementStrategyOutput() SchedulePlacementStrategyOutput + ToSchedulePlacementStrategyOutputWithContext(context.Context) SchedulePlacementStrategyOutput +} + +// The task placement strategy for a task or service. +type SchedulePlacementStrategyArgs struct { + // The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used. + Field pulumi.StringPtrInput `pulumi:"field"` + // The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task). + Type SchedulePlacementStrategyTypePtrInput `pulumi:"type"` +} + +func (SchedulePlacementStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementStrategy)(nil)).Elem() +} + +func (i SchedulePlacementStrategyArgs) ToSchedulePlacementStrategyOutput() SchedulePlacementStrategyOutput { + return i.ToSchedulePlacementStrategyOutputWithContext(context.Background()) +} + +func (i SchedulePlacementStrategyArgs) ToSchedulePlacementStrategyOutputWithContext(ctx context.Context) SchedulePlacementStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(SchedulePlacementStrategyOutput) +} + +// SchedulePlacementStrategyArrayInput is an input type that accepts SchedulePlacementStrategyArray and SchedulePlacementStrategyArrayOutput values. +// You can construct a concrete instance of `SchedulePlacementStrategyArrayInput` via: +// +// SchedulePlacementStrategyArray{ SchedulePlacementStrategyArgs{...} } +type SchedulePlacementStrategyArrayInput interface { + pulumi.Input + + ToSchedulePlacementStrategyArrayOutput() SchedulePlacementStrategyArrayOutput + ToSchedulePlacementStrategyArrayOutputWithContext(context.Context) SchedulePlacementStrategyArrayOutput +} + +type SchedulePlacementStrategyArray []SchedulePlacementStrategyInput + +func (SchedulePlacementStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SchedulePlacementStrategy)(nil)).Elem() +} + +func (i SchedulePlacementStrategyArray) ToSchedulePlacementStrategyArrayOutput() SchedulePlacementStrategyArrayOutput { + return i.ToSchedulePlacementStrategyArrayOutputWithContext(context.Background()) +} + +func (i SchedulePlacementStrategyArray) ToSchedulePlacementStrategyArrayOutputWithContext(ctx context.Context) SchedulePlacementStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SchedulePlacementStrategyArrayOutput) +} + +// The task placement strategy for a task or service. +type SchedulePlacementStrategyOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SchedulePlacementStrategy)(nil)).Elem() +} + +func (o SchedulePlacementStrategyOutput) ToSchedulePlacementStrategyOutput() SchedulePlacementStrategyOutput { + return o +} + +func (o SchedulePlacementStrategyOutput) ToSchedulePlacementStrategyOutputWithContext(ctx context.Context) SchedulePlacementStrategyOutput { + return o +} + +// The field to apply the placement strategy against. For the spread placement strategy, valid values are instanceId (or host, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as attribute:ecs.availability-zone. For the binpack placement strategy, valid values are cpu and memory. For the random placement strategy, this field is not used. +func (o SchedulePlacementStrategyOutput) Field() pulumi.StringPtrOutput { + return o.ApplyT(func(v SchedulePlacementStrategy) *string { return v.Field }).(pulumi.StringPtrOutput) +} + +// The type of placement strategy. The random placement strategy randomly places tasks on available candidates. The spread placement strategy spreads placement across available candidates evenly based on the field parameter. The binpack strategy places tasks on available candidates that have the least available amount of the resource that is specified with the field parameter. For example, if you binpack on memory, a task is placed on the instance with the least amount of remaining memory (but still enough to run the task). +func (o SchedulePlacementStrategyOutput) Type() SchedulePlacementStrategyTypePtrOutput { + return o.ApplyT(func(v SchedulePlacementStrategy) *SchedulePlacementStrategyType { return v.Type }).(SchedulePlacementStrategyTypePtrOutput) +} + +type SchedulePlacementStrategyArrayOutput struct{ *pulumi.OutputState } + +func (SchedulePlacementStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SchedulePlacementStrategy)(nil)).Elem() +} + +func (o SchedulePlacementStrategyArrayOutput) ToSchedulePlacementStrategyArrayOutput() SchedulePlacementStrategyArrayOutput { + return o +} + +func (o SchedulePlacementStrategyArrayOutput) ToSchedulePlacementStrategyArrayOutputWithContext(ctx context.Context) SchedulePlacementStrategyArrayOutput { + return o +} + +func (o SchedulePlacementStrategyArrayOutput) Index(i pulumi.IntInput) SchedulePlacementStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SchedulePlacementStrategy { + return vs[0].([]SchedulePlacementStrategy)[vs[1].(int)] + }).(SchedulePlacementStrategyOutput) +} + +// A RetryPolicy object that includes information about the retry policy settings. +type ScheduleRetryPolicy struct { + // The maximum amount of time, in seconds, to continue to make retry attempts. + MaximumEventAgeInSeconds *float64 `pulumi:"maximumEventAgeInSeconds"` + // The maximum number of retry attempts to make before the request fails. Retry attempts with exponential backoff continue until either the maximum number of attempts is made or until the duration of the MaximumEventAgeInSeconds is reached. + MaximumRetryAttempts *float64 `pulumi:"maximumRetryAttempts"` +} + +// ScheduleRetryPolicyInput is an input type that accepts ScheduleRetryPolicyArgs and ScheduleRetryPolicyOutput values. +// You can construct a concrete instance of `ScheduleRetryPolicyInput` via: +// +// ScheduleRetryPolicyArgs{...} +type ScheduleRetryPolicyInput interface { + pulumi.Input + + ToScheduleRetryPolicyOutput() ScheduleRetryPolicyOutput + ToScheduleRetryPolicyOutputWithContext(context.Context) ScheduleRetryPolicyOutput +} + +// A RetryPolicy object that includes information about the retry policy settings. +type ScheduleRetryPolicyArgs struct { + // The maximum amount of time, in seconds, to continue to make retry attempts. + MaximumEventAgeInSeconds pulumi.Float64PtrInput `pulumi:"maximumEventAgeInSeconds"` + // The maximum number of retry attempts to make before the request fails. Retry attempts with exponential backoff continue until either the maximum number of attempts is made or until the duration of the MaximumEventAgeInSeconds is reached. + MaximumRetryAttempts pulumi.Float64PtrInput `pulumi:"maximumRetryAttempts"` +} + +func (ScheduleRetryPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleRetryPolicy)(nil)).Elem() +} + +func (i ScheduleRetryPolicyArgs) ToScheduleRetryPolicyOutput() ScheduleRetryPolicyOutput { + return i.ToScheduleRetryPolicyOutputWithContext(context.Background()) +} + +func (i ScheduleRetryPolicyArgs) ToScheduleRetryPolicyOutputWithContext(ctx context.Context) ScheduleRetryPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleRetryPolicyOutput) +} + +func (i ScheduleRetryPolicyArgs) ToScheduleRetryPolicyPtrOutput() ScheduleRetryPolicyPtrOutput { + return i.ToScheduleRetryPolicyPtrOutputWithContext(context.Background()) +} + +func (i ScheduleRetryPolicyArgs) ToScheduleRetryPolicyPtrOutputWithContext(ctx context.Context) ScheduleRetryPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleRetryPolicyOutput).ToScheduleRetryPolicyPtrOutputWithContext(ctx) +} + +// ScheduleRetryPolicyPtrInput is an input type that accepts ScheduleRetryPolicyArgs, ScheduleRetryPolicyPtr and ScheduleRetryPolicyPtrOutput values. +// You can construct a concrete instance of `ScheduleRetryPolicyPtrInput` via: +// +// ScheduleRetryPolicyArgs{...} +// +// or: +// +// nil +type ScheduleRetryPolicyPtrInput interface { + pulumi.Input + + ToScheduleRetryPolicyPtrOutput() ScheduleRetryPolicyPtrOutput + ToScheduleRetryPolicyPtrOutputWithContext(context.Context) ScheduleRetryPolicyPtrOutput +} + +type scheduleRetryPolicyPtrType ScheduleRetryPolicyArgs + +func ScheduleRetryPolicyPtr(v *ScheduleRetryPolicyArgs) ScheduleRetryPolicyPtrInput { + return (*scheduleRetryPolicyPtrType)(v) +} + +func (*scheduleRetryPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleRetryPolicy)(nil)).Elem() +} + +func (i *scheduleRetryPolicyPtrType) ToScheduleRetryPolicyPtrOutput() ScheduleRetryPolicyPtrOutput { + return i.ToScheduleRetryPolicyPtrOutputWithContext(context.Background()) +} + +func (i *scheduleRetryPolicyPtrType) ToScheduleRetryPolicyPtrOutputWithContext(ctx context.Context) ScheduleRetryPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleRetryPolicyPtrOutput) +} + +// A RetryPolicy object that includes information about the retry policy settings. +type ScheduleRetryPolicyOutput struct{ *pulumi.OutputState } + +func (ScheduleRetryPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleRetryPolicy)(nil)).Elem() +} + +func (o ScheduleRetryPolicyOutput) ToScheduleRetryPolicyOutput() ScheduleRetryPolicyOutput { + return o +} + +func (o ScheduleRetryPolicyOutput) ToScheduleRetryPolicyOutputWithContext(ctx context.Context) ScheduleRetryPolicyOutput { + return o +} + +func (o ScheduleRetryPolicyOutput) ToScheduleRetryPolicyPtrOutput() ScheduleRetryPolicyPtrOutput { + return o.ToScheduleRetryPolicyPtrOutputWithContext(context.Background()) +} + +func (o ScheduleRetryPolicyOutput) ToScheduleRetryPolicyPtrOutputWithContext(ctx context.Context) ScheduleRetryPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleRetryPolicy) *ScheduleRetryPolicy { + return &v + }).(ScheduleRetryPolicyPtrOutput) +} + +// The maximum amount of time, in seconds, to continue to make retry attempts. +func (o ScheduleRetryPolicyOutput) MaximumEventAgeInSeconds() pulumi.Float64PtrOutput { + return o.ApplyT(func(v ScheduleRetryPolicy) *float64 { return v.MaximumEventAgeInSeconds }).(pulumi.Float64PtrOutput) +} + +// The maximum number of retry attempts to make before the request fails. Retry attempts with exponential backoff continue until either the maximum number of attempts is made or until the duration of the MaximumEventAgeInSeconds is reached. +func (o ScheduleRetryPolicyOutput) MaximumRetryAttempts() pulumi.Float64PtrOutput { + return o.ApplyT(func(v ScheduleRetryPolicy) *float64 { return v.MaximumRetryAttempts }).(pulumi.Float64PtrOutput) +} + +type ScheduleRetryPolicyPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleRetryPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleRetryPolicy)(nil)).Elem() +} + +func (o ScheduleRetryPolicyPtrOutput) ToScheduleRetryPolicyPtrOutput() ScheduleRetryPolicyPtrOutput { + return o +} + +func (o ScheduleRetryPolicyPtrOutput) ToScheduleRetryPolicyPtrOutputWithContext(ctx context.Context) ScheduleRetryPolicyPtrOutput { + return o +} + +func (o ScheduleRetryPolicyPtrOutput) Elem() ScheduleRetryPolicyOutput { + return o.ApplyT(func(v *ScheduleRetryPolicy) ScheduleRetryPolicy { + if v != nil { + return *v + } + var ret ScheduleRetryPolicy + return ret + }).(ScheduleRetryPolicyOutput) +} + +// The maximum amount of time, in seconds, to continue to make retry attempts. +func (o ScheduleRetryPolicyPtrOutput) MaximumEventAgeInSeconds() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *ScheduleRetryPolicy) *float64 { + if v == nil { + return nil + } + return v.MaximumEventAgeInSeconds + }).(pulumi.Float64PtrOutput) +} + +// The maximum number of retry attempts to make before the request fails. Retry attempts with exponential backoff continue until either the maximum number of attempts is made or until the duration of the MaximumEventAgeInSeconds is reached. +func (o ScheduleRetryPolicyPtrOutput) MaximumRetryAttempts() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *ScheduleRetryPolicy) *float64 { + if v == nil { + return nil + } + return v.MaximumRetryAttempts + }).(pulumi.Float64PtrOutput) +} + +// Name/Value pair of a parameter to start execution of a SageMaker Model Building Pipeline. +type ScheduleSageMakerPipelineParameter struct { + // Name of parameter to start execution of a SageMaker Model Building Pipeline. + Name string `pulumi:"name"` + // Value of parameter to start execution of a SageMaker Model Building Pipeline. + Value string `pulumi:"value"` +} + +// ScheduleSageMakerPipelineParameterInput is an input type that accepts ScheduleSageMakerPipelineParameterArgs and ScheduleSageMakerPipelineParameterOutput values. +// You can construct a concrete instance of `ScheduleSageMakerPipelineParameterInput` via: +// +// ScheduleSageMakerPipelineParameterArgs{...} +type ScheduleSageMakerPipelineParameterInput interface { + pulumi.Input + + ToScheduleSageMakerPipelineParameterOutput() ScheduleSageMakerPipelineParameterOutput + ToScheduleSageMakerPipelineParameterOutputWithContext(context.Context) ScheduleSageMakerPipelineParameterOutput +} + +// Name/Value pair of a parameter to start execution of a SageMaker Model Building Pipeline. +type ScheduleSageMakerPipelineParameterArgs struct { + // Name of parameter to start execution of a SageMaker Model Building Pipeline. + Name pulumi.StringInput `pulumi:"name"` + // Value of parameter to start execution of a SageMaker Model Building Pipeline. + Value pulumi.StringInput `pulumi:"value"` +} + +func (ScheduleSageMakerPipelineParameterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleSageMakerPipelineParameter)(nil)).Elem() +} + +func (i ScheduleSageMakerPipelineParameterArgs) ToScheduleSageMakerPipelineParameterOutput() ScheduleSageMakerPipelineParameterOutput { + return i.ToScheduleSageMakerPipelineParameterOutputWithContext(context.Background()) +} + +func (i ScheduleSageMakerPipelineParameterArgs) ToScheduleSageMakerPipelineParameterOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParameterOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSageMakerPipelineParameterOutput) +} + +// ScheduleSageMakerPipelineParameterArrayInput is an input type that accepts ScheduleSageMakerPipelineParameterArray and ScheduleSageMakerPipelineParameterArrayOutput values. +// You can construct a concrete instance of `ScheduleSageMakerPipelineParameterArrayInput` via: +// +// ScheduleSageMakerPipelineParameterArray{ ScheduleSageMakerPipelineParameterArgs{...} } +type ScheduleSageMakerPipelineParameterArrayInput interface { + pulumi.Input + + ToScheduleSageMakerPipelineParameterArrayOutput() ScheduleSageMakerPipelineParameterArrayOutput + ToScheduleSageMakerPipelineParameterArrayOutputWithContext(context.Context) ScheduleSageMakerPipelineParameterArrayOutput +} + +type ScheduleSageMakerPipelineParameterArray []ScheduleSageMakerPipelineParameterInput + +func (ScheduleSageMakerPipelineParameterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ScheduleSageMakerPipelineParameter)(nil)).Elem() +} + +func (i ScheduleSageMakerPipelineParameterArray) ToScheduleSageMakerPipelineParameterArrayOutput() ScheduleSageMakerPipelineParameterArrayOutput { + return i.ToScheduleSageMakerPipelineParameterArrayOutputWithContext(context.Background()) +} + +func (i ScheduleSageMakerPipelineParameterArray) ToScheduleSageMakerPipelineParameterArrayOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParameterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSageMakerPipelineParameterArrayOutput) +} + +// Name/Value pair of a parameter to start execution of a SageMaker Model Building Pipeline. +type ScheduleSageMakerPipelineParameterOutput struct{ *pulumi.OutputState } + +func (ScheduleSageMakerPipelineParameterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleSageMakerPipelineParameter)(nil)).Elem() +} + +func (o ScheduleSageMakerPipelineParameterOutput) ToScheduleSageMakerPipelineParameterOutput() ScheduleSageMakerPipelineParameterOutput { + return o +} + +func (o ScheduleSageMakerPipelineParameterOutput) ToScheduleSageMakerPipelineParameterOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParameterOutput { + return o +} + +// Name of parameter to start execution of a SageMaker Model Building Pipeline. +func (o ScheduleSageMakerPipelineParameterOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleSageMakerPipelineParameter) string { return v.Name }).(pulumi.StringOutput) +} + +// Value of parameter to start execution of a SageMaker Model Building Pipeline. +func (o ScheduleSageMakerPipelineParameterOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleSageMakerPipelineParameter) string { return v.Value }).(pulumi.StringOutput) +} + +type ScheduleSageMakerPipelineParameterArrayOutput struct{ *pulumi.OutputState } + +func (ScheduleSageMakerPipelineParameterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ScheduleSageMakerPipelineParameter)(nil)).Elem() +} + +func (o ScheduleSageMakerPipelineParameterArrayOutput) ToScheduleSageMakerPipelineParameterArrayOutput() ScheduleSageMakerPipelineParameterArrayOutput { + return o +} + +func (o ScheduleSageMakerPipelineParameterArrayOutput) ToScheduleSageMakerPipelineParameterArrayOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParameterArrayOutput { + return o +} + +func (o ScheduleSageMakerPipelineParameterArrayOutput) Index(i pulumi.IntInput) ScheduleSageMakerPipelineParameterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ScheduleSageMakerPipelineParameter { + return vs[0].([]ScheduleSageMakerPipelineParameter)[vs[1].(int)] + }).(ScheduleSageMakerPipelineParameterOutput) +} + +// These are custom parameters to use when the target is a SageMaker Model Building Pipeline that starts based on AWS EventBridge Scheduler schedules. +type ScheduleSageMakerPipelineParameters struct { + // List of Parameter names and values for SageMaker Model Building Pipeline execution. + PipelineParameterList []ScheduleSageMakerPipelineParameter `pulumi:"pipelineParameterList"` +} + +// ScheduleSageMakerPipelineParametersInput is an input type that accepts ScheduleSageMakerPipelineParametersArgs and ScheduleSageMakerPipelineParametersOutput values. +// You can construct a concrete instance of `ScheduleSageMakerPipelineParametersInput` via: +// +// ScheduleSageMakerPipelineParametersArgs{...} +type ScheduleSageMakerPipelineParametersInput interface { + pulumi.Input + + ToScheduleSageMakerPipelineParametersOutput() ScheduleSageMakerPipelineParametersOutput + ToScheduleSageMakerPipelineParametersOutputWithContext(context.Context) ScheduleSageMakerPipelineParametersOutput +} + +// These are custom parameters to use when the target is a SageMaker Model Building Pipeline that starts based on AWS EventBridge Scheduler schedules. +type ScheduleSageMakerPipelineParametersArgs struct { + // List of Parameter names and values for SageMaker Model Building Pipeline execution. + PipelineParameterList ScheduleSageMakerPipelineParameterArrayInput `pulumi:"pipelineParameterList"` +} + +func (ScheduleSageMakerPipelineParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleSageMakerPipelineParameters)(nil)).Elem() +} + +func (i ScheduleSageMakerPipelineParametersArgs) ToScheduleSageMakerPipelineParametersOutput() ScheduleSageMakerPipelineParametersOutput { + return i.ToScheduleSageMakerPipelineParametersOutputWithContext(context.Background()) +} + +func (i ScheduleSageMakerPipelineParametersArgs) ToScheduleSageMakerPipelineParametersOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSageMakerPipelineParametersOutput) +} + +func (i ScheduleSageMakerPipelineParametersArgs) ToScheduleSageMakerPipelineParametersPtrOutput() ScheduleSageMakerPipelineParametersPtrOutput { + return i.ToScheduleSageMakerPipelineParametersPtrOutputWithContext(context.Background()) +} + +func (i ScheduleSageMakerPipelineParametersArgs) ToScheduleSageMakerPipelineParametersPtrOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSageMakerPipelineParametersOutput).ToScheduleSageMakerPipelineParametersPtrOutputWithContext(ctx) +} + +// ScheduleSageMakerPipelineParametersPtrInput is an input type that accepts ScheduleSageMakerPipelineParametersArgs, ScheduleSageMakerPipelineParametersPtr and ScheduleSageMakerPipelineParametersPtrOutput values. +// You can construct a concrete instance of `ScheduleSageMakerPipelineParametersPtrInput` via: +// +// ScheduleSageMakerPipelineParametersArgs{...} +// +// or: +// +// nil +type ScheduleSageMakerPipelineParametersPtrInput interface { + pulumi.Input + + ToScheduleSageMakerPipelineParametersPtrOutput() ScheduleSageMakerPipelineParametersPtrOutput + ToScheduleSageMakerPipelineParametersPtrOutputWithContext(context.Context) ScheduleSageMakerPipelineParametersPtrOutput +} + +type scheduleSageMakerPipelineParametersPtrType ScheduleSageMakerPipelineParametersArgs + +func ScheduleSageMakerPipelineParametersPtr(v *ScheduleSageMakerPipelineParametersArgs) ScheduleSageMakerPipelineParametersPtrInput { + return (*scheduleSageMakerPipelineParametersPtrType)(v) +} + +func (*scheduleSageMakerPipelineParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleSageMakerPipelineParameters)(nil)).Elem() +} + +func (i *scheduleSageMakerPipelineParametersPtrType) ToScheduleSageMakerPipelineParametersPtrOutput() ScheduleSageMakerPipelineParametersPtrOutput { + return i.ToScheduleSageMakerPipelineParametersPtrOutputWithContext(context.Background()) +} + +func (i *scheduleSageMakerPipelineParametersPtrType) ToScheduleSageMakerPipelineParametersPtrOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSageMakerPipelineParametersPtrOutput) +} + +// These are custom parameters to use when the target is a SageMaker Model Building Pipeline that starts based on AWS EventBridge Scheduler schedules. +type ScheduleSageMakerPipelineParametersOutput struct{ *pulumi.OutputState } + +func (ScheduleSageMakerPipelineParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleSageMakerPipelineParameters)(nil)).Elem() +} + +func (o ScheduleSageMakerPipelineParametersOutput) ToScheduleSageMakerPipelineParametersOutput() ScheduleSageMakerPipelineParametersOutput { + return o +} + +func (o ScheduleSageMakerPipelineParametersOutput) ToScheduleSageMakerPipelineParametersOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParametersOutput { + return o +} + +func (o ScheduleSageMakerPipelineParametersOutput) ToScheduleSageMakerPipelineParametersPtrOutput() ScheduleSageMakerPipelineParametersPtrOutput { + return o.ToScheduleSageMakerPipelineParametersPtrOutputWithContext(context.Background()) +} + +func (o ScheduleSageMakerPipelineParametersOutput) ToScheduleSageMakerPipelineParametersPtrOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleSageMakerPipelineParameters) *ScheduleSageMakerPipelineParameters { + return &v + }).(ScheduleSageMakerPipelineParametersPtrOutput) +} + +// List of Parameter names and values for SageMaker Model Building Pipeline execution. +func (o ScheduleSageMakerPipelineParametersOutput) PipelineParameterList() ScheduleSageMakerPipelineParameterArrayOutput { + return o.ApplyT(func(v ScheduleSageMakerPipelineParameters) []ScheduleSageMakerPipelineParameter { + return v.PipelineParameterList + }).(ScheduleSageMakerPipelineParameterArrayOutput) +} + +type ScheduleSageMakerPipelineParametersPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleSageMakerPipelineParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleSageMakerPipelineParameters)(nil)).Elem() +} + +func (o ScheduleSageMakerPipelineParametersPtrOutput) ToScheduleSageMakerPipelineParametersPtrOutput() ScheduleSageMakerPipelineParametersPtrOutput { + return o +} + +func (o ScheduleSageMakerPipelineParametersPtrOutput) ToScheduleSageMakerPipelineParametersPtrOutputWithContext(ctx context.Context) ScheduleSageMakerPipelineParametersPtrOutput { + return o +} + +func (o ScheduleSageMakerPipelineParametersPtrOutput) Elem() ScheduleSageMakerPipelineParametersOutput { + return o.ApplyT(func(v *ScheduleSageMakerPipelineParameters) ScheduleSageMakerPipelineParameters { + if v != nil { + return *v + } + var ret ScheduleSageMakerPipelineParameters + return ret + }).(ScheduleSageMakerPipelineParametersOutput) +} + +// List of Parameter names and values for SageMaker Model Building Pipeline execution. +func (o ScheduleSageMakerPipelineParametersPtrOutput) PipelineParameterList() ScheduleSageMakerPipelineParameterArrayOutput { + return o.ApplyT(func(v *ScheduleSageMakerPipelineParameters) []ScheduleSageMakerPipelineParameter { + if v == nil { + return nil + } + return v.PipelineParameterList + }).(ScheduleSageMakerPipelineParameterArrayOutput) +} + +// Contains the message group ID to use when the target is a FIFO queue. If you specify an SQS FIFO queue as a target, the queue must have content-based deduplication enabled. +type ScheduleSqsParameters struct { + // The FIFO message group ID to use as the target. + MessageGroupId *string `pulumi:"messageGroupId"` +} + +// ScheduleSqsParametersInput is an input type that accepts ScheduleSqsParametersArgs and ScheduleSqsParametersOutput values. +// You can construct a concrete instance of `ScheduleSqsParametersInput` via: +// +// ScheduleSqsParametersArgs{...} +type ScheduleSqsParametersInput interface { + pulumi.Input + + ToScheduleSqsParametersOutput() ScheduleSqsParametersOutput + ToScheduleSqsParametersOutputWithContext(context.Context) ScheduleSqsParametersOutput +} + +// Contains the message group ID to use when the target is a FIFO queue. If you specify an SQS FIFO queue as a target, the queue must have content-based deduplication enabled. +type ScheduleSqsParametersArgs struct { + // The FIFO message group ID to use as the target. + MessageGroupId pulumi.StringPtrInput `pulumi:"messageGroupId"` +} + +func (ScheduleSqsParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleSqsParameters)(nil)).Elem() +} + +func (i ScheduleSqsParametersArgs) ToScheduleSqsParametersOutput() ScheduleSqsParametersOutput { + return i.ToScheduleSqsParametersOutputWithContext(context.Background()) +} + +func (i ScheduleSqsParametersArgs) ToScheduleSqsParametersOutputWithContext(ctx context.Context) ScheduleSqsParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSqsParametersOutput) +} + +func (i ScheduleSqsParametersArgs) ToScheduleSqsParametersPtrOutput() ScheduleSqsParametersPtrOutput { + return i.ToScheduleSqsParametersPtrOutputWithContext(context.Background()) +} + +func (i ScheduleSqsParametersArgs) ToScheduleSqsParametersPtrOutputWithContext(ctx context.Context) ScheduleSqsParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSqsParametersOutput).ToScheduleSqsParametersPtrOutputWithContext(ctx) +} + +// ScheduleSqsParametersPtrInput is an input type that accepts ScheduleSqsParametersArgs, ScheduleSqsParametersPtr and ScheduleSqsParametersPtrOutput values. +// You can construct a concrete instance of `ScheduleSqsParametersPtrInput` via: +// +// ScheduleSqsParametersArgs{...} +// +// or: +// +// nil +type ScheduleSqsParametersPtrInput interface { + pulumi.Input + + ToScheduleSqsParametersPtrOutput() ScheduleSqsParametersPtrOutput + ToScheduleSqsParametersPtrOutputWithContext(context.Context) ScheduleSqsParametersPtrOutput +} + +type scheduleSqsParametersPtrType ScheduleSqsParametersArgs + +func ScheduleSqsParametersPtr(v *ScheduleSqsParametersArgs) ScheduleSqsParametersPtrInput { + return (*scheduleSqsParametersPtrType)(v) +} + +func (*scheduleSqsParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleSqsParameters)(nil)).Elem() +} + +func (i *scheduleSqsParametersPtrType) ToScheduleSqsParametersPtrOutput() ScheduleSqsParametersPtrOutput { + return i.ToScheduleSqsParametersPtrOutputWithContext(context.Background()) +} + +func (i *scheduleSqsParametersPtrType) ToScheduleSqsParametersPtrOutputWithContext(ctx context.Context) ScheduleSqsParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleSqsParametersPtrOutput) +} + +// Contains the message group ID to use when the target is a FIFO queue. If you specify an SQS FIFO queue as a target, the queue must have content-based deduplication enabled. +type ScheduleSqsParametersOutput struct{ *pulumi.OutputState } + +func (ScheduleSqsParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleSqsParameters)(nil)).Elem() +} + +func (o ScheduleSqsParametersOutput) ToScheduleSqsParametersOutput() ScheduleSqsParametersOutput { + return o +} + +func (o ScheduleSqsParametersOutput) ToScheduleSqsParametersOutputWithContext(ctx context.Context) ScheduleSqsParametersOutput { + return o +} + +func (o ScheduleSqsParametersOutput) ToScheduleSqsParametersPtrOutput() ScheduleSqsParametersPtrOutput { + return o.ToScheduleSqsParametersPtrOutputWithContext(context.Background()) +} + +func (o ScheduleSqsParametersOutput) ToScheduleSqsParametersPtrOutputWithContext(ctx context.Context) ScheduleSqsParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ScheduleSqsParameters) *ScheduleSqsParameters { + return &v + }).(ScheduleSqsParametersPtrOutput) +} + +// The FIFO message group ID to use as the target. +func (o ScheduleSqsParametersOutput) MessageGroupId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ScheduleSqsParameters) *string { return v.MessageGroupId }).(pulumi.StringPtrOutput) +} + +type ScheduleSqsParametersPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleSqsParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleSqsParameters)(nil)).Elem() +} + +func (o ScheduleSqsParametersPtrOutput) ToScheduleSqsParametersPtrOutput() ScheduleSqsParametersPtrOutput { + return o +} + +func (o ScheduleSqsParametersPtrOutput) ToScheduleSqsParametersPtrOutputWithContext(ctx context.Context) ScheduleSqsParametersPtrOutput { + return o +} + +func (o ScheduleSqsParametersPtrOutput) Elem() ScheduleSqsParametersOutput { + return o.ApplyT(func(v *ScheduleSqsParameters) ScheduleSqsParameters { + if v != nil { + return *v + } + var ret ScheduleSqsParameters + return ret + }).(ScheduleSqsParametersOutput) +} + +// The FIFO message group ID to use as the target. +func (o ScheduleSqsParametersPtrOutput) MessageGroupId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleSqsParameters) *string { + if v == nil { + return nil + } + return v.MessageGroupId + }).(pulumi.StringPtrOutput) +} + +// The schedule target. +type ScheduleTarget struct { + // The Amazon Resource Name (ARN) of the target. + Arn string `pulumi:"arn"` + // An object that contains information about an Amazon SQS queue that EventBridge Scheduler uses as a dead-letter queue for your schedule. If specified, EventBridge Scheduler delivers failed events that could not be successfully delivered to a target to the queue. + DeadLetterConfig *ScheduleDeadLetterConfig `pulumi:"deadLetterConfig"` + // The templated target type for the Amazon ECS [`RunTask`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) API operation. + EcsParameters *ScheduleEcsParameters `pulumi:"ecsParameters"` + // The templated target type for the EventBridge [`PutEvents`](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html) API operation. + EventBridgeParameters *ScheduleEventBridgeParameters `pulumi:"eventBridgeParameters"` + // The text, or well-formed JSON, passed to the target. If you are configuring a templated Lambda, AWS Step Functions, or Amazon EventBridge target, the input must be a well-formed JSON. For all other target types, a JSON is not required. If you do not specify anything for this field, EventBridge Scheduler delivers a default notification to the target. + Input *string `pulumi:"input"` + // The templated target type for the Amazon Kinesis [`PutRecord`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) API operation. + KinesisParameters *ScheduleKinesisParameters `pulumi:"kinesisParameters"` + // A `RetryPolicy` object that includes information about the retry policy settings, including the maximum age of an event, and the maximum number of times EventBridge Scheduler will try to deliver the event to a target. + RetryPolicy *ScheduleRetryPolicy `pulumi:"retryPolicy"` + // The Amazon Resource Name (ARN) of the IAM role to be used for this target when the schedule is triggered. + RoleArn string `pulumi:"roleArn"` + // The templated target type for the Amazon SageMaker [`StartPipelineExecution`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html) API operation. + SageMakerPipelineParameters *ScheduleSageMakerPipelineParameters `pulumi:"sageMakerPipelineParameters"` + // The templated target type for the Amazon SQS [`SendMessage`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) API operation. Contains the message group ID to use when the target is a FIFO queue. If you specify an Amazon SQS FIFO queue as a target, the queue must have content-based deduplication enabled. For more information, see [Using the Amazon SQS message deduplication ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html) in the *Amazon SQS Developer Guide* . + SqsParameters *ScheduleSqsParameters `pulumi:"sqsParameters"` +} + +// ScheduleTargetInput is an input type that accepts ScheduleTargetArgs and ScheduleTargetOutput values. +// You can construct a concrete instance of `ScheduleTargetInput` via: +// +// ScheduleTargetArgs{...} +type ScheduleTargetInput interface { + pulumi.Input + + ToScheduleTargetOutput() ScheduleTargetOutput + ToScheduleTargetOutputWithContext(context.Context) ScheduleTargetOutput +} + +// The schedule target. +type ScheduleTargetArgs struct { + // The Amazon Resource Name (ARN) of the target. + Arn pulumi.StringInput `pulumi:"arn"` + // An object that contains information about an Amazon SQS queue that EventBridge Scheduler uses as a dead-letter queue for your schedule. If specified, EventBridge Scheduler delivers failed events that could not be successfully delivered to a target to the queue. + DeadLetterConfig ScheduleDeadLetterConfigPtrInput `pulumi:"deadLetterConfig"` + // The templated target type for the Amazon ECS [`RunTask`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) API operation. + EcsParameters ScheduleEcsParametersPtrInput `pulumi:"ecsParameters"` + // The templated target type for the EventBridge [`PutEvents`](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html) API operation. + EventBridgeParameters ScheduleEventBridgeParametersPtrInput `pulumi:"eventBridgeParameters"` + // The text, or well-formed JSON, passed to the target. If you are configuring a templated Lambda, AWS Step Functions, or Amazon EventBridge target, the input must be a well-formed JSON. For all other target types, a JSON is not required. If you do not specify anything for this field, EventBridge Scheduler delivers a default notification to the target. + Input pulumi.StringPtrInput `pulumi:"input"` + // The templated target type for the Amazon Kinesis [`PutRecord`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) API operation. + KinesisParameters ScheduleKinesisParametersPtrInput `pulumi:"kinesisParameters"` + // A `RetryPolicy` object that includes information about the retry policy settings, including the maximum age of an event, and the maximum number of times EventBridge Scheduler will try to deliver the event to a target. + RetryPolicy ScheduleRetryPolicyPtrInput `pulumi:"retryPolicy"` + // The Amazon Resource Name (ARN) of the IAM role to be used for this target when the schedule is triggered. + RoleArn pulumi.StringInput `pulumi:"roleArn"` + // The templated target type for the Amazon SageMaker [`StartPipelineExecution`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html) API operation. + SageMakerPipelineParameters ScheduleSageMakerPipelineParametersPtrInput `pulumi:"sageMakerPipelineParameters"` + // The templated target type for the Amazon SQS [`SendMessage`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) API operation. Contains the message group ID to use when the target is a FIFO queue. If you specify an Amazon SQS FIFO queue as a target, the queue must have content-based deduplication enabled. For more information, see [Using the Amazon SQS message deduplication ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html) in the *Amazon SQS Developer Guide* . + SqsParameters ScheduleSqsParametersPtrInput `pulumi:"sqsParameters"` +} + +func (ScheduleTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleTarget)(nil)).Elem() +} + +func (i ScheduleTargetArgs) ToScheduleTargetOutput() ScheduleTargetOutput { + return i.ToScheduleTargetOutputWithContext(context.Background()) +} + +func (i ScheduleTargetArgs) ToScheduleTargetOutputWithContext(ctx context.Context) ScheduleTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleTargetOutput) +} + +// The schedule target. +type ScheduleTargetOutput struct{ *pulumi.OutputState } + +func (ScheduleTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ScheduleTarget)(nil)).Elem() +} + +func (o ScheduleTargetOutput) ToScheduleTargetOutput() ScheduleTargetOutput { + return o +} + +func (o ScheduleTargetOutput) ToScheduleTargetOutputWithContext(ctx context.Context) ScheduleTargetOutput { + return o +} + +// The Amazon Resource Name (ARN) of the target. +func (o ScheduleTargetOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleTarget) string { return v.Arn }).(pulumi.StringOutput) +} + +// An object that contains information about an Amazon SQS queue that EventBridge Scheduler uses as a dead-letter queue for your schedule. If specified, EventBridge Scheduler delivers failed events that could not be successfully delivered to a target to the queue. +func (o ScheduleTargetOutput) DeadLetterConfig() ScheduleDeadLetterConfigPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *ScheduleDeadLetterConfig { return v.DeadLetterConfig }).(ScheduleDeadLetterConfigPtrOutput) +} + +// The templated target type for the Amazon ECS [`RunTask`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) API operation. +func (o ScheduleTargetOutput) EcsParameters() ScheduleEcsParametersPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *ScheduleEcsParameters { return v.EcsParameters }).(ScheduleEcsParametersPtrOutput) +} + +// The templated target type for the EventBridge [`PutEvents`](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html) API operation. +func (o ScheduleTargetOutput) EventBridgeParameters() ScheduleEventBridgeParametersPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *ScheduleEventBridgeParameters { return v.EventBridgeParameters }).(ScheduleEventBridgeParametersPtrOutput) +} + +// The text, or well-formed JSON, passed to the target. If you are configuring a templated Lambda, AWS Step Functions, or Amazon EventBridge target, the input must be a well-formed JSON. For all other target types, a JSON is not required. If you do not specify anything for this field, EventBridge Scheduler delivers a default notification to the target. +func (o ScheduleTargetOutput) Input() pulumi.StringPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *string { return v.Input }).(pulumi.StringPtrOutput) +} + +// The templated target type for the Amazon Kinesis [`PutRecord`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) API operation. +func (o ScheduleTargetOutput) KinesisParameters() ScheduleKinesisParametersPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *ScheduleKinesisParameters { return v.KinesisParameters }).(ScheduleKinesisParametersPtrOutput) +} + +// A `RetryPolicy` object that includes information about the retry policy settings, including the maximum age of an event, and the maximum number of times EventBridge Scheduler will try to deliver the event to a target. +func (o ScheduleTargetOutput) RetryPolicy() ScheduleRetryPolicyPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *ScheduleRetryPolicy { return v.RetryPolicy }).(ScheduleRetryPolicyPtrOutput) +} + +// The Amazon Resource Name (ARN) of the IAM role to be used for this target when the schedule is triggered. +func (o ScheduleTargetOutput) RoleArn() pulumi.StringOutput { + return o.ApplyT(func(v ScheduleTarget) string { return v.RoleArn }).(pulumi.StringOutput) +} + +// The templated target type for the Amazon SageMaker [`StartPipelineExecution`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html) API operation. +func (o ScheduleTargetOutput) SageMakerPipelineParameters() ScheduleSageMakerPipelineParametersPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *ScheduleSageMakerPipelineParameters { return v.SageMakerPipelineParameters }).(ScheduleSageMakerPipelineParametersPtrOutput) +} + +// The templated target type for the Amazon SQS [`SendMessage`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) API operation. Contains the message group ID to use when the target is a FIFO queue. If you specify an Amazon SQS FIFO queue as a target, the queue must have content-based deduplication enabled. For more information, see [Using the Amazon SQS message deduplication ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html) in the *Amazon SQS Developer Guide* . +func (o ScheduleTargetOutput) SqsParameters() ScheduleSqsParametersPtrOutput { + return o.ApplyT(func(v ScheduleTarget) *ScheduleSqsParameters { return v.SqsParameters }).(ScheduleSqsParametersPtrOutput) +} + +type ScheduleTargetPtrOutput struct{ *pulumi.OutputState } + +func (ScheduleTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleTarget)(nil)).Elem() +} + +func (o ScheduleTargetPtrOutput) ToScheduleTargetPtrOutput() ScheduleTargetPtrOutput { + return o +} + +func (o ScheduleTargetPtrOutput) ToScheduleTargetPtrOutputWithContext(ctx context.Context) ScheduleTargetPtrOutput { + return o +} + +func (o ScheduleTargetPtrOutput) Elem() ScheduleTargetOutput { + return o.ApplyT(func(v *ScheduleTarget) ScheduleTarget { + if v != nil { + return *v + } + var ret ScheduleTarget + return ret + }).(ScheduleTargetOutput) +} + +// The Amazon Resource Name (ARN) of the target. +func (o ScheduleTargetPtrOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *string { + if v == nil { + return nil + } + return &v.Arn + }).(pulumi.StringPtrOutput) +} + +// An object that contains information about an Amazon SQS queue that EventBridge Scheduler uses as a dead-letter queue for your schedule. If specified, EventBridge Scheduler delivers failed events that could not be successfully delivered to a target to the queue. +func (o ScheduleTargetPtrOutput) DeadLetterConfig() ScheduleDeadLetterConfigPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *ScheduleDeadLetterConfig { + if v == nil { + return nil + } + return v.DeadLetterConfig + }).(ScheduleDeadLetterConfigPtrOutput) +} + +// The templated target type for the Amazon ECS [`RunTask`](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) API operation. +func (o ScheduleTargetPtrOutput) EcsParameters() ScheduleEcsParametersPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *ScheduleEcsParameters { + if v == nil { + return nil + } + return v.EcsParameters + }).(ScheduleEcsParametersPtrOutput) +} + +// The templated target type for the EventBridge [`PutEvents`](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html) API operation. +func (o ScheduleTargetPtrOutput) EventBridgeParameters() ScheduleEventBridgeParametersPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *ScheduleEventBridgeParameters { + if v == nil { + return nil + } + return v.EventBridgeParameters + }).(ScheduleEventBridgeParametersPtrOutput) +} + +// The text, or well-formed JSON, passed to the target. If you are configuring a templated Lambda, AWS Step Functions, or Amazon EventBridge target, the input must be a well-formed JSON. For all other target types, a JSON is not required. If you do not specify anything for this field, EventBridge Scheduler delivers a default notification to the target. +func (o ScheduleTargetPtrOutput) Input() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *string { + if v == nil { + return nil + } + return v.Input + }).(pulumi.StringPtrOutput) +} + +// The templated target type for the Amazon Kinesis [`PutRecord`](https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecord.html) API operation. +func (o ScheduleTargetPtrOutput) KinesisParameters() ScheduleKinesisParametersPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *ScheduleKinesisParameters { + if v == nil { + return nil + } + return v.KinesisParameters + }).(ScheduleKinesisParametersPtrOutput) +} + +// A `RetryPolicy` object that includes information about the retry policy settings, including the maximum age of an event, and the maximum number of times EventBridge Scheduler will try to deliver the event to a target. +func (o ScheduleTargetPtrOutput) RetryPolicy() ScheduleRetryPolicyPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *ScheduleRetryPolicy { + if v == nil { + return nil + } + return v.RetryPolicy + }).(ScheduleRetryPolicyPtrOutput) +} + +// The Amazon Resource Name (ARN) of the IAM role to be used for this target when the schedule is triggered. +func (o ScheduleTargetPtrOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *string { + if v == nil { + return nil + } + return &v.RoleArn + }).(pulumi.StringPtrOutput) +} + +// The templated target type for the Amazon SageMaker [`StartPipelineExecution`](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_StartPipelineExecution.html) API operation. +func (o ScheduleTargetPtrOutput) SageMakerPipelineParameters() ScheduleSageMakerPipelineParametersPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *ScheduleSageMakerPipelineParameters { + if v == nil { + return nil + } + return v.SageMakerPipelineParameters + }).(ScheduleSageMakerPipelineParametersPtrOutput) +} + +// The templated target type for the Amazon SQS [`SendMessage`](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html) API operation. Contains the message group ID to use when the target is a FIFO queue. If you specify an Amazon SQS FIFO queue as a target, the queue must have content-based deduplication enabled. For more information, see [Using the Amazon SQS message deduplication ID](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/using-messagededuplicationid-property.html) in the *Amazon SQS Developer Guide* . +func (o ScheduleTargetPtrOutput) SqsParameters() ScheduleSqsParametersPtrOutput { + return o.ApplyT(func(v *ScheduleTarget) *ScheduleSqsParameters { + if v == nil { + return nil + } + return v.SqsParameters + }).(ScheduleSqsParametersPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleAwsVpcConfigurationInput)(nil)).Elem(), ScheduleAwsVpcConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleAwsVpcConfigurationPtrInput)(nil)).Elem(), ScheduleAwsVpcConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleCapacityProviderStrategyItemInput)(nil)).Elem(), ScheduleCapacityProviderStrategyItemArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleCapacityProviderStrategyItemArrayInput)(nil)).Elem(), ScheduleCapacityProviderStrategyItemArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleDeadLetterConfigInput)(nil)).Elem(), ScheduleDeadLetterConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleDeadLetterConfigPtrInput)(nil)).Elem(), ScheduleDeadLetterConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleEcsParametersInput)(nil)).Elem(), ScheduleEcsParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleEcsParametersPtrInput)(nil)).Elem(), ScheduleEcsParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleEventBridgeParametersInput)(nil)).Elem(), ScheduleEventBridgeParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleEventBridgeParametersPtrInput)(nil)).Elem(), ScheduleEventBridgeParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleFlexibleTimeWindowInput)(nil)).Elem(), ScheduleFlexibleTimeWindowArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleKinesisParametersInput)(nil)).Elem(), ScheduleKinesisParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleKinesisParametersPtrInput)(nil)).Elem(), ScheduleKinesisParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleNetworkConfigurationInput)(nil)).Elem(), ScheduleNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleNetworkConfigurationPtrInput)(nil)).Elem(), ScheduleNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementConstraintInput)(nil)).Elem(), SchedulePlacementConstraintArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementConstraintArrayInput)(nil)).Elem(), SchedulePlacementConstraintArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementStrategyInput)(nil)).Elem(), SchedulePlacementStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SchedulePlacementStrategyArrayInput)(nil)).Elem(), SchedulePlacementStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleRetryPolicyInput)(nil)).Elem(), ScheduleRetryPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleRetryPolicyPtrInput)(nil)).Elem(), ScheduleRetryPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleSageMakerPipelineParameterInput)(nil)).Elem(), ScheduleSageMakerPipelineParameterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleSageMakerPipelineParameterArrayInput)(nil)).Elem(), ScheduleSageMakerPipelineParameterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleSageMakerPipelineParametersInput)(nil)).Elem(), ScheduleSageMakerPipelineParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleSageMakerPipelineParametersPtrInput)(nil)).Elem(), ScheduleSageMakerPipelineParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleSqsParametersInput)(nil)).Elem(), ScheduleSqsParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleSqsParametersPtrInput)(nil)).Elem(), ScheduleSqsParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleTargetInput)(nil)).Elem(), ScheduleTargetArgs{}) + pulumi.RegisterOutputType(ScheduleAwsVpcConfigurationOutput{}) + pulumi.RegisterOutputType(ScheduleAwsVpcConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ScheduleCapacityProviderStrategyItemOutput{}) + pulumi.RegisterOutputType(ScheduleCapacityProviderStrategyItemArrayOutput{}) + pulumi.RegisterOutputType(ScheduleDeadLetterConfigOutput{}) + pulumi.RegisterOutputType(ScheduleDeadLetterConfigPtrOutput{}) + pulumi.RegisterOutputType(ScheduleEcsParametersOutput{}) + pulumi.RegisterOutputType(ScheduleEcsParametersPtrOutput{}) + pulumi.RegisterOutputType(ScheduleEventBridgeParametersOutput{}) + pulumi.RegisterOutputType(ScheduleEventBridgeParametersPtrOutput{}) + pulumi.RegisterOutputType(ScheduleFlexibleTimeWindowOutput{}) + pulumi.RegisterOutputType(ScheduleFlexibleTimeWindowPtrOutput{}) + pulumi.RegisterOutputType(ScheduleKinesisParametersOutput{}) + pulumi.RegisterOutputType(ScheduleKinesisParametersPtrOutput{}) + pulumi.RegisterOutputType(ScheduleNetworkConfigurationOutput{}) + pulumi.RegisterOutputType(ScheduleNetworkConfigurationPtrOutput{}) + pulumi.RegisterOutputType(SchedulePlacementConstraintOutput{}) + pulumi.RegisterOutputType(SchedulePlacementConstraintArrayOutput{}) + pulumi.RegisterOutputType(SchedulePlacementStrategyOutput{}) + pulumi.RegisterOutputType(SchedulePlacementStrategyArrayOutput{}) + pulumi.RegisterOutputType(ScheduleRetryPolicyOutput{}) + pulumi.RegisterOutputType(ScheduleRetryPolicyPtrOutput{}) + pulumi.RegisterOutputType(ScheduleSageMakerPipelineParameterOutput{}) + pulumi.RegisterOutputType(ScheduleSageMakerPipelineParameterArrayOutput{}) + pulumi.RegisterOutputType(ScheduleSageMakerPipelineParametersOutput{}) + pulumi.RegisterOutputType(ScheduleSageMakerPipelineParametersPtrOutput{}) + pulumi.RegisterOutputType(ScheduleSqsParametersOutput{}) + pulumi.RegisterOutputType(ScheduleSqsParametersPtrOutput{}) + pulumi.RegisterOutputType(ScheduleTargetOutput{}) + pulumi.RegisterOutputType(ScheduleTargetPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/schedule.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/schedule.go new file mode 100644 index 000000000..87ad8ff4a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/schedule.go @@ -0,0 +1,256 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package scheduler + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Definition of AWS::Scheduler::Schedule Resource Type +type Schedule struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) of the schedule. + Arn pulumi.StringOutput `pulumi:"arn"` + // The description of the schedule. + Description pulumi.StringPtrOutput `pulumi:"description"` + // The date, in UTC, before which the schedule can invoke its target. Depending on the schedule's recurrence expression, invocations might stop on, or before, the EndDate you specify. + EndDate pulumi.StringPtrOutput `pulumi:"endDate"` + // Allows you to configure a time window during which EventBridge Scheduler invokes the schedule. + FlexibleTimeWindow ScheduleFlexibleTimeWindowOutput `pulumi:"flexibleTimeWindow"` + // The name of the schedule group to associate with this schedule. If you omit this, the default schedule group is used. + GroupName pulumi.StringPtrOutput `pulumi:"groupName"` + // The ARN for a KMS Key that will be used to encrypt customer data. + KmsKeyArn pulumi.StringPtrOutput `pulumi:"kmsKeyArn"` + // The name of the schedule. + Name pulumi.StringPtrOutput `pulumi:"name"` + // The scheduling expression. + ScheduleExpression pulumi.StringOutput `pulumi:"scheduleExpression"` + // The timezone in which the scheduling expression is evaluated. + ScheduleExpressionTimezone pulumi.StringPtrOutput `pulumi:"scheduleExpressionTimezone"` + // The date, in UTC, after which the schedule can begin invoking its target. Depending on the schedule's recurrence expression, invocations might occur on, or after, the StartDate you specify. + StartDate pulumi.StringPtrOutput `pulumi:"startDate"` + // Specifies whether the schedule is enabled or disabled. + // + // *Allowed Values* : `ENABLED` | `DISABLED` + State ScheduleStateEnumPtrOutput `pulumi:"state"` + // The schedule's target details. + Target ScheduleTargetOutput `pulumi:"target"` +} + +// NewSchedule registers a new resource with the given unique name, arguments, and options. +func NewSchedule(ctx *pulumi.Context, + name string, args *ScheduleArgs, opts ...pulumi.ResourceOption) (*Schedule, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.FlexibleTimeWindow == nil { + return nil, errors.New("invalid value for required argument 'FlexibleTimeWindow'") + } + if args.ScheduleExpression == nil { + return nil, errors.New("invalid value for required argument 'ScheduleExpression'") + } + if args.Target == nil { + return nil, errors.New("invalid value for required argument 'Target'") + } + replaceOnChanges := pulumi.ReplaceOnChanges([]string{ + "name", + }) + opts = append(opts, replaceOnChanges) + opts = internal.PkgResourceDefaultOpts(opts) + var resource Schedule + err := ctx.RegisterResource("aws-native:scheduler:Schedule", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSchedule gets an existing Schedule 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 GetSchedule(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ScheduleState, opts ...pulumi.ResourceOption) (*Schedule, error) { + var resource Schedule + err := ctx.ReadResource("aws-native:scheduler:Schedule", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Schedule resources. +type scheduleState struct { +} + +type ScheduleState struct { +} + +func (ScheduleState) ElementType() reflect.Type { + return reflect.TypeOf((*scheduleState)(nil)).Elem() +} + +type scheduleArgs struct { + // The description of the schedule. + Description *string `pulumi:"description"` + // The date, in UTC, before which the schedule can invoke its target. Depending on the schedule's recurrence expression, invocations might stop on, or before, the EndDate you specify. + EndDate *string `pulumi:"endDate"` + // Allows you to configure a time window during which EventBridge Scheduler invokes the schedule. + FlexibleTimeWindow ScheduleFlexibleTimeWindow `pulumi:"flexibleTimeWindow"` + // The name of the schedule group to associate with this schedule. If you omit this, the default schedule group is used. + GroupName *string `pulumi:"groupName"` + // The ARN for a KMS Key that will be used to encrypt customer data. + KmsKeyArn *string `pulumi:"kmsKeyArn"` + // The name of the schedule. + Name *string `pulumi:"name"` + // The scheduling expression. + ScheduleExpression string `pulumi:"scheduleExpression"` + // The timezone in which the scheduling expression is evaluated. + ScheduleExpressionTimezone *string `pulumi:"scheduleExpressionTimezone"` + // The date, in UTC, after which the schedule can begin invoking its target. Depending on the schedule's recurrence expression, invocations might occur on, or after, the StartDate you specify. + StartDate *string `pulumi:"startDate"` + // Specifies whether the schedule is enabled or disabled. + // + // *Allowed Values* : `ENABLED` | `DISABLED` + State *ScheduleStateEnum `pulumi:"state"` + // The schedule's target details. + Target ScheduleTarget `pulumi:"target"` +} + +// The set of arguments for constructing a Schedule resource. +type ScheduleArgs struct { + // The description of the schedule. + Description pulumi.StringPtrInput + // The date, in UTC, before which the schedule can invoke its target. Depending on the schedule's recurrence expression, invocations might stop on, or before, the EndDate you specify. + EndDate pulumi.StringPtrInput + // Allows you to configure a time window during which EventBridge Scheduler invokes the schedule. + FlexibleTimeWindow ScheduleFlexibleTimeWindowInput + // The name of the schedule group to associate with this schedule. If you omit this, the default schedule group is used. + GroupName pulumi.StringPtrInput + // The ARN for a KMS Key that will be used to encrypt customer data. + KmsKeyArn pulumi.StringPtrInput + // The name of the schedule. + Name pulumi.StringPtrInput + // The scheduling expression. + ScheduleExpression pulumi.StringInput + // The timezone in which the scheduling expression is evaluated. + ScheduleExpressionTimezone pulumi.StringPtrInput + // The date, in UTC, after which the schedule can begin invoking its target. Depending on the schedule's recurrence expression, invocations might occur on, or after, the StartDate you specify. + StartDate pulumi.StringPtrInput + // Specifies whether the schedule is enabled or disabled. + // + // *Allowed Values* : `ENABLED` | `DISABLED` + State ScheduleStateEnumPtrInput + // The schedule's target details. + Target ScheduleTargetInput +} + +func (ScheduleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*scheduleArgs)(nil)).Elem() +} + +type ScheduleInput interface { + pulumi.Input + + ToScheduleOutput() ScheduleOutput + ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput +} + +func (*Schedule) ElementType() reflect.Type { + return reflect.TypeOf((**Schedule)(nil)).Elem() +} + +func (i *Schedule) ToScheduleOutput() ScheduleOutput { + return i.ToScheduleOutputWithContext(context.Background()) +} + +func (i *Schedule) ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleOutput) +} + +type ScheduleOutput struct{ *pulumi.OutputState } + +func (ScheduleOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Schedule)(nil)).Elem() +} + +func (o ScheduleOutput) ToScheduleOutput() ScheduleOutput { + return o +} + +func (o ScheduleOutput) ToScheduleOutputWithContext(ctx context.Context) ScheduleOutput { + return o +} + +// The Amazon Resource Name (ARN) of the schedule. +func (o ScheduleOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The description of the schedule. +func (o ScheduleOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// The date, in UTC, before which the schedule can invoke its target. Depending on the schedule's recurrence expression, invocations might stop on, or before, the EndDate you specify. +func (o ScheduleOutput) EndDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.EndDate }).(pulumi.StringPtrOutput) +} + +// Allows you to configure a time window during which EventBridge Scheduler invokes the schedule. +func (o ScheduleOutput) FlexibleTimeWindow() ScheduleFlexibleTimeWindowOutput { + return o.ApplyT(func(v *Schedule) ScheduleFlexibleTimeWindowOutput { return v.FlexibleTimeWindow }).(ScheduleFlexibleTimeWindowOutput) +} + +// The name of the schedule group to associate with this schedule. If you omit this, the default schedule group is used. +func (o ScheduleOutput) GroupName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.GroupName }).(pulumi.StringPtrOutput) +} + +// The ARN for a KMS Key that will be used to encrypt customer data. +func (o ScheduleOutput) KmsKeyArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.KmsKeyArn }).(pulumi.StringPtrOutput) +} + +// The name of the schedule. +func (o ScheduleOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.Name }).(pulumi.StringPtrOutput) +} + +// The scheduling expression. +func (o ScheduleOutput) ScheduleExpression() pulumi.StringOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringOutput { return v.ScheduleExpression }).(pulumi.StringOutput) +} + +// The timezone in which the scheduling expression is evaluated. +func (o ScheduleOutput) ScheduleExpressionTimezone() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.ScheduleExpressionTimezone }).(pulumi.StringPtrOutput) +} + +// The date, in UTC, after which the schedule can begin invoking its target. Depending on the schedule's recurrence expression, invocations might occur on, or after, the StartDate you specify. +func (o ScheduleOutput) StartDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Schedule) pulumi.StringPtrOutput { return v.StartDate }).(pulumi.StringPtrOutput) +} + +// Specifies whether the schedule is enabled or disabled. +// +// *Allowed Values* : `ENABLED` | `DISABLED` +func (o ScheduleOutput) State() ScheduleStateEnumPtrOutput { + return o.ApplyT(func(v *Schedule) ScheduleStateEnumPtrOutput { return v.State }).(ScheduleStateEnumPtrOutput) +} + +// The schedule's target details. +func (o ScheduleOutput) Target() ScheduleTargetOutput { + return o.ApplyT(func(v *Schedule) ScheduleTargetOutput { return v.Target }).(ScheduleTargetOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleInput)(nil)).Elem(), &Schedule{}) + pulumi.RegisterOutputType(ScheduleOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/scheduleGroup.go b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/scheduleGroup.go new file mode 100644 index 000000000..172ad97d3 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler/scheduleGroup.go @@ -0,0 +1,165 @@ +// Code generated by pulumi-language-go DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package scheduler + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws-native/sdk/go/aws" + "github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Definition of AWS::Scheduler::ScheduleGroup Resource Type +type ScheduleGroup struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) of the schedule group. + Arn pulumi.StringOutput `pulumi:"arn"` + // The time at which the schedule group was created. + CreationDate pulumi.StringOutput `pulumi:"creationDate"` + // The time at which the schedule group was last modified. + LastModificationDate pulumi.StringOutput `pulumi:"lastModificationDate"` + // The name of the schedule group. + Name pulumi.StringPtrOutput `pulumi:"name"` + // Specifies the state of the schedule group. + // + // *Allowed Values* : `ACTIVE` | `DELETING` + State ScheduleGroupStateEnumOutput `pulumi:"state"` + // The list of tags to associate with the schedule group. + Tags aws.TagArrayOutput `pulumi:"tags"` +} + +// NewScheduleGroup registers a new resource with the given unique name, arguments, and options. +func NewScheduleGroup(ctx *pulumi.Context, + name string, args *ScheduleGroupArgs, opts ...pulumi.ResourceOption) (*ScheduleGroup, error) { + if args == nil { + args = &ScheduleGroupArgs{} + } + + replaceOnChanges := pulumi.ReplaceOnChanges([]string{ + "name", + }) + opts = append(opts, replaceOnChanges) + opts = internal.PkgResourceDefaultOpts(opts) + var resource ScheduleGroup + err := ctx.RegisterResource("aws-native:scheduler:ScheduleGroup", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetScheduleGroup gets an existing ScheduleGroup 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 GetScheduleGroup(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ScheduleGroupState, opts ...pulumi.ResourceOption) (*ScheduleGroup, error) { + var resource ScheduleGroup + err := ctx.ReadResource("aws-native:scheduler:ScheduleGroup", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ScheduleGroup resources. +type scheduleGroupState struct { +} + +type ScheduleGroupState struct { +} + +func (ScheduleGroupState) ElementType() reflect.Type { + return reflect.TypeOf((*scheduleGroupState)(nil)).Elem() +} + +type scheduleGroupArgs struct { + // The name of the schedule group. + Name *string `pulumi:"name"` + // The list of tags to associate with the schedule group. + Tags []aws.Tag `pulumi:"tags"` +} + +// The set of arguments for constructing a ScheduleGroup resource. +type ScheduleGroupArgs struct { + // The name of the schedule group. + Name pulumi.StringPtrInput + // The list of tags to associate with the schedule group. + Tags aws.TagArrayInput +} + +func (ScheduleGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*scheduleGroupArgs)(nil)).Elem() +} + +type ScheduleGroupInput interface { + pulumi.Input + + ToScheduleGroupOutput() ScheduleGroupOutput + ToScheduleGroupOutputWithContext(ctx context.Context) ScheduleGroupOutput +} + +func (*ScheduleGroup) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleGroup)(nil)).Elem() +} + +func (i *ScheduleGroup) ToScheduleGroupOutput() ScheduleGroupOutput { + return i.ToScheduleGroupOutputWithContext(context.Background()) +} + +func (i *ScheduleGroup) ToScheduleGroupOutputWithContext(ctx context.Context) ScheduleGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(ScheduleGroupOutput) +} + +type ScheduleGroupOutput struct{ *pulumi.OutputState } + +func (ScheduleGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ScheduleGroup)(nil)).Elem() +} + +func (o ScheduleGroupOutput) ToScheduleGroupOutput() ScheduleGroupOutput { + return o +} + +func (o ScheduleGroupOutput) ToScheduleGroupOutputWithContext(ctx context.Context) ScheduleGroupOutput { + return o +} + +// The Amazon Resource Name (ARN) of the schedule group. +func (o ScheduleGroupOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *ScheduleGroup) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The time at which the schedule group was created. +func (o ScheduleGroupOutput) CreationDate() pulumi.StringOutput { + return o.ApplyT(func(v *ScheduleGroup) pulumi.StringOutput { return v.CreationDate }).(pulumi.StringOutput) +} + +// The time at which the schedule group was last modified. +func (o ScheduleGroupOutput) LastModificationDate() pulumi.StringOutput { + return o.ApplyT(func(v *ScheduleGroup) pulumi.StringOutput { return v.LastModificationDate }).(pulumi.StringOutput) +} + +// The name of the schedule group. +func (o ScheduleGroupOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ScheduleGroup) pulumi.StringPtrOutput { return v.Name }).(pulumi.StringPtrOutput) +} + +// Specifies the state of the schedule group. +// +// *Allowed Values* : `ACTIVE` | `DELETING` +func (o ScheduleGroupOutput) State() ScheduleGroupStateEnumOutput { + return o.ApplyT(func(v *ScheduleGroup) ScheduleGroupStateEnumOutput { return v.State }).(ScheduleGroupStateEnumOutput) +} + +// The list of tags to associate with the schedule group. +func (o ScheduleGroupOutput) Tags() aws.TagArrayOutput { + return o.ApplyT(func(v *ScheduleGroup) aws.TagArrayOutput { return v.Tags }).(aws.TagArrayOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ScheduleGroupInput)(nil)).Elem(), &ScheduleGroup{}) + pulumi.RegisterOutputType(ScheduleGroupOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/compositeAlarm.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/compositeAlarm.go new file mode 100644 index 000000000..f5033f488 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/compositeAlarm.go @@ -0,0 +1,419 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Composite Alarm resource. +// +// > **NOTE:** An alarm (composite or metric) cannot be destroyed when there are other composite alarms depending on it. This can lead to a cyclical dependency on update, as the provider will unsuccessfully attempt to destroy alarms before updating the rule. Consider using `dependsOn`, references to alarm names, and two-stage updates. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewCompositeAlarm(ctx, "example", &cloudwatch.CompositeAlarmArgs{ +// AlarmDescription: pulumi.String("This is a composite alarm!"), +// AlarmName: pulumi.String("example-composite-alarm"), +// AlarmActions: pulumi.Any(exampleAwsSnsTopic.Arn), +// OkActions: pulumi.Any(exampleAwsSnsTopic.Arn), +// AlarmRule: pulumi.Sprintf("ALARM(%v) OR\nALARM(%v)\n", alpha.AlarmName, bravo.AlarmName), +// ActionsSuppressor: &cloudwatch.CompositeAlarmActionsSuppressorArgs{ +// Alarm: pulumi.String("suppressor-alarm"), +// ExtensionPeriod: pulumi.Int(10), +// WaitPeriod: pulumi.Int(20), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import a CloudWatch Composite Alarm using the `alarm_name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/compositeAlarm:CompositeAlarm test my-alarm +// ``` +type CompositeAlarm struct { + pulumi.CustomResourceState + + // Indicates whether actions should be executed during any changes to the alarm state of the composite alarm. Defaults to `true`. + ActionsEnabled pulumi.BoolPtrOutput `pulumi:"actionsEnabled"` + // Actions will be suppressed if the suppressor alarm is in the ALARM state. + ActionsSuppressor CompositeAlarmActionsSuppressorPtrOutput `pulumi:"actionsSuppressor"` + // The set of actions to execute when this alarm transitions to the `ALARM` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + AlarmActions pulumi.StringArrayOutput `pulumi:"alarmActions"` + // The description for the composite alarm. + AlarmDescription pulumi.StringPtrOutput `pulumi:"alarmDescription"` + // The name for the composite alarm. This name must be unique within the region. + AlarmName pulumi.StringOutput `pulumi:"alarmName"` + // An expression that specifies which other alarms are to be evaluated to determine this composite alarm's state. For syntax, see [Creating a Composite Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html). The maximum length is 10240 characters. + AlarmRule pulumi.StringOutput `pulumi:"alarmRule"` + // The ARN of the composite alarm. + Arn pulumi.StringOutput `pulumi:"arn"` + // The set of actions to execute when this alarm transitions to the `INSUFFICIENT_DATA` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + InsufficientDataActions pulumi.StringArrayOutput `pulumi:"insufficientDataActions"` + // The set of actions to execute when this alarm transitions to an `OK` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + OkActions pulumi.StringArrayOutput `pulumi:"okActions"` + // A map of tags to associate with the alarm. Up to 50 tags are allowed. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewCompositeAlarm registers a new resource with the given unique name, arguments, and options. +func NewCompositeAlarm(ctx *pulumi.Context, + name string, args *CompositeAlarmArgs, opts ...pulumi.ResourceOption) (*CompositeAlarm, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AlarmName == nil { + return nil, errors.New("invalid value for required argument 'AlarmName'") + } + if args.AlarmRule == nil { + return nil, errors.New("invalid value for required argument 'AlarmRule'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource CompositeAlarm + err := ctx.RegisterResource("aws:cloudwatch/compositeAlarm:CompositeAlarm", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetCompositeAlarm gets an existing CompositeAlarm 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 GetCompositeAlarm(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *CompositeAlarmState, opts ...pulumi.ResourceOption) (*CompositeAlarm, error) { + var resource CompositeAlarm + err := ctx.ReadResource("aws:cloudwatch/compositeAlarm:CompositeAlarm", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering CompositeAlarm resources. +type compositeAlarmState struct { + // Indicates whether actions should be executed during any changes to the alarm state of the composite alarm. Defaults to `true`. + ActionsEnabled *bool `pulumi:"actionsEnabled"` + // Actions will be suppressed if the suppressor alarm is in the ALARM state. + ActionsSuppressor *CompositeAlarmActionsSuppressor `pulumi:"actionsSuppressor"` + // The set of actions to execute when this alarm transitions to the `ALARM` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + AlarmActions []string `pulumi:"alarmActions"` + // The description for the composite alarm. + AlarmDescription *string `pulumi:"alarmDescription"` + // The name for the composite alarm. This name must be unique within the region. + AlarmName *string `pulumi:"alarmName"` + // An expression that specifies which other alarms are to be evaluated to determine this composite alarm's state. For syntax, see [Creating a Composite Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html). The maximum length is 10240 characters. + AlarmRule *string `pulumi:"alarmRule"` + // The ARN of the composite alarm. + Arn *string `pulumi:"arn"` + // The set of actions to execute when this alarm transitions to the `INSUFFICIENT_DATA` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + InsufficientDataActions []string `pulumi:"insufficientDataActions"` + // The set of actions to execute when this alarm transitions to an `OK` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + OkActions []string `pulumi:"okActions"` + // A map of tags to associate with the alarm. Up to 50 tags are allowed. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type CompositeAlarmState struct { + // Indicates whether actions should be executed during any changes to the alarm state of the composite alarm. Defaults to `true`. + ActionsEnabled pulumi.BoolPtrInput + // Actions will be suppressed if the suppressor alarm is in the ALARM state. + ActionsSuppressor CompositeAlarmActionsSuppressorPtrInput + // The set of actions to execute when this alarm transitions to the `ALARM` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + AlarmActions pulumi.StringArrayInput + // The description for the composite alarm. + AlarmDescription pulumi.StringPtrInput + // The name for the composite alarm. This name must be unique within the region. + AlarmName pulumi.StringPtrInput + // An expression that specifies which other alarms are to be evaluated to determine this composite alarm's state. For syntax, see [Creating a Composite Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html). The maximum length is 10240 characters. + AlarmRule pulumi.StringPtrInput + // The ARN of the composite alarm. + Arn pulumi.StringPtrInput + // The set of actions to execute when this alarm transitions to the `INSUFFICIENT_DATA` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + InsufficientDataActions pulumi.StringArrayInput + // The set of actions to execute when this alarm transitions to an `OK` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + OkActions pulumi.StringArrayInput + // A map of tags to associate with the alarm. Up to 50 tags are allowed. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (CompositeAlarmState) ElementType() reflect.Type { + return reflect.TypeOf((*compositeAlarmState)(nil)).Elem() +} + +type compositeAlarmArgs struct { + // Indicates whether actions should be executed during any changes to the alarm state of the composite alarm. Defaults to `true`. + ActionsEnabled *bool `pulumi:"actionsEnabled"` + // Actions will be suppressed if the suppressor alarm is in the ALARM state. + ActionsSuppressor *CompositeAlarmActionsSuppressor `pulumi:"actionsSuppressor"` + // The set of actions to execute when this alarm transitions to the `ALARM` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + AlarmActions []string `pulumi:"alarmActions"` + // The description for the composite alarm. + AlarmDescription *string `pulumi:"alarmDescription"` + // The name for the composite alarm. This name must be unique within the region. + AlarmName string `pulumi:"alarmName"` + // An expression that specifies which other alarms are to be evaluated to determine this composite alarm's state. For syntax, see [Creating a Composite Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html). The maximum length is 10240 characters. + AlarmRule string `pulumi:"alarmRule"` + // The set of actions to execute when this alarm transitions to the `INSUFFICIENT_DATA` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + InsufficientDataActions []string `pulumi:"insufficientDataActions"` + // The set of actions to execute when this alarm transitions to an `OK` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + OkActions []string `pulumi:"okActions"` + // A map of tags to associate with the alarm. Up to 50 tags are allowed. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a CompositeAlarm resource. +type CompositeAlarmArgs struct { + // Indicates whether actions should be executed during any changes to the alarm state of the composite alarm. Defaults to `true`. + ActionsEnabled pulumi.BoolPtrInput + // Actions will be suppressed if the suppressor alarm is in the ALARM state. + ActionsSuppressor CompositeAlarmActionsSuppressorPtrInput + // The set of actions to execute when this alarm transitions to the `ALARM` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + AlarmActions pulumi.StringArrayInput + // The description for the composite alarm. + AlarmDescription pulumi.StringPtrInput + // The name for the composite alarm. This name must be unique within the region. + AlarmName pulumi.StringInput + // An expression that specifies which other alarms are to be evaluated to determine this composite alarm's state. For syntax, see [Creating a Composite Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html). The maximum length is 10240 characters. + AlarmRule pulumi.StringInput + // The set of actions to execute when this alarm transitions to the `INSUFFICIENT_DATA` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + InsufficientDataActions pulumi.StringArrayInput + // The set of actions to execute when this alarm transitions to an `OK` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. + OkActions pulumi.StringArrayInput + // A map of tags to associate with the alarm. Up to 50 tags are allowed. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (CompositeAlarmArgs) ElementType() reflect.Type { + return reflect.TypeOf((*compositeAlarmArgs)(nil)).Elem() +} + +type CompositeAlarmInput interface { + pulumi.Input + + ToCompositeAlarmOutput() CompositeAlarmOutput + ToCompositeAlarmOutputWithContext(ctx context.Context) CompositeAlarmOutput +} + +func (*CompositeAlarm) ElementType() reflect.Type { + return reflect.TypeOf((**CompositeAlarm)(nil)).Elem() +} + +func (i *CompositeAlarm) ToCompositeAlarmOutput() CompositeAlarmOutput { + return i.ToCompositeAlarmOutputWithContext(context.Background()) +} + +func (i *CompositeAlarm) ToCompositeAlarmOutputWithContext(ctx context.Context) CompositeAlarmOutput { + return pulumi.ToOutputWithContext(ctx, i).(CompositeAlarmOutput) +} + +// CompositeAlarmArrayInput is an input type that accepts CompositeAlarmArray and CompositeAlarmArrayOutput values. +// You can construct a concrete instance of `CompositeAlarmArrayInput` via: +// +// CompositeAlarmArray{ CompositeAlarmArgs{...} } +type CompositeAlarmArrayInput interface { + pulumi.Input + + ToCompositeAlarmArrayOutput() CompositeAlarmArrayOutput + ToCompositeAlarmArrayOutputWithContext(context.Context) CompositeAlarmArrayOutput +} + +type CompositeAlarmArray []CompositeAlarmInput + +func (CompositeAlarmArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CompositeAlarm)(nil)).Elem() +} + +func (i CompositeAlarmArray) ToCompositeAlarmArrayOutput() CompositeAlarmArrayOutput { + return i.ToCompositeAlarmArrayOutputWithContext(context.Background()) +} + +func (i CompositeAlarmArray) ToCompositeAlarmArrayOutputWithContext(ctx context.Context) CompositeAlarmArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(CompositeAlarmArrayOutput) +} + +// CompositeAlarmMapInput is an input type that accepts CompositeAlarmMap and CompositeAlarmMapOutput values. +// You can construct a concrete instance of `CompositeAlarmMapInput` via: +// +// CompositeAlarmMap{ "key": CompositeAlarmArgs{...} } +type CompositeAlarmMapInput interface { + pulumi.Input + + ToCompositeAlarmMapOutput() CompositeAlarmMapOutput + ToCompositeAlarmMapOutputWithContext(context.Context) CompositeAlarmMapOutput +} + +type CompositeAlarmMap map[string]CompositeAlarmInput + +func (CompositeAlarmMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CompositeAlarm)(nil)).Elem() +} + +func (i CompositeAlarmMap) ToCompositeAlarmMapOutput() CompositeAlarmMapOutput { + return i.ToCompositeAlarmMapOutputWithContext(context.Background()) +} + +func (i CompositeAlarmMap) ToCompositeAlarmMapOutputWithContext(ctx context.Context) CompositeAlarmMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(CompositeAlarmMapOutput) +} + +type CompositeAlarmOutput struct{ *pulumi.OutputState } + +func (CompositeAlarmOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CompositeAlarm)(nil)).Elem() +} + +func (o CompositeAlarmOutput) ToCompositeAlarmOutput() CompositeAlarmOutput { + return o +} + +func (o CompositeAlarmOutput) ToCompositeAlarmOutputWithContext(ctx context.Context) CompositeAlarmOutput { + return o +} + +// Indicates whether actions should be executed during any changes to the alarm state of the composite alarm. Defaults to `true`. +func (o CompositeAlarmOutput) ActionsEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.BoolPtrOutput { return v.ActionsEnabled }).(pulumi.BoolPtrOutput) +} + +// Actions will be suppressed if the suppressor alarm is in the ALARM state. +func (o CompositeAlarmOutput) ActionsSuppressor() CompositeAlarmActionsSuppressorPtrOutput { + return o.ApplyT(func(v *CompositeAlarm) CompositeAlarmActionsSuppressorPtrOutput { return v.ActionsSuppressor }).(CompositeAlarmActionsSuppressorPtrOutput) +} + +// The set of actions to execute when this alarm transitions to the `ALARM` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. +func (o CompositeAlarmOutput) AlarmActions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringArrayOutput { return v.AlarmActions }).(pulumi.StringArrayOutput) +} + +// The description for the composite alarm. +func (o CompositeAlarmOutput) AlarmDescription() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringPtrOutput { return v.AlarmDescription }).(pulumi.StringPtrOutput) +} + +// The name for the composite alarm. This name must be unique within the region. +func (o CompositeAlarmOutput) AlarmName() pulumi.StringOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringOutput { return v.AlarmName }).(pulumi.StringOutput) +} + +// An expression that specifies which other alarms are to be evaluated to determine this composite alarm's state. For syntax, see [Creating a Composite Alarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create_Composite_Alarm.html). The maximum length is 10240 characters. +func (o CompositeAlarmOutput) AlarmRule() pulumi.StringOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringOutput { return v.AlarmRule }).(pulumi.StringOutput) +} + +// The ARN of the composite alarm. +func (o CompositeAlarmOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The set of actions to execute when this alarm transitions to the `INSUFFICIENT_DATA` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. +func (o CompositeAlarmOutput) InsufficientDataActions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringArrayOutput { return v.InsufficientDataActions }).(pulumi.StringArrayOutput) +} + +// The set of actions to execute when this alarm transitions to an `OK` state from any other state. Each action is specified as an ARN. Up to 5 actions are allowed. +func (o CompositeAlarmOutput) OkActions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringArrayOutput { return v.OkActions }).(pulumi.StringArrayOutput) +} + +// A map of tags to associate with the alarm. Up to 50 tags are allowed. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o CompositeAlarmOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o CompositeAlarmOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *CompositeAlarm) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type CompositeAlarmArrayOutput struct{ *pulumi.OutputState } + +func (CompositeAlarmArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CompositeAlarm)(nil)).Elem() +} + +func (o CompositeAlarmArrayOutput) ToCompositeAlarmArrayOutput() CompositeAlarmArrayOutput { + return o +} + +func (o CompositeAlarmArrayOutput) ToCompositeAlarmArrayOutputWithContext(ctx context.Context) CompositeAlarmArrayOutput { + return o +} + +func (o CompositeAlarmArrayOutput) Index(i pulumi.IntInput) CompositeAlarmOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *CompositeAlarm { + return vs[0].([]*CompositeAlarm)[vs[1].(int)] + }).(CompositeAlarmOutput) +} + +type CompositeAlarmMapOutput struct{ *pulumi.OutputState } + +func (CompositeAlarmMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CompositeAlarm)(nil)).Elem() +} + +func (o CompositeAlarmMapOutput) ToCompositeAlarmMapOutput() CompositeAlarmMapOutput { + return o +} + +func (o CompositeAlarmMapOutput) ToCompositeAlarmMapOutputWithContext(ctx context.Context) CompositeAlarmMapOutput { + return o +} + +func (o CompositeAlarmMapOutput) MapIndex(k pulumi.StringInput) CompositeAlarmOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *CompositeAlarm { + return vs[0].(map[string]*CompositeAlarm)[vs[1].(string)] + }).(CompositeAlarmOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CompositeAlarmInput)(nil)).Elem(), &CompositeAlarm{}) + pulumi.RegisterInputType(reflect.TypeOf((*CompositeAlarmArrayInput)(nil)).Elem(), CompositeAlarmArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*CompositeAlarmMapInput)(nil)).Elem(), CompositeAlarmMap{}) + pulumi.RegisterOutputType(CompositeAlarmOutput{}) + pulumi.RegisterOutputType(CompositeAlarmArrayOutput{}) + pulumi.RegisterOutputType(CompositeAlarmMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/dashboard.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/dashboard.go new file mode 100644 index 000000000..6bd49abeb --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/dashboard.go @@ -0,0 +1,324 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Dashboard resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "widgets": []interface{}{ +// map[string]interface{}{ +// "type": "metric", +// "x": 0, +// "y": 0, +// "width": 12, +// "height": 6, +// "properties": map[string]interface{}{ +// "metrics": [][]string{ +// []string{ +// "AWS/EC2", +// "CPUUtilization", +// "InstanceId", +// "i-012345", +// }, +// }, +// "period": 300, +// "stat": "Average", +// "region": "us-east-1", +// "title": "EC2 Instance CPU", +// }, +// }, +// map[string]interface{}{ +// "type": "text", +// "x": 0, +// "y": 7, +// "width": 3, +// "height": 3, +// "properties": map[string]interface{}{ +// "markdown": "Hello world", +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = cloudwatch.NewDashboard(ctx, "main", &cloudwatch.DashboardArgs{ +// DashboardName: pulumi.String("my-dashboard"), +// DashboardBody: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch dashboards using the `dashboard_name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/dashboard:Dashboard sample dashboard_name +// ``` +type Dashboard struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) of the dashboard. + DashboardArn pulumi.StringOutput `pulumi:"dashboardArn"` + // The detailed information about the dashboard, including what widgets are included and their location on the dashboard. You can read more about the body structure in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Dashboard-Body-Structure.html). + DashboardBody pulumi.StringOutput `pulumi:"dashboardBody"` + // The name of the dashboard. + DashboardName pulumi.StringOutput `pulumi:"dashboardName"` +} + +// NewDashboard registers a new resource with the given unique name, arguments, and options. +func NewDashboard(ctx *pulumi.Context, + name string, args *DashboardArgs, opts ...pulumi.ResourceOption) (*Dashboard, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DashboardBody == nil { + return nil, errors.New("invalid value for required argument 'DashboardBody'") + } + if args.DashboardName == nil { + return nil, errors.New("invalid value for required argument 'DashboardName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Dashboard + err := ctx.RegisterResource("aws:cloudwatch/dashboard:Dashboard", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetDashboard gets an existing Dashboard 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 GetDashboard(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *DashboardState, opts ...pulumi.ResourceOption) (*Dashboard, error) { + var resource Dashboard + err := ctx.ReadResource("aws:cloudwatch/dashboard:Dashboard", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Dashboard resources. +type dashboardState struct { + // The Amazon Resource Name (ARN) of the dashboard. + DashboardArn *string `pulumi:"dashboardArn"` + // The detailed information about the dashboard, including what widgets are included and their location on the dashboard. You can read more about the body structure in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Dashboard-Body-Structure.html). + DashboardBody *string `pulumi:"dashboardBody"` + // The name of the dashboard. + DashboardName *string `pulumi:"dashboardName"` +} + +type DashboardState struct { + // The Amazon Resource Name (ARN) of the dashboard. + DashboardArn pulumi.StringPtrInput + // The detailed information about the dashboard, including what widgets are included and their location on the dashboard. You can read more about the body structure in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Dashboard-Body-Structure.html). + DashboardBody pulumi.StringPtrInput + // The name of the dashboard. + DashboardName pulumi.StringPtrInput +} + +func (DashboardState) ElementType() reflect.Type { + return reflect.TypeOf((*dashboardState)(nil)).Elem() +} + +type dashboardArgs struct { + // The detailed information about the dashboard, including what widgets are included and their location on the dashboard. You can read more about the body structure in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Dashboard-Body-Structure.html). + DashboardBody string `pulumi:"dashboardBody"` + // The name of the dashboard. + DashboardName string `pulumi:"dashboardName"` +} + +// The set of arguments for constructing a Dashboard resource. +type DashboardArgs struct { + // The detailed information about the dashboard, including what widgets are included and their location on the dashboard. You can read more about the body structure in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Dashboard-Body-Structure.html). + DashboardBody pulumi.StringInput + // The name of the dashboard. + DashboardName pulumi.StringInput +} + +func (DashboardArgs) ElementType() reflect.Type { + return reflect.TypeOf((*dashboardArgs)(nil)).Elem() +} + +type DashboardInput interface { + pulumi.Input + + ToDashboardOutput() DashboardOutput + ToDashboardOutputWithContext(ctx context.Context) DashboardOutput +} + +func (*Dashboard) ElementType() reflect.Type { + return reflect.TypeOf((**Dashboard)(nil)).Elem() +} + +func (i *Dashboard) ToDashboardOutput() DashboardOutput { + return i.ToDashboardOutputWithContext(context.Background()) +} + +func (i *Dashboard) ToDashboardOutputWithContext(ctx context.Context) DashboardOutput { + return pulumi.ToOutputWithContext(ctx, i).(DashboardOutput) +} + +// DashboardArrayInput is an input type that accepts DashboardArray and DashboardArrayOutput values. +// You can construct a concrete instance of `DashboardArrayInput` via: +// +// DashboardArray{ DashboardArgs{...} } +type DashboardArrayInput interface { + pulumi.Input + + ToDashboardArrayOutput() DashboardArrayOutput + ToDashboardArrayOutputWithContext(context.Context) DashboardArrayOutput +} + +type DashboardArray []DashboardInput + +func (DashboardArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Dashboard)(nil)).Elem() +} + +func (i DashboardArray) ToDashboardArrayOutput() DashboardArrayOutput { + return i.ToDashboardArrayOutputWithContext(context.Background()) +} + +func (i DashboardArray) ToDashboardArrayOutputWithContext(ctx context.Context) DashboardArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DashboardArrayOutput) +} + +// DashboardMapInput is an input type that accepts DashboardMap and DashboardMapOutput values. +// You can construct a concrete instance of `DashboardMapInput` via: +// +// DashboardMap{ "key": DashboardArgs{...} } +type DashboardMapInput interface { + pulumi.Input + + ToDashboardMapOutput() DashboardMapOutput + ToDashboardMapOutputWithContext(context.Context) DashboardMapOutput +} + +type DashboardMap map[string]DashboardInput + +func (DashboardMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Dashboard)(nil)).Elem() +} + +func (i DashboardMap) ToDashboardMapOutput() DashboardMapOutput { + return i.ToDashboardMapOutputWithContext(context.Background()) +} + +func (i DashboardMap) ToDashboardMapOutputWithContext(ctx context.Context) DashboardMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(DashboardMapOutput) +} + +type DashboardOutput struct{ *pulumi.OutputState } + +func (DashboardOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Dashboard)(nil)).Elem() +} + +func (o DashboardOutput) ToDashboardOutput() DashboardOutput { + return o +} + +func (o DashboardOutput) ToDashboardOutputWithContext(ctx context.Context) DashboardOutput { + return o +} + +// The Amazon Resource Name (ARN) of the dashboard. +func (o DashboardOutput) DashboardArn() pulumi.StringOutput { + return o.ApplyT(func(v *Dashboard) pulumi.StringOutput { return v.DashboardArn }).(pulumi.StringOutput) +} + +// The detailed information about the dashboard, including what widgets are included and their location on the dashboard. You can read more about the body structure in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/CloudWatch-Dashboard-Body-Structure.html). +func (o DashboardOutput) DashboardBody() pulumi.StringOutput { + return o.ApplyT(func(v *Dashboard) pulumi.StringOutput { return v.DashboardBody }).(pulumi.StringOutput) +} + +// The name of the dashboard. +func (o DashboardOutput) DashboardName() pulumi.StringOutput { + return o.ApplyT(func(v *Dashboard) pulumi.StringOutput { return v.DashboardName }).(pulumi.StringOutput) +} + +type DashboardArrayOutput struct{ *pulumi.OutputState } + +func (DashboardArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Dashboard)(nil)).Elem() +} + +func (o DashboardArrayOutput) ToDashboardArrayOutput() DashboardArrayOutput { + return o +} + +func (o DashboardArrayOutput) ToDashboardArrayOutputWithContext(ctx context.Context) DashboardArrayOutput { + return o +} + +func (o DashboardArrayOutput) Index(i pulumi.IntInput) DashboardOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Dashboard { + return vs[0].([]*Dashboard)[vs[1].(int)] + }).(DashboardOutput) +} + +type DashboardMapOutput struct{ *pulumi.OutputState } + +func (DashboardMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Dashboard)(nil)).Elem() +} + +func (o DashboardMapOutput) ToDashboardMapOutput() DashboardMapOutput { + return o +} + +func (o DashboardMapOutput) ToDashboardMapOutputWithContext(ctx context.Context) DashboardMapOutput { + return o +} + +func (o DashboardMapOutput) MapIndex(k pulumi.StringInput) DashboardOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Dashboard { + return vs[0].(map[string]*Dashboard)[vs[1].(string)] + }).(DashboardOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DashboardInput)(nil)).Elem(), &Dashboard{}) + pulumi.RegisterInputType(reflect.TypeOf((*DashboardArrayInput)(nil)).Elem(), DashboardArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DashboardMapInput)(nil)).Elem(), DashboardMap{}) + pulumi.RegisterOutputType(DashboardOutput{}) + pulumi.RegisterOutputType(DashboardArrayOutput{}) + pulumi.RegisterOutputType(DashboardMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventApiDestination.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventApiDestination.go new file mode 100644 index 000000000..a4efd6d08 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventApiDestination.go @@ -0,0 +1,352 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an EventBridge event API Destination resource. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventApiDestination(ctx, "test", &cloudwatch.EventApiDestinationArgs{ +// Name: pulumi.String("api-destination"), +// Description: pulumi.String("An API Destination"), +// InvocationEndpoint: pulumi.String("https://api.destination.com/endpoint"), +// HttpMethod: pulumi.String("POST"), +// InvocationRateLimitPerSecond: pulumi.Int(20), +// ConnectionArn: pulumi.Any(testAwsCloudwatchEventConnection.Arn), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import EventBridge API Destinations using the `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventApiDestination:EventApiDestination test api-destination +// ``` +type EventApiDestination struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) of the event API Destination. + Arn pulumi.StringOutput `pulumi:"arn"` + // ARN of the EventBridge Connection to use for the API Destination. + ConnectionArn pulumi.StringOutput `pulumi:"connectionArn"` + // The description of the new API Destination. Maximum of 512 characters. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Select the HTTP method used for the invocation endpoint, such as GET, POST, PUT, etc. + HttpMethod pulumi.StringOutput `pulumi:"httpMethod"` + // URL endpoint to invoke as a target. This could be a valid endpoint generated by a partner service. You can include "*" as path parameters wildcards to be set from the Target HttpParameters. + InvocationEndpoint pulumi.StringOutput `pulumi:"invocationEndpoint"` + // Enter the maximum number of invocations per second to allow for this destination. Enter a value greater than 0 (default 300). + InvocationRateLimitPerSecond pulumi.IntPtrOutput `pulumi:"invocationRateLimitPerSecond"` + // The name of the new API Destination. The name must be unique for your account. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name pulumi.StringOutput `pulumi:"name"` +} + +// NewEventApiDestination registers a new resource with the given unique name, arguments, and options. +func NewEventApiDestination(ctx *pulumi.Context, + name string, args *EventApiDestinationArgs, opts ...pulumi.ResourceOption) (*EventApiDestination, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ConnectionArn == nil { + return nil, errors.New("invalid value for required argument 'ConnectionArn'") + } + if args.HttpMethod == nil { + return nil, errors.New("invalid value for required argument 'HttpMethod'") + } + if args.InvocationEndpoint == nil { + return nil, errors.New("invalid value for required argument 'InvocationEndpoint'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventApiDestination + err := ctx.RegisterResource("aws:cloudwatch/eventApiDestination:EventApiDestination", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventApiDestination gets an existing EventApiDestination 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 GetEventApiDestination(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventApiDestinationState, opts ...pulumi.ResourceOption) (*EventApiDestination, error) { + var resource EventApiDestination + err := ctx.ReadResource("aws:cloudwatch/eventApiDestination:EventApiDestination", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventApiDestination resources. +type eventApiDestinationState struct { + // The Amazon Resource Name (ARN) of the event API Destination. + Arn *string `pulumi:"arn"` + // ARN of the EventBridge Connection to use for the API Destination. + ConnectionArn *string `pulumi:"connectionArn"` + // The description of the new API Destination. Maximum of 512 characters. + Description *string `pulumi:"description"` + // Select the HTTP method used for the invocation endpoint, such as GET, POST, PUT, etc. + HttpMethod *string `pulumi:"httpMethod"` + // URL endpoint to invoke as a target. This could be a valid endpoint generated by a partner service. You can include "*" as path parameters wildcards to be set from the Target HttpParameters. + InvocationEndpoint *string `pulumi:"invocationEndpoint"` + // Enter the maximum number of invocations per second to allow for this destination. Enter a value greater than 0 (default 300). + InvocationRateLimitPerSecond *int `pulumi:"invocationRateLimitPerSecond"` + // The name of the new API Destination. The name must be unique for your account. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name *string `pulumi:"name"` +} + +type EventApiDestinationState struct { + // The Amazon Resource Name (ARN) of the event API Destination. + Arn pulumi.StringPtrInput + // ARN of the EventBridge Connection to use for the API Destination. + ConnectionArn pulumi.StringPtrInput + // The description of the new API Destination. Maximum of 512 characters. + Description pulumi.StringPtrInput + // Select the HTTP method used for the invocation endpoint, such as GET, POST, PUT, etc. + HttpMethod pulumi.StringPtrInput + // URL endpoint to invoke as a target. This could be a valid endpoint generated by a partner service. You can include "*" as path parameters wildcards to be set from the Target HttpParameters. + InvocationEndpoint pulumi.StringPtrInput + // Enter the maximum number of invocations per second to allow for this destination. Enter a value greater than 0 (default 300). + InvocationRateLimitPerSecond pulumi.IntPtrInput + // The name of the new API Destination. The name must be unique for your account. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name pulumi.StringPtrInput +} + +func (EventApiDestinationState) ElementType() reflect.Type { + return reflect.TypeOf((*eventApiDestinationState)(nil)).Elem() +} + +type eventApiDestinationArgs struct { + // ARN of the EventBridge Connection to use for the API Destination. + ConnectionArn string `pulumi:"connectionArn"` + // The description of the new API Destination. Maximum of 512 characters. + Description *string `pulumi:"description"` + // Select the HTTP method used for the invocation endpoint, such as GET, POST, PUT, etc. + HttpMethod string `pulumi:"httpMethod"` + // URL endpoint to invoke as a target. This could be a valid endpoint generated by a partner service. You can include "*" as path parameters wildcards to be set from the Target HttpParameters. + InvocationEndpoint string `pulumi:"invocationEndpoint"` + // Enter the maximum number of invocations per second to allow for this destination. Enter a value greater than 0 (default 300). + InvocationRateLimitPerSecond *int `pulumi:"invocationRateLimitPerSecond"` + // The name of the new API Destination. The name must be unique for your account. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a EventApiDestination resource. +type EventApiDestinationArgs struct { + // ARN of the EventBridge Connection to use for the API Destination. + ConnectionArn pulumi.StringInput + // The description of the new API Destination. Maximum of 512 characters. + Description pulumi.StringPtrInput + // Select the HTTP method used for the invocation endpoint, such as GET, POST, PUT, etc. + HttpMethod pulumi.StringInput + // URL endpoint to invoke as a target. This could be a valid endpoint generated by a partner service. You can include "*" as path parameters wildcards to be set from the Target HttpParameters. + InvocationEndpoint pulumi.StringInput + // Enter the maximum number of invocations per second to allow for this destination. Enter a value greater than 0 (default 300). + InvocationRateLimitPerSecond pulumi.IntPtrInput + // The name of the new API Destination. The name must be unique for your account. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name pulumi.StringPtrInput +} + +func (EventApiDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventApiDestinationArgs)(nil)).Elem() +} + +type EventApiDestinationInput interface { + pulumi.Input + + ToEventApiDestinationOutput() EventApiDestinationOutput + ToEventApiDestinationOutputWithContext(ctx context.Context) EventApiDestinationOutput +} + +func (*EventApiDestination) ElementType() reflect.Type { + return reflect.TypeOf((**EventApiDestination)(nil)).Elem() +} + +func (i *EventApiDestination) ToEventApiDestinationOutput() EventApiDestinationOutput { + return i.ToEventApiDestinationOutputWithContext(context.Background()) +} + +func (i *EventApiDestination) ToEventApiDestinationOutputWithContext(ctx context.Context) EventApiDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventApiDestinationOutput) +} + +// EventApiDestinationArrayInput is an input type that accepts EventApiDestinationArray and EventApiDestinationArrayOutput values. +// You can construct a concrete instance of `EventApiDestinationArrayInput` via: +// +// EventApiDestinationArray{ EventApiDestinationArgs{...} } +type EventApiDestinationArrayInput interface { + pulumi.Input + + ToEventApiDestinationArrayOutput() EventApiDestinationArrayOutput + ToEventApiDestinationArrayOutputWithContext(context.Context) EventApiDestinationArrayOutput +} + +type EventApiDestinationArray []EventApiDestinationInput + +func (EventApiDestinationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventApiDestination)(nil)).Elem() +} + +func (i EventApiDestinationArray) ToEventApiDestinationArrayOutput() EventApiDestinationArrayOutput { + return i.ToEventApiDestinationArrayOutputWithContext(context.Background()) +} + +func (i EventApiDestinationArray) ToEventApiDestinationArrayOutputWithContext(ctx context.Context) EventApiDestinationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventApiDestinationArrayOutput) +} + +// EventApiDestinationMapInput is an input type that accepts EventApiDestinationMap and EventApiDestinationMapOutput values. +// You can construct a concrete instance of `EventApiDestinationMapInput` via: +// +// EventApiDestinationMap{ "key": EventApiDestinationArgs{...} } +type EventApiDestinationMapInput interface { + pulumi.Input + + ToEventApiDestinationMapOutput() EventApiDestinationMapOutput + ToEventApiDestinationMapOutputWithContext(context.Context) EventApiDestinationMapOutput +} + +type EventApiDestinationMap map[string]EventApiDestinationInput + +func (EventApiDestinationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventApiDestination)(nil)).Elem() +} + +func (i EventApiDestinationMap) ToEventApiDestinationMapOutput() EventApiDestinationMapOutput { + return i.ToEventApiDestinationMapOutputWithContext(context.Background()) +} + +func (i EventApiDestinationMap) ToEventApiDestinationMapOutputWithContext(ctx context.Context) EventApiDestinationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventApiDestinationMapOutput) +} + +type EventApiDestinationOutput struct{ *pulumi.OutputState } + +func (EventApiDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventApiDestination)(nil)).Elem() +} + +func (o EventApiDestinationOutput) ToEventApiDestinationOutput() EventApiDestinationOutput { + return o +} + +func (o EventApiDestinationOutput) ToEventApiDestinationOutputWithContext(ctx context.Context) EventApiDestinationOutput { + return o +} + +// The Amazon Resource Name (ARN) of the event API Destination. +func (o EventApiDestinationOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *EventApiDestination) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// ARN of the EventBridge Connection to use for the API Destination. +func (o EventApiDestinationOutput) ConnectionArn() pulumi.StringOutput { + return o.ApplyT(func(v *EventApiDestination) pulumi.StringOutput { return v.ConnectionArn }).(pulumi.StringOutput) +} + +// The description of the new API Destination. Maximum of 512 characters. +func (o EventApiDestinationOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventApiDestination) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Select the HTTP method used for the invocation endpoint, such as GET, POST, PUT, etc. +func (o EventApiDestinationOutput) HttpMethod() pulumi.StringOutput { + return o.ApplyT(func(v *EventApiDestination) pulumi.StringOutput { return v.HttpMethod }).(pulumi.StringOutput) +} + +// URL endpoint to invoke as a target. This could be a valid endpoint generated by a partner service. You can include "*" as path parameters wildcards to be set from the Target HttpParameters. +func (o EventApiDestinationOutput) InvocationEndpoint() pulumi.StringOutput { + return o.ApplyT(func(v *EventApiDestination) pulumi.StringOutput { return v.InvocationEndpoint }).(pulumi.StringOutput) +} + +// Enter the maximum number of invocations per second to allow for this destination. Enter a value greater than 0 (default 300). +func (o EventApiDestinationOutput) InvocationRateLimitPerSecond() pulumi.IntPtrOutput { + return o.ApplyT(func(v *EventApiDestination) pulumi.IntPtrOutput { return v.InvocationRateLimitPerSecond }).(pulumi.IntPtrOutput) +} + +// The name of the new API Destination. The name must be unique for your account. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. +func (o EventApiDestinationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *EventApiDestination) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +type EventApiDestinationArrayOutput struct{ *pulumi.OutputState } + +func (EventApiDestinationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventApiDestination)(nil)).Elem() +} + +func (o EventApiDestinationArrayOutput) ToEventApiDestinationArrayOutput() EventApiDestinationArrayOutput { + return o +} + +func (o EventApiDestinationArrayOutput) ToEventApiDestinationArrayOutputWithContext(ctx context.Context) EventApiDestinationArrayOutput { + return o +} + +func (o EventApiDestinationArrayOutput) Index(i pulumi.IntInput) EventApiDestinationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventApiDestination { + return vs[0].([]*EventApiDestination)[vs[1].(int)] + }).(EventApiDestinationOutput) +} + +type EventApiDestinationMapOutput struct{ *pulumi.OutputState } + +func (EventApiDestinationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventApiDestination)(nil)).Elem() +} + +func (o EventApiDestinationMapOutput) ToEventApiDestinationMapOutput() EventApiDestinationMapOutput { + return o +} + +func (o EventApiDestinationMapOutput) ToEventApiDestinationMapOutputWithContext(ctx context.Context) EventApiDestinationMapOutput { + return o +} + +func (o EventApiDestinationMapOutput) MapIndex(k pulumi.StringInput) EventApiDestinationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventApiDestination { + return vs[0].(map[string]*EventApiDestination)[vs[1].(string)] + }).(EventApiDestinationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventApiDestinationInput)(nil)).Elem(), &EventApiDestination{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventApiDestinationArrayInput)(nil)).Elem(), EventApiDestinationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventApiDestinationMapInput)(nil)).Elem(), EventApiDestinationMap{}) + pulumi.RegisterOutputType(EventApiDestinationOutput{}) + pulumi.RegisterOutputType(EventApiDestinationArrayOutput{}) + pulumi.RegisterOutputType(EventApiDestinationMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventArchive.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventArchive.go new file mode 100644 index 000000000..4c40f9295 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventArchive.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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an EventBridge event archive resource. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// order, err := cloudwatch.NewEventBus(ctx, "order", &cloudwatch.EventBusArgs{ +// Name: pulumi.String("orders"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventArchive(ctx, "order", &cloudwatch.EventArchiveArgs{ +// Name: pulumi.String("order-archive"), +// EventSourceArn: order.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Example all optional arguments +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// order, err := cloudwatch.NewEventBus(ctx, "order", &cloudwatch.EventBusArgs{ +// Name: pulumi.String("orders"), +// }) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "source": []string{ +// "company.team.order", +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = cloudwatch.NewEventArchive(ctx, "order", &cloudwatch.EventArchiveArgs{ +// Name: pulumi.String("order-archive"), +// Description: pulumi.String("Archived events from order service"), +// EventSourceArn: order.Arn, +// RetentionDays: pulumi.Int(7), +// EventPattern: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import an EventBridge archive using the `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventArchive:EventArchive imported_event_archive order-archive +// ``` +type EventArchive struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) of the event archive. + Arn pulumi.StringOutput `pulumi:"arn"` + // The description of the new event archive. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Instructs the new event archive to only capture events matched by this pattern. By default, it attempts to archive every event received in the `eventSourceArn`. + EventPattern pulumi.StringPtrOutput `pulumi:"eventPattern"` + // Event bus source ARN from where these events should be archived. + EventSourceArn pulumi.StringOutput `pulumi:"eventSourceArn"` + // The name of the new event archive. The archive name cannot exceed 48 characters. + Name pulumi.StringOutput `pulumi:"name"` + // The maximum number of days to retain events in the new event archive. By default, it archives indefinitely. + RetentionDays pulumi.IntPtrOutput `pulumi:"retentionDays"` +} + +// NewEventArchive registers a new resource with the given unique name, arguments, and options. +func NewEventArchive(ctx *pulumi.Context, + name string, args *EventArchiveArgs, opts ...pulumi.ResourceOption) (*EventArchive, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.EventSourceArn == nil { + return nil, errors.New("invalid value for required argument 'EventSourceArn'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventArchive + err := ctx.RegisterResource("aws:cloudwatch/eventArchive:EventArchive", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventArchive gets an existing EventArchive 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 GetEventArchive(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventArchiveState, opts ...pulumi.ResourceOption) (*EventArchive, error) { + var resource EventArchive + err := ctx.ReadResource("aws:cloudwatch/eventArchive:EventArchive", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventArchive resources. +type eventArchiveState struct { + // The Amazon Resource Name (ARN) of the event archive. + Arn *string `pulumi:"arn"` + // The description of the new event archive. + Description *string `pulumi:"description"` + // Instructs the new event archive to only capture events matched by this pattern. By default, it attempts to archive every event received in the `eventSourceArn`. + EventPattern *string `pulumi:"eventPattern"` + // Event bus source ARN from where these events should be archived. + EventSourceArn *string `pulumi:"eventSourceArn"` + // The name of the new event archive. The archive name cannot exceed 48 characters. + Name *string `pulumi:"name"` + // The maximum number of days to retain events in the new event archive. By default, it archives indefinitely. + RetentionDays *int `pulumi:"retentionDays"` +} + +type EventArchiveState struct { + // The Amazon Resource Name (ARN) of the event archive. + Arn pulumi.StringPtrInput + // The description of the new event archive. + Description pulumi.StringPtrInput + // Instructs the new event archive to only capture events matched by this pattern. By default, it attempts to archive every event received in the `eventSourceArn`. + EventPattern pulumi.StringPtrInput + // Event bus source ARN from where these events should be archived. + EventSourceArn pulumi.StringPtrInput + // The name of the new event archive. The archive name cannot exceed 48 characters. + Name pulumi.StringPtrInput + // The maximum number of days to retain events in the new event archive. By default, it archives indefinitely. + RetentionDays pulumi.IntPtrInput +} + +func (EventArchiveState) ElementType() reflect.Type { + return reflect.TypeOf((*eventArchiveState)(nil)).Elem() +} + +type eventArchiveArgs struct { + // The description of the new event archive. + Description *string `pulumi:"description"` + // Instructs the new event archive to only capture events matched by this pattern. By default, it attempts to archive every event received in the `eventSourceArn`. + EventPattern *string `pulumi:"eventPattern"` + // Event bus source ARN from where these events should be archived. + EventSourceArn string `pulumi:"eventSourceArn"` + // The name of the new event archive. The archive name cannot exceed 48 characters. + Name *string `pulumi:"name"` + // The maximum number of days to retain events in the new event archive. By default, it archives indefinitely. + RetentionDays *int `pulumi:"retentionDays"` +} + +// The set of arguments for constructing a EventArchive resource. +type EventArchiveArgs struct { + // The description of the new event archive. + Description pulumi.StringPtrInput + // Instructs the new event archive to only capture events matched by this pattern. By default, it attempts to archive every event received in the `eventSourceArn`. + EventPattern pulumi.StringPtrInput + // Event bus source ARN from where these events should be archived. + EventSourceArn pulumi.StringInput + // The name of the new event archive. The archive name cannot exceed 48 characters. + Name pulumi.StringPtrInput + // The maximum number of days to retain events in the new event archive. By default, it archives indefinitely. + RetentionDays pulumi.IntPtrInput +} + +func (EventArchiveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventArchiveArgs)(nil)).Elem() +} + +type EventArchiveInput interface { + pulumi.Input + + ToEventArchiveOutput() EventArchiveOutput + ToEventArchiveOutputWithContext(ctx context.Context) EventArchiveOutput +} + +func (*EventArchive) ElementType() reflect.Type { + return reflect.TypeOf((**EventArchive)(nil)).Elem() +} + +func (i *EventArchive) ToEventArchiveOutput() EventArchiveOutput { + return i.ToEventArchiveOutputWithContext(context.Background()) +} + +func (i *EventArchive) ToEventArchiveOutputWithContext(ctx context.Context) EventArchiveOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventArchiveOutput) +} + +// EventArchiveArrayInput is an input type that accepts EventArchiveArray and EventArchiveArrayOutput values. +// You can construct a concrete instance of `EventArchiveArrayInput` via: +// +// EventArchiveArray{ EventArchiveArgs{...} } +type EventArchiveArrayInput interface { + pulumi.Input + + ToEventArchiveArrayOutput() EventArchiveArrayOutput + ToEventArchiveArrayOutputWithContext(context.Context) EventArchiveArrayOutput +} + +type EventArchiveArray []EventArchiveInput + +func (EventArchiveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventArchive)(nil)).Elem() +} + +func (i EventArchiveArray) ToEventArchiveArrayOutput() EventArchiveArrayOutput { + return i.ToEventArchiveArrayOutputWithContext(context.Background()) +} + +func (i EventArchiveArray) ToEventArchiveArrayOutputWithContext(ctx context.Context) EventArchiveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventArchiveArrayOutput) +} + +// EventArchiveMapInput is an input type that accepts EventArchiveMap and EventArchiveMapOutput values. +// You can construct a concrete instance of `EventArchiveMapInput` via: +// +// EventArchiveMap{ "key": EventArchiveArgs{...} } +type EventArchiveMapInput interface { + pulumi.Input + + ToEventArchiveMapOutput() EventArchiveMapOutput + ToEventArchiveMapOutputWithContext(context.Context) EventArchiveMapOutput +} + +type EventArchiveMap map[string]EventArchiveInput + +func (EventArchiveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventArchive)(nil)).Elem() +} + +func (i EventArchiveMap) ToEventArchiveMapOutput() EventArchiveMapOutput { + return i.ToEventArchiveMapOutputWithContext(context.Background()) +} + +func (i EventArchiveMap) ToEventArchiveMapOutputWithContext(ctx context.Context) EventArchiveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventArchiveMapOutput) +} + +type EventArchiveOutput struct{ *pulumi.OutputState } + +func (EventArchiveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventArchive)(nil)).Elem() +} + +func (o EventArchiveOutput) ToEventArchiveOutput() EventArchiveOutput { + return o +} + +func (o EventArchiveOutput) ToEventArchiveOutputWithContext(ctx context.Context) EventArchiveOutput { + return o +} + +// The Amazon Resource Name (ARN) of the event archive. +func (o EventArchiveOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *EventArchive) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The description of the new event archive. +func (o EventArchiveOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventArchive) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Instructs the new event archive to only capture events matched by this pattern. By default, it attempts to archive every event received in the `eventSourceArn`. +func (o EventArchiveOutput) EventPattern() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventArchive) pulumi.StringPtrOutput { return v.EventPattern }).(pulumi.StringPtrOutput) +} + +// Event bus source ARN from where these events should be archived. +func (o EventArchiveOutput) EventSourceArn() pulumi.StringOutput { + return o.ApplyT(func(v *EventArchive) pulumi.StringOutput { return v.EventSourceArn }).(pulumi.StringOutput) +} + +// The name of the new event archive. The archive name cannot exceed 48 characters. +func (o EventArchiveOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *EventArchive) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The maximum number of days to retain events in the new event archive. By default, it archives indefinitely. +func (o EventArchiveOutput) RetentionDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v *EventArchive) pulumi.IntPtrOutput { return v.RetentionDays }).(pulumi.IntPtrOutput) +} + +type EventArchiveArrayOutput struct{ *pulumi.OutputState } + +func (EventArchiveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventArchive)(nil)).Elem() +} + +func (o EventArchiveArrayOutput) ToEventArchiveArrayOutput() EventArchiveArrayOutput { + return o +} + +func (o EventArchiveArrayOutput) ToEventArchiveArrayOutputWithContext(ctx context.Context) EventArchiveArrayOutput { + return o +} + +func (o EventArchiveArrayOutput) Index(i pulumi.IntInput) EventArchiveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventArchive { + return vs[0].([]*EventArchive)[vs[1].(int)] + }).(EventArchiveOutput) +} + +type EventArchiveMapOutput struct{ *pulumi.OutputState } + +func (EventArchiveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventArchive)(nil)).Elem() +} + +func (o EventArchiveMapOutput) ToEventArchiveMapOutput() EventArchiveMapOutput { + return o +} + +func (o EventArchiveMapOutput) ToEventArchiveMapOutputWithContext(ctx context.Context) EventArchiveMapOutput { + return o +} + +func (o EventArchiveMapOutput) MapIndex(k pulumi.StringInput) EventArchiveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventArchive { + return vs[0].(map[string]*EventArchive)[vs[1].(string)] + }).(EventArchiveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventArchiveInput)(nil)).Elem(), &EventArchive{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventArchiveArrayInput)(nil)).Elem(), EventArchiveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventArchiveMapInput)(nil)).Elem(), EventArchiveMap{}) + pulumi.RegisterOutputType(EventArchiveOutput{}) + pulumi.RegisterOutputType(EventArchiveArrayOutput{}) + pulumi.RegisterOutputType(EventArchiveMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBus.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBus.go new file mode 100644 index 000000000..3ac5c7a27 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBus.go @@ -0,0 +1,385 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an EventBridge event bus resource. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventBus(ctx, "messenger", &cloudwatch.EventBusArgs{ +// Name: pulumi.String("chat-messages"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplepartner, err := cloudwatch.GetEventSource(ctx, &cloudwatch.GetEventSourceArgs{ +// NamePrefix: pulumi.StringRef("aws.partner/examplepartner.com"), +// }, nil) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventBus(ctx, "examplepartner", &cloudwatch.EventBusArgs{ +// Name: pulumi.String(examplepartner.Name), +// Description: pulumi.String("Event bus for example partner events"), +// EventSourceName: pulumi.String(examplepartner.Name), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import EventBridge event buses using the name of the event bus (which can also be a partner event source name). For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventBus:EventBus messenger chat-messages +// ``` +type EventBus struct { + pulumi.CustomResourceState + + // ARN of the event bus. + Arn pulumi.StringOutput `pulumi:"arn"` + // Event bus description. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Partner event source that the new event bus will be matched with. Must match `name`. + EventSourceName pulumi.StringPtrOutput `pulumi:"eventSourceName"` + // Identifier of the AWS KMS customer managed key for EventBridge to use, if you choose to use a customer managed key to encrypt events on this event bus. The identifier can be the key Amazon Resource Name (ARN), KeyId, key alias, or key alias ARN. + KmsKeyIdentifier pulumi.StringPtrOutput `pulumi:"kmsKeyIdentifier"` + // Name of the new event bus. The names of custom event buses can't contain the / character. To create a partner event bus, ensure that the `name` matches the `eventSourceName`. + // + // The following arguments are optional: + Name pulumi.StringOutput `pulumi:"name"` + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewEventBus registers a new resource with the given unique name, arguments, and options. +func NewEventBus(ctx *pulumi.Context, + name string, args *EventBusArgs, opts ...pulumi.ResourceOption) (*EventBus, error) { + if args == nil { + args = &EventBusArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventBus + err := ctx.RegisterResource("aws:cloudwatch/eventBus:EventBus", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventBus gets an existing EventBus 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 GetEventBus(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventBusState, opts ...pulumi.ResourceOption) (*EventBus, error) { + var resource EventBus + err := ctx.ReadResource("aws:cloudwatch/eventBus:EventBus", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventBus resources. +type eventBusState struct { + // ARN of the event bus. + Arn *string `pulumi:"arn"` + // Event bus description. + Description *string `pulumi:"description"` + // Partner event source that the new event bus will be matched with. Must match `name`. + EventSourceName *string `pulumi:"eventSourceName"` + // Identifier of the AWS KMS customer managed key for EventBridge to use, if you choose to use a customer managed key to encrypt events on this event bus. The identifier can be the key Amazon Resource Name (ARN), KeyId, key alias, or key alias ARN. + KmsKeyIdentifier *string `pulumi:"kmsKeyIdentifier"` + // Name of the new event bus. The names of custom event buses can't contain the / character. To create a partner event bus, ensure that the `name` matches the `eventSourceName`. + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type EventBusState struct { + // ARN of the event bus. + Arn pulumi.StringPtrInput + // Event bus description. + Description pulumi.StringPtrInput + // Partner event source that the new event bus will be matched with. Must match `name`. + EventSourceName pulumi.StringPtrInput + // Identifier of the AWS KMS customer managed key for EventBridge to use, if you choose to use a customer managed key to encrypt events on this event bus. The identifier can be the key Amazon Resource Name (ARN), KeyId, key alias, or key alias ARN. + KmsKeyIdentifier pulumi.StringPtrInput + // Name of the new event bus. The names of custom event buses can't contain the / character. To create a partner event bus, ensure that the `name` matches the `eventSourceName`. + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (EventBusState) ElementType() reflect.Type { + return reflect.TypeOf((*eventBusState)(nil)).Elem() +} + +type eventBusArgs struct { + // Event bus description. + Description *string `pulumi:"description"` + // Partner event source that the new event bus will be matched with. Must match `name`. + EventSourceName *string `pulumi:"eventSourceName"` + // Identifier of the AWS KMS customer managed key for EventBridge to use, if you choose to use a customer managed key to encrypt events on this event bus. The identifier can be the key Amazon Resource Name (ARN), KeyId, key alias, or key alias ARN. + KmsKeyIdentifier *string `pulumi:"kmsKeyIdentifier"` + // Name of the new event bus. The names of custom event buses can't contain the / character. To create a partner event bus, ensure that the `name` matches the `eventSourceName`. + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a EventBus resource. +type EventBusArgs struct { + // Event bus description. + Description pulumi.StringPtrInput + // Partner event source that the new event bus will be matched with. Must match `name`. + EventSourceName pulumi.StringPtrInput + // Identifier of the AWS KMS customer managed key for EventBridge to use, if you choose to use a customer managed key to encrypt events on this event bus. The identifier can be the key Amazon Resource Name (ARN), KeyId, key alias, or key alias ARN. + KmsKeyIdentifier pulumi.StringPtrInput + // Name of the new event bus. The names of custom event buses can't contain the / character. To create a partner event bus, ensure that the `name` matches the `eventSourceName`. + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (EventBusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventBusArgs)(nil)).Elem() +} + +type EventBusInput interface { + pulumi.Input + + ToEventBusOutput() EventBusOutput + ToEventBusOutputWithContext(ctx context.Context) EventBusOutput +} + +func (*EventBus) ElementType() reflect.Type { + return reflect.TypeOf((**EventBus)(nil)).Elem() +} + +func (i *EventBus) ToEventBusOutput() EventBusOutput { + return i.ToEventBusOutputWithContext(context.Background()) +} + +func (i *EventBus) ToEventBusOutputWithContext(ctx context.Context) EventBusOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventBusOutput) +} + +// EventBusArrayInput is an input type that accepts EventBusArray and EventBusArrayOutput values. +// You can construct a concrete instance of `EventBusArrayInput` via: +// +// EventBusArray{ EventBusArgs{...} } +type EventBusArrayInput interface { + pulumi.Input + + ToEventBusArrayOutput() EventBusArrayOutput + ToEventBusArrayOutputWithContext(context.Context) EventBusArrayOutput +} + +type EventBusArray []EventBusInput + +func (EventBusArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventBus)(nil)).Elem() +} + +func (i EventBusArray) ToEventBusArrayOutput() EventBusArrayOutput { + return i.ToEventBusArrayOutputWithContext(context.Background()) +} + +func (i EventBusArray) ToEventBusArrayOutputWithContext(ctx context.Context) EventBusArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventBusArrayOutput) +} + +// EventBusMapInput is an input type that accepts EventBusMap and EventBusMapOutput values. +// You can construct a concrete instance of `EventBusMapInput` via: +// +// EventBusMap{ "key": EventBusArgs{...} } +type EventBusMapInput interface { + pulumi.Input + + ToEventBusMapOutput() EventBusMapOutput + ToEventBusMapOutputWithContext(context.Context) EventBusMapOutput +} + +type EventBusMap map[string]EventBusInput + +func (EventBusMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventBus)(nil)).Elem() +} + +func (i EventBusMap) ToEventBusMapOutput() EventBusMapOutput { + return i.ToEventBusMapOutputWithContext(context.Background()) +} + +func (i EventBusMap) ToEventBusMapOutputWithContext(ctx context.Context) EventBusMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventBusMapOutput) +} + +type EventBusOutput struct{ *pulumi.OutputState } + +func (EventBusOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventBus)(nil)).Elem() +} + +func (o EventBusOutput) ToEventBusOutput() EventBusOutput { + return o +} + +func (o EventBusOutput) ToEventBusOutputWithContext(ctx context.Context) EventBusOutput { + return o +} + +// ARN of the event bus. +func (o EventBusOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *EventBus) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Event bus description. +func (o EventBusOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventBus) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Partner event source that the new event bus will be matched with. Must match `name`. +func (o EventBusOutput) EventSourceName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventBus) pulumi.StringPtrOutput { return v.EventSourceName }).(pulumi.StringPtrOutput) +} + +// Identifier of the AWS KMS customer managed key for EventBridge to use, if you choose to use a customer managed key to encrypt events on this event bus. The identifier can be the key Amazon Resource Name (ARN), KeyId, key alias, or key alias ARN. +func (o EventBusOutput) KmsKeyIdentifier() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventBus) pulumi.StringPtrOutput { return v.KmsKeyIdentifier }).(pulumi.StringPtrOutput) +} + +// Name of the new event bus. The names of custom event buses can't contain the / character. To create a partner event bus, ensure that the `name` matches the `eventSourceName`. +// +// The following arguments are optional: +func (o EventBusOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *EventBus) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Map of tags assigned to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o EventBusOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventBus) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o EventBusOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventBus) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type EventBusArrayOutput struct{ *pulumi.OutputState } + +func (EventBusArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventBus)(nil)).Elem() +} + +func (o EventBusArrayOutput) ToEventBusArrayOutput() EventBusArrayOutput { + return o +} + +func (o EventBusArrayOutput) ToEventBusArrayOutputWithContext(ctx context.Context) EventBusArrayOutput { + return o +} + +func (o EventBusArrayOutput) Index(i pulumi.IntInput) EventBusOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventBus { + return vs[0].([]*EventBus)[vs[1].(int)] + }).(EventBusOutput) +} + +type EventBusMapOutput struct{ *pulumi.OutputState } + +func (EventBusMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventBus)(nil)).Elem() +} + +func (o EventBusMapOutput) ToEventBusMapOutput() EventBusMapOutput { + return o +} + +func (o EventBusMapOutput) ToEventBusMapOutputWithContext(ctx context.Context) EventBusMapOutput { + return o +} + +func (o EventBusMapOutput) MapIndex(k pulumi.StringInput) EventBusOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventBus { + return vs[0].(map[string]*EventBus)[vs[1].(string)] + }).(EventBusOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventBusInput)(nil)).Elem(), &EventBus{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventBusArrayInput)(nil)).Elem(), EventBusArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventBusMapInput)(nil)).Elem(), EventBusMap{}) + pulumi.RegisterOutputType(EventBusOutput{}) + pulumi.RegisterOutputType(EventBusArrayOutput{}) + pulumi.RegisterOutputType(EventBusMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBusPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBusPolicy.go new file mode 100644 index 000000000..d8262bfe2 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventBusPolicy.go @@ -0,0 +1,453 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource to create an EventBridge resource policy to support cross-account events. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// > **Note:** The EventBridge bus policy resource (`cloudwatch.EventBusPolicy`) is incompatible with the EventBridge permission resource (`cloudwatch.EventPermission`) and will overwrite permissions. +// +// ## Example Usage +// +// ### Account Access +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// test, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("DevAccountAccess"), +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "events:PutEvents", +// }, +// Resources: []string{ +// "arn:aws:events:eu-west-1:123456789012:event-bus/default", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "AWS", +// Identifiers: []string{ +// "123456789012", +// }, +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventBusPolicy(ctx, "test", &cloudwatch.EventBusPolicyArgs{ +// Policy: pulumi.String(test.Json), +// EventBusName: pulumi.Any(testAwsCloudwatchEventBus.Name), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Organization Access +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// test, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("OrganizationAccess"), +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "events:DescribeRule", +// "events:ListRules", +// "events:ListTargetsByRule", +// "events:ListTagsForResource", +// }, +// Resources: []string{ +// "arn:aws:events:eu-west-1:123456789012:rule/*", +// "arn:aws:events:eu-west-1:123456789012:event-bus/default", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "AWS", +// Identifiers: []string{ +// "*", +// }, +// }, +// }, +// Conditions: []iam.GetPolicyDocumentStatementCondition{ +// { +// Test: "StringEquals", +// Variable: "aws:PrincipalOrgID", +// Values: interface{}{ +// example.Id, +// }, +// }, +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventBusPolicy(ctx, "test", &cloudwatch.EventBusPolicyArgs{ +// Policy: pulumi.String(test.Json), +// EventBusName: pulumi.Any(testAwsCloudwatchEventBus.Name), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// ### Multiple Statements +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// test, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("DevAccountAccess"), +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "events:PutEvents", +// }, +// Resources: []string{ +// "arn:aws:events:eu-west-1:123456789012:event-bus/default", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "AWS", +// Identifiers: []string{ +// "123456789012", +// }, +// }, +// }, +// }, +// { +// Sid: pulumi.StringRef("OrganizationAccess"), +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "events:DescribeRule", +// "events:ListRules", +// "events:ListTargetsByRule", +// "events:ListTagsForResource", +// }, +// Resources: []string{ +// "arn:aws:events:eu-west-1:123456789012:rule/*", +// "arn:aws:events:eu-west-1:123456789012:event-bus/default", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "AWS", +// Identifiers: []string{ +// "*", +// }, +// }, +// }, +// Conditions: []iam.GetPolicyDocumentStatementCondition{ +// { +// Test: "StringEquals", +// Variable: "aws:PrincipalOrgID", +// Values: interface{}{ +// example.Id, +// }, +// }, +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventBusPolicy(ctx, "test", &cloudwatch.EventBusPolicyArgs{ +// Policy: pulumi.String(test.Json), +// EventBusName: pulumi.Any(testAwsCloudwatchEventBus.Name), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// ## Import +// +// Using `pulumi import`, import an EventBridge policy using the `event_bus_name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventBusPolicy:EventBusPolicy DevAccountAccess example-event-bus +// ``` +type EventBusPolicy struct { + pulumi.CustomResourceState + + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName pulumi.StringPtrOutput `pulumi:"eventBusName"` + // The text of the policy. + Policy pulumi.StringOutput `pulumi:"policy"` +} + +// NewEventBusPolicy registers a new resource with the given unique name, arguments, and options. +func NewEventBusPolicy(ctx *pulumi.Context, + name string, args *EventBusPolicyArgs, opts ...pulumi.ResourceOption) (*EventBusPolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Policy == nil { + return nil, errors.New("invalid value for required argument 'Policy'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventBusPolicy + err := ctx.RegisterResource("aws:cloudwatch/eventBusPolicy:EventBusPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventBusPolicy gets an existing EventBusPolicy 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 GetEventBusPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventBusPolicyState, opts ...pulumi.ResourceOption) (*EventBusPolicy, error) { + var resource EventBusPolicy + err := ctx.ReadResource("aws:cloudwatch/eventBusPolicy:EventBusPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventBusPolicy resources. +type eventBusPolicyState struct { + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName *string `pulumi:"eventBusName"` + // The text of the policy. + Policy *string `pulumi:"policy"` +} + +type EventBusPolicyState struct { + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName pulumi.StringPtrInput + // The text of the policy. + Policy pulumi.StringPtrInput +} + +func (EventBusPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*eventBusPolicyState)(nil)).Elem() +} + +type eventBusPolicyArgs struct { + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName *string `pulumi:"eventBusName"` + // The text of the policy. + Policy string `pulumi:"policy"` +} + +// The set of arguments for constructing a EventBusPolicy resource. +type EventBusPolicyArgs struct { + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName pulumi.StringPtrInput + // The text of the policy. + Policy pulumi.StringInput +} + +func (EventBusPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventBusPolicyArgs)(nil)).Elem() +} + +type EventBusPolicyInput interface { + pulumi.Input + + ToEventBusPolicyOutput() EventBusPolicyOutput + ToEventBusPolicyOutputWithContext(ctx context.Context) EventBusPolicyOutput +} + +func (*EventBusPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**EventBusPolicy)(nil)).Elem() +} + +func (i *EventBusPolicy) ToEventBusPolicyOutput() EventBusPolicyOutput { + return i.ToEventBusPolicyOutputWithContext(context.Background()) +} + +func (i *EventBusPolicy) ToEventBusPolicyOutputWithContext(ctx context.Context) EventBusPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventBusPolicyOutput) +} + +// EventBusPolicyArrayInput is an input type that accepts EventBusPolicyArray and EventBusPolicyArrayOutput values. +// You can construct a concrete instance of `EventBusPolicyArrayInput` via: +// +// EventBusPolicyArray{ EventBusPolicyArgs{...} } +type EventBusPolicyArrayInput interface { + pulumi.Input + + ToEventBusPolicyArrayOutput() EventBusPolicyArrayOutput + ToEventBusPolicyArrayOutputWithContext(context.Context) EventBusPolicyArrayOutput +} + +type EventBusPolicyArray []EventBusPolicyInput + +func (EventBusPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventBusPolicy)(nil)).Elem() +} + +func (i EventBusPolicyArray) ToEventBusPolicyArrayOutput() EventBusPolicyArrayOutput { + return i.ToEventBusPolicyArrayOutputWithContext(context.Background()) +} + +func (i EventBusPolicyArray) ToEventBusPolicyArrayOutputWithContext(ctx context.Context) EventBusPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventBusPolicyArrayOutput) +} + +// EventBusPolicyMapInput is an input type that accepts EventBusPolicyMap and EventBusPolicyMapOutput values. +// You can construct a concrete instance of `EventBusPolicyMapInput` via: +// +// EventBusPolicyMap{ "key": EventBusPolicyArgs{...} } +type EventBusPolicyMapInput interface { + pulumi.Input + + ToEventBusPolicyMapOutput() EventBusPolicyMapOutput + ToEventBusPolicyMapOutputWithContext(context.Context) EventBusPolicyMapOutput +} + +type EventBusPolicyMap map[string]EventBusPolicyInput + +func (EventBusPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventBusPolicy)(nil)).Elem() +} + +func (i EventBusPolicyMap) ToEventBusPolicyMapOutput() EventBusPolicyMapOutput { + return i.ToEventBusPolicyMapOutputWithContext(context.Background()) +} + +func (i EventBusPolicyMap) ToEventBusPolicyMapOutputWithContext(ctx context.Context) EventBusPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventBusPolicyMapOutput) +} + +type EventBusPolicyOutput struct{ *pulumi.OutputState } + +func (EventBusPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventBusPolicy)(nil)).Elem() +} + +func (o EventBusPolicyOutput) ToEventBusPolicyOutput() EventBusPolicyOutput { + return o +} + +func (o EventBusPolicyOutput) ToEventBusPolicyOutputWithContext(ctx context.Context) EventBusPolicyOutput { + return o +} + +// The name of the event bus to set the permissions on. +// If you omit this, the permissions are set on the `default` event bus. +func (o EventBusPolicyOutput) EventBusName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventBusPolicy) pulumi.StringPtrOutput { return v.EventBusName }).(pulumi.StringPtrOutput) +} + +// The text of the policy. +func (o EventBusPolicyOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *EventBusPolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +type EventBusPolicyArrayOutput struct{ *pulumi.OutputState } + +func (EventBusPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventBusPolicy)(nil)).Elem() +} + +func (o EventBusPolicyArrayOutput) ToEventBusPolicyArrayOutput() EventBusPolicyArrayOutput { + return o +} + +func (o EventBusPolicyArrayOutput) ToEventBusPolicyArrayOutputWithContext(ctx context.Context) EventBusPolicyArrayOutput { + return o +} + +func (o EventBusPolicyArrayOutput) Index(i pulumi.IntInput) EventBusPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventBusPolicy { + return vs[0].([]*EventBusPolicy)[vs[1].(int)] + }).(EventBusPolicyOutput) +} + +type EventBusPolicyMapOutput struct{ *pulumi.OutputState } + +func (EventBusPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventBusPolicy)(nil)).Elem() +} + +func (o EventBusPolicyMapOutput) ToEventBusPolicyMapOutput() EventBusPolicyMapOutput { + return o +} + +func (o EventBusPolicyMapOutput) ToEventBusPolicyMapOutputWithContext(ctx context.Context) EventBusPolicyMapOutput { + return o +} + +func (o EventBusPolicyMapOutput) MapIndex(k pulumi.StringInput) EventBusPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventBusPolicy { + return vs[0].(map[string]*EventBusPolicy)[vs[1].(string)] + }).(EventBusPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventBusPolicyInput)(nil)).Elem(), &EventBusPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventBusPolicyArrayInput)(nil)).Elem(), EventBusPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventBusPolicyMapInput)(nil)).Elem(), EventBusPolicyMap{}) + pulumi.RegisterOutputType(EventBusPolicyOutput{}) + pulumi.RegisterOutputType(EventBusPolicyArrayOutput{}) + pulumi.RegisterOutputType(EventBusPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventConnection.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventConnection.go new file mode 100644 index 000000000..1882e7abd --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventConnection.go @@ -0,0 +1,490 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an EventBridge connection resource. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventConnection(ctx, "test", &cloudwatch.EventConnectionArgs{ +// Name: pulumi.String("ngrok-connection"), +// Description: pulumi.String("A connection description"), +// AuthorizationType: pulumi.String("API_KEY"), +// AuthParameters: &cloudwatch.EventConnectionAuthParametersArgs{ +// ApiKey: &cloudwatch.EventConnectionAuthParametersApiKeyArgs{ +// Key: pulumi.String("x-signature"), +// Value: pulumi.String("1234"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Basic Authorization +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventConnection(ctx, "test", &cloudwatch.EventConnectionArgs{ +// Name: pulumi.String("ngrok-connection"), +// Description: pulumi.String("A connection description"), +// AuthorizationType: pulumi.String("BASIC"), +// AuthParameters: &cloudwatch.EventConnectionAuthParametersArgs{ +// Basic: &cloudwatch.EventConnectionAuthParametersBasicArgs{ +// Username: pulumi.String("user"), +// Password: pulumi.String("Pass1234!"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### OAuth Authorization +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventConnection(ctx, "test", &cloudwatch.EventConnectionArgs{ +// Name: pulumi.String("ngrok-connection"), +// Description: pulumi.String("A connection description"), +// AuthorizationType: pulumi.String("OAUTH_CLIENT_CREDENTIALS"), +// AuthParameters: &cloudwatch.EventConnectionAuthParametersArgs{ +// Oauth: &cloudwatch.EventConnectionAuthParametersOauthArgs{ +// AuthorizationEndpoint: pulumi.String("https://auth.url.com/endpoint"), +// HttpMethod: pulumi.String("GET"), +// ClientParameters: &cloudwatch.EventConnectionAuthParametersOauthClientParametersArgs{ +// ClientId: pulumi.String("1234567890"), +// ClientSecret: pulumi.String("Pass1234!"), +// }, +// OauthHttpParameters: &cloudwatch.EventConnectionAuthParametersOauthOauthHttpParametersArgs{ +// Bodies: cloudwatch.EventConnectionAuthParametersOauthOauthHttpParametersBodyArray{ +// &cloudwatch.EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs{ +// Key: pulumi.String("body-parameter-key"), +// Value: pulumi.String("body-parameter-value"), +// IsValueSecret: pulumi.Bool(false), +// }, +// }, +// Headers: cloudwatch.EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray{ +// &cloudwatch.EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs{ +// Key: pulumi.String("header-parameter-key"), +// Value: pulumi.String("header-parameter-value"), +// IsValueSecret: pulumi.Bool(false), +// }, +// }, +// QueryStrings: cloudwatch.EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray{ +// &cloudwatch.EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs{ +// Key: pulumi.String("query-string-parameter-key"), +// Value: pulumi.String("query-string-parameter-value"), +// IsValueSecret: pulumi.Bool(false), +// }, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Invocation Http Parameters +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventConnection(ctx, "test", &cloudwatch.EventConnectionArgs{ +// Name: pulumi.String("ngrok-connection"), +// Description: pulumi.String("A connection description"), +// AuthorizationType: pulumi.String("BASIC"), +// AuthParameters: &cloudwatch.EventConnectionAuthParametersArgs{ +// Basic: &cloudwatch.EventConnectionAuthParametersBasicArgs{ +// Username: pulumi.String("user"), +// Password: pulumi.String("Pass1234!"), +// }, +// InvocationHttpParameters: &cloudwatch.EventConnectionAuthParametersInvocationHttpParametersArgs{ +// Bodies: cloudwatch.EventConnectionAuthParametersInvocationHttpParametersBodyArray{ +// &cloudwatch.EventConnectionAuthParametersInvocationHttpParametersBodyArgs{ +// Key: pulumi.String("body-parameter-key"), +// Value: pulumi.String("body-parameter-value"), +// IsValueSecret: pulumi.Bool(false), +// }, +// &cloudwatch.EventConnectionAuthParametersInvocationHttpParametersBodyArgs{ +// Key: pulumi.String("body-parameter-key2"), +// Value: pulumi.String("body-parameter-value2"), +// IsValueSecret: pulumi.Bool(true), +// }, +// }, +// Headers: cloudwatch.EventConnectionAuthParametersInvocationHttpParametersHeaderArray{ +// &cloudwatch.EventConnectionAuthParametersInvocationHttpParametersHeaderArgs{ +// Key: pulumi.String("header-parameter-key"), +// Value: pulumi.String("header-parameter-value"), +// IsValueSecret: pulumi.Bool(false), +// }, +// }, +// QueryStrings: cloudwatch.EventConnectionAuthParametersInvocationHttpParametersQueryStringArray{ +// &cloudwatch.EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs{ +// Key: pulumi.String("query-string-parameter-key"), +// Value: pulumi.String("query-string-parameter-value"), +// IsValueSecret: pulumi.Bool(false), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import EventBridge EventBridge connection using the `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventConnection:EventConnection test ngrok-connection +// ``` +type EventConnection struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) of the connection. + Arn pulumi.StringOutput `pulumi:"arn"` + // Parameters used for authorization. A maximum of 1 are allowed. Documented below. + AuthParameters EventConnectionAuthParametersOutput `pulumi:"authParameters"` + // Choose the type of authorization to use for the connection. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. + AuthorizationType pulumi.StringOutput `pulumi:"authorizationType"` + // Enter a description for the connection. Maximum of 512 characters. + Description pulumi.StringPtrOutput `pulumi:"description"` + // The name of the new connection. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name pulumi.StringOutput `pulumi:"name"` + // The Amazon Resource Name (ARN) of the secret created from the authorization parameters specified for the connection. + SecretArn pulumi.StringOutput `pulumi:"secretArn"` +} + +// NewEventConnection registers a new resource with the given unique name, arguments, and options. +func NewEventConnection(ctx *pulumi.Context, + name string, args *EventConnectionArgs, opts ...pulumi.ResourceOption) (*EventConnection, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AuthParameters == nil { + return nil, errors.New("invalid value for required argument 'AuthParameters'") + } + if args.AuthorizationType == nil { + return nil, errors.New("invalid value for required argument 'AuthorizationType'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventConnection + err := ctx.RegisterResource("aws:cloudwatch/eventConnection:EventConnection", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventConnection gets an existing EventConnection 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 GetEventConnection(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventConnectionState, opts ...pulumi.ResourceOption) (*EventConnection, error) { + var resource EventConnection + err := ctx.ReadResource("aws:cloudwatch/eventConnection:EventConnection", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventConnection resources. +type eventConnectionState struct { + // The Amazon Resource Name (ARN) of the connection. + Arn *string `pulumi:"arn"` + // Parameters used for authorization. A maximum of 1 are allowed. Documented below. + AuthParameters *EventConnectionAuthParameters `pulumi:"authParameters"` + // Choose the type of authorization to use for the connection. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. + AuthorizationType *string `pulumi:"authorizationType"` + // Enter a description for the connection. Maximum of 512 characters. + Description *string `pulumi:"description"` + // The name of the new connection. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name *string `pulumi:"name"` + // The Amazon Resource Name (ARN) of the secret created from the authorization parameters specified for the connection. + SecretArn *string `pulumi:"secretArn"` +} + +type EventConnectionState struct { + // The Amazon Resource Name (ARN) of the connection. + Arn pulumi.StringPtrInput + // Parameters used for authorization. A maximum of 1 are allowed. Documented below. + AuthParameters EventConnectionAuthParametersPtrInput + // Choose the type of authorization to use for the connection. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. + AuthorizationType pulumi.StringPtrInput + // Enter a description for the connection. Maximum of 512 characters. + Description pulumi.StringPtrInput + // The name of the new connection. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name pulumi.StringPtrInput + // The Amazon Resource Name (ARN) of the secret created from the authorization parameters specified for the connection. + SecretArn pulumi.StringPtrInput +} + +func (EventConnectionState) ElementType() reflect.Type { + return reflect.TypeOf((*eventConnectionState)(nil)).Elem() +} + +type eventConnectionArgs struct { + // Parameters used for authorization. A maximum of 1 are allowed. Documented below. + AuthParameters EventConnectionAuthParameters `pulumi:"authParameters"` + // Choose the type of authorization to use for the connection. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. + AuthorizationType string `pulumi:"authorizationType"` + // Enter a description for the connection. Maximum of 512 characters. + Description *string `pulumi:"description"` + // The name of the new connection. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a EventConnection resource. +type EventConnectionArgs struct { + // Parameters used for authorization. A maximum of 1 are allowed. Documented below. + AuthParameters EventConnectionAuthParametersInput + // Choose the type of authorization to use for the connection. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. + AuthorizationType pulumi.StringInput + // Enter a description for the connection. Maximum of 512 characters. + Description pulumi.StringPtrInput + // The name of the new connection. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. + Name pulumi.StringPtrInput +} + +func (EventConnectionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventConnectionArgs)(nil)).Elem() +} + +type EventConnectionInput interface { + pulumi.Input + + ToEventConnectionOutput() EventConnectionOutput + ToEventConnectionOutputWithContext(ctx context.Context) EventConnectionOutput +} + +func (*EventConnection) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnection)(nil)).Elem() +} + +func (i *EventConnection) ToEventConnectionOutput() EventConnectionOutput { + return i.ToEventConnectionOutputWithContext(context.Background()) +} + +func (i *EventConnection) ToEventConnectionOutputWithContext(ctx context.Context) EventConnectionOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionOutput) +} + +// EventConnectionArrayInput is an input type that accepts EventConnectionArray and EventConnectionArrayOutput values. +// You can construct a concrete instance of `EventConnectionArrayInput` via: +// +// EventConnectionArray{ EventConnectionArgs{...} } +type EventConnectionArrayInput interface { + pulumi.Input + + ToEventConnectionArrayOutput() EventConnectionArrayOutput + ToEventConnectionArrayOutputWithContext(context.Context) EventConnectionArrayOutput +} + +type EventConnectionArray []EventConnectionInput + +func (EventConnectionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventConnection)(nil)).Elem() +} + +func (i EventConnectionArray) ToEventConnectionArrayOutput() EventConnectionArrayOutput { + return i.ToEventConnectionArrayOutputWithContext(context.Background()) +} + +func (i EventConnectionArray) ToEventConnectionArrayOutputWithContext(ctx context.Context) EventConnectionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionArrayOutput) +} + +// EventConnectionMapInput is an input type that accepts EventConnectionMap and EventConnectionMapOutput values. +// You can construct a concrete instance of `EventConnectionMapInput` via: +// +// EventConnectionMap{ "key": EventConnectionArgs{...} } +type EventConnectionMapInput interface { + pulumi.Input + + ToEventConnectionMapOutput() EventConnectionMapOutput + ToEventConnectionMapOutputWithContext(context.Context) EventConnectionMapOutput +} + +type EventConnectionMap map[string]EventConnectionInput + +func (EventConnectionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventConnection)(nil)).Elem() +} + +func (i EventConnectionMap) ToEventConnectionMapOutput() EventConnectionMapOutput { + return i.ToEventConnectionMapOutputWithContext(context.Background()) +} + +func (i EventConnectionMap) ToEventConnectionMapOutputWithContext(ctx context.Context) EventConnectionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionMapOutput) +} + +type EventConnectionOutput struct{ *pulumi.OutputState } + +func (EventConnectionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnection)(nil)).Elem() +} + +func (o EventConnectionOutput) ToEventConnectionOutput() EventConnectionOutput { + return o +} + +func (o EventConnectionOutput) ToEventConnectionOutputWithContext(ctx context.Context) EventConnectionOutput { + return o +} + +// The Amazon Resource Name (ARN) of the connection. +func (o EventConnectionOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *EventConnection) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Parameters used for authorization. A maximum of 1 are allowed. Documented below. +func (o EventConnectionOutput) AuthParameters() EventConnectionAuthParametersOutput { + return o.ApplyT(func(v *EventConnection) EventConnectionAuthParametersOutput { return v.AuthParameters }).(EventConnectionAuthParametersOutput) +} + +// Choose the type of authorization to use for the connection. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. +func (o EventConnectionOutput) AuthorizationType() pulumi.StringOutput { + return o.ApplyT(func(v *EventConnection) pulumi.StringOutput { return v.AuthorizationType }).(pulumi.StringOutput) +} + +// Enter a description for the connection. Maximum of 512 characters. +func (o EventConnectionOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnection) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// The name of the new connection. Maximum of 64 characters consisting of numbers, lower/upper case letters, .,-,_. +func (o EventConnectionOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *EventConnection) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The Amazon Resource Name (ARN) of the secret created from the authorization parameters specified for the connection. +func (o EventConnectionOutput) SecretArn() pulumi.StringOutput { + return o.ApplyT(func(v *EventConnection) pulumi.StringOutput { return v.SecretArn }).(pulumi.StringOutput) +} + +type EventConnectionArrayOutput struct{ *pulumi.OutputState } + +func (EventConnectionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventConnection)(nil)).Elem() +} + +func (o EventConnectionArrayOutput) ToEventConnectionArrayOutput() EventConnectionArrayOutput { + return o +} + +func (o EventConnectionArrayOutput) ToEventConnectionArrayOutputWithContext(ctx context.Context) EventConnectionArrayOutput { + return o +} + +func (o EventConnectionArrayOutput) Index(i pulumi.IntInput) EventConnectionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventConnection { + return vs[0].([]*EventConnection)[vs[1].(int)] + }).(EventConnectionOutput) +} + +type EventConnectionMapOutput struct{ *pulumi.OutputState } + +func (EventConnectionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventConnection)(nil)).Elem() +} + +func (o EventConnectionMapOutput) ToEventConnectionMapOutput() EventConnectionMapOutput { + return o +} + +func (o EventConnectionMapOutput) ToEventConnectionMapOutputWithContext(ctx context.Context) EventConnectionMapOutput { + return o +} + +func (o EventConnectionMapOutput) MapIndex(k pulumi.StringInput) EventConnectionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventConnection { + return vs[0].(map[string]*EventConnection)[vs[1].(string)] + }).(EventConnectionOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionInput)(nil)).Elem(), &EventConnection{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionArrayInput)(nil)).Elem(), EventConnectionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionMapInput)(nil)).Elem(), EventConnectionMap{}) + pulumi.RegisterOutputType(EventConnectionOutput{}) + pulumi.RegisterOutputType(EventConnectionArrayOutput{}) + pulumi.RegisterOutputType(EventConnectionMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventEndpoint.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventEndpoint.go new file mode 100644 index 000000000..5e000d3ee --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventEndpoint.go @@ -0,0 +1,377 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource to create an EventBridge Global Endpoint. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventEndpoint(ctx, "this", &cloudwatch.EventEndpointArgs{ +// Name: pulumi.String("global-endpoint"), +// RoleArn: pulumi.Any(replication.Arn), +// EventBuses: cloudwatch.EventEndpointEventBusArray{ +// &cloudwatch.EventEndpointEventBusArgs{ +// EventBusArn: pulumi.Any(primary.Arn), +// }, +// &cloudwatch.EventEndpointEventBusArgs{ +// EventBusArn: pulumi.Any(secondary.Arn), +// }, +// }, +// ReplicationConfig: &cloudwatch.EventEndpointReplicationConfigArgs{ +// State: pulumi.String("DISABLED"), +// }, +// RoutingConfig: &cloudwatch.EventEndpointRoutingConfigArgs{ +// FailoverConfig: &cloudwatch.EventEndpointRoutingConfigFailoverConfigArgs{ +// Primary: &cloudwatch.EventEndpointRoutingConfigFailoverConfigPrimaryArgs{ +// HealthCheck: pulumi.Any(primaryAwsRoute53HealthCheck.Arn), +// }, +// Secondary: &cloudwatch.EventEndpointRoutingConfigFailoverConfigSecondaryArgs{ +// Route: pulumi.String("us-east-2"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import EventBridge Global Endpoints using the `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventEndpoint:EventEndpoint imported_endpoint example-endpoint +// ``` +type EventEndpoint struct { + pulumi.CustomResourceState + + // The ARN of the endpoint that was created. + Arn pulumi.StringOutput `pulumi:"arn"` + // A description of the global endpoint. + Description pulumi.StringPtrOutput `pulumi:"description"` + // The URL of the endpoint that was created. + EndpointUrl pulumi.StringOutput `pulumi:"endpointUrl"` + // The event buses to use. The names of the event buses must be identical in each Region. Exactly two event buses are required. Documented below. + EventBuses EventEndpointEventBusArrayOutput `pulumi:"eventBuses"` + // The name of the global endpoint. + Name pulumi.StringOutput `pulumi:"name"` + // Parameters used for replication. Documented below. + ReplicationConfig EventEndpointReplicationConfigPtrOutput `pulumi:"replicationConfig"` + // The ARN of the IAM role used for replication between event buses. + RoleArn pulumi.StringPtrOutput `pulumi:"roleArn"` + // Parameters used for routing, including the health check and secondary Region. Documented below. + RoutingConfig EventEndpointRoutingConfigOutput `pulumi:"routingConfig"` +} + +// NewEventEndpoint registers a new resource with the given unique name, arguments, and options. +func NewEventEndpoint(ctx *pulumi.Context, + name string, args *EventEndpointArgs, opts ...pulumi.ResourceOption) (*EventEndpoint, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.EventBuses == nil { + return nil, errors.New("invalid value for required argument 'EventBuses'") + } + if args.RoutingConfig == nil { + return nil, errors.New("invalid value for required argument 'RoutingConfig'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventEndpoint + err := ctx.RegisterResource("aws:cloudwatch/eventEndpoint:EventEndpoint", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventEndpoint gets an existing EventEndpoint 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 GetEventEndpoint(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventEndpointState, opts ...pulumi.ResourceOption) (*EventEndpoint, error) { + var resource EventEndpoint + err := ctx.ReadResource("aws:cloudwatch/eventEndpoint:EventEndpoint", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventEndpoint resources. +type eventEndpointState struct { + // The ARN of the endpoint that was created. + Arn *string `pulumi:"arn"` + // A description of the global endpoint. + Description *string `pulumi:"description"` + // The URL of the endpoint that was created. + EndpointUrl *string `pulumi:"endpointUrl"` + // The event buses to use. The names of the event buses must be identical in each Region. Exactly two event buses are required. Documented below. + EventBuses []EventEndpointEventBus `pulumi:"eventBuses"` + // The name of the global endpoint. + Name *string `pulumi:"name"` + // Parameters used for replication. Documented below. + ReplicationConfig *EventEndpointReplicationConfig `pulumi:"replicationConfig"` + // The ARN of the IAM role used for replication between event buses. + RoleArn *string `pulumi:"roleArn"` + // Parameters used for routing, including the health check and secondary Region. Documented below. + RoutingConfig *EventEndpointRoutingConfig `pulumi:"routingConfig"` +} + +type EventEndpointState struct { + // The ARN of the endpoint that was created. + Arn pulumi.StringPtrInput + // A description of the global endpoint. + Description pulumi.StringPtrInput + // The URL of the endpoint that was created. + EndpointUrl pulumi.StringPtrInput + // The event buses to use. The names of the event buses must be identical in each Region. Exactly two event buses are required. Documented below. + EventBuses EventEndpointEventBusArrayInput + // The name of the global endpoint. + Name pulumi.StringPtrInput + // Parameters used for replication. Documented below. + ReplicationConfig EventEndpointReplicationConfigPtrInput + // The ARN of the IAM role used for replication between event buses. + RoleArn pulumi.StringPtrInput + // Parameters used for routing, including the health check and secondary Region. Documented below. + RoutingConfig EventEndpointRoutingConfigPtrInput +} + +func (EventEndpointState) ElementType() reflect.Type { + return reflect.TypeOf((*eventEndpointState)(nil)).Elem() +} + +type eventEndpointArgs struct { + // A description of the global endpoint. + Description *string `pulumi:"description"` + // The event buses to use. The names of the event buses must be identical in each Region. Exactly two event buses are required. Documented below. + EventBuses []EventEndpointEventBus `pulumi:"eventBuses"` + // The name of the global endpoint. + Name *string `pulumi:"name"` + // Parameters used for replication. Documented below. + ReplicationConfig *EventEndpointReplicationConfig `pulumi:"replicationConfig"` + // The ARN of the IAM role used for replication between event buses. + RoleArn *string `pulumi:"roleArn"` + // Parameters used for routing, including the health check and secondary Region. Documented below. + RoutingConfig EventEndpointRoutingConfig `pulumi:"routingConfig"` +} + +// The set of arguments for constructing a EventEndpoint resource. +type EventEndpointArgs struct { + // A description of the global endpoint. + Description pulumi.StringPtrInput + // The event buses to use. The names of the event buses must be identical in each Region. Exactly two event buses are required. Documented below. + EventBuses EventEndpointEventBusArrayInput + // The name of the global endpoint. + Name pulumi.StringPtrInput + // Parameters used for replication. Documented below. + ReplicationConfig EventEndpointReplicationConfigPtrInput + // The ARN of the IAM role used for replication between event buses. + RoleArn pulumi.StringPtrInput + // Parameters used for routing, including the health check and secondary Region. Documented below. + RoutingConfig EventEndpointRoutingConfigInput +} + +func (EventEndpointArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventEndpointArgs)(nil)).Elem() +} + +type EventEndpointInput interface { + pulumi.Input + + ToEventEndpointOutput() EventEndpointOutput + ToEventEndpointOutputWithContext(ctx context.Context) EventEndpointOutput +} + +func (*EventEndpoint) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpoint)(nil)).Elem() +} + +func (i *EventEndpoint) ToEventEndpointOutput() EventEndpointOutput { + return i.ToEventEndpointOutputWithContext(context.Background()) +} + +func (i *EventEndpoint) ToEventEndpointOutputWithContext(ctx context.Context) EventEndpointOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointOutput) +} + +// EventEndpointArrayInput is an input type that accepts EventEndpointArray and EventEndpointArrayOutput values. +// You can construct a concrete instance of `EventEndpointArrayInput` via: +// +// EventEndpointArray{ EventEndpointArgs{...} } +type EventEndpointArrayInput interface { + pulumi.Input + + ToEventEndpointArrayOutput() EventEndpointArrayOutput + ToEventEndpointArrayOutputWithContext(context.Context) EventEndpointArrayOutput +} + +type EventEndpointArray []EventEndpointInput + +func (EventEndpointArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventEndpoint)(nil)).Elem() +} + +func (i EventEndpointArray) ToEventEndpointArrayOutput() EventEndpointArrayOutput { + return i.ToEventEndpointArrayOutputWithContext(context.Background()) +} + +func (i EventEndpointArray) ToEventEndpointArrayOutputWithContext(ctx context.Context) EventEndpointArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointArrayOutput) +} + +// EventEndpointMapInput is an input type that accepts EventEndpointMap and EventEndpointMapOutput values. +// You can construct a concrete instance of `EventEndpointMapInput` via: +// +// EventEndpointMap{ "key": EventEndpointArgs{...} } +type EventEndpointMapInput interface { + pulumi.Input + + ToEventEndpointMapOutput() EventEndpointMapOutput + ToEventEndpointMapOutputWithContext(context.Context) EventEndpointMapOutput +} + +type EventEndpointMap map[string]EventEndpointInput + +func (EventEndpointMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventEndpoint)(nil)).Elem() +} + +func (i EventEndpointMap) ToEventEndpointMapOutput() EventEndpointMapOutput { + return i.ToEventEndpointMapOutputWithContext(context.Background()) +} + +func (i EventEndpointMap) ToEventEndpointMapOutputWithContext(ctx context.Context) EventEndpointMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointMapOutput) +} + +type EventEndpointOutput struct{ *pulumi.OutputState } + +func (EventEndpointOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpoint)(nil)).Elem() +} + +func (o EventEndpointOutput) ToEventEndpointOutput() EventEndpointOutput { + return o +} + +func (o EventEndpointOutput) ToEventEndpointOutputWithContext(ctx context.Context) EventEndpointOutput { + return o +} + +// The ARN of the endpoint that was created. +func (o EventEndpointOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *EventEndpoint) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// A description of the global endpoint. +func (o EventEndpointOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventEndpoint) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// The URL of the endpoint that was created. +func (o EventEndpointOutput) EndpointUrl() pulumi.StringOutput { + return o.ApplyT(func(v *EventEndpoint) pulumi.StringOutput { return v.EndpointUrl }).(pulumi.StringOutput) +} + +// The event buses to use. The names of the event buses must be identical in each Region. Exactly two event buses are required. Documented below. +func (o EventEndpointOutput) EventBuses() EventEndpointEventBusArrayOutput { + return o.ApplyT(func(v *EventEndpoint) EventEndpointEventBusArrayOutput { return v.EventBuses }).(EventEndpointEventBusArrayOutput) +} + +// The name of the global endpoint. +func (o EventEndpointOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *EventEndpoint) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Parameters used for replication. Documented below. +func (o EventEndpointOutput) ReplicationConfig() EventEndpointReplicationConfigPtrOutput { + return o.ApplyT(func(v *EventEndpoint) EventEndpointReplicationConfigPtrOutput { return v.ReplicationConfig }).(EventEndpointReplicationConfigPtrOutput) +} + +// The ARN of the IAM role used for replication between event buses. +func (o EventEndpointOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventEndpoint) pulumi.StringPtrOutput { return v.RoleArn }).(pulumi.StringPtrOutput) +} + +// Parameters used for routing, including the health check and secondary Region. Documented below. +func (o EventEndpointOutput) RoutingConfig() EventEndpointRoutingConfigOutput { + return o.ApplyT(func(v *EventEndpoint) EventEndpointRoutingConfigOutput { return v.RoutingConfig }).(EventEndpointRoutingConfigOutput) +} + +type EventEndpointArrayOutput struct{ *pulumi.OutputState } + +func (EventEndpointArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventEndpoint)(nil)).Elem() +} + +func (o EventEndpointArrayOutput) ToEventEndpointArrayOutput() EventEndpointArrayOutput { + return o +} + +func (o EventEndpointArrayOutput) ToEventEndpointArrayOutputWithContext(ctx context.Context) EventEndpointArrayOutput { + return o +} + +func (o EventEndpointArrayOutput) Index(i pulumi.IntInput) EventEndpointOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventEndpoint { + return vs[0].([]*EventEndpoint)[vs[1].(int)] + }).(EventEndpointOutput) +} + +type EventEndpointMapOutput struct{ *pulumi.OutputState } + +func (EventEndpointMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventEndpoint)(nil)).Elem() +} + +func (o EventEndpointMapOutput) ToEventEndpointMapOutput() EventEndpointMapOutput { + return o +} + +func (o EventEndpointMapOutput) ToEventEndpointMapOutputWithContext(ctx context.Context) EventEndpointMapOutput { + return o +} + +func (o EventEndpointMapOutput) MapIndex(k pulumi.StringInput) EventEndpointOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventEndpoint { + return vs[0].(map[string]*EventEndpoint)[vs[1].(string)] + }).(EventEndpointOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointInput)(nil)).Elem(), &EventEndpoint{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointArrayInput)(nil)).Elem(), EventEndpointArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointMapInput)(nil)).Elem(), EventEndpointMap{}) + pulumi.RegisterOutputType(EventEndpointOutput{}) + pulumi.RegisterOutputType(EventEndpointArrayOutput{}) + pulumi.RegisterOutputType(EventEndpointMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventPermission.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventPermission.go new file mode 100644 index 000000000..ac276e260 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventPermission.go @@ -0,0 +1,361 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource to create an EventBridge permission to support cross-account events in the current account default event bus. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// > **Note:** The EventBridge bus policy resource (`cloudwatch.EventBusPolicy`) is incompatible with the EventBridge permission resource (`cloudwatch.EventPermission`) and will overwrite permissions. +// +// ## Example Usage +// +// ### Account Access +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventPermission(ctx, "DevAccountAccess", &cloudwatch.EventPermissionArgs{ +// Principal: pulumi.String("123456789012"), +// StatementId: pulumi.String("DevAccountAccess"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Organization Access +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewEventPermission(ctx, "OrganizationAccess", &cloudwatch.EventPermissionArgs{ +// Principal: pulumi.String("*"), +// StatementId: pulumi.String("OrganizationAccess"), +// Condition: &cloudwatch.EventPermissionConditionArgs{ +// Key: pulumi.String("aws:PrincipalOrgID"), +// Type: pulumi.String("StringEquals"), +// Value: pulumi.Any(example.Id), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import EventBridge permissions using the `event_bus_name/statement_id` (if you omit `event_bus_name`, the `default` event bus will be used). For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventPermission:EventPermission DevAccountAccess example-event-bus/DevAccountAccess +// ``` +type EventPermission struct { + pulumi.CustomResourceState + + // The action that you are enabling the other account to perform. Defaults to `events:PutEvents`. + Action pulumi.StringPtrOutput `pulumi:"action"` + // Configuration block to limit the event bus permissions you are granting to only accounts that fulfill the condition. Specified below. + Condition EventPermissionConditionPtrOutput `pulumi:"condition"` + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName pulumi.StringPtrOutput `pulumi:"eventBusName"` + // The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify `*` to permit any account to put events to your default event bus, optionally limited by `condition`. + Principal pulumi.StringOutput `pulumi:"principal"` + // An identifier string for the external account that you are granting permissions to. + StatementId pulumi.StringOutput `pulumi:"statementId"` +} + +// NewEventPermission registers a new resource with the given unique name, arguments, and options. +func NewEventPermission(ctx *pulumi.Context, + name string, args *EventPermissionArgs, opts ...pulumi.ResourceOption) (*EventPermission, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Principal == nil { + return nil, errors.New("invalid value for required argument 'Principal'") + } + if args.StatementId == nil { + return nil, errors.New("invalid value for required argument 'StatementId'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventPermission + err := ctx.RegisterResource("aws:cloudwatch/eventPermission:EventPermission", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventPermission gets an existing EventPermission 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 GetEventPermission(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventPermissionState, opts ...pulumi.ResourceOption) (*EventPermission, error) { + var resource EventPermission + err := ctx.ReadResource("aws:cloudwatch/eventPermission:EventPermission", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventPermission resources. +type eventPermissionState struct { + // The action that you are enabling the other account to perform. Defaults to `events:PutEvents`. + Action *string `pulumi:"action"` + // Configuration block to limit the event bus permissions you are granting to only accounts that fulfill the condition. Specified below. + Condition *EventPermissionCondition `pulumi:"condition"` + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName *string `pulumi:"eventBusName"` + // The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify `*` to permit any account to put events to your default event bus, optionally limited by `condition`. + Principal *string `pulumi:"principal"` + // An identifier string for the external account that you are granting permissions to. + StatementId *string `pulumi:"statementId"` +} + +type EventPermissionState struct { + // The action that you are enabling the other account to perform. Defaults to `events:PutEvents`. + Action pulumi.StringPtrInput + // Configuration block to limit the event bus permissions you are granting to only accounts that fulfill the condition. Specified below. + Condition EventPermissionConditionPtrInput + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName pulumi.StringPtrInput + // The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify `*` to permit any account to put events to your default event bus, optionally limited by `condition`. + Principal pulumi.StringPtrInput + // An identifier string for the external account that you are granting permissions to. + StatementId pulumi.StringPtrInput +} + +func (EventPermissionState) ElementType() reflect.Type { + return reflect.TypeOf((*eventPermissionState)(nil)).Elem() +} + +type eventPermissionArgs struct { + // The action that you are enabling the other account to perform. Defaults to `events:PutEvents`. + Action *string `pulumi:"action"` + // Configuration block to limit the event bus permissions you are granting to only accounts that fulfill the condition. Specified below. + Condition *EventPermissionCondition `pulumi:"condition"` + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName *string `pulumi:"eventBusName"` + // The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify `*` to permit any account to put events to your default event bus, optionally limited by `condition`. + Principal string `pulumi:"principal"` + // An identifier string for the external account that you are granting permissions to. + StatementId string `pulumi:"statementId"` +} + +// The set of arguments for constructing a EventPermission resource. +type EventPermissionArgs struct { + // The action that you are enabling the other account to perform. Defaults to `events:PutEvents`. + Action pulumi.StringPtrInput + // Configuration block to limit the event bus permissions you are granting to only accounts that fulfill the condition. Specified below. + Condition EventPermissionConditionPtrInput + // The name of the event bus to set the permissions on. + // If you omit this, the permissions are set on the `default` event bus. + EventBusName pulumi.StringPtrInput + // The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify `*` to permit any account to put events to your default event bus, optionally limited by `condition`. + Principal pulumi.StringInput + // An identifier string for the external account that you are granting permissions to. + StatementId pulumi.StringInput +} + +func (EventPermissionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventPermissionArgs)(nil)).Elem() +} + +type EventPermissionInput interface { + pulumi.Input + + ToEventPermissionOutput() EventPermissionOutput + ToEventPermissionOutputWithContext(ctx context.Context) EventPermissionOutput +} + +func (*EventPermission) ElementType() reflect.Type { + return reflect.TypeOf((**EventPermission)(nil)).Elem() +} + +func (i *EventPermission) ToEventPermissionOutput() EventPermissionOutput { + return i.ToEventPermissionOutputWithContext(context.Background()) +} + +func (i *EventPermission) ToEventPermissionOutputWithContext(ctx context.Context) EventPermissionOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventPermissionOutput) +} + +// EventPermissionArrayInput is an input type that accepts EventPermissionArray and EventPermissionArrayOutput values. +// You can construct a concrete instance of `EventPermissionArrayInput` via: +// +// EventPermissionArray{ EventPermissionArgs{...} } +type EventPermissionArrayInput interface { + pulumi.Input + + ToEventPermissionArrayOutput() EventPermissionArrayOutput + ToEventPermissionArrayOutputWithContext(context.Context) EventPermissionArrayOutput +} + +type EventPermissionArray []EventPermissionInput + +func (EventPermissionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventPermission)(nil)).Elem() +} + +func (i EventPermissionArray) ToEventPermissionArrayOutput() EventPermissionArrayOutput { + return i.ToEventPermissionArrayOutputWithContext(context.Background()) +} + +func (i EventPermissionArray) ToEventPermissionArrayOutputWithContext(ctx context.Context) EventPermissionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventPermissionArrayOutput) +} + +// EventPermissionMapInput is an input type that accepts EventPermissionMap and EventPermissionMapOutput values. +// You can construct a concrete instance of `EventPermissionMapInput` via: +// +// EventPermissionMap{ "key": EventPermissionArgs{...} } +type EventPermissionMapInput interface { + pulumi.Input + + ToEventPermissionMapOutput() EventPermissionMapOutput + ToEventPermissionMapOutputWithContext(context.Context) EventPermissionMapOutput +} + +type EventPermissionMap map[string]EventPermissionInput + +func (EventPermissionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventPermission)(nil)).Elem() +} + +func (i EventPermissionMap) ToEventPermissionMapOutput() EventPermissionMapOutput { + return i.ToEventPermissionMapOutputWithContext(context.Background()) +} + +func (i EventPermissionMap) ToEventPermissionMapOutputWithContext(ctx context.Context) EventPermissionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventPermissionMapOutput) +} + +type EventPermissionOutput struct{ *pulumi.OutputState } + +func (EventPermissionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventPermission)(nil)).Elem() +} + +func (o EventPermissionOutput) ToEventPermissionOutput() EventPermissionOutput { + return o +} + +func (o EventPermissionOutput) ToEventPermissionOutputWithContext(ctx context.Context) EventPermissionOutput { + return o +} + +// The action that you are enabling the other account to perform. Defaults to `events:PutEvents`. +func (o EventPermissionOutput) Action() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventPermission) pulumi.StringPtrOutput { return v.Action }).(pulumi.StringPtrOutput) +} + +// Configuration block to limit the event bus permissions you are granting to only accounts that fulfill the condition. Specified below. +func (o EventPermissionOutput) Condition() EventPermissionConditionPtrOutput { + return o.ApplyT(func(v *EventPermission) EventPermissionConditionPtrOutput { return v.Condition }).(EventPermissionConditionPtrOutput) +} + +// The name of the event bus to set the permissions on. +// If you omit this, the permissions are set on the `default` event bus. +func (o EventPermissionOutput) EventBusName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventPermission) pulumi.StringPtrOutput { return v.EventBusName }).(pulumi.StringPtrOutput) +} + +// The 12-digit AWS account ID that you are permitting to put events to your default event bus. Specify `*` to permit any account to put events to your default event bus, optionally limited by `condition`. +func (o EventPermissionOutput) Principal() pulumi.StringOutput { + return o.ApplyT(func(v *EventPermission) pulumi.StringOutput { return v.Principal }).(pulumi.StringOutput) +} + +// An identifier string for the external account that you are granting permissions to. +func (o EventPermissionOutput) StatementId() pulumi.StringOutput { + return o.ApplyT(func(v *EventPermission) pulumi.StringOutput { return v.StatementId }).(pulumi.StringOutput) +} + +type EventPermissionArrayOutput struct{ *pulumi.OutputState } + +func (EventPermissionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventPermission)(nil)).Elem() +} + +func (o EventPermissionArrayOutput) ToEventPermissionArrayOutput() EventPermissionArrayOutput { + return o +} + +func (o EventPermissionArrayOutput) ToEventPermissionArrayOutputWithContext(ctx context.Context) EventPermissionArrayOutput { + return o +} + +func (o EventPermissionArrayOutput) Index(i pulumi.IntInput) EventPermissionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventPermission { + return vs[0].([]*EventPermission)[vs[1].(int)] + }).(EventPermissionOutput) +} + +type EventPermissionMapOutput struct{ *pulumi.OutputState } + +func (EventPermissionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventPermission)(nil)).Elem() +} + +func (o EventPermissionMapOutput) ToEventPermissionMapOutput() EventPermissionMapOutput { + return o +} + +func (o EventPermissionMapOutput) ToEventPermissionMapOutputWithContext(ctx context.Context) EventPermissionMapOutput { + return o +} + +func (o EventPermissionMapOutput) MapIndex(k pulumi.StringInput) EventPermissionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventPermission { + return vs[0].(map[string]*EventPermission)[vs[1].(string)] + }).(EventPermissionOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventPermissionInput)(nil)).Elem(), &EventPermission{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventPermissionArrayInput)(nil)).Elem(), EventPermissionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventPermissionMapInput)(nil)).Elem(), EventPermissionMap{}) + pulumi.RegisterOutputType(EventPermissionOutput{}) + pulumi.RegisterOutputType(EventPermissionArrayOutput{}) + pulumi.RegisterOutputType(EventPermissionMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventRule.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventRule.go new file mode 100644 index 000000000..281383d2a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventRule.go @@ -0,0 +1,562 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an EventBridge Rule resource. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "detail-type": []string{ +// "AWS Console Sign In via CloudTrail", +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// console, err := cloudwatch.NewEventRule(ctx, "console", &cloudwatch.EventRuleArgs{ +// Name: pulumi.String("capture-aws-sign-in"), +// Description: pulumi.String("Capture each AWS Console Sign In"), +// EventPattern: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// awsLogins, err := sns.NewTopic(ctx, "aws_logins", &sns.TopicArgs{ +// Name: pulumi.String("aws-console-logins"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "sns", &cloudwatch.EventTargetArgs{ +// Rule: console.Name, +// TargetId: pulumi.String("SendToSNS"), +// Arn: awsLogins.Arn, +// }) +// if err != nil { +// return err +// } +// snsTopicPolicy := awsLogins.Arn.ApplyT(func(arn string) (iam.GetPolicyDocumentResult, error) { +// return iam.GetPolicyDocumentResult(interface{}(iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: "Allow", +// Actions: []string{ +// "SNS:Publish", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "events.amazonaws.com", +// }, +// }, +// }, +// Resources: interface{}{ +// arn, +// }, +// }, +// }, +// }, nil))), nil +// }).(iam.GetPolicyDocumentResultOutput) +// _, err = sns.NewTopicPolicy(ctx, "default", &sns.TopicPolicyArgs{ +// Arn: awsLogins.Arn, +// Policy: pulumi.String(snsTopicPolicy.ApplyT(func(snsTopicPolicy iam.GetPolicyDocumentResult) (*string, error) { +// return &snsTopicPolicy.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// ## Import +// +// Using `pulumi import`, import EventBridge Rules using the `event_bus_name/rule_name` (if you omit `event_bus_name`, the `default` event bus will be used). For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventRule:EventRule console example-event-bus/capture-console-sign-in +// ``` +type EventRule struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) of the rule. + Arn pulumi.StringOutput `pulumi:"arn"` + // The description of the rule. + Description pulumi.StringPtrOutput `pulumi:"description"` + // The name or ARN of the event bus to associate with this rule. + // If you omit this, the `default` event bus is used. + EventBusName pulumi.StringPtrOutput `pulumi:"eventBusName"` + // The event pattern described a JSON object. At least one of `scheduleExpression` or `eventPattern` is required. See full documentation of [Events and Event Patterns in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html) for details. **Note**: The event pattern size is 2048 by default but it is adjustable up to 4096 characters by submitting a service quota increase request. See [Amazon EventBridge quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html) for details. + EventPattern pulumi.StringPtrOutput `pulumi:"eventPattern"` + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // Whether the rule should be enabled. + // Defaults to `true`. + // Conflicts with `state`. + // + // Deprecated: Use "state" instead + IsEnabled pulumi.BoolPtrOutput `pulumi:"isEnabled"` + // The name of the rule. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. **Note**: Due to the length of the generated suffix, must be 38 characters or less. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // The Amazon Resource Name (ARN) associated with the role that is used for target invocation. + RoleArn pulumi.StringPtrOutput `pulumi:"roleArn"` + // The scheduling expression. For example, `cron(0 20 * * ? *)` or `rate(5 minutes)`. At least one of `scheduleExpression` or `eventPattern` is required. Can only be used on the default event bus. For more information, refer to the AWS documentation [Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html). + ScheduleExpression pulumi.StringPtrOutput `pulumi:"scheduleExpression"` + // State of the rule. + // Valid values are `DISABLED`, `ENABLED`, and `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // When state is `ENABLED`, the rule is enabled for all events except those delivered by CloudTrail. + // To also enable the rule for events delivered by CloudTrail, set `state` to `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // Defaults to `ENABLED`. + // Conflicts with `isEnabled`. + // + // **NOTE:** The rule state `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` cannot be used in conjunction with the `scheduleExpression` argument. + State pulumi.StringPtrOutput `pulumi:"state"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewEventRule registers a new resource with the given unique name, arguments, and options. +func NewEventRule(ctx *pulumi.Context, + name string, args *EventRuleArgs, opts ...pulumi.ResourceOption) (*EventRule, error) { + if args == nil { + args = &EventRuleArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventRule + err := ctx.RegisterResource("aws:cloudwatch/eventRule:EventRule", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventRule gets an existing EventRule 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 GetEventRule(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventRuleState, opts ...pulumi.ResourceOption) (*EventRule, error) { + var resource EventRule + err := ctx.ReadResource("aws:cloudwatch/eventRule:EventRule", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventRule resources. +type eventRuleState struct { + // The Amazon Resource Name (ARN) of the rule. + Arn *string `pulumi:"arn"` + // The description of the rule. + Description *string `pulumi:"description"` + // The name or ARN of the event bus to associate with this rule. + // If you omit this, the `default` event bus is used. + EventBusName *string `pulumi:"eventBusName"` + // The event pattern described a JSON object. At least one of `scheduleExpression` or `eventPattern` is required. See full documentation of [Events and Event Patterns in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html) for details. **Note**: The event pattern size is 2048 by default but it is adjustable up to 4096 characters by submitting a service quota increase request. See [Amazon EventBridge quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html) for details. + EventPattern *string `pulumi:"eventPattern"` + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Whether the rule should be enabled. + // Defaults to `true`. + // Conflicts with `state`. + // + // Deprecated: Use "state" instead + IsEnabled *bool `pulumi:"isEnabled"` + // The name of the rule. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. **Note**: Due to the length of the generated suffix, must be 38 characters or less. + NamePrefix *string `pulumi:"namePrefix"` + // The Amazon Resource Name (ARN) associated with the role that is used for target invocation. + RoleArn *string `pulumi:"roleArn"` + // The scheduling expression. For example, `cron(0 20 * * ? *)` or `rate(5 minutes)`. At least one of `scheduleExpression` or `eventPattern` is required. Can only be used on the default event bus. For more information, refer to the AWS documentation [Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html). + ScheduleExpression *string `pulumi:"scheduleExpression"` + // State of the rule. + // Valid values are `DISABLED`, `ENABLED`, and `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // When state is `ENABLED`, the rule is enabled for all events except those delivered by CloudTrail. + // To also enable the rule for events delivered by CloudTrail, set `state` to `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // Defaults to `ENABLED`. + // Conflicts with `isEnabled`. + // + // **NOTE:** The rule state `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` cannot be used in conjunction with the `scheduleExpression` argument. + State *string `pulumi:"state"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type EventRuleState struct { + // The Amazon Resource Name (ARN) of the rule. + Arn pulumi.StringPtrInput + // The description of the rule. + Description pulumi.StringPtrInput + // The name or ARN of the event bus to associate with this rule. + // If you omit this, the `default` event bus is used. + EventBusName pulumi.StringPtrInput + // The event pattern described a JSON object. At least one of `scheduleExpression` or `eventPattern` is required. See full documentation of [Events and Event Patterns in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html) for details. **Note**: The event pattern size is 2048 by default but it is adjustable up to 4096 characters by submitting a service quota increase request. See [Amazon EventBridge quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html) for details. + EventPattern pulumi.StringPtrInput + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy pulumi.BoolPtrInput + // Whether the rule should be enabled. + // Defaults to `true`. + // Conflicts with `state`. + // + // Deprecated: Use "state" instead + IsEnabled pulumi.BoolPtrInput + // The name of the rule. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. **Note**: Due to the length of the generated suffix, must be 38 characters or less. + NamePrefix pulumi.StringPtrInput + // The Amazon Resource Name (ARN) associated with the role that is used for target invocation. + RoleArn pulumi.StringPtrInput + // The scheduling expression. For example, `cron(0 20 * * ? *)` or `rate(5 minutes)`. At least one of `scheduleExpression` or `eventPattern` is required. Can only be used on the default event bus. For more information, refer to the AWS documentation [Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html). + ScheduleExpression pulumi.StringPtrInput + // State of the rule. + // Valid values are `DISABLED`, `ENABLED`, and `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // When state is `ENABLED`, the rule is enabled for all events except those delivered by CloudTrail. + // To also enable the rule for events delivered by CloudTrail, set `state` to `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // Defaults to `ENABLED`. + // Conflicts with `isEnabled`. + // + // **NOTE:** The rule state `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` cannot be used in conjunction with the `scheduleExpression` argument. + State pulumi.StringPtrInput + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (EventRuleState) ElementType() reflect.Type { + return reflect.TypeOf((*eventRuleState)(nil)).Elem() +} + +type eventRuleArgs struct { + // The description of the rule. + Description *string `pulumi:"description"` + // The name or ARN of the event bus to associate with this rule. + // If you omit this, the `default` event bus is used. + EventBusName *string `pulumi:"eventBusName"` + // The event pattern described a JSON object. At least one of `scheduleExpression` or `eventPattern` is required. See full documentation of [Events and Event Patterns in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html) for details. **Note**: The event pattern size is 2048 by default but it is adjustable up to 4096 characters by submitting a service quota increase request. See [Amazon EventBridge quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html) for details. + EventPattern *string `pulumi:"eventPattern"` + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Whether the rule should be enabled. + // Defaults to `true`. + // Conflicts with `state`. + // + // Deprecated: Use "state" instead + IsEnabled *bool `pulumi:"isEnabled"` + // The name of the rule. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. **Note**: Due to the length of the generated suffix, must be 38 characters or less. + NamePrefix *string `pulumi:"namePrefix"` + // The Amazon Resource Name (ARN) associated with the role that is used for target invocation. + RoleArn *string `pulumi:"roleArn"` + // The scheduling expression. For example, `cron(0 20 * * ? *)` or `rate(5 minutes)`. At least one of `scheduleExpression` or `eventPattern` is required. Can only be used on the default event bus. For more information, refer to the AWS documentation [Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html). + ScheduleExpression *string `pulumi:"scheduleExpression"` + // State of the rule. + // Valid values are `DISABLED`, `ENABLED`, and `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // When state is `ENABLED`, the rule is enabled for all events except those delivered by CloudTrail. + // To also enable the rule for events delivered by CloudTrail, set `state` to `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // Defaults to `ENABLED`. + // Conflicts with `isEnabled`. + // + // **NOTE:** The rule state `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` cannot be used in conjunction with the `scheduleExpression` argument. + State *string `pulumi:"state"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a EventRule resource. +type EventRuleArgs struct { + // The description of the rule. + Description pulumi.StringPtrInput + // The name or ARN of the event bus to associate with this rule. + // If you omit this, the `default` event bus is used. + EventBusName pulumi.StringPtrInput + // The event pattern described a JSON object. At least one of `scheduleExpression` or `eventPattern` is required. See full documentation of [Events and Event Patterns in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html) for details. **Note**: The event pattern size is 2048 by default but it is adjustable up to 4096 characters by submitting a service quota increase request. See [Amazon EventBridge quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html) for details. + EventPattern pulumi.StringPtrInput + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy pulumi.BoolPtrInput + // Whether the rule should be enabled. + // Defaults to `true`. + // Conflicts with `state`. + // + // Deprecated: Use "state" instead + IsEnabled pulumi.BoolPtrInput + // The name of the rule. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. **Note**: Due to the length of the generated suffix, must be 38 characters or less. + NamePrefix pulumi.StringPtrInput + // The Amazon Resource Name (ARN) associated with the role that is used for target invocation. + RoleArn pulumi.StringPtrInput + // The scheduling expression. For example, `cron(0 20 * * ? *)` or `rate(5 minutes)`. At least one of `scheduleExpression` or `eventPattern` is required. Can only be used on the default event bus. For more information, refer to the AWS documentation [Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html). + ScheduleExpression pulumi.StringPtrInput + // State of the rule. + // Valid values are `DISABLED`, `ENABLED`, and `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // When state is `ENABLED`, the rule is enabled for all events except those delivered by CloudTrail. + // To also enable the rule for events delivered by CloudTrail, set `state` to `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. + // Defaults to `ENABLED`. + // Conflicts with `isEnabled`. + // + // **NOTE:** The rule state `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` cannot be used in conjunction with the `scheduleExpression` argument. + State pulumi.StringPtrInput + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (EventRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventRuleArgs)(nil)).Elem() +} + +type EventRuleInput interface { + pulumi.Input + + ToEventRuleOutput() EventRuleOutput + ToEventRuleOutputWithContext(ctx context.Context) EventRuleOutput +} + +func (*EventRule) ElementType() reflect.Type { + return reflect.TypeOf((**EventRule)(nil)).Elem() +} + +func (i *EventRule) ToEventRuleOutput() EventRuleOutput { + return i.ToEventRuleOutputWithContext(context.Background()) +} + +func (i *EventRule) ToEventRuleOutputWithContext(ctx context.Context) EventRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventRuleOutput) +} + +// EventRuleArrayInput is an input type that accepts EventRuleArray and EventRuleArrayOutput values. +// You can construct a concrete instance of `EventRuleArrayInput` via: +// +// EventRuleArray{ EventRuleArgs{...} } +type EventRuleArrayInput interface { + pulumi.Input + + ToEventRuleArrayOutput() EventRuleArrayOutput + ToEventRuleArrayOutputWithContext(context.Context) EventRuleArrayOutput +} + +type EventRuleArray []EventRuleInput + +func (EventRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventRule)(nil)).Elem() +} + +func (i EventRuleArray) ToEventRuleArrayOutput() EventRuleArrayOutput { + return i.ToEventRuleArrayOutputWithContext(context.Background()) +} + +func (i EventRuleArray) ToEventRuleArrayOutputWithContext(ctx context.Context) EventRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventRuleArrayOutput) +} + +// EventRuleMapInput is an input type that accepts EventRuleMap and EventRuleMapOutput values. +// You can construct a concrete instance of `EventRuleMapInput` via: +// +// EventRuleMap{ "key": EventRuleArgs{...} } +type EventRuleMapInput interface { + pulumi.Input + + ToEventRuleMapOutput() EventRuleMapOutput + ToEventRuleMapOutputWithContext(context.Context) EventRuleMapOutput +} + +type EventRuleMap map[string]EventRuleInput + +func (EventRuleMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventRule)(nil)).Elem() +} + +func (i EventRuleMap) ToEventRuleMapOutput() EventRuleMapOutput { + return i.ToEventRuleMapOutputWithContext(context.Background()) +} + +func (i EventRuleMap) ToEventRuleMapOutputWithContext(ctx context.Context) EventRuleMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventRuleMapOutput) +} + +type EventRuleOutput struct{ *pulumi.OutputState } + +func (EventRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventRule)(nil)).Elem() +} + +func (o EventRuleOutput) ToEventRuleOutput() EventRuleOutput { + return o +} + +func (o EventRuleOutput) ToEventRuleOutputWithContext(ctx context.Context) EventRuleOutput { + return o +} + +// The Amazon Resource Name (ARN) of the rule. +func (o EventRuleOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The description of the rule. +func (o EventRuleOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// The name or ARN of the event bus to associate with this rule. +// If you omit this, the `default` event bus is used. +func (o EventRuleOutput) EventBusName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringPtrOutput { return v.EventBusName }).(pulumi.StringPtrOutput) +} + +// The event pattern described a JSON object. At least one of `scheduleExpression` or `eventPattern` is required. See full documentation of [Events and Event Patterns in EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html) for details. **Note**: The event pattern size is 2048 by default but it is adjustable up to 4096 characters by submitting a service quota increase request. See [Amazon EventBridge quotas](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-quota.html) for details. +func (o EventRuleOutput) EventPattern() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringPtrOutput { return v.EventPattern }).(pulumi.StringPtrOutput) +} + +// Used to delete managed rules created by AWS. Defaults to `false`. +func (o EventRuleOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// Whether the rule should be enabled. +// Defaults to `true`. +// Conflicts with `state`. +// +// Deprecated: Use "state" instead +func (o EventRuleOutput) IsEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.BoolPtrOutput { return v.IsEnabled }).(pulumi.BoolPtrOutput) +} + +// The name of the rule. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. +func (o EventRuleOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. **Note**: Due to the length of the generated suffix, must be 38 characters or less. +func (o EventRuleOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// The Amazon Resource Name (ARN) associated with the role that is used for target invocation. +func (o EventRuleOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringPtrOutput { return v.RoleArn }).(pulumi.StringPtrOutput) +} + +// The scheduling expression. For example, `cron(0 20 * * ? *)` or `rate(5 minutes)`. At least one of `scheduleExpression` or `eventPattern` is required. Can only be used on the default event bus. For more information, refer to the AWS documentation [Schedule Expressions for Rules](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html). +func (o EventRuleOutput) ScheduleExpression() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringPtrOutput { return v.ScheduleExpression }).(pulumi.StringPtrOutput) +} + +// State of the rule. +// Valid values are `DISABLED`, `ENABLED`, and `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. +// When state is `ENABLED`, the rule is enabled for all events except those delivered by CloudTrail. +// To also enable the rule for events delivered by CloudTrail, set `state` to `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS`. +// Defaults to `ENABLED`. +// Conflicts with `isEnabled`. +// +// **NOTE:** The rule state `ENABLED_WITH_ALL_CLOUDTRAIL_MANAGEMENT_EVENTS` cannot be used in conjunction with the `scheduleExpression` argument. +func (o EventRuleOutput) State() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringPtrOutput { return v.State }).(pulumi.StringPtrOutput) +} + +// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o EventRuleOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o EventRuleOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventRule) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type EventRuleArrayOutput struct{ *pulumi.OutputState } + +func (EventRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventRule)(nil)).Elem() +} + +func (o EventRuleArrayOutput) ToEventRuleArrayOutput() EventRuleArrayOutput { + return o +} + +func (o EventRuleArrayOutput) ToEventRuleArrayOutputWithContext(ctx context.Context) EventRuleArrayOutput { + return o +} + +func (o EventRuleArrayOutput) Index(i pulumi.IntInput) EventRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventRule { + return vs[0].([]*EventRule)[vs[1].(int)] + }).(EventRuleOutput) +} + +type EventRuleMapOutput struct{ *pulumi.OutputState } + +func (EventRuleMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventRule)(nil)).Elem() +} + +func (o EventRuleMapOutput) ToEventRuleMapOutput() EventRuleMapOutput { + return o +} + +func (o EventRuleMapOutput) ToEventRuleMapOutputWithContext(ctx context.Context) EventRuleMapOutput { + return o +} + +func (o EventRuleMapOutput) MapIndex(k pulumi.StringInput) EventRuleOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventRule { + return vs[0].(map[string]*EventRule)[vs[1].(string)] + }).(EventRuleOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventRuleInput)(nil)).Elem(), &EventRule{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventRuleArrayInput)(nil)).Elem(), EventRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventRuleMapInput)(nil)).Elem(), EventRuleMap{}) + pulumi.RegisterOutputType(EventRuleOutput{}) + pulumi.RegisterOutputType(EventRuleArrayOutput{}) + pulumi.RegisterOutputType(EventRuleMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventTarget.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventTarget.go new file mode 100644 index 000000000..a30eca9fc --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/eventTarget.go @@ -0,0 +1,1417 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an EventBridge Target resource. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ### Kinesis Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "source": []string{ +// "aws.autoscaling", +// }, +// "detail-type": []string{ +// "EC2 Instance Launch Successful", +// "EC2 Instance Terminate Successful", +// "EC2 Instance Launch Unsuccessful", +// "EC2 Instance Terminate Unsuccessful", +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// console, err := cloudwatch.NewEventRule(ctx, "console", &cloudwatch.EventRuleArgs{ +// Name: pulumi.String("capture-ec2-scaling-events"), +// Description: pulumi.String("Capture all EC2 scaling events"), +// EventPattern: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// testStream, err := kinesis.NewStream(ctx, "test_stream", &kinesis.StreamArgs{ +// Name: pulumi.String("kinesis-test"), +// ShardCount: pulumi.Int(1), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "yada", &cloudwatch.EventTargetArgs{ +// TargetId: pulumi.String("Yada"), +// Rule: console.Name, +// Arn: testStream.Arn, +// RunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{ +// &cloudwatch.EventTargetRunCommandTargetArgs{ +// Key: pulumi.String("tag:Name"), +// Values: pulumi.StringArray{ +// pulumi.String("FooBar"), +// }, +// }, +// &cloudwatch.EventTargetRunCommandTargetArgs{ +// Key: pulumi.String("InstanceIds"), +// Values: pulumi.StringArray{ +// pulumi.String("i-162058cd308bffec2"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### SSM Document Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ssm" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// ssmLifecycleTrust, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "sts:AssumeRole", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "events.amazonaws.com", +// }, +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "schemaVersion": "1.2", +// "description": "Stop an instance", +// "parameters": map[string]interface{}{}, +// "runtimeConfig": map[string]interface{}{ +// "aws:runShellScript": map[string]interface{}{ +// "properties": []map[string]interface{}{ +// map[string]interface{}{ +// "id": "0.aws:runShellScript", +// "runCommand": []string{ +// "halt", +// }, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// stopInstance, err := ssm.NewDocument(ctx, "stop_instance", &ssm.DocumentArgs{ +// Name: pulumi.String("stop_instance"), +// DocumentType: pulumi.String("Command"), +// Content: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// ssmLifecycle := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("ssm:SendCommand"), +// }, +// Resources: pulumi.StringArray{ +// pulumi.String("arn:aws:ec2:eu-west-1:1234567890:instance/*"), +// }, +// Conditions: iam.GetPolicyDocumentStatementConditionArray{ +// &iam.GetPolicyDocumentStatementConditionArgs{ +// Test: pulumi.String("StringEquals"), +// Variable: pulumi.String("ec2:ResourceTag/Terminate"), +// Values: pulumi.StringArray{ +// pulumi.String("*"), +// }, +// }, +// }, +// }, +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("ssm:SendCommand"), +// }, +// Resources: pulumi.StringArray{ +// stopInstance.Arn, +// }, +// }, +// }, +// }, nil) +// ssmLifecycleRole, err := iam.NewRole(ctx, "ssm_lifecycle", &iam.RoleArgs{ +// Name: pulumi.String("SSMLifecycle"), +// AssumeRolePolicy: pulumi.String(ssmLifecycleTrust.Json), +// }) +// if err != nil { +// return err +// } +// ssmLifecyclePolicy, err := iam.NewPolicy(ctx, "ssm_lifecycle", &iam.PolicyArgs{ +// Name: pulumi.String("SSMLifecycle"), +// Policy: pulumi.String(ssmLifecycle.ApplyT(func(ssmLifecycle iam.GetPolicyDocumentResult) (*string, error) { +// return &ssmLifecycle.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewRolePolicyAttachment(ctx, "ssm_lifecycle", &iam.RolePolicyAttachmentArgs{ +// PolicyArn: ssmLifecyclePolicy.Arn, +// Role: ssmLifecycleRole.Name, +// }) +// if err != nil { +// return err +// } +// stopInstances, err := cloudwatch.NewEventRule(ctx, "stop_instances", &cloudwatch.EventRuleArgs{ +// Name: pulumi.String("StopInstance"), +// Description: pulumi.String("Stop instances nightly"), +// ScheduleExpression: pulumi.String("cron(0 0 * * ? *)"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "stop_instances", &cloudwatch.EventTargetArgs{ +// TargetId: pulumi.String("StopInstance"), +// Arn: stopInstance.Arn, +// Rule: stopInstances.Name, +// RoleArn: ssmLifecycleRole.Arn, +// RunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{ +// &cloudwatch.EventTargetRunCommandTargetArgs{ +// Key: pulumi.String("tag:Terminate"), +// Values: pulumi.StringArray{ +// pulumi.String("midnight"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### RunCommand Usage +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// stopInstances, err := cloudwatch.NewEventRule(ctx, "stop_instances", &cloudwatch.EventRuleArgs{ +// Name: pulumi.String("StopInstance"), +// Description: pulumi.String("Stop instances nightly"), +// ScheduleExpression: pulumi.String("cron(0 0 * * ? *)"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "stop_instances", &cloudwatch.EventTargetArgs{ +// TargetId: pulumi.String("StopInstance"), +// Arn: pulumi.Sprintf("arn:aws:ssm:%v::document/AWS-RunShellScript", awsRegion), +// Input: pulumi.String("{\"commands\":[\"halt\"]}"), +// Rule: stopInstances.Name, +// RoleArn: pulumi.Any(ssmLifecycle.Arn), +// RunCommandTargets: cloudwatch.EventTargetRunCommandTargetArray{ +// &cloudwatch.EventTargetRunCommandTargetArgs{ +// Key: pulumi.String("tag:Terminate"), +// Values: pulumi.StringArray{ +// pulumi.String("midnight"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### ECS Run Task with Role and Task Override Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "events.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// ecsEvents, err := iam.NewRole(ctx, "ecs_events", &iam.RoleArgs{ +// Name: pulumi.String("ecs_events"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// ecsEventsRunTaskWithAnyRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "iam:PassRole", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "ecs:RunTask", +// }, +// Resources: interface{}{ +// std.Replace(ctx, { +// Text: taskName.Arn, +// Search: "/:\\d+$/", +// Replace: ":*", +// }, nil).Result, +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = iam.NewRolePolicy(ctx, "ecs_events_run_task_with_any_role", &iam.RolePolicyArgs{ +// Name: pulumi.String("ecs_events_run_task_with_any_role"), +// Role: ecsEvents.ID(), +// Policy: pulumi.String(ecsEventsRunTaskWithAnyRole.Json), +// }) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "containerOverrides": []map[string]interface{}{ +// map[string]interface{}{ +// "name": "name-of-container-to-override", +// "command": []string{ +// "bin/console", +// "scheduled-task", +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = cloudwatch.NewEventTarget(ctx, "ecs_scheduled_task", &cloudwatch.EventTargetArgs{ +// TargetId: pulumi.String("run-scheduled-task-every-hour"), +// Arn: pulumi.Any(clusterName.Arn), +// Rule: pulumi.Any(everyHour.Name), +// RoleArn: ecsEvents.Arn, +// EcsTarget: &cloudwatch.EventTargetEcsTargetArgs{ +// TaskCount: pulumi.Int(1), +// TaskDefinitionArn: pulumi.Any(taskName.Arn), +// }, +// Input: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// ### API Gateway target +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigateway" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// exampleEventRule, err := cloudwatch.NewEventRule(ctx, "example", nil) +// if err != nil { +// return err +// } +// exampleDeployment, err := apigateway.NewDeployment(ctx, "example", &apigateway.DeploymentArgs{ +// RestApi: pulumi.Any(exampleAwsApiGatewayRestApi.Id), +// }) +// if err != nil { +// return err +// } +// exampleStage, err := apigateway.NewStage(ctx, "example", &apigateway.StageArgs{ +// RestApi: pulumi.Any(exampleAwsApiGatewayRestApi.Id), +// Deployment: exampleDeployment.ID(), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "example", &cloudwatch.EventTargetArgs{ +// Arn: exampleStage.ExecutionArn.ApplyT(func(executionArn string) (string, error) { +// return fmt.Sprintf("%v/GET", executionArn), nil +// }).(pulumi.StringOutput), +// Rule: exampleEventRule.ID(), +// HttpTarget: &cloudwatch.EventTargetHttpTargetArgs{ +// QueryStringParameters: pulumi.StringMap{ +// "Body": pulumi.String("$.detail.body"), +// }, +// HeaderParameters: pulumi.StringMap{ +// "Env": pulumi.String("Test"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Cross-Account Event Bus target +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "events.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// eventBusInvokeRemoteEventBusRole, err := iam.NewRole(ctx, "event_bus_invoke_remote_event_bus", &iam.RoleArgs{ +// Name: pulumi.String("event-bus-invoke-remote-event-bus"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// eventBusInvokeRemoteEventBus, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "events:PutEvents", +// }, +// Resources: []string{ +// "arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// eventBusInvokeRemoteEventBusPolicy, err := iam.NewPolicy(ctx, "event_bus_invoke_remote_event_bus", &iam.PolicyArgs{ +// Name: pulumi.String("event_bus_invoke_remote_event_bus"), +// Policy: pulumi.String(eventBusInvokeRemoteEventBus.Json), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewRolePolicyAttachment(ctx, "event_bus_invoke_remote_event_bus", &iam.RolePolicyAttachmentArgs{ +// Role: eventBusInvokeRemoteEventBusRole.Name, +// PolicyArn: eventBusInvokeRemoteEventBusPolicy.Arn, +// }) +// if err != nil { +// return err +// } +// stopInstances, err := cloudwatch.NewEventRule(ctx, "stop_instances", &cloudwatch.EventRuleArgs{ +// Name: pulumi.String("StopInstance"), +// Description: pulumi.String("Stop instances nightly"), +// ScheduleExpression: pulumi.String("cron(0 0 * * ? *)"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "stop_instances", &cloudwatch.EventTargetArgs{ +// TargetId: pulumi.String("StopInstance"), +// Arn: pulumi.String("arn:aws:events:eu-west-1:1234567890:event-bus/My-Event-Bus"), +// Rule: stopInstances.Name, +// RoleArn: eventBusInvokeRemoteEventBusRole.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Input Transformer Usage - JSON Object +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// exampleEventRule, err := cloudwatch.NewEventRule(ctx, "example", nil) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "example", &cloudwatch.EventTargetArgs{ +// Arn: pulumi.Any(exampleAwsLambdaFunction.Arn), +// Rule: exampleEventRule.ID(), +// InputTransformer: &cloudwatch.EventTargetInputTransformerArgs{ +// InputPaths: pulumi.StringMap{ +// "instance": pulumi.String("$.detail.instance"), +// "status": pulumi.String("$.detail.status"), +// }, +// InputTemplate: pulumi.String("{\n \"instance_id\": ,\n \"instance_status\": \n}\n"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Input Transformer Usage - Simple String +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// exampleEventRule, err := cloudwatch.NewEventRule(ctx, "example", nil) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "example", &cloudwatch.EventTargetArgs{ +// Arn: pulumi.Any(exampleAwsLambdaFunction.Arn), +// Rule: exampleEventRule.ID(), +// InputTransformer: &cloudwatch.EventTargetInputTransformerArgs{ +// InputPaths: pulumi.StringMap{ +// "instance": pulumi.String("$.detail.instance"), +// "status": pulumi.String("$.detail.status"), +// }, +// InputTemplate: pulumi.String("\" is in state \""), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Cloudwatch Log Group Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := cloudwatch.NewLogGroup(ctx, "example", &cloudwatch.LogGroupArgs{ +// Name: pulumi.String("/aws/events/guardduty/logs"), +// RetentionInDays: pulumi.Int(1), +// }) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "source": []string{ +// "aws.guardduty", +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// exampleEventRule, err := cloudwatch.NewEventRule(ctx, "example", &cloudwatch.EventRuleArgs{ +// Name: pulumi.String("guard-duty_event_rule"), +// Description: pulumi.String("GuardDuty Findings"), +// EventPattern: pulumi.String(json0), +// Tags: pulumi.StringMap{ +// "Environment": pulumi.String("example"), +// }, +// }) +// if err != nil { +// return err +// } +// exampleLogPolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("logs:CreateLogStream"), +// }, +// Resources: pulumi.StringArray{ +// example.Arn.ApplyT(func(arn string) (string, error) { +// return fmt.Sprintf("%v:*", arn), nil +// }).(pulumi.StringOutput), +// }, +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("Service"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("events.amazonaws.com"), +// pulumi.String("delivery.logs.amazonaws.com"), +// }, +// }, +// }, +// }, +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("logs:PutLogEvents"), +// }, +// Resources: pulumi.StringArray{ +// example.Arn.ApplyT(func(arn string) (string, error) { +// return fmt.Sprintf("%v:*:*", arn), nil +// }).(pulumi.StringOutput), +// }, +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("Service"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("events.amazonaws.com"), +// pulumi.String("delivery.logs.amazonaws.com"), +// }, +// }, +// }, +// Conditions: iam.GetPolicyDocumentStatementConditionArray{ +// &iam.GetPolicyDocumentStatementConditionArgs{ +// Test: pulumi.String("ArnEquals"), +// Values: pulumi.StringArray{ +// exampleEventRule.Arn, +// }, +// Variable: pulumi.String("aws:SourceArn"), +// }, +// }, +// }, +// }, +// }, nil) +// _, err = cloudwatch.NewLogResourcePolicy(ctx, "example", &cloudwatch.LogResourcePolicyArgs{ +// PolicyDocument: pulumi.String(exampleLogPolicy.ApplyT(func(exampleLogPolicy iam.GetPolicyDocumentResult) (*string, error) { +// return &exampleLogPolicy.Json, nil +// }).(pulumi.StringPtrOutput)), +// PolicyName: pulumi.String("guardduty-log-publishing-policy"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "example", &cloudwatch.EventTargetArgs{ +// Rule: exampleEventRule.Name, +// Arn: example.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### AppSync Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/appsync" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeAppsyncMutation, err := cloudwatch.NewEventRule(ctx, "invoke_appsync_mutation", &cloudwatch.EventRuleArgs{ +// Name: pulumi.String("invoke-appsync-mutation"), +// Description: pulumi.String("schedule_batch_test"), +// ScheduleExpression: pulumi.String("rate(5 minutes)"), +// }) +// if err != nil { +// return err +// } +// appsyncMutationRoleTrust, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "sts:AssumeRole", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "events.amazonaws.com", +// }, +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// appsyncMutationRole, err := iam.NewRole(ctx, "appsync_mutation_role", &iam.RoleArgs{ +// Name: pulumi.String("appsync-mutation-role"), +// AssumeRolePolicy: pulumi.String(appsyncMutationRoleTrust.Json), +// }) +// if err != nil { +// return err +// } +// _, err = appsync.NewGraphQLApi(ctx, "graphql-api", &appsync.GraphQLApiArgs{ +// Name: pulumi.String("api"), +// AuthenticationType: pulumi.String("AWS_IAM"), +// Schema: pulumi.String(` schema { +// mutation: Mutation +// query: Query +// } +// +// type Query { +// testQuery: String +// } +// +// type Mutation { +// testMutation(input: MutationInput!): TestMutationResult +// } +// +// type TestMutationResult { +// test: String +// } +// +// input MutationInput { +// testInput: String +// } +// +// `), +// +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewEventTarget(ctx, "invoke_appsync_mutation", &cloudwatch.EventTargetArgs{ +// Arn: pulumi.String(std.ReplaceOutput(ctx, std.ReplaceOutputArgs{ +// Text: graphql_api.Arn, +// Search: pulumi.String("apis"), +// Replace: pulumi.String("endpoints/graphql-api"), +// }, nil).ApplyT(func(invoke std.ReplaceResult) (*string, error) { +// return invoke.Result, nil +// }).(pulumi.StringPtrOutput)), +// Rule: invokeAppsyncMutation.ID(), +// RoleArn: appsyncMutationRole.Arn, +// InputTransformer: &cloudwatch.EventTargetInputTransformerArgs{ +// InputPaths: pulumi.StringMap{ +// "input": pulumi.String("$.detail.input"), +// }, +// InputTemplate: pulumi.String(" {\n \"input\": \n }\n"), +// }, +// AppsyncTarget: &cloudwatch.EventTargetAppsyncTargetArgs{ +// GraphqlOperation: pulumi.String("mutation TestMutation($input:MutationInput!){testMutation(input: $input) {test}}"), +// }, +// }) +// if err != nil { +// return err +// } +// appsyncMutationRolePolicyDocument := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Actions: pulumi.StringArray{ +// pulumi.String("appsync:GraphQL"), +// }, +// Effect: pulumi.String("Allow"), +// Resources: pulumi.StringArray{ +// graphql_api.Arn, +// }, +// }, +// }, +// }, nil) +// appsyncMutationRolePolicy, err := iam.NewPolicy(ctx, "appsync_mutation_role_policy", &iam.PolicyArgs{ +// Name: pulumi.String("appsync-mutation-role-policy"), +// Policy: pulumi.String(appsyncMutationRolePolicyDocument.ApplyT(func(appsyncMutationRolePolicyDocument iam.GetPolicyDocumentResult) (*string, error) { +// return &appsyncMutationRolePolicyDocument.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewRolePolicyAttachment(ctx, "appsync_mutation_role_attachment", &iam.RolePolicyAttachmentArgs{ +// PolicyArn: appsyncMutationRolePolicy.Arn, +// Role: appsyncMutationRole.Name, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import EventBridge Targets using `event_bus_name/rule-name/target-id` (if you omit `event_bus_name`, the `default` event bus will be used). For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/eventTarget:EventTarget test-event-target rule-name/target-id +// ``` +type EventTarget struct { + pulumi.CustomResourceState + + // Parameters used when you are using the rule to invoke an AppSync GraphQL API mutation. Documented below. A maximum of 1 are allowed. + AppsyncTarget EventTargetAppsyncTargetPtrOutput `pulumi:"appsyncTarget"` + // The Amazon Resource Name (ARN) of the target. + Arn pulumi.StringOutput `pulumi:"arn"` + // Parameters used when you are using the rule to invoke an Amazon Batch Job. Documented below. A maximum of 1 are allowed. + BatchTarget EventTargetBatchTargetPtrOutput `pulumi:"batchTarget"` + // Parameters used when you are providing a dead letter config. Documented below. A maximum of 1 are allowed. + DeadLetterConfig EventTargetDeadLetterConfigPtrOutput `pulumi:"deadLetterConfig"` + // Parameters used when you are using the rule to invoke Amazon ECS Task. Documented below. A maximum of 1 are allowed. + EcsTarget EventTargetEcsTargetPtrOutput `pulumi:"ecsTarget"` + // The name or ARN of the event bus to associate with the rule. + // If you omit this, the `default` event bus is used. + EventBusName pulumi.StringPtrOutput `pulumi:"eventBusName"` + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // Parameters used when you are using the rule to invoke an API Gateway REST endpoint. Documented below. A maximum of 1 is allowed. + HttpTarget EventTargetHttpTargetPtrOutput `pulumi:"httpTarget"` + // Valid JSON text passed to the target. Conflicts with `inputPath` and `inputTransformer`. + Input pulumi.StringPtrOutput `pulumi:"input"` + // The value of the [JSONPath](http://goessner.net/articles/JsonPath/) that is used for extracting part of the matched event when passing it to the target. Conflicts with `input` and `inputTransformer`. + InputPath pulumi.StringPtrOutput `pulumi:"inputPath"` + // Parameters used when you are providing a custom input to a target based on certain event data. Conflicts with `input` and `inputPath`. + InputTransformer EventTargetInputTransformerPtrOutput `pulumi:"inputTransformer"` + // Parameters used when you are using the rule to invoke an Amazon Kinesis Stream. Documented below. A maximum of 1 are allowed. + KinesisTarget EventTargetKinesisTargetPtrOutput `pulumi:"kinesisTarget"` + // Parameters used when you are using the rule to invoke an Amazon Redshift Statement. Documented below. A maximum of 1 are allowed. + RedshiftTarget EventTargetRedshiftTargetPtrOutput `pulumi:"redshiftTarget"` + // Parameters used when you are providing retry policies. Documented below. A maximum of 1 are allowed. + RetryPolicy EventTargetRetryPolicyPtrOutput `pulumi:"retryPolicy"` + // The Amazon Resource Name (ARN) of the IAM role to be used for this target when the rule is triggered. Required if `ecsTarget` is used or target in `arn` is EC2 instance, Kinesis data stream, Step Functions state machine, or Event Bus in different account or region. + RoleArn pulumi.StringPtrOutput `pulumi:"roleArn"` + // The name of the rule you want to add targets to. + // + // The following arguments are optional: + Rule pulumi.StringOutput `pulumi:"rule"` + // Parameters used when you are using the rule to invoke Amazon EC2 Run Command. Documented below. A maximum of 5 are allowed. + RunCommandTargets EventTargetRunCommandTargetArrayOutput `pulumi:"runCommandTargets"` + // Parameters used when you are using the rule to invoke an Amazon SageMaker Pipeline. Documented below. A maximum of 1 are allowed. + SagemakerPipelineTarget EventTargetSagemakerPipelineTargetPtrOutput `pulumi:"sagemakerPipelineTarget"` + // Parameters used when you are using the rule to invoke an Amazon SQS Queue. Documented below. A maximum of 1 are allowed. + SqsTarget EventTargetSqsTargetPtrOutput `pulumi:"sqsTarget"` + // The unique target assignment ID. If missing, will generate a random, unique id. + TargetId pulumi.StringOutput `pulumi:"targetId"` +} + +// NewEventTarget registers a new resource with the given unique name, arguments, and options. +func NewEventTarget(ctx *pulumi.Context, + name string, args *EventTargetArgs, opts ...pulumi.ResourceOption) (*EventTarget, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Arn == nil { + return nil, errors.New("invalid value for required argument 'Arn'") + } + if args.Rule == nil { + return nil, errors.New("invalid value for required argument 'Rule'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource EventTarget + err := ctx.RegisterResource("aws:cloudwatch/eventTarget:EventTarget", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetEventTarget gets an existing EventTarget 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 GetEventTarget(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *EventTargetState, opts ...pulumi.ResourceOption) (*EventTarget, error) { + var resource EventTarget + err := ctx.ReadResource("aws:cloudwatch/eventTarget:EventTarget", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering EventTarget resources. +type eventTargetState struct { + // Parameters used when you are using the rule to invoke an AppSync GraphQL API mutation. Documented below. A maximum of 1 are allowed. + AppsyncTarget *EventTargetAppsyncTarget `pulumi:"appsyncTarget"` + // The Amazon Resource Name (ARN) of the target. + Arn *string `pulumi:"arn"` + // Parameters used when you are using the rule to invoke an Amazon Batch Job. Documented below. A maximum of 1 are allowed. + BatchTarget *EventTargetBatchTarget `pulumi:"batchTarget"` + // Parameters used when you are providing a dead letter config. Documented below. A maximum of 1 are allowed. + DeadLetterConfig *EventTargetDeadLetterConfig `pulumi:"deadLetterConfig"` + // Parameters used when you are using the rule to invoke Amazon ECS Task. Documented below. A maximum of 1 are allowed. + EcsTarget *EventTargetEcsTarget `pulumi:"ecsTarget"` + // The name or ARN of the event bus to associate with the rule. + // If you omit this, the `default` event bus is used. + EventBusName *string `pulumi:"eventBusName"` + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Parameters used when you are using the rule to invoke an API Gateway REST endpoint. Documented below. A maximum of 1 is allowed. + HttpTarget *EventTargetHttpTarget `pulumi:"httpTarget"` + // Valid JSON text passed to the target. Conflicts with `inputPath` and `inputTransformer`. + Input *string `pulumi:"input"` + // The value of the [JSONPath](http://goessner.net/articles/JsonPath/) that is used for extracting part of the matched event when passing it to the target. Conflicts with `input` and `inputTransformer`. + InputPath *string `pulumi:"inputPath"` + // Parameters used when you are providing a custom input to a target based on certain event data. Conflicts with `input` and `inputPath`. + InputTransformer *EventTargetInputTransformer `pulumi:"inputTransformer"` + // Parameters used when you are using the rule to invoke an Amazon Kinesis Stream. Documented below. A maximum of 1 are allowed. + KinesisTarget *EventTargetKinesisTarget `pulumi:"kinesisTarget"` + // Parameters used when you are using the rule to invoke an Amazon Redshift Statement. Documented below. A maximum of 1 are allowed. + RedshiftTarget *EventTargetRedshiftTarget `pulumi:"redshiftTarget"` + // Parameters used when you are providing retry policies. Documented below. A maximum of 1 are allowed. + RetryPolicy *EventTargetRetryPolicy `pulumi:"retryPolicy"` + // The Amazon Resource Name (ARN) of the IAM role to be used for this target when the rule is triggered. Required if `ecsTarget` is used or target in `arn` is EC2 instance, Kinesis data stream, Step Functions state machine, or Event Bus in different account or region. + RoleArn *string `pulumi:"roleArn"` + // The name of the rule you want to add targets to. + // + // The following arguments are optional: + Rule *string `pulumi:"rule"` + // Parameters used when you are using the rule to invoke Amazon EC2 Run Command. Documented below. A maximum of 5 are allowed. + RunCommandTargets []EventTargetRunCommandTarget `pulumi:"runCommandTargets"` + // Parameters used when you are using the rule to invoke an Amazon SageMaker Pipeline. Documented below. A maximum of 1 are allowed. + SagemakerPipelineTarget *EventTargetSagemakerPipelineTarget `pulumi:"sagemakerPipelineTarget"` + // Parameters used when you are using the rule to invoke an Amazon SQS Queue. Documented below. A maximum of 1 are allowed. + SqsTarget *EventTargetSqsTarget `pulumi:"sqsTarget"` + // The unique target assignment ID. If missing, will generate a random, unique id. + TargetId *string `pulumi:"targetId"` +} + +type EventTargetState struct { + // Parameters used when you are using the rule to invoke an AppSync GraphQL API mutation. Documented below. A maximum of 1 are allowed. + AppsyncTarget EventTargetAppsyncTargetPtrInput + // The Amazon Resource Name (ARN) of the target. + Arn pulumi.StringPtrInput + // Parameters used when you are using the rule to invoke an Amazon Batch Job. Documented below. A maximum of 1 are allowed. + BatchTarget EventTargetBatchTargetPtrInput + // Parameters used when you are providing a dead letter config. Documented below. A maximum of 1 are allowed. + DeadLetterConfig EventTargetDeadLetterConfigPtrInput + // Parameters used when you are using the rule to invoke Amazon ECS Task. Documented below. A maximum of 1 are allowed. + EcsTarget EventTargetEcsTargetPtrInput + // The name or ARN of the event bus to associate with the rule. + // If you omit this, the `default` event bus is used. + EventBusName pulumi.StringPtrInput + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy pulumi.BoolPtrInput + // Parameters used when you are using the rule to invoke an API Gateway REST endpoint. Documented below. A maximum of 1 is allowed. + HttpTarget EventTargetHttpTargetPtrInput + // Valid JSON text passed to the target. Conflicts with `inputPath` and `inputTransformer`. + Input pulumi.StringPtrInput + // The value of the [JSONPath](http://goessner.net/articles/JsonPath/) that is used for extracting part of the matched event when passing it to the target. Conflicts with `input` and `inputTransformer`. + InputPath pulumi.StringPtrInput + // Parameters used when you are providing a custom input to a target based on certain event data. Conflicts with `input` and `inputPath`. + InputTransformer EventTargetInputTransformerPtrInput + // Parameters used when you are using the rule to invoke an Amazon Kinesis Stream. Documented below. A maximum of 1 are allowed. + KinesisTarget EventTargetKinesisTargetPtrInput + // Parameters used when you are using the rule to invoke an Amazon Redshift Statement. Documented below. A maximum of 1 are allowed. + RedshiftTarget EventTargetRedshiftTargetPtrInput + // Parameters used when you are providing retry policies. Documented below. A maximum of 1 are allowed. + RetryPolicy EventTargetRetryPolicyPtrInput + // The Amazon Resource Name (ARN) of the IAM role to be used for this target when the rule is triggered. Required if `ecsTarget` is used or target in `arn` is EC2 instance, Kinesis data stream, Step Functions state machine, or Event Bus in different account or region. + RoleArn pulumi.StringPtrInput + // The name of the rule you want to add targets to. + // + // The following arguments are optional: + Rule pulumi.StringPtrInput + // Parameters used when you are using the rule to invoke Amazon EC2 Run Command. Documented below. A maximum of 5 are allowed. + RunCommandTargets EventTargetRunCommandTargetArrayInput + // Parameters used when you are using the rule to invoke an Amazon SageMaker Pipeline. Documented below. A maximum of 1 are allowed. + SagemakerPipelineTarget EventTargetSagemakerPipelineTargetPtrInput + // Parameters used when you are using the rule to invoke an Amazon SQS Queue. Documented below. A maximum of 1 are allowed. + SqsTarget EventTargetSqsTargetPtrInput + // The unique target assignment ID. If missing, will generate a random, unique id. + TargetId pulumi.StringPtrInput +} + +func (EventTargetState) ElementType() reflect.Type { + return reflect.TypeOf((*eventTargetState)(nil)).Elem() +} + +type eventTargetArgs struct { + // Parameters used when you are using the rule to invoke an AppSync GraphQL API mutation. Documented below. A maximum of 1 are allowed. + AppsyncTarget *EventTargetAppsyncTarget `pulumi:"appsyncTarget"` + // The Amazon Resource Name (ARN) of the target. + Arn string `pulumi:"arn"` + // Parameters used when you are using the rule to invoke an Amazon Batch Job. Documented below. A maximum of 1 are allowed. + BatchTarget *EventTargetBatchTarget `pulumi:"batchTarget"` + // Parameters used when you are providing a dead letter config. Documented below. A maximum of 1 are allowed. + DeadLetterConfig *EventTargetDeadLetterConfig `pulumi:"deadLetterConfig"` + // Parameters used when you are using the rule to invoke Amazon ECS Task. Documented below. A maximum of 1 are allowed. + EcsTarget *EventTargetEcsTarget `pulumi:"ecsTarget"` + // The name or ARN of the event bus to associate with the rule. + // If you omit this, the `default` event bus is used. + EventBusName *string `pulumi:"eventBusName"` + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Parameters used when you are using the rule to invoke an API Gateway REST endpoint. Documented below. A maximum of 1 is allowed. + HttpTarget *EventTargetHttpTarget `pulumi:"httpTarget"` + // Valid JSON text passed to the target. Conflicts with `inputPath` and `inputTransformer`. + Input *string `pulumi:"input"` + // The value of the [JSONPath](http://goessner.net/articles/JsonPath/) that is used for extracting part of the matched event when passing it to the target. Conflicts with `input` and `inputTransformer`. + InputPath *string `pulumi:"inputPath"` + // Parameters used when you are providing a custom input to a target based on certain event data. Conflicts with `input` and `inputPath`. + InputTransformer *EventTargetInputTransformer `pulumi:"inputTransformer"` + // Parameters used when you are using the rule to invoke an Amazon Kinesis Stream. Documented below. A maximum of 1 are allowed. + KinesisTarget *EventTargetKinesisTarget `pulumi:"kinesisTarget"` + // Parameters used when you are using the rule to invoke an Amazon Redshift Statement. Documented below. A maximum of 1 are allowed. + RedshiftTarget *EventTargetRedshiftTarget `pulumi:"redshiftTarget"` + // Parameters used when you are providing retry policies. Documented below. A maximum of 1 are allowed. + RetryPolicy *EventTargetRetryPolicy `pulumi:"retryPolicy"` + // The Amazon Resource Name (ARN) of the IAM role to be used for this target when the rule is triggered. Required if `ecsTarget` is used or target in `arn` is EC2 instance, Kinesis data stream, Step Functions state machine, or Event Bus in different account or region. + RoleArn *string `pulumi:"roleArn"` + // The name of the rule you want to add targets to. + // + // The following arguments are optional: + Rule string `pulumi:"rule"` + // Parameters used when you are using the rule to invoke Amazon EC2 Run Command. Documented below. A maximum of 5 are allowed. + RunCommandTargets []EventTargetRunCommandTarget `pulumi:"runCommandTargets"` + // Parameters used when you are using the rule to invoke an Amazon SageMaker Pipeline. Documented below. A maximum of 1 are allowed. + SagemakerPipelineTarget *EventTargetSagemakerPipelineTarget `pulumi:"sagemakerPipelineTarget"` + // Parameters used when you are using the rule to invoke an Amazon SQS Queue. Documented below. A maximum of 1 are allowed. + SqsTarget *EventTargetSqsTarget `pulumi:"sqsTarget"` + // The unique target assignment ID. If missing, will generate a random, unique id. + TargetId *string `pulumi:"targetId"` +} + +// The set of arguments for constructing a EventTarget resource. +type EventTargetArgs struct { + // Parameters used when you are using the rule to invoke an AppSync GraphQL API mutation. Documented below. A maximum of 1 are allowed. + AppsyncTarget EventTargetAppsyncTargetPtrInput + // The Amazon Resource Name (ARN) of the target. + Arn pulumi.StringInput + // Parameters used when you are using the rule to invoke an Amazon Batch Job. Documented below. A maximum of 1 are allowed. + BatchTarget EventTargetBatchTargetPtrInput + // Parameters used when you are providing a dead letter config. Documented below. A maximum of 1 are allowed. + DeadLetterConfig EventTargetDeadLetterConfigPtrInput + // Parameters used when you are using the rule to invoke Amazon ECS Task. Documented below. A maximum of 1 are allowed. + EcsTarget EventTargetEcsTargetPtrInput + // The name or ARN of the event bus to associate with the rule. + // If you omit this, the `default` event bus is used. + EventBusName pulumi.StringPtrInput + // Used to delete managed rules created by AWS. Defaults to `false`. + ForceDestroy pulumi.BoolPtrInput + // Parameters used when you are using the rule to invoke an API Gateway REST endpoint. Documented below. A maximum of 1 is allowed. + HttpTarget EventTargetHttpTargetPtrInput + // Valid JSON text passed to the target. Conflicts with `inputPath` and `inputTransformer`. + Input pulumi.StringPtrInput + // The value of the [JSONPath](http://goessner.net/articles/JsonPath/) that is used for extracting part of the matched event when passing it to the target. Conflicts with `input` and `inputTransformer`. + InputPath pulumi.StringPtrInput + // Parameters used when you are providing a custom input to a target based on certain event data. Conflicts with `input` and `inputPath`. + InputTransformer EventTargetInputTransformerPtrInput + // Parameters used when you are using the rule to invoke an Amazon Kinesis Stream. Documented below. A maximum of 1 are allowed. + KinesisTarget EventTargetKinesisTargetPtrInput + // Parameters used when you are using the rule to invoke an Amazon Redshift Statement. Documented below. A maximum of 1 are allowed. + RedshiftTarget EventTargetRedshiftTargetPtrInput + // Parameters used when you are providing retry policies. Documented below. A maximum of 1 are allowed. + RetryPolicy EventTargetRetryPolicyPtrInput + // The Amazon Resource Name (ARN) of the IAM role to be used for this target when the rule is triggered. Required if `ecsTarget` is used or target in `arn` is EC2 instance, Kinesis data stream, Step Functions state machine, or Event Bus in different account or region. + RoleArn pulumi.StringPtrInput + // The name of the rule you want to add targets to. + // + // The following arguments are optional: + Rule pulumi.StringInput + // Parameters used when you are using the rule to invoke Amazon EC2 Run Command. Documented below. A maximum of 5 are allowed. + RunCommandTargets EventTargetRunCommandTargetArrayInput + // Parameters used when you are using the rule to invoke an Amazon SageMaker Pipeline. Documented below. A maximum of 1 are allowed. + SagemakerPipelineTarget EventTargetSagemakerPipelineTargetPtrInput + // Parameters used when you are using the rule to invoke an Amazon SQS Queue. Documented below. A maximum of 1 are allowed. + SqsTarget EventTargetSqsTargetPtrInput + // The unique target assignment ID. If missing, will generate a random, unique id. + TargetId pulumi.StringPtrInput +} + +func (EventTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*eventTargetArgs)(nil)).Elem() +} + +type EventTargetInput interface { + pulumi.Input + + ToEventTargetOutput() EventTargetOutput + ToEventTargetOutputWithContext(ctx context.Context) EventTargetOutput +} + +func (*EventTarget) ElementType() reflect.Type { + return reflect.TypeOf((**EventTarget)(nil)).Elem() +} + +func (i *EventTarget) ToEventTargetOutput() EventTargetOutput { + return i.ToEventTargetOutputWithContext(context.Background()) +} + +func (i *EventTarget) ToEventTargetOutputWithContext(ctx context.Context) EventTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetOutput) +} + +// EventTargetArrayInput is an input type that accepts EventTargetArray and EventTargetArrayOutput values. +// You can construct a concrete instance of `EventTargetArrayInput` via: +// +// EventTargetArray{ EventTargetArgs{...} } +type EventTargetArrayInput interface { + pulumi.Input + + ToEventTargetArrayOutput() EventTargetArrayOutput + ToEventTargetArrayOutputWithContext(context.Context) EventTargetArrayOutput +} + +type EventTargetArray []EventTargetInput + +func (EventTargetArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventTarget)(nil)).Elem() +} + +func (i EventTargetArray) ToEventTargetArrayOutput() EventTargetArrayOutput { + return i.ToEventTargetArrayOutputWithContext(context.Background()) +} + +func (i EventTargetArray) ToEventTargetArrayOutputWithContext(ctx context.Context) EventTargetArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetArrayOutput) +} + +// EventTargetMapInput is an input type that accepts EventTargetMap and EventTargetMapOutput values. +// You can construct a concrete instance of `EventTargetMapInput` via: +// +// EventTargetMap{ "key": EventTargetArgs{...} } +type EventTargetMapInput interface { + pulumi.Input + + ToEventTargetMapOutput() EventTargetMapOutput + ToEventTargetMapOutputWithContext(context.Context) EventTargetMapOutput +} + +type EventTargetMap map[string]EventTargetInput + +func (EventTargetMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventTarget)(nil)).Elem() +} + +func (i EventTargetMap) ToEventTargetMapOutput() EventTargetMapOutput { + return i.ToEventTargetMapOutputWithContext(context.Background()) +} + +func (i EventTargetMap) ToEventTargetMapOutputWithContext(ctx context.Context) EventTargetMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetMapOutput) +} + +type EventTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTarget)(nil)).Elem() +} + +func (o EventTargetOutput) ToEventTargetOutput() EventTargetOutput { + return o +} + +func (o EventTargetOutput) ToEventTargetOutputWithContext(ctx context.Context) EventTargetOutput { + return o +} + +// Parameters used when you are using the rule to invoke an AppSync GraphQL API mutation. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) AppsyncTarget() EventTargetAppsyncTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetAppsyncTargetPtrOutput { return v.AppsyncTarget }).(EventTargetAppsyncTargetPtrOutput) +} + +// The Amazon Resource Name (ARN) of the target. +func (o EventTargetOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *EventTarget) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Parameters used when you are using the rule to invoke an Amazon Batch Job. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) BatchTarget() EventTargetBatchTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetBatchTargetPtrOutput { return v.BatchTarget }).(EventTargetBatchTargetPtrOutput) +} + +// Parameters used when you are providing a dead letter config. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) DeadLetterConfig() EventTargetDeadLetterConfigPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetDeadLetterConfigPtrOutput { return v.DeadLetterConfig }).(EventTargetDeadLetterConfigPtrOutput) +} + +// Parameters used when you are using the rule to invoke Amazon ECS Task. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) EcsTarget() EventTargetEcsTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetEcsTargetPtrOutput { return v.EcsTarget }).(EventTargetEcsTargetPtrOutput) +} + +// The name or ARN of the event bus to associate with the rule. +// If you omit this, the `default` event bus is used. +func (o EventTargetOutput) EventBusName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTarget) pulumi.StringPtrOutput { return v.EventBusName }).(pulumi.StringPtrOutput) +} + +// Used to delete managed rules created by AWS. Defaults to `false`. +func (o EventTargetOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EventTarget) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// Parameters used when you are using the rule to invoke an API Gateway REST endpoint. Documented below. A maximum of 1 is allowed. +func (o EventTargetOutput) HttpTarget() EventTargetHttpTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetHttpTargetPtrOutput { return v.HttpTarget }).(EventTargetHttpTargetPtrOutput) +} + +// Valid JSON text passed to the target. Conflicts with `inputPath` and `inputTransformer`. +func (o EventTargetOutput) Input() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTarget) pulumi.StringPtrOutput { return v.Input }).(pulumi.StringPtrOutput) +} + +// The value of the [JSONPath](http://goessner.net/articles/JsonPath/) that is used for extracting part of the matched event when passing it to the target. Conflicts with `input` and `inputTransformer`. +func (o EventTargetOutput) InputPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTarget) pulumi.StringPtrOutput { return v.InputPath }).(pulumi.StringPtrOutput) +} + +// Parameters used when you are providing a custom input to a target based on certain event data. Conflicts with `input` and `inputPath`. +func (o EventTargetOutput) InputTransformer() EventTargetInputTransformerPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetInputTransformerPtrOutput { return v.InputTransformer }).(EventTargetInputTransformerPtrOutput) +} + +// Parameters used when you are using the rule to invoke an Amazon Kinesis Stream. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) KinesisTarget() EventTargetKinesisTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetKinesisTargetPtrOutput { return v.KinesisTarget }).(EventTargetKinesisTargetPtrOutput) +} + +// Parameters used when you are using the rule to invoke an Amazon Redshift Statement. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) RedshiftTarget() EventTargetRedshiftTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetRedshiftTargetPtrOutput { return v.RedshiftTarget }).(EventTargetRedshiftTargetPtrOutput) +} + +// Parameters used when you are providing retry policies. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) RetryPolicy() EventTargetRetryPolicyPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetRetryPolicyPtrOutput { return v.RetryPolicy }).(EventTargetRetryPolicyPtrOutput) +} + +// The Amazon Resource Name (ARN) of the IAM role to be used for this target when the rule is triggered. Required if `ecsTarget` is used or target in `arn` is EC2 instance, Kinesis data stream, Step Functions state machine, or Event Bus in different account or region. +func (o EventTargetOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTarget) pulumi.StringPtrOutput { return v.RoleArn }).(pulumi.StringPtrOutput) +} + +// The name of the rule you want to add targets to. +// +// The following arguments are optional: +func (o EventTargetOutput) Rule() pulumi.StringOutput { + return o.ApplyT(func(v *EventTarget) pulumi.StringOutput { return v.Rule }).(pulumi.StringOutput) +} + +// Parameters used when you are using the rule to invoke Amazon EC2 Run Command. Documented below. A maximum of 5 are allowed. +func (o EventTargetOutput) RunCommandTargets() EventTargetRunCommandTargetArrayOutput { + return o.ApplyT(func(v *EventTarget) EventTargetRunCommandTargetArrayOutput { return v.RunCommandTargets }).(EventTargetRunCommandTargetArrayOutput) +} + +// Parameters used when you are using the rule to invoke an Amazon SageMaker Pipeline. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) SagemakerPipelineTarget() EventTargetSagemakerPipelineTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetSagemakerPipelineTargetPtrOutput { return v.SagemakerPipelineTarget }).(EventTargetSagemakerPipelineTargetPtrOutput) +} + +// Parameters used when you are using the rule to invoke an Amazon SQS Queue. Documented below. A maximum of 1 are allowed. +func (o EventTargetOutput) SqsTarget() EventTargetSqsTargetPtrOutput { + return o.ApplyT(func(v *EventTarget) EventTargetSqsTargetPtrOutput { return v.SqsTarget }).(EventTargetSqsTargetPtrOutput) +} + +// The unique target assignment ID. If missing, will generate a random, unique id. +func (o EventTargetOutput) TargetId() pulumi.StringOutput { + return o.ApplyT(func(v *EventTarget) pulumi.StringOutput { return v.TargetId }).(pulumi.StringOutput) +} + +type EventTargetArrayOutput struct{ *pulumi.OutputState } + +func (EventTargetArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EventTarget)(nil)).Elem() +} + +func (o EventTargetArrayOutput) ToEventTargetArrayOutput() EventTargetArrayOutput { + return o +} + +func (o EventTargetArrayOutput) ToEventTargetArrayOutputWithContext(ctx context.Context) EventTargetArrayOutput { + return o +} + +func (o EventTargetArrayOutput) Index(i pulumi.IntInput) EventTargetOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EventTarget { + return vs[0].([]*EventTarget)[vs[1].(int)] + }).(EventTargetOutput) +} + +type EventTargetMapOutput struct{ *pulumi.OutputState } + +func (EventTargetMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EventTarget)(nil)).Elem() +} + +func (o EventTargetMapOutput) ToEventTargetMapOutput() EventTargetMapOutput { + return o +} + +func (o EventTargetMapOutput) ToEventTargetMapOutputWithContext(ctx context.Context) EventTargetMapOutput { + return o +} + +func (o EventTargetMapOutput) MapIndex(k pulumi.StringInput) EventTargetOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EventTarget { + return vs[0].(map[string]*EventTarget)[vs[1].(string)] + }).(EventTargetOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetInput)(nil)).Elem(), &EventTarget{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetArrayInput)(nil)).Elem(), EventTargetArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetMapInput)(nil)).Elem(), EventTargetMap{}) + pulumi.RegisterOutputType(EventTargetOutput{}) + pulumi.RegisterOutputType(EventTargetArrayOutput{}) + pulumi.RegisterOutputType(EventTargetMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventBus.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventBus.go new file mode 100644 index 000000000..b4c0e0e5e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventBus.go @@ -0,0 +1,142 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// EventBridge event bus. Use this data source to compute the ARN of +// an event bus, given the name of the bus. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.LookupEventBus(ctx, &cloudwatch.LookupEventBusArgs{ +// Name: "example-bus-name", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupEventBus(ctx *pulumi.Context, args *LookupEventBusArgs, opts ...pulumi.InvokeOption) (*LookupEventBusResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupEventBusResult + err := ctx.Invoke("aws:cloudwatch/getEventBus:getEventBus", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getEventBus. +type LookupEventBusArgs struct { + // Name of the event bus. + Name string `pulumi:"name"` +} + +// A collection of values returned by getEventBus. +type LookupEventBusResult struct { + // ARN of the event bus. + Arn string `pulumi:"arn"` + // Event bus description. + Description string `pulumi:"description"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Identifier of the AWS KMS customer managed key for EventBridge to use to encrypt events on this event bus, if one has been specified. + KmsKeyIdentifier string `pulumi:"kmsKeyIdentifier"` + Name string `pulumi:"name"` +} + +func LookupEventBusOutput(ctx *pulumi.Context, args LookupEventBusOutputArgs, opts ...pulumi.InvokeOption) LookupEventBusResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupEventBusResultOutput, error) { + args := v.(LookupEventBusArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupEventBusResult + secret, err := ctx.InvokePackageRaw("aws:cloudwatch/getEventBus:getEventBus", args, &rv, "", opts...) + if err != nil { + return LookupEventBusResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupEventBusResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupEventBusResultOutput), nil + } + return output, nil + }).(LookupEventBusResultOutput) +} + +// A collection of arguments for invoking getEventBus. +type LookupEventBusOutputArgs struct { + // Name of the event bus. + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupEventBusOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupEventBusArgs)(nil)).Elem() +} + +// A collection of values returned by getEventBus. +type LookupEventBusResultOutput struct{ *pulumi.OutputState } + +func (LookupEventBusResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupEventBusResult)(nil)).Elem() +} + +func (o LookupEventBusResultOutput) ToLookupEventBusResultOutput() LookupEventBusResultOutput { + return o +} + +func (o LookupEventBusResultOutput) ToLookupEventBusResultOutputWithContext(ctx context.Context) LookupEventBusResultOutput { + return o +} + +// ARN of the event bus. +func (o LookupEventBusResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventBusResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Event bus description. +func (o LookupEventBusResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventBusResult) string { return v.Description }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupEventBusResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventBusResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Identifier of the AWS KMS customer managed key for EventBridge to use to encrypt events on this event bus, if one has been specified. +func (o LookupEventBusResultOutput) KmsKeyIdentifier() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventBusResult) string { return v.KmsKeyIdentifier }).(pulumi.StringOutput) +} + +func (o LookupEventBusResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventBusResult) string { return v.Name }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupEventBusResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventConnection.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventConnection.go new file mode 100644 index 000000000..f8259e719 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventConnection.go @@ -0,0 +1,144 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to retrieve information about an EventBridge connection. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.LookupEventConnection(ctx, &cloudwatch.LookupEventConnectionArgs{ +// Name: "test", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupEventConnection(ctx *pulumi.Context, args *LookupEventConnectionArgs, opts ...pulumi.InvokeOption) (*LookupEventConnectionResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupEventConnectionResult + err := ctx.Invoke("aws:cloudwatch/getEventConnection:getEventConnection", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getEventConnection. +type LookupEventConnectionArgs struct { + // Name of the connection. + Name string `pulumi:"name"` +} + +// A collection of values returned by getEventConnection. +type LookupEventConnectionResult struct { + // ARN (Amazon Resource Name) for the connection. + Arn string `pulumi:"arn"` + // Type of authorization to use to connect. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. + AuthorizationType string `pulumi:"authorizationType"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Name of the connection. + Name string `pulumi:"name"` + // ARN (Amazon Resource Name) for the secret created from the authorization parameters specified for the connection. + SecretArn string `pulumi:"secretArn"` +} + +func LookupEventConnectionOutput(ctx *pulumi.Context, args LookupEventConnectionOutputArgs, opts ...pulumi.InvokeOption) LookupEventConnectionResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupEventConnectionResultOutput, error) { + args := v.(LookupEventConnectionArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupEventConnectionResult + secret, err := ctx.InvokePackageRaw("aws:cloudwatch/getEventConnection:getEventConnection", args, &rv, "", opts...) + if err != nil { + return LookupEventConnectionResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupEventConnectionResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupEventConnectionResultOutput), nil + } + return output, nil + }).(LookupEventConnectionResultOutput) +} + +// A collection of arguments for invoking getEventConnection. +type LookupEventConnectionOutputArgs struct { + // Name of the connection. + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupEventConnectionOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupEventConnectionArgs)(nil)).Elem() +} + +// A collection of values returned by getEventConnection. +type LookupEventConnectionResultOutput struct{ *pulumi.OutputState } + +func (LookupEventConnectionResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupEventConnectionResult)(nil)).Elem() +} + +func (o LookupEventConnectionResultOutput) ToLookupEventConnectionResultOutput() LookupEventConnectionResultOutput { + return o +} + +func (o LookupEventConnectionResultOutput) ToLookupEventConnectionResultOutputWithContext(ctx context.Context) LookupEventConnectionResultOutput { + return o +} + +// ARN (Amazon Resource Name) for the connection. +func (o LookupEventConnectionResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventConnectionResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Type of authorization to use to connect. One of `API_KEY`,`BASIC`,`OAUTH_CLIENT_CREDENTIALS`. +func (o LookupEventConnectionResultOutput) AuthorizationType() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventConnectionResult) string { return v.AuthorizationType }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupEventConnectionResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventConnectionResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Name of the connection. +func (o LookupEventConnectionResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventConnectionResult) string { return v.Name }).(pulumi.StringOutput) +} + +// ARN (Amazon Resource Name) for the secret created from the authorization parameters specified for the connection. +func (o LookupEventConnectionResultOutput) SecretArn() pulumi.StringOutput { + return o.ApplyT(func(v LookupEventConnectionResult) string { return v.SecretArn }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupEventConnectionResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventSource.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventSource.go new file mode 100644 index 000000000..c4f0f02f3 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getEventSource.go @@ -0,0 +1,149 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to get information about an EventBridge Partner Event Source. This data source will only return one partner event source. An error will be returned if multiple sources match the same name prefix. +// +// > **Note:** EventBridge was formerly known as CloudWatch Events. The functionality is identical. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.GetEventSource(ctx, &cloudwatch.GetEventSourceArgs{ +// NamePrefix: pulumi.StringRef("aws.partner/examplepartner.com"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetEventSource(ctx *pulumi.Context, args *GetEventSourceArgs, opts ...pulumi.InvokeOption) (*GetEventSourceResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetEventSourceResult + err := ctx.Invoke("aws:cloudwatch/getEventSource:getEventSource", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getEventSource. +type GetEventSourceArgs struct { + // Specifying this limits the results to only those partner event sources with names that start with the specified prefix + NamePrefix *string `pulumi:"namePrefix"` +} + +// A collection of values returned by getEventSource. +type GetEventSourceResult struct { + // ARN of the partner event source + Arn string `pulumi:"arn"` + // Name of the SaaS partner that created the event source + CreatedBy string `pulumi:"createdBy"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Name of the event source + Name string `pulumi:"name"` + NamePrefix *string `pulumi:"namePrefix"` + // State of the event source (`ACTIVE` or `PENDING`) + State string `pulumi:"state"` +} + +func GetEventSourceOutput(ctx *pulumi.Context, args GetEventSourceOutputArgs, opts ...pulumi.InvokeOption) GetEventSourceResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetEventSourceResultOutput, error) { + args := v.(GetEventSourceArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetEventSourceResult + secret, err := ctx.InvokePackageRaw("aws:cloudwatch/getEventSource:getEventSource", args, &rv, "", opts...) + if err != nil { + return GetEventSourceResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetEventSourceResultOutput) + if secret { + return pulumi.ToSecret(output).(GetEventSourceResultOutput), nil + } + return output, nil + }).(GetEventSourceResultOutput) +} + +// A collection of arguments for invoking getEventSource. +type GetEventSourceOutputArgs struct { + // Specifying this limits the results to only those partner event sources with names that start with the specified prefix + NamePrefix pulumi.StringPtrInput `pulumi:"namePrefix"` +} + +func (GetEventSourceOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetEventSourceArgs)(nil)).Elem() +} + +// A collection of values returned by getEventSource. +type GetEventSourceResultOutput struct{ *pulumi.OutputState } + +func (GetEventSourceResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetEventSourceResult)(nil)).Elem() +} + +func (o GetEventSourceResultOutput) ToGetEventSourceResultOutput() GetEventSourceResultOutput { + return o +} + +func (o GetEventSourceResultOutput) ToGetEventSourceResultOutputWithContext(ctx context.Context) GetEventSourceResultOutput { + return o +} + +// ARN of the partner event source +func (o GetEventSourceResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v GetEventSourceResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Name of the SaaS partner that created the event source +func (o GetEventSourceResultOutput) CreatedBy() pulumi.StringOutput { + return o.ApplyT(func(v GetEventSourceResult) string { return v.CreatedBy }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetEventSourceResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetEventSourceResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Name of the event source +func (o GetEventSourceResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetEventSourceResult) string { return v.Name }).(pulumi.StringOutput) +} + +func (o GetEventSourceResultOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetEventSourceResult) *string { return v.NamePrefix }).(pulumi.StringPtrOutput) +} + +// State of the event source (`ACTIVE` or `PENDING`) +func (o GetEventSourceResultOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v GetEventSourceResult) string { return v.State }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetEventSourceResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogDataProtectionPolicyDocument.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogDataProtectionPolicyDocument.go new file mode 100644 index 000000000..46ca836b7 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogDataProtectionPolicyDocument.go @@ -0,0 +1,204 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Generates a CloudWatch Log Group Data Protection Policy document in JSON format for use with the `cloudwatch.LogDataProtectionPolicy` resource. +// +// > For more information about data protection policies, see the [Help protect sensitive log data with masking](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html). +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := cloudwatch.GetLogDataProtectionPolicyDocument(ctx, &cloudwatch.GetLogDataProtectionPolicyDocumentArgs{ +// Name: "Example", +// Statements: []cloudwatch.GetLogDataProtectionPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("Audit"), +// DataIdentifiers: []string{ +// "arn:aws:dataprotection::aws:data-identifier/EmailAddress", +// "arn:aws:dataprotection::aws:data-identifier/DriversLicense-US", +// }, +// Operation: { +// Audit: { +// FindingsDestination: { +// CloudwatchLogs: { +// LogGroup: audit.Name, +// }, +// Firehose: { +// DeliveryStream: auditAwsKinesisFirehoseDeliveryStream.Name, +// }, +// S3: { +// Bucket: auditAwsS3Bucket.Bucket, +// }, +// }, +// }, +// }, +// }, +// { +// Sid: pulumi.StringRef("Deidentify"), +// DataIdentifiers: []string{ +// "arn:aws:dataprotection::aws:data-identifier/EmailAddress", +// "arn:aws:dataprotection::aws:data-identifier/DriversLicense-US", +// }, +// Operation: { +// Deidentify: { +// MaskConfig: {}, +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewLogDataProtectionPolicy(ctx, "example", &cloudwatch.LogDataProtectionPolicyArgs{ +// LogGroupName: pulumi.Any(exampleAwsCloudwatchLogGroup.Name), +// PolicyDocument: pulumi.String(example.Json), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetLogDataProtectionPolicyDocument(ctx *pulumi.Context, args *GetLogDataProtectionPolicyDocumentArgs, opts ...pulumi.InvokeOption) (*GetLogDataProtectionPolicyDocumentResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetLogDataProtectionPolicyDocumentResult + err := ctx.Invoke("aws:cloudwatch/getLogDataProtectionPolicyDocument:getLogDataProtectionPolicyDocument", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getLogDataProtectionPolicyDocument. +type GetLogDataProtectionPolicyDocumentArgs struct { + Description *string `pulumi:"description"` + // The name of the data protection policy document. + Name string `pulumi:"name"` + // Configures the data protection policy. + // + // > There must be exactly two statements: the first with an `audit` operation, and the second with a `deidentify` operation. + // + // The following arguments are optional: + Statements []GetLogDataProtectionPolicyDocumentStatement `pulumi:"statements"` + Version *string `pulumi:"version"` +} + +// A collection of values returned by getLogDataProtectionPolicyDocument. +type GetLogDataProtectionPolicyDocumentResult struct { + Description *string `pulumi:"description"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Standard JSON policy document rendered based on the arguments above. + Json string `pulumi:"json"` + Name string `pulumi:"name"` + Statements []GetLogDataProtectionPolicyDocumentStatement `pulumi:"statements"` + Version *string `pulumi:"version"` +} + +func GetLogDataProtectionPolicyDocumentOutput(ctx *pulumi.Context, args GetLogDataProtectionPolicyDocumentOutputArgs, opts ...pulumi.InvokeOption) GetLogDataProtectionPolicyDocumentResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetLogDataProtectionPolicyDocumentResultOutput, error) { + args := v.(GetLogDataProtectionPolicyDocumentArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetLogDataProtectionPolicyDocumentResult + secret, err := ctx.InvokePackageRaw("aws:cloudwatch/getLogDataProtectionPolicyDocument:getLogDataProtectionPolicyDocument", args, &rv, "", opts...) + if err != nil { + return GetLogDataProtectionPolicyDocumentResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetLogDataProtectionPolicyDocumentResultOutput) + if secret { + return pulumi.ToSecret(output).(GetLogDataProtectionPolicyDocumentResultOutput), nil + } + return output, nil + }).(GetLogDataProtectionPolicyDocumentResultOutput) +} + +// A collection of arguments for invoking getLogDataProtectionPolicyDocument. +type GetLogDataProtectionPolicyDocumentOutputArgs struct { + Description pulumi.StringPtrInput `pulumi:"description"` + // The name of the data protection policy document. + Name pulumi.StringInput `pulumi:"name"` + // Configures the data protection policy. + // + // > There must be exactly two statements: the first with an `audit` operation, and the second with a `deidentify` operation. + // + // The following arguments are optional: + Statements GetLogDataProtectionPolicyDocumentStatementArrayInput `pulumi:"statements"` + Version pulumi.StringPtrInput `pulumi:"version"` +} + +func (GetLogDataProtectionPolicyDocumentOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentArgs)(nil)).Elem() +} + +// A collection of values returned by getLogDataProtectionPolicyDocument. +type GetLogDataProtectionPolicyDocumentResultOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentResult)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentResultOutput) ToGetLogDataProtectionPolicyDocumentResultOutput() GetLogDataProtectionPolicyDocumentResultOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentResultOutput) ToGetLogDataProtectionPolicyDocumentResultOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentResultOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentResultOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentResult) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetLogDataProtectionPolicyDocumentResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Standard JSON policy document rendered based on the arguments above. +func (o GetLogDataProtectionPolicyDocumentResultOutput) Json() pulumi.StringOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentResult) string { return v.Json }).(pulumi.StringOutput) +} + +func (o GetLogDataProtectionPolicyDocumentResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentResult) string { return v.Name }).(pulumi.StringOutput) +} + +func (o GetLogDataProtectionPolicyDocumentResultOutput) Statements() GetLogDataProtectionPolicyDocumentStatementArrayOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentResult) []GetLogDataProtectionPolicyDocumentStatement { + return v.Statements + }).(GetLogDataProtectionPolicyDocumentStatementArrayOutput) +} + +func (o GetLogDataProtectionPolicyDocumentResultOutput) Version() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentResult) *string { return v.Version }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroup.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroup.go new file mode 100644 index 000000000..734efb56c --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroup.go @@ -0,0 +1,165 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to get information about an AWS Cloudwatch Log Group +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.LookupLogGroup(ctx, &cloudwatch.LookupLogGroupArgs{ +// Name: "MyImportantLogs", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupLogGroup(ctx *pulumi.Context, args *LookupLogGroupArgs, opts ...pulumi.InvokeOption) (*LookupLogGroupResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupLogGroupResult + err := ctx.Invoke("aws:cloudwatch/getLogGroup:getLogGroup", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getLogGroup. +type LookupLogGroupArgs struct { + // Name of the Cloudwatch log group + Name string `pulumi:"name"` + // Map of tags to assign to the resource. + Tags map[string]string `pulumi:"tags"` +} + +// A collection of values returned by getLogGroup. +type LookupLogGroupResult struct { + // ARN of the Cloudwatch log group. Any `:*` suffix added by the API, denoting all CloudWatch Log Streams under the CloudWatch Log Group, is removed for greater compatibility with other AWS services that do not accept the suffix. + Arn string `pulumi:"arn"` + // Creation time of the log group, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. + CreationTime int `pulumi:"creationTime"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // ARN of the KMS Key to use when encrypting log data. + KmsKeyId string `pulumi:"kmsKeyId"` + // The log class of the log group. + LogGroupClass string `pulumi:"logGroupClass"` + Name string `pulumi:"name"` + // Number of days log events retained in the specified log group. + RetentionInDays int `pulumi:"retentionInDays"` + // Map of tags to assign to the resource. + Tags map[string]string `pulumi:"tags"` +} + +func LookupLogGroupOutput(ctx *pulumi.Context, args LookupLogGroupOutputArgs, opts ...pulumi.InvokeOption) LookupLogGroupResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupLogGroupResultOutput, error) { + args := v.(LookupLogGroupArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupLogGroupResult + secret, err := ctx.InvokePackageRaw("aws:cloudwatch/getLogGroup:getLogGroup", args, &rv, "", opts...) + if err != nil { + return LookupLogGroupResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupLogGroupResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupLogGroupResultOutput), nil + } + return output, nil + }).(LookupLogGroupResultOutput) +} + +// A collection of arguments for invoking getLogGroup. +type LookupLogGroupOutputArgs struct { + // Name of the Cloudwatch log group + Name pulumi.StringInput `pulumi:"name"` + // Map of tags to assign to the resource. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (LookupLogGroupOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupLogGroupArgs)(nil)).Elem() +} + +// A collection of values returned by getLogGroup. +type LookupLogGroupResultOutput struct{ *pulumi.OutputState } + +func (LookupLogGroupResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupLogGroupResult)(nil)).Elem() +} + +func (o LookupLogGroupResultOutput) ToLookupLogGroupResultOutput() LookupLogGroupResultOutput { + return o +} + +func (o LookupLogGroupResultOutput) ToLookupLogGroupResultOutputWithContext(ctx context.Context) LookupLogGroupResultOutput { + return o +} + +// ARN of the Cloudwatch log group. Any `:*` suffix added by the API, denoting all CloudWatch Log Streams under the CloudWatch Log Group, is removed for greater compatibility with other AWS services that do not accept the suffix. +func (o LookupLogGroupResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupLogGroupResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Creation time of the log group, expressed as the number of milliseconds after Jan 1, 1970 00:00:00 UTC. +func (o LookupLogGroupResultOutput) CreationTime() pulumi.IntOutput { + return o.ApplyT(func(v LookupLogGroupResult) int { return v.CreationTime }).(pulumi.IntOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupLogGroupResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupLogGroupResult) string { return v.Id }).(pulumi.StringOutput) +} + +// ARN of the KMS Key to use when encrypting log data. +func (o LookupLogGroupResultOutput) KmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v LookupLogGroupResult) string { return v.KmsKeyId }).(pulumi.StringOutput) +} + +// The log class of the log group. +func (o LookupLogGroupResultOutput) LogGroupClass() pulumi.StringOutput { + return o.ApplyT(func(v LookupLogGroupResult) string { return v.LogGroupClass }).(pulumi.StringOutput) +} + +func (o LookupLogGroupResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupLogGroupResult) string { return v.Name }).(pulumi.StringOutput) +} + +// Number of days log events retained in the specified log group. +func (o LookupLogGroupResultOutput) RetentionInDays() pulumi.IntOutput { + return o.ApplyT(func(v LookupLogGroupResult) int { return v.RetentionInDays }).(pulumi.IntOutput) +} + +// Map of tags to assign to the resource. +func (o LookupLogGroupResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupLogGroupResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupLogGroupResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroups.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroups.go new file mode 100644 index 000000000..57bdfc61d --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/getLogGroups.go @@ -0,0 +1,133 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to get a list of AWS Cloudwatch Log Groups +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.GetLogGroups(ctx, &cloudwatch.GetLogGroupsArgs{ +// LogGroupNamePrefix: pulumi.StringRef("/MyImportantLogs"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetLogGroups(ctx *pulumi.Context, args *GetLogGroupsArgs, opts ...pulumi.InvokeOption) (*GetLogGroupsResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetLogGroupsResult + err := ctx.Invoke("aws:cloudwatch/getLogGroups:getLogGroups", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getLogGroups. +type GetLogGroupsArgs struct { + // Group prefix of the Cloudwatch log groups to list + LogGroupNamePrefix *string `pulumi:"logGroupNamePrefix"` +} + +// A collection of values returned by getLogGroups. +type GetLogGroupsResult struct { + // Set of ARNs of the Cloudwatch log groups + Arns []string `pulumi:"arns"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + LogGroupNamePrefix *string `pulumi:"logGroupNamePrefix"` + // Set of names of the Cloudwatch log groups + LogGroupNames []string `pulumi:"logGroupNames"` +} + +func GetLogGroupsOutput(ctx *pulumi.Context, args GetLogGroupsOutputArgs, opts ...pulumi.InvokeOption) GetLogGroupsResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetLogGroupsResultOutput, error) { + args := v.(GetLogGroupsArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetLogGroupsResult + secret, err := ctx.InvokePackageRaw("aws:cloudwatch/getLogGroups:getLogGroups", args, &rv, "", opts...) + if err != nil { + return GetLogGroupsResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetLogGroupsResultOutput) + if secret { + return pulumi.ToSecret(output).(GetLogGroupsResultOutput), nil + } + return output, nil + }).(GetLogGroupsResultOutput) +} + +// A collection of arguments for invoking getLogGroups. +type GetLogGroupsOutputArgs struct { + // Group prefix of the Cloudwatch log groups to list + LogGroupNamePrefix pulumi.StringPtrInput `pulumi:"logGroupNamePrefix"` +} + +func (GetLogGroupsOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogGroupsArgs)(nil)).Elem() +} + +// A collection of values returned by getLogGroups. +type GetLogGroupsResultOutput struct{ *pulumi.OutputState } + +func (GetLogGroupsResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogGroupsResult)(nil)).Elem() +} + +func (o GetLogGroupsResultOutput) ToGetLogGroupsResultOutput() GetLogGroupsResultOutput { + return o +} + +func (o GetLogGroupsResultOutput) ToGetLogGroupsResultOutputWithContext(ctx context.Context) GetLogGroupsResultOutput { + return o +} + +// Set of ARNs of the Cloudwatch log groups +func (o GetLogGroupsResultOutput) Arns() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetLogGroupsResult) []string { return v.Arns }).(pulumi.StringArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetLogGroupsResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetLogGroupsResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o GetLogGroupsResultOutput) LogGroupNamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetLogGroupsResult) *string { return v.LogGroupNamePrefix }).(pulumi.StringPtrOutput) +} + +// Set of names of the Cloudwatch log groups +func (o GetLogGroupsResultOutput) LogGroupNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetLogGroupsResult) []string { return v.LogGroupNames }).(pulumi.StringArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(GetLogGroupsResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/init.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/init.go new file mode 100644 index 000000000..d6bc1e872 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/init.go @@ -0,0 +1,205 @@ +// 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 cloudwatch + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws:cloudwatch/compositeAlarm:CompositeAlarm": + r = &CompositeAlarm{} + case "aws:cloudwatch/dashboard:Dashboard": + r = &Dashboard{} + case "aws:cloudwatch/eventApiDestination:EventApiDestination": + r = &EventApiDestination{} + case "aws:cloudwatch/eventArchive:EventArchive": + r = &EventArchive{} + case "aws:cloudwatch/eventBus:EventBus": + r = &EventBus{} + case "aws:cloudwatch/eventBusPolicy:EventBusPolicy": + r = &EventBusPolicy{} + case "aws:cloudwatch/eventConnection:EventConnection": + r = &EventConnection{} + case "aws:cloudwatch/eventEndpoint:EventEndpoint": + r = &EventEndpoint{} + case "aws:cloudwatch/eventPermission:EventPermission": + r = &EventPermission{} + case "aws:cloudwatch/eventRule:EventRule": + r = &EventRule{} + case "aws:cloudwatch/eventTarget:EventTarget": + r = &EventTarget{} + case "aws:cloudwatch/internetMonitor:InternetMonitor": + r = &InternetMonitor{} + case "aws:cloudwatch/logAccountPolicy:LogAccountPolicy": + r = &LogAccountPolicy{} + case "aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy": + r = &LogDataProtectionPolicy{} + case "aws:cloudwatch/logDestination:LogDestination": + r = &LogDestination{} + case "aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy": + r = &LogDestinationPolicy{} + case "aws:cloudwatch/logGroup:LogGroup": + r = &LogGroup{} + case "aws:cloudwatch/logMetricFilter:LogMetricFilter": + r = &LogMetricFilter{} + case "aws:cloudwatch/logResourcePolicy:LogResourcePolicy": + r = &LogResourcePolicy{} + case "aws:cloudwatch/logStream:LogStream": + r = &LogStream{} + case "aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter": + r = &LogSubscriptionFilter{} + case "aws:cloudwatch/metricAlarm:MetricAlarm": + r = &MetricAlarm{} + case "aws:cloudwatch/metricStream:MetricStream": + r = &MetricStream{} + case "aws:cloudwatch/queryDefinition:QueryDefinition": + r = &QueryDefinition{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/compositeAlarm", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/dashboard", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventApiDestination", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventArchive", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventBus", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventBusPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventConnection", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventEndpoint", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventPermission", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventRule", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/eventTarget", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/internetMonitor", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logAccountPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logDataProtectionPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logDestination", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logDestinationPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logGroup", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logMetricFilter", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logResourcePolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logStream", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/logSubscriptionFilter", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/metricAlarm", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/metricStream", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "cloudwatch/queryDefinition", + &module{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/internetMonitor.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/internetMonitor.go new file mode 100644 index 000000000..91799e72d --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/internetMonitor.go @@ -0,0 +1,402 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a Internet Monitor Monitor resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewInternetMonitor(ctx, "example", &cloudwatch.InternetMonitorArgs{ +// MonitorName: pulumi.String("exmple"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import Internet Monitor Monitors using the `monitor_name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/internetMonitor:InternetMonitor some some-monitor +// ``` +type InternetMonitor struct { + pulumi.CustomResourceState + + // ARN of the Monitor. + Arn pulumi.StringOutput `pulumi:"arn"` + // Health event thresholds. A health event threshold percentage, for performance and availability, determines when Internet Monitor creates a health event when there's an internet issue that affects your application end users. See Health Events Config below. + HealthEventsConfig InternetMonitorHealthEventsConfigPtrOutput `pulumi:"healthEventsConfig"` + // Publish internet measurements for Internet Monitor to an Amazon S3 bucket in addition to CloudWatch Logs. + InternetMeasurementsLogDelivery InternetMonitorInternetMeasurementsLogDeliveryPtrOutput `pulumi:"internetMeasurementsLogDelivery"` + // The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network or ASN, such as an internet service provider (ISP), that clients access the resources through. This limit helps control billing costs. + MaxCityNetworksToMonitor pulumi.IntPtrOutput `pulumi:"maxCityNetworksToMonitor"` + // The name of the monitor. + // + // The following arguments are optional: + MonitorName pulumi.StringOutput `pulumi:"monitorName"` + // The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). + Resources pulumi.StringArrayOutput `pulumi:"resources"` + // The status for a monitor. The accepted values for Status with the UpdateMonitor API call are the following: `ACTIVE` and `INACTIVE`. + Status pulumi.StringPtrOutput `pulumi:"status"` + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The percentage of the internet-facing traffic for your application that you want to monitor with this monitor. + TrafficPercentageToMonitor pulumi.IntPtrOutput `pulumi:"trafficPercentageToMonitor"` +} + +// NewInternetMonitor registers a new resource with the given unique name, arguments, and options. +func NewInternetMonitor(ctx *pulumi.Context, + name string, args *InternetMonitorArgs, opts ...pulumi.ResourceOption) (*InternetMonitor, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.MonitorName == nil { + return nil, errors.New("invalid value for required argument 'MonitorName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource InternetMonitor + err := ctx.RegisterResource("aws:cloudwatch/internetMonitor:InternetMonitor", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetInternetMonitor gets an existing InternetMonitor 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 GetInternetMonitor(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *InternetMonitorState, opts ...pulumi.ResourceOption) (*InternetMonitor, error) { + var resource InternetMonitor + err := ctx.ReadResource("aws:cloudwatch/internetMonitor:InternetMonitor", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering InternetMonitor resources. +type internetMonitorState struct { + // ARN of the Monitor. + Arn *string `pulumi:"arn"` + // Health event thresholds. A health event threshold percentage, for performance and availability, determines when Internet Monitor creates a health event when there's an internet issue that affects your application end users. See Health Events Config below. + HealthEventsConfig *InternetMonitorHealthEventsConfig `pulumi:"healthEventsConfig"` + // Publish internet measurements for Internet Monitor to an Amazon S3 bucket in addition to CloudWatch Logs. + InternetMeasurementsLogDelivery *InternetMonitorInternetMeasurementsLogDelivery `pulumi:"internetMeasurementsLogDelivery"` + // The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network or ASN, such as an internet service provider (ISP), that clients access the resources through. This limit helps control billing costs. + MaxCityNetworksToMonitor *int `pulumi:"maxCityNetworksToMonitor"` + // The name of the monitor. + // + // The following arguments are optional: + MonitorName *string `pulumi:"monitorName"` + // The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). + Resources []string `pulumi:"resources"` + // The status for a monitor. The accepted values for Status with the UpdateMonitor API call are the following: `ACTIVE` and `INACTIVE`. + Status *string `pulumi:"status"` + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The percentage of the internet-facing traffic for your application that you want to monitor with this monitor. + TrafficPercentageToMonitor *int `pulumi:"trafficPercentageToMonitor"` +} + +type InternetMonitorState struct { + // ARN of the Monitor. + Arn pulumi.StringPtrInput + // Health event thresholds. A health event threshold percentage, for performance and availability, determines when Internet Monitor creates a health event when there's an internet issue that affects your application end users. See Health Events Config below. + HealthEventsConfig InternetMonitorHealthEventsConfigPtrInput + // Publish internet measurements for Internet Monitor to an Amazon S3 bucket in addition to CloudWatch Logs. + InternetMeasurementsLogDelivery InternetMonitorInternetMeasurementsLogDeliveryPtrInput + // The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network or ASN, such as an internet service provider (ISP), that clients access the resources through. This limit helps control billing costs. + MaxCityNetworksToMonitor pulumi.IntPtrInput + // The name of the monitor. + // + // The following arguments are optional: + MonitorName pulumi.StringPtrInput + // The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). + Resources pulumi.StringArrayInput + // The status for a monitor. The accepted values for Status with the UpdateMonitor API call are the following: `ACTIVE` and `INACTIVE`. + Status pulumi.StringPtrInput + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The percentage of the internet-facing traffic for your application that you want to monitor with this monitor. + TrafficPercentageToMonitor pulumi.IntPtrInput +} + +func (InternetMonitorState) ElementType() reflect.Type { + return reflect.TypeOf((*internetMonitorState)(nil)).Elem() +} + +type internetMonitorArgs struct { + // Health event thresholds. A health event threshold percentage, for performance and availability, determines when Internet Monitor creates a health event when there's an internet issue that affects your application end users. See Health Events Config below. + HealthEventsConfig *InternetMonitorHealthEventsConfig `pulumi:"healthEventsConfig"` + // Publish internet measurements for Internet Monitor to an Amazon S3 bucket in addition to CloudWatch Logs. + InternetMeasurementsLogDelivery *InternetMonitorInternetMeasurementsLogDelivery `pulumi:"internetMeasurementsLogDelivery"` + // The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network or ASN, such as an internet service provider (ISP), that clients access the resources through. This limit helps control billing costs. + MaxCityNetworksToMonitor *int `pulumi:"maxCityNetworksToMonitor"` + // The name of the monitor. + // + // The following arguments are optional: + MonitorName string `pulumi:"monitorName"` + // The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). + Resources []string `pulumi:"resources"` + // The status for a monitor. The accepted values for Status with the UpdateMonitor API call are the following: `ACTIVE` and `INACTIVE`. + Status *string `pulumi:"status"` + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // The percentage of the internet-facing traffic for your application that you want to monitor with this monitor. + TrafficPercentageToMonitor *int `pulumi:"trafficPercentageToMonitor"` +} + +// The set of arguments for constructing a InternetMonitor resource. +type InternetMonitorArgs struct { + // Health event thresholds. A health event threshold percentage, for performance and availability, determines when Internet Monitor creates a health event when there's an internet issue that affects your application end users. See Health Events Config below. + HealthEventsConfig InternetMonitorHealthEventsConfigPtrInput + // Publish internet measurements for Internet Monitor to an Amazon S3 bucket in addition to CloudWatch Logs. + InternetMeasurementsLogDelivery InternetMonitorInternetMeasurementsLogDeliveryPtrInput + // The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network or ASN, such as an internet service provider (ISP), that clients access the resources through. This limit helps control billing costs. + MaxCityNetworksToMonitor pulumi.IntPtrInput + // The name of the monitor. + // + // The following arguments are optional: + MonitorName pulumi.StringInput + // The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). + Resources pulumi.StringArrayInput + // The status for a monitor. The accepted values for Status with the UpdateMonitor API call are the following: `ACTIVE` and `INACTIVE`. + Status pulumi.StringPtrInput + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // The percentage of the internet-facing traffic for your application that you want to monitor with this monitor. + TrafficPercentageToMonitor pulumi.IntPtrInput +} + +func (InternetMonitorArgs) ElementType() reflect.Type { + return reflect.TypeOf((*internetMonitorArgs)(nil)).Elem() +} + +type InternetMonitorInput interface { + pulumi.Input + + ToInternetMonitorOutput() InternetMonitorOutput + ToInternetMonitorOutputWithContext(ctx context.Context) InternetMonitorOutput +} + +func (*InternetMonitor) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitor)(nil)).Elem() +} + +func (i *InternetMonitor) ToInternetMonitorOutput() InternetMonitorOutput { + return i.ToInternetMonitorOutputWithContext(context.Background()) +} + +func (i *InternetMonitor) ToInternetMonitorOutputWithContext(ctx context.Context) InternetMonitorOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorOutput) +} + +// InternetMonitorArrayInput is an input type that accepts InternetMonitorArray and InternetMonitorArrayOutput values. +// You can construct a concrete instance of `InternetMonitorArrayInput` via: +// +// InternetMonitorArray{ InternetMonitorArgs{...} } +type InternetMonitorArrayInput interface { + pulumi.Input + + ToInternetMonitorArrayOutput() InternetMonitorArrayOutput + ToInternetMonitorArrayOutputWithContext(context.Context) InternetMonitorArrayOutput +} + +type InternetMonitorArray []InternetMonitorInput + +func (InternetMonitorArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InternetMonitor)(nil)).Elem() +} + +func (i InternetMonitorArray) ToInternetMonitorArrayOutput() InternetMonitorArrayOutput { + return i.ToInternetMonitorArrayOutputWithContext(context.Background()) +} + +func (i InternetMonitorArray) ToInternetMonitorArrayOutputWithContext(ctx context.Context) InternetMonitorArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorArrayOutput) +} + +// InternetMonitorMapInput is an input type that accepts InternetMonitorMap and InternetMonitorMapOutput values. +// You can construct a concrete instance of `InternetMonitorMapInput` via: +// +// InternetMonitorMap{ "key": InternetMonitorArgs{...} } +type InternetMonitorMapInput interface { + pulumi.Input + + ToInternetMonitorMapOutput() InternetMonitorMapOutput + ToInternetMonitorMapOutputWithContext(context.Context) InternetMonitorMapOutput +} + +type InternetMonitorMap map[string]InternetMonitorInput + +func (InternetMonitorMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InternetMonitor)(nil)).Elem() +} + +func (i InternetMonitorMap) ToInternetMonitorMapOutput() InternetMonitorMapOutput { + return i.ToInternetMonitorMapOutputWithContext(context.Background()) +} + +func (i InternetMonitorMap) ToInternetMonitorMapOutputWithContext(ctx context.Context) InternetMonitorMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorMapOutput) +} + +type InternetMonitorOutput struct{ *pulumi.OutputState } + +func (InternetMonitorOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitor)(nil)).Elem() +} + +func (o InternetMonitorOutput) ToInternetMonitorOutput() InternetMonitorOutput { + return o +} + +func (o InternetMonitorOutput) ToInternetMonitorOutputWithContext(ctx context.Context) InternetMonitorOutput { + return o +} + +// ARN of the Monitor. +func (o InternetMonitorOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Health event thresholds. A health event threshold percentage, for performance and availability, determines when Internet Monitor creates a health event when there's an internet issue that affects your application end users. See Health Events Config below. +func (o InternetMonitorOutput) HealthEventsConfig() InternetMonitorHealthEventsConfigPtrOutput { + return o.ApplyT(func(v *InternetMonitor) InternetMonitorHealthEventsConfigPtrOutput { return v.HealthEventsConfig }).(InternetMonitorHealthEventsConfigPtrOutput) +} + +// Publish internet measurements for Internet Monitor to an Amazon S3 bucket in addition to CloudWatch Logs. +func (o InternetMonitorOutput) InternetMeasurementsLogDelivery() InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return o.ApplyT(func(v *InternetMonitor) InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return v.InternetMeasurementsLogDelivery + }).(InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) +} + +// The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network or ASN, such as an internet service provider (ISP), that clients access the resources through. This limit helps control billing costs. +func (o InternetMonitorOutput) MaxCityNetworksToMonitor() pulumi.IntPtrOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.IntPtrOutput { return v.MaxCityNetworksToMonitor }).(pulumi.IntPtrOutput) +} + +// The name of the monitor. +// +// The following arguments are optional: +func (o InternetMonitorOutput) MonitorName() pulumi.StringOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.StringOutput { return v.MonitorName }).(pulumi.StringOutput) +} + +// The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). +func (o InternetMonitorOutput) Resources() pulumi.StringArrayOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.StringArrayOutput { return v.Resources }).(pulumi.StringArrayOutput) +} + +// The status for a monitor. The accepted values for Status with the UpdateMonitor API call are the following: `ACTIVE` and `INACTIVE`. +func (o InternetMonitorOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput) +} + +// Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o InternetMonitorOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o InternetMonitorOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The percentage of the internet-facing traffic for your application that you want to monitor with this monitor. +func (o InternetMonitorOutput) TrafficPercentageToMonitor() pulumi.IntPtrOutput { + return o.ApplyT(func(v *InternetMonitor) pulumi.IntPtrOutput { return v.TrafficPercentageToMonitor }).(pulumi.IntPtrOutput) +} + +type InternetMonitorArrayOutput struct{ *pulumi.OutputState } + +func (InternetMonitorArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InternetMonitor)(nil)).Elem() +} + +func (o InternetMonitorArrayOutput) ToInternetMonitorArrayOutput() InternetMonitorArrayOutput { + return o +} + +func (o InternetMonitorArrayOutput) ToInternetMonitorArrayOutputWithContext(ctx context.Context) InternetMonitorArrayOutput { + return o +} + +func (o InternetMonitorArrayOutput) Index(i pulumi.IntInput) InternetMonitorOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *InternetMonitor { + return vs[0].([]*InternetMonitor)[vs[1].(int)] + }).(InternetMonitorOutput) +} + +type InternetMonitorMapOutput struct{ *pulumi.OutputState } + +func (InternetMonitorMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InternetMonitor)(nil)).Elem() +} + +func (o InternetMonitorMapOutput) ToInternetMonitorMapOutput() InternetMonitorMapOutput { + return o +} + +func (o InternetMonitorMapOutput) ToInternetMonitorMapOutputWithContext(ctx context.Context) InternetMonitorMapOutput { + return o +} + +func (o InternetMonitorMapOutput) MapIndex(k pulumi.StringInput) InternetMonitorOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *InternetMonitor { + return vs[0].(map[string]*InternetMonitor)[vs[1].(string)] + }).(InternetMonitorOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorInput)(nil)).Elem(), &InternetMonitor{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorArrayInput)(nil)).Elem(), InternetMonitorArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorMapInput)(nil)).Elem(), InternetMonitorMap{}) + pulumi.RegisterOutputType(InternetMonitorOutput{}) + pulumi.RegisterOutputType(InternetMonitorArrayOutput{}) + pulumi.RegisterOutputType(InternetMonitorMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logAccountPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logAccountPolicy.go new file mode 100644 index 000000000..a31b5c9df --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logAccountPolicy.go @@ -0,0 +1,396 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Log Account Policy resource. +// +// ## Example Usage +// +// ### Account Data Protection Policy +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Name": "DataProtection", +// "Version": "2021-06-01", +// "Statement": []interface{}{ +// map[string]interface{}{ +// "Sid": "Audit", +// "DataIdentifier": []string{ +// "arn:aws:dataprotection::aws:data-identifier/EmailAddress", +// }, +// "Operation": map[string]interface{}{ +// "Audit": map[string]interface{}{ +// "FindingsDestination": map[string]interface{}{}, +// }, +// }, +// }, +// map[string]interface{}{ +// "Sid": "Redact", +// "DataIdentifier": []string{ +// "arn:aws:dataprotection::aws:data-identifier/EmailAddress", +// }, +// "Operation": map[string]interface{}{ +// "Deidentify": map[string]interface{}{ +// "MaskConfig": map[string]interface{}{}, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = cloudwatch.NewLogAccountPolicy(ctx, "data_protection", &cloudwatch.LogAccountPolicyArgs{ +// PolicyName: pulumi.String("data-protection"), +// PolicyType: pulumi.String("DATA_PROTECTION_POLICY"), +// PolicyDocument: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Subscription Filter Policy +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "DestinationArn": test.Arn, +// "FilterPattern": "test", +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = cloudwatch.NewLogAccountPolicy(ctx, "subscription_filter", &cloudwatch.LogAccountPolicyArgs{ +// PolicyName: pulumi.String("subscription-filter"), +// PolicyType: pulumi.String("SUBSCRIPTION_FILTER_POLICY"), +// PolicyDocument: pulumi.String(json0), +// SelectionCriteria: pulumi.String("LogGroupName NOT IN [\"excluded_log_group_name\"]"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import this resource using the `policy_name` and `policy_type` separated by `:`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logAccountPolicy:LogAccountPolicy example "my-account-policy:SUBSCRIPTION_FILTER_POLICY" +// ``` +type LogAccountPolicy struct { + pulumi.CustomResourceState + + // Text of the account policy. Refer to the [AWS docs](https://docs.aws.amazon.com/cli/latest/reference/logs/put-account-policy.html) for more information. + PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"` + // Name of the account policy. + PolicyName pulumi.StringOutput `pulumi:"policyName"` + // Type of account policy. Either `DATA_PROTECTION_POLICY` or `SUBSCRIPTION_FILTER_POLICY`. You can have one account policy per type in an account. + PolicyType pulumi.StringOutput `pulumi:"policyType"` + // Currently defaults to and only accepts the value: `ALL`. + Scope pulumi.StringPtrOutput `pulumi:"scope"` + // Criteria for applying a subscription filter policy to a selection of log groups. The only allowable criteria selector is `LogGroupName NOT IN []`. + SelectionCriteria pulumi.StringPtrOutput `pulumi:"selectionCriteria"` +} + +// NewLogAccountPolicy registers a new resource with the given unique name, arguments, and options. +func NewLogAccountPolicy(ctx *pulumi.Context, + name string, args *LogAccountPolicyArgs, opts ...pulumi.ResourceOption) (*LogAccountPolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyDocument == nil { + return nil, errors.New("invalid value for required argument 'PolicyDocument'") + } + if args.PolicyName == nil { + return nil, errors.New("invalid value for required argument 'PolicyName'") + } + if args.PolicyType == nil { + return nil, errors.New("invalid value for required argument 'PolicyType'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogAccountPolicy + err := ctx.RegisterResource("aws:cloudwatch/logAccountPolicy:LogAccountPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogAccountPolicy gets an existing LogAccountPolicy 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 GetLogAccountPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogAccountPolicyState, opts ...pulumi.ResourceOption) (*LogAccountPolicy, error) { + var resource LogAccountPolicy + err := ctx.ReadResource("aws:cloudwatch/logAccountPolicy:LogAccountPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogAccountPolicy resources. +type logAccountPolicyState struct { + // Text of the account policy. Refer to the [AWS docs](https://docs.aws.amazon.com/cli/latest/reference/logs/put-account-policy.html) for more information. + PolicyDocument *string `pulumi:"policyDocument"` + // Name of the account policy. + PolicyName *string `pulumi:"policyName"` + // Type of account policy. Either `DATA_PROTECTION_POLICY` or `SUBSCRIPTION_FILTER_POLICY`. You can have one account policy per type in an account. + PolicyType *string `pulumi:"policyType"` + // Currently defaults to and only accepts the value: `ALL`. + Scope *string `pulumi:"scope"` + // Criteria for applying a subscription filter policy to a selection of log groups. The only allowable criteria selector is `LogGroupName NOT IN []`. + SelectionCriteria *string `pulumi:"selectionCriteria"` +} + +type LogAccountPolicyState struct { + // Text of the account policy. Refer to the [AWS docs](https://docs.aws.amazon.com/cli/latest/reference/logs/put-account-policy.html) for more information. + PolicyDocument pulumi.StringPtrInput + // Name of the account policy. + PolicyName pulumi.StringPtrInput + // Type of account policy. Either `DATA_PROTECTION_POLICY` or `SUBSCRIPTION_FILTER_POLICY`. You can have one account policy per type in an account. + PolicyType pulumi.StringPtrInput + // Currently defaults to and only accepts the value: `ALL`. + Scope pulumi.StringPtrInput + // Criteria for applying a subscription filter policy to a selection of log groups. The only allowable criteria selector is `LogGroupName NOT IN []`. + SelectionCriteria pulumi.StringPtrInput +} + +func (LogAccountPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*logAccountPolicyState)(nil)).Elem() +} + +type logAccountPolicyArgs struct { + // Text of the account policy. Refer to the [AWS docs](https://docs.aws.amazon.com/cli/latest/reference/logs/put-account-policy.html) for more information. + PolicyDocument string `pulumi:"policyDocument"` + // Name of the account policy. + PolicyName string `pulumi:"policyName"` + // Type of account policy. Either `DATA_PROTECTION_POLICY` or `SUBSCRIPTION_FILTER_POLICY`. You can have one account policy per type in an account. + PolicyType string `pulumi:"policyType"` + // Currently defaults to and only accepts the value: `ALL`. + Scope *string `pulumi:"scope"` + // Criteria for applying a subscription filter policy to a selection of log groups. The only allowable criteria selector is `LogGroupName NOT IN []`. + SelectionCriteria *string `pulumi:"selectionCriteria"` +} + +// The set of arguments for constructing a LogAccountPolicy resource. +type LogAccountPolicyArgs struct { + // Text of the account policy. Refer to the [AWS docs](https://docs.aws.amazon.com/cli/latest/reference/logs/put-account-policy.html) for more information. + PolicyDocument pulumi.StringInput + // Name of the account policy. + PolicyName pulumi.StringInput + // Type of account policy. Either `DATA_PROTECTION_POLICY` or `SUBSCRIPTION_FILTER_POLICY`. You can have one account policy per type in an account. + PolicyType pulumi.StringInput + // Currently defaults to and only accepts the value: `ALL`. + Scope pulumi.StringPtrInput + // Criteria for applying a subscription filter policy to a selection of log groups. The only allowable criteria selector is `LogGroupName NOT IN []`. + SelectionCriteria pulumi.StringPtrInput +} + +func (LogAccountPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logAccountPolicyArgs)(nil)).Elem() +} + +type LogAccountPolicyInput interface { + pulumi.Input + + ToLogAccountPolicyOutput() LogAccountPolicyOutput + ToLogAccountPolicyOutputWithContext(ctx context.Context) LogAccountPolicyOutput +} + +func (*LogAccountPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**LogAccountPolicy)(nil)).Elem() +} + +func (i *LogAccountPolicy) ToLogAccountPolicyOutput() LogAccountPolicyOutput { + return i.ToLogAccountPolicyOutputWithContext(context.Background()) +} + +func (i *LogAccountPolicy) ToLogAccountPolicyOutputWithContext(ctx context.Context) LogAccountPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogAccountPolicyOutput) +} + +// LogAccountPolicyArrayInput is an input type that accepts LogAccountPolicyArray and LogAccountPolicyArrayOutput values. +// You can construct a concrete instance of `LogAccountPolicyArrayInput` via: +// +// LogAccountPolicyArray{ LogAccountPolicyArgs{...} } +type LogAccountPolicyArrayInput interface { + pulumi.Input + + ToLogAccountPolicyArrayOutput() LogAccountPolicyArrayOutput + ToLogAccountPolicyArrayOutputWithContext(context.Context) LogAccountPolicyArrayOutput +} + +type LogAccountPolicyArray []LogAccountPolicyInput + +func (LogAccountPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogAccountPolicy)(nil)).Elem() +} + +func (i LogAccountPolicyArray) ToLogAccountPolicyArrayOutput() LogAccountPolicyArrayOutput { + return i.ToLogAccountPolicyArrayOutputWithContext(context.Background()) +} + +func (i LogAccountPolicyArray) ToLogAccountPolicyArrayOutputWithContext(ctx context.Context) LogAccountPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogAccountPolicyArrayOutput) +} + +// LogAccountPolicyMapInput is an input type that accepts LogAccountPolicyMap and LogAccountPolicyMapOutput values. +// You can construct a concrete instance of `LogAccountPolicyMapInput` via: +// +// LogAccountPolicyMap{ "key": LogAccountPolicyArgs{...} } +type LogAccountPolicyMapInput interface { + pulumi.Input + + ToLogAccountPolicyMapOutput() LogAccountPolicyMapOutput + ToLogAccountPolicyMapOutputWithContext(context.Context) LogAccountPolicyMapOutput +} + +type LogAccountPolicyMap map[string]LogAccountPolicyInput + +func (LogAccountPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogAccountPolicy)(nil)).Elem() +} + +func (i LogAccountPolicyMap) ToLogAccountPolicyMapOutput() LogAccountPolicyMapOutput { + return i.ToLogAccountPolicyMapOutputWithContext(context.Background()) +} + +func (i LogAccountPolicyMap) ToLogAccountPolicyMapOutputWithContext(ctx context.Context) LogAccountPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogAccountPolicyMapOutput) +} + +type LogAccountPolicyOutput struct{ *pulumi.OutputState } + +func (LogAccountPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogAccountPolicy)(nil)).Elem() +} + +func (o LogAccountPolicyOutput) ToLogAccountPolicyOutput() LogAccountPolicyOutput { + return o +} + +func (o LogAccountPolicyOutput) ToLogAccountPolicyOutputWithContext(ctx context.Context) LogAccountPolicyOutput { + return o +} + +// Text of the account policy. Refer to the [AWS docs](https://docs.aws.amazon.com/cli/latest/reference/logs/put-account-policy.html) for more information. +func (o LogAccountPolicyOutput) PolicyDocument() pulumi.StringOutput { + return o.ApplyT(func(v *LogAccountPolicy) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput) +} + +// Name of the account policy. +func (o LogAccountPolicyOutput) PolicyName() pulumi.StringOutput { + return o.ApplyT(func(v *LogAccountPolicy) pulumi.StringOutput { return v.PolicyName }).(pulumi.StringOutput) +} + +// Type of account policy. Either `DATA_PROTECTION_POLICY` or `SUBSCRIPTION_FILTER_POLICY`. You can have one account policy per type in an account. +func (o LogAccountPolicyOutput) PolicyType() pulumi.StringOutput { + return o.ApplyT(func(v *LogAccountPolicy) pulumi.StringOutput { return v.PolicyType }).(pulumi.StringOutput) +} + +// Currently defaults to and only accepts the value: `ALL`. +func (o LogAccountPolicyOutput) Scope() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogAccountPolicy) pulumi.StringPtrOutput { return v.Scope }).(pulumi.StringPtrOutput) +} + +// Criteria for applying a subscription filter policy to a selection of log groups. The only allowable criteria selector is `LogGroupName NOT IN []`. +func (o LogAccountPolicyOutput) SelectionCriteria() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogAccountPolicy) pulumi.StringPtrOutput { return v.SelectionCriteria }).(pulumi.StringPtrOutput) +} + +type LogAccountPolicyArrayOutput struct{ *pulumi.OutputState } + +func (LogAccountPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogAccountPolicy)(nil)).Elem() +} + +func (o LogAccountPolicyArrayOutput) ToLogAccountPolicyArrayOutput() LogAccountPolicyArrayOutput { + return o +} + +func (o LogAccountPolicyArrayOutput) ToLogAccountPolicyArrayOutputWithContext(ctx context.Context) LogAccountPolicyArrayOutput { + return o +} + +func (o LogAccountPolicyArrayOutput) Index(i pulumi.IntInput) LogAccountPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogAccountPolicy { + return vs[0].([]*LogAccountPolicy)[vs[1].(int)] + }).(LogAccountPolicyOutput) +} + +type LogAccountPolicyMapOutput struct{ *pulumi.OutputState } + +func (LogAccountPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogAccountPolicy)(nil)).Elem() +} + +func (o LogAccountPolicyMapOutput) ToLogAccountPolicyMapOutput() LogAccountPolicyMapOutput { + return o +} + +func (o LogAccountPolicyMapOutput) ToLogAccountPolicyMapOutputWithContext(ctx context.Context) LogAccountPolicyMapOutput { + return o +} + +func (o LogAccountPolicyMapOutput) MapIndex(k pulumi.StringInput) LogAccountPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogAccountPolicy { + return vs[0].(map[string]*LogAccountPolicy)[vs[1].(string)] + }).(LogAccountPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogAccountPolicyInput)(nil)).Elem(), &LogAccountPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogAccountPolicyArrayInput)(nil)).Elem(), LogAccountPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogAccountPolicyMapInput)(nil)).Elem(), LogAccountPolicyMap{}) + pulumi.RegisterOutputType(LogAccountPolicyOutput{}) + pulumi.RegisterOutputType(LogAccountPolicyArrayOutput{}) + pulumi.RegisterOutputType(LogAccountPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDataProtectionPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDataProtectionPolicy.go new file mode 100644 index 000000000..be497ad0b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDataProtectionPolicy.go @@ -0,0 +1,328 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Log Data Protection Policy resource. +// +// Read more about protecting sensitive user data in the [User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data.html). +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := cloudwatch.NewLogGroup(ctx, "example", &cloudwatch.LogGroupArgs{ +// Name: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// exampleBucketV2, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewLogDataProtectionPolicy(ctx, "example", &cloudwatch.LogDataProtectionPolicyArgs{ +// LogGroupName: example.Name, +// PolicyDocument: exampleBucketV2.Bucket.ApplyT(func(bucket string) (pulumi.String, error) { +// var _zero pulumi.String +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Name": "Example", +// "Version": "2021-06-01", +// "Statement": []interface{}{ +// map[string]interface{}{ +// "Sid": "Audit", +// "DataIdentifier": []string{ +// "arn:aws:dataprotection::aws:data-identifier/EmailAddress", +// }, +// "Operation": map[string]interface{}{ +// "Audit": map[string]interface{}{ +// "FindingsDestination": map[string]interface{}{ +// "S3": map[string]interface{}{ +// "Bucket": bucket, +// }, +// }, +// }, +// }, +// }, +// map[string]interface{}{ +// "Sid": "Redact", +// "DataIdentifier": []string{ +// "arn:aws:dataprotection::aws:data-identifier/EmailAddress", +// }, +// "Operation": map[string]interface{}{ +// "Deidentify": map[string]interface{}{ +// "MaskConfig": map[string]interface{}{}, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return _zero, err +// } +// json0 := string(tmpJSON0) +// return pulumi.String(json0), nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import this resource using the `log_group_name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy example my-log-group +// ``` +type LogDataProtectionPolicy struct { + pulumi.CustomResourceState + + // The name of the log group under which the log stream is to be created. + LogGroupName pulumi.StringOutput `pulumi:"logGroupName"` + // Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax). + PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"` +} + +// NewLogDataProtectionPolicy registers a new resource with the given unique name, arguments, and options. +func NewLogDataProtectionPolicy(ctx *pulumi.Context, + name string, args *LogDataProtectionPolicyArgs, opts ...pulumi.ResourceOption) (*LogDataProtectionPolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.LogGroupName == nil { + return nil, errors.New("invalid value for required argument 'LogGroupName'") + } + if args.PolicyDocument == nil { + return nil, errors.New("invalid value for required argument 'PolicyDocument'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogDataProtectionPolicy + err := ctx.RegisterResource("aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogDataProtectionPolicy gets an existing LogDataProtectionPolicy 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 GetLogDataProtectionPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogDataProtectionPolicyState, opts ...pulumi.ResourceOption) (*LogDataProtectionPolicy, error) { + var resource LogDataProtectionPolicy + err := ctx.ReadResource("aws:cloudwatch/logDataProtectionPolicy:LogDataProtectionPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogDataProtectionPolicy resources. +type logDataProtectionPolicyState struct { + // The name of the log group under which the log stream is to be created. + LogGroupName *string `pulumi:"logGroupName"` + // Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax). + PolicyDocument *string `pulumi:"policyDocument"` +} + +type LogDataProtectionPolicyState struct { + // The name of the log group under which the log stream is to be created. + LogGroupName pulumi.StringPtrInput + // Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax). + PolicyDocument pulumi.StringPtrInput +} + +func (LogDataProtectionPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*logDataProtectionPolicyState)(nil)).Elem() +} + +type logDataProtectionPolicyArgs struct { + // The name of the log group under which the log stream is to be created. + LogGroupName string `pulumi:"logGroupName"` + // Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax). + PolicyDocument string `pulumi:"policyDocument"` +} + +// The set of arguments for constructing a LogDataProtectionPolicy resource. +type LogDataProtectionPolicyArgs struct { + // The name of the log group under which the log stream is to be created. + LogGroupName pulumi.StringInput + // Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax). + PolicyDocument pulumi.StringInput +} + +func (LogDataProtectionPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logDataProtectionPolicyArgs)(nil)).Elem() +} + +type LogDataProtectionPolicyInput interface { + pulumi.Input + + ToLogDataProtectionPolicyOutput() LogDataProtectionPolicyOutput + ToLogDataProtectionPolicyOutputWithContext(ctx context.Context) LogDataProtectionPolicyOutput +} + +func (*LogDataProtectionPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**LogDataProtectionPolicy)(nil)).Elem() +} + +func (i *LogDataProtectionPolicy) ToLogDataProtectionPolicyOutput() LogDataProtectionPolicyOutput { + return i.ToLogDataProtectionPolicyOutputWithContext(context.Background()) +} + +func (i *LogDataProtectionPolicy) ToLogDataProtectionPolicyOutputWithContext(ctx context.Context) LogDataProtectionPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDataProtectionPolicyOutput) +} + +// LogDataProtectionPolicyArrayInput is an input type that accepts LogDataProtectionPolicyArray and LogDataProtectionPolicyArrayOutput values. +// You can construct a concrete instance of `LogDataProtectionPolicyArrayInput` via: +// +// LogDataProtectionPolicyArray{ LogDataProtectionPolicyArgs{...} } +type LogDataProtectionPolicyArrayInput interface { + pulumi.Input + + ToLogDataProtectionPolicyArrayOutput() LogDataProtectionPolicyArrayOutput + ToLogDataProtectionPolicyArrayOutputWithContext(context.Context) LogDataProtectionPolicyArrayOutput +} + +type LogDataProtectionPolicyArray []LogDataProtectionPolicyInput + +func (LogDataProtectionPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogDataProtectionPolicy)(nil)).Elem() +} + +func (i LogDataProtectionPolicyArray) ToLogDataProtectionPolicyArrayOutput() LogDataProtectionPolicyArrayOutput { + return i.ToLogDataProtectionPolicyArrayOutputWithContext(context.Background()) +} + +func (i LogDataProtectionPolicyArray) ToLogDataProtectionPolicyArrayOutputWithContext(ctx context.Context) LogDataProtectionPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDataProtectionPolicyArrayOutput) +} + +// LogDataProtectionPolicyMapInput is an input type that accepts LogDataProtectionPolicyMap and LogDataProtectionPolicyMapOutput values. +// You can construct a concrete instance of `LogDataProtectionPolicyMapInput` via: +// +// LogDataProtectionPolicyMap{ "key": LogDataProtectionPolicyArgs{...} } +type LogDataProtectionPolicyMapInput interface { + pulumi.Input + + ToLogDataProtectionPolicyMapOutput() LogDataProtectionPolicyMapOutput + ToLogDataProtectionPolicyMapOutputWithContext(context.Context) LogDataProtectionPolicyMapOutput +} + +type LogDataProtectionPolicyMap map[string]LogDataProtectionPolicyInput + +func (LogDataProtectionPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogDataProtectionPolicy)(nil)).Elem() +} + +func (i LogDataProtectionPolicyMap) ToLogDataProtectionPolicyMapOutput() LogDataProtectionPolicyMapOutput { + return i.ToLogDataProtectionPolicyMapOutputWithContext(context.Background()) +} + +func (i LogDataProtectionPolicyMap) ToLogDataProtectionPolicyMapOutputWithContext(ctx context.Context) LogDataProtectionPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDataProtectionPolicyMapOutput) +} + +type LogDataProtectionPolicyOutput struct{ *pulumi.OutputState } + +func (LogDataProtectionPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogDataProtectionPolicy)(nil)).Elem() +} + +func (o LogDataProtectionPolicyOutput) ToLogDataProtectionPolicyOutput() LogDataProtectionPolicyOutput { + return o +} + +func (o LogDataProtectionPolicyOutput) ToLogDataProtectionPolicyOutputWithContext(ctx context.Context) LogDataProtectionPolicyOutput { + return o +} + +// The name of the log group under which the log stream is to be created. +func (o LogDataProtectionPolicyOutput) LogGroupName() pulumi.StringOutput { + return o.ApplyT(func(v *LogDataProtectionPolicy) pulumi.StringOutput { return v.LogGroupName }).(pulumi.StringOutput) +} + +// Specifies the data protection policy in JSON. Read more at [Data protection policy syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/mask-sensitive-log-data-start.html#mask-sensitive-log-data-policysyntax). +func (o LogDataProtectionPolicyOutput) PolicyDocument() pulumi.StringOutput { + return o.ApplyT(func(v *LogDataProtectionPolicy) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput) +} + +type LogDataProtectionPolicyArrayOutput struct{ *pulumi.OutputState } + +func (LogDataProtectionPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogDataProtectionPolicy)(nil)).Elem() +} + +func (o LogDataProtectionPolicyArrayOutput) ToLogDataProtectionPolicyArrayOutput() LogDataProtectionPolicyArrayOutput { + return o +} + +func (o LogDataProtectionPolicyArrayOutput) ToLogDataProtectionPolicyArrayOutputWithContext(ctx context.Context) LogDataProtectionPolicyArrayOutput { + return o +} + +func (o LogDataProtectionPolicyArrayOutput) Index(i pulumi.IntInput) LogDataProtectionPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogDataProtectionPolicy { + return vs[0].([]*LogDataProtectionPolicy)[vs[1].(int)] + }).(LogDataProtectionPolicyOutput) +} + +type LogDataProtectionPolicyMapOutput struct{ *pulumi.OutputState } + +func (LogDataProtectionPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogDataProtectionPolicy)(nil)).Elem() +} + +func (o LogDataProtectionPolicyMapOutput) ToLogDataProtectionPolicyMapOutput() LogDataProtectionPolicyMapOutput { + return o +} + +func (o LogDataProtectionPolicyMapOutput) ToLogDataProtectionPolicyMapOutputWithContext(ctx context.Context) LogDataProtectionPolicyMapOutput { + return o +} + +func (o LogDataProtectionPolicyMapOutput) MapIndex(k pulumi.StringInput) LogDataProtectionPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogDataProtectionPolicy { + return vs[0].(map[string]*LogDataProtectionPolicy)[vs[1].(string)] + }).(LogDataProtectionPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogDataProtectionPolicyInput)(nil)).Elem(), &LogDataProtectionPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogDataProtectionPolicyArrayInput)(nil)).Elem(), LogDataProtectionPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogDataProtectionPolicyMapInput)(nil)).Elem(), LogDataProtectionPolicyMap{}) + pulumi.RegisterOutputType(LogDataProtectionPolicyOutput{}) + pulumi.RegisterOutputType(LogDataProtectionPolicyArrayOutput{}) + pulumi.RegisterOutputType(LogDataProtectionPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestination.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestination.go new file mode 100644 index 000000000..aa6f94495 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestination.go @@ -0,0 +1,333 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Logs destination resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewLogDestination(ctx, "test_destination", &cloudwatch.LogDestinationArgs{ +// Name: pulumi.String("test_destination"), +// RoleArn: pulumi.Any(iamForCloudwatch.Arn), +// TargetArn: pulumi.Any(kinesisForCloudwatch.Arn), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch Logs destinations using the `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logDestination:LogDestination test_destination test_destination +// ``` +type LogDestination struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) specifying the log destination. + Arn pulumi.StringOutput `pulumi:"arn"` + // A name for the log destination. + Name pulumi.StringOutput `pulumi:"name"` + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to put data into the target. + RoleArn pulumi.StringOutput `pulumi:"roleArn"` + // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The ARN of the target Amazon Kinesis stream resource for the destination. + TargetArn pulumi.StringOutput `pulumi:"targetArn"` +} + +// NewLogDestination registers a new resource with the given unique name, arguments, and options. +func NewLogDestination(ctx *pulumi.Context, + name string, args *LogDestinationArgs, opts ...pulumi.ResourceOption) (*LogDestination, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.RoleArn == nil { + return nil, errors.New("invalid value for required argument 'RoleArn'") + } + if args.TargetArn == nil { + return nil, errors.New("invalid value for required argument 'TargetArn'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogDestination + err := ctx.RegisterResource("aws:cloudwatch/logDestination:LogDestination", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogDestination gets an existing LogDestination 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 GetLogDestination(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogDestinationState, opts ...pulumi.ResourceOption) (*LogDestination, error) { + var resource LogDestination + err := ctx.ReadResource("aws:cloudwatch/logDestination:LogDestination", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogDestination resources. +type logDestinationState struct { + // The Amazon Resource Name (ARN) specifying the log destination. + Arn *string `pulumi:"arn"` + // A name for the log destination. + Name *string `pulumi:"name"` + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to put data into the target. + RoleArn *string `pulumi:"roleArn"` + // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The ARN of the target Amazon Kinesis stream resource for the destination. + TargetArn *string `pulumi:"targetArn"` +} + +type LogDestinationState struct { + // The Amazon Resource Name (ARN) specifying the log destination. + Arn pulumi.StringPtrInput + // A name for the log destination. + Name pulumi.StringPtrInput + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to put data into the target. + RoleArn pulumi.StringPtrInput + // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The ARN of the target Amazon Kinesis stream resource for the destination. + TargetArn pulumi.StringPtrInput +} + +func (LogDestinationState) ElementType() reflect.Type { + return reflect.TypeOf((*logDestinationState)(nil)).Elem() +} + +type logDestinationArgs struct { + // A name for the log destination. + Name *string `pulumi:"name"` + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to put data into the target. + RoleArn string `pulumi:"roleArn"` + // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // The ARN of the target Amazon Kinesis stream resource for the destination. + TargetArn string `pulumi:"targetArn"` +} + +// The set of arguments for constructing a LogDestination resource. +type LogDestinationArgs struct { + // A name for the log destination. + Name pulumi.StringPtrInput + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to put data into the target. + RoleArn pulumi.StringInput + // A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // The ARN of the target Amazon Kinesis stream resource for the destination. + TargetArn pulumi.StringInput +} + +func (LogDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logDestinationArgs)(nil)).Elem() +} + +type LogDestinationInput interface { + pulumi.Input + + ToLogDestinationOutput() LogDestinationOutput + ToLogDestinationOutputWithContext(ctx context.Context) LogDestinationOutput +} + +func (*LogDestination) ElementType() reflect.Type { + return reflect.TypeOf((**LogDestination)(nil)).Elem() +} + +func (i *LogDestination) ToLogDestinationOutput() LogDestinationOutput { + return i.ToLogDestinationOutputWithContext(context.Background()) +} + +func (i *LogDestination) ToLogDestinationOutputWithContext(ctx context.Context) LogDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDestinationOutput) +} + +// LogDestinationArrayInput is an input type that accepts LogDestinationArray and LogDestinationArrayOutput values. +// You can construct a concrete instance of `LogDestinationArrayInput` via: +// +// LogDestinationArray{ LogDestinationArgs{...} } +type LogDestinationArrayInput interface { + pulumi.Input + + ToLogDestinationArrayOutput() LogDestinationArrayOutput + ToLogDestinationArrayOutputWithContext(context.Context) LogDestinationArrayOutput +} + +type LogDestinationArray []LogDestinationInput + +func (LogDestinationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogDestination)(nil)).Elem() +} + +func (i LogDestinationArray) ToLogDestinationArrayOutput() LogDestinationArrayOutput { + return i.ToLogDestinationArrayOutputWithContext(context.Background()) +} + +func (i LogDestinationArray) ToLogDestinationArrayOutputWithContext(ctx context.Context) LogDestinationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDestinationArrayOutput) +} + +// LogDestinationMapInput is an input type that accepts LogDestinationMap and LogDestinationMapOutput values. +// You can construct a concrete instance of `LogDestinationMapInput` via: +// +// LogDestinationMap{ "key": LogDestinationArgs{...} } +type LogDestinationMapInput interface { + pulumi.Input + + ToLogDestinationMapOutput() LogDestinationMapOutput + ToLogDestinationMapOutputWithContext(context.Context) LogDestinationMapOutput +} + +type LogDestinationMap map[string]LogDestinationInput + +func (LogDestinationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogDestination)(nil)).Elem() +} + +func (i LogDestinationMap) ToLogDestinationMapOutput() LogDestinationMapOutput { + return i.ToLogDestinationMapOutputWithContext(context.Background()) +} + +func (i LogDestinationMap) ToLogDestinationMapOutputWithContext(ctx context.Context) LogDestinationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDestinationMapOutput) +} + +type LogDestinationOutput struct{ *pulumi.OutputState } + +func (LogDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogDestination)(nil)).Elem() +} + +func (o LogDestinationOutput) ToLogDestinationOutput() LogDestinationOutput { + return o +} + +func (o LogDestinationOutput) ToLogDestinationOutputWithContext(ctx context.Context) LogDestinationOutput { + return o +} + +// The Amazon Resource Name (ARN) specifying the log destination. +func (o LogDestinationOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *LogDestination) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// A name for the log destination. +func (o LogDestinationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *LogDestination) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to put data into the target. +func (o LogDestinationOutput) RoleArn() pulumi.StringOutput { + return o.ApplyT(func(v *LogDestination) pulumi.StringOutput { return v.RoleArn }).(pulumi.StringOutput) +} + +// A map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o LogDestinationOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *LogDestination) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o LogDestinationOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *LogDestination) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The ARN of the target Amazon Kinesis stream resource for the destination. +func (o LogDestinationOutput) TargetArn() pulumi.StringOutput { + return o.ApplyT(func(v *LogDestination) pulumi.StringOutput { return v.TargetArn }).(pulumi.StringOutput) +} + +type LogDestinationArrayOutput struct{ *pulumi.OutputState } + +func (LogDestinationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogDestination)(nil)).Elem() +} + +func (o LogDestinationArrayOutput) ToLogDestinationArrayOutput() LogDestinationArrayOutput { + return o +} + +func (o LogDestinationArrayOutput) ToLogDestinationArrayOutputWithContext(ctx context.Context) LogDestinationArrayOutput { + return o +} + +func (o LogDestinationArrayOutput) Index(i pulumi.IntInput) LogDestinationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogDestination { + return vs[0].([]*LogDestination)[vs[1].(int)] + }).(LogDestinationOutput) +} + +type LogDestinationMapOutput struct{ *pulumi.OutputState } + +func (LogDestinationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogDestination)(nil)).Elem() +} + +func (o LogDestinationMapOutput) ToLogDestinationMapOutput() LogDestinationMapOutput { + return o +} + +func (o LogDestinationMapOutput) ToLogDestinationMapOutputWithContext(ctx context.Context) LogDestinationMapOutput { + return o +} + +func (o LogDestinationMapOutput) MapIndex(k pulumi.StringInput) LogDestinationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogDestination { + return vs[0].(map[string]*LogDestination)[vs[1].(string)] + }).(LogDestinationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationInput)(nil)).Elem(), &LogDestination{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationArrayInput)(nil)).Elem(), LogDestinationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationMapInput)(nil)).Elem(), LogDestinationMap{}) + pulumi.RegisterOutputType(LogDestinationOutput{}) + pulumi.RegisterOutputType(LogDestinationArrayOutput{}) + pulumi.RegisterOutputType(LogDestinationMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestinationPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestinationPolicy.go new file mode 100644 index 000000000..67568f071 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logDestinationPolicy.go @@ -0,0 +1,319 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Logs destination policy resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// testDestination, err := cloudwatch.NewLogDestination(ctx, "test_destination", &cloudwatch.LogDestinationArgs{ +// Name: pulumi.String("test_destination"), +// RoleArn: pulumi.Any(iamForCloudwatch.Arn), +// TargetArn: pulumi.Any(kinesisForCloudwatch.Arn), +// }) +// if err != nil { +// return err +// } +// testDestinationPolicy := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("AWS"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("123456789012"), +// }, +// }, +// }, +// Actions: pulumi.StringArray{ +// pulumi.String("logs:PutSubscriptionFilter"), +// }, +// Resources: pulumi.StringArray{ +// testDestination.Arn, +// }, +// }, +// }, +// }, nil) +// _, err = cloudwatch.NewLogDestinationPolicy(ctx, "test_destination_policy", &cloudwatch.LogDestinationPolicyArgs{ +// DestinationName: testDestination.Name, +// AccessPolicy: pulumi.String(testDestinationPolicy.ApplyT(func(testDestinationPolicy iam.GetPolicyDocumentResult) (*string, error) { +// return &testDestinationPolicy.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch Logs destination policies using the `destination_name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy test_destination_policy test_destination +// ``` +type LogDestinationPolicy struct { + pulumi.CustomResourceState + + // The policy document. This is a JSON formatted string. + AccessPolicy pulumi.StringOutput `pulumi:"accessPolicy"` + // A name for the subscription filter + DestinationName pulumi.StringOutput `pulumi:"destinationName"` + // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. + ForceUpdate pulumi.BoolPtrOutput `pulumi:"forceUpdate"` +} + +// NewLogDestinationPolicy registers a new resource with the given unique name, arguments, and options. +func NewLogDestinationPolicy(ctx *pulumi.Context, + name string, args *LogDestinationPolicyArgs, opts ...pulumi.ResourceOption) (*LogDestinationPolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AccessPolicy == nil { + return nil, errors.New("invalid value for required argument 'AccessPolicy'") + } + if args.DestinationName == nil { + return nil, errors.New("invalid value for required argument 'DestinationName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogDestinationPolicy + err := ctx.RegisterResource("aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogDestinationPolicy gets an existing LogDestinationPolicy 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 GetLogDestinationPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogDestinationPolicyState, opts ...pulumi.ResourceOption) (*LogDestinationPolicy, error) { + var resource LogDestinationPolicy + err := ctx.ReadResource("aws:cloudwatch/logDestinationPolicy:LogDestinationPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogDestinationPolicy resources. +type logDestinationPolicyState struct { + // The policy document. This is a JSON formatted string. + AccessPolicy *string `pulumi:"accessPolicy"` + // A name for the subscription filter + DestinationName *string `pulumi:"destinationName"` + // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. + ForceUpdate *bool `pulumi:"forceUpdate"` +} + +type LogDestinationPolicyState struct { + // The policy document. This is a JSON formatted string. + AccessPolicy pulumi.StringPtrInput + // A name for the subscription filter + DestinationName pulumi.StringPtrInput + // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. + ForceUpdate pulumi.BoolPtrInput +} + +func (LogDestinationPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*logDestinationPolicyState)(nil)).Elem() +} + +type logDestinationPolicyArgs struct { + // The policy document. This is a JSON formatted string. + AccessPolicy string `pulumi:"accessPolicy"` + // A name for the subscription filter + DestinationName string `pulumi:"destinationName"` + // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. + ForceUpdate *bool `pulumi:"forceUpdate"` +} + +// The set of arguments for constructing a LogDestinationPolicy resource. +type LogDestinationPolicyArgs struct { + // The policy document. This is a JSON formatted string. + AccessPolicy pulumi.StringInput + // A name for the subscription filter + DestinationName pulumi.StringInput + // Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. + ForceUpdate pulumi.BoolPtrInput +} + +func (LogDestinationPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logDestinationPolicyArgs)(nil)).Elem() +} + +type LogDestinationPolicyInput interface { + pulumi.Input + + ToLogDestinationPolicyOutput() LogDestinationPolicyOutput + ToLogDestinationPolicyOutputWithContext(ctx context.Context) LogDestinationPolicyOutput +} + +func (*LogDestinationPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**LogDestinationPolicy)(nil)).Elem() +} + +func (i *LogDestinationPolicy) ToLogDestinationPolicyOutput() LogDestinationPolicyOutput { + return i.ToLogDestinationPolicyOutputWithContext(context.Background()) +} + +func (i *LogDestinationPolicy) ToLogDestinationPolicyOutputWithContext(ctx context.Context) LogDestinationPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDestinationPolicyOutput) +} + +// LogDestinationPolicyArrayInput is an input type that accepts LogDestinationPolicyArray and LogDestinationPolicyArrayOutput values. +// You can construct a concrete instance of `LogDestinationPolicyArrayInput` via: +// +// LogDestinationPolicyArray{ LogDestinationPolicyArgs{...} } +type LogDestinationPolicyArrayInput interface { + pulumi.Input + + ToLogDestinationPolicyArrayOutput() LogDestinationPolicyArrayOutput + ToLogDestinationPolicyArrayOutputWithContext(context.Context) LogDestinationPolicyArrayOutput +} + +type LogDestinationPolicyArray []LogDestinationPolicyInput + +func (LogDestinationPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogDestinationPolicy)(nil)).Elem() +} + +func (i LogDestinationPolicyArray) ToLogDestinationPolicyArrayOutput() LogDestinationPolicyArrayOutput { + return i.ToLogDestinationPolicyArrayOutputWithContext(context.Background()) +} + +func (i LogDestinationPolicyArray) ToLogDestinationPolicyArrayOutputWithContext(ctx context.Context) LogDestinationPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDestinationPolicyArrayOutput) +} + +// LogDestinationPolicyMapInput is an input type that accepts LogDestinationPolicyMap and LogDestinationPolicyMapOutput values. +// You can construct a concrete instance of `LogDestinationPolicyMapInput` via: +// +// LogDestinationPolicyMap{ "key": LogDestinationPolicyArgs{...} } +type LogDestinationPolicyMapInput interface { + pulumi.Input + + ToLogDestinationPolicyMapOutput() LogDestinationPolicyMapOutput + ToLogDestinationPolicyMapOutputWithContext(context.Context) LogDestinationPolicyMapOutput +} + +type LogDestinationPolicyMap map[string]LogDestinationPolicyInput + +func (LogDestinationPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogDestinationPolicy)(nil)).Elem() +} + +func (i LogDestinationPolicyMap) ToLogDestinationPolicyMapOutput() LogDestinationPolicyMapOutput { + return i.ToLogDestinationPolicyMapOutputWithContext(context.Background()) +} + +func (i LogDestinationPolicyMap) ToLogDestinationPolicyMapOutputWithContext(ctx context.Context) LogDestinationPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogDestinationPolicyMapOutput) +} + +type LogDestinationPolicyOutput struct{ *pulumi.OutputState } + +func (LogDestinationPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogDestinationPolicy)(nil)).Elem() +} + +func (o LogDestinationPolicyOutput) ToLogDestinationPolicyOutput() LogDestinationPolicyOutput { + return o +} + +func (o LogDestinationPolicyOutput) ToLogDestinationPolicyOutputWithContext(ctx context.Context) LogDestinationPolicyOutput { + return o +} + +// The policy document. This is a JSON formatted string. +func (o LogDestinationPolicyOutput) AccessPolicy() pulumi.StringOutput { + return o.ApplyT(func(v *LogDestinationPolicy) pulumi.StringOutput { return v.AccessPolicy }).(pulumi.StringOutput) +} + +// A name for the subscription filter +func (o LogDestinationPolicyOutput) DestinationName() pulumi.StringOutput { + return o.ApplyT(func(v *LogDestinationPolicy) pulumi.StringOutput { return v.DestinationName }).(pulumi.StringOutput) +} + +// Specify true if you are updating an existing destination policy to grant permission to an organization ID instead of granting permission to individual AWS accounts. +func (o LogDestinationPolicyOutput) ForceUpdate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *LogDestinationPolicy) pulumi.BoolPtrOutput { return v.ForceUpdate }).(pulumi.BoolPtrOutput) +} + +type LogDestinationPolicyArrayOutput struct{ *pulumi.OutputState } + +func (LogDestinationPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogDestinationPolicy)(nil)).Elem() +} + +func (o LogDestinationPolicyArrayOutput) ToLogDestinationPolicyArrayOutput() LogDestinationPolicyArrayOutput { + return o +} + +func (o LogDestinationPolicyArrayOutput) ToLogDestinationPolicyArrayOutputWithContext(ctx context.Context) LogDestinationPolicyArrayOutput { + return o +} + +func (o LogDestinationPolicyArrayOutput) Index(i pulumi.IntInput) LogDestinationPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogDestinationPolicy { + return vs[0].([]*LogDestinationPolicy)[vs[1].(int)] + }).(LogDestinationPolicyOutput) +} + +type LogDestinationPolicyMapOutput struct{ *pulumi.OutputState } + +func (LogDestinationPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogDestinationPolicy)(nil)).Elem() +} + +func (o LogDestinationPolicyMapOutput) ToLogDestinationPolicyMapOutput() LogDestinationPolicyMapOutput { + return o +} + +func (o LogDestinationPolicyMapOutput) ToLogDestinationPolicyMapOutputWithContext(ctx context.Context) LogDestinationPolicyMapOutput { + return o +} + +func (o LogDestinationPolicyMapOutput) MapIndex(k pulumi.StringInput) LogDestinationPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogDestinationPolicy { + return vs[0].(map[string]*LogDestinationPolicy)[vs[1].(string)] + }).(LogDestinationPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationPolicyInput)(nil)).Elem(), &LogDestinationPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationPolicyArrayInput)(nil)).Elem(), LogDestinationPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogDestinationPolicyMapInput)(nil)).Elem(), LogDestinationPolicyMap{}) + pulumi.RegisterOutputType(LogDestinationPolicyOutput{}) + pulumi.RegisterOutputType(LogDestinationPolicyArrayOutput{}) + pulumi.RegisterOutputType(LogDestinationPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logGroup.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logGroup.go new file mode 100644 index 000000000..11aad26dd --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logGroup.go @@ -0,0 +1,397 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Log Group resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewLogGroup(ctx, "yada", &cloudwatch.LogGroupArgs{ +// Name: pulumi.String("Yada"), +// Tags: pulumi.StringMap{ +// "Environment": pulumi.String("production"), +// "Application": pulumi.String("serviceA"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import Cloudwatch Log Groups using the `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logGroup:LogGroup test_group yada +// ``` +type LogGroup struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) specifying the log group. Any `:*` suffix added by the API, denoting all CloudWatch Log Streams under the CloudWatch Log Group, is removed for greater compatibility with other AWS services that do not accept the suffix. + Arn pulumi.StringOutput `pulumi:"arn"` + // The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, + // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires + // permissions for the CMK whenever the encrypted data is requested. + KmsKeyId pulumi.StringPtrOutput `pulumi:"kmsKeyId"` + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass pulumi.StringOutput `pulumi:"logGroupClass"` + // The name of the log group. If omitted, this provider will assign a random, unique name. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // Specifies the number of days + // you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. + // If you select 0, the events in the log group are always retained and never expire. + RetentionInDays pulumi.IntPtrOutput `pulumi:"retentionInDays"` + // Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. + SkipDestroy pulumi.BoolPtrOutput `pulumi:"skipDestroy"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewLogGroup registers a new resource with the given unique name, arguments, and options. +func NewLogGroup(ctx *pulumi.Context, + name string, args *LogGroupArgs, opts ...pulumi.ResourceOption) (*LogGroup, error) { + if args == nil { + args = &LogGroupArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogGroup + err := ctx.RegisterResource("aws:cloudwatch/logGroup:LogGroup", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogGroup gets an existing LogGroup 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 GetLogGroup(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogGroupState, opts ...pulumi.ResourceOption) (*LogGroup, error) { + var resource LogGroup + err := ctx.ReadResource("aws:cloudwatch/logGroup:LogGroup", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogGroup resources. +type logGroupState struct { + // The Amazon Resource Name (ARN) specifying the log group. Any `:*` suffix added by the API, denoting all CloudWatch Log Streams under the CloudWatch Log Group, is removed for greater compatibility with other AWS services that do not accept the suffix. + Arn *string `pulumi:"arn"` + // The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, + // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires + // permissions for the CMK whenever the encrypted data is requested. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass *string `pulumi:"logGroupClass"` + // The name of the log group. If omitted, this provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Specifies the number of days + // you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. + // If you select 0, the events in the log group are always retained and never expire. + RetentionInDays *int `pulumi:"retentionInDays"` + // Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. + SkipDestroy *bool `pulumi:"skipDestroy"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type LogGroupState struct { + // The Amazon Resource Name (ARN) specifying the log group. Any `:*` suffix added by the API, denoting all CloudWatch Log Streams under the CloudWatch Log Group, is removed for greater compatibility with other AWS services that do not accept the suffix. + Arn pulumi.StringPtrInput + // The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, + // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires + // permissions for the CMK whenever the encrypted data is requested. + KmsKeyId pulumi.StringPtrInput + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass pulumi.StringPtrInput + // The name of the log group. If omitted, this provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Specifies the number of days + // you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. + // If you select 0, the events in the log group are always retained and never expire. + RetentionInDays pulumi.IntPtrInput + // Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. + SkipDestroy pulumi.BoolPtrInput + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (LogGroupState) ElementType() reflect.Type { + return reflect.TypeOf((*logGroupState)(nil)).Elem() +} + +type logGroupArgs struct { + // The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, + // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires + // permissions for the CMK whenever the encrypted data is requested. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass *string `pulumi:"logGroupClass"` + // The name of the log group. If omitted, this provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Specifies the number of days + // you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. + // If you select 0, the events in the log group are always retained and never expire. + RetentionInDays *int `pulumi:"retentionInDays"` + // Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. + SkipDestroy *bool `pulumi:"skipDestroy"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a LogGroup resource. +type LogGroupArgs struct { + // The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, + // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires + // permissions for the CMK whenever the encrypted data is requested. + KmsKeyId pulumi.StringPtrInput + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass pulumi.StringPtrInput + // The name of the log group. If omitted, this provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Specifies the number of days + // you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. + // If you select 0, the events in the log group are always retained and never expire. + RetentionInDays pulumi.IntPtrInput + // Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. + SkipDestroy pulumi.BoolPtrInput + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (LogGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logGroupArgs)(nil)).Elem() +} + +type LogGroupInput interface { + pulumi.Input + + ToLogGroupOutput() LogGroupOutput + ToLogGroupOutputWithContext(ctx context.Context) LogGroupOutput +} + +func (*LogGroup) ElementType() reflect.Type { + return reflect.TypeOf((**LogGroup)(nil)).Elem() +} + +func (i *LogGroup) ToLogGroupOutput() LogGroupOutput { + return i.ToLogGroupOutputWithContext(context.Background()) +} + +func (i *LogGroup) ToLogGroupOutputWithContext(ctx context.Context) LogGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogGroupOutput) +} + +// LogGroupArrayInput is an input type that accepts LogGroupArray and LogGroupArrayOutput values. +// You can construct a concrete instance of `LogGroupArrayInput` via: +// +// LogGroupArray{ LogGroupArgs{...} } +type LogGroupArrayInput interface { + pulumi.Input + + ToLogGroupArrayOutput() LogGroupArrayOutput + ToLogGroupArrayOutputWithContext(context.Context) LogGroupArrayOutput +} + +type LogGroupArray []LogGroupInput + +func (LogGroupArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogGroup)(nil)).Elem() +} + +func (i LogGroupArray) ToLogGroupArrayOutput() LogGroupArrayOutput { + return i.ToLogGroupArrayOutputWithContext(context.Background()) +} + +func (i LogGroupArray) ToLogGroupArrayOutputWithContext(ctx context.Context) LogGroupArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogGroupArrayOutput) +} + +// LogGroupMapInput is an input type that accepts LogGroupMap and LogGroupMapOutput values. +// You can construct a concrete instance of `LogGroupMapInput` via: +// +// LogGroupMap{ "key": LogGroupArgs{...} } +type LogGroupMapInput interface { + pulumi.Input + + ToLogGroupMapOutput() LogGroupMapOutput + ToLogGroupMapOutputWithContext(context.Context) LogGroupMapOutput +} + +type LogGroupMap map[string]LogGroupInput + +func (LogGroupMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogGroup)(nil)).Elem() +} + +func (i LogGroupMap) ToLogGroupMapOutput() LogGroupMapOutput { + return i.ToLogGroupMapOutputWithContext(context.Background()) +} + +func (i LogGroupMap) ToLogGroupMapOutputWithContext(ctx context.Context) LogGroupMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogGroupMapOutput) +} + +type LogGroupOutput struct{ *pulumi.OutputState } + +func (LogGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogGroup)(nil)).Elem() +} + +func (o LogGroupOutput) ToLogGroupOutput() LogGroupOutput { + return o +} + +func (o LogGroupOutput) ToLogGroupOutputWithContext(ctx context.Context) LogGroupOutput { + return o +} + +// The Amazon Resource Name (ARN) specifying the log group. Any `:*` suffix added by the API, denoting all CloudWatch Log Streams under the CloudWatch Log Group, is removed for greater compatibility with other AWS services that do not accept the suffix. +func (o LogGroupOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *LogGroup) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, +// AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires +// permissions for the CMK whenever the encrypted data is requested. +func (o LogGroupOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogGroup) pulumi.StringPtrOutput { return v.KmsKeyId }).(pulumi.StringPtrOutput) +} + +// Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. +func (o LogGroupOutput) LogGroupClass() pulumi.StringOutput { + return o.ApplyT(func(v *LogGroup) pulumi.StringOutput { return v.LogGroupClass }).(pulumi.StringOutput) +} + +// The name of the log group. If omitted, this provider will assign a random, unique name. +func (o LogGroupOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *LogGroup) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o LogGroupOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *LogGroup) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// Specifies the number of days +// you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. +// If you select 0, the events in the log group are always retained and never expire. +func (o LogGroupOutput) RetentionInDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v *LogGroup) pulumi.IntPtrOutput { return v.RetentionInDays }).(pulumi.IntPtrOutput) +} + +// Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. +func (o LogGroupOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *LogGroup) pulumi.BoolPtrOutput { return v.SkipDestroy }).(pulumi.BoolPtrOutput) +} + +// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o LogGroupOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *LogGroup) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o LogGroupOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *LogGroup) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type LogGroupArrayOutput struct{ *pulumi.OutputState } + +func (LogGroupArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogGroup)(nil)).Elem() +} + +func (o LogGroupArrayOutput) ToLogGroupArrayOutput() LogGroupArrayOutput { + return o +} + +func (o LogGroupArrayOutput) ToLogGroupArrayOutputWithContext(ctx context.Context) LogGroupArrayOutput { + return o +} + +func (o LogGroupArrayOutput) Index(i pulumi.IntInput) LogGroupOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogGroup { + return vs[0].([]*LogGroup)[vs[1].(int)] + }).(LogGroupOutput) +} + +type LogGroupMapOutput struct{ *pulumi.OutputState } + +func (LogGroupMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogGroup)(nil)).Elem() +} + +func (o LogGroupMapOutput) ToLogGroupMapOutput() LogGroupMapOutput { + return o +} + +func (o LogGroupMapOutput) ToLogGroupMapOutputWithContext(ctx context.Context) LogGroupMapOutput { + return o +} + +func (o LogGroupMapOutput) MapIndex(k pulumi.StringInput) LogGroupOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogGroup { + return vs[0].(map[string]*LogGroup)[vs[1].(string)] + }).(LogGroupOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogGroupInput)(nil)).Elem(), &LogGroup{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogGroupArrayInput)(nil)).Elem(), LogGroupArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogGroupMapInput)(nil)).Elem(), LogGroupMap{}) + pulumi.RegisterOutputType(LogGroupOutput{}) + pulumi.RegisterOutputType(LogGroupArrayOutput{}) + pulumi.RegisterOutputType(LogGroupMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logMetricFilter.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logMetricFilter.go new file mode 100644 index 000000000..9345e2580 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logMetricFilter.go @@ -0,0 +1,323 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Log Metric Filter resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// dada, err := cloudwatch.NewLogGroup(ctx, "dada", &cloudwatch.LogGroupArgs{ +// Name: pulumi.String("MyApp/access.log"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewLogMetricFilter(ctx, "yada", &cloudwatch.LogMetricFilterArgs{ +// Name: pulumi.String("MyAppAccessCount"), +// Pattern: pulumi.String(""), +// LogGroupName: dada.Name, +// MetricTransformation: &cloudwatch.LogMetricFilterMetricTransformationArgs{ +// Name: pulumi.String("EventCount"), +// Namespace: pulumi.String("YourNamespace"), +// Value: pulumi.String("1"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch Log Metric Filter using the `log_group_name:name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logMetricFilter:LogMetricFilter test /aws/lambda/function:test +// ``` +type LogMetricFilter struct { + pulumi.CustomResourceState + + // The name of the log group to associate the metric filter with. + LogGroupName pulumi.StringOutput `pulumi:"logGroupName"` + // A block defining collection of information needed to define how metric data gets emitted. See below. + MetricTransformation LogMetricFilterMetricTransformationOutput `pulumi:"metricTransformation"` + // A name for the metric filter. + Name pulumi.StringOutput `pulumi:"name"` + // A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html) + // for extracting metric data out of ingested log events. + Pattern pulumi.StringOutput `pulumi:"pattern"` +} + +// NewLogMetricFilter registers a new resource with the given unique name, arguments, and options. +func NewLogMetricFilter(ctx *pulumi.Context, + name string, args *LogMetricFilterArgs, opts ...pulumi.ResourceOption) (*LogMetricFilter, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.LogGroupName == nil { + return nil, errors.New("invalid value for required argument 'LogGroupName'") + } + if args.MetricTransformation == nil { + return nil, errors.New("invalid value for required argument 'MetricTransformation'") + } + if args.Pattern == nil { + return nil, errors.New("invalid value for required argument 'Pattern'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogMetricFilter + err := ctx.RegisterResource("aws:cloudwatch/logMetricFilter:LogMetricFilter", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogMetricFilter gets an existing LogMetricFilter 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 GetLogMetricFilter(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogMetricFilterState, opts ...pulumi.ResourceOption) (*LogMetricFilter, error) { + var resource LogMetricFilter + err := ctx.ReadResource("aws:cloudwatch/logMetricFilter:LogMetricFilter", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogMetricFilter resources. +type logMetricFilterState struct { + // The name of the log group to associate the metric filter with. + LogGroupName *string `pulumi:"logGroupName"` + // A block defining collection of information needed to define how metric data gets emitted. See below. + MetricTransformation *LogMetricFilterMetricTransformation `pulumi:"metricTransformation"` + // A name for the metric filter. + Name *string `pulumi:"name"` + // A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html) + // for extracting metric data out of ingested log events. + Pattern *string `pulumi:"pattern"` +} + +type LogMetricFilterState struct { + // The name of the log group to associate the metric filter with. + LogGroupName pulumi.StringPtrInput + // A block defining collection of information needed to define how metric data gets emitted. See below. + MetricTransformation LogMetricFilterMetricTransformationPtrInput + // A name for the metric filter. + Name pulumi.StringPtrInput + // A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html) + // for extracting metric data out of ingested log events. + Pattern pulumi.StringPtrInput +} + +func (LogMetricFilterState) ElementType() reflect.Type { + return reflect.TypeOf((*logMetricFilterState)(nil)).Elem() +} + +type logMetricFilterArgs struct { + // The name of the log group to associate the metric filter with. + LogGroupName string `pulumi:"logGroupName"` + // A block defining collection of information needed to define how metric data gets emitted. See below. + MetricTransformation LogMetricFilterMetricTransformation `pulumi:"metricTransformation"` + // A name for the metric filter. + Name *string `pulumi:"name"` + // A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html) + // for extracting metric data out of ingested log events. + Pattern string `pulumi:"pattern"` +} + +// The set of arguments for constructing a LogMetricFilter resource. +type LogMetricFilterArgs struct { + // The name of the log group to associate the metric filter with. + LogGroupName pulumi.StringInput + // A block defining collection of information needed to define how metric data gets emitted. See below. + MetricTransformation LogMetricFilterMetricTransformationInput + // A name for the metric filter. + Name pulumi.StringPtrInput + // A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html) + // for extracting metric data out of ingested log events. + Pattern pulumi.StringInput +} + +func (LogMetricFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logMetricFilterArgs)(nil)).Elem() +} + +type LogMetricFilterInput interface { + pulumi.Input + + ToLogMetricFilterOutput() LogMetricFilterOutput + ToLogMetricFilterOutputWithContext(ctx context.Context) LogMetricFilterOutput +} + +func (*LogMetricFilter) ElementType() reflect.Type { + return reflect.TypeOf((**LogMetricFilter)(nil)).Elem() +} + +func (i *LogMetricFilter) ToLogMetricFilterOutput() LogMetricFilterOutput { + return i.ToLogMetricFilterOutputWithContext(context.Background()) +} + +func (i *LogMetricFilter) ToLogMetricFilterOutputWithContext(ctx context.Context) LogMetricFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterOutput) +} + +// LogMetricFilterArrayInput is an input type that accepts LogMetricFilterArray and LogMetricFilterArrayOutput values. +// You can construct a concrete instance of `LogMetricFilterArrayInput` via: +// +// LogMetricFilterArray{ LogMetricFilterArgs{...} } +type LogMetricFilterArrayInput interface { + pulumi.Input + + ToLogMetricFilterArrayOutput() LogMetricFilterArrayOutput + ToLogMetricFilterArrayOutputWithContext(context.Context) LogMetricFilterArrayOutput +} + +type LogMetricFilterArray []LogMetricFilterInput + +func (LogMetricFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogMetricFilter)(nil)).Elem() +} + +func (i LogMetricFilterArray) ToLogMetricFilterArrayOutput() LogMetricFilterArrayOutput { + return i.ToLogMetricFilterArrayOutputWithContext(context.Background()) +} + +func (i LogMetricFilterArray) ToLogMetricFilterArrayOutputWithContext(ctx context.Context) LogMetricFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterArrayOutput) +} + +// LogMetricFilterMapInput is an input type that accepts LogMetricFilterMap and LogMetricFilterMapOutput values. +// You can construct a concrete instance of `LogMetricFilterMapInput` via: +// +// LogMetricFilterMap{ "key": LogMetricFilterArgs{...} } +type LogMetricFilterMapInput interface { + pulumi.Input + + ToLogMetricFilterMapOutput() LogMetricFilterMapOutput + ToLogMetricFilterMapOutputWithContext(context.Context) LogMetricFilterMapOutput +} + +type LogMetricFilterMap map[string]LogMetricFilterInput + +func (LogMetricFilterMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogMetricFilter)(nil)).Elem() +} + +func (i LogMetricFilterMap) ToLogMetricFilterMapOutput() LogMetricFilterMapOutput { + return i.ToLogMetricFilterMapOutputWithContext(context.Background()) +} + +func (i LogMetricFilterMap) ToLogMetricFilterMapOutputWithContext(ctx context.Context) LogMetricFilterMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterMapOutput) +} + +type LogMetricFilterOutput struct{ *pulumi.OutputState } + +func (LogMetricFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogMetricFilter)(nil)).Elem() +} + +func (o LogMetricFilterOutput) ToLogMetricFilterOutput() LogMetricFilterOutput { + return o +} + +func (o LogMetricFilterOutput) ToLogMetricFilterOutputWithContext(ctx context.Context) LogMetricFilterOutput { + return o +} + +// The name of the log group to associate the metric filter with. +func (o LogMetricFilterOutput) LogGroupName() pulumi.StringOutput { + return o.ApplyT(func(v *LogMetricFilter) pulumi.StringOutput { return v.LogGroupName }).(pulumi.StringOutput) +} + +// A block defining collection of information needed to define how metric data gets emitted. See below. +func (o LogMetricFilterOutput) MetricTransformation() LogMetricFilterMetricTransformationOutput { + return o.ApplyT(func(v *LogMetricFilter) LogMetricFilterMetricTransformationOutput { return v.MetricTransformation }).(LogMetricFilterMetricTransformationOutput) +} + +// A name for the metric filter. +func (o LogMetricFilterOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *LogMetricFilter) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// A valid [CloudWatch Logs filter pattern](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/FilterAndPatternSyntax.html) +// for extracting metric data out of ingested log events. +func (o LogMetricFilterOutput) Pattern() pulumi.StringOutput { + return o.ApplyT(func(v *LogMetricFilter) pulumi.StringOutput { return v.Pattern }).(pulumi.StringOutput) +} + +type LogMetricFilterArrayOutput struct{ *pulumi.OutputState } + +func (LogMetricFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogMetricFilter)(nil)).Elem() +} + +func (o LogMetricFilterArrayOutput) ToLogMetricFilterArrayOutput() LogMetricFilterArrayOutput { + return o +} + +func (o LogMetricFilterArrayOutput) ToLogMetricFilterArrayOutputWithContext(ctx context.Context) LogMetricFilterArrayOutput { + return o +} + +func (o LogMetricFilterArrayOutput) Index(i pulumi.IntInput) LogMetricFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogMetricFilter { + return vs[0].([]*LogMetricFilter)[vs[1].(int)] + }).(LogMetricFilterOutput) +} + +type LogMetricFilterMapOutput struct{ *pulumi.OutputState } + +func (LogMetricFilterMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogMetricFilter)(nil)).Elem() +} + +func (o LogMetricFilterMapOutput) ToLogMetricFilterMapOutput() LogMetricFilterMapOutput { + return o +} + +func (o LogMetricFilterMapOutput) ToLogMetricFilterMapOutputWithContext(ctx context.Context) LogMetricFilterMapOutput { + return o +} + +func (o LogMetricFilterMapOutput) MapIndex(k pulumi.StringInput) LogMetricFilterOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogMetricFilter { + return vs[0].(map[string]*LogMetricFilter)[vs[1].(string)] + }).(LogMetricFilterOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterInput)(nil)).Elem(), &LogMetricFilter{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterArrayInput)(nil)).Elem(), LogMetricFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterMapInput)(nil)).Elem(), LogMetricFilterMap{}) + pulumi.RegisterOutputType(LogMetricFilterOutput{}) + pulumi.RegisterOutputType(LogMetricFilterArrayOutput{}) + pulumi.RegisterOutputType(LogMetricFilterMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logResourcePolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logResourcePolicy.go new file mode 100644 index 000000000..4740c6ee8 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logResourcePolicy.go @@ -0,0 +1,352 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource to manage a CloudWatch log resource policy. +// +// ## Example Usage +// +// ### Elasticsearch Log Publishing +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// elasticsearch_log_publishing_policy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "logs:CreateLogStream", +// "logs:PutLogEvents", +// "logs:PutLogEventsBatch", +// }, +// Resources: []string{ +// "arn:aws:logs:*", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Identifiers: []string{ +// "es.amazonaws.com", +// }, +// Type: "Service", +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewLogResourcePolicy(ctx, "elasticsearch-log-publishing-policy", &cloudwatch.LogResourcePolicyArgs{ +// PolicyDocument: pulumi.String(elasticsearch_log_publishing_policy.Json), +// PolicyName: pulumi.String("elasticsearch-log-publishing-policy"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Route53 Query Logging +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// route53_query_logging_policy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "logs:CreateLogStream", +// "logs:PutLogEvents", +// }, +// Resources: []string{ +// "arn:aws:logs:*:*:log-group:/aws/route53/*", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Identifiers: []string{ +// "route53.amazonaws.com", +// }, +// Type: "Service", +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewLogResourcePolicy(ctx, "route53-query-logging-policy", &cloudwatch.LogResourcePolicyArgs{ +// PolicyDocument: pulumi.String(route53_query_logging_policy.Json), +// PolicyName: pulumi.String("route53-query-logging-policy"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch log resource policies using the policy name. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logResourcePolicy:LogResourcePolicy MyPolicy MyPolicy +// ``` +type LogResourcePolicy struct { + pulumi.CustomResourceState + + // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. + PolicyDocument pulumi.StringOutput `pulumi:"policyDocument"` + // Name of the resource policy. + PolicyName pulumi.StringOutput `pulumi:"policyName"` +} + +// NewLogResourcePolicy registers a new resource with the given unique name, arguments, and options. +func NewLogResourcePolicy(ctx *pulumi.Context, + name string, args *LogResourcePolicyArgs, opts ...pulumi.ResourceOption) (*LogResourcePolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyDocument == nil { + return nil, errors.New("invalid value for required argument 'PolicyDocument'") + } + if args.PolicyName == nil { + return nil, errors.New("invalid value for required argument 'PolicyName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogResourcePolicy + err := ctx.RegisterResource("aws:cloudwatch/logResourcePolicy:LogResourcePolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogResourcePolicy gets an existing LogResourcePolicy 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 GetLogResourcePolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogResourcePolicyState, opts ...pulumi.ResourceOption) (*LogResourcePolicy, error) { + var resource LogResourcePolicy + err := ctx.ReadResource("aws:cloudwatch/logResourcePolicy:LogResourcePolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogResourcePolicy resources. +type logResourcePolicyState struct { + // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. + PolicyDocument interface{} `pulumi:"policyDocument"` + // Name of the resource policy. + PolicyName *string `pulumi:"policyName"` +} + +type LogResourcePolicyState struct { + // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. + PolicyDocument pulumi.Input + // Name of the resource policy. + PolicyName pulumi.StringPtrInput +} + +func (LogResourcePolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*logResourcePolicyState)(nil)).Elem() +} + +type logResourcePolicyArgs struct { + // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. + PolicyDocument interface{} `pulumi:"policyDocument"` + // Name of the resource policy. + PolicyName string `pulumi:"policyName"` +} + +// The set of arguments for constructing a LogResourcePolicy resource. +type LogResourcePolicyArgs struct { + // Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. + PolicyDocument pulumi.Input + // Name of the resource policy. + PolicyName pulumi.StringInput +} + +func (LogResourcePolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logResourcePolicyArgs)(nil)).Elem() +} + +type LogResourcePolicyInput interface { + pulumi.Input + + ToLogResourcePolicyOutput() LogResourcePolicyOutput + ToLogResourcePolicyOutputWithContext(ctx context.Context) LogResourcePolicyOutput +} + +func (*LogResourcePolicy) ElementType() reflect.Type { + return reflect.TypeOf((**LogResourcePolicy)(nil)).Elem() +} + +func (i *LogResourcePolicy) ToLogResourcePolicyOutput() LogResourcePolicyOutput { + return i.ToLogResourcePolicyOutputWithContext(context.Background()) +} + +func (i *LogResourcePolicy) ToLogResourcePolicyOutputWithContext(ctx context.Context) LogResourcePolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogResourcePolicyOutput) +} + +// LogResourcePolicyArrayInput is an input type that accepts LogResourcePolicyArray and LogResourcePolicyArrayOutput values. +// You can construct a concrete instance of `LogResourcePolicyArrayInput` via: +// +// LogResourcePolicyArray{ LogResourcePolicyArgs{...} } +type LogResourcePolicyArrayInput interface { + pulumi.Input + + ToLogResourcePolicyArrayOutput() LogResourcePolicyArrayOutput + ToLogResourcePolicyArrayOutputWithContext(context.Context) LogResourcePolicyArrayOutput +} + +type LogResourcePolicyArray []LogResourcePolicyInput + +func (LogResourcePolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogResourcePolicy)(nil)).Elem() +} + +func (i LogResourcePolicyArray) ToLogResourcePolicyArrayOutput() LogResourcePolicyArrayOutput { + return i.ToLogResourcePolicyArrayOutputWithContext(context.Background()) +} + +func (i LogResourcePolicyArray) ToLogResourcePolicyArrayOutputWithContext(ctx context.Context) LogResourcePolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogResourcePolicyArrayOutput) +} + +// LogResourcePolicyMapInput is an input type that accepts LogResourcePolicyMap and LogResourcePolicyMapOutput values. +// You can construct a concrete instance of `LogResourcePolicyMapInput` via: +// +// LogResourcePolicyMap{ "key": LogResourcePolicyArgs{...} } +type LogResourcePolicyMapInput interface { + pulumi.Input + + ToLogResourcePolicyMapOutput() LogResourcePolicyMapOutput + ToLogResourcePolicyMapOutputWithContext(context.Context) LogResourcePolicyMapOutput +} + +type LogResourcePolicyMap map[string]LogResourcePolicyInput + +func (LogResourcePolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogResourcePolicy)(nil)).Elem() +} + +func (i LogResourcePolicyMap) ToLogResourcePolicyMapOutput() LogResourcePolicyMapOutput { + return i.ToLogResourcePolicyMapOutputWithContext(context.Background()) +} + +func (i LogResourcePolicyMap) ToLogResourcePolicyMapOutputWithContext(ctx context.Context) LogResourcePolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogResourcePolicyMapOutput) +} + +type LogResourcePolicyOutput struct{ *pulumi.OutputState } + +func (LogResourcePolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogResourcePolicy)(nil)).Elem() +} + +func (o LogResourcePolicyOutput) ToLogResourcePolicyOutput() LogResourcePolicyOutput { + return o +} + +func (o LogResourcePolicyOutput) ToLogResourcePolicyOutputWithContext(ctx context.Context) LogResourcePolicyOutput { + return o +} + +// Details of the resource policy, including the identity of the principal that is enabled to put logs to this account. This is formatted as a JSON string. Maximum length of 5120 characters. +func (o LogResourcePolicyOutput) PolicyDocument() pulumi.StringOutput { + return o.ApplyT(func(v *LogResourcePolicy) pulumi.StringOutput { return v.PolicyDocument }).(pulumi.StringOutput) +} + +// Name of the resource policy. +func (o LogResourcePolicyOutput) PolicyName() pulumi.StringOutput { + return o.ApplyT(func(v *LogResourcePolicy) pulumi.StringOutput { return v.PolicyName }).(pulumi.StringOutput) +} + +type LogResourcePolicyArrayOutput struct{ *pulumi.OutputState } + +func (LogResourcePolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogResourcePolicy)(nil)).Elem() +} + +func (o LogResourcePolicyArrayOutput) ToLogResourcePolicyArrayOutput() LogResourcePolicyArrayOutput { + return o +} + +func (o LogResourcePolicyArrayOutput) ToLogResourcePolicyArrayOutputWithContext(ctx context.Context) LogResourcePolicyArrayOutput { + return o +} + +func (o LogResourcePolicyArrayOutput) Index(i pulumi.IntInput) LogResourcePolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogResourcePolicy { + return vs[0].([]*LogResourcePolicy)[vs[1].(int)] + }).(LogResourcePolicyOutput) +} + +type LogResourcePolicyMapOutput struct{ *pulumi.OutputState } + +func (LogResourcePolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogResourcePolicy)(nil)).Elem() +} + +func (o LogResourcePolicyMapOutput) ToLogResourcePolicyMapOutput() LogResourcePolicyMapOutput { + return o +} + +func (o LogResourcePolicyMapOutput) ToLogResourcePolicyMapOutputWithContext(ctx context.Context) LogResourcePolicyMapOutput { + return o +} + +func (o LogResourcePolicyMapOutput) MapIndex(k pulumi.StringInput) LogResourcePolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogResourcePolicy { + return vs[0].(map[string]*LogResourcePolicy)[vs[1].(string)] + }).(LogResourcePolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogResourcePolicyInput)(nil)).Elem(), &LogResourcePolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogResourcePolicyArrayInput)(nil)).Elem(), LogResourcePolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogResourcePolicyMapInput)(nil)).Elem(), LogResourcePolicyMap{}) + pulumi.RegisterOutputType(LogResourcePolicyOutput{}) + pulumi.RegisterOutputType(LogResourcePolicyArrayOutput{}) + pulumi.RegisterOutputType(LogResourcePolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logStream.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logStream.go new file mode 100644 index 000000000..f89de2b43 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logStream.go @@ -0,0 +1,286 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Log Stream resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// yada, err := cloudwatch.NewLogGroup(ctx, "yada", &cloudwatch.LogGroupArgs{ +// Name: pulumi.String("Yada"), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewLogStream(ctx, "foo", &cloudwatch.LogStreamArgs{ +// Name: pulumi.String("SampleLogStream1234"), +// LogGroupName: yada.Name, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import Cloudwatch Log Stream using the stream's `log_group_name` and `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logStream:LogStream foo Yada:SampleLogStream1234 +// ``` +type LogStream struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) specifying the log stream. + Arn pulumi.StringOutput `pulumi:"arn"` + // The name of the log group under which the log stream is to be created. + LogGroupName pulumi.StringOutput `pulumi:"logGroupName"` + // The name of the log stream. Must not be longer than 512 characters and must not contain `:` + Name pulumi.StringOutput `pulumi:"name"` +} + +// NewLogStream registers a new resource with the given unique name, arguments, and options. +func NewLogStream(ctx *pulumi.Context, + name string, args *LogStreamArgs, opts ...pulumi.ResourceOption) (*LogStream, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.LogGroupName == nil { + return nil, errors.New("invalid value for required argument 'LogGroupName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogStream + err := ctx.RegisterResource("aws:cloudwatch/logStream:LogStream", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogStream gets an existing LogStream 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 GetLogStream(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogStreamState, opts ...pulumi.ResourceOption) (*LogStream, error) { + var resource LogStream + err := ctx.ReadResource("aws:cloudwatch/logStream:LogStream", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogStream resources. +type logStreamState struct { + // The Amazon Resource Name (ARN) specifying the log stream. + Arn *string `pulumi:"arn"` + // The name of the log group under which the log stream is to be created. + LogGroupName *string `pulumi:"logGroupName"` + // The name of the log stream. Must not be longer than 512 characters and must not contain `:` + Name *string `pulumi:"name"` +} + +type LogStreamState struct { + // The Amazon Resource Name (ARN) specifying the log stream. + Arn pulumi.StringPtrInput + // The name of the log group under which the log stream is to be created. + LogGroupName pulumi.StringPtrInput + // The name of the log stream. Must not be longer than 512 characters and must not contain `:` + Name pulumi.StringPtrInput +} + +func (LogStreamState) ElementType() reflect.Type { + return reflect.TypeOf((*logStreamState)(nil)).Elem() +} + +type logStreamArgs struct { + // The name of the log group under which the log stream is to be created. + LogGroupName string `pulumi:"logGroupName"` + // The name of the log stream. Must not be longer than 512 characters and must not contain `:` + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a LogStream resource. +type LogStreamArgs struct { + // The name of the log group under which the log stream is to be created. + LogGroupName pulumi.StringInput + // The name of the log stream. Must not be longer than 512 characters and must not contain `:` + Name pulumi.StringPtrInput +} + +func (LogStreamArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logStreamArgs)(nil)).Elem() +} + +type LogStreamInput interface { + pulumi.Input + + ToLogStreamOutput() LogStreamOutput + ToLogStreamOutputWithContext(ctx context.Context) LogStreamOutput +} + +func (*LogStream) ElementType() reflect.Type { + return reflect.TypeOf((**LogStream)(nil)).Elem() +} + +func (i *LogStream) ToLogStreamOutput() LogStreamOutput { + return i.ToLogStreamOutputWithContext(context.Background()) +} + +func (i *LogStream) ToLogStreamOutputWithContext(ctx context.Context) LogStreamOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogStreamOutput) +} + +// LogStreamArrayInput is an input type that accepts LogStreamArray and LogStreamArrayOutput values. +// You can construct a concrete instance of `LogStreamArrayInput` via: +// +// LogStreamArray{ LogStreamArgs{...} } +type LogStreamArrayInput interface { + pulumi.Input + + ToLogStreamArrayOutput() LogStreamArrayOutput + ToLogStreamArrayOutputWithContext(context.Context) LogStreamArrayOutput +} + +type LogStreamArray []LogStreamInput + +func (LogStreamArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogStream)(nil)).Elem() +} + +func (i LogStreamArray) ToLogStreamArrayOutput() LogStreamArrayOutput { + return i.ToLogStreamArrayOutputWithContext(context.Background()) +} + +func (i LogStreamArray) ToLogStreamArrayOutputWithContext(ctx context.Context) LogStreamArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogStreamArrayOutput) +} + +// LogStreamMapInput is an input type that accepts LogStreamMap and LogStreamMapOutput values. +// You can construct a concrete instance of `LogStreamMapInput` via: +// +// LogStreamMap{ "key": LogStreamArgs{...} } +type LogStreamMapInput interface { + pulumi.Input + + ToLogStreamMapOutput() LogStreamMapOutput + ToLogStreamMapOutputWithContext(context.Context) LogStreamMapOutput +} + +type LogStreamMap map[string]LogStreamInput + +func (LogStreamMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogStream)(nil)).Elem() +} + +func (i LogStreamMap) ToLogStreamMapOutput() LogStreamMapOutput { + return i.ToLogStreamMapOutputWithContext(context.Background()) +} + +func (i LogStreamMap) ToLogStreamMapOutputWithContext(ctx context.Context) LogStreamMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogStreamMapOutput) +} + +type LogStreamOutput struct{ *pulumi.OutputState } + +func (LogStreamOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogStream)(nil)).Elem() +} + +func (o LogStreamOutput) ToLogStreamOutput() LogStreamOutput { + return o +} + +func (o LogStreamOutput) ToLogStreamOutputWithContext(ctx context.Context) LogStreamOutput { + return o +} + +// The Amazon Resource Name (ARN) specifying the log stream. +func (o LogStreamOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *LogStream) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The name of the log group under which the log stream is to be created. +func (o LogStreamOutput) LogGroupName() pulumi.StringOutput { + return o.ApplyT(func(v *LogStream) pulumi.StringOutput { return v.LogGroupName }).(pulumi.StringOutput) +} + +// The name of the log stream. Must not be longer than 512 characters and must not contain `:` +func (o LogStreamOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *LogStream) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +type LogStreamArrayOutput struct{ *pulumi.OutputState } + +func (LogStreamArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogStream)(nil)).Elem() +} + +func (o LogStreamArrayOutput) ToLogStreamArrayOutput() LogStreamArrayOutput { + return o +} + +func (o LogStreamArrayOutput) ToLogStreamArrayOutputWithContext(ctx context.Context) LogStreamArrayOutput { + return o +} + +func (o LogStreamArrayOutput) Index(i pulumi.IntInput) LogStreamOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogStream { + return vs[0].([]*LogStream)[vs[1].(int)] + }).(LogStreamOutput) +} + +type LogStreamMapOutput struct{ *pulumi.OutputState } + +func (LogStreamMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogStream)(nil)).Elem() +} + +func (o LogStreamMapOutput) ToLogStreamMapOutput() LogStreamMapOutput { + return o +} + +func (o LogStreamMapOutput) ToLogStreamMapOutputWithContext(ctx context.Context) LogStreamMapOutput { + return o +} + +func (o LogStreamMapOutput) MapIndex(k pulumi.StringInput) LogStreamOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogStream { + return vs[0].(map[string]*LogStream)[vs[1].(string)] + }).(LogStreamOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogStreamInput)(nil)).Elem(), &LogStream{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogStreamArrayInput)(nil)).Elem(), LogStreamArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogStreamMapInput)(nil)).Elem(), LogStreamMap{}) + pulumi.RegisterOutputType(LogStreamOutput{}) + pulumi.RegisterOutputType(LogStreamArrayOutput{}) + pulumi.RegisterOutputType(LogStreamMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logSubscriptionFilter.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logSubscriptionFilter.go new file mode 100644 index 000000000..7bfae132f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/logSubscriptionFilter.go @@ -0,0 +1,339 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Logs subscription filter resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewLogSubscriptionFilter(ctx, "test_lambdafunction_logfilter", &cloudwatch.LogSubscriptionFilterArgs{ +// Name: pulumi.String("test_lambdafunction_logfilter"), +// RoleArn: pulumi.Any(iamForLambda.Arn), +// LogGroup: pulumi.Any("/aws/lambda/example_lambda_name"), +// FilterPattern: pulumi.String("logtype test"), +// DestinationArn: pulumi.Any(testLogstream.Arn), +// Distribution: pulumi.String("Random"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch Logs subscription filter using the log group name and subscription filter name separated by `|`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter test_lambdafunction_logfilter "/aws/lambda/example_lambda_name|test_lambdafunction_logfilter" +// ``` +type LogSubscriptionFilter struct { + pulumi.CustomResourceState + + // The ARN of the destination to deliver matching log events to. Kinesis stream or Lambda function ARN. + DestinationArn pulumi.StringOutput `pulumi:"destinationArn"` + // The method used to distribute log data to the destination. By default log data is grouped by log stream, but the grouping can be set to random for a more even distribution. This property is only applicable when the destination is an Amazon Kinesis stream. Valid values are "Random" and "ByLogStream". + Distribution pulumi.StringPtrOutput `pulumi:"distribution"` + // A valid CloudWatch Logs filter pattern for subscribing to a filtered stream of log events. Use empty string `""` to match everything. For more information, see the [Amazon CloudWatch Logs User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). + FilterPattern pulumi.StringOutput `pulumi:"filterPattern"` + // The name of the log group to associate the subscription filter with + LogGroup pulumi.StringOutput `pulumi:"logGroup"` + // A name for the subscription filter + Name pulumi.StringOutput `pulumi:"name"` + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to deliver ingested log events to the destination. If you use Lambda as a destination, you should skip this argument and use `lambda.Permission` resource for granting access from CloudWatch logs to the destination Lambda function. + RoleArn pulumi.StringOutput `pulumi:"roleArn"` +} + +// NewLogSubscriptionFilter registers a new resource with the given unique name, arguments, and options. +func NewLogSubscriptionFilter(ctx *pulumi.Context, + name string, args *LogSubscriptionFilterArgs, opts ...pulumi.ResourceOption) (*LogSubscriptionFilter, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.DestinationArn == nil { + return nil, errors.New("invalid value for required argument 'DestinationArn'") + } + if args.FilterPattern == nil { + return nil, errors.New("invalid value for required argument 'FilterPattern'") + } + if args.LogGroup == nil { + return nil, errors.New("invalid value for required argument 'LogGroup'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource LogSubscriptionFilter + err := ctx.RegisterResource("aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetLogSubscriptionFilter gets an existing LogSubscriptionFilter 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 GetLogSubscriptionFilter(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *LogSubscriptionFilterState, opts ...pulumi.ResourceOption) (*LogSubscriptionFilter, error) { + var resource LogSubscriptionFilter + err := ctx.ReadResource("aws:cloudwatch/logSubscriptionFilter:LogSubscriptionFilter", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering LogSubscriptionFilter resources. +type logSubscriptionFilterState struct { + // The ARN of the destination to deliver matching log events to. Kinesis stream or Lambda function ARN. + DestinationArn *string `pulumi:"destinationArn"` + // The method used to distribute log data to the destination. By default log data is grouped by log stream, but the grouping can be set to random for a more even distribution. This property is only applicable when the destination is an Amazon Kinesis stream. Valid values are "Random" and "ByLogStream". + Distribution *string `pulumi:"distribution"` + // A valid CloudWatch Logs filter pattern for subscribing to a filtered stream of log events. Use empty string `""` to match everything. For more information, see the [Amazon CloudWatch Logs User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). + FilterPattern *string `pulumi:"filterPattern"` + // The name of the log group to associate the subscription filter with + LogGroup interface{} `pulumi:"logGroup"` + // A name for the subscription filter + Name *string `pulumi:"name"` + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to deliver ingested log events to the destination. If you use Lambda as a destination, you should skip this argument and use `lambda.Permission` resource for granting access from CloudWatch logs to the destination Lambda function. + RoleArn *string `pulumi:"roleArn"` +} + +type LogSubscriptionFilterState struct { + // The ARN of the destination to deliver matching log events to. Kinesis stream or Lambda function ARN. + DestinationArn pulumi.StringPtrInput + // The method used to distribute log data to the destination. By default log data is grouped by log stream, but the grouping can be set to random for a more even distribution. This property is only applicable when the destination is an Amazon Kinesis stream. Valid values are "Random" and "ByLogStream". + Distribution pulumi.StringPtrInput + // A valid CloudWatch Logs filter pattern for subscribing to a filtered stream of log events. Use empty string `""` to match everything. For more information, see the [Amazon CloudWatch Logs User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). + FilterPattern pulumi.StringPtrInput + // The name of the log group to associate the subscription filter with + LogGroup pulumi.Input + // A name for the subscription filter + Name pulumi.StringPtrInput + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to deliver ingested log events to the destination. If you use Lambda as a destination, you should skip this argument and use `lambda.Permission` resource for granting access from CloudWatch logs to the destination Lambda function. + RoleArn pulumi.StringPtrInput +} + +func (LogSubscriptionFilterState) ElementType() reflect.Type { + return reflect.TypeOf((*logSubscriptionFilterState)(nil)).Elem() +} + +type logSubscriptionFilterArgs struct { + // The ARN of the destination to deliver matching log events to. Kinesis stream or Lambda function ARN. + DestinationArn string `pulumi:"destinationArn"` + // The method used to distribute log data to the destination. By default log data is grouped by log stream, but the grouping can be set to random for a more even distribution. This property is only applicable when the destination is an Amazon Kinesis stream. Valid values are "Random" and "ByLogStream". + Distribution *string `pulumi:"distribution"` + // A valid CloudWatch Logs filter pattern for subscribing to a filtered stream of log events. Use empty string `""` to match everything. For more information, see the [Amazon CloudWatch Logs User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). + FilterPattern string `pulumi:"filterPattern"` + // The name of the log group to associate the subscription filter with + LogGroup interface{} `pulumi:"logGroup"` + // A name for the subscription filter + Name *string `pulumi:"name"` + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to deliver ingested log events to the destination. If you use Lambda as a destination, you should skip this argument and use `lambda.Permission` resource for granting access from CloudWatch logs to the destination Lambda function. + RoleArn *string `pulumi:"roleArn"` +} + +// The set of arguments for constructing a LogSubscriptionFilter resource. +type LogSubscriptionFilterArgs struct { + // The ARN of the destination to deliver matching log events to. Kinesis stream or Lambda function ARN. + DestinationArn pulumi.StringInput + // The method used to distribute log data to the destination. By default log data is grouped by log stream, but the grouping can be set to random for a more even distribution. This property is only applicable when the destination is an Amazon Kinesis stream. Valid values are "Random" and "ByLogStream". + Distribution pulumi.StringPtrInput + // A valid CloudWatch Logs filter pattern for subscribing to a filtered stream of log events. Use empty string `""` to match everything. For more information, see the [Amazon CloudWatch Logs User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). + FilterPattern pulumi.StringInput + // The name of the log group to associate the subscription filter with + LogGroup pulumi.Input + // A name for the subscription filter + Name pulumi.StringPtrInput + // The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to deliver ingested log events to the destination. If you use Lambda as a destination, you should skip this argument and use `lambda.Permission` resource for granting access from CloudWatch logs to the destination Lambda function. + RoleArn pulumi.StringPtrInput +} + +func (LogSubscriptionFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*logSubscriptionFilterArgs)(nil)).Elem() +} + +type LogSubscriptionFilterInput interface { + pulumi.Input + + ToLogSubscriptionFilterOutput() LogSubscriptionFilterOutput + ToLogSubscriptionFilterOutputWithContext(ctx context.Context) LogSubscriptionFilterOutput +} + +func (*LogSubscriptionFilter) ElementType() reflect.Type { + return reflect.TypeOf((**LogSubscriptionFilter)(nil)).Elem() +} + +func (i *LogSubscriptionFilter) ToLogSubscriptionFilterOutput() LogSubscriptionFilterOutput { + return i.ToLogSubscriptionFilterOutputWithContext(context.Background()) +} + +func (i *LogSubscriptionFilter) ToLogSubscriptionFilterOutputWithContext(ctx context.Context) LogSubscriptionFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogSubscriptionFilterOutput) +} + +// LogSubscriptionFilterArrayInput is an input type that accepts LogSubscriptionFilterArray and LogSubscriptionFilterArrayOutput values. +// You can construct a concrete instance of `LogSubscriptionFilterArrayInput` via: +// +// LogSubscriptionFilterArray{ LogSubscriptionFilterArgs{...} } +type LogSubscriptionFilterArrayInput interface { + pulumi.Input + + ToLogSubscriptionFilterArrayOutput() LogSubscriptionFilterArrayOutput + ToLogSubscriptionFilterArrayOutputWithContext(context.Context) LogSubscriptionFilterArrayOutput +} + +type LogSubscriptionFilterArray []LogSubscriptionFilterInput + +func (LogSubscriptionFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogSubscriptionFilter)(nil)).Elem() +} + +func (i LogSubscriptionFilterArray) ToLogSubscriptionFilterArrayOutput() LogSubscriptionFilterArrayOutput { + return i.ToLogSubscriptionFilterArrayOutputWithContext(context.Background()) +} + +func (i LogSubscriptionFilterArray) ToLogSubscriptionFilterArrayOutputWithContext(ctx context.Context) LogSubscriptionFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogSubscriptionFilterArrayOutput) +} + +// LogSubscriptionFilterMapInput is an input type that accepts LogSubscriptionFilterMap and LogSubscriptionFilterMapOutput values. +// You can construct a concrete instance of `LogSubscriptionFilterMapInput` via: +// +// LogSubscriptionFilterMap{ "key": LogSubscriptionFilterArgs{...} } +type LogSubscriptionFilterMapInput interface { + pulumi.Input + + ToLogSubscriptionFilterMapOutput() LogSubscriptionFilterMapOutput + ToLogSubscriptionFilterMapOutputWithContext(context.Context) LogSubscriptionFilterMapOutput +} + +type LogSubscriptionFilterMap map[string]LogSubscriptionFilterInput + +func (LogSubscriptionFilterMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogSubscriptionFilter)(nil)).Elem() +} + +func (i LogSubscriptionFilterMap) ToLogSubscriptionFilterMapOutput() LogSubscriptionFilterMapOutput { + return i.ToLogSubscriptionFilterMapOutputWithContext(context.Background()) +} + +func (i LogSubscriptionFilterMap) ToLogSubscriptionFilterMapOutputWithContext(ctx context.Context) LogSubscriptionFilterMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogSubscriptionFilterMapOutput) +} + +type LogSubscriptionFilterOutput struct{ *pulumi.OutputState } + +func (LogSubscriptionFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogSubscriptionFilter)(nil)).Elem() +} + +func (o LogSubscriptionFilterOutput) ToLogSubscriptionFilterOutput() LogSubscriptionFilterOutput { + return o +} + +func (o LogSubscriptionFilterOutput) ToLogSubscriptionFilterOutputWithContext(ctx context.Context) LogSubscriptionFilterOutput { + return o +} + +// The ARN of the destination to deliver matching log events to. Kinesis stream or Lambda function ARN. +func (o LogSubscriptionFilterOutput) DestinationArn() pulumi.StringOutput { + return o.ApplyT(func(v *LogSubscriptionFilter) pulumi.StringOutput { return v.DestinationArn }).(pulumi.StringOutput) +} + +// The method used to distribute log data to the destination. By default log data is grouped by log stream, but the grouping can be set to random for a more even distribution. This property is only applicable when the destination is an Amazon Kinesis stream. Valid values are "Random" and "ByLogStream". +func (o LogSubscriptionFilterOutput) Distribution() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogSubscriptionFilter) pulumi.StringPtrOutput { return v.Distribution }).(pulumi.StringPtrOutput) +} + +// A valid CloudWatch Logs filter pattern for subscribing to a filtered stream of log events. Use empty string `""` to match everything. For more information, see the [Amazon CloudWatch Logs User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html). +func (o LogSubscriptionFilterOutput) FilterPattern() pulumi.StringOutput { + return o.ApplyT(func(v *LogSubscriptionFilter) pulumi.StringOutput { return v.FilterPattern }).(pulumi.StringOutput) +} + +// The name of the log group to associate the subscription filter with +func (o LogSubscriptionFilterOutput) LogGroup() pulumi.StringOutput { + return o.ApplyT(func(v *LogSubscriptionFilter) pulumi.StringOutput { return v.LogGroup }).(pulumi.StringOutput) +} + +// A name for the subscription filter +func (o LogSubscriptionFilterOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *LogSubscriptionFilter) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The ARN of an IAM role that grants Amazon CloudWatch Logs permissions to deliver ingested log events to the destination. If you use Lambda as a destination, you should skip this argument and use `lambda.Permission` resource for granting access from CloudWatch logs to the destination Lambda function. +func (o LogSubscriptionFilterOutput) RoleArn() pulumi.StringOutput { + return o.ApplyT(func(v *LogSubscriptionFilter) pulumi.StringOutput { return v.RoleArn }).(pulumi.StringOutput) +} + +type LogSubscriptionFilterArrayOutput struct{ *pulumi.OutputState } + +func (LogSubscriptionFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*LogSubscriptionFilter)(nil)).Elem() +} + +func (o LogSubscriptionFilterArrayOutput) ToLogSubscriptionFilterArrayOutput() LogSubscriptionFilterArrayOutput { + return o +} + +func (o LogSubscriptionFilterArrayOutput) ToLogSubscriptionFilterArrayOutputWithContext(ctx context.Context) LogSubscriptionFilterArrayOutput { + return o +} + +func (o LogSubscriptionFilterArrayOutput) Index(i pulumi.IntInput) LogSubscriptionFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *LogSubscriptionFilter { + return vs[0].([]*LogSubscriptionFilter)[vs[1].(int)] + }).(LogSubscriptionFilterOutput) +} + +type LogSubscriptionFilterMapOutput struct{ *pulumi.OutputState } + +func (LogSubscriptionFilterMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*LogSubscriptionFilter)(nil)).Elem() +} + +func (o LogSubscriptionFilterMapOutput) ToLogSubscriptionFilterMapOutput() LogSubscriptionFilterMapOutput { + return o +} + +func (o LogSubscriptionFilterMapOutput) ToLogSubscriptionFilterMapOutputWithContext(ctx context.Context) LogSubscriptionFilterMapOutput { + return o +} + +func (o LogSubscriptionFilterMapOutput) MapIndex(k pulumi.StringInput) LogSubscriptionFilterOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *LogSubscriptionFilter { + return vs[0].(map[string]*LogSubscriptionFilter)[vs[1].(string)] + }).(LogSubscriptionFilterOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*LogSubscriptionFilterInput)(nil)).Elem(), &LogSubscriptionFilter{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogSubscriptionFilterArrayInput)(nil)).Elem(), LogSubscriptionFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogSubscriptionFilterMapInput)(nil)).Elem(), LogSubscriptionFilterMap{}) + pulumi.RegisterOutputType(LogSubscriptionFilterOutput{}) + pulumi.RegisterOutputType(LogSubscriptionFilterArrayOutput{}) + pulumi.RegisterOutputType(LogSubscriptionFilterMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricAlarm.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricAlarm.go new file mode 100644 index 000000000..b966b49a7 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricAlarm.go @@ -0,0 +1,884 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Metric Alarm resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewMetricAlarm(ctx, "foobar", &cloudwatch.MetricAlarmArgs{ +// Name: pulumi.String("test-foobar5"), +// ComparisonOperator: pulumi.String("GreaterThanOrEqualToThreshold"), +// EvaluationPeriods: pulumi.Int(2), +// MetricName: pulumi.String("CPUUtilization"), +// Namespace: pulumi.String("AWS/EC2"), +// Period: pulumi.Int(120), +// Statistic: pulumi.String("Average"), +// Threshold: pulumi.Float64(80), +// AlarmDescription: pulumi.String("This metric monitors ec2 cpu utilization"), +// InsufficientDataActions: pulumi.Array{}, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Example in Conjunction with Scaling Policies +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bat, err := autoscaling.NewPolicy(ctx, "bat", &autoscaling.PolicyArgs{ +// Name: pulumi.String("foobar3-test"), +// ScalingAdjustment: pulumi.Int(4), +// AdjustmentType: pulumi.String("ChangeInCapacity"), +// Cooldown: pulumi.Int(300), +// AutoscalingGroupName: pulumi.Any(bar.Name), +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewMetricAlarm(ctx, "bat", &cloudwatch.MetricAlarmArgs{ +// Name: pulumi.String("test-foobar5"), +// ComparisonOperator: pulumi.String("GreaterThanOrEqualToThreshold"), +// EvaluationPeriods: pulumi.Int(2), +// MetricName: pulumi.String("CPUUtilization"), +// Namespace: pulumi.String("AWS/EC2"), +// Period: pulumi.Int(120), +// Statistic: pulumi.String("Average"), +// Threshold: pulumi.Float64(80), +// Dimensions: pulumi.StringMap{ +// "AutoScalingGroupName": pulumi.Any(bar.Name), +// }, +// AlarmDescription: pulumi.String("This metric monitors ec2 cpu utilization"), +// AlarmActions: pulumi.Array{ +// bat.Arn, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Example with an Expression +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewMetricAlarm(ctx, "foobar", &cloudwatch.MetricAlarmArgs{ +// Name: pulumi.String("test-foobar"), +// ComparisonOperator: pulumi.String("GreaterThanOrEqualToThreshold"), +// EvaluationPeriods: pulumi.Int(2), +// Threshold: pulumi.Float64(10), +// AlarmDescription: pulumi.String("Request error rate has exceeded 10%"), +// InsufficientDataActions: pulumi.Array{}, +// MetricQueries: cloudwatch.MetricAlarmMetricQueryArray{ +// &cloudwatch.MetricAlarmMetricQueryArgs{ +// Id: pulumi.String("e1"), +// Expression: pulumi.String("m2/m1*100"), +// Label: pulumi.String("Error Rate"), +// ReturnData: pulumi.Bool(true), +// }, +// &cloudwatch.MetricAlarmMetricQueryArgs{ +// Id: pulumi.String("m1"), +// Metric: &cloudwatch.MetricAlarmMetricQueryMetricArgs{ +// MetricName: pulumi.String("RequestCount"), +// Namespace: pulumi.String("AWS/ApplicationELB"), +// Period: pulumi.Int(120), +// Stat: pulumi.String("Sum"), +// Unit: pulumi.String("Count"), +// Dimensions: pulumi.StringMap{ +// "LoadBalancer": pulumi.String("app/web"), +// }, +// }, +// }, +// &cloudwatch.MetricAlarmMetricQueryArgs{ +// Id: pulumi.String("m2"), +// Metric: &cloudwatch.MetricAlarmMetricQueryMetricArgs{ +// MetricName: pulumi.String("HTTPCode_ELB_5XX_Count"), +// Namespace: pulumi.String("AWS/ApplicationELB"), +// Period: pulumi.Int(120), +// Stat: pulumi.String("Sum"), +// Unit: pulumi.String("Count"), +// Dimensions: pulumi.StringMap{ +// "LoadBalancer": pulumi.String("app/web"), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewMetricAlarm(ctx, "xx_anomaly_detection", &cloudwatch.MetricAlarmArgs{ +// Name: pulumi.String("test-foobar"), +// ComparisonOperator: pulumi.String("GreaterThanUpperThreshold"), +// EvaluationPeriods: pulumi.Int(2), +// ThresholdMetricId: pulumi.String("e1"), +// AlarmDescription: pulumi.String("This metric monitors ec2 cpu utilization"), +// InsufficientDataActions: pulumi.Array{}, +// MetricQueries: cloudwatch.MetricAlarmMetricQueryArray{ +// &cloudwatch.MetricAlarmMetricQueryArgs{ +// Id: pulumi.String("e1"), +// Expression: pulumi.String("ANOMALY_DETECTION_BAND(m1)"), +// Label: pulumi.String("CPUUtilization (Expected)"), +// ReturnData: pulumi.Bool(true), +// }, +// &cloudwatch.MetricAlarmMetricQueryArgs{ +// Id: pulumi.String("m1"), +// ReturnData: pulumi.Bool(true), +// Metric: &cloudwatch.MetricAlarmMetricQueryMetricArgs{ +// MetricName: pulumi.String("CPUUtilization"), +// Namespace: pulumi.String("AWS/EC2"), +// Period: pulumi.Int(120), +// Stat: pulumi.String("Average"), +// Unit: pulumi.String("Count"), +// Dimensions: pulumi.StringMap{ +// "InstanceId": pulumi.String("i-abc123"), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Example of monitoring Healthy Hosts on NLB using Target Group and NLB +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewMetricAlarm(ctx, "nlb_healthyhosts", &cloudwatch.MetricAlarmArgs{ +// Name: pulumi.String("alarmname"), +// ComparisonOperator: pulumi.String("LessThanThreshold"), +// EvaluationPeriods: pulumi.Int(1), +// MetricName: pulumi.String("HealthyHostCount"), +// Namespace: pulumi.String("AWS/NetworkELB"), +// Period: pulumi.Int(60), +// Statistic: pulumi.String("Average"), +// Threshold: pulumi.Any(logstashServersCount), +// AlarmDescription: pulumi.String("Number of healthy nodes in Target Group"), +// ActionsEnabled: pulumi.Bool(true), +// AlarmActions: pulumi.Array{ +// sns.Arn, +// }, +// OkActions: pulumi.Array{ +// sns.Arn, +// }, +// Dimensions: pulumi.StringMap{ +// "TargetGroup": pulumi.Any(lb_tg.ArnSuffix), +// "LoadBalancer": pulumi.Any(lb.ArnSuffix), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// > **NOTE:** You cannot create a metric alarm consisting of both `statistic` and `extendedStatistic` parameters. +// You must choose one or the other +// +// ## Import +// +// Using `pulumi import`, import CloudWatch Metric Alarm using the `alarm_name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/metricAlarm:MetricAlarm test alarm-12345 +// ``` +type MetricAlarm struct { + pulumi.CustomResourceState + + // Indicates whether or not actions should be executed during any changes to the alarm's state. Defaults to `true`. + ActionsEnabled pulumi.BoolPtrOutput `pulumi:"actionsEnabled"` + // The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). + AlarmActions pulumi.StringArrayOutput `pulumi:"alarmActions"` + // The description for the alarm. + AlarmDescription pulumi.StringPtrOutput `pulumi:"alarmDescription"` + // The ARN of the CloudWatch Metric Alarm. + Arn pulumi.StringOutput `pulumi:"arn"` + // The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand. Either of the following is supported: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanThreshold`, `LessThanOrEqualToThreshold`. Additionally, the values `LessThanLowerOrGreaterThanUpperThreshold`, `LessThanLowerThreshold`, and `GreaterThanUpperThreshold` are used only for alarms based on anomaly detection models. + ComparisonOperator pulumi.StringOutput `pulumi:"comparisonOperator"` + // The number of datapoints that must be breaching to trigger the alarm. + DatapointsToAlarm pulumi.IntPtrOutput `pulumi:"datapointsToAlarm"` + // The dimensions for the alarm's associated metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Dimensions pulumi.StringMapOutput `pulumi:"dimensions"` + // Used only for alarms based on percentiles. + // If you specify `ignore`, the alarm state will not change during periods with too few data points to be statistically significant. + // If you specify `evaluate` or omit this parameter, the alarm will always be evaluated and possibly change state no matter how many data points are available. + // The following values are supported: `ignore`, and `evaluate`. + EvaluateLowSampleCountPercentiles pulumi.StringOutput `pulumi:"evaluateLowSampleCountPercentiles"` + // The number of periods over which data is compared to the specified threshold. + EvaluationPeriods pulumi.IntOutput `pulumi:"evaluationPeriods"` + // The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. + ExtendedStatistic pulumi.StringPtrOutput `pulumi:"extendedStatistic"` + // The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). + InsufficientDataActions pulumi.StringArrayOutput `pulumi:"insufficientDataActions"` + // The name for the alarm's associated metric. + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + MetricName pulumi.StringPtrOutput `pulumi:"metricName"` + // Enables you to create an alarm based on a metric math expression. You may specify at most 20. + MetricQueries MetricAlarmMetricQueryArrayOutput `pulumi:"metricQueries"` + // The descriptive name for the alarm. This name must be unique within the user's AWS account + Name pulumi.StringOutput `pulumi:"name"` + // The namespace for the alarm's associated metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Namespace pulumi.StringPtrOutput `pulumi:"namespace"` + // The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). + OkActions pulumi.StringArrayOutput `pulumi:"okActions"` + // The period in seconds over which the specified `statistic` is applied. + // Valid values are `10`, `30`, or any multiple of `60`. + Period pulumi.IntPtrOutput `pulumi:"period"` + // The statistic to apply to the alarm's associated metric. + // Either of the following is supported: `SampleCount`, `Average`, `Sum`, `Minimum`, `Maximum` + Statistic pulumi.StringPtrOutput `pulumi:"statistic"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** If you specify at least one `metricQuery`, you may not specify a `metricName`, `namespace`, `period` or `statistic`. If you do not specify a `metricQuery`, you must specify each of these (although you may use `extendedStatistic` instead of `statistic`). + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The value against which the specified statistic is compared. This parameter is required for alarms based on static thresholds, but should not be used for alarms based on anomaly detection models. + Threshold pulumi.Float64PtrOutput `pulumi:"threshold"` + // If this is an alarm based on an anomaly detection model, make this value match the ID of the ANOMALY_DETECTION_BAND function. + ThresholdMetricId pulumi.StringPtrOutput `pulumi:"thresholdMetricId"` + // Sets how this alarm is to handle missing data points. The following values are supported: `missing`, `ignore`, `breaching` and `notBreaching`. Defaults to `missing`. + TreatMissingData pulumi.StringPtrOutput `pulumi:"treatMissingData"` + // The unit for the alarm's associated metric. + Unit pulumi.StringPtrOutput `pulumi:"unit"` +} + +// NewMetricAlarm registers a new resource with the given unique name, arguments, and options. +func NewMetricAlarm(ctx *pulumi.Context, + name string, args *MetricAlarmArgs, opts ...pulumi.ResourceOption) (*MetricAlarm, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ComparisonOperator == nil { + return nil, errors.New("invalid value for required argument 'ComparisonOperator'") + } + if args.EvaluationPeriods == nil { + return nil, errors.New("invalid value for required argument 'EvaluationPeriods'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource MetricAlarm + err := ctx.RegisterResource("aws:cloudwatch/metricAlarm:MetricAlarm", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetMetricAlarm gets an existing MetricAlarm 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 GetMetricAlarm(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *MetricAlarmState, opts ...pulumi.ResourceOption) (*MetricAlarm, error) { + var resource MetricAlarm + err := ctx.ReadResource("aws:cloudwatch/metricAlarm:MetricAlarm", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering MetricAlarm resources. +type metricAlarmState struct { + // Indicates whether or not actions should be executed during any changes to the alarm's state. Defaults to `true`. + ActionsEnabled *bool `pulumi:"actionsEnabled"` + // The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). + AlarmActions []interface{} `pulumi:"alarmActions"` + // The description for the alarm. + AlarmDescription *string `pulumi:"alarmDescription"` + // The ARN of the CloudWatch Metric Alarm. + Arn *string `pulumi:"arn"` + // The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand. Either of the following is supported: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanThreshold`, `LessThanOrEqualToThreshold`. Additionally, the values `LessThanLowerOrGreaterThanUpperThreshold`, `LessThanLowerThreshold`, and `GreaterThanUpperThreshold` are used only for alarms based on anomaly detection models. + ComparisonOperator *string `pulumi:"comparisonOperator"` + // The number of datapoints that must be breaching to trigger the alarm. + DatapointsToAlarm *int `pulumi:"datapointsToAlarm"` + // The dimensions for the alarm's associated metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Dimensions map[string]string `pulumi:"dimensions"` + // Used only for alarms based on percentiles. + // If you specify `ignore`, the alarm state will not change during periods with too few data points to be statistically significant. + // If you specify `evaluate` or omit this parameter, the alarm will always be evaluated and possibly change state no matter how many data points are available. + // The following values are supported: `ignore`, and `evaluate`. + EvaluateLowSampleCountPercentiles *string `pulumi:"evaluateLowSampleCountPercentiles"` + // The number of periods over which data is compared to the specified threshold. + EvaluationPeriods *int `pulumi:"evaluationPeriods"` + // The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. + ExtendedStatistic *string `pulumi:"extendedStatistic"` + // The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). + InsufficientDataActions []interface{} `pulumi:"insufficientDataActions"` + // The name for the alarm's associated metric. + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + MetricName *string `pulumi:"metricName"` + // Enables you to create an alarm based on a metric math expression. You may specify at most 20. + MetricQueries []MetricAlarmMetricQuery `pulumi:"metricQueries"` + // The descriptive name for the alarm. This name must be unique within the user's AWS account + Name *string `pulumi:"name"` + // The namespace for the alarm's associated metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Namespace *string `pulumi:"namespace"` + // The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). + OkActions []interface{} `pulumi:"okActions"` + // The period in seconds over which the specified `statistic` is applied. + // Valid values are `10`, `30`, or any multiple of `60`. + Period *int `pulumi:"period"` + // The statistic to apply to the alarm's associated metric. + // Either of the following is supported: `SampleCount`, `Average`, `Sum`, `Minimum`, `Maximum` + Statistic *string `pulumi:"statistic"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** If you specify at least one `metricQuery`, you may not specify a `metricName`, `namespace`, `period` or `statistic`. If you do not specify a `metricQuery`, you must specify each of these (although you may use `extendedStatistic` instead of `statistic`). + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The value against which the specified statistic is compared. This parameter is required for alarms based on static thresholds, but should not be used for alarms based on anomaly detection models. + Threshold *float64 `pulumi:"threshold"` + // If this is an alarm based on an anomaly detection model, make this value match the ID of the ANOMALY_DETECTION_BAND function. + ThresholdMetricId *string `pulumi:"thresholdMetricId"` + // Sets how this alarm is to handle missing data points. The following values are supported: `missing`, `ignore`, `breaching` and `notBreaching`. Defaults to `missing`. + TreatMissingData *string `pulumi:"treatMissingData"` + // The unit for the alarm's associated metric. + Unit *string `pulumi:"unit"` +} + +type MetricAlarmState struct { + // Indicates whether or not actions should be executed during any changes to the alarm's state. Defaults to `true`. + ActionsEnabled pulumi.BoolPtrInput + // The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). + AlarmActions pulumi.ArrayInput + // The description for the alarm. + AlarmDescription pulumi.StringPtrInput + // The ARN of the CloudWatch Metric Alarm. + Arn pulumi.StringPtrInput + // The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand. Either of the following is supported: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanThreshold`, `LessThanOrEqualToThreshold`. Additionally, the values `LessThanLowerOrGreaterThanUpperThreshold`, `LessThanLowerThreshold`, and `GreaterThanUpperThreshold` are used only for alarms based on anomaly detection models. + ComparisonOperator pulumi.StringPtrInput + // The number of datapoints that must be breaching to trigger the alarm. + DatapointsToAlarm pulumi.IntPtrInput + // The dimensions for the alarm's associated metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Dimensions pulumi.StringMapInput + // Used only for alarms based on percentiles. + // If you specify `ignore`, the alarm state will not change during periods with too few data points to be statistically significant. + // If you specify `evaluate` or omit this parameter, the alarm will always be evaluated and possibly change state no matter how many data points are available. + // The following values are supported: `ignore`, and `evaluate`. + EvaluateLowSampleCountPercentiles pulumi.StringPtrInput + // The number of periods over which data is compared to the specified threshold. + EvaluationPeriods pulumi.IntPtrInput + // The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. + ExtendedStatistic pulumi.StringPtrInput + // The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). + InsufficientDataActions pulumi.ArrayInput + // The name for the alarm's associated metric. + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + MetricName pulumi.StringPtrInput + // Enables you to create an alarm based on a metric math expression. You may specify at most 20. + MetricQueries MetricAlarmMetricQueryArrayInput + // The descriptive name for the alarm. This name must be unique within the user's AWS account + Name pulumi.StringPtrInput + // The namespace for the alarm's associated metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Namespace pulumi.StringPtrInput + // The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). + OkActions pulumi.ArrayInput + // The period in seconds over which the specified `statistic` is applied. + // Valid values are `10`, `30`, or any multiple of `60`. + Period pulumi.IntPtrInput + // The statistic to apply to the alarm's associated metric. + // Either of the following is supported: `SampleCount`, `Average`, `Sum`, `Minimum`, `Maximum` + Statistic pulumi.StringPtrInput + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** If you specify at least one `metricQuery`, you may not specify a `metricName`, `namespace`, `period` or `statistic`. If you do not specify a `metricQuery`, you must specify each of these (although you may use `extendedStatistic` instead of `statistic`). + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The value against which the specified statistic is compared. This parameter is required for alarms based on static thresholds, but should not be used for alarms based on anomaly detection models. + Threshold pulumi.Float64PtrInput + // If this is an alarm based on an anomaly detection model, make this value match the ID of the ANOMALY_DETECTION_BAND function. + ThresholdMetricId pulumi.StringPtrInput + // Sets how this alarm is to handle missing data points. The following values are supported: `missing`, `ignore`, `breaching` and `notBreaching`. Defaults to `missing`. + TreatMissingData pulumi.StringPtrInput + // The unit for the alarm's associated metric. + Unit pulumi.StringPtrInput +} + +func (MetricAlarmState) ElementType() reflect.Type { + return reflect.TypeOf((*metricAlarmState)(nil)).Elem() +} + +type metricAlarmArgs struct { + // Indicates whether or not actions should be executed during any changes to the alarm's state. Defaults to `true`. + ActionsEnabled *bool `pulumi:"actionsEnabled"` + // The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). + AlarmActions []interface{} `pulumi:"alarmActions"` + // The description for the alarm. + AlarmDescription *string `pulumi:"alarmDescription"` + // The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand. Either of the following is supported: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanThreshold`, `LessThanOrEqualToThreshold`. Additionally, the values `LessThanLowerOrGreaterThanUpperThreshold`, `LessThanLowerThreshold`, and `GreaterThanUpperThreshold` are used only for alarms based on anomaly detection models. + ComparisonOperator string `pulumi:"comparisonOperator"` + // The number of datapoints that must be breaching to trigger the alarm. + DatapointsToAlarm *int `pulumi:"datapointsToAlarm"` + // The dimensions for the alarm's associated metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Dimensions map[string]string `pulumi:"dimensions"` + // Used only for alarms based on percentiles. + // If you specify `ignore`, the alarm state will not change during periods with too few data points to be statistically significant. + // If you specify `evaluate` or omit this parameter, the alarm will always be evaluated and possibly change state no matter how many data points are available. + // The following values are supported: `ignore`, and `evaluate`. + EvaluateLowSampleCountPercentiles *string `pulumi:"evaluateLowSampleCountPercentiles"` + // The number of periods over which data is compared to the specified threshold. + EvaluationPeriods int `pulumi:"evaluationPeriods"` + // The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. + ExtendedStatistic *string `pulumi:"extendedStatistic"` + // The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). + InsufficientDataActions []interface{} `pulumi:"insufficientDataActions"` + // The name for the alarm's associated metric. + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + MetricName *string `pulumi:"metricName"` + // Enables you to create an alarm based on a metric math expression. You may specify at most 20. + MetricQueries []MetricAlarmMetricQuery `pulumi:"metricQueries"` + // The descriptive name for the alarm. This name must be unique within the user's AWS account + Name *string `pulumi:"name"` + // The namespace for the alarm's associated metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Namespace *string `pulumi:"namespace"` + // The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). + OkActions []interface{} `pulumi:"okActions"` + // The period in seconds over which the specified `statistic` is applied. + // Valid values are `10`, `30`, or any multiple of `60`. + Period *int `pulumi:"period"` + // The statistic to apply to the alarm's associated metric. + // Either of the following is supported: `SampleCount`, `Average`, `Sum`, `Minimum`, `Maximum` + Statistic *string `pulumi:"statistic"` + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** If you specify at least one `metricQuery`, you may not specify a `metricName`, `namespace`, `period` or `statistic`. If you do not specify a `metricQuery`, you must specify each of these (although you may use `extendedStatistic` instead of `statistic`). + Tags map[string]string `pulumi:"tags"` + // The value against which the specified statistic is compared. This parameter is required for alarms based on static thresholds, but should not be used for alarms based on anomaly detection models. + Threshold *float64 `pulumi:"threshold"` + // If this is an alarm based on an anomaly detection model, make this value match the ID of the ANOMALY_DETECTION_BAND function. + ThresholdMetricId *string `pulumi:"thresholdMetricId"` + // Sets how this alarm is to handle missing data points. The following values are supported: `missing`, `ignore`, `breaching` and `notBreaching`. Defaults to `missing`. + TreatMissingData *string `pulumi:"treatMissingData"` + // The unit for the alarm's associated metric. + Unit *string `pulumi:"unit"` +} + +// The set of arguments for constructing a MetricAlarm resource. +type MetricAlarmArgs struct { + // Indicates whether or not actions should be executed during any changes to the alarm's state. Defaults to `true`. + ActionsEnabled pulumi.BoolPtrInput + // The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). + AlarmActions pulumi.ArrayInput + // The description for the alarm. + AlarmDescription pulumi.StringPtrInput + // The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand. Either of the following is supported: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanThreshold`, `LessThanOrEqualToThreshold`. Additionally, the values `LessThanLowerOrGreaterThanUpperThreshold`, `LessThanLowerThreshold`, and `GreaterThanUpperThreshold` are used only for alarms based on anomaly detection models. + ComparisonOperator pulumi.StringInput + // The number of datapoints that must be breaching to trigger the alarm. + DatapointsToAlarm pulumi.IntPtrInput + // The dimensions for the alarm's associated metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Dimensions pulumi.StringMapInput + // Used only for alarms based on percentiles. + // If you specify `ignore`, the alarm state will not change during periods with too few data points to be statistically significant. + // If you specify `evaluate` or omit this parameter, the alarm will always be evaluated and possibly change state no matter how many data points are available. + // The following values are supported: `ignore`, and `evaluate`. + EvaluateLowSampleCountPercentiles pulumi.StringPtrInput + // The number of periods over which data is compared to the specified threshold. + EvaluationPeriods pulumi.IntInput + // The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. + ExtendedStatistic pulumi.StringPtrInput + // The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). + InsufficientDataActions pulumi.ArrayInput + // The name for the alarm's associated metric. + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + MetricName pulumi.StringPtrInput + // Enables you to create an alarm based on a metric math expression. You may specify at most 20. + MetricQueries MetricAlarmMetricQueryArrayInput + // The descriptive name for the alarm. This name must be unique within the user's AWS account + Name pulumi.StringPtrInput + // The namespace for the alarm's associated metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Namespace pulumi.StringPtrInput + // The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). + OkActions pulumi.ArrayInput + // The period in seconds over which the specified `statistic` is applied. + // Valid values are `10`, `30`, or any multiple of `60`. + Period pulumi.IntPtrInput + // The statistic to apply to the alarm's associated metric. + // Either of the following is supported: `SampleCount`, `Average`, `Sum`, `Minimum`, `Maximum` + Statistic pulumi.StringPtrInput + // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** If you specify at least one `metricQuery`, you may not specify a `metricName`, `namespace`, `period` or `statistic`. If you do not specify a `metricQuery`, you must specify each of these (although you may use `extendedStatistic` instead of `statistic`). + Tags pulumi.StringMapInput + // The value against which the specified statistic is compared. This parameter is required for alarms based on static thresholds, but should not be used for alarms based on anomaly detection models. + Threshold pulumi.Float64PtrInput + // If this is an alarm based on an anomaly detection model, make this value match the ID of the ANOMALY_DETECTION_BAND function. + ThresholdMetricId pulumi.StringPtrInput + // Sets how this alarm is to handle missing data points. The following values are supported: `missing`, `ignore`, `breaching` and `notBreaching`. Defaults to `missing`. + TreatMissingData pulumi.StringPtrInput + // The unit for the alarm's associated metric. + Unit pulumi.StringPtrInput +} + +func (MetricAlarmArgs) ElementType() reflect.Type { + return reflect.TypeOf((*metricAlarmArgs)(nil)).Elem() +} + +type MetricAlarmInput interface { + pulumi.Input + + ToMetricAlarmOutput() MetricAlarmOutput + ToMetricAlarmOutputWithContext(ctx context.Context) MetricAlarmOutput +} + +func (*MetricAlarm) ElementType() reflect.Type { + return reflect.TypeOf((**MetricAlarm)(nil)).Elem() +} + +func (i *MetricAlarm) ToMetricAlarmOutput() MetricAlarmOutput { + return i.ToMetricAlarmOutputWithContext(context.Background()) +} + +func (i *MetricAlarm) ToMetricAlarmOutputWithContext(ctx context.Context) MetricAlarmOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmOutput) +} + +// MetricAlarmArrayInput is an input type that accepts MetricAlarmArray and MetricAlarmArrayOutput values. +// You can construct a concrete instance of `MetricAlarmArrayInput` via: +// +// MetricAlarmArray{ MetricAlarmArgs{...} } +type MetricAlarmArrayInput interface { + pulumi.Input + + ToMetricAlarmArrayOutput() MetricAlarmArrayOutput + ToMetricAlarmArrayOutputWithContext(context.Context) MetricAlarmArrayOutput +} + +type MetricAlarmArray []MetricAlarmInput + +func (MetricAlarmArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*MetricAlarm)(nil)).Elem() +} + +func (i MetricAlarmArray) ToMetricAlarmArrayOutput() MetricAlarmArrayOutput { + return i.ToMetricAlarmArrayOutputWithContext(context.Background()) +} + +func (i MetricAlarmArray) ToMetricAlarmArrayOutputWithContext(ctx context.Context) MetricAlarmArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmArrayOutput) +} + +// MetricAlarmMapInput is an input type that accepts MetricAlarmMap and MetricAlarmMapOutput values. +// You can construct a concrete instance of `MetricAlarmMapInput` via: +// +// MetricAlarmMap{ "key": MetricAlarmArgs{...} } +type MetricAlarmMapInput interface { + pulumi.Input + + ToMetricAlarmMapOutput() MetricAlarmMapOutput + ToMetricAlarmMapOutputWithContext(context.Context) MetricAlarmMapOutput +} + +type MetricAlarmMap map[string]MetricAlarmInput + +func (MetricAlarmMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*MetricAlarm)(nil)).Elem() +} + +func (i MetricAlarmMap) ToMetricAlarmMapOutput() MetricAlarmMapOutput { + return i.ToMetricAlarmMapOutputWithContext(context.Background()) +} + +func (i MetricAlarmMap) ToMetricAlarmMapOutputWithContext(ctx context.Context) MetricAlarmMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmMapOutput) +} + +type MetricAlarmOutput struct{ *pulumi.OutputState } + +func (MetricAlarmOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MetricAlarm)(nil)).Elem() +} + +func (o MetricAlarmOutput) ToMetricAlarmOutput() MetricAlarmOutput { + return o +} + +func (o MetricAlarmOutput) ToMetricAlarmOutputWithContext(ctx context.Context) MetricAlarmOutput { + return o +} + +// Indicates whether or not actions should be executed during any changes to the alarm's state. Defaults to `true`. +func (o MetricAlarmOutput) ActionsEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.BoolPtrOutput { return v.ActionsEnabled }).(pulumi.BoolPtrOutput) +} + +// The list of actions to execute when this alarm transitions into an ALARM state from any other state. Each action is specified as an Amazon Resource Name (ARN). +func (o MetricAlarmOutput) AlarmActions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringArrayOutput { return v.AlarmActions }).(pulumi.StringArrayOutput) +} + +// The description for the alarm. +func (o MetricAlarmOutput) AlarmDescription() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.AlarmDescription }).(pulumi.StringPtrOutput) +} + +// The ARN of the CloudWatch Metric Alarm. +func (o MetricAlarmOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The arithmetic operation to use when comparing the specified Statistic and Threshold. The specified Statistic value is used as the first operand. Either of the following is supported: `GreaterThanOrEqualToThreshold`, `GreaterThanThreshold`, `LessThanThreshold`, `LessThanOrEqualToThreshold`. Additionally, the values `LessThanLowerOrGreaterThanUpperThreshold`, `LessThanLowerThreshold`, and `GreaterThanUpperThreshold` are used only for alarms based on anomaly detection models. +func (o MetricAlarmOutput) ComparisonOperator() pulumi.StringOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringOutput { return v.ComparisonOperator }).(pulumi.StringOutput) +} + +// The number of datapoints that must be breaching to trigger the alarm. +func (o MetricAlarmOutput) DatapointsToAlarm() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.IntPtrOutput { return v.DatapointsToAlarm }).(pulumi.IntPtrOutput) +} + +// The dimensions for the alarm's associated metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmOutput) Dimensions() pulumi.StringMapOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringMapOutput { return v.Dimensions }).(pulumi.StringMapOutput) +} + +// Used only for alarms based on percentiles. +// If you specify `ignore`, the alarm state will not change during periods with too few data points to be statistically significant. +// If you specify `evaluate` or omit this parameter, the alarm will always be evaluated and possibly change state no matter how many data points are available. +// The following values are supported: `ignore`, and `evaluate`. +func (o MetricAlarmOutput) EvaluateLowSampleCountPercentiles() pulumi.StringOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringOutput { return v.EvaluateLowSampleCountPercentiles }).(pulumi.StringOutput) +} + +// The number of periods over which data is compared to the specified threshold. +func (o MetricAlarmOutput) EvaluationPeriods() pulumi.IntOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.IntOutput { return v.EvaluationPeriods }).(pulumi.IntOutput) +} + +// The percentile statistic for the metric associated with the alarm. Specify a value between p0.0 and p100. +func (o MetricAlarmOutput) ExtendedStatistic() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.ExtendedStatistic }).(pulumi.StringPtrOutput) +} + +// The list of actions to execute when this alarm transitions into an INSUFFICIENT_DATA state from any other state. Each action is specified as an Amazon Resource Name (ARN). +func (o MetricAlarmOutput) InsufficientDataActions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringArrayOutput { return v.InsufficientDataActions }).(pulumi.StringArrayOutput) +} + +// The name for the alarm's associated metric. +// See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmOutput) MetricName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.MetricName }).(pulumi.StringPtrOutput) +} + +// Enables you to create an alarm based on a metric math expression. You may specify at most 20. +func (o MetricAlarmOutput) MetricQueries() MetricAlarmMetricQueryArrayOutput { + return o.ApplyT(func(v *MetricAlarm) MetricAlarmMetricQueryArrayOutput { return v.MetricQueries }).(MetricAlarmMetricQueryArrayOutput) +} + +// The descriptive name for the alarm. This name must be unique within the user's AWS account +func (o MetricAlarmOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The namespace for the alarm's associated metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). +// See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// The list of actions to execute when this alarm transitions into an OK state from any other state. Each action is specified as an Amazon Resource Name (ARN). +func (o MetricAlarmOutput) OkActions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringArrayOutput { return v.OkActions }).(pulumi.StringArrayOutput) +} + +// The period in seconds over which the specified `statistic` is applied. +// Valid values are `10`, `30`, or any multiple of `60`. +func (o MetricAlarmOutput) Period() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.IntPtrOutput { return v.Period }).(pulumi.IntPtrOutput) +} + +// The statistic to apply to the alarm's associated metric. +// Either of the following is supported: `SampleCount`, `Average`, `Sum`, `Minimum`, `Maximum` +func (o MetricAlarmOutput) Statistic() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.Statistic }).(pulumi.StringPtrOutput) +} + +// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +// +// > **NOTE:** If you specify at least one `metricQuery`, you may not specify a `metricName`, `namespace`, `period` or `statistic`. If you do not specify a `metricQuery`, you must specify each of these (although you may use `extendedStatistic` instead of `statistic`). +func (o MetricAlarmOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o MetricAlarmOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The value against which the specified statistic is compared. This parameter is required for alarms based on static thresholds, but should not be used for alarms based on anomaly detection models. +func (o MetricAlarmOutput) Threshold() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.Float64PtrOutput { return v.Threshold }).(pulumi.Float64PtrOutput) +} + +// If this is an alarm based on an anomaly detection model, make this value match the ID of the ANOMALY_DETECTION_BAND function. +func (o MetricAlarmOutput) ThresholdMetricId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.ThresholdMetricId }).(pulumi.StringPtrOutput) +} + +// Sets how this alarm is to handle missing data points. The following values are supported: `missing`, `ignore`, `breaching` and `notBreaching`. Defaults to `missing`. +func (o MetricAlarmOutput) TreatMissingData() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.TreatMissingData }).(pulumi.StringPtrOutput) +} + +// The unit for the alarm's associated metric. +func (o MetricAlarmOutput) Unit() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarm) pulumi.StringPtrOutput { return v.Unit }).(pulumi.StringPtrOutput) +} + +type MetricAlarmArrayOutput struct{ *pulumi.OutputState } + +func (MetricAlarmArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*MetricAlarm)(nil)).Elem() +} + +func (o MetricAlarmArrayOutput) ToMetricAlarmArrayOutput() MetricAlarmArrayOutput { + return o +} + +func (o MetricAlarmArrayOutput) ToMetricAlarmArrayOutputWithContext(ctx context.Context) MetricAlarmArrayOutput { + return o +} + +func (o MetricAlarmArrayOutput) Index(i pulumi.IntInput) MetricAlarmOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *MetricAlarm { + return vs[0].([]*MetricAlarm)[vs[1].(int)] + }).(MetricAlarmOutput) +} + +type MetricAlarmMapOutput struct{ *pulumi.OutputState } + +func (MetricAlarmMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*MetricAlarm)(nil)).Elem() +} + +func (o MetricAlarmMapOutput) ToMetricAlarmMapOutput() MetricAlarmMapOutput { + return o +} + +func (o MetricAlarmMapOutput) ToMetricAlarmMapOutputWithContext(ctx context.Context) MetricAlarmMapOutput { + return o +} + +func (o MetricAlarmMapOutput) MapIndex(k pulumi.StringInput) MetricAlarmOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *MetricAlarm { + return vs[0].(map[string]*MetricAlarm)[vs[1].(string)] + }).(MetricAlarmOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*MetricAlarmInput)(nil)).Elem(), &MetricAlarm{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricAlarmArrayInput)(nil)).Elem(), MetricAlarmArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricAlarmMapInput)(nil)).Elem(), MetricAlarmMap{}) + pulumi.RegisterOutputType(MetricAlarmOutput{}) + pulumi.RegisterOutputType(MetricAlarmArrayOutput{}) + pulumi.RegisterOutputType(MetricAlarmMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricStream.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricStream.go new file mode 100644 index 000000000..9c04cd409 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/metricStream.go @@ -0,0 +1,684 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Metric Stream resource. +// +// ## Example Usage +// +// ### Filters +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kinesis" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// // https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html +// streamsAssumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "streams.metrics.cloudwatch.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// metricStreamToFirehoseRole, err := iam.NewRole(ctx, "metric_stream_to_firehose", &iam.RoleArgs{ +// Name: pulumi.String("metric_stream_to_firehose_role"), +// AssumeRolePolicy: pulumi.String(streamsAssumeRole.Json), +// }) +// if err != nil { +// return err +// } +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("metric-stream-test-bucket"), +// }) +// if err != nil { +// return err +// } +// firehoseAssumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "firehose.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// firehoseToS3Role, err := iam.NewRole(ctx, "firehose_to_s3", &iam.RoleArgs{ +// AssumeRolePolicy: pulumi.String(firehoseAssumeRole.Json), +// }) +// if err != nil { +// return err +// } +// s3Stream, err := kinesis.NewFirehoseDeliveryStream(ctx, "s3_stream", &kinesis.FirehoseDeliveryStreamArgs{ +// Name: pulumi.String("metric-stream-test-stream"), +// Destination: pulumi.String("extended_s3"), +// ExtendedS3Configuration: &kinesis.FirehoseDeliveryStreamExtendedS3ConfigurationArgs{ +// RoleArn: firehoseToS3Role.Arn, +// BucketArn: bucket.Arn, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = cloudwatch.NewMetricStream(ctx, "main", &cloudwatch.MetricStreamArgs{ +// Name: pulumi.String("my-metric-stream"), +// RoleArn: metricStreamToFirehoseRole.Arn, +// FirehoseArn: s3Stream.Arn, +// OutputFormat: pulumi.String("json"), +// IncludeFilters: cloudwatch.MetricStreamIncludeFilterArray{ +// &cloudwatch.MetricStreamIncludeFilterArgs{ +// Namespace: pulumi.String("AWS/EC2"), +// MetricNames: pulumi.StringArray{ +// pulumi.String("CPUUtilization"), +// pulumi.String("NetworkOut"), +// }, +// }, +// &cloudwatch.MetricStreamIncludeFilterArgs{ +// Namespace: pulumi.String("AWS/EBS"), +// MetricNames: pulumi.StringArray{}, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// // https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html +// metricStreamToFirehose := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("firehose:PutRecord"), +// pulumi.String("firehose:PutRecordBatch"), +// }, +// Resources: pulumi.StringArray{ +// s3Stream.Arn, +// }, +// }, +// }, +// }, nil) +// _, err = iam.NewRolePolicy(ctx, "metric_stream_to_firehose", &iam.RolePolicyArgs{ +// Name: pulumi.String("default"), +// Role: metricStreamToFirehoseRole.ID(), +// Policy: pulumi.String(metricStreamToFirehose.ApplyT(func(metricStreamToFirehose iam.GetPolicyDocumentResult) (*string, error) { +// return &metricStreamToFirehose.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "bucket_acl", &s3.BucketAclV2Args{ +// Bucket: bucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// firehoseToS3 := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("s3:AbortMultipartUpload"), +// pulumi.String("s3:GetBucketLocation"), +// pulumi.String("s3:GetObject"), +// pulumi.String("s3:ListBucket"), +// pulumi.String("s3:ListBucketMultipartUploads"), +// pulumi.String("s3:PutObject"), +// }, +// Resources: pulumi.StringArray{ +// bucket.Arn, +// bucket.Arn.ApplyT(func(arn string) (string, error) { +// return fmt.Sprintf("%v/*", arn), nil +// }).(pulumi.StringOutput), +// }, +// }, +// }, +// }, nil) +// _, err = iam.NewRolePolicy(ctx, "firehose_to_s3", &iam.RolePolicyArgs{ +// Name: pulumi.String("default"), +// Role: firehoseToS3Role.ID(), +// Policy: pulumi.String(firehoseToS3.ApplyT(func(firehoseToS3 iam.GetPolicyDocumentResult) (*string, error) { +// return &firehoseToS3.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Additional Statistics +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewMetricStream(ctx, "main", &cloudwatch.MetricStreamArgs{ +// Name: pulumi.String("my-metric-stream"), +// RoleArn: pulumi.Any(metricStreamToFirehose.Arn), +// FirehoseArn: pulumi.Any(s3Stream.Arn), +// OutputFormat: pulumi.String("json"), +// StatisticsConfigurations: cloudwatch.MetricStreamStatisticsConfigurationArray{ +// &cloudwatch.MetricStreamStatisticsConfigurationArgs{ +// AdditionalStatistics: pulumi.StringArray{ +// pulumi.String("p1"), +// pulumi.String("tm99"), +// }, +// IncludeMetrics: cloudwatch.MetricStreamStatisticsConfigurationIncludeMetricArray{ +// &cloudwatch.MetricStreamStatisticsConfigurationIncludeMetricArgs{ +// MetricName: pulumi.String("CPUUtilization"), +// Namespace: pulumi.String("AWS/EC2"), +// }, +// }, +// }, +// &cloudwatch.MetricStreamStatisticsConfigurationArgs{ +// AdditionalStatistics: pulumi.StringArray{ +// pulumi.String("TS(50.5:)"), +// }, +// IncludeMetrics: cloudwatch.MetricStreamStatisticsConfigurationIncludeMetricArray{ +// &cloudwatch.MetricStreamStatisticsConfigurationIncludeMetricArgs{ +// MetricName: pulumi.String("CPUUtilization"), +// Namespace: pulumi.String("AWS/EC2"), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch metric streams using the `name`. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/metricStream:MetricStream sample sample-stream-name +// ``` +type MetricStream struct { + pulumi.CustomResourceState + + // ARN of the metric stream. + Arn pulumi.StringOutput `pulumi:"arn"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was created. + CreationDate pulumi.StringOutput `pulumi:"creationDate"` + // List of exclusive metric filters. If you specify this parameter, the stream sends metrics from all metric namespaces except for the namespaces and the conditional metric names that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is excluded. Conflicts with `includeFilter`. + ExcludeFilters MetricStreamExcludeFilterArrayOutput `pulumi:"excludeFilters"` + // ARN of the Amazon Kinesis Firehose delivery stream to use for this metric stream. + FirehoseArn pulumi.StringOutput `pulumi:"firehoseArn"` + // List of inclusive metric filters. If you specify this parameter, the stream sends only the conditional metric names from the metric namespaces that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is included. Conflicts with `excludeFilter`. + IncludeFilters MetricStreamIncludeFilterArrayOutput `pulumi:"includeFilters"` + // If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false. For more information about linking accounts, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). + IncludeLinkedAccountsMetrics pulumi.BoolPtrOutput `pulumi:"includeLinkedAccountsMetrics"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was last updated. + LastUpdateDate pulumi.StringOutput `pulumi:"lastUpdateDate"` + // Friendly name of the metric stream. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // Output format for the stream. Possible values are `json`, `opentelemetry0.7`, and `opentelemetry1.0`. For more information about output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). + // + // The following arguments are optional: + OutputFormat pulumi.StringOutput `pulumi:"outputFormat"` + // ARN of the IAM role that this metric stream will use to access Amazon Kinesis Firehose resources. For more information about role permissions, see [Trust between CloudWatch and Kinesis Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html). + RoleArn pulumi.StringOutput `pulumi:"roleArn"` + // State of the metric stream. Possible values are `running` and `stopped`. + State pulumi.StringOutput `pulumi:"state"` + // For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's `outputFormat`. If the OutputFormat is `json`, you can stream any additional statistic that is supported by CloudWatch, listed in [CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is `opentelemetry0.7` or `opentelemetry1.0`, you can stream percentile statistics (p99 etc.). See details below. + StatisticsConfigurations MetricStreamStatisticsConfigurationArrayOutput `pulumi:"statisticsConfigurations"` + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewMetricStream registers a new resource with the given unique name, arguments, and options. +func NewMetricStream(ctx *pulumi.Context, + name string, args *MetricStreamArgs, opts ...pulumi.ResourceOption) (*MetricStream, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.FirehoseArn == nil { + return nil, errors.New("invalid value for required argument 'FirehoseArn'") + } + if args.OutputFormat == nil { + return nil, errors.New("invalid value for required argument 'OutputFormat'") + } + if args.RoleArn == nil { + return nil, errors.New("invalid value for required argument 'RoleArn'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource MetricStream + err := ctx.RegisterResource("aws:cloudwatch/metricStream:MetricStream", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetMetricStream gets an existing MetricStream 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 GetMetricStream(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *MetricStreamState, opts ...pulumi.ResourceOption) (*MetricStream, error) { + var resource MetricStream + err := ctx.ReadResource("aws:cloudwatch/metricStream:MetricStream", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering MetricStream resources. +type metricStreamState struct { + // ARN of the metric stream. + Arn *string `pulumi:"arn"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was created. + CreationDate *string `pulumi:"creationDate"` + // List of exclusive metric filters. If you specify this parameter, the stream sends metrics from all metric namespaces except for the namespaces and the conditional metric names that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is excluded. Conflicts with `includeFilter`. + ExcludeFilters []MetricStreamExcludeFilter `pulumi:"excludeFilters"` + // ARN of the Amazon Kinesis Firehose delivery stream to use for this metric stream. + FirehoseArn *string `pulumi:"firehoseArn"` + // List of inclusive metric filters. If you specify this parameter, the stream sends only the conditional metric names from the metric namespaces that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is included. Conflicts with `excludeFilter`. + IncludeFilters []MetricStreamIncludeFilter `pulumi:"includeFilters"` + // If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false. For more information about linking accounts, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). + IncludeLinkedAccountsMetrics *bool `pulumi:"includeLinkedAccountsMetrics"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was last updated. + LastUpdateDate *string `pulumi:"lastUpdateDate"` + // Friendly name of the metric stream. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`. + Name *string `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Output format for the stream. Possible values are `json`, `opentelemetry0.7`, and `opentelemetry1.0`. For more information about output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). + // + // The following arguments are optional: + OutputFormat *string `pulumi:"outputFormat"` + // ARN of the IAM role that this metric stream will use to access Amazon Kinesis Firehose resources. For more information about role permissions, see [Trust between CloudWatch and Kinesis Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html). + RoleArn *string `pulumi:"roleArn"` + // State of the metric stream. Possible values are `running` and `stopped`. + State *string `pulumi:"state"` + // For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's `outputFormat`. If the OutputFormat is `json`, you can stream any additional statistic that is supported by CloudWatch, listed in [CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is `opentelemetry0.7` or `opentelemetry1.0`, you can stream percentile statistics (p99 etc.). See details below. + StatisticsConfigurations []MetricStreamStatisticsConfiguration `pulumi:"statisticsConfigurations"` + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type MetricStreamState struct { + // ARN of the metric stream. + Arn pulumi.StringPtrInput + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was created. + CreationDate pulumi.StringPtrInput + // List of exclusive metric filters. If you specify this parameter, the stream sends metrics from all metric namespaces except for the namespaces and the conditional metric names that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is excluded. Conflicts with `includeFilter`. + ExcludeFilters MetricStreamExcludeFilterArrayInput + // ARN of the Amazon Kinesis Firehose delivery stream to use for this metric stream. + FirehoseArn pulumi.StringPtrInput + // List of inclusive metric filters. If you specify this parameter, the stream sends only the conditional metric names from the metric namespaces that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is included. Conflicts with `excludeFilter`. + IncludeFilters MetricStreamIncludeFilterArrayInput + // If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false. For more information about linking accounts, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). + IncludeLinkedAccountsMetrics pulumi.BoolPtrInput + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was last updated. + LastUpdateDate pulumi.StringPtrInput + // Friendly name of the metric stream. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`. + Name pulumi.StringPtrInput + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Output format for the stream. Possible values are `json`, `opentelemetry0.7`, and `opentelemetry1.0`. For more information about output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). + // + // The following arguments are optional: + OutputFormat pulumi.StringPtrInput + // ARN of the IAM role that this metric stream will use to access Amazon Kinesis Firehose resources. For more information about role permissions, see [Trust between CloudWatch and Kinesis Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html). + RoleArn pulumi.StringPtrInput + // State of the metric stream. Possible values are `running` and `stopped`. + State pulumi.StringPtrInput + // For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's `outputFormat`. If the OutputFormat is `json`, you can stream any additional statistic that is supported by CloudWatch, listed in [CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is `opentelemetry0.7` or `opentelemetry1.0`, you can stream percentile statistics (p99 etc.). See details below. + StatisticsConfigurations MetricStreamStatisticsConfigurationArrayInput + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (MetricStreamState) ElementType() reflect.Type { + return reflect.TypeOf((*metricStreamState)(nil)).Elem() +} + +type metricStreamArgs struct { + // List of exclusive metric filters. If you specify this parameter, the stream sends metrics from all metric namespaces except for the namespaces and the conditional metric names that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is excluded. Conflicts with `includeFilter`. + ExcludeFilters []MetricStreamExcludeFilter `pulumi:"excludeFilters"` + // ARN of the Amazon Kinesis Firehose delivery stream to use for this metric stream. + FirehoseArn string `pulumi:"firehoseArn"` + // List of inclusive metric filters. If you specify this parameter, the stream sends only the conditional metric names from the metric namespaces that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is included. Conflicts with `excludeFilter`. + IncludeFilters []MetricStreamIncludeFilter `pulumi:"includeFilters"` + // If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false. For more information about linking accounts, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). + IncludeLinkedAccountsMetrics *bool `pulumi:"includeLinkedAccountsMetrics"` + // Friendly name of the metric stream. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`. + Name *string `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Output format for the stream. Possible values are `json`, `opentelemetry0.7`, and `opentelemetry1.0`. For more information about output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). + // + // The following arguments are optional: + OutputFormat string `pulumi:"outputFormat"` + // ARN of the IAM role that this metric stream will use to access Amazon Kinesis Firehose resources. For more information about role permissions, see [Trust between CloudWatch and Kinesis Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html). + RoleArn string `pulumi:"roleArn"` + // For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's `outputFormat`. If the OutputFormat is `json`, you can stream any additional statistic that is supported by CloudWatch, listed in [CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is `opentelemetry0.7` or `opentelemetry1.0`, you can stream percentile statistics (p99 etc.). See details below. + StatisticsConfigurations []MetricStreamStatisticsConfiguration `pulumi:"statisticsConfigurations"` + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a MetricStream resource. +type MetricStreamArgs struct { + // List of exclusive metric filters. If you specify this parameter, the stream sends metrics from all metric namespaces except for the namespaces and the conditional metric names that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is excluded. Conflicts with `includeFilter`. + ExcludeFilters MetricStreamExcludeFilterArrayInput + // ARN of the Amazon Kinesis Firehose delivery stream to use for this metric stream. + FirehoseArn pulumi.StringInput + // List of inclusive metric filters. If you specify this parameter, the stream sends only the conditional metric names from the metric namespaces that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is included. Conflicts with `excludeFilter`. + IncludeFilters MetricStreamIncludeFilterArrayInput + // If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false. For more information about linking accounts, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). + IncludeLinkedAccountsMetrics pulumi.BoolPtrInput + // Friendly name of the metric stream. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`. + Name pulumi.StringPtrInput + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Output format for the stream. Possible values are `json`, `opentelemetry0.7`, and `opentelemetry1.0`. For more information about output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). + // + // The following arguments are optional: + OutputFormat pulumi.StringInput + // ARN of the IAM role that this metric stream will use to access Amazon Kinesis Firehose resources. For more information about role permissions, see [Trust between CloudWatch and Kinesis Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html). + RoleArn pulumi.StringInput + // For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's `outputFormat`. If the OutputFormat is `json`, you can stream any additional statistic that is supported by CloudWatch, listed in [CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is `opentelemetry0.7` or `opentelemetry1.0`, you can stream percentile statistics (p99 etc.). See details below. + StatisticsConfigurations MetricStreamStatisticsConfigurationArrayInput + // Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (MetricStreamArgs) ElementType() reflect.Type { + return reflect.TypeOf((*metricStreamArgs)(nil)).Elem() +} + +type MetricStreamInput interface { + pulumi.Input + + ToMetricStreamOutput() MetricStreamOutput + ToMetricStreamOutputWithContext(ctx context.Context) MetricStreamOutput +} + +func (*MetricStream) ElementType() reflect.Type { + return reflect.TypeOf((**MetricStream)(nil)).Elem() +} + +func (i *MetricStream) ToMetricStreamOutput() MetricStreamOutput { + return i.ToMetricStreamOutputWithContext(context.Background()) +} + +func (i *MetricStream) ToMetricStreamOutputWithContext(ctx context.Context) MetricStreamOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamOutput) +} + +// MetricStreamArrayInput is an input type that accepts MetricStreamArray and MetricStreamArrayOutput values. +// You can construct a concrete instance of `MetricStreamArrayInput` via: +// +// MetricStreamArray{ MetricStreamArgs{...} } +type MetricStreamArrayInput interface { + pulumi.Input + + ToMetricStreamArrayOutput() MetricStreamArrayOutput + ToMetricStreamArrayOutputWithContext(context.Context) MetricStreamArrayOutput +} + +type MetricStreamArray []MetricStreamInput + +func (MetricStreamArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*MetricStream)(nil)).Elem() +} + +func (i MetricStreamArray) ToMetricStreamArrayOutput() MetricStreamArrayOutput { + return i.ToMetricStreamArrayOutputWithContext(context.Background()) +} + +func (i MetricStreamArray) ToMetricStreamArrayOutputWithContext(ctx context.Context) MetricStreamArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamArrayOutput) +} + +// MetricStreamMapInput is an input type that accepts MetricStreamMap and MetricStreamMapOutput values. +// You can construct a concrete instance of `MetricStreamMapInput` via: +// +// MetricStreamMap{ "key": MetricStreamArgs{...} } +type MetricStreamMapInput interface { + pulumi.Input + + ToMetricStreamMapOutput() MetricStreamMapOutput + ToMetricStreamMapOutputWithContext(context.Context) MetricStreamMapOutput +} + +type MetricStreamMap map[string]MetricStreamInput + +func (MetricStreamMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*MetricStream)(nil)).Elem() +} + +func (i MetricStreamMap) ToMetricStreamMapOutput() MetricStreamMapOutput { + return i.ToMetricStreamMapOutputWithContext(context.Background()) +} + +func (i MetricStreamMap) ToMetricStreamMapOutputWithContext(ctx context.Context) MetricStreamMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamMapOutput) +} + +type MetricStreamOutput struct{ *pulumi.OutputState } + +func (MetricStreamOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MetricStream)(nil)).Elem() +} + +func (o MetricStreamOutput) ToMetricStreamOutput() MetricStreamOutput { + return o +} + +func (o MetricStreamOutput) ToMetricStreamOutputWithContext(ctx context.Context) MetricStreamOutput { + return o +} + +// ARN of the metric stream. +func (o MetricStreamOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was created. +func (o MetricStreamOutput) CreationDate() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.CreationDate }).(pulumi.StringOutput) +} + +// List of exclusive metric filters. If you specify this parameter, the stream sends metrics from all metric namespaces except for the namespaces and the conditional metric names that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is excluded. Conflicts with `includeFilter`. +func (o MetricStreamOutput) ExcludeFilters() MetricStreamExcludeFilterArrayOutput { + return o.ApplyT(func(v *MetricStream) MetricStreamExcludeFilterArrayOutput { return v.ExcludeFilters }).(MetricStreamExcludeFilterArrayOutput) +} + +// ARN of the Amazon Kinesis Firehose delivery stream to use for this metric stream. +func (o MetricStreamOutput) FirehoseArn() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.FirehoseArn }).(pulumi.StringOutput) +} + +// List of inclusive metric filters. If you specify this parameter, the stream sends only the conditional metric names from the metric namespaces that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is included. Conflicts with `excludeFilter`. +func (o MetricStreamOutput) IncludeFilters() MetricStreamIncludeFilterArrayOutput { + return o.ApplyT(func(v *MetricStream) MetricStreamIncludeFilterArrayOutput { return v.IncludeFilters }).(MetricStreamIncludeFilterArrayOutput) +} + +// If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false. For more information about linking accounts, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html). +func (o MetricStreamOutput) IncludeLinkedAccountsMetrics() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *MetricStream) pulumi.BoolPtrOutput { return v.IncludeLinkedAccountsMetrics }).(pulumi.BoolPtrOutput) +} + +// Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was last updated. +func (o MetricStreamOutput) LastUpdateDate() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.LastUpdateDate }).(pulumi.StringOutput) +} + +// Friendly name of the metric stream. If omitted, the provider will assign a random, unique name. Conflicts with `namePrefix`. +func (o MetricStreamOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. +func (o MetricStreamOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// Output format for the stream. Possible values are `json`, `opentelemetry0.7`, and `opentelemetry1.0`. For more information about output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). +// +// The following arguments are optional: +func (o MetricStreamOutput) OutputFormat() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.OutputFormat }).(pulumi.StringOutput) +} + +// ARN of the IAM role that this metric stream will use to access Amazon Kinesis Firehose resources. For more information about role permissions, see [Trust between CloudWatch and Kinesis Data Firehose](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html). +func (o MetricStreamOutput) RoleArn() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.RoleArn }).(pulumi.StringOutput) +} + +// State of the metric stream. Possible values are `running` and `stopped`. +func (o MetricStreamOutput) State() pulumi.StringOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringOutput { return v.State }).(pulumi.StringOutput) +} + +// For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's `outputFormat`. If the OutputFormat is `json`, you can stream any additional statistic that is supported by CloudWatch, listed in [CloudWatch statistics definitions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is `opentelemetry0.7` or `opentelemetry1.0`, you can stream percentile statistics (p99 etc.). See details below. +func (o MetricStreamOutput) StatisticsConfigurations() MetricStreamStatisticsConfigurationArrayOutput { + return o.ApplyT(func(v *MetricStream) MetricStreamStatisticsConfigurationArrayOutput { + return v.StatisticsConfigurations + }).(MetricStreamStatisticsConfigurationArrayOutput) +} + +// Map of tags to assign to the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o MetricStreamOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o MetricStreamOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *MetricStream) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type MetricStreamArrayOutput struct{ *pulumi.OutputState } + +func (MetricStreamArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*MetricStream)(nil)).Elem() +} + +func (o MetricStreamArrayOutput) ToMetricStreamArrayOutput() MetricStreamArrayOutput { + return o +} + +func (o MetricStreamArrayOutput) ToMetricStreamArrayOutputWithContext(ctx context.Context) MetricStreamArrayOutput { + return o +} + +func (o MetricStreamArrayOutput) Index(i pulumi.IntInput) MetricStreamOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *MetricStream { + return vs[0].([]*MetricStream)[vs[1].(int)] + }).(MetricStreamOutput) +} + +type MetricStreamMapOutput struct{ *pulumi.OutputState } + +func (MetricStreamMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*MetricStream)(nil)).Elem() +} + +func (o MetricStreamMapOutput) ToMetricStreamMapOutput() MetricStreamMapOutput { + return o +} + +func (o MetricStreamMapOutput) ToMetricStreamMapOutputWithContext(ctx context.Context) MetricStreamMapOutput { + return o +} + +func (o MetricStreamMapOutput) MapIndex(k pulumi.StringInput) MetricStreamOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *MetricStream { + return vs[0].(map[string]*MetricStream)[vs[1].(string)] + }).(MetricStreamOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamInput)(nil)).Elem(), &MetricStream{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamArrayInput)(nil)).Elem(), MetricStreamArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamMapInput)(nil)).Elem(), MetricStreamMap{}) + pulumi.RegisterOutputType(MetricStreamOutput{}) + pulumi.RegisterOutputType(MetricStreamArrayOutput{}) + pulumi.RegisterOutputType(MetricStreamMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/pulumiTypes.go new file mode 100644 index 000000000..6ef54a35e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/pulumiTypes.go @@ -0,0 +1,8721 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type CompositeAlarmActionsSuppressor struct { + // Can be an AlarmName or an Amazon Resource Name (ARN) from an existing alarm. + Alarm string `pulumi:"alarm"` + // The maximum time in seconds that the composite alarm waits after suppressor alarm goes out of the `ALARM` state. After this time, the composite alarm performs its actions. + ExtensionPeriod int `pulumi:"extensionPeriod"` + // The maximum time in seconds that the composite alarm waits for the suppressor alarm to go into the `ALARM` state. After this time, the composite alarm performs its actions. + WaitPeriod int `pulumi:"waitPeriod"` +} + +// CompositeAlarmActionsSuppressorInput is an input type that accepts CompositeAlarmActionsSuppressorArgs and CompositeAlarmActionsSuppressorOutput values. +// You can construct a concrete instance of `CompositeAlarmActionsSuppressorInput` via: +// +// CompositeAlarmActionsSuppressorArgs{...} +type CompositeAlarmActionsSuppressorInput interface { + pulumi.Input + + ToCompositeAlarmActionsSuppressorOutput() CompositeAlarmActionsSuppressorOutput + ToCompositeAlarmActionsSuppressorOutputWithContext(context.Context) CompositeAlarmActionsSuppressorOutput +} + +type CompositeAlarmActionsSuppressorArgs struct { + // Can be an AlarmName or an Amazon Resource Name (ARN) from an existing alarm. + Alarm pulumi.StringInput `pulumi:"alarm"` + // The maximum time in seconds that the composite alarm waits after suppressor alarm goes out of the `ALARM` state. After this time, the composite alarm performs its actions. + ExtensionPeriod pulumi.IntInput `pulumi:"extensionPeriod"` + // The maximum time in seconds that the composite alarm waits for the suppressor alarm to go into the `ALARM` state. After this time, the composite alarm performs its actions. + WaitPeriod pulumi.IntInput `pulumi:"waitPeriod"` +} + +func (CompositeAlarmActionsSuppressorArgs) ElementType() reflect.Type { + return reflect.TypeOf((*CompositeAlarmActionsSuppressor)(nil)).Elem() +} + +func (i CompositeAlarmActionsSuppressorArgs) ToCompositeAlarmActionsSuppressorOutput() CompositeAlarmActionsSuppressorOutput { + return i.ToCompositeAlarmActionsSuppressorOutputWithContext(context.Background()) +} + +func (i CompositeAlarmActionsSuppressorArgs) ToCompositeAlarmActionsSuppressorOutputWithContext(ctx context.Context) CompositeAlarmActionsSuppressorOutput { + return pulumi.ToOutputWithContext(ctx, i).(CompositeAlarmActionsSuppressorOutput) +} + +func (i CompositeAlarmActionsSuppressorArgs) ToCompositeAlarmActionsSuppressorPtrOutput() CompositeAlarmActionsSuppressorPtrOutput { + return i.ToCompositeAlarmActionsSuppressorPtrOutputWithContext(context.Background()) +} + +func (i CompositeAlarmActionsSuppressorArgs) ToCompositeAlarmActionsSuppressorPtrOutputWithContext(ctx context.Context) CompositeAlarmActionsSuppressorPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CompositeAlarmActionsSuppressorOutput).ToCompositeAlarmActionsSuppressorPtrOutputWithContext(ctx) +} + +// CompositeAlarmActionsSuppressorPtrInput is an input type that accepts CompositeAlarmActionsSuppressorArgs, CompositeAlarmActionsSuppressorPtr and CompositeAlarmActionsSuppressorPtrOutput values. +// You can construct a concrete instance of `CompositeAlarmActionsSuppressorPtrInput` via: +// +// CompositeAlarmActionsSuppressorArgs{...} +// +// or: +// +// nil +type CompositeAlarmActionsSuppressorPtrInput interface { + pulumi.Input + + ToCompositeAlarmActionsSuppressorPtrOutput() CompositeAlarmActionsSuppressorPtrOutput + ToCompositeAlarmActionsSuppressorPtrOutputWithContext(context.Context) CompositeAlarmActionsSuppressorPtrOutput +} + +type compositeAlarmActionsSuppressorPtrType CompositeAlarmActionsSuppressorArgs + +func CompositeAlarmActionsSuppressorPtr(v *CompositeAlarmActionsSuppressorArgs) CompositeAlarmActionsSuppressorPtrInput { + return (*compositeAlarmActionsSuppressorPtrType)(v) +} + +func (*compositeAlarmActionsSuppressorPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**CompositeAlarmActionsSuppressor)(nil)).Elem() +} + +func (i *compositeAlarmActionsSuppressorPtrType) ToCompositeAlarmActionsSuppressorPtrOutput() CompositeAlarmActionsSuppressorPtrOutput { + return i.ToCompositeAlarmActionsSuppressorPtrOutputWithContext(context.Background()) +} + +func (i *compositeAlarmActionsSuppressorPtrType) ToCompositeAlarmActionsSuppressorPtrOutputWithContext(ctx context.Context) CompositeAlarmActionsSuppressorPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CompositeAlarmActionsSuppressorPtrOutput) +} + +type CompositeAlarmActionsSuppressorOutput struct{ *pulumi.OutputState } + +func (CompositeAlarmActionsSuppressorOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CompositeAlarmActionsSuppressor)(nil)).Elem() +} + +func (o CompositeAlarmActionsSuppressorOutput) ToCompositeAlarmActionsSuppressorOutput() CompositeAlarmActionsSuppressorOutput { + return o +} + +func (o CompositeAlarmActionsSuppressorOutput) ToCompositeAlarmActionsSuppressorOutputWithContext(ctx context.Context) CompositeAlarmActionsSuppressorOutput { + return o +} + +func (o CompositeAlarmActionsSuppressorOutput) ToCompositeAlarmActionsSuppressorPtrOutput() CompositeAlarmActionsSuppressorPtrOutput { + return o.ToCompositeAlarmActionsSuppressorPtrOutputWithContext(context.Background()) +} + +func (o CompositeAlarmActionsSuppressorOutput) ToCompositeAlarmActionsSuppressorPtrOutputWithContext(ctx context.Context) CompositeAlarmActionsSuppressorPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v CompositeAlarmActionsSuppressor) *CompositeAlarmActionsSuppressor { + return &v + }).(CompositeAlarmActionsSuppressorPtrOutput) +} + +// Can be an AlarmName or an Amazon Resource Name (ARN) from an existing alarm. +func (o CompositeAlarmActionsSuppressorOutput) Alarm() pulumi.StringOutput { + return o.ApplyT(func(v CompositeAlarmActionsSuppressor) string { return v.Alarm }).(pulumi.StringOutput) +} + +// The maximum time in seconds that the composite alarm waits after suppressor alarm goes out of the `ALARM` state. After this time, the composite alarm performs its actions. +func (o CompositeAlarmActionsSuppressorOutput) ExtensionPeriod() pulumi.IntOutput { + return o.ApplyT(func(v CompositeAlarmActionsSuppressor) int { return v.ExtensionPeriod }).(pulumi.IntOutput) +} + +// The maximum time in seconds that the composite alarm waits for the suppressor alarm to go into the `ALARM` state. After this time, the composite alarm performs its actions. +func (o CompositeAlarmActionsSuppressorOutput) WaitPeriod() pulumi.IntOutput { + return o.ApplyT(func(v CompositeAlarmActionsSuppressor) int { return v.WaitPeriod }).(pulumi.IntOutput) +} + +type CompositeAlarmActionsSuppressorPtrOutput struct{ *pulumi.OutputState } + +func (CompositeAlarmActionsSuppressorPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CompositeAlarmActionsSuppressor)(nil)).Elem() +} + +func (o CompositeAlarmActionsSuppressorPtrOutput) ToCompositeAlarmActionsSuppressorPtrOutput() CompositeAlarmActionsSuppressorPtrOutput { + return o +} + +func (o CompositeAlarmActionsSuppressorPtrOutput) ToCompositeAlarmActionsSuppressorPtrOutputWithContext(ctx context.Context) CompositeAlarmActionsSuppressorPtrOutput { + return o +} + +func (o CompositeAlarmActionsSuppressorPtrOutput) Elem() CompositeAlarmActionsSuppressorOutput { + return o.ApplyT(func(v *CompositeAlarmActionsSuppressor) CompositeAlarmActionsSuppressor { + if v != nil { + return *v + } + var ret CompositeAlarmActionsSuppressor + return ret + }).(CompositeAlarmActionsSuppressorOutput) +} + +// Can be an AlarmName or an Amazon Resource Name (ARN) from an existing alarm. +func (o CompositeAlarmActionsSuppressorPtrOutput) Alarm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CompositeAlarmActionsSuppressor) *string { + if v == nil { + return nil + } + return &v.Alarm + }).(pulumi.StringPtrOutput) +} + +// The maximum time in seconds that the composite alarm waits after suppressor alarm goes out of the `ALARM` state. After this time, the composite alarm performs its actions. +func (o CompositeAlarmActionsSuppressorPtrOutput) ExtensionPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v *CompositeAlarmActionsSuppressor) *int { + if v == nil { + return nil + } + return &v.ExtensionPeriod + }).(pulumi.IntPtrOutput) +} + +// The maximum time in seconds that the composite alarm waits for the suppressor alarm to go into the `ALARM` state. After this time, the composite alarm performs its actions. +func (o CompositeAlarmActionsSuppressorPtrOutput) WaitPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v *CompositeAlarmActionsSuppressor) *int { + if v == nil { + return nil + } + return &v.WaitPeriod + }).(pulumi.IntPtrOutput) +} + +type EventConnectionAuthParameters struct { + // Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below. + ApiKey *EventConnectionAuthParametersApiKey `pulumi:"apiKey"` + // Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `apiKey` and `oauth`. Documented below. + Basic *EventConnectionAuthParametersBasic `pulumi:"basic"` + // Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. + InvocationHttpParameters *EventConnectionAuthParametersInvocationHttpParameters `pulumi:"invocationHttpParameters"` + // Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `apiKey`. Documented below. + Oauth *EventConnectionAuthParametersOauth `pulumi:"oauth"` +} + +// EventConnectionAuthParametersInput is an input type that accepts EventConnectionAuthParametersArgs and EventConnectionAuthParametersOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInput` via: +// +// EventConnectionAuthParametersArgs{...} +type EventConnectionAuthParametersInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOutput() EventConnectionAuthParametersOutput + ToEventConnectionAuthParametersOutputWithContext(context.Context) EventConnectionAuthParametersOutput +} + +type EventConnectionAuthParametersArgs struct { + // Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below. + ApiKey EventConnectionAuthParametersApiKeyPtrInput `pulumi:"apiKey"` + // Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `apiKey` and `oauth`. Documented below. + Basic EventConnectionAuthParametersBasicPtrInput `pulumi:"basic"` + // Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. + InvocationHttpParameters EventConnectionAuthParametersInvocationHttpParametersPtrInput `pulumi:"invocationHttpParameters"` + // Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `apiKey`. Documented below. + Oauth EventConnectionAuthParametersOauthPtrInput `pulumi:"oauth"` +} + +func (EventConnectionAuthParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParameters)(nil)).Elem() +} + +func (i EventConnectionAuthParametersArgs) ToEventConnectionAuthParametersOutput() EventConnectionAuthParametersOutput { + return i.ToEventConnectionAuthParametersOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersArgs) ToEventConnectionAuthParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOutput) +} + +func (i EventConnectionAuthParametersArgs) ToEventConnectionAuthParametersPtrOutput() EventConnectionAuthParametersPtrOutput { + return i.ToEventConnectionAuthParametersPtrOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersArgs) ToEventConnectionAuthParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOutput).ToEventConnectionAuthParametersPtrOutputWithContext(ctx) +} + +// EventConnectionAuthParametersPtrInput is an input type that accepts EventConnectionAuthParametersArgs, EventConnectionAuthParametersPtr and EventConnectionAuthParametersPtrOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersPtrInput` via: +// +// EventConnectionAuthParametersArgs{...} +// +// or: +// +// nil +type EventConnectionAuthParametersPtrInput interface { + pulumi.Input + + ToEventConnectionAuthParametersPtrOutput() EventConnectionAuthParametersPtrOutput + ToEventConnectionAuthParametersPtrOutputWithContext(context.Context) EventConnectionAuthParametersPtrOutput +} + +type eventConnectionAuthParametersPtrType EventConnectionAuthParametersArgs + +func EventConnectionAuthParametersPtr(v *EventConnectionAuthParametersArgs) EventConnectionAuthParametersPtrInput { + return (*eventConnectionAuthParametersPtrType)(v) +} + +func (*eventConnectionAuthParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParameters)(nil)).Elem() +} + +func (i *eventConnectionAuthParametersPtrType) ToEventConnectionAuthParametersPtrOutput() EventConnectionAuthParametersPtrOutput { + return i.ToEventConnectionAuthParametersPtrOutputWithContext(context.Background()) +} + +func (i *eventConnectionAuthParametersPtrType) ToEventConnectionAuthParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersPtrOutput) +} + +type EventConnectionAuthParametersOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOutput) ToEventConnectionAuthParametersOutput() EventConnectionAuthParametersOutput { + return o +} + +func (o EventConnectionAuthParametersOutput) ToEventConnectionAuthParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersOutput { + return o +} + +func (o EventConnectionAuthParametersOutput) ToEventConnectionAuthParametersPtrOutput() EventConnectionAuthParametersPtrOutput { + return o.ToEventConnectionAuthParametersPtrOutputWithContext(context.Background()) +} + +func (o EventConnectionAuthParametersOutput) ToEventConnectionAuthParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventConnectionAuthParameters) *EventConnectionAuthParameters { + return &v + }).(EventConnectionAuthParametersPtrOutput) +} + +// Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below. +func (o EventConnectionAuthParametersOutput) ApiKey() EventConnectionAuthParametersApiKeyPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParameters) *EventConnectionAuthParametersApiKey { return v.ApiKey }).(EventConnectionAuthParametersApiKeyPtrOutput) +} + +// Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `apiKey` and `oauth`. Documented below. +func (o EventConnectionAuthParametersOutput) Basic() EventConnectionAuthParametersBasicPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParameters) *EventConnectionAuthParametersBasic { return v.Basic }).(EventConnectionAuthParametersBasicPtrOutput) +} + +// Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. +func (o EventConnectionAuthParametersOutput) InvocationHttpParameters() EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParameters) *EventConnectionAuthParametersInvocationHttpParameters { + return v.InvocationHttpParameters + }).(EventConnectionAuthParametersInvocationHttpParametersPtrOutput) +} + +// Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `apiKey`. Documented below. +func (o EventConnectionAuthParametersOutput) Oauth() EventConnectionAuthParametersOauthPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParameters) *EventConnectionAuthParametersOauth { return v.Oauth }).(EventConnectionAuthParametersOauthPtrOutput) +} + +type EventConnectionAuthParametersPtrOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersPtrOutput) ToEventConnectionAuthParametersPtrOutput() EventConnectionAuthParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersPtrOutput) ToEventConnectionAuthParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersPtrOutput) Elem() EventConnectionAuthParametersOutput { + return o.ApplyT(func(v *EventConnectionAuthParameters) EventConnectionAuthParameters { + if v != nil { + return *v + } + var ret EventConnectionAuthParameters + return ret + }).(EventConnectionAuthParametersOutput) +} + +// Parameters used for API_KEY authorization. An API key to include in the header for each authentication request. A maximum of 1 are allowed. Conflicts with `basic` and `oauth`. Documented below. +func (o EventConnectionAuthParametersPtrOutput) ApiKey() EventConnectionAuthParametersApiKeyPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParameters) *EventConnectionAuthParametersApiKey { + if v == nil { + return nil + } + return v.ApiKey + }).(EventConnectionAuthParametersApiKeyPtrOutput) +} + +// Parameters used for BASIC authorization. A maximum of 1 are allowed. Conflicts with `apiKey` and `oauth`. Documented below. +func (o EventConnectionAuthParametersPtrOutput) Basic() EventConnectionAuthParametersBasicPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParameters) *EventConnectionAuthParametersBasic { + if v == nil { + return nil + } + return v.Basic + }).(EventConnectionAuthParametersBasicPtrOutput) +} + +// Invocation Http Parameters are additional credentials used to sign each Invocation of the ApiDestination created from this Connection. If the ApiDestination Rule Target has additional HttpParameters, the values will be merged together, with the Connection Invocation Http Parameters taking precedence. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. +func (o EventConnectionAuthParametersPtrOutput) InvocationHttpParameters() EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParameters) *EventConnectionAuthParametersInvocationHttpParameters { + if v == nil { + return nil + } + return v.InvocationHttpParameters + }).(EventConnectionAuthParametersInvocationHttpParametersPtrOutput) +} + +// Parameters used for OAUTH_CLIENT_CREDENTIALS authorization. A maximum of 1 are allowed. Conflicts with `basic` and `apiKey`. Documented below. +func (o EventConnectionAuthParametersPtrOutput) Oauth() EventConnectionAuthParametersOauthPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParameters) *EventConnectionAuthParametersOauth { + if v == nil { + return nil + } + return v.Oauth + }).(EventConnectionAuthParametersOauthPtrOutput) +} + +type EventConnectionAuthParametersApiKey struct { + // Header Name. + Key string `pulumi:"key"` + // Header Value. Created and stored in AWS Secrets Manager. + Value string `pulumi:"value"` +} + +// EventConnectionAuthParametersApiKeyInput is an input type that accepts EventConnectionAuthParametersApiKeyArgs and EventConnectionAuthParametersApiKeyOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersApiKeyInput` via: +// +// EventConnectionAuthParametersApiKeyArgs{...} +type EventConnectionAuthParametersApiKeyInput interface { + pulumi.Input + + ToEventConnectionAuthParametersApiKeyOutput() EventConnectionAuthParametersApiKeyOutput + ToEventConnectionAuthParametersApiKeyOutputWithContext(context.Context) EventConnectionAuthParametersApiKeyOutput +} + +type EventConnectionAuthParametersApiKeyArgs struct { + // Header Name. + Key pulumi.StringInput `pulumi:"key"` + // Header Value. Created and stored in AWS Secrets Manager. + Value pulumi.StringInput `pulumi:"value"` +} + +func (EventConnectionAuthParametersApiKeyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersApiKey)(nil)).Elem() +} + +func (i EventConnectionAuthParametersApiKeyArgs) ToEventConnectionAuthParametersApiKeyOutput() EventConnectionAuthParametersApiKeyOutput { + return i.ToEventConnectionAuthParametersApiKeyOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersApiKeyArgs) ToEventConnectionAuthParametersApiKeyOutputWithContext(ctx context.Context) EventConnectionAuthParametersApiKeyOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersApiKeyOutput) +} + +func (i EventConnectionAuthParametersApiKeyArgs) ToEventConnectionAuthParametersApiKeyPtrOutput() EventConnectionAuthParametersApiKeyPtrOutput { + return i.ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersApiKeyArgs) ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersApiKeyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersApiKeyOutput).ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(ctx) +} + +// EventConnectionAuthParametersApiKeyPtrInput is an input type that accepts EventConnectionAuthParametersApiKeyArgs, EventConnectionAuthParametersApiKeyPtr and EventConnectionAuthParametersApiKeyPtrOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersApiKeyPtrInput` via: +// +// EventConnectionAuthParametersApiKeyArgs{...} +// +// or: +// +// nil +type EventConnectionAuthParametersApiKeyPtrInput interface { + pulumi.Input + + ToEventConnectionAuthParametersApiKeyPtrOutput() EventConnectionAuthParametersApiKeyPtrOutput + ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(context.Context) EventConnectionAuthParametersApiKeyPtrOutput +} + +type eventConnectionAuthParametersApiKeyPtrType EventConnectionAuthParametersApiKeyArgs + +func EventConnectionAuthParametersApiKeyPtr(v *EventConnectionAuthParametersApiKeyArgs) EventConnectionAuthParametersApiKeyPtrInput { + return (*eventConnectionAuthParametersApiKeyPtrType)(v) +} + +func (*eventConnectionAuthParametersApiKeyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersApiKey)(nil)).Elem() +} + +func (i *eventConnectionAuthParametersApiKeyPtrType) ToEventConnectionAuthParametersApiKeyPtrOutput() EventConnectionAuthParametersApiKeyPtrOutput { + return i.ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(context.Background()) +} + +func (i *eventConnectionAuthParametersApiKeyPtrType) ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersApiKeyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersApiKeyPtrOutput) +} + +type EventConnectionAuthParametersApiKeyOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersApiKeyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersApiKey)(nil)).Elem() +} + +func (o EventConnectionAuthParametersApiKeyOutput) ToEventConnectionAuthParametersApiKeyOutput() EventConnectionAuthParametersApiKeyOutput { + return o +} + +func (o EventConnectionAuthParametersApiKeyOutput) ToEventConnectionAuthParametersApiKeyOutputWithContext(ctx context.Context) EventConnectionAuthParametersApiKeyOutput { + return o +} + +func (o EventConnectionAuthParametersApiKeyOutput) ToEventConnectionAuthParametersApiKeyPtrOutput() EventConnectionAuthParametersApiKeyPtrOutput { + return o.ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(context.Background()) +} + +func (o EventConnectionAuthParametersApiKeyOutput) ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersApiKeyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventConnectionAuthParametersApiKey) *EventConnectionAuthParametersApiKey { + return &v + }).(EventConnectionAuthParametersApiKeyPtrOutput) +} + +// Header Name. +func (o EventConnectionAuthParametersApiKeyOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersApiKey) string { return v.Key }).(pulumi.StringOutput) +} + +// Header Value. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersApiKeyOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersApiKey) string { return v.Value }).(pulumi.StringOutput) +} + +type EventConnectionAuthParametersApiKeyPtrOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersApiKeyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersApiKey)(nil)).Elem() +} + +func (o EventConnectionAuthParametersApiKeyPtrOutput) ToEventConnectionAuthParametersApiKeyPtrOutput() EventConnectionAuthParametersApiKeyPtrOutput { + return o +} + +func (o EventConnectionAuthParametersApiKeyPtrOutput) ToEventConnectionAuthParametersApiKeyPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersApiKeyPtrOutput { + return o +} + +func (o EventConnectionAuthParametersApiKeyPtrOutput) Elem() EventConnectionAuthParametersApiKeyOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersApiKey) EventConnectionAuthParametersApiKey { + if v != nil { + return *v + } + var ret EventConnectionAuthParametersApiKey + return ret + }).(EventConnectionAuthParametersApiKeyOutput) +} + +// Header Name. +func (o EventConnectionAuthParametersApiKeyPtrOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersApiKey) *string { + if v == nil { + return nil + } + return &v.Key + }).(pulumi.StringPtrOutput) +} + +// Header Value. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersApiKeyPtrOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersApiKey) *string { + if v == nil { + return nil + } + return &v.Value + }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersBasic struct { + // A password for the authorization. Created and stored in AWS Secrets Manager. + Password string `pulumi:"password"` + // A username for the authorization. + Username string `pulumi:"username"` +} + +// EventConnectionAuthParametersBasicInput is an input type that accepts EventConnectionAuthParametersBasicArgs and EventConnectionAuthParametersBasicOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersBasicInput` via: +// +// EventConnectionAuthParametersBasicArgs{...} +type EventConnectionAuthParametersBasicInput interface { + pulumi.Input + + ToEventConnectionAuthParametersBasicOutput() EventConnectionAuthParametersBasicOutput + ToEventConnectionAuthParametersBasicOutputWithContext(context.Context) EventConnectionAuthParametersBasicOutput +} + +type EventConnectionAuthParametersBasicArgs struct { + // A password for the authorization. Created and stored in AWS Secrets Manager. + Password pulumi.StringInput `pulumi:"password"` + // A username for the authorization. + Username pulumi.StringInput `pulumi:"username"` +} + +func (EventConnectionAuthParametersBasicArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersBasic)(nil)).Elem() +} + +func (i EventConnectionAuthParametersBasicArgs) ToEventConnectionAuthParametersBasicOutput() EventConnectionAuthParametersBasicOutput { + return i.ToEventConnectionAuthParametersBasicOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersBasicArgs) ToEventConnectionAuthParametersBasicOutputWithContext(ctx context.Context) EventConnectionAuthParametersBasicOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersBasicOutput) +} + +func (i EventConnectionAuthParametersBasicArgs) ToEventConnectionAuthParametersBasicPtrOutput() EventConnectionAuthParametersBasicPtrOutput { + return i.ToEventConnectionAuthParametersBasicPtrOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersBasicArgs) ToEventConnectionAuthParametersBasicPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersBasicPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersBasicOutput).ToEventConnectionAuthParametersBasicPtrOutputWithContext(ctx) +} + +// EventConnectionAuthParametersBasicPtrInput is an input type that accepts EventConnectionAuthParametersBasicArgs, EventConnectionAuthParametersBasicPtr and EventConnectionAuthParametersBasicPtrOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersBasicPtrInput` via: +// +// EventConnectionAuthParametersBasicArgs{...} +// +// or: +// +// nil +type EventConnectionAuthParametersBasicPtrInput interface { + pulumi.Input + + ToEventConnectionAuthParametersBasicPtrOutput() EventConnectionAuthParametersBasicPtrOutput + ToEventConnectionAuthParametersBasicPtrOutputWithContext(context.Context) EventConnectionAuthParametersBasicPtrOutput +} + +type eventConnectionAuthParametersBasicPtrType EventConnectionAuthParametersBasicArgs + +func EventConnectionAuthParametersBasicPtr(v *EventConnectionAuthParametersBasicArgs) EventConnectionAuthParametersBasicPtrInput { + return (*eventConnectionAuthParametersBasicPtrType)(v) +} + +func (*eventConnectionAuthParametersBasicPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersBasic)(nil)).Elem() +} + +func (i *eventConnectionAuthParametersBasicPtrType) ToEventConnectionAuthParametersBasicPtrOutput() EventConnectionAuthParametersBasicPtrOutput { + return i.ToEventConnectionAuthParametersBasicPtrOutputWithContext(context.Background()) +} + +func (i *eventConnectionAuthParametersBasicPtrType) ToEventConnectionAuthParametersBasicPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersBasicPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersBasicPtrOutput) +} + +type EventConnectionAuthParametersBasicOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersBasicOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersBasic)(nil)).Elem() +} + +func (o EventConnectionAuthParametersBasicOutput) ToEventConnectionAuthParametersBasicOutput() EventConnectionAuthParametersBasicOutput { + return o +} + +func (o EventConnectionAuthParametersBasicOutput) ToEventConnectionAuthParametersBasicOutputWithContext(ctx context.Context) EventConnectionAuthParametersBasicOutput { + return o +} + +func (o EventConnectionAuthParametersBasicOutput) ToEventConnectionAuthParametersBasicPtrOutput() EventConnectionAuthParametersBasicPtrOutput { + return o.ToEventConnectionAuthParametersBasicPtrOutputWithContext(context.Background()) +} + +func (o EventConnectionAuthParametersBasicOutput) ToEventConnectionAuthParametersBasicPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersBasicPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventConnectionAuthParametersBasic) *EventConnectionAuthParametersBasic { + return &v + }).(EventConnectionAuthParametersBasicPtrOutput) +} + +// A password for the authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersBasicOutput) Password() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersBasic) string { return v.Password }).(pulumi.StringOutput) +} + +// A username for the authorization. +func (o EventConnectionAuthParametersBasicOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersBasic) string { return v.Username }).(pulumi.StringOutput) +} + +type EventConnectionAuthParametersBasicPtrOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersBasicPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersBasic)(nil)).Elem() +} + +func (o EventConnectionAuthParametersBasicPtrOutput) ToEventConnectionAuthParametersBasicPtrOutput() EventConnectionAuthParametersBasicPtrOutput { + return o +} + +func (o EventConnectionAuthParametersBasicPtrOutput) ToEventConnectionAuthParametersBasicPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersBasicPtrOutput { + return o +} + +func (o EventConnectionAuthParametersBasicPtrOutput) Elem() EventConnectionAuthParametersBasicOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersBasic) EventConnectionAuthParametersBasic { + if v != nil { + return *v + } + var ret EventConnectionAuthParametersBasic + return ret + }).(EventConnectionAuthParametersBasicOutput) +} + +// A password for the authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersBasicPtrOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersBasic) *string { + if v == nil { + return nil + } + return &v.Password + }).(pulumi.StringPtrOutput) +} + +// A username for the authorization. +func (o EventConnectionAuthParametersBasicPtrOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersBasic) *string { + if v == nil { + return nil + } + return &v.Username + }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersInvocationHttpParameters struct { + // Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Bodies []EventConnectionAuthParametersInvocationHttpParametersBody `pulumi:"bodies"` + // Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Headers []EventConnectionAuthParametersInvocationHttpParametersHeader `pulumi:"headers"` + // Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + QueryStrings []EventConnectionAuthParametersInvocationHttpParametersQueryString `pulumi:"queryStrings"` +} + +// EventConnectionAuthParametersInvocationHttpParametersInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersArgs and EventConnectionAuthParametersInvocationHttpParametersOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersArgs{...} +type EventConnectionAuthParametersInvocationHttpParametersInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersOutput() EventConnectionAuthParametersInvocationHttpParametersOutput + ToEventConnectionAuthParametersInvocationHttpParametersOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersOutput +} + +type EventConnectionAuthParametersInvocationHttpParametersArgs struct { + // Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Bodies EventConnectionAuthParametersInvocationHttpParametersBodyArrayInput `pulumi:"bodies"` + // Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Headers EventConnectionAuthParametersInvocationHttpParametersHeaderArrayInput `pulumi:"headers"` + // Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + QueryStrings EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayInput `pulumi:"queryStrings"` +} + +func (EventConnectionAuthParametersInvocationHttpParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParameters)(nil)).Elem() +} + +func (i EventConnectionAuthParametersInvocationHttpParametersArgs) ToEventConnectionAuthParametersInvocationHttpParametersOutput() EventConnectionAuthParametersInvocationHttpParametersOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersArgs) ToEventConnectionAuthParametersInvocationHttpParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersOutput) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersArgs) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutput() EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersArgs) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersOutput).ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(ctx) +} + +// EventConnectionAuthParametersInvocationHttpParametersPtrInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersArgs, EventConnectionAuthParametersInvocationHttpParametersPtr and EventConnectionAuthParametersInvocationHttpParametersPtrOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersPtrInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersArgs{...} +// +// or: +// +// nil +type EventConnectionAuthParametersInvocationHttpParametersPtrInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersPtrOutput() EventConnectionAuthParametersInvocationHttpParametersPtrOutput + ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersPtrOutput +} + +type eventConnectionAuthParametersInvocationHttpParametersPtrType EventConnectionAuthParametersInvocationHttpParametersArgs + +func EventConnectionAuthParametersInvocationHttpParametersPtr(v *EventConnectionAuthParametersInvocationHttpParametersArgs) EventConnectionAuthParametersInvocationHttpParametersPtrInput { + return (*eventConnectionAuthParametersInvocationHttpParametersPtrType)(v) +} + +func (*eventConnectionAuthParametersInvocationHttpParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersInvocationHttpParameters)(nil)).Elem() +} + +func (i *eventConnectionAuthParametersInvocationHttpParametersPtrType) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutput() EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(context.Background()) +} + +func (i *eventConnectionAuthParametersInvocationHttpParametersPtrType) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersPtrOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersOutput) ToEventConnectionAuthParametersInvocationHttpParametersOutput() EventConnectionAuthParametersInvocationHttpParametersOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersOutput) ToEventConnectionAuthParametersInvocationHttpParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersOutput) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutput() EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return o.ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(context.Background()) +} + +func (o EventConnectionAuthParametersInvocationHttpParametersOutput) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventConnectionAuthParametersInvocationHttpParameters) *EventConnectionAuthParametersInvocationHttpParameters { + return &v + }).(EventConnectionAuthParametersInvocationHttpParametersPtrOutput) +} + +// Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersInvocationHttpParametersOutput) Bodies() EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParameters) []EventConnectionAuthParametersInvocationHttpParametersBody { + return v.Bodies + }).(EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput) +} + +// Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersInvocationHttpParametersOutput) Headers() EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParameters) []EventConnectionAuthParametersInvocationHttpParametersHeader { + return v.Headers + }).(EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput) +} + +// Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersInvocationHttpParametersOutput) QueryStrings() EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParameters) []EventConnectionAuthParametersInvocationHttpParametersQueryString { + return v.QueryStrings + }).(EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersPtrOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersInvocationHttpParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersPtrOutput) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutput() EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersPtrOutput) ToEventConnectionAuthParametersInvocationHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersPtrOutput) Elem() EventConnectionAuthParametersInvocationHttpParametersOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersInvocationHttpParameters) EventConnectionAuthParametersInvocationHttpParameters { + if v != nil { + return *v + } + var ret EventConnectionAuthParametersInvocationHttpParameters + return ret + }).(EventConnectionAuthParametersInvocationHttpParametersOutput) +} + +// Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersInvocationHttpParametersPtrOutput) Bodies() EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersInvocationHttpParameters) []EventConnectionAuthParametersInvocationHttpParametersBody { + if v == nil { + return nil + } + return v.Bodies + }).(EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput) +} + +// Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersInvocationHttpParametersPtrOutput) Headers() EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersInvocationHttpParameters) []EventConnectionAuthParametersInvocationHttpParametersHeader { + if v == nil { + return nil + } + return v.Headers + }).(EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput) +} + +// Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersInvocationHttpParametersPtrOutput) QueryStrings() EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersInvocationHttpParameters) []EventConnectionAuthParametersInvocationHttpParametersQueryString { + if v == nil { + return nil + } + return v.QueryStrings + }).(EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersBody struct { + // Specified whether the value is secret. + IsValueSecret *bool `pulumi:"isValueSecret"` + // The key for the parameter. + Key *string `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value *string `pulumi:"value"` +} + +// EventConnectionAuthParametersInvocationHttpParametersBodyInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersBodyArgs and EventConnectionAuthParametersInvocationHttpParametersBodyOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersBodyInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersBodyArgs{...} +type EventConnectionAuthParametersInvocationHttpParametersBodyInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersBodyOutput() EventConnectionAuthParametersInvocationHttpParametersBodyOutput + ToEventConnectionAuthParametersInvocationHttpParametersBodyOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersBodyOutput +} + +type EventConnectionAuthParametersInvocationHttpParametersBodyArgs struct { + // Specified whether the value is secret. + IsValueSecret pulumi.BoolPtrInput `pulumi:"isValueSecret"` + // The key for the parameter. + Key pulumi.StringPtrInput `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (EventConnectionAuthParametersInvocationHttpParametersBodyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersBody)(nil)).Elem() +} + +func (i EventConnectionAuthParametersInvocationHttpParametersBodyArgs) ToEventConnectionAuthParametersInvocationHttpParametersBodyOutput() EventConnectionAuthParametersInvocationHttpParametersBodyOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersBodyOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersBodyArgs) ToEventConnectionAuthParametersInvocationHttpParametersBodyOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersBodyOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersBodyOutput) +} + +// EventConnectionAuthParametersInvocationHttpParametersBodyArrayInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersBodyArray and EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersBodyArrayInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersBodyArray{ EventConnectionAuthParametersInvocationHttpParametersBodyArgs{...} } +type EventConnectionAuthParametersInvocationHttpParametersBodyArrayInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput() EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput + ToEventConnectionAuthParametersInvocationHttpParametersBodyArrayOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput +} + +type EventConnectionAuthParametersInvocationHttpParametersBodyArray []EventConnectionAuthParametersInvocationHttpParametersBodyInput + +func (EventConnectionAuthParametersInvocationHttpParametersBodyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersInvocationHttpParametersBody)(nil)).Elem() +} + +func (i EventConnectionAuthParametersInvocationHttpParametersBodyArray) ToEventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput() EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersBodyArrayOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersBodyArray) ToEventConnectionAuthParametersInvocationHttpParametersBodyArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersBodyOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersBodyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersBody)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersBodyOutput) ToEventConnectionAuthParametersInvocationHttpParametersBodyOutput() EventConnectionAuthParametersInvocationHttpParametersBodyOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersBodyOutput) ToEventConnectionAuthParametersInvocationHttpParametersBodyOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersBodyOutput { + return o +} + +// Specified whether the value is secret. +func (o EventConnectionAuthParametersInvocationHttpParametersBodyOutput) IsValueSecret() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersBody) *bool { return v.IsValueSecret }).(pulumi.BoolPtrOutput) +} + +// The key for the parameter. +func (o EventConnectionAuthParametersInvocationHttpParametersBodyOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersBody) *string { return v.Key }).(pulumi.StringPtrOutput) +} + +// The value associated with the key. Created and stored in AWS Secrets Manager if is secret. +func (o EventConnectionAuthParametersInvocationHttpParametersBodyOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersBody) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersInvocationHttpParametersBody)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput) ToEventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput() EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput) ToEventConnectionAuthParametersInvocationHttpParametersBodyArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput) Index(i pulumi.IntInput) EventConnectionAuthParametersInvocationHttpParametersBodyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventConnectionAuthParametersInvocationHttpParametersBody { + return vs[0].([]EventConnectionAuthParametersInvocationHttpParametersBody)[vs[1].(int)] + }).(EventConnectionAuthParametersInvocationHttpParametersBodyOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersHeader struct { + // Specified whether the value is secret. + IsValueSecret *bool `pulumi:"isValueSecret"` + // The key for the parameter. + Key *string `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value *string `pulumi:"value"` +} + +// EventConnectionAuthParametersInvocationHttpParametersHeaderInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersHeaderArgs and EventConnectionAuthParametersInvocationHttpParametersHeaderOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersHeaderInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersHeaderArgs{...} +type EventConnectionAuthParametersInvocationHttpParametersHeaderInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersHeaderOutput() EventConnectionAuthParametersInvocationHttpParametersHeaderOutput + ToEventConnectionAuthParametersInvocationHttpParametersHeaderOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersHeaderOutput +} + +type EventConnectionAuthParametersInvocationHttpParametersHeaderArgs struct { + // Specified whether the value is secret. + IsValueSecret pulumi.BoolPtrInput `pulumi:"isValueSecret"` + // The key for the parameter. + Key pulumi.StringPtrInput `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (EventConnectionAuthParametersInvocationHttpParametersHeaderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersHeader)(nil)).Elem() +} + +func (i EventConnectionAuthParametersInvocationHttpParametersHeaderArgs) ToEventConnectionAuthParametersInvocationHttpParametersHeaderOutput() EventConnectionAuthParametersInvocationHttpParametersHeaderOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersHeaderOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersHeaderArgs) ToEventConnectionAuthParametersInvocationHttpParametersHeaderOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersHeaderOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) +} + +// EventConnectionAuthParametersInvocationHttpParametersHeaderArrayInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersHeaderArray and EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersHeaderArrayInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersHeaderArray{ EventConnectionAuthParametersInvocationHttpParametersHeaderArgs{...} } +type EventConnectionAuthParametersInvocationHttpParametersHeaderArrayInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput() EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput + ToEventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput +} + +type EventConnectionAuthParametersInvocationHttpParametersHeaderArray []EventConnectionAuthParametersInvocationHttpParametersHeaderInput + +func (EventConnectionAuthParametersInvocationHttpParametersHeaderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersInvocationHttpParametersHeader)(nil)).Elem() +} + +func (i EventConnectionAuthParametersInvocationHttpParametersHeaderArray) ToEventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput() EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersHeaderArray) ToEventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersHeaderOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersHeader)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) ToEventConnectionAuthParametersInvocationHttpParametersHeaderOutput() EventConnectionAuthParametersInvocationHttpParametersHeaderOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) ToEventConnectionAuthParametersInvocationHttpParametersHeaderOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersHeaderOutput { + return o +} + +// Specified whether the value is secret. +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) IsValueSecret() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersHeader) *bool { return v.IsValueSecret }).(pulumi.BoolPtrOutput) +} + +// The key for the parameter. +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersHeader) *string { return v.Key }).(pulumi.StringPtrOutput) +} + +// The value associated with the key. Created and stored in AWS Secrets Manager if is secret. +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersHeader) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersInvocationHttpParametersHeader)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput) ToEventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput() EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput) ToEventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput) Index(i pulumi.IntInput) EventConnectionAuthParametersInvocationHttpParametersHeaderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventConnectionAuthParametersInvocationHttpParametersHeader { + return vs[0].([]EventConnectionAuthParametersInvocationHttpParametersHeader)[vs[1].(int)] + }).(EventConnectionAuthParametersInvocationHttpParametersHeaderOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersQueryString struct { + // Specified whether the value is secret. + IsValueSecret *bool `pulumi:"isValueSecret"` + // The key for the parameter. + Key *string `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value *string `pulumi:"value"` +} + +// EventConnectionAuthParametersInvocationHttpParametersQueryStringInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs and EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersQueryStringInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs{...} +type EventConnectionAuthParametersInvocationHttpParametersQueryStringInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersQueryStringOutput() EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput + ToEventConnectionAuthParametersInvocationHttpParametersQueryStringOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput +} + +type EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs struct { + // Specified whether the value is secret. + IsValueSecret pulumi.BoolPtrInput `pulumi:"isValueSecret"` + // The key for the parameter. + Key pulumi.StringPtrInput `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersQueryString)(nil)).Elem() +} + +func (i EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringOutput() EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersQueryStringOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) +} + +// EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayInput is an input type that accepts EventConnectionAuthParametersInvocationHttpParametersQueryStringArray and EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayInput` via: +// +// EventConnectionAuthParametersInvocationHttpParametersQueryStringArray{ EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs{...} } +type EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayInput interface { + pulumi.Input + + ToEventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput() EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput + ToEventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutputWithContext(context.Context) EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput +} + +type EventConnectionAuthParametersInvocationHttpParametersQueryStringArray []EventConnectionAuthParametersInvocationHttpParametersQueryStringInput + +func (EventConnectionAuthParametersInvocationHttpParametersQueryStringArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersInvocationHttpParametersQueryString)(nil)).Elem() +} + +func (i EventConnectionAuthParametersInvocationHttpParametersQueryStringArray) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput() EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput { + return i.ToEventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersInvocationHttpParametersQueryStringArray) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersQueryString)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringOutput() EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput { + return o +} + +// Specified whether the value is secret. +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) IsValueSecret() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersQueryString) *bool { return v.IsValueSecret }).(pulumi.BoolPtrOutput) +} + +// The key for the parameter. +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersQueryString) *string { return v.Key }).(pulumi.StringPtrOutput) +} + +// The value associated with the key. Created and stored in AWS Secrets Manager if is secret. +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersInvocationHttpParametersQueryString) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersInvocationHttpParametersQueryString)(nil)).Elem() +} + +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput() EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput) ToEventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput { + return o +} + +func (o EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput) Index(i pulumi.IntInput) EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventConnectionAuthParametersInvocationHttpParametersQueryString { + return vs[0].([]EventConnectionAuthParametersInvocationHttpParametersQueryString)[vs[1].(int)] + }).(EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput) +} + +type EventConnectionAuthParametersOauth struct { + // The URL to the authorization endpoint. + AuthorizationEndpoint string `pulumi:"authorizationEndpoint"` + // Contains the client parameters for OAuth authorization. Contains the following two parameters. + ClientParameters *EventConnectionAuthParametersOauthClientParameters `pulumi:"clientParameters"` + // A password for the authorization. Created and stored in AWS Secrets Manager. + HttpMethod string `pulumi:"httpMethod"` + // OAuth Http Parameters are additional credentials used to sign the request to the authorization endpoint to exchange the OAuth Client information for an access token. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. + OauthHttpParameters EventConnectionAuthParametersOauthOauthHttpParameters `pulumi:"oauthHttpParameters"` +} + +// EventConnectionAuthParametersOauthInput is an input type that accepts EventConnectionAuthParametersOauthArgs and EventConnectionAuthParametersOauthOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthInput` via: +// +// EventConnectionAuthParametersOauthArgs{...} +type EventConnectionAuthParametersOauthInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOutput() EventConnectionAuthParametersOauthOutput + ToEventConnectionAuthParametersOauthOutputWithContext(context.Context) EventConnectionAuthParametersOauthOutput +} + +type EventConnectionAuthParametersOauthArgs struct { + // The URL to the authorization endpoint. + AuthorizationEndpoint pulumi.StringInput `pulumi:"authorizationEndpoint"` + // Contains the client parameters for OAuth authorization. Contains the following two parameters. + ClientParameters EventConnectionAuthParametersOauthClientParametersPtrInput `pulumi:"clientParameters"` + // A password for the authorization. Created and stored in AWS Secrets Manager. + HttpMethod pulumi.StringInput `pulumi:"httpMethod"` + // OAuth Http Parameters are additional credentials used to sign the request to the authorization endpoint to exchange the OAuth Client information for an access token. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. + OauthHttpParameters EventConnectionAuthParametersOauthOauthHttpParametersInput `pulumi:"oauthHttpParameters"` +} + +func (EventConnectionAuthParametersOauthArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauth)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthArgs) ToEventConnectionAuthParametersOauthOutput() EventConnectionAuthParametersOauthOutput { + return i.ToEventConnectionAuthParametersOauthOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthArgs) ToEventConnectionAuthParametersOauthOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOutput) +} + +func (i EventConnectionAuthParametersOauthArgs) ToEventConnectionAuthParametersOauthPtrOutput() EventConnectionAuthParametersOauthPtrOutput { + return i.ToEventConnectionAuthParametersOauthPtrOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthArgs) ToEventConnectionAuthParametersOauthPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOutput).ToEventConnectionAuthParametersOauthPtrOutputWithContext(ctx) +} + +// EventConnectionAuthParametersOauthPtrInput is an input type that accepts EventConnectionAuthParametersOauthArgs, EventConnectionAuthParametersOauthPtr and EventConnectionAuthParametersOauthPtrOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthPtrInput` via: +// +// EventConnectionAuthParametersOauthArgs{...} +// +// or: +// +// nil +type EventConnectionAuthParametersOauthPtrInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthPtrOutput() EventConnectionAuthParametersOauthPtrOutput + ToEventConnectionAuthParametersOauthPtrOutputWithContext(context.Context) EventConnectionAuthParametersOauthPtrOutput +} + +type eventConnectionAuthParametersOauthPtrType EventConnectionAuthParametersOauthArgs + +func EventConnectionAuthParametersOauthPtr(v *EventConnectionAuthParametersOauthArgs) EventConnectionAuthParametersOauthPtrInput { + return (*eventConnectionAuthParametersOauthPtrType)(v) +} + +func (*eventConnectionAuthParametersOauthPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersOauth)(nil)).Elem() +} + +func (i *eventConnectionAuthParametersOauthPtrType) ToEventConnectionAuthParametersOauthPtrOutput() EventConnectionAuthParametersOauthPtrOutput { + return i.ToEventConnectionAuthParametersOauthPtrOutputWithContext(context.Background()) +} + +func (i *eventConnectionAuthParametersOauthPtrType) ToEventConnectionAuthParametersOauthPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthPtrOutput) +} + +type EventConnectionAuthParametersOauthOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauth)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOutput) ToEventConnectionAuthParametersOauthOutput() EventConnectionAuthParametersOauthOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOutput) ToEventConnectionAuthParametersOauthOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOutput) ToEventConnectionAuthParametersOauthPtrOutput() EventConnectionAuthParametersOauthPtrOutput { + return o.ToEventConnectionAuthParametersOauthPtrOutputWithContext(context.Background()) +} + +func (o EventConnectionAuthParametersOauthOutput) ToEventConnectionAuthParametersOauthPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventConnectionAuthParametersOauth) *EventConnectionAuthParametersOauth { + return &v + }).(EventConnectionAuthParametersOauthPtrOutput) +} + +// The URL to the authorization endpoint. +func (o EventConnectionAuthParametersOauthOutput) AuthorizationEndpoint() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauth) string { return v.AuthorizationEndpoint }).(pulumi.StringOutput) +} + +// Contains the client parameters for OAuth authorization. Contains the following two parameters. +func (o EventConnectionAuthParametersOauthOutput) ClientParameters() EventConnectionAuthParametersOauthClientParametersPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauth) *EventConnectionAuthParametersOauthClientParameters { + return v.ClientParameters + }).(EventConnectionAuthParametersOauthClientParametersPtrOutput) +} + +// A password for the authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersOauthOutput) HttpMethod() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauth) string { return v.HttpMethod }).(pulumi.StringOutput) +} + +// OAuth Http Parameters are additional credentials used to sign the request to the authorization endpoint to exchange the OAuth Client information for an access token. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. +func (o EventConnectionAuthParametersOauthOutput) OauthHttpParameters() EventConnectionAuthParametersOauthOauthHttpParametersOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauth) EventConnectionAuthParametersOauthOauthHttpParameters { + return v.OauthHttpParameters + }).(EventConnectionAuthParametersOauthOauthHttpParametersOutput) +} + +type EventConnectionAuthParametersOauthPtrOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersOauth)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthPtrOutput) ToEventConnectionAuthParametersOauthPtrOutput() EventConnectionAuthParametersOauthPtrOutput { + return o +} + +func (o EventConnectionAuthParametersOauthPtrOutput) ToEventConnectionAuthParametersOauthPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthPtrOutput { + return o +} + +func (o EventConnectionAuthParametersOauthPtrOutput) Elem() EventConnectionAuthParametersOauthOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauth) EventConnectionAuthParametersOauth { + if v != nil { + return *v + } + var ret EventConnectionAuthParametersOauth + return ret + }).(EventConnectionAuthParametersOauthOutput) +} + +// The URL to the authorization endpoint. +func (o EventConnectionAuthParametersOauthPtrOutput) AuthorizationEndpoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauth) *string { + if v == nil { + return nil + } + return &v.AuthorizationEndpoint + }).(pulumi.StringPtrOutput) +} + +// Contains the client parameters for OAuth authorization. Contains the following two parameters. +func (o EventConnectionAuthParametersOauthPtrOutput) ClientParameters() EventConnectionAuthParametersOauthClientParametersPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauth) *EventConnectionAuthParametersOauthClientParameters { + if v == nil { + return nil + } + return v.ClientParameters + }).(EventConnectionAuthParametersOauthClientParametersPtrOutput) +} + +// A password for the authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersOauthPtrOutput) HttpMethod() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauth) *string { + if v == nil { + return nil + } + return &v.HttpMethod + }).(pulumi.StringPtrOutput) +} + +// OAuth Http Parameters are additional credentials used to sign the request to the authorization endpoint to exchange the OAuth Client information for an access token. Secret values are stored and managed by AWS Secrets Manager. A maximum of 1 are allowed. Documented below. +func (o EventConnectionAuthParametersOauthPtrOutput) OauthHttpParameters() EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauth) *EventConnectionAuthParametersOauthOauthHttpParameters { + if v == nil { + return nil + } + return &v.OauthHttpParameters + }).(EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) +} + +type EventConnectionAuthParametersOauthClientParameters struct { + // The client ID for the credentials to use for authorization. Created and stored in AWS Secrets Manager. + ClientId string `pulumi:"clientId"` + // The client secret for the credentials to use for authorization. Created and stored in AWS Secrets Manager. + ClientSecret string `pulumi:"clientSecret"` +} + +// EventConnectionAuthParametersOauthClientParametersInput is an input type that accepts EventConnectionAuthParametersOauthClientParametersArgs and EventConnectionAuthParametersOauthClientParametersOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthClientParametersInput` via: +// +// EventConnectionAuthParametersOauthClientParametersArgs{...} +type EventConnectionAuthParametersOauthClientParametersInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthClientParametersOutput() EventConnectionAuthParametersOauthClientParametersOutput + ToEventConnectionAuthParametersOauthClientParametersOutputWithContext(context.Context) EventConnectionAuthParametersOauthClientParametersOutput +} + +type EventConnectionAuthParametersOauthClientParametersArgs struct { + // The client ID for the credentials to use for authorization. Created and stored in AWS Secrets Manager. + ClientId pulumi.StringInput `pulumi:"clientId"` + // The client secret for the credentials to use for authorization. Created and stored in AWS Secrets Manager. + ClientSecret pulumi.StringInput `pulumi:"clientSecret"` +} + +func (EventConnectionAuthParametersOauthClientParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthClientParameters)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthClientParametersArgs) ToEventConnectionAuthParametersOauthClientParametersOutput() EventConnectionAuthParametersOauthClientParametersOutput { + return i.ToEventConnectionAuthParametersOauthClientParametersOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthClientParametersArgs) ToEventConnectionAuthParametersOauthClientParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthClientParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthClientParametersOutput) +} + +func (i EventConnectionAuthParametersOauthClientParametersArgs) ToEventConnectionAuthParametersOauthClientParametersPtrOutput() EventConnectionAuthParametersOauthClientParametersPtrOutput { + return i.ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthClientParametersArgs) ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthClientParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthClientParametersOutput).ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(ctx) +} + +// EventConnectionAuthParametersOauthClientParametersPtrInput is an input type that accepts EventConnectionAuthParametersOauthClientParametersArgs, EventConnectionAuthParametersOauthClientParametersPtr and EventConnectionAuthParametersOauthClientParametersPtrOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthClientParametersPtrInput` via: +// +// EventConnectionAuthParametersOauthClientParametersArgs{...} +// +// or: +// +// nil +type EventConnectionAuthParametersOauthClientParametersPtrInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthClientParametersPtrOutput() EventConnectionAuthParametersOauthClientParametersPtrOutput + ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(context.Context) EventConnectionAuthParametersOauthClientParametersPtrOutput +} + +type eventConnectionAuthParametersOauthClientParametersPtrType EventConnectionAuthParametersOauthClientParametersArgs + +func EventConnectionAuthParametersOauthClientParametersPtr(v *EventConnectionAuthParametersOauthClientParametersArgs) EventConnectionAuthParametersOauthClientParametersPtrInput { + return (*eventConnectionAuthParametersOauthClientParametersPtrType)(v) +} + +func (*eventConnectionAuthParametersOauthClientParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersOauthClientParameters)(nil)).Elem() +} + +func (i *eventConnectionAuthParametersOauthClientParametersPtrType) ToEventConnectionAuthParametersOauthClientParametersPtrOutput() EventConnectionAuthParametersOauthClientParametersPtrOutput { + return i.ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(context.Background()) +} + +func (i *eventConnectionAuthParametersOauthClientParametersPtrType) ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthClientParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthClientParametersPtrOutput) +} + +type EventConnectionAuthParametersOauthClientParametersOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthClientParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthClientParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthClientParametersOutput) ToEventConnectionAuthParametersOauthClientParametersOutput() EventConnectionAuthParametersOauthClientParametersOutput { + return o +} + +func (o EventConnectionAuthParametersOauthClientParametersOutput) ToEventConnectionAuthParametersOauthClientParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthClientParametersOutput { + return o +} + +func (o EventConnectionAuthParametersOauthClientParametersOutput) ToEventConnectionAuthParametersOauthClientParametersPtrOutput() EventConnectionAuthParametersOauthClientParametersPtrOutput { + return o.ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(context.Background()) +} + +func (o EventConnectionAuthParametersOauthClientParametersOutput) ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthClientParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventConnectionAuthParametersOauthClientParameters) *EventConnectionAuthParametersOauthClientParameters { + return &v + }).(EventConnectionAuthParametersOauthClientParametersPtrOutput) +} + +// The client ID for the credentials to use for authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersOauthClientParametersOutput) ClientId() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthClientParameters) string { return v.ClientId }).(pulumi.StringOutput) +} + +// The client secret for the credentials to use for authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersOauthClientParametersOutput) ClientSecret() pulumi.StringOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthClientParameters) string { return v.ClientSecret }).(pulumi.StringOutput) +} + +type EventConnectionAuthParametersOauthClientParametersPtrOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthClientParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersOauthClientParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthClientParametersPtrOutput) ToEventConnectionAuthParametersOauthClientParametersPtrOutput() EventConnectionAuthParametersOauthClientParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersOauthClientParametersPtrOutput) ToEventConnectionAuthParametersOauthClientParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthClientParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersOauthClientParametersPtrOutput) Elem() EventConnectionAuthParametersOauthClientParametersOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauthClientParameters) EventConnectionAuthParametersOauthClientParameters { + if v != nil { + return *v + } + var ret EventConnectionAuthParametersOauthClientParameters + return ret + }).(EventConnectionAuthParametersOauthClientParametersOutput) +} + +// The client ID for the credentials to use for authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersOauthClientParametersPtrOutput) ClientId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauthClientParameters) *string { + if v == nil { + return nil + } + return &v.ClientId + }).(pulumi.StringPtrOutput) +} + +// The client secret for the credentials to use for authorization. Created and stored in AWS Secrets Manager. +func (o EventConnectionAuthParametersOauthClientParametersPtrOutput) ClientSecret() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauthClientParameters) *string { + if v == nil { + return nil + } + return &v.ClientSecret + }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParameters struct { + // Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Bodies []EventConnectionAuthParametersOauthOauthHttpParametersBody `pulumi:"bodies"` + // Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Headers []EventConnectionAuthParametersOauthOauthHttpParametersHeader `pulumi:"headers"` + // Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + QueryStrings []EventConnectionAuthParametersOauthOauthHttpParametersQueryString `pulumi:"queryStrings"` +} + +// EventConnectionAuthParametersOauthOauthHttpParametersInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersArgs and EventConnectionAuthParametersOauthOauthHttpParametersOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersArgs{...} +type EventConnectionAuthParametersOauthOauthHttpParametersInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersOutput() EventConnectionAuthParametersOauthOauthHttpParametersOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersOutput +} + +type EventConnectionAuthParametersOauthOauthHttpParametersArgs struct { + // Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Bodies EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayInput `pulumi:"bodies"` + // Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + Headers EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayInput `pulumi:"headers"` + // Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: + QueryStrings EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayInput `pulumi:"queryStrings"` +} + +func (EventConnectionAuthParametersOauthOauthHttpParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParameters)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersOutput() EventConnectionAuthParametersOauthOauthHttpParametersOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersOutput) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutput() EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersOutput).ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(ctx) +} + +// EventConnectionAuthParametersOauthOauthHttpParametersPtrInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersArgs, EventConnectionAuthParametersOauthOauthHttpParametersPtr and EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersPtrInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersArgs{...} +// +// or: +// +// nil +type EventConnectionAuthParametersOauthOauthHttpParametersPtrInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutput() EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput +} + +type eventConnectionAuthParametersOauthOauthHttpParametersPtrType EventConnectionAuthParametersOauthOauthHttpParametersArgs + +func EventConnectionAuthParametersOauthOauthHttpParametersPtr(v *EventConnectionAuthParametersOauthOauthHttpParametersArgs) EventConnectionAuthParametersOauthOauthHttpParametersPtrInput { + return (*eventConnectionAuthParametersOauthOauthHttpParametersPtrType)(v) +} + +func (*eventConnectionAuthParametersOauthOauthHttpParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersOauthOauthHttpParameters)(nil)).Elem() +} + +func (i *eventConnectionAuthParametersOauthOauthHttpParametersPtrType) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutput() EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(context.Background()) +} + +func (i *eventConnectionAuthParametersOauthOauthHttpParametersPtrType) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersOutput() EventConnectionAuthParametersOauthOauthHttpParametersOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutput() EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return o.ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(context.Background()) +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventConnectionAuthParametersOauthOauthHttpParameters) *EventConnectionAuthParametersOauthOauthHttpParameters { + return &v + }).(EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) +} + +// Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersOauthOauthHttpParametersOutput) Bodies() EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParameters) []EventConnectionAuthParametersOauthOauthHttpParametersBody { + return v.Bodies + }).(EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput) +} + +// Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersOauthOauthHttpParametersOutput) Headers() EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParameters) []EventConnectionAuthParametersOauthOauthHttpParametersHeader { + return v.Headers + }).(EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput) +} + +// Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersOauthOauthHttpParametersOutput) QueryStrings() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParameters) []EventConnectionAuthParametersOauthOauthHttpParametersQueryString { + return v.QueryStrings + }).(EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventConnectionAuthParametersOauthOauthHttpParameters)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutput() EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersPtrOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) Elem() EventConnectionAuthParametersOauthOauthHttpParametersOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauthOauthHttpParameters) EventConnectionAuthParametersOauthOauthHttpParameters { + if v != nil { + return *v + } + var ret EventConnectionAuthParametersOauthOauthHttpParameters + return ret + }).(EventConnectionAuthParametersOauthOauthHttpParametersOutput) +} + +// Contains additional body string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) Bodies() EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauthOauthHttpParameters) []EventConnectionAuthParametersOauthOauthHttpParametersBody { + if v == nil { + return nil + } + return v.Bodies + }).(EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput) +} + +// Contains additional header parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) Headers() EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauthOauthHttpParameters) []EventConnectionAuthParametersOauthOauthHttpParametersHeader { + if v == nil { + return nil + } + return v.Headers + }).(EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput) +} + +// Contains additional query string parameters for the connection. You can include up to 100 additional body string parameters per request. Each additional parameter counts towards the event payload size, which cannot exceed 64 KB. Each parameter can contain the following: +func (o EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput) QueryStrings() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput { + return o.ApplyT(func(v *EventConnectionAuthParametersOauthOauthHttpParameters) []EventConnectionAuthParametersOauthOauthHttpParametersQueryString { + if v == nil { + return nil + } + return v.QueryStrings + }).(EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersBody struct { + // Specified whether the value is secret. + IsValueSecret *bool `pulumi:"isValueSecret"` + // The key for the parameter. + Key *string `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value *string `pulumi:"value"` +} + +// EventConnectionAuthParametersOauthOauthHttpParametersBodyInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs and EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersBodyInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs{...} +type EventConnectionAuthParametersOauthOauthHttpParametersBodyInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersBodyOutput() EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersBodyOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput +} + +type EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs struct { + // Specified whether the value is secret. + IsValueSecret pulumi.BoolPtrInput `pulumi:"isValueSecret"` + // The key for the parameter. + Key pulumi.StringPtrInput `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersBody)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyOutput() EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersBodyOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) +} + +// EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersBodyArray and EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersBodyArray{ EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs{...} } +type EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput +} + +type EventConnectionAuthParametersOauthOauthHttpParametersBodyArray []EventConnectionAuthParametersOauthOauthHttpParametersBodyInput + +func (EventConnectionAuthParametersOauthOauthHttpParametersBodyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersOauthOauthHttpParametersBody)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersBodyArray) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersBodyArray) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersBody)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyOutput() EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput { + return o +} + +// Specified whether the value is secret. +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) IsValueSecret() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersBody) *bool { return v.IsValueSecret }).(pulumi.BoolPtrOutput) +} + +// The key for the parameter. +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersBody) *string { return v.Key }).(pulumi.StringPtrOutput) +} + +// The value associated with the key. Created and stored in AWS Secrets Manager if is secret. +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersBody) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersOauthOauthHttpParametersBody)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput) Index(i pulumi.IntInput) EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventConnectionAuthParametersOauthOauthHttpParametersBody { + return vs[0].([]EventConnectionAuthParametersOauthOauthHttpParametersBody)[vs[1].(int)] + }).(EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersHeader struct { + // Specified whether the value is secret. + IsValueSecret *bool `pulumi:"isValueSecret"` + // The key for the parameter. + Key *string `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value *string `pulumi:"value"` +} + +// EventConnectionAuthParametersOauthOauthHttpParametersHeaderInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs and EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersHeaderInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs{...} +type EventConnectionAuthParametersOauthOauthHttpParametersHeaderInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput() EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput +} + +type EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs struct { + // Specified whether the value is secret. + IsValueSecret pulumi.BoolPtrInput `pulumi:"isValueSecret"` + // The key for the parameter. + Key pulumi.StringPtrInput `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersHeader)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput() EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) +} + +// EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray and EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray{ EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs{...} } +type EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput +} + +type EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray []EventConnectionAuthParametersOauthOauthHttpParametersHeaderInput + +func (EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersOauthOauthHttpParametersHeader)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersHeader)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput() EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput { + return o +} + +// Specified whether the value is secret. +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) IsValueSecret() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersHeader) *bool { return v.IsValueSecret }).(pulumi.BoolPtrOutput) +} + +// The key for the parameter. +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersHeader) *string { return v.Key }).(pulumi.StringPtrOutput) +} + +// The value associated with the key. Created and stored in AWS Secrets Manager if is secret. +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersHeader) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersOauthOauthHttpParametersHeader)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput) Index(i pulumi.IntInput) EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventConnectionAuthParametersOauthOauthHttpParametersHeader { + return vs[0].([]EventConnectionAuthParametersOauthOauthHttpParametersHeader)[vs[1].(int)] + }).(EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersQueryString struct { + // Specified whether the value is secret. + IsValueSecret *bool `pulumi:"isValueSecret"` + // The key for the parameter. + Key *string `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value *string `pulumi:"value"` +} + +// EventConnectionAuthParametersOauthOauthHttpParametersQueryStringInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs and EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersQueryStringInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs{...} +type EventConnectionAuthParametersOauthOauthHttpParametersQueryStringInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput +} + +type EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs struct { + // Specified whether the value is secret. + IsValueSecret pulumi.BoolPtrInput `pulumi:"isValueSecret"` + // The key for the parameter. + Key pulumi.StringPtrInput `pulumi:"key"` + // The value associated with the key. Created and stored in AWS Secrets Manager if is secret. + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersQueryString)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) +} + +// EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayInput is an input type that accepts EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray and EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput values. +// You can construct a concrete instance of `EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayInput` via: +// +// EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray{ EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs{...} } +type EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayInput interface { + pulumi.Input + + ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput + ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutputWithContext(context.Context) EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput +} + +type EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray []EventConnectionAuthParametersOauthOauthHttpParametersQueryStringInput + +func (EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersOauthOauthHttpParametersQueryString)(nil)).Elem() +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput { + return i.ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutputWithContext(context.Background()) +} + +func (i EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersQueryString)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput { + return o +} + +// Specified whether the value is secret. +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) IsValueSecret() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersQueryString) *bool { return v.IsValueSecret }).(pulumi.BoolPtrOutput) +} + +// The key for the parameter. +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersQueryString) *string { return v.Key }).(pulumi.StringPtrOutput) +} + +// The value associated with the key. Created and stored in AWS Secrets Manager if is secret. +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventConnectionAuthParametersOauthOauthHttpParametersQueryString) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput struct{ *pulumi.OutputState } + +func (EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventConnectionAuthParametersOauthOauthHttpParametersQueryString)(nil)).Elem() +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput() EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput) ToEventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutputWithContext(ctx context.Context) EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput { + return o +} + +func (o EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput) Index(i pulumi.IntInput) EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventConnectionAuthParametersOauthOauthHttpParametersQueryString { + return vs[0].([]EventConnectionAuthParametersOauthOauthHttpParametersQueryString)[vs[1].(int)] + }).(EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput) +} + +type EventEndpointEventBus struct { + // The ARN of the event bus the endpoint is associated with. + EventBusArn string `pulumi:"eventBusArn"` +} + +// EventEndpointEventBusInput is an input type that accepts EventEndpointEventBusArgs and EventEndpointEventBusOutput values. +// You can construct a concrete instance of `EventEndpointEventBusInput` via: +// +// EventEndpointEventBusArgs{...} +type EventEndpointEventBusInput interface { + pulumi.Input + + ToEventEndpointEventBusOutput() EventEndpointEventBusOutput + ToEventEndpointEventBusOutputWithContext(context.Context) EventEndpointEventBusOutput +} + +type EventEndpointEventBusArgs struct { + // The ARN of the event bus the endpoint is associated with. + EventBusArn pulumi.StringInput `pulumi:"eventBusArn"` +} + +func (EventEndpointEventBusArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointEventBus)(nil)).Elem() +} + +func (i EventEndpointEventBusArgs) ToEventEndpointEventBusOutput() EventEndpointEventBusOutput { + return i.ToEventEndpointEventBusOutputWithContext(context.Background()) +} + +func (i EventEndpointEventBusArgs) ToEventEndpointEventBusOutputWithContext(ctx context.Context) EventEndpointEventBusOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointEventBusOutput) +} + +// EventEndpointEventBusArrayInput is an input type that accepts EventEndpointEventBusArray and EventEndpointEventBusArrayOutput values. +// You can construct a concrete instance of `EventEndpointEventBusArrayInput` via: +// +// EventEndpointEventBusArray{ EventEndpointEventBusArgs{...} } +type EventEndpointEventBusArrayInput interface { + pulumi.Input + + ToEventEndpointEventBusArrayOutput() EventEndpointEventBusArrayOutput + ToEventEndpointEventBusArrayOutputWithContext(context.Context) EventEndpointEventBusArrayOutput +} + +type EventEndpointEventBusArray []EventEndpointEventBusInput + +func (EventEndpointEventBusArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventEndpointEventBus)(nil)).Elem() +} + +func (i EventEndpointEventBusArray) ToEventEndpointEventBusArrayOutput() EventEndpointEventBusArrayOutput { + return i.ToEventEndpointEventBusArrayOutputWithContext(context.Background()) +} + +func (i EventEndpointEventBusArray) ToEventEndpointEventBusArrayOutputWithContext(ctx context.Context) EventEndpointEventBusArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointEventBusArrayOutput) +} + +type EventEndpointEventBusOutput struct{ *pulumi.OutputState } + +func (EventEndpointEventBusOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointEventBus)(nil)).Elem() +} + +func (o EventEndpointEventBusOutput) ToEventEndpointEventBusOutput() EventEndpointEventBusOutput { + return o +} + +func (o EventEndpointEventBusOutput) ToEventEndpointEventBusOutputWithContext(ctx context.Context) EventEndpointEventBusOutput { + return o +} + +// The ARN of the event bus the endpoint is associated with. +func (o EventEndpointEventBusOutput) EventBusArn() pulumi.StringOutput { + return o.ApplyT(func(v EventEndpointEventBus) string { return v.EventBusArn }).(pulumi.StringOutput) +} + +type EventEndpointEventBusArrayOutput struct{ *pulumi.OutputState } + +func (EventEndpointEventBusArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventEndpointEventBus)(nil)).Elem() +} + +func (o EventEndpointEventBusArrayOutput) ToEventEndpointEventBusArrayOutput() EventEndpointEventBusArrayOutput { + return o +} + +func (o EventEndpointEventBusArrayOutput) ToEventEndpointEventBusArrayOutputWithContext(ctx context.Context) EventEndpointEventBusArrayOutput { + return o +} + +func (o EventEndpointEventBusArrayOutput) Index(i pulumi.IntInput) EventEndpointEventBusOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventEndpointEventBus { + return vs[0].([]EventEndpointEventBus)[vs[1].(int)] + }).(EventEndpointEventBusOutput) +} + +type EventEndpointReplicationConfig struct { + // The state of event replication. Valid values: `ENABLED`, `DISABLED`. The default state is `ENABLED`, which means you must supply a `roleArn`. If you don't have a `roleArn` or you don't want event replication enabled, set `state` to `DISABLED`. + State *string `pulumi:"state"` +} + +// EventEndpointReplicationConfigInput is an input type that accepts EventEndpointReplicationConfigArgs and EventEndpointReplicationConfigOutput values. +// You can construct a concrete instance of `EventEndpointReplicationConfigInput` via: +// +// EventEndpointReplicationConfigArgs{...} +type EventEndpointReplicationConfigInput interface { + pulumi.Input + + ToEventEndpointReplicationConfigOutput() EventEndpointReplicationConfigOutput + ToEventEndpointReplicationConfigOutputWithContext(context.Context) EventEndpointReplicationConfigOutput +} + +type EventEndpointReplicationConfigArgs struct { + // The state of event replication. Valid values: `ENABLED`, `DISABLED`. The default state is `ENABLED`, which means you must supply a `roleArn`. If you don't have a `roleArn` or you don't want event replication enabled, set `state` to `DISABLED`. + State pulumi.StringPtrInput `pulumi:"state"` +} + +func (EventEndpointReplicationConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointReplicationConfig)(nil)).Elem() +} + +func (i EventEndpointReplicationConfigArgs) ToEventEndpointReplicationConfigOutput() EventEndpointReplicationConfigOutput { + return i.ToEventEndpointReplicationConfigOutputWithContext(context.Background()) +} + +func (i EventEndpointReplicationConfigArgs) ToEventEndpointReplicationConfigOutputWithContext(ctx context.Context) EventEndpointReplicationConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointReplicationConfigOutput) +} + +func (i EventEndpointReplicationConfigArgs) ToEventEndpointReplicationConfigPtrOutput() EventEndpointReplicationConfigPtrOutput { + return i.ToEventEndpointReplicationConfigPtrOutputWithContext(context.Background()) +} + +func (i EventEndpointReplicationConfigArgs) ToEventEndpointReplicationConfigPtrOutputWithContext(ctx context.Context) EventEndpointReplicationConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointReplicationConfigOutput).ToEventEndpointReplicationConfigPtrOutputWithContext(ctx) +} + +// EventEndpointReplicationConfigPtrInput is an input type that accepts EventEndpointReplicationConfigArgs, EventEndpointReplicationConfigPtr and EventEndpointReplicationConfigPtrOutput values. +// You can construct a concrete instance of `EventEndpointReplicationConfigPtrInput` via: +// +// EventEndpointReplicationConfigArgs{...} +// +// or: +// +// nil +type EventEndpointReplicationConfigPtrInput interface { + pulumi.Input + + ToEventEndpointReplicationConfigPtrOutput() EventEndpointReplicationConfigPtrOutput + ToEventEndpointReplicationConfigPtrOutputWithContext(context.Context) EventEndpointReplicationConfigPtrOutput +} + +type eventEndpointReplicationConfigPtrType EventEndpointReplicationConfigArgs + +func EventEndpointReplicationConfigPtr(v *EventEndpointReplicationConfigArgs) EventEndpointReplicationConfigPtrInput { + return (*eventEndpointReplicationConfigPtrType)(v) +} + +func (*eventEndpointReplicationConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointReplicationConfig)(nil)).Elem() +} + +func (i *eventEndpointReplicationConfigPtrType) ToEventEndpointReplicationConfigPtrOutput() EventEndpointReplicationConfigPtrOutput { + return i.ToEventEndpointReplicationConfigPtrOutputWithContext(context.Background()) +} + +func (i *eventEndpointReplicationConfigPtrType) ToEventEndpointReplicationConfigPtrOutputWithContext(ctx context.Context) EventEndpointReplicationConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointReplicationConfigPtrOutput) +} + +type EventEndpointReplicationConfigOutput struct{ *pulumi.OutputState } + +func (EventEndpointReplicationConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointReplicationConfig)(nil)).Elem() +} + +func (o EventEndpointReplicationConfigOutput) ToEventEndpointReplicationConfigOutput() EventEndpointReplicationConfigOutput { + return o +} + +func (o EventEndpointReplicationConfigOutput) ToEventEndpointReplicationConfigOutputWithContext(ctx context.Context) EventEndpointReplicationConfigOutput { + return o +} + +func (o EventEndpointReplicationConfigOutput) ToEventEndpointReplicationConfigPtrOutput() EventEndpointReplicationConfigPtrOutput { + return o.ToEventEndpointReplicationConfigPtrOutputWithContext(context.Background()) +} + +func (o EventEndpointReplicationConfigOutput) ToEventEndpointReplicationConfigPtrOutputWithContext(ctx context.Context) EventEndpointReplicationConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventEndpointReplicationConfig) *EventEndpointReplicationConfig { + return &v + }).(EventEndpointReplicationConfigPtrOutput) +} + +// The state of event replication. Valid values: `ENABLED`, `DISABLED`. The default state is `ENABLED`, which means you must supply a `roleArn`. If you don't have a `roleArn` or you don't want event replication enabled, set `state` to `DISABLED`. +func (o EventEndpointReplicationConfigOutput) State() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventEndpointReplicationConfig) *string { return v.State }).(pulumi.StringPtrOutput) +} + +type EventEndpointReplicationConfigPtrOutput struct{ *pulumi.OutputState } + +func (EventEndpointReplicationConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointReplicationConfig)(nil)).Elem() +} + +func (o EventEndpointReplicationConfigPtrOutput) ToEventEndpointReplicationConfigPtrOutput() EventEndpointReplicationConfigPtrOutput { + return o +} + +func (o EventEndpointReplicationConfigPtrOutput) ToEventEndpointReplicationConfigPtrOutputWithContext(ctx context.Context) EventEndpointReplicationConfigPtrOutput { + return o +} + +func (o EventEndpointReplicationConfigPtrOutput) Elem() EventEndpointReplicationConfigOutput { + return o.ApplyT(func(v *EventEndpointReplicationConfig) EventEndpointReplicationConfig { + if v != nil { + return *v + } + var ret EventEndpointReplicationConfig + return ret + }).(EventEndpointReplicationConfigOutput) +} + +// The state of event replication. Valid values: `ENABLED`, `DISABLED`. The default state is `ENABLED`, which means you must supply a `roleArn`. If you don't have a `roleArn` or you don't want event replication enabled, set `state` to `DISABLED`. +func (o EventEndpointReplicationConfigPtrOutput) State() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventEndpointReplicationConfig) *string { + if v == nil { + return nil + } + return v.State + }).(pulumi.StringPtrOutput) +} + +type EventEndpointRoutingConfig struct { + // Parameters used for failover. This includes what triggers failover and what happens when it's triggered. Documented below. + FailoverConfig EventEndpointRoutingConfigFailoverConfig `pulumi:"failoverConfig"` +} + +// EventEndpointRoutingConfigInput is an input type that accepts EventEndpointRoutingConfigArgs and EventEndpointRoutingConfigOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigInput` via: +// +// EventEndpointRoutingConfigArgs{...} +type EventEndpointRoutingConfigInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigOutput() EventEndpointRoutingConfigOutput + ToEventEndpointRoutingConfigOutputWithContext(context.Context) EventEndpointRoutingConfigOutput +} + +type EventEndpointRoutingConfigArgs struct { + // Parameters used for failover. This includes what triggers failover and what happens when it's triggered. Documented below. + FailoverConfig EventEndpointRoutingConfigFailoverConfigInput `pulumi:"failoverConfig"` +} + +func (EventEndpointRoutingConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfig)(nil)).Elem() +} + +func (i EventEndpointRoutingConfigArgs) ToEventEndpointRoutingConfigOutput() EventEndpointRoutingConfigOutput { + return i.ToEventEndpointRoutingConfigOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigArgs) ToEventEndpointRoutingConfigOutputWithContext(ctx context.Context) EventEndpointRoutingConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigOutput) +} + +func (i EventEndpointRoutingConfigArgs) ToEventEndpointRoutingConfigPtrOutput() EventEndpointRoutingConfigPtrOutput { + return i.ToEventEndpointRoutingConfigPtrOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigArgs) ToEventEndpointRoutingConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigOutput).ToEventEndpointRoutingConfigPtrOutputWithContext(ctx) +} + +// EventEndpointRoutingConfigPtrInput is an input type that accepts EventEndpointRoutingConfigArgs, EventEndpointRoutingConfigPtr and EventEndpointRoutingConfigPtrOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigPtrInput` via: +// +// EventEndpointRoutingConfigArgs{...} +// +// or: +// +// nil +type EventEndpointRoutingConfigPtrInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigPtrOutput() EventEndpointRoutingConfigPtrOutput + ToEventEndpointRoutingConfigPtrOutputWithContext(context.Context) EventEndpointRoutingConfigPtrOutput +} + +type eventEndpointRoutingConfigPtrType EventEndpointRoutingConfigArgs + +func EventEndpointRoutingConfigPtr(v *EventEndpointRoutingConfigArgs) EventEndpointRoutingConfigPtrInput { + return (*eventEndpointRoutingConfigPtrType)(v) +} + +func (*eventEndpointRoutingConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfig)(nil)).Elem() +} + +func (i *eventEndpointRoutingConfigPtrType) ToEventEndpointRoutingConfigPtrOutput() EventEndpointRoutingConfigPtrOutput { + return i.ToEventEndpointRoutingConfigPtrOutputWithContext(context.Background()) +} + +func (i *eventEndpointRoutingConfigPtrType) ToEventEndpointRoutingConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigPtrOutput) +} + +type EventEndpointRoutingConfigOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfig)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigOutput) ToEventEndpointRoutingConfigOutput() EventEndpointRoutingConfigOutput { + return o +} + +func (o EventEndpointRoutingConfigOutput) ToEventEndpointRoutingConfigOutputWithContext(ctx context.Context) EventEndpointRoutingConfigOutput { + return o +} + +func (o EventEndpointRoutingConfigOutput) ToEventEndpointRoutingConfigPtrOutput() EventEndpointRoutingConfigPtrOutput { + return o.ToEventEndpointRoutingConfigPtrOutputWithContext(context.Background()) +} + +func (o EventEndpointRoutingConfigOutput) ToEventEndpointRoutingConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventEndpointRoutingConfig) *EventEndpointRoutingConfig { + return &v + }).(EventEndpointRoutingConfigPtrOutput) +} + +// Parameters used for failover. This includes what triggers failover and what happens when it's triggered. Documented below. +func (o EventEndpointRoutingConfigOutput) FailoverConfig() EventEndpointRoutingConfigFailoverConfigOutput { + return o.ApplyT(func(v EventEndpointRoutingConfig) EventEndpointRoutingConfigFailoverConfig { return v.FailoverConfig }).(EventEndpointRoutingConfigFailoverConfigOutput) +} + +type EventEndpointRoutingConfigPtrOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfig)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigPtrOutput) ToEventEndpointRoutingConfigPtrOutput() EventEndpointRoutingConfigPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigPtrOutput) ToEventEndpointRoutingConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigPtrOutput) Elem() EventEndpointRoutingConfigOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfig) EventEndpointRoutingConfig { + if v != nil { + return *v + } + var ret EventEndpointRoutingConfig + return ret + }).(EventEndpointRoutingConfigOutput) +} + +// Parameters used for failover. This includes what triggers failover and what happens when it's triggered. Documented below. +func (o EventEndpointRoutingConfigPtrOutput) FailoverConfig() EventEndpointRoutingConfigFailoverConfigPtrOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfig) *EventEndpointRoutingConfigFailoverConfig { + if v == nil { + return nil + } + return &v.FailoverConfig + }).(EventEndpointRoutingConfigFailoverConfigPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfig struct { + // Parameters used for the primary Region. Documented below. + Primary EventEndpointRoutingConfigFailoverConfigPrimary `pulumi:"primary"` + // Parameters used for the secondary Region, the Region that events are routed to when failover is triggered or event replication is enabled. Documented below. + Secondary EventEndpointRoutingConfigFailoverConfigSecondary `pulumi:"secondary"` +} + +// EventEndpointRoutingConfigFailoverConfigInput is an input type that accepts EventEndpointRoutingConfigFailoverConfigArgs and EventEndpointRoutingConfigFailoverConfigOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigFailoverConfigInput` via: +// +// EventEndpointRoutingConfigFailoverConfigArgs{...} +type EventEndpointRoutingConfigFailoverConfigInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigFailoverConfigOutput() EventEndpointRoutingConfigFailoverConfigOutput + ToEventEndpointRoutingConfigFailoverConfigOutputWithContext(context.Context) EventEndpointRoutingConfigFailoverConfigOutput +} + +type EventEndpointRoutingConfigFailoverConfigArgs struct { + // Parameters used for the primary Region. Documented below. + Primary EventEndpointRoutingConfigFailoverConfigPrimaryInput `pulumi:"primary"` + // Parameters used for the secondary Region, the Region that events are routed to when failover is triggered or event replication is enabled. Documented below. + Secondary EventEndpointRoutingConfigFailoverConfigSecondaryInput `pulumi:"secondary"` +} + +func (EventEndpointRoutingConfigFailoverConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfig)(nil)).Elem() +} + +func (i EventEndpointRoutingConfigFailoverConfigArgs) ToEventEndpointRoutingConfigFailoverConfigOutput() EventEndpointRoutingConfigFailoverConfigOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigFailoverConfigArgs) ToEventEndpointRoutingConfigFailoverConfigOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigOutput) +} + +func (i EventEndpointRoutingConfigFailoverConfigArgs) ToEventEndpointRoutingConfigFailoverConfigPtrOutput() EventEndpointRoutingConfigFailoverConfigPtrOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigFailoverConfigArgs) ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigOutput).ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(ctx) +} + +// EventEndpointRoutingConfigFailoverConfigPtrInput is an input type that accepts EventEndpointRoutingConfigFailoverConfigArgs, EventEndpointRoutingConfigFailoverConfigPtr and EventEndpointRoutingConfigFailoverConfigPtrOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigFailoverConfigPtrInput` via: +// +// EventEndpointRoutingConfigFailoverConfigArgs{...} +// +// or: +// +// nil +type EventEndpointRoutingConfigFailoverConfigPtrInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigFailoverConfigPtrOutput() EventEndpointRoutingConfigFailoverConfigPtrOutput + ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(context.Context) EventEndpointRoutingConfigFailoverConfigPtrOutput +} + +type eventEndpointRoutingConfigFailoverConfigPtrType EventEndpointRoutingConfigFailoverConfigArgs + +func EventEndpointRoutingConfigFailoverConfigPtr(v *EventEndpointRoutingConfigFailoverConfigArgs) EventEndpointRoutingConfigFailoverConfigPtrInput { + return (*eventEndpointRoutingConfigFailoverConfigPtrType)(v) +} + +func (*eventEndpointRoutingConfigFailoverConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfigFailoverConfig)(nil)).Elem() +} + +func (i *eventEndpointRoutingConfigFailoverConfigPtrType) ToEventEndpointRoutingConfigFailoverConfigPtrOutput() EventEndpointRoutingConfigFailoverConfigPtrOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(context.Background()) +} + +func (i *eventEndpointRoutingConfigFailoverConfigPtrType) ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfigOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigFailoverConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfig)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigFailoverConfigOutput) ToEventEndpointRoutingConfigFailoverConfigOutput() EventEndpointRoutingConfigFailoverConfigOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigOutput) ToEventEndpointRoutingConfigFailoverConfigOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigOutput) ToEventEndpointRoutingConfigFailoverConfigPtrOutput() EventEndpointRoutingConfigFailoverConfigPtrOutput { + return o.ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(context.Background()) +} + +func (o EventEndpointRoutingConfigFailoverConfigOutput) ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventEndpointRoutingConfigFailoverConfig) *EventEndpointRoutingConfigFailoverConfig { + return &v + }).(EventEndpointRoutingConfigFailoverConfigPtrOutput) +} + +// Parameters used for the primary Region. Documented below. +func (o EventEndpointRoutingConfigFailoverConfigOutput) Primary() EventEndpointRoutingConfigFailoverConfigPrimaryOutput { + return o.ApplyT(func(v EventEndpointRoutingConfigFailoverConfig) EventEndpointRoutingConfigFailoverConfigPrimary { + return v.Primary + }).(EventEndpointRoutingConfigFailoverConfigPrimaryOutput) +} + +// Parameters used for the secondary Region, the Region that events are routed to when failover is triggered or event replication is enabled. Documented below. +func (o EventEndpointRoutingConfigFailoverConfigOutput) Secondary() EventEndpointRoutingConfigFailoverConfigSecondaryOutput { + return o.ApplyT(func(v EventEndpointRoutingConfigFailoverConfig) EventEndpointRoutingConfigFailoverConfigSecondary { + return v.Secondary + }).(EventEndpointRoutingConfigFailoverConfigSecondaryOutput) +} + +type EventEndpointRoutingConfigFailoverConfigPtrOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigFailoverConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfigFailoverConfig)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigFailoverConfigPtrOutput) ToEventEndpointRoutingConfigFailoverConfigPtrOutput() EventEndpointRoutingConfigFailoverConfigPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigPtrOutput) ToEventEndpointRoutingConfigFailoverConfigPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigPtrOutput) Elem() EventEndpointRoutingConfigFailoverConfigOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfigFailoverConfig) EventEndpointRoutingConfigFailoverConfig { + if v != nil { + return *v + } + var ret EventEndpointRoutingConfigFailoverConfig + return ret + }).(EventEndpointRoutingConfigFailoverConfigOutput) +} + +// Parameters used for the primary Region. Documented below. +func (o EventEndpointRoutingConfigFailoverConfigPtrOutput) Primary() EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfigFailoverConfig) *EventEndpointRoutingConfigFailoverConfigPrimary { + if v == nil { + return nil + } + return &v.Primary + }).(EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) +} + +// Parameters used for the secondary Region, the Region that events are routed to when failover is triggered or event replication is enabled. Documented below. +func (o EventEndpointRoutingConfigFailoverConfigPtrOutput) Secondary() EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfigFailoverConfig) *EventEndpointRoutingConfigFailoverConfigSecondary { + if v == nil { + return nil + } + return &v.Secondary + }).(EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfigPrimary struct { + // The ARN of the health check used by the endpoint to determine whether failover is triggered. + HealthCheck *string `pulumi:"healthCheck"` +} + +// EventEndpointRoutingConfigFailoverConfigPrimaryInput is an input type that accepts EventEndpointRoutingConfigFailoverConfigPrimaryArgs and EventEndpointRoutingConfigFailoverConfigPrimaryOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigFailoverConfigPrimaryInput` via: +// +// EventEndpointRoutingConfigFailoverConfigPrimaryArgs{...} +type EventEndpointRoutingConfigFailoverConfigPrimaryInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigFailoverConfigPrimaryOutput() EventEndpointRoutingConfigFailoverConfigPrimaryOutput + ToEventEndpointRoutingConfigFailoverConfigPrimaryOutputWithContext(context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryOutput +} + +type EventEndpointRoutingConfigFailoverConfigPrimaryArgs struct { + // The ARN of the health check used by the endpoint to determine whether failover is triggered. + HealthCheck pulumi.StringPtrInput `pulumi:"healthCheck"` +} + +func (EventEndpointRoutingConfigFailoverConfigPrimaryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigPrimary)(nil)).Elem() +} + +func (i EventEndpointRoutingConfigFailoverConfigPrimaryArgs) ToEventEndpointRoutingConfigFailoverConfigPrimaryOutput() EventEndpointRoutingConfigFailoverConfigPrimaryOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigPrimaryOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigFailoverConfigPrimaryArgs) ToEventEndpointRoutingConfigFailoverConfigPrimaryOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigPrimaryOutput) +} + +func (i EventEndpointRoutingConfigFailoverConfigPrimaryArgs) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput() EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigFailoverConfigPrimaryArgs) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigPrimaryOutput).ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(ctx) +} + +// EventEndpointRoutingConfigFailoverConfigPrimaryPtrInput is an input type that accepts EventEndpointRoutingConfigFailoverConfigPrimaryArgs, EventEndpointRoutingConfigFailoverConfigPrimaryPtr and EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigFailoverConfigPrimaryPtrInput` via: +// +// EventEndpointRoutingConfigFailoverConfigPrimaryArgs{...} +// +// or: +// +// nil +type EventEndpointRoutingConfigFailoverConfigPrimaryPtrInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput() EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput + ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput +} + +type eventEndpointRoutingConfigFailoverConfigPrimaryPtrType EventEndpointRoutingConfigFailoverConfigPrimaryArgs + +func EventEndpointRoutingConfigFailoverConfigPrimaryPtr(v *EventEndpointRoutingConfigFailoverConfigPrimaryArgs) EventEndpointRoutingConfigFailoverConfigPrimaryPtrInput { + return (*eventEndpointRoutingConfigFailoverConfigPrimaryPtrType)(v) +} + +func (*eventEndpointRoutingConfigFailoverConfigPrimaryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfigFailoverConfigPrimary)(nil)).Elem() +} + +func (i *eventEndpointRoutingConfigFailoverConfigPrimaryPtrType) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput() EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(context.Background()) +} + +func (i *eventEndpointRoutingConfigFailoverConfigPrimaryPtrType) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfigPrimaryOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigFailoverConfigPrimaryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigPrimary)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigFailoverConfigPrimaryOutput) ToEventEndpointRoutingConfigFailoverConfigPrimaryOutput() EventEndpointRoutingConfigFailoverConfigPrimaryOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigPrimaryOutput) ToEventEndpointRoutingConfigFailoverConfigPrimaryOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigPrimaryOutput) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput() EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return o.ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(context.Background()) +} + +func (o EventEndpointRoutingConfigFailoverConfigPrimaryOutput) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventEndpointRoutingConfigFailoverConfigPrimary) *EventEndpointRoutingConfigFailoverConfigPrimary { + return &v + }).(EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) +} + +// The ARN of the health check used by the endpoint to determine whether failover is triggered. +func (o EventEndpointRoutingConfigFailoverConfigPrimaryOutput) HealthCheck() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventEndpointRoutingConfigFailoverConfigPrimary) *string { return v.HealthCheck }).(pulumi.StringPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfigFailoverConfigPrimary)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput() EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) ToEventEndpointRoutingConfigFailoverConfigPrimaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) Elem() EventEndpointRoutingConfigFailoverConfigPrimaryOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfigFailoverConfigPrimary) EventEndpointRoutingConfigFailoverConfigPrimary { + if v != nil { + return *v + } + var ret EventEndpointRoutingConfigFailoverConfigPrimary + return ret + }).(EventEndpointRoutingConfigFailoverConfigPrimaryOutput) +} + +// The ARN of the health check used by the endpoint to determine whether failover is triggered. +func (o EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput) HealthCheck() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfigFailoverConfigPrimary) *string { + if v == nil { + return nil + } + return v.HealthCheck + }).(pulumi.StringPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfigSecondary struct { + // The name of the secondary Region. + Route *string `pulumi:"route"` +} + +// EventEndpointRoutingConfigFailoverConfigSecondaryInput is an input type that accepts EventEndpointRoutingConfigFailoverConfigSecondaryArgs and EventEndpointRoutingConfigFailoverConfigSecondaryOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigFailoverConfigSecondaryInput` via: +// +// EventEndpointRoutingConfigFailoverConfigSecondaryArgs{...} +type EventEndpointRoutingConfigFailoverConfigSecondaryInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigFailoverConfigSecondaryOutput() EventEndpointRoutingConfigFailoverConfigSecondaryOutput + ToEventEndpointRoutingConfigFailoverConfigSecondaryOutputWithContext(context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryOutput +} + +type EventEndpointRoutingConfigFailoverConfigSecondaryArgs struct { + // The name of the secondary Region. + Route pulumi.StringPtrInput `pulumi:"route"` +} + +func (EventEndpointRoutingConfigFailoverConfigSecondaryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigSecondary)(nil)).Elem() +} + +func (i EventEndpointRoutingConfigFailoverConfigSecondaryArgs) ToEventEndpointRoutingConfigFailoverConfigSecondaryOutput() EventEndpointRoutingConfigFailoverConfigSecondaryOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigSecondaryOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigFailoverConfigSecondaryArgs) ToEventEndpointRoutingConfigFailoverConfigSecondaryOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigSecondaryOutput) +} + +func (i EventEndpointRoutingConfigFailoverConfigSecondaryArgs) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput() EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(context.Background()) +} + +func (i EventEndpointRoutingConfigFailoverConfigSecondaryArgs) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigSecondaryOutput).ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(ctx) +} + +// EventEndpointRoutingConfigFailoverConfigSecondaryPtrInput is an input type that accepts EventEndpointRoutingConfigFailoverConfigSecondaryArgs, EventEndpointRoutingConfigFailoverConfigSecondaryPtr and EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput values. +// You can construct a concrete instance of `EventEndpointRoutingConfigFailoverConfigSecondaryPtrInput` via: +// +// EventEndpointRoutingConfigFailoverConfigSecondaryArgs{...} +// +// or: +// +// nil +type EventEndpointRoutingConfigFailoverConfigSecondaryPtrInput interface { + pulumi.Input + + ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput() EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput + ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput +} + +type eventEndpointRoutingConfigFailoverConfigSecondaryPtrType EventEndpointRoutingConfigFailoverConfigSecondaryArgs + +func EventEndpointRoutingConfigFailoverConfigSecondaryPtr(v *EventEndpointRoutingConfigFailoverConfigSecondaryArgs) EventEndpointRoutingConfigFailoverConfigSecondaryPtrInput { + return (*eventEndpointRoutingConfigFailoverConfigSecondaryPtrType)(v) +} + +func (*eventEndpointRoutingConfigFailoverConfigSecondaryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfigFailoverConfigSecondary)(nil)).Elem() +} + +func (i *eventEndpointRoutingConfigFailoverConfigSecondaryPtrType) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput() EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return i.ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(context.Background()) +} + +func (i *eventEndpointRoutingConfigFailoverConfigSecondaryPtrType) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfigSecondaryOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigFailoverConfigSecondaryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigSecondary)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigFailoverConfigSecondaryOutput) ToEventEndpointRoutingConfigFailoverConfigSecondaryOutput() EventEndpointRoutingConfigFailoverConfigSecondaryOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigSecondaryOutput) ToEventEndpointRoutingConfigFailoverConfigSecondaryOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigSecondaryOutput) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput() EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return o.ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(context.Background()) +} + +func (o EventEndpointRoutingConfigFailoverConfigSecondaryOutput) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventEndpointRoutingConfigFailoverConfigSecondary) *EventEndpointRoutingConfigFailoverConfigSecondary { + return &v + }).(EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) +} + +// The name of the secondary Region. +func (o EventEndpointRoutingConfigFailoverConfigSecondaryOutput) Route() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventEndpointRoutingConfigFailoverConfigSecondary) *string { return v.Route }).(pulumi.StringPtrOutput) +} + +type EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput struct{ *pulumi.OutputState } + +func (EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventEndpointRoutingConfigFailoverConfigSecondary)(nil)).Elem() +} + +func (o EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput() EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) ToEventEndpointRoutingConfigFailoverConfigSecondaryPtrOutputWithContext(ctx context.Context) EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput { + return o +} + +func (o EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) Elem() EventEndpointRoutingConfigFailoverConfigSecondaryOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfigFailoverConfigSecondary) EventEndpointRoutingConfigFailoverConfigSecondary { + if v != nil { + return *v + } + var ret EventEndpointRoutingConfigFailoverConfigSecondary + return ret + }).(EventEndpointRoutingConfigFailoverConfigSecondaryOutput) +} + +// The name of the secondary Region. +func (o EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput) Route() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventEndpointRoutingConfigFailoverConfigSecondary) *string { + if v == nil { + return nil + } + return v.Route + }).(pulumi.StringPtrOutput) +} + +type EventPermissionCondition struct { + // Key for the condition. Valid values: `aws:PrincipalOrgID`. + Key string `pulumi:"key"` + // Type of condition. Value values: `StringEquals`. + Type string `pulumi:"type"` + // Value for the key. + Value string `pulumi:"value"` +} + +// EventPermissionConditionInput is an input type that accepts EventPermissionConditionArgs and EventPermissionConditionOutput values. +// You can construct a concrete instance of `EventPermissionConditionInput` via: +// +// EventPermissionConditionArgs{...} +type EventPermissionConditionInput interface { + pulumi.Input + + ToEventPermissionConditionOutput() EventPermissionConditionOutput + ToEventPermissionConditionOutputWithContext(context.Context) EventPermissionConditionOutput +} + +type EventPermissionConditionArgs struct { + // Key for the condition. Valid values: `aws:PrincipalOrgID`. + Key pulumi.StringInput `pulumi:"key"` + // Type of condition. Value values: `StringEquals`. + Type pulumi.StringInput `pulumi:"type"` + // Value for the key. + Value pulumi.StringInput `pulumi:"value"` +} + +func (EventPermissionConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventPermissionCondition)(nil)).Elem() +} + +func (i EventPermissionConditionArgs) ToEventPermissionConditionOutput() EventPermissionConditionOutput { + return i.ToEventPermissionConditionOutputWithContext(context.Background()) +} + +func (i EventPermissionConditionArgs) ToEventPermissionConditionOutputWithContext(ctx context.Context) EventPermissionConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventPermissionConditionOutput) +} + +func (i EventPermissionConditionArgs) ToEventPermissionConditionPtrOutput() EventPermissionConditionPtrOutput { + return i.ToEventPermissionConditionPtrOutputWithContext(context.Background()) +} + +func (i EventPermissionConditionArgs) ToEventPermissionConditionPtrOutputWithContext(ctx context.Context) EventPermissionConditionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventPermissionConditionOutput).ToEventPermissionConditionPtrOutputWithContext(ctx) +} + +// EventPermissionConditionPtrInput is an input type that accepts EventPermissionConditionArgs, EventPermissionConditionPtr and EventPermissionConditionPtrOutput values. +// You can construct a concrete instance of `EventPermissionConditionPtrInput` via: +// +// EventPermissionConditionArgs{...} +// +// or: +// +// nil +type EventPermissionConditionPtrInput interface { + pulumi.Input + + ToEventPermissionConditionPtrOutput() EventPermissionConditionPtrOutput + ToEventPermissionConditionPtrOutputWithContext(context.Context) EventPermissionConditionPtrOutput +} + +type eventPermissionConditionPtrType EventPermissionConditionArgs + +func EventPermissionConditionPtr(v *EventPermissionConditionArgs) EventPermissionConditionPtrInput { + return (*eventPermissionConditionPtrType)(v) +} + +func (*eventPermissionConditionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventPermissionCondition)(nil)).Elem() +} + +func (i *eventPermissionConditionPtrType) ToEventPermissionConditionPtrOutput() EventPermissionConditionPtrOutput { + return i.ToEventPermissionConditionPtrOutputWithContext(context.Background()) +} + +func (i *eventPermissionConditionPtrType) ToEventPermissionConditionPtrOutputWithContext(ctx context.Context) EventPermissionConditionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventPermissionConditionPtrOutput) +} + +type EventPermissionConditionOutput struct{ *pulumi.OutputState } + +func (EventPermissionConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventPermissionCondition)(nil)).Elem() +} + +func (o EventPermissionConditionOutput) ToEventPermissionConditionOutput() EventPermissionConditionOutput { + return o +} + +func (o EventPermissionConditionOutput) ToEventPermissionConditionOutputWithContext(ctx context.Context) EventPermissionConditionOutput { + return o +} + +func (o EventPermissionConditionOutput) ToEventPermissionConditionPtrOutput() EventPermissionConditionPtrOutput { + return o.ToEventPermissionConditionPtrOutputWithContext(context.Background()) +} + +func (o EventPermissionConditionOutput) ToEventPermissionConditionPtrOutputWithContext(ctx context.Context) EventPermissionConditionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventPermissionCondition) *EventPermissionCondition { + return &v + }).(EventPermissionConditionPtrOutput) +} + +// Key for the condition. Valid values: `aws:PrincipalOrgID`. +func (o EventPermissionConditionOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v EventPermissionCondition) string { return v.Key }).(pulumi.StringOutput) +} + +// Type of condition. Value values: `StringEquals`. +func (o EventPermissionConditionOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v EventPermissionCondition) string { return v.Type }).(pulumi.StringOutput) +} + +// Value for the key. +func (o EventPermissionConditionOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v EventPermissionCondition) string { return v.Value }).(pulumi.StringOutput) +} + +type EventPermissionConditionPtrOutput struct{ *pulumi.OutputState } + +func (EventPermissionConditionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventPermissionCondition)(nil)).Elem() +} + +func (o EventPermissionConditionPtrOutput) ToEventPermissionConditionPtrOutput() EventPermissionConditionPtrOutput { + return o +} + +func (o EventPermissionConditionPtrOutput) ToEventPermissionConditionPtrOutputWithContext(ctx context.Context) EventPermissionConditionPtrOutput { + return o +} + +func (o EventPermissionConditionPtrOutput) Elem() EventPermissionConditionOutput { + return o.ApplyT(func(v *EventPermissionCondition) EventPermissionCondition { + if v != nil { + return *v + } + var ret EventPermissionCondition + return ret + }).(EventPermissionConditionOutput) +} + +// Key for the condition. Valid values: `aws:PrincipalOrgID`. +func (o EventPermissionConditionPtrOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventPermissionCondition) *string { + if v == nil { + return nil + } + return &v.Key + }).(pulumi.StringPtrOutput) +} + +// Type of condition. Value values: `StringEquals`. +func (o EventPermissionConditionPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventPermissionCondition) *string { + if v == nil { + return nil + } + return &v.Type + }).(pulumi.StringPtrOutput) +} + +// Value for the key. +func (o EventPermissionConditionPtrOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventPermissionCondition) *string { + if v == nil { + return nil + } + return &v.Value + }).(pulumi.StringPtrOutput) +} + +type EventTargetAppsyncTarget struct { + // Contains the GraphQL mutation to be parsed and executed. + GraphqlOperation *string `pulumi:"graphqlOperation"` +} + +// EventTargetAppsyncTargetInput is an input type that accepts EventTargetAppsyncTargetArgs and EventTargetAppsyncTargetOutput values. +// You can construct a concrete instance of `EventTargetAppsyncTargetInput` via: +// +// EventTargetAppsyncTargetArgs{...} +type EventTargetAppsyncTargetInput interface { + pulumi.Input + + ToEventTargetAppsyncTargetOutput() EventTargetAppsyncTargetOutput + ToEventTargetAppsyncTargetOutputWithContext(context.Context) EventTargetAppsyncTargetOutput +} + +type EventTargetAppsyncTargetArgs struct { + // Contains the GraphQL mutation to be parsed and executed. + GraphqlOperation pulumi.StringPtrInput `pulumi:"graphqlOperation"` +} + +func (EventTargetAppsyncTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetAppsyncTarget)(nil)).Elem() +} + +func (i EventTargetAppsyncTargetArgs) ToEventTargetAppsyncTargetOutput() EventTargetAppsyncTargetOutput { + return i.ToEventTargetAppsyncTargetOutputWithContext(context.Background()) +} + +func (i EventTargetAppsyncTargetArgs) ToEventTargetAppsyncTargetOutputWithContext(ctx context.Context) EventTargetAppsyncTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetAppsyncTargetOutput) +} + +func (i EventTargetAppsyncTargetArgs) ToEventTargetAppsyncTargetPtrOutput() EventTargetAppsyncTargetPtrOutput { + return i.ToEventTargetAppsyncTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetAppsyncTargetArgs) ToEventTargetAppsyncTargetPtrOutputWithContext(ctx context.Context) EventTargetAppsyncTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetAppsyncTargetOutput).ToEventTargetAppsyncTargetPtrOutputWithContext(ctx) +} + +// EventTargetAppsyncTargetPtrInput is an input type that accepts EventTargetAppsyncTargetArgs, EventTargetAppsyncTargetPtr and EventTargetAppsyncTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetAppsyncTargetPtrInput` via: +// +// EventTargetAppsyncTargetArgs{...} +// +// or: +// +// nil +type EventTargetAppsyncTargetPtrInput interface { + pulumi.Input + + ToEventTargetAppsyncTargetPtrOutput() EventTargetAppsyncTargetPtrOutput + ToEventTargetAppsyncTargetPtrOutputWithContext(context.Context) EventTargetAppsyncTargetPtrOutput +} + +type eventTargetAppsyncTargetPtrType EventTargetAppsyncTargetArgs + +func EventTargetAppsyncTargetPtr(v *EventTargetAppsyncTargetArgs) EventTargetAppsyncTargetPtrInput { + return (*eventTargetAppsyncTargetPtrType)(v) +} + +func (*eventTargetAppsyncTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetAppsyncTarget)(nil)).Elem() +} + +func (i *eventTargetAppsyncTargetPtrType) ToEventTargetAppsyncTargetPtrOutput() EventTargetAppsyncTargetPtrOutput { + return i.ToEventTargetAppsyncTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetAppsyncTargetPtrType) ToEventTargetAppsyncTargetPtrOutputWithContext(ctx context.Context) EventTargetAppsyncTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetAppsyncTargetPtrOutput) +} + +type EventTargetAppsyncTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetAppsyncTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetAppsyncTarget)(nil)).Elem() +} + +func (o EventTargetAppsyncTargetOutput) ToEventTargetAppsyncTargetOutput() EventTargetAppsyncTargetOutput { + return o +} + +func (o EventTargetAppsyncTargetOutput) ToEventTargetAppsyncTargetOutputWithContext(ctx context.Context) EventTargetAppsyncTargetOutput { + return o +} + +func (o EventTargetAppsyncTargetOutput) ToEventTargetAppsyncTargetPtrOutput() EventTargetAppsyncTargetPtrOutput { + return o.ToEventTargetAppsyncTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetAppsyncTargetOutput) ToEventTargetAppsyncTargetPtrOutputWithContext(ctx context.Context) EventTargetAppsyncTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetAppsyncTarget) *EventTargetAppsyncTarget { + return &v + }).(EventTargetAppsyncTargetPtrOutput) +} + +// Contains the GraphQL mutation to be parsed and executed. +func (o EventTargetAppsyncTargetOutput) GraphqlOperation() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetAppsyncTarget) *string { return v.GraphqlOperation }).(pulumi.StringPtrOutput) +} + +type EventTargetAppsyncTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetAppsyncTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetAppsyncTarget)(nil)).Elem() +} + +func (o EventTargetAppsyncTargetPtrOutput) ToEventTargetAppsyncTargetPtrOutput() EventTargetAppsyncTargetPtrOutput { + return o +} + +func (o EventTargetAppsyncTargetPtrOutput) ToEventTargetAppsyncTargetPtrOutputWithContext(ctx context.Context) EventTargetAppsyncTargetPtrOutput { + return o +} + +func (o EventTargetAppsyncTargetPtrOutput) Elem() EventTargetAppsyncTargetOutput { + return o.ApplyT(func(v *EventTargetAppsyncTarget) EventTargetAppsyncTarget { + if v != nil { + return *v + } + var ret EventTargetAppsyncTarget + return ret + }).(EventTargetAppsyncTargetOutput) +} + +// Contains the GraphQL mutation to be parsed and executed. +func (o EventTargetAppsyncTargetPtrOutput) GraphqlOperation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetAppsyncTarget) *string { + if v == nil { + return nil + } + return v.GraphqlOperation + }).(pulumi.StringPtrOutput) +} + +type EventTargetBatchTarget struct { + // The size of the array, if this is an array batch job. Valid values are integers between 2 and 10,000. + ArraySize *int `pulumi:"arraySize"` + // The number of times to attempt to retry, if the job fails. Valid values are 1 to 10. + JobAttempts *int `pulumi:"jobAttempts"` + // The ARN or name of the job definition to use if the event target is an AWS Batch job. This job definition must already exist. + JobDefinition string `pulumi:"jobDefinition"` + // The name to use for this execution of the job, if the target is an AWS Batch job. + JobName string `pulumi:"jobName"` +} + +// EventTargetBatchTargetInput is an input type that accepts EventTargetBatchTargetArgs and EventTargetBatchTargetOutput values. +// You can construct a concrete instance of `EventTargetBatchTargetInput` via: +// +// EventTargetBatchTargetArgs{...} +type EventTargetBatchTargetInput interface { + pulumi.Input + + ToEventTargetBatchTargetOutput() EventTargetBatchTargetOutput + ToEventTargetBatchTargetOutputWithContext(context.Context) EventTargetBatchTargetOutput +} + +type EventTargetBatchTargetArgs struct { + // The size of the array, if this is an array batch job. Valid values are integers between 2 and 10,000. + ArraySize pulumi.IntPtrInput `pulumi:"arraySize"` + // The number of times to attempt to retry, if the job fails. Valid values are 1 to 10. + JobAttempts pulumi.IntPtrInput `pulumi:"jobAttempts"` + // The ARN or name of the job definition to use if the event target is an AWS Batch job. This job definition must already exist. + JobDefinition pulumi.StringInput `pulumi:"jobDefinition"` + // The name to use for this execution of the job, if the target is an AWS Batch job. + JobName pulumi.StringInput `pulumi:"jobName"` +} + +func (EventTargetBatchTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetBatchTarget)(nil)).Elem() +} + +func (i EventTargetBatchTargetArgs) ToEventTargetBatchTargetOutput() EventTargetBatchTargetOutput { + return i.ToEventTargetBatchTargetOutputWithContext(context.Background()) +} + +func (i EventTargetBatchTargetArgs) ToEventTargetBatchTargetOutputWithContext(ctx context.Context) EventTargetBatchTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetBatchTargetOutput) +} + +func (i EventTargetBatchTargetArgs) ToEventTargetBatchTargetPtrOutput() EventTargetBatchTargetPtrOutput { + return i.ToEventTargetBatchTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetBatchTargetArgs) ToEventTargetBatchTargetPtrOutputWithContext(ctx context.Context) EventTargetBatchTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetBatchTargetOutput).ToEventTargetBatchTargetPtrOutputWithContext(ctx) +} + +// EventTargetBatchTargetPtrInput is an input type that accepts EventTargetBatchTargetArgs, EventTargetBatchTargetPtr and EventTargetBatchTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetBatchTargetPtrInput` via: +// +// EventTargetBatchTargetArgs{...} +// +// or: +// +// nil +type EventTargetBatchTargetPtrInput interface { + pulumi.Input + + ToEventTargetBatchTargetPtrOutput() EventTargetBatchTargetPtrOutput + ToEventTargetBatchTargetPtrOutputWithContext(context.Context) EventTargetBatchTargetPtrOutput +} + +type eventTargetBatchTargetPtrType EventTargetBatchTargetArgs + +func EventTargetBatchTargetPtr(v *EventTargetBatchTargetArgs) EventTargetBatchTargetPtrInput { + return (*eventTargetBatchTargetPtrType)(v) +} + +func (*eventTargetBatchTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetBatchTarget)(nil)).Elem() +} + +func (i *eventTargetBatchTargetPtrType) ToEventTargetBatchTargetPtrOutput() EventTargetBatchTargetPtrOutput { + return i.ToEventTargetBatchTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetBatchTargetPtrType) ToEventTargetBatchTargetPtrOutputWithContext(ctx context.Context) EventTargetBatchTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetBatchTargetPtrOutput) +} + +type EventTargetBatchTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetBatchTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetBatchTarget)(nil)).Elem() +} + +func (o EventTargetBatchTargetOutput) ToEventTargetBatchTargetOutput() EventTargetBatchTargetOutput { + return o +} + +func (o EventTargetBatchTargetOutput) ToEventTargetBatchTargetOutputWithContext(ctx context.Context) EventTargetBatchTargetOutput { + return o +} + +func (o EventTargetBatchTargetOutput) ToEventTargetBatchTargetPtrOutput() EventTargetBatchTargetPtrOutput { + return o.ToEventTargetBatchTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetBatchTargetOutput) ToEventTargetBatchTargetPtrOutputWithContext(ctx context.Context) EventTargetBatchTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetBatchTarget) *EventTargetBatchTarget { + return &v + }).(EventTargetBatchTargetPtrOutput) +} + +// The size of the array, if this is an array batch job. Valid values are integers between 2 and 10,000. +func (o EventTargetBatchTargetOutput) ArraySize() pulumi.IntPtrOutput { + return o.ApplyT(func(v EventTargetBatchTarget) *int { return v.ArraySize }).(pulumi.IntPtrOutput) +} + +// The number of times to attempt to retry, if the job fails. Valid values are 1 to 10. +func (o EventTargetBatchTargetOutput) JobAttempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v EventTargetBatchTarget) *int { return v.JobAttempts }).(pulumi.IntPtrOutput) +} + +// The ARN or name of the job definition to use if the event target is an AWS Batch job. This job definition must already exist. +func (o EventTargetBatchTargetOutput) JobDefinition() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetBatchTarget) string { return v.JobDefinition }).(pulumi.StringOutput) +} + +// The name to use for this execution of the job, if the target is an AWS Batch job. +func (o EventTargetBatchTargetOutput) JobName() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetBatchTarget) string { return v.JobName }).(pulumi.StringOutput) +} + +type EventTargetBatchTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetBatchTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetBatchTarget)(nil)).Elem() +} + +func (o EventTargetBatchTargetPtrOutput) ToEventTargetBatchTargetPtrOutput() EventTargetBatchTargetPtrOutput { + return o +} + +func (o EventTargetBatchTargetPtrOutput) ToEventTargetBatchTargetPtrOutputWithContext(ctx context.Context) EventTargetBatchTargetPtrOutput { + return o +} + +func (o EventTargetBatchTargetPtrOutput) Elem() EventTargetBatchTargetOutput { + return o.ApplyT(func(v *EventTargetBatchTarget) EventTargetBatchTarget { + if v != nil { + return *v + } + var ret EventTargetBatchTarget + return ret + }).(EventTargetBatchTargetOutput) +} + +// The size of the array, if this is an array batch job. Valid values are integers between 2 and 10,000. +func (o EventTargetBatchTargetPtrOutput) ArraySize() pulumi.IntPtrOutput { + return o.ApplyT(func(v *EventTargetBatchTarget) *int { + if v == nil { + return nil + } + return v.ArraySize + }).(pulumi.IntPtrOutput) +} + +// The number of times to attempt to retry, if the job fails. Valid values are 1 to 10. +func (o EventTargetBatchTargetPtrOutput) JobAttempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v *EventTargetBatchTarget) *int { + if v == nil { + return nil + } + return v.JobAttempts + }).(pulumi.IntPtrOutput) +} + +// The ARN or name of the job definition to use if the event target is an AWS Batch job. This job definition must already exist. +func (o EventTargetBatchTargetPtrOutput) JobDefinition() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetBatchTarget) *string { + if v == nil { + return nil + } + return &v.JobDefinition + }).(pulumi.StringPtrOutput) +} + +// The name to use for this execution of the job, if the target is an AWS Batch job. +func (o EventTargetBatchTargetPtrOutput) JobName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetBatchTarget) *string { + if v == nil { + return nil + } + return &v.JobName + }).(pulumi.StringPtrOutput) +} + +type EventTargetDeadLetterConfig struct { + // ARN of the SQS queue specified as the target for the dead-letter queue. + Arn *string `pulumi:"arn"` +} + +// EventTargetDeadLetterConfigInput is an input type that accepts EventTargetDeadLetterConfigArgs and EventTargetDeadLetterConfigOutput values. +// You can construct a concrete instance of `EventTargetDeadLetterConfigInput` via: +// +// EventTargetDeadLetterConfigArgs{...} +type EventTargetDeadLetterConfigInput interface { + pulumi.Input + + ToEventTargetDeadLetterConfigOutput() EventTargetDeadLetterConfigOutput + ToEventTargetDeadLetterConfigOutputWithContext(context.Context) EventTargetDeadLetterConfigOutput +} + +type EventTargetDeadLetterConfigArgs struct { + // ARN of the SQS queue specified as the target for the dead-letter queue. + Arn pulumi.StringPtrInput `pulumi:"arn"` +} + +func (EventTargetDeadLetterConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetDeadLetterConfig)(nil)).Elem() +} + +func (i EventTargetDeadLetterConfigArgs) ToEventTargetDeadLetterConfigOutput() EventTargetDeadLetterConfigOutput { + return i.ToEventTargetDeadLetterConfigOutputWithContext(context.Background()) +} + +func (i EventTargetDeadLetterConfigArgs) ToEventTargetDeadLetterConfigOutputWithContext(ctx context.Context) EventTargetDeadLetterConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetDeadLetterConfigOutput) +} + +func (i EventTargetDeadLetterConfigArgs) ToEventTargetDeadLetterConfigPtrOutput() EventTargetDeadLetterConfigPtrOutput { + return i.ToEventTargetDeadLetterConfigPtrOutputWithContext(context.Background()) +} + +func (i EventTargetDeadLetterConfigArgs) ToEventTargetDeadLetterConfigPtrOutputWithContext(ctx context.Context) EventTargetDeadLetterConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetDeadLetterConfigOutput).ToEventTargetDeadLetterConfigPtrOutputWithContext(ctx) +} + +// EventTargetDeadLetterConfigPtrInput is an input type that accepts EventTargetDeadLetterConfigArgs, EventTargetDeadLetterConfigPtr and EventTargetDeadLetterConfigPtrOutput values. +// You can construct a concrete instance of `EventTargetDeadLetterConfigPtrInput` via: +// +// EventTargetDeadLetterConfigArgs{...} +// +// or: +// +// nil +type EventTargetDeadLetterConfigPtrInput interface { + pulumi.Input + + ToEventTargetDeadLetterConfigPtrOutput() EventTargetDeadLetterConfigPtrOutput + ToEventTargetDeadLetterConfigPtrOutputWithContext(context.Context) EventTargetDeadLetterConfigPtrOutput +} + +type eventTargetDeadLetterConfigPtrType EventTargetDeadLetterConfigArgs + +func EventTargetDeadLetterConfigPtr(v *EventTargetDeadLetterConfigArgs) EventTargetDeadLetterConfigPtrInput { + return (*eventTargetDeadLetterConfigPtrType)(v) +} + +func (*eventTargetDeadLetterConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetDeadLetterConfig)(nil)).Elem() +} + +func (i *eventTargetDeadLetterConfigPtrType) ToEventTargetDeadLetterConfigPtrOutput() EventTargetDeadLetterConfigPtrOutput { + return i.ToEventTargetDeadLetterConfigPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetDeadLetterConfigPtrType) ToEventTargetDeadLetterConfigPtrOutputWithContext(ctx context.Context) EventTargetDeadLetterConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetDeadLetterConfigPtrOutput) +} + +type EventTargetDeadLetterConfigOutput struct{ *pulumi.OutputState } + +func (EventTargetDeadLetterConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetDeadLetterConfig)(nil)).Elem() +} + +func (o EventTargetDeadLetterConfigOutput) ToEventTargetDeadLetterConfigOutput() EventTargetDeadLetterConfigOutput { + return o +} + +func (o EventTargetDeadLetterConfigOutput) ToEventTargetDeadLetterConfigOutputWithContext(ctx context.Context) EventTargetDeadLetterConfigOutput { + return o +} + +func (o EventTargetDeadLetterConfigOutput) ToEventTargetDeadLetterConfigPtrOutput() EventTargetDeadLetterConfigPtrOutput { + return o.ToEventTargetDeadLetterConfigPtrOutputWithContext(context.Background()) +} + +func (o EventTargetDeadLetterConfigOutput) ToEventTargetDeadLetterConfigPtrOutputWithContext(ctx context.Context) EventTargetDeadLetterConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetDeadLetterConfig) *EventTargetDeadLetterConfig { + return &v + }).(EventTargetDeadLetterConfigPtrOutput) +} + +// ARN of the SQS queue specified as the target for the dead-letter queue. +func (o EventTargetDeadLetterConfigOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetDeadLetterConfig) *string { return v.Arn }).(pulumi.StringPtrOutput) +} + +type EventTargetDeadLetterConfigPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetDeadLetterConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetDeadLetterConfig)(nil)).Elem() +} + +func (o EventTargetDeadLetterConfigPtrOutput) ToEventTargetDeadLetterConfigPtrOutput() EventTargetDeadLetterConfigPtrOutput { + return o +} + +func (o EventTargetDeadLetterConfigPtrOutput) ToEventTargetDeadLetterConfigPtrOutputWithContext(ctx context.Context) EventTargetDeadLetterConfigPtrOutput { + return o +} + +func (o EventTargetDeadLetterConfigPtrOutput) Elem() EventTargetDeadLetterConfigOutput { + return o.ApplyT(func(v *EventTargetDeadLetterConfig) EventTargetDeadLetterConfig { + if v != nil { + return *v + } + var ret EventTargetDeadLetterConfig + return ret + }).(EventTargetDeadLetterConfigOutput) +} + +// ARN of the SQS queue specified as the target for the dead-letter queue. +func (o EventTargetDeadLetterConfigPtrOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetDeadLetterConfig) *string { + if v == nil { + return nil + } + return v.Arn + }).(pulumi.StringPtrOutput) +} + +type EventTargetEcsTarget struct { + // The capacity provider strategy to use for the task. If a `capacityProviderStrategy` specified, the `launchType` parameter must be omitted. If no `capacityProviderStrategy` or `launchType` is specified, the default capacity provider strategy for the cluster is used. Can be one or more. See below. + CapacityProviderStrategies []EventTargetEcsTargetCapacityProviderStrategy `pulumi:"capacityProviderStrategies"` + // Specifies whether to enable Amazon ECS managed tags for the task. + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + // Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + // Specifies an ECS task group for the task. The maximum length is 255 characters. + Group *string `pulumi:"group"` + // Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. Valid values include: `EC2`, `EXTERNAL`, or `FARGATE`. + LaunchType *string `pulumi:"launchType"` + // Use this if the ECS task uses the awsvpc network mode. This specifies the VPC subnets and security groups associated with the task, and whether a public IP address is to be used. Required if `launchType` is `FARGATE` because the awsvpc mode is required for Fargate tasks. + NetworkConfiguration *EventTargetEcsTargetNetworkConfiguration `pulumi:"networkConfiguration"` + // An array of placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. + OrderedPlacementStrategies []EventTargetEcsTargetOrderedPlacementStrategy `pulumi:"orderedPlacementStrategies"` + // An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). See Below. + PlacementConstraints []EventTargetEcsTargetPlacementConstraint `pulumi:"placementConstraints"` + // Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as `1.1.0`. This is used only if LaunchType is FARGATE. For more information about valid platform versions, see [AWS Fargate Platform Versions](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion *string `pulumi:"platformVersion"` + // Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. The only valid value is: `TASK_DEFINITION`. + PropagateTags *string `pulumi:"propagateTags"` + // A map of tags to assign to ecs resources. + Tags map[string]string `pulumi:"tags"` + // The number of tasks to create based on the TaskDefinition. Defaults to `1`. + TaskCount *int `pulumi:"taskCount"` + // The ARN of the task definition to use if the event target is an Amazon ECS cluster. + TaskDefinitionArn string `pulumi:"taskDefinitionArn"` +} + +// EventTargetEcsTargetInput is an input type that accepts EventTargetEcsTargetArgs and EventTargetEcsTargetOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetInput` via: +// +// EventTargetEcsTargetArgs{...} +type EventTargetEcsTargetInput interface { + pulumi.Input + + ToEventTargetEcsTargetOutput() EventTargetEcsTargetOutput + ToEventTargetEcsTargetOutputWithContext(context.Context) EventTargetEcsTargetOutput +} + +type EventTargetEcsTargetArgs struct { + // The capacity provider strategy to use for the task. If a `capacityProviderStrategy` specified, the `launchType` parameter must be omitted. If no `capacityProviderStrategy` or `launchType` is specified, the default capacity provider strategy for the cluster is used. Can be one or more. See below. + CapacityProviderStrategies EventTargetEcsTargetCapacityProviderStrategyArrayInput `pulumi:"capacityProviderStrategies"` + // Specifies whether to enable Amazon ECS managed tags for the task. + EnableEcsManagedTags pulumi.BoolPtrInput `pulumi:"enableEcsManagedTags"` + // Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. + EnableExecuteCommand pulumi.BoolPtrInput `pulumi:"enableExecuteCommand"` + // Specifies an ECS task group for the task. The maximum length is 255 characters. + Group pulumi.StringPtrInput `pulumi:"group"` + // Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. Valid values include: `EC2`, `EXTERNAL`, or `FARGATE`. + LaunchType pulumi.StringPtrInput `pulumi:"launchType"` + // Use this if the ECS task uses the awsvpc network mode. This specifies the VPC subnets and security groups associated with the task, and whether a public IP address is to be used. Required if `launchType` is `FARGATE` because the awsvpc mode is required for Fargate tasks. + NetworkConfiguration EventTargetEcsTargetNetworkConfigurationPtrInput `pulumi:"networkConfiguration"` + // An array of placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. + OrderedPlacementStrategies EventTargetEcsTargetOrderedPlacementStrategyArrayInput `pulumi:"orderedPlacementStrategies"` + // An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). See Below. + PlacementConstraints EventTargetEcsTargetPlacementConstraintArrayInput `pulumi:"placementConstraints"` + // Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as `1.1.0`. This is used only if LaunchType is FARGATE. For more information about valid platform versions, see [AWS Fargate Platform Versions](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringPtrInput `pulumi:"platformVersion"` + // Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. The only valid value is: `TASK_DEFINITION`. + PropagateTags pulumi.StringPtrInput `pulumi:"propagateTags"` + // A map of tags to assign to ecs resources. + Tags pulumi.StringMapInput `pulumi:"tags"` + // The number of tasks to create based on the TaskDefinition. Defaults to `1`. + TaskCount pulumi.IntPtrInput `pulumi:"taskCount"` + // The ARN of the task definition to use if the event target is an Amazon ECS cluster. + TaskDefinitionArn pulumi.StringInput `pulumi:"taskDefinitionArn"` +} + +func (EventTargetEcsTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTarget)(nil)).Elem() +} + +func (i EventTargetEcsTargetArgs) ToEventTargetEcsTargetOutput() EventTargetEcsTargetOutput { + return i.ToEventTargetEcsTargetOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetArgs) ToEventTargetEcsTargetOutputWithContext(ctx context.Context) EventTargetEcsTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetOutput) +} + +func (i EventTargetEcsTargetArgs) ToEventTargetEcsTargetPtrOutput() EventTargetEcsTargetPtrOutput { + return i.ToEventTargetEcsTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetArgs) ToEventTargetEcsTargetPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetOutput).ToEventTargetEcsTargetPtrOutputWithContext(ctx) +} + +// EventTargetEcsTargetPtrInput is an input type that accepts EventTargetEcsTargetArgs, EventTargetEcsTargetPtr and EventTargetEcsTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetPtrInput` via: +// +// EventTargetEcsTargetArgs{...} +// +// or: +// +// nil +type EventTargetEcsTargetPtrInput interface { + pulumi.Input + + ToEventTargetEcsTargetPtrOutput() EventTargetEcsTargetPtrOutput + ToEventTargetEcsTargetPtrOutputWithContext(context.Context) EventTargetEcsTargetPtrOutput +} + +type eventTargetEcsTargetPtrType EventTargetEcsTargetArgs + +func EventTargetEcsTargetPtr(v *EventTargetEcsTargetArgs) EventTargetEcsTargetPtrInput { + return (*eventTargetEcsTargetPtrType)(v) +} + +func (*eventTargetEcsTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetEcsTarget)(nil)).Elem() +} + +func (i *eventTargetEcsTargetPtrType) ToEventTargetEcsTargetPtrOutput() EventTargetEcsTargetPtrOutput { + return i.ToEventTargetEcsTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetEcsTargetPtrType) ToEventTargetEcsTargetPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetPtrOutput) +} + +type EventTargetEcsTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTarget)(nil)).Elem() +} + +func (o EventTargetEcsTargetOutput) ToEventTargetEcsTargetOutput() EventTargetEcsTargetOutput { + return o +} + +func (o EventTargetEcsTargetOutput) ToEventTargetEcsTargetOutputWithContext(ctx context.Context) EventTargetEcsTargetOutput { + return o +} + +func (o EventTargetEcsTargetOutput) ToEventTargetEcsTargetPtrOutput() EventTargetEcsTargetPtrOutput { + return o.ToEventTargetEcsTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetEcsTargetOutput) ToEventTargetEcsTargetPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetEcsTarget) *EventTargetEcsTarget { + return &v + }).(EventTargetEcsTargetPtrOutput) +} + +// The capacity provider strategy to use for the task. If a `capacityProviderStrategy` specified, the `launchType` parameter must be omitted. If no `capacityProviderStrategy` or `launchType` is specified, the default capacity provider strategy for the cluster is used. Can be one or more. See below. +func (o EventTargetEcsTargetOutput) CapacityProviderStrategies() EventTargetEcsTargetCapacityProviderStrategyArrayOutput { + return o.ApplyT(func(v EventTargetEcsTarget) []EventTargetEcsTargetCapacityProviderStrategy { + return v.CapacityProviderStrategies + }).(EventTargetEcsTargetCapacityProviderStrategyArrayOutput) +} + +// Specifies whether to enable Amazon ECS managed tags for the task. +func (o EventTargetEcsTargetOutput) EnableEcsManagedTags() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *bool { return v.EnableEcsManagedTags }).(pulumi.BoolPtrOutput) +} + +// Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. +func (o EventTargetEcsTargetOutput) EnableExecuteCommand() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *bool { return v.EnableExecuteCommand }).(pulumi.BoolPtrOutput) +} + +// Specifies an ECS task group for the task. The maximum length is 255 characters. +func (o EventTargetEcsTargetOutput) Group() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *string { return v.Group }).(pulumi.StringPtrOutput) +} + +// Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. Valid values include: `EC2`, `EXTERNAL`, or `FARGATE`. +func (o EventTargetEcsTargetOutput) LaunchType() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *string { return v.LaunchType }).(pulumi.StringPtrOutput) +} + +// Use this if the ECS task uses the awsvpc network mode. This specifies the VPC subnets and security groups associated with the task, and whether a public IP address is to be used. Required if `launchType` is `FARGATE` because the awsvpc mode is required for Fargate tasks. +func (o EventTargetEcsTargetOutput) NetworkConfiguration() EventTargetEcsTargetNetworkConfigurationPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *EventTargetEcsTargetNetworkConfiguration { return v.NetworkConfiguration }).(EventTargetEcsTargetNetworkConfigurationPtrOutput) +} + +// An array of placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. +func (o EventTargetEcsTargetOutput) OrderedPlacementStrategies() EventTargetEcsTargetOrderedPlacementStrategyArrayOutput { + return o.ApplyT(func(v EventTargetEcsTarget) []EventTargetEcsTargetOrderedPlacementStrategy { + return v.OrderedPlacementStrategies + }).(EventTargetEcsTargetOrderedPlacementStrategyArrayOutput) +} + +// An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). See Below. +func (o EventTargetEcsTargetOutput) PlacementConstraints() EventTargetEcsTargetPlacementConstraintArrayOutput { + return o.ApplyT(func(v EventTargetEcsTarget) []EventTargetEcsTargetPlacementConstraint { return v.PlacementConstraints }).(EventTargetEcsTargetPlacementConstraintArrayOutput) +} + +// Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as `1.1.0`. This is used only if LaunchType is FARGATE. For more information about valid platform versions, see [AWS Fargate Platform Versions](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). +func (o EventTargetEcsTargetOutput) PlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *string { return v.PlatformVersion }).(pulumi.StringPtrOutput) +} + +// Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. The only valid value is: `TASK_DEFINITION`. +func (o EventTargetEcsTargetOutput) PropagateTags() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *string { return v.PropagateTags }).(pulumi.StringPtrOutput) +} + +// A map of tags to assign to ecs resources. +func (o EventTargetEcsTargetOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v EventTargetEcsTarget) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// The number of tasks to create based on the TaskDefinition. Defaults to `1`. +func (o EventTargetEcsTargetOutput) TaskCount() pulumi.IntPtrOutput { + return o.ApplyT(func(v EventTargetEcsTarget) *int { return v.TaskCount }).(pulumi.IntPtrOutput) +} + +// The ARN of the task definition to use if the event target is an Amazon ECS cluster. +func (o EventTargetEcsTargetOutput) TaskDefinitionArn() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetEcsTarget) string { return v.TaskDefinitionArn }).(pulumi.StringOutput) +} + +type EventTargetEcsTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetEcsTarget)(nil)).Elem() +} + +func (o EventTargetEcsTargetPtrOutput) ToEventTargetEcsTargetPtrOutput() EventTargetEcsTargetPtrOutput { + return o +} + +func (o EventTargetEcsTargetPtrOutput) ToEventTargetEcsTargetPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetPtrOutput { + return o +} + +func (o EventTargetEcsTargetPtrOutput) Elem() EventTargetEcsTargetOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) EventTargetEcsTarget { + if v != nil { + return *v + } + var ret EventTargetEcsTarget + return ret + }).(EventTargetEcsTargetOutput) +} + +// The capacity provider strategy to use for the task. If a `capacityProviderStrategy` specified, the `launchType` parameter must be omitted. If no `capacityProviderStrategy` or `launchType` is specified, the default capacity provider strategy for the cluster is used. Can be one or more. See below. +func (o EventTargetEcsTargetPtrOutput) CapacityProviderStrategies() EventTargetEcsTargetCapacityProviderStrategyArrayOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) []EventTargetEcsTargetCapacityProviderStrategy { + if v == nil { + return nil + } + return v.CapacityProviderStrategies + }).(EventTargetEcsTargetCapacityProviderStrategyArrayOutput) +} + +// Specifies whether to enable Amazon ECS managed tags for the task. +func (o EventTargetEcsTargetPtrOutput) EnableEcsManagedTags() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *bool { + if v == nil { + return nil + } + return v.EnableEcsManagedTags + }).(pulumi.BoolPtrOutput) +} + +// Whether or not to enable the execute command functionality for the containers in this task. If true, this enables execute command functionality on all containers in the task. +func (o EventTargetEcsTargetPtrOutput) EnableExecuteCommand() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *bool { + if v == nil { + return nil + } + return v.EnableExecuteCommand + }).(pulumi.BoolPtrOutput) +} + +// Specifies an ECS task group for the task. The maximum length is 255 characters. +func (o EventTargetEcsTargetPtrOutput) Group() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *string { + if v == nil { + return nil + } + return v.Group + }).(pulumi.StringPtrOutput) +} + +// Specifies the launch type on which your task is running. The launch type that you specify here must match one of the launch type (compatibilities) of the target task. Valid values include: `EC2`, `EXTERNAL`, or `FARGATE`. +func (o EventTargetEcsTargetPtrOutput) LaunchType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *string { + if v == nil { + return nil + } + return v.LaunchType + }).(pulumi.StringPtrOutput) +} + +// Use this if the ECS task uses the awsvpc network mode. This specifies the VPC subnets and security groups associated with the task, and whether a public IP address is to be used. Required if `launchType` is `FARGATE` because the awsvpc mode is required for Fargate tasks. +func (o EventTargetEcsTargetPtrOutput) NetworkConfiguration() EventTargetEcsTargetNetworkConfigurationPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *EventTargetEcsTargetNetworkConfiguration { + if v == nil { + return nil + } + return v.NetworkConfiguration + }).(EventTargetEcsTargetNetworkConfigurationPtrOutput) +} + +// An array of placement strategy objects to use for the task. You can specify a maximum of five strategy rules per task. +func (o EventTargetEcsTargetPtrOutput) OrderedPlacementStrategies() EventTargetEcsTargetOrderedPlacementStrategyArrayOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) []EventTargetEcsTargetOrderedPlacementStrategy { + if v == nil { + return nil + } + return v.OrderedPlacementStrategies + }).(EventTargetEcsTargetOrderedPlacementStrategyArrayOutput) +} + +// An array of placement constraint objects to use for the task. You can specify up to 10 constraints per task (including constraints in the task definition and those specified at runtime). See Below. +func (o EventTargetEcsTargetPtrOutput) PlacementConstraints() EventTargetEcsTargetPlacementConstraintArrayOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) []EventTargetEcsTargetPlacementConstraint { + if v == nil { + return nil + } + return v.PlacementConstraints + }).(EventTargetEcsTargetPlacementConstraintArrayOutput) +} + +// Specifies the platform version for the task. Specify only the numeric portion of the platform version, such as `1.1.0`. This is used only if LaunchType is FARGATE. For more information about valid platform versions, see [AWS Fargate Platform Versions](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). +func (o EventTargetEcsTargetPtrOutput) PlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *string { + if v == nil { + return nil + } + return v.PlatformVersion + }).(pulumi.StringPtrOutput) +} + +// Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags are not propagated. Tags can only be propagated to the task during task creation. The only valid value is: `TASK_DEFINITION`. +func (o EventTargetEcsTargetPtrOutput) PropagateTags() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *string { + if v == nil { + return nil + } + return v.PropagateTags + }).(pulumi.StringPtrOutput) +} + +// A map of tags to assign to ecs resources. +func (o EventTargetEcsTargetPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// The number of tasks to create based on the TaskDefinition. Defaults to `1`. +func (o EventTargetEcsTargetPtrOutput) TaskCount() pulumi.IntPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *int { + if v == nil { + return nil + } + return v.TaskCount + }).(pulumi.IntPtrOutput) +} + +// The ARN of the task definition to use if the event target is an Amazon ECS cluster. +func (o EventTargetEcsTargetPtrOutput) TaskDefinitionArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTarget) *string { + if v == nil { + return nil + } + return &v.TaskDefinitionArn + }).(pulumi.StringPtrOutput) +} + +type EventTargetEcsTargetCapacityProviderStrategy struct { + // The base value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. + Base *int `pulumi:"base"` + // Short name of the capacity provider. + CapacityProvider string `pulumi:"capacityProvider"` + // The weight value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The weight value is taken into consideration after the base value, if defined, is satisfied. + Weight *int `pulumi:"weight"` +} + +// EventTargetEcsTargetCapacityProviderStrategyInput is an input type that accepts EventTargetEcsTargetCapacityProviderStrategyArgs and EventTargetEcsTargetCapacityProviderStrategyOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetCapacityProviderStrategyInput` via: +// +// EventTargetEcsTargetCapacityProviderStrategyArgs{...} +type EventTargetEcsTargetCapacityProviderStrategyInput interface { + pulumi.Input + + ToEventTargetEcsTargetCapacityProviderStrategyOutput() EventTargetEcsTargetCapacityProviderStrategyOutput + ToEventTargetEcsTargetCapacityProviderStrategyOutputWithContext(context.Context) EventTargetEcsTargetCapacityProviderStrategyOutput +} + +type EventTargetEcsTargetCapacityProviderStrategyArgs struct { + // The base value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. + Base pulumi.IntPtrInput `pulumi:"base"` + // Short name of the capacity provider. + CapacityProvider pulumi.StringInput `pulumi:"capacityProvider"` + // The weight value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The weight value is taken into consideration after the base value, if defined, is satisfied. + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (EventTargetEcsTargetCapacityProviderStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetCapacityProviderStrategy)(nil)).Elem() +} + +func (i EventTargetEcsTargetCapacityProviderStrategyArgs) ToEventTargetEcsTargetCapacityProviderStrategyOutput() EventTargetEcsTargetCapacityProviderStrategyOutput { + return i.ToEventTargetEcsTargetCapacityProviderStrategyOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetCapacityProviderStrategyArgs) ToEventTargetEcsTargetCapacityProviderStrategyOutputWithContext(ctx context.Context) EventTargetEcsTargetCapacityProviderStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetCapacityProviderStrategyOutput) +} + +// EventTargetEcsTargetCapacityProviderStrategyArrayInput is an input type that accepts EventTargetEcsTargetCapacityProviderStrategyArray and EventTargetEcsTargetCapacityProviderStrategyArrayOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetCapacityProviderStrategyArrayInput` via: +// +// EventTargetEcsTargetCapacityProviderStrategyArray{ EventTargetEcsTargetCapacityProviderStrategyArgs{...} } +type EventTargetEcsTargetCapacityProviderStrategyArrayInput interface { + pulumi.Input + + ToEventTargetEcsTargetCapacityProviderStrategyArrayOutput() EventTargetEcsTargetCapacityProviderStrategyArrayOutput + ToEventTargetEcsTargetCapacityProviderStrategyArrayOutputWithContext(context.Context) EventTargetEcsTargetCapacityProviderStrategyArrayOutput +} + +type EventTargetEcsTargetCapacityProviderStrategyArray []EventTargetEcsTargetCapacityProviderStrategyInput + +func (EventTargetEcsTargetCapacityProviderStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetEcsTargetCapacityProviderStrategy)(nil)).Elem() +} + +func (i EventTargetEcsTargetCapacityProviderStrategyArray) ToEventTargetEcsTargetCapacityProviderStrategyArrayOutput() EventTargetEcsTargetCapacityProviderStrategyArrayOutput { + return i.ToEventTargetEcsTargetCapacityProviderStrategyArrayOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetCapacityProviderStrategyArray) ToEventTargetEcsTargetCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) EventTargetEcsTargetCapacityProviderStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetCapacityProviderStrategyArrayOutput) +} + +type EventTargetEcsTargetCapacityProviderStrategyOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetCapacityProviderStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetCapacityProviderStrategy)(nil)).Elem() +} + +func (o EventTargetEcsTargetCapacityProviderStrategyOutput) ToEventTargetEcsTargetCapacityProviderStrategyOutput() EventTargetEcsTargetCapacityProviderStrategyOutput { + return o +} + +func (o EventTargetEcsTargetCapacityProviderStrategyOutput) ToEventTargetEcsTargetCapacityProviderStrategyOutputWithContext(ctx context.Context) EventTargetEcsTargetCapacityProviderStrategyOutput { + return o +} + +// The base value designates how many tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. +func (o EventTargetEcsTargetCapacityProviderStrategyOutput) Base() pulumi.IntPtrOutput { + return o.ApplyT(func(v EventTargetEcsTargetCapacityProviderStrategy) *int { return v.Base }).(pulumi.IntPtrOutput) +} + +// Short name of the capacity provider. +func (o EventTargetEcsTargetCapacityProviderStrategyOutput) CapacityProvider() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetEcsTargetCapacityProviderStrategy) string { return v.CapacityProvider }).(pulumi.StringOutput) +} + +// The weight value designates the relative percentage of the total number of tasks launched that should use the specified capacity provider. The weight value is taken into consideration after the base value, if defined, is satisfied. +func (o EventTargetEcsTargetCapacityProviderStrategyOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v EventTargetEcsTargetCapacityProviderStrategy) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type EventTargetEcsTargetCapacityProviderStrategyArrayOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetCapacityProviderStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetEcsTargetCapacityProviderStrategy)(nil)).Elem() +} + +func (o EventTargetEcsTargetCapacityProviderStrategyArrayOutput) ToEventTargetEcsTargetCapacityProviderStrategyArrayOutput() EventTargetEcsTargetCapacityProviderStrategyArrayOutput { + return o +} + +func (o EventTargetEcsTargetCapacityProviderStrategyArrayOutput) ToEventTargetEcsTargetCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) EventTargetEcsTargetCapacityProviderStrategyArrayOutput { + return o +} + +func (o EventTargetEcsTargetCapacityProviderStrategyArrayOutput) Index(i pulumi.IntInput) EventTargetEcsTargetCapacityProviderStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventTargetEcsTargetCapacityProviderStrategy { + return vs[0].([]EventTargetEcsTargetCapacityProviderStrategy)[vs[1].(int)] + }).(EventTargetEcsTargetCapacityProviderStrategyOutput) +} + +type EventTargetEcsTargetNetworkConfiguration struct { + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Defaults to `false`. + // + // For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) + AssignPublicIp *bool `pulumi:"assignPublicIp"` + // The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups []string `pulumi:"securityGroups"` + // The subnets associated with the task or service. + Subnets []string `pulumi:"subnets"` +} + +// EventTargetEcsTargetNetworkConfigurationInput is an input type that accepts EventTargetEcsTargetNetworkConfigurationArgs and EventTargetEcsTargetNetworkConfigurationOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetNetworkConfigurationInput` via: +// +// EventTargetEcsTargetNetworkConfigurationArgs{...} +type EventTargetEcsTargetNetworkConfigurationInput interface { + pulumi.Input + + ToEventTargetEcsTargetNetworkConfigurationOutput() EventTargetEcsTargetNetworkConfigurationOutput + ToEventTargetEcsTargetNetworkConfigurationOutputWithContext(context.Context) EventTargetEcsTargetNetworkConfigurationOutput +} + +type EventTargetEcsTargetNetworkConfigurationArgs struct { + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Defaults to `false`. + // + // For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) + AssignPublicIp pulumi.BoolPtrInput `pulumi:"assignPublicIp"` + // The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups pulumi.StringArrayInput `pulumi:"securityGroups"` + // The subnets associated with the task or service. + Subnets pulumi.StringArrayInput `pulumi:"subnets"` +} + +func (EventTargetEcsTargetNetworkConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetNetworkConfiguration)(nil)).Elem() +} + +func (i EventTargetEcsTargetNetworkConfigurationArgs) ToEventTargetEcsTargetNetworkConfigurationOutput() EventTargetEcsTargetNetworkConfigurationOutput { + return i.ToEventTargetEcsTargetNetworkConfigurationOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetNetworkConfigurationArgs) ToEventTargetEcsTargetNetworkConfigurationOutputWithContext(ctx context.Context) EventTargetEcsTargetNetworkConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetNetworkConfigurationOutput) +} + +func (i EventTargetEcsTargetNetworkConfigurationArgs) ToEventTargetEcsTargetNetworkConfigurationPtrOutput() EventTargetEcsTargetNetworkConfigurationPtrOutput { + return i.ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetNetworkConfigurationArgs) ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetNetworkConfigurationOutput).ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(ctx) +} + +// EventTargetEcsTargetNetworkConfigurationPtrInput is an input type that accepts EventTargetEcsTargetNetworkConfigurationArgs, EventTargetEcsTargetNetworkConfigurationPtr and EventTargetEcsTargetNetworkConfigurationPtrOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetNetworkConfigurationPtrInput` via: +// +// EventTargetEcsTargetNetworkConfigurationArgs{...} +// +// or: +// +// nil +type EventTargetEcsTargetNetworkConfigurationPtrInput interface { + pulumi.Input + + ToEventTargetEcsTargetNetworkConfigurationPtrOutput() EventTargetEcsTargetNetworkConfigurationPtrOutput + ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(context.Context) EventTargetEcsTargetNetworkConfigurationPtrOutput +} + +type eventTargetEcsTargetNetworkConfigurationPtrType EventTargetEcsTargetNetworkConfigurationArgs + +func EventTargetEcsTargetNetworkConfigurationPtr(v *EventTargetEcsTargetNetworkConfigurationArgs) EventTargetEcsTargetNetworkConfigurationPtrInput { + return (*eventTargetEcsTargetNetworkConfigurationPtrType)(v) +} + +func (*eventTargetEcsTargetNetworkConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetEcsTargetNetworkConfiguration)(nil)).Elem() +} + +func (i *eventTargetEcsTargetNetworkConfigurationPtrType) ToEventTargetEcsTargetNetworkConfigurationPtrOutput() EventTargetEcsTargetNetworkConfigurationPtrOutput { + return i.ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetEcsTargetNetworkConfigurationPtrType) ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetNetworkConfigurationPtrOutput) +} + +type EventTargetEcsTargetNetworkConfigurationOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetNetworkConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetNetworkConfiguration)(nil)).Elem() +} + +func (o EventTargetEcsTargetNetworkConfigurationOutput) ToEventTargetEcsTargetNetworkConfigurationOutput() EventTargetEcsTargetNetworkConfigurationOutput { + return o +} + +func (o EventTargetEcsTargetNetworkConfigurationOutput) ToEventTargetEcsTargetNetworkConfigurationOutputWithContext(ctx context.Context) EventTargetEcsTargetNetworkConfigurationOutput { + return o +} + +func (o EventTargetEcsTargetNetworkConfigurationOutput) ToEventTargetEcsTargetNetworkConfigurationPtrOutput() EventTargetEcsTargetNetworkConfigurationPtrOutput { + return o.ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (o EventTargetEcsTargetNetworkConfigurationOutput) ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetNetworkConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetEcsTargetNetworkConfiguration) *EventTargetEcsTargetNetworkConfiguration { + return &v + }).(EventTargetEcsTargetNetworkConfigurationPtrOutput) +} + +// Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Defaults to `false`. +// +// For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) +func (o EventTargetEcsTargetNetworkConfigurationOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventTargetEcsTargetNetworkConfiguration) *bool { return v.AssignPublicIp }).(pulumi.BoolPtrOutput) +} + +// The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. +func (o EventTargetEcsTargetNetworkConfigurationOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v EventTargetEcsTargetNetworkConfiguration) []string { return v.SecurityGroups }).(pulumi.StringArrayOutput) +} + +// The subnets associated with the task or service. +func (o EventTargetEcsTargetNetworkConfigurationOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v EventTargetEcsTargetNetworkConfiguration) []string { return v.Subnets }).(pulumi.StringArrayOutput) +} + +type EventTargetEcsTargetNetworkConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetNetworkConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetEcsTargetNetworkConfiguration)(nil)).Elem() +} + +func (o EventTargetEcsTargetNetworkConfigurationPtrOutput) ToEventTargetEcsTargetNetworkConfigurationPtrOutput() EventTargetEcsTargetNetworkConfigurationPtrOutput { + return o +} + +func (o EventTargetEcsTargetNetworkConfigurationPtrOutput) ToEventTargetEcsTargetNetworkConfigurationPtrOutputWithContext(ctx context.Context) EventTargetEcsTargetNetworkConfigurationPtrOutput { + return o +} + +func (o EventTargetEcsTargetNetworkConfigurationPtrOutput) Elem() EventTargetEcsTargetNetworkConfigurationOutput { + return o.ApplyT(func(v *EventTargetEcsTargetNetworkConfiguration) EventTargetEcsTargetNetworkConfiguration { + if v != nil { + return *v + } + var ret EventTargetEcsTargetNetworkConfiguration + return ret + }).(EventTargetEcsTargetNetworkConfigurationOutput) +} + +// Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Defaults to `false`. +// +// For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) +func (o EventTargetEcsTargetNetworkConfigurationPtrOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EventTargetEcsTargetNetworkConfiguration) *bool { + if v == nil { + return nil + } + return v.AssignPublicIp + }).(pulumi.BoolPtrOutput) +} + +// The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. +func (o EventTargetEcsTargetNetworkConfigurationPtrOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *EventTargetEcsTargetNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.SecurityGroups + }).(pulumi.StringArrayOutput) +} + +// The subnets associated with the task or service. +func (o EventTargetEcsTargetNetworkConfigurationPtrOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *EventTargetEcsTargetNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.Subnets + }).(pulumi.StringArrayOutput) +} + +type EventTargetEcsTargetOrderedPlacementStrategy struct { + // The field to apply the placement strategy against. For the `spread` placement strategy, valid values are `instanceId` (or `host`, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as `attribute:ecs.availability-zone`. For the `binpack` placement strategy, valid values are `cpu` and `memory`. For the `random` placement strategy, this field is not used. For more information, see [Amazon ECS task placement strategies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html). + Field *string `pulumi:"field"` + // Type of placement strategy. The only valid values at this time are `binpack`, `random` and `spread`. + Type string `pulumi:"type"` +} + +// EventTargetEcsTargetOrderedPlacementStrategyInput is an input type that accepts EventTargetEcsTargetOrderedPlacementStrategyArgs and EventTargetEcsTargetOrderedPlacementStrategyOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetOrderedPlacementStrategyInput` via: +// +// EventTargetEcsTargetOrderedPlacementStrategyArgs{...} +type EventTargetEcsTargetOrderedPlacementStrategyInput interface { + pulumi.Input + + ToEventTargetEcsTargetOrderedPlacementStrategyOutput() EventTargetEcsTargetOrderedPlacementStrategyOutput + ToEventTargetEcsTargetOrderedPlacementStrategyOutputWithContext(context.Context) EventTargetEcsTargetOrderedPlacementStrategyOutput +} + +type EventTargetEcsTargetOrderedPlacementStrategyArgs struct { + // The field to apply the placement strategy against. For the `spread` placement strategy, valid values are `instanceId` (or `host`, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as `attribute:ecs.availability-zone`. For the `binpack` placement strategy, valid values are `cpu` and `memory`. For the `random` placement strategy, this field is not used. For more information, see [Amazon ECS task placement strategies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html). + Field pulumi.StringPtrInput `pulumi:"field"` + // Type of placement strategy. The only valid values at this time are `binpack`, `random` and `spread`. + Type pulumi.StringInput `pulumi:"type"` +} + +func (EventTargetEcsTargetOrderedPlacementStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetOrderedPlacementStrategy)(nil)).Elem() +} + +func (i EventTargetEcsTargetOrderedPlacementStrategyArgs) ToEventTargetEcsTargetOrderedPlacementStrategyOutput() EventTargetEcsTargetOrderedPlacementStrategyOutput { + return i.ToEventTargetEcsTargetOrderedPlacementStrategyOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetOrderedPlacementStrategyArgs) ToEventTargetEcsTargetOrderedPlacementStrategyOutputWithContext(ctx context.Context) EventTargetEcsTargetOrderedPlacementStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetOrderedPlacementStrategyOutput) +} + +// EventTargetEcsTargetOrderedPlacementStrategyArrayInput is an input type that accepts EventTargetEcsTargetOrderedPlacementStrategyArray and EventTargetEcsTargetOrderedPlacementStrategyArrayOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetOrderedPlacementStrategyArrayInput` via: +// +// EventTargetEcsTargetOrderedPlacementStrategyArray{ EventTargetEcsTargetOrderedPlacementStrategyArgs{...} } +type EventTargetEcsTargetOrderedPlacementStrategyArrayInput interface { + pulumi.Input + + ToEventTargetEcsTargetOrderedPlacementStrategyArrayOutput() EventTargetEcsTargetOrderedPlacementStrategyArrayOutput + ToEventTargetEcsTargetOrderedPlacementStrategyArrayOutputWithContext(context.Context) EventTargetEcsTargetOrderedPlacementStrategyArrayOutput +} + +type EventTargetEcsTargetOrderedPlacementStrategyArray []EventTargetEcsTargetOrderedPlacementStrategyInput + +func (EventTargetEcsTargetOrderedPlacementStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetEcsTargetOrderedPlacementStrategy)(nil)).Elem() +} + +func (i EventTargetEcsTargetOrderedPlacementStrategyArray) ToEventTargetEcsTargetOrderedPlacementStrategyArrayOutput() EventTargetEcsTargetOrderedPlacementStrategyArrayOutput { + return i.ToEventTargetEcsTargetOrderedPlacementStrategyArrayOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetOrderedPlacementStrategyArray) ToEventTargetEcsTargetOrderedPlacementStrategyArrayOutputWithContext(ctx context.Context) EventTargetEcsTargetOrderedPlacementStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetOrderedPlacementStrategyArrayOutput) +} + +type EventTargetEcsTargetOrderedPlacementStrategyOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetOrderedPlacementStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetOrderedPlacementStrategy)(nil)).Elem() +} + +func (o EventTargetEcsTargetOrderedPlacementStrategyOutput) ToEventTargetEcsTargetOrderedPlacementStrategyOutput() EventTargetEcsTargetOrderedPlacementStrategyOutput { + return o +} + +func (o EventTargetEcsTargetOrderedPlacementStrategyOutput) ToEventTargetEcsTargetOrderedPlacementStrategyOutputWithContext(ctx context.Context) EventTargetEcsTargetOrderedPlacementStrategyOutput { + return o +} + +// The field to apply the placement strategy against. For the `spread` placement strategy, valid values are `instanceId` (or `host`, which has the same effect), or any platform or custom attribute that is applied to a container instance, such as `attribute:ecs.availability-zone`. For the `binpack` placement strategy, valid values are `cpu` and `memory`. For the `random` placement strategy, this field is not used. For more information, see [Amazon ECS task placement strategies](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-placement-strategies.html). +func (o EventTargetEcsTargetOrderedPlacementStrategyOutput) Field() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetEcsTargetOrderedPlacementStrategy) *string { return v.Field }).(pulumi.StringPtrOutput) +} + +// Type of placement strategy. The only valid values at this time are `binpack`, `random` and `spread`. +func (o EventTargetEcsTargetOrderedPlacementStrategyOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetEcsTargetOrderedPlacementStrategy) string { return v.Type }).(pulumi.StringOutput) +} + +type EventTargetEcsTargetOrderedPlacementStrategyArrayOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetOrderedPlacementStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetEcsTargetOrderedPlacementStrategy)(nil)).Elem() +} + +func (o EventTargetEcsTargetOrderedPlacementStrategyArrayOutput) ToEventTargetEcsTargetOrderedPlacementStrategyArrayOutput() EventTargetEcsTargetOrderedPlacementStrategyArrayOutput { + return o +} + +func (o EventTargetEcsTargetOrderedPlacementStrategyArrayOutput) ToEventTargetEcsTargetOrderedPlacementStrategyArrayOutputWithContext(ctx context.Context) EventTargetEcsTargetOrderedPlacementStrategyArrayOutput { + return o +} + +func (o EventTargetEcsTargetOrderedPlacementStrategyArrayOutput) Index(i pulumi.IntInput) EventTargetEcsTargetOrderedPlacementStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventTargetEcsTargetOrderedPlacementStrategy { + return vs[0].([]EventTargetEcsTargetOrderedPlacementStrategy)[vs[1].(int)] + }).(EventTargetEcsTargetOrderedPlacementStrategyOutput) +} + +type EventTargetEcsTargetPlacementConstraint struct { + // Cluster Query Language expression to apply to the constraint. Does not need to be specified for the `distinctInstance` type. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). + Expression *string `pulumi:"expression"` + // Type of constraint. The only valid values at this time are `memberOf` and `distinctInstance`. + Type string `pulumi:"type"` +} + +// EventTargetEcsTargetPlacementConstraintInput is an input type that accepts EventTargetEcsTargetPlacementConstraintArgs and EventTargetEcsTargetPlacementConstraintOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetPlacementConstraintInput` via: +// +// EventTargetEcsTargetPlacementConstraintArgs{...} +type EventTargetEcsTargetPlacementConstraintInput interface { + pulumi.Input + + ToEventTargetEcsTargetPlacementConstraintOutput() EventTargetEcsTargetPlacementConstraintOutput + ToEventTargetEcsTargetPlacementConstraintOutputWithContext(context.Context) EventTargetEcsTargetPlacementConstraintOutput +} + +type EventTargetEcsTargetPlacementConstraintArgs struct { + // Cluster Query Language expression to apply to the constraint. Does not need to be specified for the `distinctInstance` type. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). + Expression pulumi.StringPtrInput `pulumi:"expression"` + // Type of constraint. The only valid values at this time are `memberOf` and `distinctInstance`. + Type pulumi.StringInput `pulumi:"type"` +} + +func (EventTargetEcsTargetPlacementConstraintArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetPlacementConstraint)(nil)).Elem() +} + +func (i EventTargetEcsTargetPlacementConstraintArgs) ToEventTargetEcsTargetPlacementConstraintOutput() EventTargetEcsTargetPlacementConstraintOutput { + return i.ToEventTargetEcsTargetPlacementConstraintOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetPlacementConstraintArgs) ToEventTargetEcsTargetPlacementConstraintOutputWithContext(ctx context.Context) EventTargetEcsTargetPlacementConstraintOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetPlacementConstraintOutput) +} + +// EventTargetEcsTargetPlacementConstraintArrayInput is an input type that accepts EventTargetEcsTargetPlacementConstraintArray and EventTargetEcsTargetPlacementConstraintArrayOutput values. +// You can construct a concrete instance of `EventTargetEcsTargetPlacementConstraintArrayInput` via: +// +// EventTargetEcsTargetPlacementConstraintArray{ EventTargetEcsTargetPlacementConstraintArgs{...} } +type EventTargetEcsTargetPlacementConstraintArrayInput interface { + pulumi.Input + + ToEventTargetEcsTargetPlacementConstraintArrayOutput() EventTargetEcsTargetPlacementConstraintArrayOutput + ToEventTargetEcsTargetPlacementConstraintArrayOutputWithContext(context.Context) EventTargetEcsTargetPlacementConstraintArrayOutput +} + +type EventTargetEcsTargetPlacementConstraintArray []EventTargetEcsTargetPlacementConstraintInput + +func (EventTargetEcsTargetPlacementConstraintArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetEcsTargetPlacementConstraint)(nil)).Elem() +} + +func (i EventTargetEcsTargetPlacementConstraintArray) ToEventTargetEcsTargetPlacementConstraintArrayOutput() EventTargetEcsTargetPlacementConstraintArrayOutput { + return i.ToEventTargetEcsTargetPlacementConstraintArrayOutputWithContext(context.Background()) +} + +func (i EventTargetEcsTargetPlacementConstraintArray) ToEventTargetEcsTargetPlacementConstraintArrayOutputWithContext(ctx context.Context) EventTargetEcsTargetPlacementConstraintArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetEcsTargetPlacementConstraintArrayOutput) +} + +type EventTargetEcsTargetPlacementConstraintOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetPlacementConstraintOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetEcsTargetPlacementConstraint)(nil)).Elem() +} + +func (o EventTargetEcsTargetPlacementConstraintOutput) ToEventTargetEcsTargetPlacementConstraintOutput() EventTargetEcsTargetPlacementConstraintOutput { + return o +} + +func (o EventTargetEcsTargetPlacementConstraintOutput) ToEventTargetEcsTargetPlacementConstraintOutputWithContext(ctx context.Context) EventTargetEcsTargetPlacementConstraintOutput { + return o +} + +// Cluster Query Language expression to apply to the constraint. Does not need to be specified for the `distinctInstance` type. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). +func (o EventTargetEcsTargetPlacementConstraintOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetEcsTargetPlacementConstraint) *string { return v.Expression }).(pulumi.StringPtrOutput) +} + +// Type of constraint. The only valid values at this time are `memberOf` and `distinctInstance`. +func (o EventTargetEcsTargetPlacementConstraintOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetEcsTargetPlacementConstraint) string { return v.Type }).(pulumi.StringOutput) +} + +type EventTargetEcsTargetPlacementConstraintArrayOutput struct{ *pulumi.OutputState } + +func (EventTargetEcsTargetPlacementConstraintArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetEcsTargetPlacementConstraint)(nil)).Elem() +} + +func (o EventTargetEcsTargetPlacementConstraintArrayOutput) ToEventTargetEcsTargetPlacementConstraintArrayOutput() EventTargetEcsTargetPlacementConstraintArrayOutput { + return o +} + +func (o EventTargetEcsTargetPlacementConstraintArrayOutput) ToEventTargetEcsTargetPlacementConstraintArrayOutputWithContext(ctx context.Context) EventTargetEcsTargetPlacementConstraintArrayOutput { + return o +} + +func (o EventTargetEcsTargetPlacementConstraintArrayOutput) Index(i pulumi.IntInput) EventTargetEcsTargetPlacementConstraintOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventTargetEcsTargetPlacementConstraint { + return vs[0].([]EventTargetEcsTargetPlacementConstraint)[vs[1].(int)] + }).(EventTargetEcsTargetPlacementConstraintOutput) +} + +type EventTargetHttpTarget struct { + // Enables you to specify HTTP headers to add to the request. + HeaderParameters map[string]string `pulumi:"headerParameters"` + // The list of values that correspond sequentially to any path variables in your endpoint ARN (for example `arn:aws:execute-api:us-east-1:123456:myapi/*/POST/pets/*`). + PathParameterValues []string `pulumi:"pathParameterValues"` + // Represents keys/values of query string parameters that are appended to the invoked endpoint. + QueryStringParameters map[string]string `pulumi:"queryStringParameters"` +} + +// EventTargetHttpTargetInput is an input type that accepts EventTargetHttpTargetArgs and EventTargetHttpTargetOutput values. +// You can construct a concrete instance of `EventTargetHttpTargetInput` via: +// +// EventTargetHttpTargetArgs{...} +type EventTargetHttpTargetInput interface { + pulumi.Input + + ToEventTargetHttpTargetOutput() EventTargetHttpTargetOutput + ToEventTargetHttpTargetOutputWithContext(context.Context) EventTargetHttpTargetOutput +} + +type EventTargetHttpTargetArgs struct { + // Enables you to specify HTTP headers to add to the request. + HeaderParameters pulumi.StringMapInput `pulumi:"headerParameters"` + // The list of values that correspond sequentially to any path variables in your endpoint ARN (for example `arn:aws:execute-api:us-east-1:123456:myapi/*/POST/pets/*`). + PathParameterValues pulumi.StringArrayInput `pulumi:"pathParameterValues"` + // Represents keys/values of query string parameters that are appended to the invoked endpoint. + QueryStringParameters pulumi.StringMapInput `pulumi:"queryStringParameters"` +} + +func (EventTargetHttpTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetHttpTarget)(nil)).Elem() +} + +func (i EventTargetHttpTargetArgs) ToEventTargetHttpTargetOutput() EventTargetHttpTargetOutput { + return i.ToEventTargetHttpTargetOutputWithContext(context.Background()) +} + +func (i EventTargetHttpTargetArgs) ToEventTargetHttpTargetOutputWithContext(ctx context.Context) EventTargetHttpTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetHttpTargetOutput) +} + +func (i EventTargetHttpTargetArgs) ToEventTargetHttpTargetPtrOutput() EventTargetHttpTargetPtrOutput { + return i.ToEventTargetHttpTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetHttpTargetArgs) ToEventTargetHttpTargetPtrOutputWithContext(ctx context.Context) EventTargetHttpTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetHttpTargetOutput).ToEventTargetHttpTargetPtrOutputWithContext(ctx) +} + +// EventTargetHttpTargetPtrInput is an input type that accepts EventTargetHttpTargetArgs, EventTargetHttpTargetPtr and EventTargetHttpTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetHttpTargetPtrInput` via: +// +// EventTargetHttpTargetArgs{...} +// +// or: +// +// nil +type EventTargetHttpTargetPtrInput interface { + pulumi.Input + + ToEventTargetHttpTargetPtrOutput() EventTargetHttpTargetPtrOutput + ToEventTargetHttpTargetPtrOutputWithContext(context.Context) EventTargetHttpTargetPtrOutput +} + +type eventTargetHttpTargetPtrType EventTargetHttpTargetArgs + +func EventTargetHttpTargetPtr(v *EventTargetHttpTargetArgs) EventTargetHttpTargetPtrInput { + return (*eventTargetHttpTargetPtrType)(v) +} + +func (*eventTargetHttpTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetHttpTarget)(nil)).Elem() +} + +func (i *eventTargetHttpTargetPtrType) ToEventTargetHttpTargetPtrOutput() EventTargetHttpTargetPtrOutput { + return i.ToEventTargetHttpTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetHttpTargetPtrType) ToEventTargetHttpTargetPtrOutputWithContext(ctx context.Context) EventTargetHttpTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetHttpTargetPtrOutput) +} + +type EventTargetHttpTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetHttpTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetHttpTarget)(nil)).Elem() +} + +func (o EventTargetHttpTargetOutput) ToEventTargetHttpTargetOutput() EventTargetHttpTargetOutput { + return o +} + +func (o EventTargetHttpTargetOutput) ToEventTargetHttpTargetOutputWithContext(ctx context.Context) EventTargetHttpTargetOutput { + return o +} + +func (o EventTargetHttpTargetOutput) ToEventTargetHttpTargetPtrOutput() EventTargetHttpTargetPtrOutput { + return o.ToEventTargetHttpTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetHttpTargetOutput) ToEventTargetHttpTargetPtrOutputWithContext(ctx context.Context) EventTargetHttpTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetHttpTarget) *EventTargetHttpTarget { + return &v + }).(EventTargetHttpTargetPtrOutput) +} + +// Enables you to specify HTTP headers to add to the request. +func (o EventTargetHttpTargetOutput) HeaderParameters() pulumi.StringMapOutput { + return o.ApplyT(func(v EventTargetHttpTarget) map[string]string { return v.HeaderParameters }).(pulumi.StringMapOutput) +} + +// The list of values that correspond sequentially to any path variables in your endpoint ARN (for example `arn:aws:execute-api:us-east-1:123456:myapi/*/POST/pets/*`). +func (o EventTargetHttpTargetOutput) PathParameterValues() pulumi.StringArrayOutput { + return o.ApplyT(func(v EventTargetHttpTarget) []string { return v.PathParameterValues }).(pulumi.StringArrayOutput) +} + +// Represents keys/values of query string parameters that are appended to the invoked endpoint. +func (o EventTargetHttpTargetOutput) QueryStringParameters() pulumi.StringMapOutput { + return o.ApplyT(func(v EventTargetHttpTarget) map[string]string { return v.QueryStringParameters }).(pulumi.StringMapOutput) +} + +type EventTargetHttpTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetHttpTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetHttpTarget)(nil)).Elem() +} + +func (o EventTargetHttpTargetPtrOutput) ToEventTargetHttpTargetPtrOutput() EventTargetHttpTargetPtrOutput { + return o +} + +func (o EventTargetHttpTargetPtrOutput) ToEventTargetHttpTargetPtrOutputWithContext(ctx context.Context) EventTargetHttpTargetPtrOutput { + return o +} + +func (o EventTargetHttpTargetPtrOutput) Elem() EventTargetHttpTargetOutput { + return o.ApplyT(func(v *EventTargetHttpTarget) EventTargetHttpTarget { + if v != nil { + return *v + } + var ret EventTargetHttpTarget + return ret + }).(EventTargetHttpTargetOutput) +} + +// Enables you to specify HTTP headers to add to the request. +func (o EventTargetHttpTargetPtrOutput) HeaderParameters() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventTargetHttpTarget) map[string]string { + if v == nil { + return nil + } + return v.HeaderParameters + }).(pulumi.StringMapOutput) +} + +// The list of values that correspond sequentially to any path variables in your endpoint ARN (for example `arn:aws:execute-api:us-east-1:123456:myapi/*/POST/pets/*`). +func (o EventTargetHttpTargetPtrOutput) PathParameterValues() pulumi.StringArrayOutput { + return o.ApplyT(func(v *EventTargetHttpTarget) []string { + if v == nil { + return nil + } + return v.PathParameterValues + }).(pulumi.StringArrayOutput) +} + +// Represents keys/values of query string parameters that are appended to the invoked endpoint. +func (o EventTargetHttpTargetPtrOutput) QueryStringParameters() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventTargetHttpTarget) map[string]string { + if v == nil { + return nil + } + return v.QueryStringParameters + }).(pulumi.StringMapOutput) +} + +type EventTargetInputTransformer struct { + // Key value pairs specified in the form of JSONPath (for example, time = $.time) + // * You can have as many as 100 key-value pairs. + // * You must use JSON dot notation, not bracket notation. + // * The keys can't start with "AWS". + InputPaths map[string]string `pulumi:"inputPaths"` + // Template to customize data sent to the target. Must be valid JSON. To send a string value, the string value must include double quotes. + InputTemplate string `pulumi:"inputTemplate"` +} + +// EventTargetInputTransformerInput is an input type that accepts EventTargetInputTransformerArgs and EventTargetInputTransformerOutput values. +// You can construct a concrete instance of `EventTargetInputTransformerInput` via: +// +// EventTargetInputTransformerArgs{...} +type EventTargetInputTransformerInput interface { + pulumi.Input + + ToEventTargetInputTransformerOutput() EventTargetInputTransformerOutput + ToEventTargetInputTransformerOutputWithContext(context.Context) EventTargetInputTransformerOutput +} + +type EventTargetInputTransformerArgs struct { + // Key value pairs specified in the form of JSONPath (for example, time = $.time) + // * You can have as many as 100 key-value pairs. + // * You must use JSON dot notation, not bracket notation. + // * The keys can't start with "AWS". + InputPaths pulumi.StringMapInput `pulumi:"inputPaths"` + // Template to customize data sent to the target. Must be valid JSON. To send a string value, the string value must include double quotes. + InputTemplate pulumi.StringInput `pulumi:"inputTemplate"` +} + +func (EventTargetInputTransformerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetInputTransformer)(nil)).Elem() +} + +func (i EventTargetInputTransformerArgs) ToEventTargetInputTransformerOutput() EventTargetInputTransformerOutput { + return i.ToEventTargetInputTransformerOutputWithContext(context.Background()) +} + +func (i EventTargetInputTransformerArgs) ToEventTargetInputTransformerOutputWithContext(ctx context.Context) EventTargetInputTransformerOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetInputTransformerOutput) +} + +func (i EventTargetInputTransformerArgs) ToEventTargetInputTransformerPtrOutput() EventTargetInputTransformerPtrOutput { + return i.ToEventTargetInputTransformerPtrOutputWithContext(context.Background()) +} + +func (i EventTargetInputTransformerArgs) ToEventTargetInputTransformerPtrOutputWithContext(ctx context.Context) EventTargetInputTransformerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetInputTransformerOutput).ToEventTargetInputTransformerPtrOutputWithContext(ctx) +} + +// EventTargetInputTransformerPtrInput is an input type that accepts EventTargetInputTransformerArgs, EventTargetInputTransformerPtr and EventTargetInputTransformerPtrOutput values. +// You can construct a concrete instance of `EventTargetInputTransformerPtrInput` via: +// +// EventTargetInputTransformerArgs{...} +// +// or: +// +// nil +type EventTargetInputTransformerPtrInput interface { + pulumi.Input + + ToEventTargetInputTransformerPtrOutput() EventTargetInputTransformerPtrOutput + ToEventTargetInputTransformerPtrOutputWithContext(context.Context) EventTargetInputTransformerPtrOutput +} + +type eventTargetInputTransformerPtrType EventTargetInputTransformerArgs + +func EventTargetInputTransformerPtr(v *EventTargetInputTransformerArgs) EventTargetInputTransformerPtrInput { + return (*eventTargetInputTransformerPtrType)(v) +} + +func (*eventTargetInputTransformerPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetInputTransformer)(nil)).Elem() +} + +func (i *eventTargetInputTransformerPtrType) ToEventTargetInputTransformerPtrOutput() EventTargetInputTransformerPtrOutput { + return i.ToEventTargetInputTransformerPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetInputTransformerPtrType) ToEventTargetInputTransformerPtrOutputWithContext(ctx context.Context) EventTargetInputTransformerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetInputTransformerPtrOutput) +} + +type EventTargetInputTransformerOutput struct{ *pulumi.OutputState } + +func (EventTargetInputTransformerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetInputTransformer)(nil)).Elem() +} + +func (o EventTargetInputTransformerOutput) ToEventTargetInputTransformerOutput() EventTargetInputTransformerOutput { + return o +} + +func (o EventTargetInputTransformerOutput) ToEventTargetInputTransformerOutputWithContext(ctx context.Context) EventTargetInputTransformerOutput { + return o +} + +func (o EventTargetInputTransformerOutput) ToEventTargetInputTransformerPtrOutput() EventTargetInputTransformerPtrOutput { + return o.ToEventTargetInputTransformerPtrOutputWithContext(context.Background()) +} + +func (o EventTargetInputTransformerOutput) ToEventTargetInputTransformerPtrOutputWithContext(ctx context.Context) EventTargetInputTransformerPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetInputTransformer) *EventTargetInputTransformer { + return &v + }).(EventTargetInputTransformerPtrOutput) +} + +// Key value pairs specified in the form of JSONPath (for example, time = $.time) +// * You can have as many as 100 key-value pairs. +// * You must use JSON dot notation, not bracket notation. +// * The keys can't start with "AWS". +func (o EventTargetInputTransformerOutput) InputPaths() pulumi.StringMapOutput { + return o.ApplyT(func(v EventTargetInputTransformer) map[string]string { return v.InputPaths }).(pulumi.StringMapOutput) +} + +// Template to customize data sent to the target. Must be valid JSON. To send a string value, the string value must include double quotes. +func (o EventTargetInputTransformerOutput) InputTemplate() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetInputTransformer) string { return v.InputTemplate }).(pulumi.StringOutput) +} + +type EventTargetInputTransformerPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetInputTransformerPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetInputTransformer)(nil)).Elem() +} + +func (o EventTargetInputTransformerPtrOutput) ToEventTargetInputTransformerPtrOutput() EventTargetInputTransformerPtrOutput { + return o +} + +func (o EventTargetInputTransformerPtrOutput) ToEventTargetInputTransformerPtrOutputWithContext(ctx context.Context) EventTargetInputTransformerPtrOutput { + return o +} + +func (o EventTargetInputTransformerPtrOutput) Elem() EventTargetInputTransformerOutput { + return o.ApplyT(func(v *EventTargetInputTransformer) EventTargetInputTransformer { + if v != nil { + return *v + } + var ret EventTargetInputTransformer + return ret + }).(EventTargetInputTransformerOutput) +} + +// Key value pairs specified in the form of JSONPath (for example, time = $.time) +// * You can have as many as 100 key-value pairs. +// * You must use JSON dot notation, not bracket notation. +// * The keys can't start with "AWS". +func (o EventTargetInputTransformerPtrOutput) InputPaths() pulumi.StringMapOutput { + return o.ApplyT(func(v *EventTargetInputTransformer) map[string]string { + if v == nil { + return nil + } + return v.InputPaths + }).(pulumi.StringMapOutput) +} + +// Template to customize data sent to the target. Must be valid JSON. To send a string value, the string value must include double quotes. +func (o EventTargetInputTransformerPtrOutput) InputTemplate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetInputTransformer) *string { + if v == nil { + return nil + } + return &v.InputTemplate + }).(pulumi.StringPtrOutput) +} + +type EventTargetKinesisTarget struct { + // The JSON path to be extracted from the event and used as the partition key. + PartitionKeyPath *string `pulumi:"partitionKeyPath"` +} + +// EventTargetKinesisTargetInput is an input type that accepts EventTargetKinesisTargetArgs and EventTargetKinesisTargetOutput values. +// You can construct a concrete instance of `EventTargetKinesisTargetInput` via: +// +// EventTargetKinesisTargetArgs{...} +type EventTargetKinesisTargetInput interface { + pulumi.Input + + ToEventTargetKinesisTargetOutput() EventTargetKinesisTargetOutput + ToEventTargetKinesisTargetOutputWithContext(context.Context) EventTargetKinesisTargetOutput +} + +type EventTargetKinesisTargetArgs struct { + // The JSON path to be extracted from the event and used as the partition key. + PartitionKeyPath pulumi.StringPtrInput `pulumi:"partitionKeyPath"` +} + +func (EventTargetKinesisTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetKinesisTarget)(nil)).Elem() +} + +func (i EventTargetKinesisTargetArgs) ToEventTargetKinesisTargetOutput() EventTargetKinesisTargetOutput { + return i.ToEventTargetKinesisTargetOutputWithContext(context.Background()) +} + +func (i EventTargetKinesisTargetArgs) ToEventTargetKinesisTargetOutputWithContext(ctx context.Context) EventTargetKinesisTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetKinesisTargetOutput) +} + +func (i EventTargetKinesisTargetArgs) ToEventTargetKinesisTargetPtrOutput() EventTargetKinesisTargetPtrOutput { + return i.ToEventTargetKinesisTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetKinesisTargetArgs) ToEventTargetKinesisTargetPtrOutputWithContext(ctx context.Context) EventTargetKinesisTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetKinesisTargetOutput).ToEventTargetKinesisTargetPtrOutputWithContext(ctx) +} + +// EventTargetKinesisTargetPtrInput is an input type that accepts EventTargetKinesisTargetArgs, EventTargetKinesisTargetPtr and EventTargetKinesisTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetKinesisTargetPtrInput` via: +// +// EventTargetKinesisTargetArgs{...} +// +// or: +// +// nil +type EventTargetKinesisTargetPtrInput interface { + pulumi.Input + + ToEventTargetKinesisTargetPtrOutput() EventTargetKinesisTargetPtrOutput + ToEventTargetKinesisTargetPtrOutputWithContext(context.Context) EventTargetKinesisTargetPtrOutput +} + +type eventTargetKinesisTargetPtrType EventTargetKinesisTargetArgs + +func EventTargetKinesisTargetPtr(v *EventTargetKinesisTargetArgs) EventTargetKinesisTargetPtrInput { + return (*eventTargetKinesisTargetPtrType)(v) +} + +func (*eventTargetKinesisTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetKinesisTarget)(nil)).Elem() +} + +func (i *eventTargetKinesisTargetPtrType) ToEventTargetKinesisTargetPtrOutput() EventTargetKinesisTargetPtrOutput { + return i.ToEventTargetKinesisTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetKinesisTargetPtrType) ToEventTargetKinesisTargetPtrOutputWithContext(ctx context.Context) EventTargetKinesisTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetKinesisTargetPtrOutput) +} + +type EventTargetKinesisTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetKinesisTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetKinesisTarget)(nil)).Elem() +} + +func (o EventTargetKinesisTargetOutput) ToEventTargetKinesisTargetOutput() EventTargetKinesisTargetOutput { + return o +} + +func (o EventTargetKinesisTargetOutput) ToEventTargetKinesisTargetOutputWithContext(ctx context.Context) EventTargetKinesisTargetOutput { + return o +} + +func (o EventTargetKinesisTargetOutput) ToEventTargetKinesisTargetPtrOutput() EventTargetKinesisTargetPtrOutput { + return o.ToEventTargetKinesisTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetKinesisTargetOutput) ToEventTargetKinesisTargetPtrOutputWithContext(ctx context.Context) EventTargetKinesisTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetKinesisTarget) *EventTargetKinesisTarget { + return &v + }).(EventTargetKinesisTargetPtrOutput) +} + +// The JSON path to be extracted from the event and used as the partition key. +func (o EventTargetKinesisTargetOutput) PartitionKeyPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetKinesisTarget) *string { return v.PartitionKeyPath }).(pulumi.StringPtrOutput) +} + +type EventTargetKinesisTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetKinesisTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetKinesisTarget)(nil)).Elem() +} + +func (o EventTargetKinesisTargetPtrOutput) ToEventTargetKinesisTargetPtrOutput() EventTargetKinesisTargetPtrOutput { + return o +} + +func (o EventTargetKinesisTargetPtrOutput) ToEventTargetKinesisTargetPtrOutputWithContext(ctx context.Context) EventTargetKinesisTargetPtrOutput { + return o +} + +func (o EventTargetKinesisTargetPtrOutput) Elem() EventTargetKinesisTargetOutput { + return o.ApplyT(func(v *EventTargetKinesisTarget) EventTargetKinesisTarget { + if v != nil { + return *v + } + var ret EventTargetKinesisTarget + return ret + }).(EventTargetKinesisTargetOutput) +} + +// The JSON path to be extracted from the event and used as the partition key. +func (o EventTargetKinesisTargetPtrOutput) PartitionKeyPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetKinesisTarget) *string { + if v == nil { + return nil + } + return v.PartitionKeyPath + }).(pulumi.StringPtrOutput) +} + +type EventTargetRedshiftTarget struct { + // The name of the database. + Database string `pulumi:"database"` + // The database user name. + DbUser *string `pulumi:"dbUser"` + // The name or ARN of the secret that enables access to the database. + SecretsManagerArn *string `pulumi:"secretsManagerArn"` + // The SQL statement text to run. + Sql *string `pulumi:"sql"` + // The name of the SQL statement. + StatementName *string `pulumi:"statementName"` + // Indicates whether to send an event back to EventBridge after the SQL statement runs. + WithEvent *bool `pulumi:"withEvent"` +} + +// EventTargetRedshiftTargetInput is an input type that accepts EventTargetRedshiftTargetArgs and EventTargetRedshiftTargetOutput values. +// You can construct a concrete instance of `EventTargetRedshiftTargetInput` via: +// +// EventTargetRedshiftTargetArgs{...} +type EventTargetRedshiftTargetInput interface { + pulumi.Input + + ToEventTargetRedshiftTargetOutput() EventTargetRedshiftTargetOutput + ToEventTargetRedshiftTargetOutputWithContext(context.Context) EventTargetRedshiftTargetOutput +} + +type EventTargetRedshiftTargetArgs struct { + // The name of the database. + Database pulumi.StringInput `pulumi:"database"` + // The database user name. + DbUser pulumi.StringPtrInput `pulumi:"dbUser"` + // The name or ARN of the secret that enables access to the database. + SecretsManagerArn pulumi.StringPtrInput `pulumi:"secretsManagerArn"` + // The SQL statement text to run. + Sql pulumi.StringPtrInput `pulumi:"sql"` + // The name of the SQL statement. + StatementName pulumi.StringPtrInput `pulumi:"statementName"` + // Indicates whether to send an event back to EventBridge after the SQL statement runs. + WithEvent pulumi.BoolPtrInput `pulumi:"withEvent"` +} + +func (EventTargetRedshiftTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetRedshiftTarget)(nil)).Elem() +} + +func (i EventTargetRedshiftTargetArgs) ToEventTargetRedshiftTargetOutput() EventTargetRedshiftTargetOutput { + return i.ToEventTargetRedshiftTargetOutputWithContext(context.Background()) +} + +func (i EventTargetRedshiftTargetArgs) ToEventTargetRedshiftTargetOutputWithContext(ctx context.Context) EventTargetRedshiftTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRedshiftTargetOutput) +} + +func (i EventTargetRedshiftTargetArgs) ToEventTargetRedshiftTargetPtrOutput() EventTargetRedshiftTargetPtrOutput { + return i.ToEventTargetRedshiftTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetRedshiftTargetArgs) ToEventTargetRedshiftTargetPtrOutputWithContext(ctx context.Context) EventTargetRedshiftTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRedshiftTargetOutput).ToEventTargetRedshiftTargetPtrOutputWithContext(ctx) +} + +// EventTargetRedshiftTargetPtrInput is an input type that accepts EventTargetRedshiftTargetArgs, EventTargetRedshiftTargetPtr and EventTargetRedshiftTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetRedshiftTargetPtrInput` via: +// +// EventTargetRedshiftTargetArgs{...} +// +// or: +// +// nil +type EventTargetRedshiftTargetPtrInput interface { + pulumi.Input + + ToEventTargetRedshiftTargetPtrOutput() EventTargetRedshiftTargetPtrOutput + ToEventTargetRedshiftTargetPtrOutputWithContext(context.Context) EventTargetRedshiftTargetPtrOutput +} + +type eventTargetRedshiftTargetPtrType EventTargetRedshiftTargetArgs + +func EventTargetRedshiftTargetPtr(v *EventTargetRedshiftTargetArgs) EventTargetRedshiftTargetPtrInput { + return (*eventTargetRedshiftTargetPtrType)(v) +} + +func (*eventTargetRedshiftTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetRedshiftTarget)(nil)).Elem() +} + +func (i *eventTargetRedshiftTargetPtrType) ToEventTargetRedshiftTargetPtrOutput() EventTargetRedshiftTargetPtrOutput { + return i.ToEventTargetRedshiftTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetRedshiftTargetPtrType) ToEventTargetRedshiftTargetPtrOutputWithContext(ctx context.Context) EventTargetRedshiftTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRedshiftTargetPtrOutput) +} + +type EventTargetRedshiftTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetRedshiftTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetRedshiftTarget)(nil)).Elem() +} + +func (o EventTargetRedshiftTargetOutput) ToEventTargetRedshiftTargetOutput() EventTargetRedshiftTargetOutput { + return o +} + +func (o EventTargetRedshiftTargetOutput) ToEventTargetRedshiftTargetOutputWithContext(ctx context.Context) EventTargetRedshiftTargetOutput { + return o +} + +func (o EventTargetRedshiftTargetOutput) ToEventTargetRedshiftTargetPtrOutput() EventTargetRedshiftTargetPtrOutput { + return o.ToEventTargetRedshiftTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetRedshiftTargetOutput) ToEventTargetRedshiftTargetPtrOutputWithContext(ctx context.Context) EventTargetRedshiftTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetRedshiftTarget) *EventTargetRedshiftTarget { + return &v + }).(EventTargetRedshiftTargetPtrOutput) +} + +// The name of the database. +func (o EventTargetRedshiftTargetOutput) Database() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetRedshiftTarget) string { return v.Database }).(pulumi.StringOutput) +} + +// The database user name. +func (o EventTargetRedshiftTargetOutput) DbUser() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetRedshiftTarget) *string { return v.DbUser }).(pulumi.StringPtrOutput) +} + +// The name or ARN of the secret that enables access to the database. +func (o EventTargetRedshiftTargetOutput) SecretsManagerArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetRedshiftTarget) *string { return v.SecretsManagerArn }).(pulumi.StringPtrOutput) +} + +// The SQL statement text to run. +func (o EventTargetRedshiftTargetOutput) Sql() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetRedshiftTarget) *string { return v.Sql }).(pulumi.StringPtrOutput) +} + +// The name of the SQL statement. +func (o EventTargetRedshiftTargetOutput) StatementName() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetRedshiftTarget) *string { return v.StatementName }).(pulumi.StringPtrOutput) +} + +// Indicates whether to send an event back to EventBridge after the SQL statement runs. +func (o EventTargetRedshiftTargetOutput) WithEvent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EventTargetRedshiftTarget) *bool { return v.WithEvent }).(pulumi.BoolPtrOutput) +} + +type EventTargetRedshiftTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetRedshiftTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetRedshiftTarget)(nil)).Elem() +} + +func (o EventTargetRedshiftTargetPtrOutput) ToEventTargetRedshiftTargetPtrOutput() EventTargetRedshiftTargetPtrOutput { + return o +} + +func (o EventTargetRedshiftTargetPtrOutput) ToEventTargetRedshiftTargetPtrOutputWithContext(ctx context.Context) EventTargetRedshiftTargetPtrOutput { + return o +} + +func (o EventTargetRedshiftTargetPtrOutput) Elem() EventTargetRedshiftTargetOutput { + return o.ApplyT(func(v *EventTargetRedshiftTarget) EventTargetRedshiftTarget { + if v != nil { + return *v + } + var ret EventTargetRedshiftTarget + return ret + }).(EventTargetRedshiftTargetOutput) +} + +// The name of the database. +func (o EventTargetRedshiftTargetPtrOutput) Database() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetRedshiftTarget) *string { + if v == nil { + return nil + } + return &v.Database + }).(pulumi.StringPtrOutput) +} + +// The database user name. +func (o EventTargetRedshiftTargetPtrOutput) DbUser() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetRedshiftTarget) *string { + if v == nil { + return nil + } + return v.DbUser + }).(pulumi.StringPtrOutput) +} + +// The name or ARN of the secret that enables access to the database. +func (o EventTargetRedshiftTargetPtrOutput) SecretsManagerArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetRedshiftTarget) *string { + if v == nil { + return nil + } + return v.SecretsManagerArn + }).(pulumi.StringPtrOutput) +} + +// The SQL statement text to run. +func (o EventTargetRedshiftTargetPtrOutput) Sql() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetRedshiftTarget) *string { + if v == nil { + return nil + } + return v.Sql + }).(pulumi.StringPtrOutput) +} + +// The name of the SQL statement. +func (o EventTargetRedshiftTargetPtrOutput) StatementName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetRedshiftTarget) *string { + if v == nil { + return nil + } + return v.StatementName + }).(pulumi.StringPtrOutput) +} + +// Indicates whether to send an event back to EventBridge after the SQL statement runs. +func (o EventTargetRedshiftTargetPtrOutput) WithEvent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EventTargetRedshiftTarget) *bool { + if v == nil { + return nil + } + return v.WithEvent + }).(pulumi.BoolPtrOutput) +} + +type EventTargetRetryPolicy struct { + // The age in seconds to continue to make retry attempts. + MaximumEventAgeInSeconds *int `pulumi:"maximumEventAgeInSeconds"` + // maximum number of retry attempts to make before the request fails + MaximumRetryAttempts *int `pulumi:"maximumRetryAttempts"` +} + +// EventTargetRetryPolicyInput is an input type that accepts EventTargetRetryPolicyArgs and EventTargetRetryPolicyOutput values. +// You can construct a concrete instance of `EventTargetRetryPolicyInput` via: +// +// EventTargetRetryPolicyArgs{...} +type EventTargetRetryPolicyInput interface { + pulumi.Input + + ToEventTargetRetryPolicyOutput() EventTargetRetryPolicyOutput + ToEventTargetRetryPolicyOutputWithContext(context.Context) EventTargetRetryPolicyOutput +} + +type EventTargetRetryPolicyArgs struct { + // The age in seconds to continue to make retry attempts. + MaximumEventAgeInSeconds pulumi.IntPtrInput `pulumi:"maximumEventAgeInSeconds"` + // maximum number of retry attempts to make before the request fails + MaximumRetryAttempts pulumi.IntPtrInput `pulumi:"maximumRetryAttempts"` +} + +func (EventTargetRetryPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetRetryPolicy)(nil)).Elem() +} + +func (i EventTargetRetryPolicyArgs) ToEventTargetRetryPolicyOutput() EventTargetRetryPolicyOutput { + return i.ToEventTargetRetryPolicyOutputWithContext(context.Background()) +} + +func (i EventTargetRetryPolicyArgs) ToEventTargetRetryPolicyOutputWithContext(ctx context.Context) EventTargetRetryPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRetryPolicyOutput) +} + +func (i EventTargetRetryPolicyArgs) ToEventTargetRetryPolicyPtrOutput() EventTargetRetryPolicyPtrOutput { + return i.ToEventTargetRetryPolicyPtrOutputWithContext(context.Background()) +} + +func (i EventTargetRetryPolicyArgs) ToEventTargetRetryPolicyPtrOutputWithContext(ctx context.Context) EventTargetRetryPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRetryPolicyOutput).ToEventTargetRetryPolicyPtrOutputWithContext(ctx) +} + +// EventTargetRetryPolicyPtrInput is an input type that accepts EventTargetRetryPolicyArgs, EventTargetRetryPolicyPtr and EventTargetRetryPolicyPtrOutput values. +// You can construct a concrete instance of `EventTargetRetryPolicyPtrInput` via: +// +// EventTargetRetryPolicyArgs{...} +// +// or: +// +// nil +type EventTargetRetryPolicyPtrInput interface { + pulumi.Input + + ToEventTargetRetryPolicyPtrOutput() EventTargetRetryPolicyPtrOutput + ToEventTargetRetryPolicyPtrOutputWithContext(context.Context) EventTargetRetryPolicyPtrOutput +} + +type eventTargetRetryPolicyPtrType EventTargetRetryPolicyArgs + +func EventTargetRetryPolicyPtr(v *EventTargetRetryPolicyArgs) EventTargetRetryPolicyPtrInput { + return (*eventTargetRetryPolicyPtrType)(v) +} + +func (*eventTargetRetryPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetRetryPolicy)(nil)).Elem() +} + +func (i *eventTargetRetryPolicyPtrType) ToEventTargetRetryPolicyPtrOutput() EventTargetRetryPolicyPtrOutput { + return i.ToEventTargetRetryPolicyPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetRetryPolicyPtrType) ToEventTargetRetryPolicyPtrOutputWithContext(ctx context.Context) EventTargetRetryPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRetryPolicyPtrOutput) +} + +type EventTargetRetryPolicyOutput struct{ *pulumi.OutputState } + +func (EventTargetRetryPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetRetryPolicy)(nil)).Elem() +} + +func (o EventTargetRetryPolicyOutput) ToEventTargetRetryPolicyOutput() EventTargetRetryPolicyOutput { + return o +} + +func (o EventTargetRetryPolicyOutput) ToEventTargetRetryPolicyOutputWithContext(ctx context.Context) EventTargetRetryPolicyOutput { + return o +} + +func (o EventTargetRetryPolicyOutput) ToEventTargetRetryPolicyPtrOutput() EventTargetRetryPolicyPtrOutput { + return o.ToEventTargetRetryPolicyPtrOutputWithContext(context.Background()) +} + +func (o EventTargetRetryPolicyOutput) ToEventTargetRetryPolicyPtrOutputWithContext(ctx context.Context) EventTargetRetryPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetRetryPolicy) *EventTargetRetryPolicy { + return &v + }).(EventTargetRetryPolicyPtrOutput) +} + +// The age in seconds to continue to make retry attempts. +func (o EventTargetRetryPolicyOutput) MaximumEventAgeInSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v EventTargetRetryPolicy) *int { return v.MaximumEventAgeInSeconds }).(pulumi.IntPtrOutput) +} + +// maximum number of retry attempts to make before the request fails +func (o EventTargetRetryPolicyOutput) MaximumRetryAttempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v EventTargetRetryPolicy) *int { return v.MaximumRetryAttempts }).(pulumi.IntPtrOutput) +} + +type EventTargetRetryPolicyPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetRetryPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetRetryPolicy)(nil)).Elem() +} + +func (o EventTargetRetryPolicyPtrOutput) ToEventTargetRetryPolicyPtrOutput() EventTargetRetryPolicyPtrOutput { + return o +} + +func (o EventTargetRetryPolicyPtrOutput) ToEventTargetRetryPolicyPtrOutputWithContext(ctx context.Context) EventTargetRetryPolicyPtrOutput { + return o +} + +func (o EventTargetRetryPolicyPtrOutput) Elem() EventTargetRetryPolicyOutput { + return o.ApplyT(func(v *EventTargetRetryPolicy) EventTargetRetryPolicy { + if v != nil { + return *v + } + var ret EventTargetRetryPolicy + return ret + }).(EventTargetRetryPolicyOutput) +} + +// The age in seconds to continue to make retry attempts. +func (o EventTargetRetryPolicyPtrOutput) MaximumEventAgeInSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *EventTargetRetryPolicy) *int { + if v == nil { + return nil + } + return v.MaximumEventAgeInSeconds + }).(pulumi.IntPtrOutput) +} + +// maximum number of retry attempts to make before the request fails +func (o EventTargetRetryPolicyPtrOutput) MaximumRetryAttempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v *EventTargetRetryPolicy) *int { + if v == nil { + return nil + } + return v.MaximumRetryAttempts + }).(pulumi.IntPtrOutput) +} + +type EventTargetRunCommandTarget struct { + // Can be either `tag:tag-key` or `InstanceIds`. + Key string `pulumi:"key"` + // If Key is `tag:tag-key`, Values is a list of tag values. If Key is `InstanceIds`, Values is a list of Amazon EC2 instance IDs. + Values []string `pulumi:"values"` +} + +// EventTargetRunCommandTargetInput is an input type that accepts EventTargetRunCommandTargetArgs and EventTargetRunCommandTargetOutput values. +// You can construct a concrete instance of `EventTargetRunCommandTargetInput` via: +// +// EventTargetRunCommandTargetArgs{...} +type EventTargetRunCommandTargetInput interface { + pulumi.Input + + ToEventTargetRunCommandTargetOutput() EventTargetRunCommandTargetOutput + ToEventTargetRunCommandTargetOutputWithContext(context.Context) EventTargetRunCommandTargetOutput +} + +type EventTargetRunCommandTargetArgs struct { + // Can be either `tag:tag-key` or `InstanceIds`. + Key pulumi.StringInput `pulumi:"key"` + // If Key is `tag:tag-key`, Values is a list of tag values. If Key is `InstanceIds`, Values is a list of Amazon EC2 instance IDs. + Values pulumi.StringArrayInput `pulumi:"values"` +} + +func (EventTargetRunCommandTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetRunCommandTarget)(nil)).Elem() +} + +func (i EventTargetRunCommandTargetArgs) ToEventTargetRunCommandTargetOutput() EventTargetRunCommandTargetOutput { + return i.ToEventTargetRunCommandTargetOutputWithContext(context.Background()) +} + +func (i EventTargetRunCommandTargetArgs) ToEventTargetRunCommandTargetOutputWithContext(ctx context.Context) EventTargetRunCommandTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRunCommandTargetOutput) +} + +// EventTargetRunCommandTargetArrayInput is an input type that accepts EventTargetRunCommandTargetArray and EventTargetRunCommandTargetArrayOutput values. +// You can construct a concrete instance of `EventTargetRunCommandTargetArrayInput` via: +// +// EventTargetRunCommandTargetArray{ EventTargetRunCommandTargetArgs{...} } +type EventTargetRunCommandTargetArrayInput interface { + pulumi.Input + + ToEventTargetRunCommandTargetArrayOutput() EventTargetRunCommandTargetArrayOutput + ToEventTargetRunCommandTargetArrayOutputWithContext(context.Context) EventTargetRunCommandTargetArrayOutput +} + +type EventTargetRunCommandTargetArray []EventTargetRunCommandTargetInput + +func (EventTargetRunCommandTargetArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetRunCommandTarget)(nil)).Elem() +} + +func (i EventTargetRunCommandTargetArray) ToEventTargetRunCommandTargetArrayOutput() EventTargetRunCommandTargetArrayOutput { + return i.ToEventTargetRunCommandTargetArrayOutputWithContext(context.Background()) +} + +func (i EventTargetRunCommandTargetArray) ToEventTargetRunCommandTargetArrayOutputWithContext(ctx context.Context) EventTargetRunCommandTargetArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetRunCommandTargetArrayOutput) +} + +type EventTargetRunCommandTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetRunCommandTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetRunCommandTarget)(nil)).Elem() +} + +func (o EventTargetRunCommandTargetOutput) ToEventTargetRunCommandTargetOutput() EventTargetRunCommandTargetOutput { + return o +} + +func (o EventTargetRunCommandTargetOutput) ToEventTargetRunCommandTargetOutputWithContext(ctx context.Context) EventTargetRunCommandTargetOutput { + return o +} + +// Can be either `tag:tag-key` or `InstanceIds`. +func (o EventTargetRunCommandTargetOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetRunCommandTarget) string { return v.Key }).(pulumi.StringOutput) +} + +// If Key is `tag:tag-key`, Values is a list of tag values. If Key is `InstanceIds`, Values is a list of Amazon EC2 instance IDs. +func (o EventTargetRunCommandTargetOutput) Values() pulumi.StringArrayOutput { + return o.ApplyT(func(v EventTargetRunCommandTarget) []string { return v.Values }).(pulumi.StringArrayOutput) +} + +type EventTargetRunCommandTargetArrayOutput struct{ *pulumi.OutputState } + +func (EventTargetRunCommandTargetArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetRunCommandTarget)(nil)).Elem() +} + +func (o EventTargetRunCommandTargetArrayOutput) ToEventTargetRunCommandTargetArrayOutput() EventTargetRunCommandTargetArrayOutput { + return o +} + +func (o EventTargetRunCommandTargetArrayOutput) ToEventTargetRunCommandTargetArrayOutputWithContext(ctx context.Context) EventTargetRunCommandTargetArrayOutput { + return o +} + +func (o EventTargetRunCommandTargetArrayOutput) Index(i pulumi.IntInput) EventTargetRunCommandTargetOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventTargetRunCommandTarget { + return vs[0].([]EventTargetRunCommandTarget)[vs[1].(int)] + }).(EventTargetRunCommandTargetOutput) +} + +type EventTargetSagemakerPipelineTarget struct { + // List of Parameter names and values for SageMaker Model Building Pipeline execution. + PipelineParameterLists []EventTargetSagemakerPipelineTargetPipelineParameterList `pulumi:"pipelineParameterLists"` +} + +// EventTargetSagemakerPipelineTargetInput is an input type that accepts EventTargetSagemakerPipelineTargetArgs and EventTargetSagemakerPipelineTargetOutput values. +// You can construct a concrete instance of `EventTargetSagemakerPipelineTargetInput` via: +// +// EventTargetSagemakerPipelineTargetArgs{...} +type EventTargetSagemakerPipelineTargetInput interface { + pulumi.Input + + ToEventTargetSagemakerPipelineTargetOutput() EventTargetSagemakerPipelineTargetOutput + ToEventTargetSagemakerPipelineTargetOutputWithContext(context.Context) EventTargetSagemakerPipelineTargetOutput +} + +type EventTargetSagemakerPipelineTargetArgs struct { + // List of Parameter names and values for SageMaker Model Building Pipeline execution. + PipelineParameterLists EventTargetSagemakerPipelineTargetPipelineParameterListArrayInput `pulumi:"pipelineParameterLists"` +} + +func (EventTargetSagemakerPipelineTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetSagemakerPipelineTarget)(nil)).Elem() +} + +func (i EventTargetSagemakerPipelineTargetArgs) ToEventTargetSagemakerPipelineTargetOutput() EventTargetSagemakerPipelineTargetOutput { + return i.ToEventTargetSagemakerPipelineTargetOutputWithContext(context.Background()) +} + +func (i EventTargetSagemakerPipelineTargetArgs) ToEventTargetSagemakerPipelineTargetOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSagemakerPipelineTargetOutput) +} + +func (i EventTargetSagemakerPipelineTargetArgs) ToEventTargetSagemakerPipelineTargetPtrOutput() EventTargetSagemakerPipelineTargetPtrOutput { + return i.ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetSagemakerPipelineTargetArgs) ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSagemakerPipelineTargetOutput).ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(ctx) +} + +// EventTargetSagemakerPipelineTargetPtrInput is an input type that accepts EventTargetSagemakerPipelineTargetArgs, EventTargetSagemakerPipelineTargetPtr and EventTargetSagemakerPipelineTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetSagemakerPipelineTargetPtrInput` via: +// +// EventTargetSagemakerPipelineTargetArgs{...} +// +// or: +// +// nil +type EventTargetSagemakerPipelineTargetPtrInput interface { + pulumi.Input + + ToEventTargetSagemakerPipelineTargetPtrOutput() EventTargetSagemakerPipelineTargetPtrOutput + ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(context.Context) EventTargetSagemakerPipelineTargetPtrOutput +} + +type eventTargetSagemakerPipelineTargetPtrType EventTargetSagemakerPipelineTargetArgs + +func EventTargetSagemakerPipelineTargetPtr(v *EventTargetSagemakerPipelineTargetArgs) EventTargetSagemakerPipelineTargetPtrInput { + return (*eventTargetSagemakerPipelineTargetPtrType)(v) +} + +func (*eventTargetSagemakerPipelineTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetSagemakerPipelineTarget)(nil)).Elem() +} + +func (i *eventTargetSagemakerPipelineTargetPtrType) ToEventTargetSagemakerPipelineTargetPtrOutput() EventTargetSagemakerPipelineTargetPtrOutput { + return i.ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetSagemakerPipelineTargetPtrType) ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSagemakerPipelineTargetPtrOutput) +} + +type EventTargetSagemakerPipelineTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetSagemakerPipelineTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetSagemakerPipelineTarget)(nil)).Elem() +} + +func (o EventTargetSagemakerPipelineTargetOutput) ToEventTargetSagemakerPipelineTargetOutput() EventTargetSagemakerPipelineTargetOutput { + return o +} + +func (o EventTargetSagemakerPipelineTargetOutput) ToEventTargetSagemakerPipelineTargetOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetOutput { + return o +} + +func (o EventTargetSagemakerPipelineTargetOutput) ToEventTargetSagemakerPipelineTargetPtrOutput() EventTargetSagemakerPipelineTargetPtrOutput { + return o.ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetSagemakerPipelineTargetOutput) ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetSagemakerPipelineTarget) *EventTargetSagemakerPipelineTarget { + return &v + }).(EventTargetSagemakerPipelineTargetPtrOutput) +} + +// List of Parameter names and values for SageMaker Model Building Pipeline execution. +func (o EventTargetSagemakerPipelineTargetOutput) PipelineParameterLists() EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput { + return o.ApplyT(func(v EventTargetSagemakerPipelineTarget) []EventTargetSagemakerPipelineTargetPipelineParameterList { + return v.PipelineParameterLists + }).(EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput) +} + +type EventTargetSagemakerPipelineTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetSagemakerPipelineTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetSagemakerPipelineTarget)(nil)).Elem() +} + +func (o EventTargetSagemakerPipelineTargetPtrOutput) ToEventTargetSagemakerPipelineTargetPtrOutput() EventTargetSagemakerPipelineTargetPtrOutput { + return o +} + +func (o EventTargetSagemakerPipelineTargetPtrOutput) ToEventTargetSagemakerPipelineTargetPtrOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPtrOutput { + return o +} + +func (o EventTargetSagemakerPipelineTargetPtrOutput) Elem() EventTargetSagemakerPipelineTargetOutput { + return o.ApplyT(func(v *EventTargetSagemakerPipelineTarget) EventTargetSagemakerPipelineTarget { + if v != nil { + return *v + } + var ret EventTargetSagemakerPipelineTarget + return ret + }).(EventTargetSagemakerPipelineTargetOutput) +} + +// List of Parameter names and values for SageMaker Model Building Pipeline execution. +func (o EventTargetSagemakerPipelineTargetPtrOutput) PipelineParameterLists() EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput { + return o.ApplyT(func(v *EventTargetSagemakerPipelineTarget) []EventTargetSagemakerPipelineTargetPipelineParameterList { + if v == nil { + return nil + } + return v.PipelineParameterLists + }).(EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput) +} + +type EventTargetSagemakerPipelineTargetPipelineParameterList struct { + // Name of parameter to start execution of a SageMaker Model Building Pipeline. + Name string `pulumi:"name"` + // Value of parameter to start execution of a SageMaker Model Building Pipeline. + Value string `pulumi:"value"` +} + +// EventTargetSagemakerPipelineTargetPipelineParameterListInput is an input type that accepts EventTargetSagemakerPipelineTargetPipelineParameterListArgs and EventTargetSagemakerPipelineTargetPipelineParameterListOutput values. +// You can construct a concrete instance of `EventTargetSagemakerPipelineTargetPipelineParameterListInput` via: +// +// EventTargetSagemakerPipelineTargetPipelineParameterListArgs{...} +type EventTargetSagemakerPipelineTargetPipelineParameterListInput interface { + pulumi.Input + + ToEventTargetSagemakerPipelineTargetPipelineParameterListOutput() EventTargetSagemakerPipelineTargetPipelineParameterListOutput + ToEventTargetSagemakerPipelineTargetPipelineParameterListOutputWithContext(context.Context) EventTargetSagemakerPipelineTargetPipelineParameterListOutput +} + +type EventTargetSagemakerPipelineTargetPipelineParameterListArgs struct { + // Name of parameter to start execution of a SageMaker Model Building Pipeline. + Name pulumi.StringInput `pulumi:"name"` + // Value of parameter to start execution of a SageMaker Model Building Pipeline. + Value pulumi.StringInput `pulumi:"value"` +} + +func (EventTargetSagemakerPipelineTargetPipelineParameterListArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetSagemakerPipelineTargetPipelineParameterList)(nil)).Elem() +} + +func (i EventTargetSagemakerPipelineTargetPipelineParameterListArgs) ToEventTargetSagemakerPipelineTargetPipelineParameterListOutput() EventTargetSagemakerPipelineTargetPipelineParameterListOutput { + return i.ToEventTargetSagemakerPipelineTargetPipelineParameterListOutputWithContext(context.Background()) +} + +func (i EventTargetSagemakerPipelineTargetPipelineParameterListArgs) ToEventTargetSagemakerPipelineTargetPipelineParameterListOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPipelineParameterListOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSagemakerPipelineTargetPipelineParameterListOutput) +} + +// EventTargetSagemakerPipelineTargetPipelineParameterListArrayInput is an input type that accepts EventTargetSagemakerPipelineTargetPipelineParameterListArray and EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput values. +// You can construct a concrete instance of `EventTargetSagemakerPipelineTargetPipelineParameterListArrayInput` via: +// +// EventTargetSagemakerPipelineTargetPipelineParameterListArray{ EventTargetSagemakerPipelineTargetPipelineParameterListArgs{...} } +type EventTargetSagemakerPipelineTargetPipelineParameterListArrayInput interface { + pulumi.Input + + ToEventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput() EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput + ToEventTargetSagemakerPipelineTargetPipelineParameterListArrayOutputWithContext(context.Context) EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput +} + +type EventTargetSagemakerPipelineTargetPipelineParameterListArray []EventTargetSagemakerPipelineTargetPipelineParameterListInput + +func (EventTargetSagemakerPipelineTargetPipelineParameterListArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetSagemakerPipelineTargetPipelineParameterList)(nil)).Elem() +} + +func (i EventTargetSagemakerPipelineTargetPipelineParameterListArray) ToEventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput() EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput { + return i.ToEventTargetSagemakerPipelineTargetPipelineParameterListArrayOutputWithContext(context.Background()) +} + +func (i EventTargetSagemakerPipelineTargetPipelineParameterListArray) ToEventTargetSagemakerPipelineTargetPipelineParameterListArrayOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput) +} + +type EventTargetSagemakerPipelineTargetPipelineParameterListOutput struct{ *pulumi.OutputState } + +func (EventTargetSagemakerPipelineTargetPipelineParameterListOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetSagemakerPipelineTargetPipelineParameterList)(nil)).Elem() +} + +func (o EventTargetSagemakerPipelineTargetPipelineParameterListOutput) ToEventTargetSagemakerPipelineTargetPipelineParameterListOutput() EventTargetSagemakerPipelineTargetPipelineParameterListOutput { + return o +} + +func (o EventTargetSagemakerPipelineTargetPipelineParameterListOutput) ToEventTargetSagemakerPipelineTargetPipelineParameterListOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPipelineParameterListOutput { + return o +} + +// Name of parameter to start execution of a SageMaker Model Building Pipeline. +func (o EventTargetSagemakerPipelineTargetPipelineParameterListOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetSagemakerPipelineTargetPipelineParameterList) string { return v.Name }).(pulumi.StringOutput) +} + +// Value of parameter to start execution of a SageMaker Model Building Pipeline. +func (o EventTargetSagemakerPipelineTargetPipelineParameterListOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v EventTargetSagemakerPipelineTargetPipelineParameterList) string { return v.Value }).(pulumi.StringOutput) +} + +type EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput struct{ *pulumi.OutputState } + +func (EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]EventTargetSagemakerPipelineTargetPipelineParameterList)(nil)).Elem() +} + +func (o EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput) ToEventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput() EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput { + return o +} + +func (o EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput) ToEventTargetSagemakerPipelineTargetPipelineParameterListArrayOutputWithContext(ctx context.Context) EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput { + return o +} + +func (o EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput) Index(i pulumi.IntInput) EventTargetSagemakerPipelineTargetPipelineParameterListOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) EventTargetSagemakerPipelineTargetPipelineParameterList { + return vs[0].([]EventTargetSagemakerPipelineTargetPipelineParameterList)[vs[1].(int)] + }).(EventTargetSagemakerPipelineTargetPipelineParameterListOutput) +} + +type EventTargetSqsTarget struct { + // The FIFO message group ID to use as the target. + MessageGroupId *string `pulumi:"messageGroupId"` +} + +// EventTargetSqsTargetInput is an input type that accepts EventTargetSqsTargetArgs and EventTargetSqsTargetOutput values. +// You can construct a concrete instance of `EventTargetSqsTargetInput` via: +// +// EventTargetSqsTargetArgs{...} +type EventTargetSqsTargetInput interface { + pulumi.Input + + ToEventTargetSqsTargetOutput() EventTargetSqsTargetOutput + ToEventTargetSqsTargetOutputWithContext(context.Context) EventTargetSqsTargetOutput +} + +type EventTargetSqsTargetArgs struct { + // The FIFO message group ID to use as the target. + MessageGroupId pulumi.StringPtrInput `pulumi:"messageGroupId"` +} + +func (EventTargetSqsTargetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetSqsTarget)(nil)).Elem() +} + +func (i EventTargetSqsTargetArgs) ToEventTargetSqsTargetOutput() EventTargetSqsTargetOutput { + return i.ToEventTargetSqsTargetOutputWithContext(context.Background()) +} + +func (i EventTargetSqsTargetArgs) ToEventTargetSqsTargetOutputWithContext(ctx context.Context) EventTargetSqsTargetOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSqsTargetOutput) +} + +func (i EventTargetSqsTargetArgs) ToEventTargetSqsTargetPtrOutput() EventTargetSqsTargetPtrOutput { + return i.ToEventTargetSqsTargetPtrOutputWithContext(context.Background()) +} + +func (i EventTargetSqsTargetArgs) ToEventTargetSqsTargetPtrOutputWithContext(ctx context.Context) EventTargetSqsTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSqsTargetOutput).ToEventTargetSqsTargetPtrOutputWithContext(ctx) +} + +// EventTargetSqsTargetPtrInput is an input type that accepts EventTargetSqsTargetArgs, EventTargetSqsTargetPtr and EventTargetSqsTargetPtrOutput values. +// You can construct a concrete instance of `EventTargetSqsTargetPtrInput` via: +// +// EventTargetSqsTargetArgs{...} +// +// or: +// +// nil +type EventTargetSqsTargetPtrInput interface { + pulumi.Input + + ToEventTargetSqsTargetPtrOutput() EventTargetSqsTargetPtrOutput + ToEventTargetSqsTargetPtrOutputWithContext(context.Context) EventTargetSqsTargetPtrOutput +} + +type eventTargetSqsTargetPtrType EventTargetSqsTargetArgs + +func EventTargetSqsTargetPtr(v *EventTargetSqsTargetArgs) EventTargetSqsTargetPtrInput { + return (*eventTargetSqsTargetPtrType)(v) +} + +func (*eventTargetSqsTargetPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetSqsTarget)(nil)).Elem() +} + +func (i *eventTargetSqsTargetPtrType) ToEventTargetSqsTargetPtrOutput() EventTargetSqsTargetPtrOutput { + return i.ToEventTargetSqsTargetPtrOutputWithContext(context.Background()) +} + +func (i *eventTargetSqsTargetPtrType) ToEventTargetSqsTargetPtrOutputWithContext(ctx context.Context) EventTargetSqsTargetPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EventTargetSqsTargetPtrOutput) +} + +type EventTargetSqsTargetOutput struct{ *pulumi.OutputState } + +func (EventTargetSqsTargetOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EventTargetSqsTarget)(nil)).Elem() +} + +func (o EventTargetSqsTargetOutput) ToEventTargetSqsTargetOutput() EventTargetSqsTargetOutput { + return o +} + +func (o EventTargetSqsTargetOutput) ToEventTargetSqsTargetOutputWithContext(ctx context.Context) EventTargetSqsTargetOutput { + return o +} + +func (o EventTargetSqsTargetOutput) ToEventTargetSqsTargetPtrOutput() EventTargetSqsTargetPtrOutput { + return o.ToEventTargetSqsTargetPtrOutputWithContext(context.Background()) +} + +func (o EventTargetSqsTargetOutput) ToEventTargetSqsTargetPtrOutputWithContext(ctx context.Context) EventTargetSqsTargetPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EventTargetSqsTarget) *EventTargetSqsTarget { + return &v + }).(EventTargetSqsTargetPtrOutput) +} + +// The FIFO message group ID to use as the target. +func (o EventTargetSqsTargetOutput) MessageGroupId() pulumi.StringPtrOutput { + return o.ApplyT(func(v EventTargetSqsTarget) *string { return v.MessageGroupId }).(pulumi.StringPtrOutput) +} + +type EventTargetSqsTargetPtrOutput struct{ *pulumi.OutputState } + +func (EventTargetSqsTargetPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EventTargetSqsTarget)(nil)).Elem() +} + +func (o EventTargetSqsTargetPtrOutput) ToEventTargetSqsTargetPtrOutput() EventTargetSqsTargetPtrOutput { + return o +} + +func (o EventTargetSqsTargetPtrOutput) ToEventTargetSqsTargetPtrOutputWithContext(ctx context.Context) EventTargetSqsTargetPtrOutput { + return o +} + +func (o EventTargetSqsTargetPtrOutput) Elem() EventTargetSqsTargetOutput { + return o.ApplyT(func(v *EventTargetSqsTarget) EventTargetSqsTarget { + if v != nil { + return *v + } + var ret EventTargetSqsTarget + return ret + }).(EventTargetSqsTargetOutput) +} + +// The FIFO message group ID to use as the target. +func (o EventTargetSqsTargetPtrOutput) MessageGroupId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EventTargetSqsTarget) *string { + if v == nil { + return nil + } + return v.MessageGroupId + }).(pulumi.StringPtrOutput) +} + +type InternetMonitorHealthEventsConfig struct { + // The health event threshold percentage set for availability scores. + AvailabilityScoreThreshold *float64 `pulumi:"availabilityScoreThreshold"` + // The health event threshold percentage set for performance scores. + PerformanceScoreThreshold *float64 `pulumi:"performanceScoreThreshold"` +} + +// InternetMonitorHealthEventsConfigInput is an input type that accepts InternetMonitorHealthEventsConfigArgs and InternetMonitorHealthEventsConfigOutput values. +// You can construct a concrete instance of `InternetMonitorHealthEventsConfigInput` via: +// +// InternetMonitorHealthEventsConfigArgs{...} +type InternetMonitorHealthEventsConfigInput interface { + pulumi.Input + + ToInternetMonitorHealthEventsConfigOutput() InternetMonitorHealthEventsConfigOutput + ToInternetMonitorHealthEventsConfigOutputWithContext(context.Context) InternetMonitorHealthEventsConfigOutput +} + +type InternetMonitorHealthEventsConfigArgs struct { + // The health event threshold percentage set for availability scores. + AvailabilityScoreThreshold pulumi.Float64PtrInput `pulumi:"availabilityScoreThreshold"` + // The health event threshold percentage set for performance scores. + PerformanceScoreThreshold pulumi.Float64PtrInput `pulumi:"performanceScoreThreshold"` +} + +func (InternetMonitorHealthEventsConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InternetMonitorHealthEventsConfig)(nil)).Elem() +} + +func (i InternetMonitorHealthEventsConfigArgs) ToInternetMonitorHealthEventsConfigOutput() InternetMonitorHealthEventsConfigOutput { + return i.ToInternetMonitorHealthEventsConfigOutputWithContext(context.Background()) +} + +func (i InternetMonitorHealthEventsConfigArgs) ToInternetMonitorHealthEventsConfigOutputWithContext(ctx context.Context) InternetMonitorHealthEventsConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorHealthEventsConfigOutput) +} + +func (i InternetMonitorHealthEventsConfigArgs) ToInternetMonitorHealthEventsConfigPtrOutput() InternetMonitorHealthEventsConfigPtrOutput { + return i.ToInternetMonitorHealthEventsConfigPtrOutputWithContext(context.Background()) +} + +func (i InternetMonitorHealthEventsConfigArgs) ToInternetMonitorHealthEventsConfigPtrOutputWithContext(ctx context.Context) InternetMonitorHealthEventsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorHealthEventsConfigOutput).ToInternetMonitorHealthEventsConfigPtrOutputWithContext(ctx) +} + +// InternetMonitorHealthEventsConfigPtrInput is an input type that accepts InternetMonitorHealthEventsConfigArgs, InternetMonitorHealthEventsConfigPtr and InternetMonitorHealthEventsConfigPtrOutput values. +// You can construct a concrete instance of `InternetMonitorHealthEventsConfigPtrInput` via: +// +// InternetMonitorHealthEventsConfigArgs{...} +// +// or: +// +// nil +type InternetMonitorHealthEventsConfigPtrInput interface { + pulumi.Input + + ToInternetMonitorHealthEventsConfigPtrOutput() InternetMonitorHealthEventsConfigPtrOutput + ToInternetMonitorHealthEventsConfigPtrOutputWithContext(context.Context) InternetMonitorHealthEventsConfigPtrOutput +} + +type internetMonitorHealthEventsConfigPtrType InternetMonitorHealthEventsConfigArgs + +func InternetMonitorHealthEventsConfigPtr(v *InternetMonitorHealthEventsConfigArgs) InternetMonitorHealthEventsConfigPtrInput { + return (*internetMonitorHealthEventsConfigPtrType)(v) +} + +func (*internetMonitorHealthEventsConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitorHealthEventsConfig)(nil)).Elem() +} + +func (i *internetMonitorHealthEventsConfigPtrType) ToInternetMonitorHealthEventsConfigPtrOutput() InternetMonitorHealthEventsConfigPtrOutput { + return i.ToInternetMonitorHealthEventsConfigPtrOutputWithContext(context.Background()) +} + +func (i *internetMonitorHealthEventsConfigPtrType) ToInternetMonitorHealthEventsConfigPtrOutputWithContext(ctx context.Context) InternetMonitorHealthEventsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorHealthEventsConfigPtrOutput) +} + +type InternetMonitorHealthEventsConfigOutput struct{ *pulumi.OutputState } + +func (InternetMonitorHealthEventsConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InternetMonitorHealthEventsConfig)(nil)).Elem() +} + +func (o InternetMonitorHealthEventsConfigOutput) ToInternetMonitorHealthEventsConfigOutput() InternetMonitorHealthEventsConfigOutput { + return o +} + +func (o InternetMonitorHealthEventsConfigOutput) ToInternetMonitorHealthEventsConfigOutputWithContext(ctx context.Context) InternetMonitorHealthEventsConfigOutput { + return o +} + +func (o InternetMonitorHealthEventsConfigOutput) ToInternetMonitorHealthEventsConfigPtrOutput() InternetMonitorHealthEventsConfigPtrOutput { + return o.ToInternetMonitorHealthEventsConfigPtrOutputWithContext(context.Background()) +} + +func (o InternetMonitorHealthEventsConfigOutput) ToInternetMonitorHealthEventsConfigPtrOutputWithContext(ctx context.Context) InternetMonitorHealthEventsConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InternetMonitorHealthEventsConfig) *InternetMonitorHealthEventsConfig { + return &v + }).(InternetMonitorHealthEventsConfigPtrOutput) +} + +// The health event threshold percentage set for availability scores. +func (o InternetMonitorHealthEventsConfigOutput) AvailabilityScoreThreshold() pulumi.Float64PtrOutput { + return o.ApplyT(func(v InternetMonitorHealthEventsConfig) *float64 { return v.AvailabilityScoreThreshold }).(pulumi.Float64PtrOutput) +} + +// The health event threshold percentage set for performance scores. +func (o InternetMonitorHealthEventsConfigOutput) PerformanceScoreThreshold() pulumi.Float64PtrOutput { + return o.ApplyT(func(v InternetMonitorHealthEventsConfig) *float64 { return v.PerformanceScoreThreshold }).(pulumi.Float64PtrOutput) +} + +type InternetMonitorHealthEventsConfigPtrOutput struct{ *pulumi.OutputState } + +func (InternetMonitorHealthEventsConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitorHealthEventsConfig)(nil)).Elem() +} + +func (o InternetMonitorHealthEventsConfigPtrOutput) ToInternetMonitorHealthEventsConfigPtrOutput() InternetMonitorHealthEventsConfigPtrOutput { + return o +} + +func (o InternetMonitorHealthEventsConfigPtrOutput) ToInternetMonitorHealthEventsConfigPtrOutputWithContext(ctx context.Context) InternetMonitorHealthEventsConfigPtrOutput { + return o +} + +func (o InternetMonitorHealthEventsConfigPtrOutput) Elem() InternetMonitorHealthEventsConfigOutput { + return o.ApplyT(func(v *InternetMonitorHealthEventsConfig) InternetMonitorHealthEventsConfig { + if v != nil { + return *v + } + var ret InternetMonitorHealthEventsConfig + return ret + }).(InternetMonitorHealthEventsConfigOutput) +} + +// The health event threshold percentage set for availability scores. +func (o InternetMonitorHealthEventsConfigPtrOutput) AvailabilityScoreThreshold() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *InternetMonitorHealthEventsConfig) *float64 { + if v == nil { + return nil + } + return v.AvailabilityScoreThreshold + }).(pulumi.Float64PtrOutput) +} + +// The health event threshold percentage set for performance scores. +func (o InternetMonitorHealthEventsConfigPtrOutput) PerformanceScoreThreshold() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *InternetMonitorHealthEventsConfig) *float64 { + if v == nil { + return nil + } + return v.PerformanceScoreThreshold + }).(pulumi.Float64PtrOutput) +} + +type InternetMonitorInternetMeasurementsLogDelivery struct { + S3Config *InternetMonitorInternetMeasurementsLogDeliveryS3Config `pulumi:"s3Config"` +} + +// InternetMonitorInternetMeasurementsLogDeliveryInput is an input type that accepts InternetMonitorInternetMeasurementsLogDeliveryArgs and InternetMonitorInternetMeasurementsLogDeliveryOutput values. +// You can construct a concrete instance of `InternetMonitorInternetMeasurementsLogDeliveryInput` via: +// +// InternetMonitorInternetMeasurementsLogDeliveryArgs{...} +type InternetMonitorInternetMeasurementsLogDeliveryInput interface { + pulumi.Input + + ToInternetMonitorInternetMeasurementsLogDeliveryOutput() InternetMonitorInternetMeasurementsLogDeliveryOutput + ToInternetMonitorInternetMeasurementsLogDeliveryOutputWithContext(context.Context) InternetMonitorInternetMeasurementsLogDeliveryOutput +} + +type InternetMonitorInternetMeasurementsLogDeliveryArgs struct { + S3Config InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrInput `pulumi:"s3Config"` +} + +func (InternetMonitorInternetMeasurementsLogDeliveryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDelivery)(nil)).Elem() +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryArgs) ToInternetMonitorInternetMeasurementsLogDeliveryOutput() InternetMonitorInternetMeasurementsLogDeliveryOutput { + return i.ToInternetMonitorInternetMeasurementsLogDeliveryOutputWithContext(context.Background()) +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryArgs) ToInternetMonitorInternetMeasurementsLogDeliveryOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorInternetMeasurementsLogDeliveryOutput) +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryArgs) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return i.ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(context.Background()) +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryArgs) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorInternetMeasurementsLogDeliveryOutput).ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(ctx) +} + +// InternetMonitorInternetMeasurementsLogDeliveryPtrInput is an input type that accepts InternetMonitorInternetMeasurementsLogDeliveryArgs, InternetMonitorInternetMeasurementsLogDeliveryPtr and InternetMonitorInternetMeasurementsLogDeliveryPtrOutput values. +// You can construct a concrete instance of `InternetMonitorInternetMeasurementsLogDeliveryPtrInput` via: +// +// InternetMonitorInternetMeasurementsLogDeliveryArgs{...} +// +// or: +// +// nil +type InternetMonitorInternetMeasurementsLogDeliveryPtrInput interface { + pulumi.Input + + ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryPtrOutput + ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(context.Context) InternetMonitorInternetMeasurementsLogDeliveryPtrOutput +} + +type internetMonitorInternetMeasurementsLogDeliveryPtrType InternetMonitorInternetMeasurementsLogDeliveryArgs + +func InternetMonitorInternetMeasurementsLogDeliveryPtr(v *InternetMonitorInternetMeasurementsLogDeliveryArgs) InternetMonitorInternetMeasurementsLogDeliveryPtrInput { + return (*internetMonitorInternetMeasurementsLogDeliveryPtrType)(v) +} + +func (*internetMonitorInternetMeasurementsLogDeliveryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitorInternetMeasurementsLogDelivery)(nil)).Elem() +} + +func (i *internetMonitorInternetMeasurementsLogDeliveryPtrType) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return i.ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(context.Background()) +} + +func (i *internetMonitorInternetMeasurementsLogDeliveryPtrType) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) +} + +type InternetMonitorInternetMeasurementsLogDeliveryOutput struct{ *pulumi.OutputState } + +func (InternetMonitorInternetMeasurementsLogDeliveryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDelivery)(nil)).Elem() +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryOutput) ToInternetMonitorInternetMeasurementsLogDeliveryOutput() InternetMonitorInternetMeasurementsLogDeliveryOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryOutput) ToInternetMonitorInternetMeasurementsLogDeliveryOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryOutput) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return o.ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(context.Background()) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryOutput) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InternetMonitorInternetMeasurementsLogDelivery) *InternetMonitorInternetMeasurementsLogDelivery { + return &v + }).(InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryOutput) S3Config() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return o.ApplyT(func(v InternetMonitorInternetMeasurementsLogDelivery) *InternetMonitorInternetMeasurementsLogDeliveryS3Config { + return v.S3Config + }).(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) +} + +type InternetMonitorInternetMeasurementsLogDeliveryPtrOutput struct{ *pulumi.OutputState } + +func (InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitorInternetMeasurementsLogDelivery)(nil)).Elem() +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) ToInternetMonitorInternetMeasurementsLogDeliveryPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryPtrOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) Elem() InternetMonitorInternetMeasurementsLogDeliveryOutput { + return o.ApplyT(func(v *InternetMonitorInternetMeasurementsLogDelivery) InternetMonitorInternetMeasurementsLogDelivery { + if v != nil { + return *v + } + var ret InternetMonitorInternetMeasurementsLogDelivery + return ret + }).(InternetMonitorInternetMeasurementsLogDeliveryOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryPtrOutput) S3Config() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return o.ApplyT(func(v *InternetMonitorInternetMeasurementsLogDelivery) *InternetMonitorInternetMeasurementsLogDeliveryS3Config { + if v == nil { + return nil + } + return v.S3Config + }).(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) +} + +type InternetMonitorInternetMeasurementsLogDeliveryS3Config struct { + BucketName string `pulumi:"bucketName"` + BucketPrefix *string `pulumi:"bucketPrefix"` + LogDeliveryStatus *string `pulumi:"logDeliveryStatus"` +} + +// InternetMonitorInternetMeasurementsLogDeliveryS3ConfigInput is an input type that accepts InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs and InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput values. +// You can construct a concrete instance of `InternetMonitorInternetMeasurementsLogDeliveryS3ConfigInput` via: +// +// InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs{...} +type InternetMonitorInternetMeasurementsLogDeliveryS3ConfigInput interface { + pulumi.Input + + ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput + ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutputWithContext(context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput +} + +type InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs struct { + BucketName pulumi.StringInput `pulumi:"bucketName"` + BucketPrefix pulumi.StringPtrInput `pulumi:"bucketPrefix"` + LogDeliveryStatus pulumi.StringPtrInput `pulumi:"logDeliveryStatus"` +} + +func (InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDeliveryS3Config)(nil)).Elem() +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput { + return i.ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutputWithContext(context.Background()) +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return i.ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(context.Background()) +} + +func (i InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput).ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(ctx) +} + +// InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrInput is an input type that accepts InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs, InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtr and InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput values. +// You can construct a concrete instance of `InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrInput` via: +// +// InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs{...} +// +// or: +// +// nil +type InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrInput interface { + pulumi.Input + + ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput + ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput +} + +type internetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrType InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs + +func InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtr(v *InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrInput { + return (*internetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrType)(v) +} + +func (*internetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitorInternetMeasurementsLogDeliveryS3Config)(nil)).Elem() +} + +func (i *internetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrType) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return i.ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(context.Background()) +} + +func (i *internetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrType) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) +} + +type InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput struct{ *pulumi.OutputState } + +func (InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDeliveryS3Config)(nil)).Elem() +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return o.ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(context.Background()) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InternetMonitorInternetMeasurementsLogDeliveryS3Config) *InternetMonitorInternetMeasurementsLogDeliveryS3Config { + return &v + }).(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) BucketName() pulumi.StringOutput { + return o.ApplyT(func(v InternetMonitorInternetMeasurementsLogDeliveryS3Config) string { return v.BucketName }).(pulumi.StringOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) BucketPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v InternetMonitorInternetMeasurementsLogDeliveryS3Config) *string { return v.BucketPrefix }).(pulumi.StringPtrOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) LogDeliveryStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v InternetMonitorInternetMeasurementsLogDeliveryS3Config) *string { return v.LogDeliveryStatus }).(pulumi.StringPtrOutput) +} + +type InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput struct{ *pulumi.OutputState } + +func (InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InternetMonitorInternetMeasurementsLogDeliveryS3Config)(nil)).Elem() +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) ToInternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutputWithContext(ctx context.Context) InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput { + return o +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) Elem() InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput { + return o.ApplyT(func(v *InternetMonitorInternetMeasurementsLogDeliveryS3Config) InternetMonitorInternetMeasurementsLogDeliveryS3Config { + if v != nil { + return *v + } + var ret InternetMonitorInternetMeasurementsLogDeliveryS3Config + return ret + }).(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) BucketName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InternetMonitorInternetMeasurementsLogDeliveryS3Config) *string { + if v == nil { + return nil + } + return &v.BucketName + }).(pulumi.StringPtrOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) BucketPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InternetMonitorInternetMeasurementsLogDeliveryS3Config) *string { + if v == nil { + return nil + } + return v.BucketPrefix + }).(pulumi.StringPtrOutput) +} + +func (o InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput) LogDeliveryStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InternetMonitorInternetMeasurementsLogDeliveryS3Config) *string { + if v == nil { + return nil + } + return v.LogDeliveryStatus + }).(pulumi.StringPtrOutput) +} + +type LogMetricFilterMetricTransformation struct { + // The value to emit when a filter pattern does not match a log event. Conflicts with `dimensions`. + DefaultValue *string `pulumi:"defaultValue"` + // Map of fields to use as dimensions for the metric. Up to 3 dimensions are allowed. Conflicts with `defaultValue`. + Dimensions map[string]string `pulumi:"dimensions"` + // The name of the CloudWatch metric to which the monitored log information should be published (e.g., `ErrorCount`) + Name string `pulumi:"name"` + // The destination namespace of the CloudWatch metric. + Namespace string `pulumi:"namespace"` + // The unit to assign to the metric. If you omit this, the unit is set as `None`. + Unit *string `pulumi:"unit"` + // What to publish to the metric. For example, if you're counting the occurrences of a particular term like "Error", the value will be "1" for each occurrence. If you're counting the bytes transferred the published value will be the value in the log event. + Value string `pulumi:"value"` +} + +// LogMetricFilterMetricTransformationInput is an input type that accepts LogMetricFilterMetricTransformationArgs and LogMetricFilterMetricTransformationOutput values. +// You can construct a concrete instance of `LogMetricFilterMetricTransformationInput` via: +// +// LogMetricFilterMetricTransformationArgs{...} +type LogMetricFilterMetricTransformationInput interface { + pulumi.Input + + ToLogMetricFilterMetricTransformationOutput() LogMetricFilterMetricTransformationOutput + ToLogMetricFilterMetricTransformationOutputWithContext(context.Context) LogMetricFilterMetricTransformationOutput +} + +type LogMetricFilterMetricTransformationArgs struct { + // The value to emit when a filter pattern does not match a log event. Conflicts with `dimensions`. + DefaultValue pulumi.StringPtrInput `pulumi:"defaultValue"` + // Map of fields to use as dimensions for the metric. Up to 3 dimensions are allowed. Conflicts with `defaultValue`. + Dimensions pulumi.StringMapInput `pulumi:"dimensions"` + // The name of the CloudWatch metric to which the monitored log information should be published (e.g., `ErrorCount`) + Name pulumi.StringInput `pulumi:"name"` + // The destination namespace of the CloudWatch metric. + Namespace pulumi.StringInput `pulumi:"namespace"` + // The unit to assign to the metric. If you omit this, the unit is set as `None`. + Unit pulumi.StringPtrInput `pulumi:"unit"` + // What to publish to the metric. For example, if you're counting the occurrences of a particular term like "Error", the value will be "1" for each occurrence. If you're counting the bytes transferred the published value will be the value in the log event. + Value pulumi.StringInput `pulumi:"value"` +} + +func (LogMetricFilterMetricTransformationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LogMetricFilterMetricTransformation)(nil)).Elem() +} + +func (i LogMetricFilterMetricTransformationArgs) ToLogMetricFilterMetricTransformationOutput() LogMetricFilterMetricTransformationOutput { + return i.ToLogMetricFilterMetricTransformationOutputWithContext(context.Background()) +} + +func (i LogMetricFilterMetricTransformationArgs) ToLogMetricFilterMetricTransformationOutputWithContext(ctx context.Context) LogMetricFilterMetricTransformationOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterMetricTransformationOutput) +} + +func (i LogMetricFilterMetricTransformationArgs) ToLogMetricFilterMetricTransformationPtrOutput() LogMetricFilterMetricTransformationPtrOutput { + return i.ToLogMetricFilterMetricTransformationPtrOutputWithContext(context.Background()) +} + +func (i LogMetricFilterMetricTransformationArgs) ToLogMetricFilterMetricTransformationPtrOutputWithContext(ctx context.Context) LogMetricFilterMetricTransformationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterMetricTransformationOutput).ToLogMetricFilterMetricTransformationPtrOutputWithContext(ctx) +} + +// LogMetricFilterMetricTransformationPtrInput is an input type that accepts LogMetricFilterMetricTransformationArgs, LogMetricFilterMetricTransformationPtr and LogMetricFilterMetricTransformationPtrOutput values. +// You can construct a concrete instance of `LogMetricFilterMetricTransformationPtrInput` via: +// +// LogMetricFilterMetricTransformationArgs{...} +// +// or: +// +// nil +type LogMetricFilterMetricTransformationPtrInput interface { + pulumi.Input + + ToLogMetricFilterMetricTransformationPtrOutput() LogMetricFilterMetricTransformationPtrOutput + ToLogMetricFilterMetricTransformationPtrOutputWithContext(context.Context) LogMetricFilterMetricTransformationPtrOutput +} + +type logMetricFilterMetricTransformationPtrType LogMetricFilterMetricTransformationArgs + +func LogMetricFilterMetricTransformationPtr(v *LogMetricFilterMetricTransformationArgs) LogMetricFilterMetricTransformationPtrInput { + return (*logMetricFilterMetricTransformationPtrType)(v) +} + +func (*logMetricFilterMetricTransformationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**LogMetricFilterMetricTransformation)(nil)).Elem() +} + +func (i *logMetricFilterMetricTransformationPtrType) ToLogMetricFilterMetricTransformationPtrOutput() LogMetricFilterMetricTransformationPtrOutput { + return i.ToLogMetricFilterMetricTransformationPtrOutputWithContext(context.Background()) +} + +func (i *logMetricFilterMetricTransformationPtrType) ToLogMetricFilterMetricTransformationPtrOutputWithContext(ctx context.Context) LogMetricFilterMetricTransformationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogMetricFilterMetricTransformationPtrOutput) +} + +type LogMetricFilterMetricTransformationOutput struct{ *pulumi.OutputState } + +func (LogMetricFilterMetricTransformationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LogMetricFilterMetricTransformation)(nil)).Elem() +} + +func (o LogMetricFilterMetricTransformationOutput) ToLogMetricFilterMetricTransformationOutput() LogMetricFilterMetricTransformationOutput { + return o +} + +func (o LogMetricFilterMetricTransformationOutput) ToLogMetricFilterMetricTransformationOutputWithContext(ctx context.Context) LogMetricFilterMetricTransformationOutput { + return o +} + +func (o LogMetricFilterMetricTransformationOutput) ToLogMetricFilterMetricTransformationPtrOutput() LogMetricFilterMetricTransformationPtrOutput { + return o.ToLogMetricFilterMetricTransformationPtrOutputWithContext(context.Background()) +} + +func (o LogMetricFilterMetricTransformationOutput) ToLogMetricFilterMetricTransformationPtrOutputWithContext(ctx context.Context) LogMetricFilterMetricTransformationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v LogMetricFilterMetricTransformation) *LogMetricFilterMetricTransformation { + return &v + }).(LogMetricFilterMetricTransformationPtrOutput) +} + +// The value to emit when a filter pattern does not match a log event. Conflicts with `dimensions`. +func (o LogMetricFilterMetricTransformationOutput) DefaultValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v LogMetricFilterMetricTransformation) *string { return v.DefaultValue }).(pulumi.StringPtrOutput) +} + +// Map of fields to use as dimensions for the metric. Up to 3 dimensions are allowed. Conflicts with `defaultValue`. +func (o LogMetricFilterMetricTransformationOutput) Dimensions() pulumi.StringMapOutput { + return o.ApplyT(func(v LogMetricFilterMetricTransformation) map[string]string { return v.Dimensions }).(pulumi.StringMapOutput) +} + +// The name of the CloudWatch metric to which the monitored log information should be published (e.g., `ErrorCount`) +func (o LogMetricFilterMetricTransformationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LogMetricFilterMetricTransformation) string { return v.Name }).(pulumi.StringOutput) +} + +// The destination namespace of the CloudWatch metric. +func (o LogMetricFilterMetricTransformationOutput) Namespace() pulumi.StringOutput { + return o.ApplyT(func(v LogMetricFilterMetricTransformation) string { return v.Namespace }).(pulumi.StringOutput) +} + +// The unit to assign to the metric. If you omit this, the unit is set as `None`. +func (o LogMetricFilterMetricTransformationOutput) Unit() pulumi.StringPtrOutput { + return o.ApplyT(func(v LogMetricFilterMetricTransformation) *string { return v.Unit }).(pulumi.StringPtrOutput) +} + +// What to publish to the metric. For example, if you're counting the occurrences of a particular term like "Error", the value will be "1" for each occurrence. If you're counting the bytes transferred the published value will be the value in the log event. +func (o LogMetricFilterMetricTransformationOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v LogMetricFilterMetricTransformation) string { return v.Value }).(pulumi.StringOutput) +} + +type LogMetricFilterMetricTransformationPtrOutput struct{ *pulumi.OutputState } + +func (LogMetricFilterMetricTransformationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogMetricFilterMetricTransformation)(nil)).Elem() +} + +func (o LogMetricFilterMetricTransformationPtrOutput) ToLogMetricFilterMetricTransformationPtrOutput() LogMetricFilterMetricTransformationPtrOutput { + return o +} + +func (o LogMetricFilterMetricTransformationPtrOutput) ToLogMetricFilterMetricTransformationPtrOutputWithContext(ctx context.Context) LogMetricFilterMetricTransformationPtrOutput { + return o +} + +func (o LogMetricFilterMetricTransformationPtrOutput) Elem() LogMetricFilterMetricTransformationOutput { + return o.ApplyT(func(v *LogMetricFilterMetricTransformation) LogMetricFilterMetricTransformation { + if v != nil { + return *v + } + var ret LogMetricFilterMetricTransformation + return ret + }).(LogMetricFilterMetricTransformationOutput) +} + +// The value to emit when a filter pattern does not match a log event. Conflicts with `dimensions`. +func (o LogMetricFilterMetricTransformationPtrOutput) DefaultValue() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogMetricFilterMetricTransformation) *string { + if v == nil { + return nil + } + return v.DefaultValue + }).(pulumi.StringPtrOutput) +} + +// Map of fields to use as dimensions for the metric. Up to 3 dimensions are allowed. Conflicts with `defaultValue`. +func (o LogMetricFilterMetricTransformationPtrOutput) Dimensions() pulumi.StringMapOutput { + return o.ApplyT(func(v *LogMetricFilterMetricTransformation) map[string]string { + if v == nil { + return nil + } + return v.Dimensions + }).(pulumi.StringMapOutput) +} + +// The name of the CloudWatch metric to which the monitored log information should be published (e.g., `ErrorCount`) +func (o LogMetricFilterMetricTransformationPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogMetricFilterMetricTransformation) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// The destination namespace of the CloudWatch metric. +func (o LogMetricFilterMetricTransformationPtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogMetricFilterMetricTransformation) *string { + if v == nil { + return nil + } + return &v.Namespace + }).(pulumi.StringPtrOutput) +} + +// The unit to assign to the metric. If you omit this, the unit is set as `None`. +func (o LogMetricFilterMetricTransformationPtrOutput) Unit() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogMetricFilterMetricTransformation) *string { + if v == nil { + return nil + } + return v.Unit + }).(pulumi.StringPtrOutput) +} + +// What to publish to the metric. For example, if you're counting the occurrences of a particular term like "Error", the value will be "1" for each occurrence. If you're counting the bytes transferred the published value will be the value in the log event. +func (o LogMetricFilterMetricTransformationPtrOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogMetricFilterMetricTransformation) *string { + if v == nil { + return nil + } + return &v.Value + }).(pulumi.StringPtrOutput) +} + +type MetricAlarmMetricQuery struct { + // The ID of the account where the metrics are located, if this is a cross-account alarm. + AccountId *string `pulumi:"accountId"` + // The math expression to be performed on the returned data, if this object is performing a math expression. This expression can use the id of the other metrics to refer to those metrics, and can also use the id of other expressions to use the result of those expressions. For more information about metric math expressions, see Metric Math Syntax and Functions in the [Amazon CloudWatch User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax). + Expression *string `pulumi:"expression"` + // A short name used to tie this object to the results in the response. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscore. The first character must be a lowercase letter. + Id string `pulumi:"id"` + // A human-readable label for this metric or expression. This is especially useful if this is an expression, so that you know what the value represents. + Label *string `pulumi:"label"` + // The metric to be returned, along with statistics, period, and units. Use this parameter only if this object is retrieving a metric and not performing a math expression on returned data. + Metric *MetricAlarmMetricQueryMetric `pulumi:"metric"` + // Granularity in seconds of returned data points. + // For metrics with regular resolution, valid values are any multiple of `60`. + // For high-resolution metrics, valid values are `1`, `5`, `10`, `30`, or any multiple of `60`. + Period *int `pulumi:"period"` + // Specify exactly one `metricQuery` to be `true` to use that `metricQuery` result as the alarm. + // + // > **NOTE:** You must specify either `metric` or `expression`. Not both. + ReturnData *bool `pulumi:"returnData"` +} + +// MetricAlarmMetricQueryInput is an input type that accepts MetricAlarmMetricQueryArgs and MetricAlarmMetricQueryOutput values. +// You can construct a concrete instance of `MetricAlarmMetricQueryInput` via: +// +// MetricAlarmMetricQueryArgs{...} +type MetricAlarmMetricQueryInput interface { + pulumi.Input + + ToMetricAlarmMetricQueryOutput() MetricAlarmMetricQueryOutput + ToMetricAlarmMetricQueryOutputWithContext(context.Context) MetricAlarmMetricQueryOutput +} + +type MetricAlarmMetricQueryArgs struct { + // The ID of the account where the metrics are located, if this is a cross-account alarm. + AccountId pulumi.StringPtrInput `pulumi:"accountId"` + // The math expression to be performed on the returned data, if this object is performing a math expression. This expression can use the id of the other metrics to refer to those metrics, and can also use the id of other expressions to use the result of those expressions. For more information about metric math expressions, see Metric Math Syntax and Functions in the [Amazon CloudWatch User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax). + Expression pulumi.StringPtrInput `pulumi:"expression"` + // A short name used to tie this object to the results in the response. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscore. The first character must be a lowercase letter. + Id pulumi.StringInput `pulumi:"id"` + // A human-readable label for this metric or expression. This is especially useful if this is an expression, so that you know what the value represents. + Label pulumi.StringPtrInput `pulumi:"label"` + // The metric to be returned, along with statistics, period, and units. Use this parameter only if this object is retrieving a metric and not performing a math expression on returned data. + Metric MetricAlarmMetricQueryMetricPtrInput `pulumi:"metric"` + // Granularity in seconds of returned data points. + // For metrics with regular resolution, valid values are any multiple of `60`. + // For high-resolution metrics, valid values are `1`, `5`, `10`, `30`, or any multiple of `60`. + Period pulumi.IntPtrInput `pulumi:"period"` + // Specify exactly one `metricQuery` to be `true` to use that `metricQuery` result as the alarm. + // + // > **NOTE:** You must specify either `metric` or `expression`. Not both. + ReturnData pulumi.BoolPtrInput `pulumi:"returnData"` +} + +func (MetricAlarmMetricQueryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MetricAlarmMetricQuery)(nil)).Elem() +} + +func (i MetricAlarmMetricQueryArgs) ToMetricAlarmMetricQueryOutput() MetricAlarmMetricQueryOutput { + return i.ToMetricAlarmMetricQueryOutputWithContext(context.Background()) +} + +func (i MetricAlarmMetricQueryArgs) ToMetricAlarmMetricQueryOutputWithContext(ctx context.Context) MetricAlarmMetricQueryOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmMetricQueryOutput) +} + +// MetricAlarmMetricQueryArrayInput is an input type that accepts MetricAlarmMetricQueryArray and MetricAlarmMetricQueryArrayOutput values. +// You can construct a concrete instance of `MetricAlarmMetricQueryArrayInput` via: +// +// MetricAlarmMetricQueryArray{ MetricAlarmMetricQueryArgs{...} } +type MetricAlarmMetricQueryArrayInput interface { + pulumi.Input + + ToMetricAlarmMetricQueryArrayOutput() MetricAlarmMetricQueryArrayOutput + ToMetricAlarmMetricQueryArrayOutputWithContext(context.Context) MetricAlarmMetricQueryArrayOutput +} + +type MetricAlarmMetricQueryArray []MetricAlarmMetricQueryInput + +func (MetricAlarmMetricQueryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricAlarmMetricQuery)(nil)).Elem() +} + +func (i MetricAlarmMetricQueryArray) ToMetricAlarmMetricQueryArrayOutput() MetricAlarmMetricQueryArrayOutput { + return i.ToMetricAlarmMetricQueryArrayOutputWithContext(context.Background()) +} + +func (i MetricAlarmMetricQueryArray) ToMetricAlarmMetricQueryArrayOutputWithContext(ctx context.Context) MetricAlarmMetricQueryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmMetricQueryArrayOutput) +} + +type MetricAlarmMetricQueryOutput struct{ *pulumi.OutputState } + +func (MetricAlarmMetricQueryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MetricAlarmMetricQuery)(nil)).Elem() +} + +func (o MetricAlarmMetricQueryOutput) ToMetricAlarmMetricQueryOutput() MetricAlarmMetricQueryOutput { + return o +} + +func (o MetricAlarmMetricQueryOutput) ToMetricAlarmMetricQueryOutputWithContext(ctx context.Context) MetricAlarmMetricQueryOutput { + return o +} + +// The ID of the account where the metrics are located, if this is a cross-account alarm. +func (o MetricAlarmMetricQueryOutput) AccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQuery) *string { return v.AccountId }).(pulumi.StringPtrOutput) +} + +// The math expression to be performed on the returned data, if this object is performing a math expression. This expression can use the id of the other metrics to refer to those metrics, and can also use the id of other expressions to use the result of those expressions. For more information about metric math expressions, see Metric Math Syntax and Functions in the [Amazon CloudWatch User Guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#metric-math-syntax). +func (o MetricAlarmMetricQueryOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQuery) *string { return v.Expression }).(pulumi.StringPtrOutput) +} + +// A short name used to tie this object to the results in the response. If you are performing math expressions on this set of data, this name represents that data and can serve as a variable in the mathematical expression. The valid characters are letters, numbers, and underscore. The first character must be a lowercase letter. +func (o MetricAlarmMetricQueryOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v MetricAlarmMetricQuery) string { return v.Id }).(pulumi.StringOutput) +} + +// A human-readable label for this metric or expression. This is especially useful if this is an expression, so that you know what the value represents. +func (o MetricAlarmMetricQueryOutput) Label() pulumi.StringPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQuery) *string { return v.Label }).(pulumi.StringPtrOutput) +} + +// The metric to be returned, along with statistics, period, and units. Use this parameter only if this object is retrieving a metric and not performing a math expression on returned data. +func (o MetricAlarmMetricQueryOutput) Metric() MetricAlarmMetricQueryMetricPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQuery) *MetricAlarmMetricQueryMetric { return v.Metric }).(MetricAlarmMetricQueryMetricPtrOutput) +} + +// Granularity in seconds of returned data points. +// For metrics with regular resolution, valid values are any multiple of `60`. +// For high-resolution metrics, valid values are `1`, `5`, `10`, `30`, or any multiple of `60`. +func (o MetricAlarmMetricQueryOutput) Period() pulumi.IntPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQuery) *int { return v.Period }).(pulumi.IntPtrOutput) +} + +// Specify exactly one `metricQuery` to be `true` to use that `metricQuery` result as the alarm. +// +// > **NOTE:** You must specify either `metric` or `expression`. Not both. +func (o MetricAlarmMetricQueryOutput) ReturnData() pulumi.BoolPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQuery) *bool { return v.ReturnData }).(pulumi.BoolPtrOutput) +} + +type MetricAlarmMetricQueryArrayOutput struct{ *pulumi.OutputState } + +func (MetricAlarmMetricQueryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricAlarmMetricQuery)(nil)).Elem() +} + +func (o MetricAlarmMetricQueryArrayOutput) ToMetricAlarmMetricQueryArrayOutput() MetricAlarmMetricQueryArrayOutput { + return o +} + +func (o MetricAlarmMetricQueryArrayOutput) ToMetricAlarmMetricQueryArrayOutputWithContext(ctx context.Context) MetricAlarmMetricQueryArrayOutput { + return o +} + +func (o MetricAlarmMetricQueryArrayOutput) Index(i pulumi.IntInput) MetricAlarmMetricQueryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MetricAlarmMetricQuery { + return vs[0].([]MetricAlarmMetricQuery)[vs[1].(int)] + }).(MetricAlarmMetricQueryOutput) +} + +type MetricAlarmMetricQueryMetric struct { + // The dimensions for this metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Dimensions map[string]string `pulumi:"dimensions"` + // The name for this metric. + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + MetricName string `pulumi:"metricName"` + // The namespace for this metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Namespace *string `pulumi:"namespace"` + // Granularity in seconds of returned data points. + // For metrics with regular resolution, valid values are any multiple of `60`. + // For high-resolution metrics, valid values are `1`, `5`, `10`, `30`, or any multiple of `60`. + Period int `pulumi:"period"` + // The statistic to apply to this metric. + // See docs for [supported statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html). + Stat string `pulumi:"stat"` + // The unit for this metric. + Unit *string `pulumi:"unit"` +} + +// MetricAlarmMetricQueryMetricInput is an input type that accepts MetricAlarmMetricQueryMetricArgs and MetricAlarmMetricQueryMetricOutput values. +// You can construct a concrete instance of `MetricAlarmMetricQueryMetricInput` via: +// +// MetricAlarmMetricQueryMetricArgs{...} +type MetricAlarmMetricQueryMetricInput interface { + pulumi.Input + + ToMetricAlarmMetricQueryMetricOutput() MetricAlarmMetricQueryMetricOutput + ToMetricAlarmMetricQueryMetricOutputWithContext(context.Context) MetricAlarmMetricQueryMetricOutput +} + +type MetricAlarmMetricQueryMetricArgs struct { + // The dimensions for this metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Dimensions pulumi.StringMapInput `pulumi:"dimensions"` + // The name for this metric. + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + MetricName pulumi.StringInput `pulumi:"metricName"` + // The namespace for this metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). + // See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // Granularity in seconds of returned data points. + // For metrics with regular resolution, valid values are any multiple of `60`. + // For high-resolution metrics, valid values are `1`, `5`, `10`, `30`, or any multiple of `60`. + Period pulumi.IntInput `pulumi:"period"` + // The statistic to apply to this metric. + // See docs for [supported statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html). + Stat pulumi.StringInput `pulumi:"stat"` + // The unit for this metric. + Unit pulumi.StringPtrInput `pulumi:"unit"` +} + +func (MetricAlarmMetricQueryMetricArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MetricAlarmMetricQueryMetric)(nil)).Elem() +} + +func (i MetricAlarmMetricQueryMetricArgs) ToMetricAlarmMetricQueryMetricOutput() MetricAlarmMetricQueryMetricOutput { + return i.ToMetricAlarmMetricQueryMetricOutputWithContext(context.Background()) +} + +func (i MetricAlarmMetricQueryMetricArgs) ToMetricAlarmMetricQueryMetricOutputWithContext(ctx context.Context) MetricAlarmMetricQueryMetricOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmMetricQueryMetricOutput) +} + +func (i MetricAlarmMetricQueryMetricArgs) ToMetricAlarmMetricQueryMetricPtrOutput() MetricAlarmMetricQueryMetricPtrOutput { + return i.ToMetricAlarmMetricQueryMetricPtrOutputWithContext(context.Background()) +} + +func (i MetricAlarmMetricQueryMetricArgs) ToMetricAlarmMetricQueryMetricPtrOutputWithContext(ctx context.Context) MetricAlarmMetricQueryMetricPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmMetricQueryMetricOutput).ToMetricAlarmMetricQueryMetricPtrOutputWithContext(ctx) +} + +// MetricAlarmMetricQueryMetricPtrInput is an input type that accepts MetricAlarmMetricQueryMetricArgs, MetricAlarmMetricQueryMetricPtr and MetricAlarmMetricQueryMetricPtrOutput values. +// You can construct a concrete instance of `MetricAlarmMetricQueryMetricPtrInput` via: +// +// MetricAlarmMetricQueryMetricArgs{...} +// +// or: +// +// nil +type MetricAlarmMetricQueryMetricPtrInput interface { + pulumi.Input + + ToMetricAlarmMetricQueryMetricPtrOutput() MetricAlarmMetricQueryMetricPtrOutput + ToMetricAlarmMetricQueryMetricPtrOutputWithContext(context.Context) MetricAlarmMetricQueryMetricPtrOutput +} + +type metricAlarmMetricQueryMetricPtrType MetricAlarmMetricQueryMetricArgs + +func MetricAlarmMetricQueryMetricPtr(v *MetricAlarmMetricQueryMetricArgs) MetricAlarmMetricQueryMetricPtrInput { + return (*metricAlarmMetricQueryMetricPtrType)(v) +} + +func (*metricAlarmMetricQueryMetricPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**MetricAlarmMetricQueryMetric)(nil)).Elem() +} + +func (i *metricAlarmMetricQueryMetricPtrType) ToMetricAlarmMetricQueryMetricPtrOutput() MetricAlarmMetricQueryMetricPtrOutput { + return i.ToMetricAlarmMetricQueryMetricPtrOutputWithContext(context.Background()) +} + +func (i *metricAlarmMetricQueryMetricPtrType) ToMetricAlarmMetricQueryMetricPtrOutputWithContext(ctx context.Context) MetricAlarmMetricQueryMetricPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricAlarmMetricQueryMetricPtrOutput) +} + +type MetricAlarmMetricQueryMetricOutput struct{ *pulumi.OutputState } + +func (MetricAlarmMetricQueryMetricOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MetricAlarmMetricQueryMetric)(nil)).Elem() +} + +func (o MetricAlarmMetricQueryMetricOutput) ToMetricAlarmMetricQueryMetricOutput() MetricAlarmMetricQueryMetricOutput { + return o +} + +func (o MetricAlarmMetricQueryMetricOutput) ToMetricAlarmMetricQueryMetricOutputWithContext(ctx context.Context) MetricAlarmMetricQueryMetricOutput { + return o +} + +func (o MetricAlarmMetricQueryMetricOutput) ToMetricAlarmMetricQueryMetricPtrOutput() MetricAlarmMetricQueryMetricPtrOutput { + return o.ToMetricAlarmMetricQueryMetricPtrOutputWithContext(context.Background()) +} + +func (o MetricAlarmMetricQueryMetricOutput) ToMetricAlarmMetricQueryMetricPtrOutputWithContext(ctx context.Context) MetricAlarmMetricQueryMetricPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v MetricAlarmMetricQueryMetric) *MetricAlarmMetricQueryMetric { + return &v + }).(MetricAlarmMetricQueryMetricPtrOutput) +} + +// The dimensions for this metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmMetricQueryMetricOutput) Dimensions() pulumi.StringMapOutput { + return o.ApplyT(func(v MetricAlarmMetricQueryMetric) map[string]string { return v.Dimensions }).(pulumi.StringMapOutput) +} + +// The name for this metric. +// See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmMetricQueryMetricOutput) MetricName() pulumi.StringOutput { + return o.ApplyT(func(v MetricAlarmMetricQueryMetric) string { return v.MetricName }).(pulumi.StringOutput) +} + +// The namespace for this metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). +// See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmMetricQueryMetricOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQueryMetric) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// Granularity in seconds of returned data points. +// For metrics with regular resolution, valid values are any multiple of `60`. +// For high-resolution metrics, valid values are `1`, `5`, `10`, `30`, or any multiple of `60`. +func (o MetricAlarmMetricQueryMetricOutput) Period() pulumi.IntOutput { + return o.ApplyT(func(v MetricAlarmMetricQueryMetric) int { return v.Period }).(pulumi.IntOutput) +} + +// The statistic to apply to this metric. +// See docs for [supported statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html). +func (o MetricAlarmMetricQueryMetricOutput) Stat() pulumi.StringOutput { + return o.ApplyT(func(v MetricAlarmMetricQueryMetric) string { return v.Stat }).(pulumi.StringOutput) +} + +// The unit for this metric. +func (o MetricAlarmMetricQueryMetricOutput) Unit() pulumi.StringPtrOutput { + return o.ApplyT(func(v MetricAlarmMetricQueryMetric) *string { return v.Unit }).(pulumi.StringPtrOutput) +} + +type MetricAlarmMetricQueryMetricPtrOutput struct{ *pulumi.OutputState } + +func (MetricAlarmMetricQueryMetricPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**MetricAlarmMetricQueryMetric)(nil)).Elem() +} + +func (o MetricAlarmMetricQueryMetricPtrOutput) ToMetricAlarmMetricQueryMetricPtrOutput() MetricAlarmMetricQueryMetricPtrOutput { + return o +} + +func (o MetricAlarmMetricQueryMetricPtrOutput) ToMetricAlarmMetricQueryMetricPtrOutputWithContext(ctx context.Context) MetricAlarmMetricQueryMetricPtrOutput { + return o +} + +func (o MetricAlarmMetricQueryMetricPtrOutput) Elem() MetricAlarmMetricQueryMetricOutput { + return o.ApplyT(func(v *MetricAlarmMetricQueryMetric) MetricAlarmMetricQueryMetric { + if v != nil { + return *v + } + var ret MetricAlarmMetricQueryMetric + return ret + }).(MetricAlarmMetricQueryMetricOutput) +} + +// The dimensions for this metric. For the list of available dimensions see the AWS documentation [here](http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmMetricQueryMetricPtrOutput) Dimensions() pulumi.StringMapOutput { + return o.ApplyT(func(v *MetricAlarmMetricQueryMetric) map[string]string { + if v == nil { + return nil + } + return v.Dimensions + }).(pulumi.StringMapOutput) +} + +// The name for this metric. +// See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmMetricQueryMetricPtrOutput) MetricName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarmMetricQueryMetric) *string { + if v == nil { + return nil + } + return &v.MetricName + }).(pulumi.StringPtrOutput) +} + +// The namespace for this metric. See docs for the [list of namespaces](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/aws-namespaces.html). +// See docs for [supported metrics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CW_Support_For_AWS.html). +func (o MetricAlarmMetricQueryMetricPtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarmMetricQueryMetric) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// Granularity in seconds of returned data points. +// For metrics with regular resolution, valid values are any multiple of `60`. +// For high-resolution metrics, valid values are `1`, `5`, `10`, `30`, or any multiple of `60`. +func (o MetricAlarmMetricQueryMetricPtrOutput) Period() pulumi.IntPtrOutput { + return o.ApplyT(func(v *MetricAlarmMetricQueryMetric) *int { + if v == nil { + return nil + } + return &v.Period + }).(pulumi.IntPtrOutput) +} + +// The statistic to apply to this metric. +// See docs for [supported statistics](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html). +func (o MetricAlarmMetricQueryMetricPtrOutput) Stat() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarmMetricQueryMetric) *string { + if v == nil { + return nil + } + return &v.Stat + }).(pulumi.StringPtrOutput) +} + +// The unit for this metric. +func (o MetricAlarmMetricQueryMetricPtrOutput) Unit() pulumi.StringPtrOutput { + return o.ApplyT(func(v *MetricAlarmMetricQueryMetric) *string { + if v == nil { + return nil + } + return v.Unit + }).(pulumi.StringPtrOutput) +} + +type MetricStreamExcludeFilter struct { + // An array that defines the metrics you want to exclude for this metric namespace + MetricNames []string `pulumi:"metricNames"` + // Name of the metric namespace in the filter. + Namespace string `pulumi:"namespace"` +} + +// MetricStreamExcludeFilterInput is an input type that accepts MetricStreamExcludeFilterArgs and MetricStreamExcludeFilterOutput values. +// You can construct a concrete instance of `MetricStreamExcludeFilterInput` via: +// +// MetricStreamExcludeFilterArgs{...} +type MetricStreamExcludeFilterInput interface { + pulumi.Input + + ToMetricStreamExcludeFilterOutput() MetricStreamExcludeFilterOutput + ToMetricStreamExcludeFilterOutputWithContext(context.Context) MetricStreamExcludeFilterOutput +} + +type MetricStreamExcludeFilterArgs struct { + // An array that defines the metrics you want to exclude for this metric namespace + MetricNames pulumi.StringArrayInput `pulumi:"metricNames"` + // Name of the metric namespace in the filter. + Namespace pulumi.StringInput `pulumi:"namespace"` +} + +func (MetricStreamExcludeFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamExcludeFilter)(nil)).Elem() +} + +func (i MetricStreamExcludeFilterArgs) ToMetricStreamExcludeFilterOutput() MetricStreamExcludeFilterOutput { + return i.ToMetricStreamExcludeFilterOutputWithContext(context.Background()) +} + +func (i MetricStreamExcludeFilterArgs) ToMetricStreamExcludeFilterOutputWithContext(ctx context.Context) MetricStreamExcludeFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamExcludeFilterOutput) +} + +// MetricStreamExcludeFilterArrayInput is an input type that accepts MetricStreamExcludeFilterArray and MetricStreamExcludeFilterArrayOutput values. +// You can construct a concrete instance of `MetricStreamExcludeFilterArrayInput` via: +// +// MetricStreamExcludeFilterArray{ MetricStreamExcludeFilterArgs{...} } +type MetricStreamExcludeFilterArrayInput interface { + pulumi.Input + + ToMetricStreamExcludeFilterArrayOutput() MetricStreamExcludeFilterArrayOutput + ToMetricStreamExcludeFilterArrayOutputWithContext(context.Context) MetricStreamExcludeFilterArrayOutput +} + +type MetricStreamExcludeFilterArray []MetricStreamExcludeFilterInput + +func (MetricStreamExcludeFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamExcludeFilter)(nil)).Elem() +} + +func (i MetricStreamExcludeFilterArray) ToMetricStreamExcludeFilterArrayOutput() MetricStreamExcludeFilterArrayOutput { + return i.ToMetricStreamExcludeFilterArrayOutputWithContext(context.Background()) +} + +func (i MetricStreamExcludeFilterArray) ToMetricStreamExcludeFilterArrayOutputWithContext(ctx context.Context) MetricStreamExcludeFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamExcludeFilterArrayOutput) +} + +type MetricStreamExcludeFilterOutput struct{ *pulumi.OutputState } + +func (MetricStreamExcludeFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamExcludeFilter)(nil)).Elem() +} + +func (o MetricStreamExcludeFilterOutput) ToMetricStreamExcludeFilterOutput() MetricStreamExcludeFilterOutput { + return o +} + +func (o MetricStreamExcludeFilterOutput) ToMetricStreamExcludeFilterOutputWithContext(ctx context.Context) MetricStreamExcludeFilterOutput { + return o +} + +// An array that defines the metrics you want to exclude for this metric namespace +func (o MetricStreamExcludeFilterOutput) MetricNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v MetricStreamExcludeFilter) []string { return v.MetricNames }).(pulumi.StringArrayOutput) +} + +// Name of the metric namespace in the filter. +func (o MetricStreamExcludeFilterOutput) Namespace() pulumi.StringOutput { + return o.ApplyT(func(v MetricStreamExcludeFilter) string { return v.Namespace }).(pulumi.StringOutput) +} + +type MetricStreamExcludeFilterArrayOutput struct{ *pulumi.OutputState } + +func (MetricStreamExcludeFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamExcludeFilter)(nil)).Elem() +} + +func (o MetricStreamExcludeFilterArrayOutput) ToMetricStreamExcludeFilterArrayOutput() MetricStreamExcludeFilterArrayOutput { + return o +} + +func (o MetricStreamExcludeFilterArrayOutput) ToMetricStreamExcludeFilterArrayOutputWithContext(ctx context.Context) MetricStreamExcludeFilterArrayOutput { + return o +} + +func (o MetricStreamExcludeFilterArrayOutput) Index(i pulumi.IntInput) MetricStreamExcludeFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MetricStreamExcludeFilter { + return vs[0].([]MetricStreamExcludeFilter)[vs[1].(int)] + }).(MetricStreamExcludeFilterOutput) +} + +type MetricStreamIncludeFilter struct { + // An array that defines the metrics you want to include for this metric namespace + MetricNames []string `pulumi:"metricNames"` + // Name of the metric namespace in the filter. + Namespace string `pulumi:"namespace"` +} + +// MetricStreamIncludeFilterInput is an input type that accepts MetricStreamIncludeFilterArgs and MetricStreamIncludeFilterOutput values. +// You can construct a concrete instance of `MetricStreamIncludeFilterInput` via: +// +// MetricStreamIncludeFilterArgs{...} +type MetricStreamIncludeFilterInput interface { + pulumi.Input + + ToMetricStreamIncludeFilterOutput() MetricStreamIncludeFilterOutput + ToMetricStreamIncludeFilterOutputWithContext(context.Context) MetricStreamIncludeFilterOutput +} + +type MetricStreamIncludeFilterArgs struct { + // An array that defines the metrics you want to include for this metric namespace + MetricNames pulumi.StringArrayInput `pulumi:"metricNames"` + // Name of the metric namespace in the filter. + Namespace pulumi.StringInput `pulumi:"namespace"` +} + +func (MetricStreamIncludeFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamIncludeFilter)(nil)).Elem() +} + +func (i MetricStreamIncludeFilterArgs) ToMetricStreamIncludeFilterOutput() MetricStreamIncludeFilterOutput { + return i.ToMetricStreamIncludeFilterOutputWithContext(context.Background()) +} + +func (i MetricStreamIncludeFilterArgs) ToMetricStreamIncludeFilterOutputWithContext(ctx context.Context) MetricStreamIncludeFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamIncludeFilterOutput) +} + +// MetricStreamIncludeFilterArrayInput is an input type that accepts MetricStreamIncludeFilterArray and MetricStreamIncludeFilterArrayOutput values. +// You can construct a concrete instance of `MetricStreamIncludeFilterArrayInput` via: +// +// MetricStreamIncludeFilterArray{ MetricStreamIncludeFilterArgs{...} } +type MetricStreamIncludeFilterArrayInput interface { + pulumi.Input + + ToMetricStreamIncludeFilterArrayOutput() MetricStreamIncludeFilterArrayOutput + ToMetricStreamIncludeFilterArrayOutputWithContext(context.Context) MetricStreamIncludeFilterArrayOutput +} + +type MetricStreamIncludeFilterArray []MetricStreamIncludeFilterInput + +func (MetricStreamIncludeFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamIncludeFilter)(nil)).Elem() +} + +func (i MetricStreamIncludeFilterArray) ToMetricStreamIncludeFilterArrayOutput() MetricStreamIncludeFilterArrayOutput { + return i.ToMetricStreamIncludeFilterArrayOutputWithContext(context.Background()) +} + +func (i MetricStreamIncludeFilterArray) ToMetricStreamIncludeFilterArrayOutputWithContext(ctx context.Context) MetricStreamIncludeFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamIncludeFilterArrayOutput) +} + +type MetricStreamIncludeFilterOutput struct{ *pulumi.OutputState } + +func (MetricStreamIncludeFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamIncludeFilter)(nil)).Elem() +} + +func (o MetricStreamIncludeFilterOutput) ToMetricStreamIncludeFilterOutput() MetricStreamIncludeFilterOutput { + return o +} + +func (o MetricStreamIncludeFilterOutput) ToMetricStreamIncludeFilterOutputWithContext(ctx context.Context) MetricStreamIncludeFilterOutput { + return o +} + +// An array that defines the metrics you want to include for this metric namespace +func (o MetricStreamIncludeFilterOutput) MetricNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v MetricStreamIncludeFilter) []string { return v.MetricNames }).(pulumi.StringArrayOutput) +} + +// Name of the metric namespace in the filter. +func (o MetricStreamIncludeFilterOutput) Namespace() pulumi.StringOutput { + return o.ApplyT(func(v MetricStreamIncludeFilter) string { return v.Namespace }).(pulumi.StringOutput) +} + +type MetricStreamIncludeFilterArrayOutput struct{ *pulumi.OutputState } + +func (MetricStreamIncludeFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamIncludeFilter)(nil)).Elem() +} + +func (o MetricStreamIncludeFilterArrayOutput) ToMetricStreamIncludeFilterArrayOutput() MetricStreamIncludeFilterArrayOutput { + return o +} + +func (o MetricStreamIncludeFilterArrayOutput) ToMetricStreamIncludeFilterArrayOutputWithContext(ctx context.Context) MetricStreamIncludeFilterArrayOutput { + return o +} + +func (o MetricStreamIncludeFilterArrayOutput) Index(i pulumi.IntInput) MetricStreamIncludeFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MetricStreamIncludeFilter { + return vs[0].([]MetricStreamIncludeFilter)[vs[1].(int)] + }).(MetricStreamIncludeFilterOutput) +} + +type MetricStreamStatisticsConfiguration struct { + // The additional statistics to stream for the metrics listed in `includeMetrics`. + AdditionalStatistics []string `pulumi:"additionalStatistics"` + // An array that defines the metrics that are to have additional statistics streamed. See details below. + IncludeMetrics []MetricStreamStatisticsConfigurationIncludeMetric `pulumi:"includeMetrics"` +} + +// MetricStreamStatisticsConfigurationInput is an input type that accepts MetricStreamStatisticsConfigurationArgs and MetricStreamStatisticsConfigurationOutput values. +// You can construct a concrete instance of `MetricStreamStatisticsConfigurationInput` via: +// +// MetricStreamStatisticsConfigurationArgs{...} +type MetricStreamStatisticsConfigurationInput interface { + pulumi.Input + + ToMetricStreamStatisticsConfigurationOutput() MetricStreamStatisticsConfigurationOutput + ToMetricStreamStatisticsConfigurationOutputWithContext(context.Context) MetricStreamStatisticsConfigurationOutput +} + +type MetricStreamStatisticsConfigurationArgs struct { + // The additional statistics to stream for the metrics listed in `includeMetrics`. + AdditionalStatistics pulumi.StringArrayInput `pulumi:"additionalStatistics"` + // An array that defines the metrics that are to have additional statistics streamed. See details below. + IncludeMetrics MetricStreamStatisticsConfigurationIncludeMetricArrayInput `pulumi:"includeMetrics"` +} + +func (MetricStreamStatisticsConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamStatisticsConfiguration)(nil)).Elem() +} + +func (i MetricStreamStatisticsConfigurationArgs) ToMetricStreamStatisticsConfigurationOutput() MetricStreamStatisticsConfigurationOutput { + return i.ToMetricStreamStatisticsConfigurationOutputWithContext(context.Background()) +} + +func (i MetricStreamStatisticsConfigurationArgs) ToMetricStreamStatisticsConfigurationOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamStatisticsConfigurationOutput) +} + +// MetricStreamStatisticsConfigurationArrayInput is an input type that accepts MetricStreamStatisticsConfigurationArray and MetricStreamStatisticsConfigurationArrayOutput values. +// You can construct a concrete instance of `MetricStreamStatisticsConfigurationArrayInput` via: +// +// MetricStreamStatisticsConfigurationArray{ MetricStreamStatisticsConfigurationArgs{...} } +type MetricStreamStatisticsConfigurationArrayInput interface { + pulumi.Input + + ToMetricStreamStatisticsConfigurationArrayOutput() MetricStreamStatisticsConfigurationArrayOutput + ToMetricStreamStatisticsConfigurationArrayOutputWithContext(context.Context) MetricStreamStatisticsConfigurationArrayOutput +} + +type MetricStreamStatisticsConfigurationArray []MetricStreamStatisticsConfigurationInput + +func (MetricStreamStatisticsConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamStatisticsConfiguration)(nil)).Elem() +} + +func (i MetricStreamStatisticsConfigurationArray) ToMetricStreamStatisticsConfigurationArrayOutput() MetricStreamStatisticsConfigurationArrayOutput { + return i.ToMetricStreamStatisticsConfigurationArrayOutputWithContext(context.Background()) +} + +func (i MetricStreamStatisticsConfigurationArray) ToMetricStreamStatisticsConfigurationArrayOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamStatisticsConfigurationArrayOutput) +} + +type MetricStreamStatisticsConfigurationOutput struct{ *pulumi.OutputState } + +func (MetricStreamStatisticsConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamStatisticsConfiguration)(nil)).Elem() +} + +func (o MetricStreamStatisticsConfigurationOutput) ToMetricStreamStatisticsConfigurationOutput() MetricStreamStatisticsConfigurationOutput { + return o +} + +func (o MetricStreamStatisticsConfigurationOutput) ToMetricStreamStatisticsConfigurationOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationOutput { + return o +} + +// The additional statistics to stream for the metrics listed in `includeMetrics`. +func (o MetricStreamStatisticsConfigurationOutput) AdditionalStatistics() pulumi.StringArrayOutput { + return o.ApplyT(func(v MetricStreamStatisticsConfiguration) []string { return v.AdditionalStatistics }).(pulumi.StringArrayOutput) +} + +// An array that defines the metrics that are to have additional statistics streamed. See details below. +func (o MetricStreamStatisticsConfigurationOutput) IncludeMetrics() MetricStreamStatisticsConfigurationIncludeMetricArrayOutput { + return o.ApplyT(func(v MetricStreamStatisticsConfiguration) []MetricStreamStatisticsConfigurationIncludeMetric { + return v.IncludeMetrics + }).(MetricStreamStatisticsConfigurationIncludeMetricArrayOutput) +} + +type MetricStreamStatisticsConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (MetricStreamStatisticsConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamStatisticsConfiguration)(nil)).Elem() +} + +func (o MetricStreamStatisticsConfigurationArrayOutput) ToMetricStreamStatisticsConfigurationArrayOutput() MetricStreamStatisticsConfigurationArrayOutput { + return o +} + +func (o MetricStreamStatisticsConfigurationArrayOutput) ToMetricStreamStatisticsConfigurationArrayOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationArrayOutput { + return o +} + +func (o MetricStreamStatisticsConfigurationArrayOutput) Index(i pulumi.IntInput) MetricStreamStatisticsConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MetricStreamStatisticsConfiguration { + return vs[0].([]MetricStreamStatisticsConfiguration)[vs[1].(int)] + }).(MetricStreamStatisticsConfigurationOutput) +} + +type MetricStreamStatisticsConfigurationIncludeMetric struct { + // The name of the metric. + MetricName string `pulumi:"metricName"` + Namespace string `pulumi:"namespace"` +} + +// MetricStreamStatisticsConfigurationIncludeMetricInput is an input type that accepts MetricStreamStatisticsConfigurationIncludeMetricArgs and MetricStreamStatisticsConfigurationIncludeMetricOutput values. +// You can construct a concrete instance of `MetricStreamStatisticsConfigurationIncludeMetricInput` via: +// +// MetricStreamStatisticsConfigurationIncludeMetricArgs{...} +type MetricStreamStatisticsConfigurationIncludeMetricInput interface { + pulumi.Input + + ToMetricStreamStatisticsConfigurationIncludeMetricOutput() MetricStreamStatisticsConfigurationIncludeMetricOutput + ToMetricStreamStatisticsConfigurationIncludeMetricOutputWithContext(context.Context) MetricStreamStatisticsConfigurationIncludeMetricOutput +} + +type MetricStreamStatisticsConfigurationIncludeMetricArgs struct { + // The name of the metric. + MetricName pulumi.StringInput `pulumi:"metricName"` + Namespace pulumi.StringInput `pulumi:"namespace"` +} + +func (MetricStreamStatisticsConfigurationIncludeMetricArgs) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamStatisticsConfigurationIncludeMetric)(nil)).Elem() +} + +func (i MetricStreamStatisticsConfigurationIncludeMetricArgs) ToMetricStreamStatisticsConfigurationIncludeMetricOutput() MetricStreamStatisticsConfigurationIncludeMetricOutput { + return i.ToMetricStreamStatisticsConfigurationIncludeMetricOutputWithContext(context.Background()) +} + +func (i MetricStreamStatisticsConfigurationIncludeMetricArgs) ToMetricStreamStatisticsConfigurationIncludeMetricOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationIncludeMetricOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamStatisticsConfigurationIncludeMetricOutput) +} + +// MetricStreamStatisticsConfigurationIncludeMetricArrayInput is an input type that accepts MetricStreamStatisticsConfigurationIncludeMetricArray and MetricStreamStatisticsConfigurationIncludeMetricArrayOutput values. +// You can construct a concrete instance of `MetricStreamStatisticsConfigurationIncludeMetricArrayInput` via: +// +// MetricStreamStatisticsConfigurationIncludeMetricArray{ MetricStreamStatisticsConfigurationIncludeMetricArgs{...} } +type MetricStreamStatisticsConfigurationIncludeMetricArrayInput interface { + pulumi.Input + + ToMetricStreamStatisticsConfigurationIncludeMetricArrayOutput() MetricStreamStatisticsConfigurationIncludeMetricArrayOutput + ToMetricStreamStatisticsConfigurationIncludeMetricArrayOutputWithContext(context.Context) MetricStreamStatisticsConfigurationIncludeMetricArrayOutput +} + +type MetricStreamStatisticsConfigurationIncludeMetricArray []MetricStreamStatisticsConfigurationIncludeMetricInput + +func (MetricStreamStatisticsConfigurationIncludeMetricArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamStatisticsConfigurationIncludeMetric)(nil)).Elem() +} + +func (i MetricStreamStatisticsConfigurationIncludeMetricArray) ToMetricStreamStatisticsConfigurationIncludeMetricArrayOutput() MetricStreamStatisticsConfigurationIncludeMetricArrayOutput { + return i.ToMetricStreamStatisticsConfigurationIncludeMetricArrayOutputWithContext(context.Background()) +} + +func (i MetricStreamStatisticsConfigurationIncludeMetricArray) ToMetricStreamStatisticsConfigurationIncludeMetricArrayOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationIncludeMetricArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(MetricStreamStatisticsConfigurationIncludeMetricArrayOutput) +} + +type MetricStreamStatisticsConfigurationIncludeMetricOutput struct{ *pulumi.OutputState } + +func (MetricStreamStatisticsConfigurationIncludeMetricOutput) ElementType() reflect.Type { + return reflect.TypeOf((*MetricStreamStatisticsConfigurationIncludeMetric)(nil)).Elem() +} + +func (o MetricStreamStatisticsConfigurationIncludeMetricOutput) ToMetricStreamStatisticsConfigurationIncludeMetricOutput() MetricStreamStatisticsConfigurationIncludeMetricOutput { + return o +} + +func (o MetricStreamStatisticsConfigurationIncludeMetricOutput) ToMetricStreamStatisticsConfigurationIncludeMetricOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationIncludeMetricOutput { + return o +} + +// The name of the metric. +func (o MetricStreamStatisticsConfigurationIncludeMetricOutput) MetricName() pulumi.StringOutput { + return o.ApplyT(func(v MetricStreamStatisticsConfigurationIncludeMetric) string { return v.MetricName }).(pulumi.StringOutput) +} + +func (o MetricStreamStatisticsConfigurationIncludeMetricOutput) Namespace() pulumi.StringOutput { + return o.ApplyT(func(v MetricStreamStatisticsConfigurationIncludeMetric) string { return v.Namespace }).(pulumi.StringOutput) +} + +type MetricStreamStatisticsConfigurationIncludeMetricArrayOutput struct{ *pulumi.OutputState } + +func (MetricStreamStatisticsConfigurationIncludeMetricArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]MetricStreamStatisticsConfigurationIncludeMetric)(nil)).Elem() +} + +func (o MetricStreamStatisticsConfigurationIncludeMetricArrayOutput) ToMetricStreamStatisticsConfigurationIncludeMetricArrayOutput() MetricStreamStatisticsConfigurationIncludeMetricArrayOutput { + return o +} + +func (o MetricStreamStatisticsConfigurationIncludeMetricArrayOutput) ToMetricStreamStatisticsConfigurationIncludeMetricArrayOutputWithContext(ctx context.Context) MetricStreamStatisticsConfigurationIncludeMetricArrayOutput { + return o +} + +func (o MetricStreamStatisticsConfigurationIncludeMetricArrayOutput) Index(i pulumi.IntInput) MetricStreamStatisticsConfigurationIncludeMetricOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) MetricStreamStatisticsConfigurationIncludeMetric { + return vs[0].([]MetricStreamStatisticsConfigurationIncludeMetric)[vs[1].(int)] + }).(MetricStreamStatisticsConfigurationIncludeMetricOutput) +} + +type GetLogDataProtectionPolicyDocumentStatement struct { + // Set of at least 1 sensitive data identifiers that you want to mask. Read more in [Types of data that you can protect](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/protect-sensitive-log-data-types.html). + DataIdentifiers []string `pulumi:"dataIdentifiers"` + // Configures the data protection operation applied by this statement. + Operation GetLogDataProtectionPolicyDocumentStatementOperation `pulumi:"operation"` + // Name of this statement. + Sid *string `pulumi:"sid"` +} + +// GetLogDataProtectionPolicyDocumentStatementInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementArgs and GetLogDataProtectionPolicyDocumentStatementOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementArgs{...} +type GetLogDataProtectionPolicyDocumentStatementInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOutput() GetLogDataProtectionPolicyDocumentStatementOutput + ToGetLogDataProtectionPolicyDocumentStatementOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOutput +} + +type GetLogDataProtectionPolicyDocumentStatementArgs struct { + // Set of at least 1 sensitive data identifiers that you want to mask. Read more in [Types of data that you can protect](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/protect-sensitive-log-data-types.html). + DataIdentifiers pulumi.StringArrayInput `pulumi:"dataIdentifiers"` + // Configures the data protection operation applied by this statement. + Operation GetLogDataProtectionPolicyDocumentStatementOperationInput `pulumi:"operation"` + // Name of this statement. + Sid pulumi.StringPtrInput `pulumi:"sid"` +} + +func (GetLogDataProtectionPolicyDocumentStatementArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatement)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementArgs) ToGetLogDataProtectionPolicyDocumentStatementOutput() GetLogDataProtectionPolicyDocumentStatementOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementArgs) ToGetLogDataProtectionPolicyDocumentStatementOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOutput) +} + +// GetLogDataProtectionPolicyDocumentStatementArrayInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementArray and GetLogDataProtectionPolicyDocumentStatementArrayOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementArrayInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementArray{ GetLogDataProtectionPolicyDocumentStatementArgs{...} } +type GetLogDataProtectionPolicyDocumentStatementArrayInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementArrayOutput() GetLogDataProtectionPolicyDocumentStatementArrayOutput + ToGetLogDataProtectionPolicyDocumentStatementArrayOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementArrayOutput +} + +type GetLogDataProtectionPolicyDocumentStatementArray []GetLogDataProtectionPolicyDocumentStatementInput + +func (GetLogDataProtectionPolicyDocumentStatementArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLogDataProtectionPolicyDocumentStatement)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementArray) ToGetLogDataProtectionPolicyDocumentStatementArrayOutput() GetLogDataProtectionPolicyDocumentStatementArrayOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementArrayOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementArray) ToGetLogDataProtectionPolicyDocumentStatementArrayOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementArrayOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatement)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOutput) ToGetLogDataProtectionPolicyDocumentStatementOutput() GetLogDataProtectionPolicyDocumentStatementOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOutput) ToGetLogDataProtectionPolicyDocumentStatementOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOutput { + return o +} + +// Set of at least 1 sensitive data identifiers that you want to mask. Read more in [Types of data that you can protect](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/protect-sensitive-log-data-types.html). +func (o GetLogDataProtectionPolicyDocumentStatementOutput) DataIdentifiers() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatement) []string { return v.DataIdentifiers }).(pulumi.StringArrayOutput) +} + +// Configures the data protection operation applied by this statement. +func (o GetLogDataProtectionPolicyDocumentStatementOutput) Operation() GetLogDataProtectionPolicyDocumentStatementOperationOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatement) GetLogDataProtectionPolicyDocumentStatementOperation { + return v.Operation + }).(GetLogDataProtectionPolicyDocumentStatementOperationOutput) +} + +// Name of this statement. +func (o GetLogDataProtectionPolicyDocumentStatementOutput) Sid() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatement) *string { return v.Sid }).(pulumi.StringPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementArrayOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetLogDataProtectionPolicyDocumentStatement)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementArrayOutput) ToGetLogDataProtectionPolicyDocumentStatementArrayOutput() GetLogDataProtectionPolicyDocumentStatementArrayOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementArrayOutput) ToGetLogDataProtectionPolicyDocumentStatementArrayOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementArrayOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementArrayOutput) Index(i pulumi.IntInput) GetLogDataProtectionPolicyDocumentStatementOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetLogDataProtectionPolicyDocumentStatement { + return vs[0].([]GetLogDataProtectionPolicyDocumentStatement)[vs[1].(int)] + }).(GetLogDataProtectionPolicyDocumentStatementOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperation struct { + // Configures the detection of sensitive data. + Audit *GetLogDataProtectionPolicyDocumentStatementOperationAudit `pulumi:"audit"` + // Configures the masking of sensitive data. + // + // > Every policy statement must specify exactly one operation. + Deidentify *GetLogDataProtectionPolicyDocumentStatementOperationDeidentify `pulumi:"deidentify"` +} + +// GetLogDataProtectionPolicyDocumentStatementOperationInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationArgs and GetLogDataProtectionPolicyDocumentStatementOperationOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationArgs{...} +type GetLogDataProtectionPolicyDocumentStatementOperationInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationOutput() GetLogDataProtectionPolicyDocumentStatementOperationOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationOutput +} + +type GetLogDataProtectionPolicyDocumentStatementOperationArgs struct { + // Configures the detection of sensitive data. + Audit GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrInput `pulumi:"audit"` + // Configures the masking of sensitive data. + // + // > Every policy statement must specify exactly one operation. + Deidentify GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrInput `pulumi:"deidentify"` +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperation)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationOutput() GetLogDataProtectionPolicyDocumentStatementOperationOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperation)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationOutput() GetLogDataProtectionPolicyDocumentStatementOperationOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationOutput { + return o +} + +// Configures the detection of sensitive data. +func (o GetLogDataProtectionPolicyDocumentStatementOperationOutput) Audit() GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperation) *GetLogDataProtectionPolicyDocumentStatementOperationAudit { + return v.Audit + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) +} + +// Configures the masking of sensitive data. +// +// > Every policy statement must specify exactly one operation. +func (o GetLogDataProtectionPolicyDocumentStatementOperationOutput) Deidentify() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperation) *GetLogDataProtectionPolicyDocumentStatementOperationDeidentify { + return v.Deidentify + }).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAudit struct { + // Configures destinations to send audit findings to. + FindingsDestination GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination `pulumi:"findingsDestination"` +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs and GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs{...} +type GetLogDataProtectionPolicyDocumentStatementOperationAuditInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs struct { + // Configures destinations to send audit findings to. + FindingsDestination GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationInput `pulumi:"findingsDestination"` +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAudit)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput).ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(ctx) +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs, GetLogDataProtectionPolicyDocumentStatementOperationAuditPtr and GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs{...} +// +// or: +// +// nil +type GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput +} + +type getLogDataProtectionPolicyDocumentStatementOperationAuditPtrType GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs + +func GetLogDataProtectionPolicyDocumentStatementOperationAuditPtr(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs) GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrInput { + return (*getLogDataProtectionPolicyDocumentStatementOperationAuditPtrType)(v) +} + +func (*getLogDataProtectionPolicyDocumentStatementOperationAuditPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAudit)(nil)).Elem() +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(context.Background()) +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAudit)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return o.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(context.Background()) +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetLogDataProtectionPolicyDocumentStatementOperationAudit) *GetLogDataProtectionPolicyDocumentStatementOperationAudit { + return &v + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) +} + +// Configures destinations to send audit findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) FindingsDestination() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationAudit) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination { + return v.FindingsDestination + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAudit)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) Elem() GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAudit) GetLogDataProtectionPolicyDocumentStatementOperationAudit { + if v != nil { + return *v + } + var ret GetLogDataProtectionPolicyDocumentStatementOperationAudit + return ret + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput) +} + +// Configures destinations to send audit findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput) FindingsDestination() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAudit) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination { + if v == nil { + return nil + } + return &v.FindingsDestination + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination struct { + // Configures CloudWatch Logs as a findings destination. + CloudwatchLogs *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs `pulumi:"cloudwatchLogs"` + // Configures Kinesis Firehose as a findings destination. + Firehose *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose `pulumi:"firehose"` + // Configures S3 as a findings destination. + S3 *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3 `pulumi:"s3"` +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs{...} +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs struct { + // Configures CloudWatch Logs as a findings destination. + CloudwatchLogs GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrInput `pulumi:"cloudwatchLogs"` + // Configures Kinesis Firehose as a findings destination. + Firehose GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrInput `pulumi:"firehose"` + // Configures S3 as a findings destination. + S3 GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrInput `pulumi:"s3"` +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput).ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(ctx) +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs, GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtr and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs{...} +// +// or: +// +// nil +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput +} + +type getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrType GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs + +func GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtr(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrInput { + return (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrType)(v) +} + +func (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination)(nil)).Elem() +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(context.Background()) +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return o.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(context.Background()) +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination { + return &v + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) +} + +// Configures CloudWatch Logs as a findings destination. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) CloudwatchLogs() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs { + return v.CloudwatchLogs + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) +} + +// Configures Kinesis Firehose as a findings destination. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) Firehose() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose { + return v.Firehose + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) +} + +// Configures S3 as a findings destination. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) S3() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3 { + return v.S3 + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) Elem() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination { + if v != nil { + return *v + } + var ret GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination + return ret + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput) +} + +// Configures CloudWatch Logs as a findings destination. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) CloudwatchLogs() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs { + if v == nil { + return nil + } + return v.CloudwatchLogs + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) +} + +// Configures Kinesis Firehose as a findings destination. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) Firehose() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose { + if v == nil { + return nil + } + return v.Firehose + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) +} + +// Configures S3 as a findings destination. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput) S3() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestination) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3 { + if v == nil { + return nil + } + return v.S3 + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs struct { + // Name of the CloudWatch Log Group to send findings to. + LogGroup string `pulumi:"logGroup"` +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs{...} +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs struct { + // Name of the CloudWatch Log Group to send findings to. + LogGroup pulumi.StringInput `pulumi:"logGroup"` +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput).ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(ctx) +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs, GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtr and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs{...} +// +// or: +// +// nil +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput +} + +type getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrType GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs + +func GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtr(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrInput { + return (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrType)(v) +} + +func (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs)(nil)).Elem() +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(context.Background()) +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return o.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(context.Background()) +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs { + return &v + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) +} + +// Name of the CloudWatch Log Group to send findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) LogGroup() pulumi.StringOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs) string { + return v.LogGroup + }).(pulumi.StringOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) Elem() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs { + if v != nil { + return *v + } + var ret GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs + return ret + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput) +} + +// Name of the CloudWatch Log Group to send findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput) LogGroup() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogs) *string { + if v == nil { + return nil + } + return &v.LogGroup + }).(pulumi.StringPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose struct { + // Name of the Kinesis Firehose Delivery Stream to send findings to. + DeliveryStream string `pulumi:"deliveryStream"` +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs{...} +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs struct { + // Name of the Kinesis Firehose Delivery Stream to send findings to. + DeliveryStream pulumi.StringInput `pulumi:"deliveryStream"` +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput).ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(ctx) +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs, GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtr and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs{...} +// +// or: +// +// nil +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput +} + +type getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrType GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs + +func GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtr(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrInput { + return (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrType)(v) +} + +func (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose)(nil)).Elem() +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(context.Background()) +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return o.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(context.Background()) +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose { + return &v + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) +} + +// Name of the Kinesis Firehose Delivery Stream to send findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) DeliveryStream() pulumi.StringOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose) string { + return v.DeliveryStream + }).(pulumi.StringOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) Elem() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose { + if v != nil { + return *v + } + var ret GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose + return ret + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput) +} + +// Name of the Kinesis Firehose Delivery Stream to send findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput) DeliveryStream() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehose) *string { + if v == nil { + return nil + } + return &v.DeliveryStream + }).(pulumi.StringPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3 struct { + // Name of the S3 Bucket to send findings to. + Bucket string `pulumi:"bucket"` +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Input is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Input` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args{...} +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Input interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3OutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args struct { + // Name of the S3 Bucket to send findings to. + Bucket pulumi.StringInput `pulumi:"bucket"` +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3OutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3OutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output).ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(ctx) +} + +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args, GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Ptr and GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args{...} +// +// or: +// +// nil +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput +} + +type getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrType GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args + +func GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Ptr(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrInput { + return (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrType)(v) +} + +func (*getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3)(nil)).Elem() +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(context.Background()) +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3OutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return o.ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(context.Background()) +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3) *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3 { + return &v + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) +} + +// Name of the S3 Bucket to send findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3) string { + return v.Bucket + }).(pulumi.StringOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) Elem() GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3) GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3 { + if v != nil { + return *v + } + var ret GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3 + return ret + }).(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output) +} + +// Name of the S3 Bucket to send findings to. +func (o GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput) Bucket() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3) *string { + if v == nil { + return nil + } + return &v.Bucket + }).(pulumi.StringPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentify struct { + // An empty object that configures masking. + MaskConfig GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig `pulumi:"maskConfig"` +} + +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs and GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs{...} +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs struct { + // An empty object that configures masking. + MaskConfig GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigInput `pulumi:"maskConfig"` +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentify)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput).ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(ctx) +} + +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs, GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtr and GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs{...} +// +// or: +// +// nil +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput +} + +type getLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrType GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs + +func GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtr(v *GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrInput { + return (*getLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrType)(v) +} + +func (*getLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationDeidentify)(nil)).Elem() +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(context.Background()) +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentify)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return o.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(context.Background()) +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetLogDataProtectionPolicyDocumentStatementOperationDeidentify) *GetLogDataProtectionPolicyDocumentStatementOperationDeidentify { + return &v + }).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) +} + +// An empty object that configures masking. +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) MaskConfig() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput { + return o.ApplyT(func(v GetLogDataProtectionPolicyDocumentStatementOperationDeidentify) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig { + return v.MaskConfig + }).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationDeidentify)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) Elem() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationDeidentify) GetLogDataProtectionPolicyDocumentStatementOperationDeidentify { + if v != nil { + return *v + } + var ret GetLogDataProtectionPolicyDocumentStatementOperationDeidentify + return ret + }).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput) +} + +// An empty object that configures masking. +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput) MaskConfig() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationDeidentify) *GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig { + if v == nil { + return nil + } + return &v.MaskConfig + }).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig struct { +} + +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs and GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs{...} +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs struct { +} + +func (GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig)(nil)).Elem() +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(context.Background()) +} + +func (i GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput).ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(ctx) +} + +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrInput is an input type that accepts GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs, GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtr and GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput values. +// You can construct a concrete instance of `GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrInput` via: +// +// GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs{...} +// +// or: +// +// nil +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrInput interface { + pulumi.Input + + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput + ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput +} + +type getLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrType GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs + +func GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtr(v *GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrInput { + return (*getLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrType)(v) +} + +func (*getLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig)(nil)).Elem() +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return i.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(context.Background()) +} + +func (i *getLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrType) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return o.ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(context.Background()) +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig) *GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig { + return &v + }).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput) +} + +type GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput struct{ *pulumi.OutputState } + +func (GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig)(nil)).Elem() +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput) ToGetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutputWithContext(ctx context.Context) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput { + return o +} + +func (o GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput) Elem() GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput { + return o.ApplyT(func(v *GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig) GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig { + if v != nil { + return *v + } + var ret GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfig + return ret + }).(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CompositeAlarmActionsSuppressorInput)(nil)).Elem(), CompositeAlarmActionsSuppressorArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CompositeAlarmActionsSuppressorPtrInput)(nil)).Elem(), CompositeAlarmActionsSuppressorArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInput)(nil)).Elem(), EventConnectionAuthParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersPtrInput)(nil)).Elem(), EventConnectionAuthParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersApiKeyInput)(nil)).Elem(), EventConnectionAuthParametersApiKeyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersApiKeyPtrInput)(nil)).Elem(), EventConnectionAuthParametersApiKeyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersBasicInput)(nil)).Elem(), EventConnectionAuthParametersBasicArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersBasicPtrInput)(nil)).Elem(), EventConnectionAuthParametersBasicArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersPtrInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersBodyInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersBodyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersBodyArrayInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersBodyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersHeaderInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersHeaderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersHeaderArrayInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersHeaderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersQueryStringInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersQueryStringArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayInput)(nil)).Elem(), EventConnectionAuthParametersInvocationHttpParametersQueryStringArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthInput)(nil)).Elem(), EventConnectionAuthParametersOauthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthPtrInput)(nil)).Elem(), EventConnectionAuthParametersOauthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthClientParametersInput)(nil)).Elem(), EventConnectionAuthParametersOauthClientParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthClientParametersPtrInput)(nil)).Elem(), EventConnectionAuthParametersOauthClientParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersPtrInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersBodyInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersBodyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersBodyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersHeaderInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersHeaderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersHeaderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersQueryStringInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayInput)(nil)).Elem(), EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointEventBusInput)(nil)).Elem(), EventEndpointEventBusArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointEventBusArrayInput)(nil)).Elem(), EventEndpointEventBusArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointReplicationConfigInput)(nil)).Elem(), EventEndpointReplicationConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointReplicationConfigPtrInput)(nil)).Elem(), EventEndpointReplicationConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigInput)(nil)).Elem(), EventEndpointRoutingConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigPtrInput)(nil)).Elem(), EventEndpointRoutingConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigInput)(nil)).Elem(), EventEndpointRoutingConfigFailoverConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigPtrInput)(nil)).Elem(), EventEndpointRoutingConfigFailoverConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigPrimaryInput)(nil)).Elem(), EventEndpointRoutingConfigFailoverConfigPrimaryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigPrimaryPtrInput)(nil)).Elem(), EventEndpointRoutingConfigFailoverConfigPrimaryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigSecondaryInput)(nil)).Elem(), EventEndpointRoutingConfigFailoverConfigSecondaryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventEndpointRoutingConfigFailoverConfigSecondaryPtrInput)(nil)).Elem(), EventEndpointRoutingConfigFailoverConfigSecondaryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventPermissionConditionInput)(nil)).Elem(), EventPermissionConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventPermissionConditionPtrInput)(nil)).Elem(), EventPermissionConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetAppsyncTargetInput)(nil)).Elem(), EventTargetAppsyncTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetAppsyncTargetPtrInput)(nil)).Elem(), EventTargetAppsyncTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetBatchTargetInput)(nil)).Elem(), EventTargetBatchTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetBatchTargetPtrInput)(nil)).Elem(), EventTargetBatchTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetDeadLetterConfigInput)(nil)).Elem(), EventTargetDeadLetterConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetDeadLetterConfigPtrInput)(nil)).Elem(), EventTargetDeadLetterConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetInput)(nil)).Elem(), EventTargetEcsTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetPtrInput)(nil)).Elem(), EventTargetEcsTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetCapacityProviderStrategyInput)(nil)).Elem(), EventTargetEcsTargetCapacityProviderStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetCapacityProviderStrategyArrayInput)(nil)).Elem(), EventTargetEcsTargetCapacityProviderStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetNetworkConfigurationInput)(nil)).Elem(), EventTargetEcsTargetNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetNetworkConfigurationPtrInput)(nil)).Elem(), EventTargetEcsTargetNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetOrderedPlacementStrategyInput)(nil)).Elem(), EventTargetEcsTargetOrderedPlacementStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetOrderedPlacementStrategyArrayInput)(nil)).Elem(), EventTargetEcsTargetOrderedPlacementStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetPlacementConstraintInput)(nil)).Elem(), EventTargetEcsTargetPlacementConstraintArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetEcsTargetPlacementConstraintArrayInput)(nil)).Elem(), EventTargetEcsTargetPlacementConstraintArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetHttpTargetInput)(nil)).Elem(), EventTargetHttpTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetHttpTargetPtrInput)(nil)).Elem(), EventTargetHttpTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetInputTransformerInput)(nil)).Elem(), EventTargetInputTransformerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetInputTransformerPtrInput)(nil)).Elem(), EventTargetInputTransformerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetKinesisTargetInput)(nil)).Elem(), EventTargetKinesisTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetKinesisTargetPtrInput)(nil)).Elem(), EventTargetKinesisTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetRedshiftTargetInput)(nil)).Elem(), EventTargetRedshiftTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetRedshiftTargetPtrInput)(nil)).Elem(), EventTargetRedshiftTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetRetryPolicyInput)(nil)).Elem(), EventTargetRetryPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetRetryPolicyPtrInput)(nil)).Elem(), EventTargetRetryPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetRunCommandTargetInput)(nil)).Elem(), EventTargetRunCommandTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetRunCommandTargetArrayInput)(nil)).Elem(), EventTargetRunCommandTargetArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetSagemakerPipelineTargetInput)(nil)).Elem(), EventTargetSagemakerPipelineTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetSagemakerPipelineTargetPtrInput)(nil)).Elem(), EventTargetSagemakerPipelineTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetSagemakerPipelineTargetPipelineParameterListInput)(nil)).Elem(), EventTargetSagemakerPipelineTargetPipelineParameterListArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetSagemakerPipelineTargetPipelineParameterListArrayInput)(nil)).Elem(), EventTargetSagemakerPipelineTargetPipelineParameterListArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetSqsTargetInput)(nil)).Elem(), EventTargetSqsTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EventTargetSqsTargetPtrInput)(nil)).Elem(), EventTargetSqsTargetArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorHealthEventsConfigInput)(nil)).Elem(), InternetMonitorHealthEventsConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorHealthEventsConfigPtrInput)(nil)).Elem(), InternetMonitorHealthEventsConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDeliveryInput)(nil)).Elem(), InternetMonitorInternetMeasurementsLogDeliveryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDeliveryPtrInput)(nil)).Elem(), InternetMonitorInternetMeasurementsLogDeliveryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDeliveryS3ConfigInput)(nil)).Elem(), InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrInput)(nil)).Elem(), InternetMonitorInternetMeasurementsLogDeliveryS3ConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterMetricTransformationInput)(nil)).Elem(), LogMetricFilterMetricTransformationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogMetricFilterMetricTransformationPtrInput)(nil)).Elem(), LogMetricFilterMetricTransformationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricAlarmMetricQueryInput)(nil)).Elem(), MetricAlarmMetricQueryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricAlarmMetricQueryArrayInput)(nil)).Elem(), MetricAlarmMetricQueryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricAlarmMetricQueryMetricInput)(nil)).Elem(), MetricAlarmMetricQueryMetricArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricAlarmMetricQueryMetricPtrInput)(nil)).Elem(), MetricAlarmMetricQueryMetricArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamExcludeFilterInput)(nil)).Elem(), MetricStreamExcludeFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamExcludeFilterArrayInput)(nil)).Elem(), MetricStreamExcludeFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamIncludeFilterInput)(nil)).Elem(), MetricStreamIncludeFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamIncludeFilterArrayInput)(nil)).Elem(), MetricStreamIncludeFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamStatisticsConfigurationInput)(nil)).Elem(), MetricStreamStatisticsConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamStatisticsConfigurationArrayInput)(nil)).Elem(), MetricStreamStatisticsConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamStatisticsConfigurationIncludeMetricInput)(nil)).Elem(), MetricStreamStatisticsConfigurationIncludeMetricArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*MetricStreamStatisticsConfigurationIncludeMetricArrayInput)(nil)).Elem(), MetricStreamStatisticsConfigurationIncludeMetricArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementArrayInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Input)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Args{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrInput)(nil)).Elem(), GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigArgs{}) + pulumi.RegisterOutputType(CompositeAlarmActionsSuppressorOutput{}) + pulumi.RegisterOutputType(CompositeAlarmActionsSuppressorPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersApiKeyOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersApiKeyPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersBasicOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersBasicPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersBodyOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersBodyArrayOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersHeaderOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersHeaderArrayOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersQueryStringOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersInvocationHttpParametersQueryStringArrayOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthClientParametersOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthClientParametersPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersPtrOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersBodyOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersBodyArrayOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersHeaderOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersHeaderArrayOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersQueryStringOutput{}) + pulumi.RegisterOutputType(EventConnectionAuthParametersOauthOauthHttpParametersQueryStringArrayOutput{}) + pulumi.RegisterOutputType(EventEndpointEventBusOutput{}) + pulumi.RegisterOutputType(EventEndpointEventBusArrayOutput{}) + pulumi.RegisterOutputType(EventEndpointReplicationConfigOutput{}) + pulumi.RegisterOutputType(EventEndpointReplicationConfigPtrOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigPtrOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigFailoverConfigOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigFailoverConfigPtrOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigFailoverConfigPrimaryOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigFailoverConfigPrimaryPtrOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigFailoverConfigSecondaryOutput{}) + pulumi.RegisterOutputType(EventEndpointRoutingConfigFailoverConfigSecondaryPtrOutput{}) + pulumi.RegisterOutputType(EventPermissionConditionOutput{}) + pulumi.RegisterOutputType(EventPermissionConditionPtrOutput{}) + pulumi.RegisterOutputType(EventTargetAppsyncTargetOutput{}) + pulumi.RegisterOutputType(EventTargetAppsyncTargetPtrOutput{}) + pulumi.RegisterOutputType(EventTargetBatchTargetOutput{}) + pulumi.RegisterOutputType(EventTargetBatchTargetPtrOutput{}) + pulumi.RegisterOutputType(EventTargetDeadLetterConfigOutput{}) + pulumi.RegisterOutputType(EventTargetDeadLetterConfigPtrOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetPtrOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetCapacityProviderStrategyOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetCapacityProviderStrategyArrayOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetNetworkConfigurationOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetNetworkConfigurationPtrOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetOrderedPlacementStrategyOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetOrderedPlacementStrategyArrayOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetPlacementConstraintOutput{}) + pulumi.RegisterOutputType(EventTargetEcsTargetPlacementConstraintArrayOutput{}) + pulumi.RegisterOutputType(EventTargetHttpTargetOutput{}) + pulumi.RegisterOutputType(EventTargetHttpTargetPtrOutput{}) + pulumi.RegisterOutputType(EventTargetInputTransformerOutput{}) + pulumi.RegisterOutputType(EventTargetInputTransformerPtrOutput{}) + pulumi.RegisterOutputType(EventTargetKinesisTargetOutput{}) + pulumi.RegisterOutputType(EventTargetKinesisTargetPtrOutput{}) + pulumi.RegisterOutputType(EventTargetRedshiftTargetOutput{}) + pulumi.RegisterOutputType(EventTargetRedshiftTargetPtrOutput{}) + pulumi.RegisterOutputType(EventTargetRetryPolicyOutput{}) + pulumi.RegisterOutputType(EventTargetRetryPolicyPtrOutput{}) + pulumi.RegisterOutputType(EventTargetRunCommandTargetOutput{}) + pulumi.RegisterOutputType(EventTargetRunCommandTargetArrayOutput{}) + pulumi.RegisterOutputType(EventTargetSagemakerPipelineTargetOutput{}) + pulumi.RegisterOutputType(EventTargetSagemakerPipelineTargetPtrOutput{}) + pulumi.RegisterOutputType(EventTargetSagemakerPipelineTargetPipelineParameterListOutput{}) + pulumi.RegisterOutputType(EventTargetSagemakerPipelineTargetPipelineParameterListArrayOutput{}) + pulumi.RegisterOutputType(EventTargetSqsTargetOutput{}) + pulumi.RegisterOutputType(EventTargetSqsTargetPtrOutput{}) + pulumi.RegisterOutputType(InternetMonitorHealthEventsConfigOutput{}) + pulumi.RegisterOutputType(InternetMonitorHealthEventsConfigPtrOutput{}) + pulumi.RegisterOutputType(InternetMonitorInternetMeasurementsLogDeliveryOutput{}) + pulumi.RegisterOutputType(InternetMonitorInternetMeasurementsLogDeliveryPtrOutput{}) + pulumi.RegisterOutputType(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigOutput{}) + pulumi.RegisterOutputType(InternetMonitorInternetMeasurementsLogDeliveryS3ConfigPtrOutput{}) + pulumi.RegisterOutputType(LogMetricFilterMetricTransformationOutput{}) + pulumi.RegisterOutputType(LogMetricFilterMetricTransformationPtrOutput{}) + pulumi.RegisterOutputType(MetricAlarmMetricQueryOutput{}) + pulumi.RegisterOutputType(MetricAlarmMetricQueryArrayOutput{}) + pulumi.RegisterOutputType(MetricAlarmMetricQueryMetricOutput{}) + pulumi.RegisterOutputType(MetricAlarmMetricQueryMetricPtrOutput{}) + pulumi.RegisterOutputType(MetricStreamExcludeFilterOutput{}) + pulumi.RegisterOutputType(MetricStreamExcludeFilterArrayOutput{}) + pulumi.RegisterOutputType(MetricStreamIncludeFilterOutput{}) + pulumi.RegisterOutputType(MetricStreamIncludeFilterArrayOutput{}) + pulumi.RegisterOutputType(MetricStreamStatisticsConfigurationOutput{}) + pulumi.RegisterOutputType(MetricStreamStatisticsConfigurationArrayOutput{}) + pulumi.RegisterOutputType(MetricStreamStatisticsConfigurationIncludeMetricOutput{}) + pulumi.RegisterOutputType(MetricStreamStatisticsConfigurationIncludeMetricArrayOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementArrayOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditPtrOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationPtrOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationCloudwatchLogsPtrOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehoseOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationFirehosePtrOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3Output{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationAuditFindingsDestinationS3PtrOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyPtrOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigOutput{}) + pulumi.RegisterOutputType(GetLogDataProtectionPolicyDocumentStatementOperationDeidentifyMaskConfigPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/queryDefinition.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/queryDefinition.go new file mode 100644 index 000000000..37b2d5f4b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch/queryDefinition.go @@ -0,0 +1,299 @@ +// 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 cloudwatch + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a CloudWatch Logs query definition resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := cloudwatch.NewQueryDefinition(ctx, "example", &cloudwatch.QueryDefinitionArgs{ +// Name: pulumi.String("custom_query"), +// LogGroupNames: pulumi.StringArray{ +// pulumi.String("/aws/logGroup1"), +// pulumi.String("/aws/logGroup2"), +// }, +// QueryString: pulumi.String("fields @timestamp, @message\n| sort @timestamp desc\n| limit 25\n"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import CloudWatch query definitions using the query definition ARN. The ARN can be found on the "Edit Query" page for the query in the AWS Console. For example: +// +// ```sh +// $ pulumi import aws:cloudwatch/queryDefinition:QueryDefinition example arn:aws:logs:us-west-2:123456789012:query-definition:269951d7-6f75-496d-9d7b-6b7a5486bdbd +// ``` +type QueryDefinition struct { + pulumi.CustomResourceState + + // Specific log groups to use with the query. + LogGroupNames pulumi.StringArrayOutput `pulumi:"logGroupNames"` + // The name of the query. + Name pulumi.StringOutput `pulumi:"name"` + // The query definition ID. + QueryDefinitionId pulumi.StringOutput `pulumi:"queryDefinitionId"` + // The query to save. You can read more about CloudWatch Logs Query Syntax in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). + QueryString pulumi.StringOutput `pulumi:"queryString"` +} + +// NewQueryDefinition registers a new resource with the given unique name, arguments, and options. +func NewQueryDefinition(ctx *pulumi.Context, + name string, args *QueryDefinitionArgs, opts ...pulumi.ResourceOption) (*QueryDefinition, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.QueryString == nil { + return nil, errors.New("invalid value for required argument 'QueryString'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource QueryDefinition + err := ctx.RegisterResource("aws:cloudwatch/queryDefinition:QueryDefinition", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetQueryDefinition gets an existing QueryDefinition 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 GetQueryDefinition(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *QueryDefinitionState, opts ...pulumi.ResourceOption) (*QueryDefinition, error) { + var resource QueryDefinition + err := ctx.ReadResource("aws:cloudwatch/queryDefinition:QueryDefinition", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering QueryDefinition resources. +type queryDefinitionState struct { + // Specific log groups to use with the query. + LogGroupNames []string `pulumi:"logGroupNames"` + // The name of the query. + Name *string `pulumi:"name"` + // The query definition ID. + QueryDefinitionId *string `pulumi:"queryDefinitionId"` + // The query to save. You can read more about CloudWatch Logs Query Syntax in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). + QueryString *string `pulumi:"queryString"` +} + +type QueryDefinitionState struct { + // Specific log groups to use with the query. + LogGroupNames pulumi.StringArrayInput + // The name of the query. + Name pulumi.StringPtrInput + // The query definition ID. + QueryDefinitionId pulumi.StringPtrInput + // The query to save. You can read more about CloudWatch Logs Query Syntax in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). + QueryString pulumi.StringPtrInput +} + +func (QueryDefinitionState) ElementType() reflect.Type { + return reflect.TypeOf((*queryDefinitionState)(nil)).Elem() +} + +type queryDefinitionArgs struct { + // Specific log groups to use with the query. + LogGroupNames []string `pulumi:"logGroupNames"` + // The name of the query. + Name *string `pulumi:"name"` + // The query to save. You can read more about CloudWatch Logs Query Syntax in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). + QueryString string `pulumi:"queryString"` +} + +// The set of arguments for constructing a QueryDefinition resource. +type QueryDefinitionArgs struct { + // Specific log groups to use with the query. + LogGroupNames pulumi.StringArrayInput + // The name of the query. + Name pulumi.StringPtrInput + // The query to save. You can read more about CloudWatch Logs Query Syntax in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). + QueryString pulumi.StringInput +} + +func (QueryDefinitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*queryDefinitionArgs)(nil)).Elem() +} + +type QueryDefinitionInput interface { + pulumi.Input + + ToQueryDefinitionOutput() QueryDefinitionOutput + ToQueryDefinitionOutputWithContext(ctx context.Context) QueryDefinitionOutput +} + +func (*QueryDefinition) ElementType() reflect.Type { + return reflect.TypeOf((**QueryDefinition)(nil)).Elem() +} + +func (i *QueryDefinition) ToQueryDefinitionOutput() QueryDefinitionOutput { + return i.ToQueryDefinitionOutputWithContext(context.Background()) +} + +func (i *QueryDefinition) ToQueryDefinitionOutputWithContext(ctx context.Context) QueryDefinitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(QueryDefinitionOutput) +} + +// QueryDefinitionArrayInput is an input type that accepts QueryDefinitionArray and QueryDefinitionArrayOutput values. +// You can construct a concrete instance of `QueryDefinitionArrayInput` via: +// +// QueryDefinitionArray{ QueryDefinitionArgs{...} } +type QueryDefinitionArrayInput interface { + pulumi.Input + + ToQueryDefinitionArrayOutput() QueryDefinitionArrayOutput + ToQueryDefinitionArrayOutputWithContext(context.Context) QueryDefinitionArrayOutput +} + +type QueryDefinitionArray []QueryDefinitionInput + +func (QueryDefinitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*QueryDefinition)(nil)).Elem() +} + +func (i QueryDefinitionArray) ToQueryDefinitionArrayOutput() QueryDefinitionArrayOutput { + return i.ToQueryDefinitionArrayOutputWithContext(context.Background()) +} + +func (i QueryDefinitionArray) ToQueryDefinitionArrayOutputWithContext(ctx context.Context) QueryDefinitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(QueryDefinitionArrayOutput) +} + +// QueryDefinitionMapInput is an input type that accepts QueryDefinitionMap and QueryDefinitionMapOutput values. +// You can construct a concrete instance of `QueryDefinitionMapInput` via: +// +// QueryDefinitionMap{ "key": QueryDefinitionArgs{...} } +type QueryDefinitionMapInput interface { + pulumi.Input + + ToQueryDefinitionMapOutput() QueryDefinitionMapOutput + ToQueryDefinitionMapOutputWithContext(context.Context) QueryDefinitionMapOutput +} + +type QueryDefinitionMap map[string]QueryDefinitionInput + +func (QueryDefinitionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*QueryDefinition)(nil)).Elem() +} + +func (i QueryDefinitionMap) ToQueryDefinitionMapOutput() QueryDefinitionMapOutput { + return i.ToQueryDefinitionMapOutputWithContext(context.Background()) +} + +func (i QueryDefinitionMap) ToQueryDefinitionMapOutputWithContext(ctx context.Context) QueryDefinitionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(QueryDefinitionMapOutput) +} + +type QueryDefinitionOutput struct{ *pulumi.OutputState } + +func (QueryDefinitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**QueryDefinition)(nil)).Elem() +} + +func (o QueryDefinitionOutput) ToQueryDefinitionOutput() QueryDefinitionOutput { + return o +} + +func (o QueryDefinitionOutput) ToQueryDefinitionOutputWithContext(ctx context.Context) QueryDefinitionOutput { + return o +} + +// Specific log groups to use with the query. +func (o QueryDefinitionOutput) LogGroupNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v *QueryDefinition) pulumi.StringArrayOutput { return v.LogGroupNames }).(pulumi.StringArrayOutput) +} + +// The name of the query. +func (o QueryDefinitionOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *QueryDefinition) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The query definition ID. +func (o QueryDefinitionOutput) QueryDefinitionId() pulumi.StringOutput { + return o.ApplyT(func(v *QueryDefinition) pulumi.StringOutput { return v.QueryDefinitionId }).(pulumi.StringOutput) +} + +// The query to save. You can read more about CloudWatch Logs Query Syntax in the [documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html). +func (o QueryDefinitionOutput) QueryString() pulumi.StringOutput { + return o.ApplyT(func(v *QueryDefinition) pulumi.StringOutput { return v.QueryString }).(pulumi.StringOutput) +} + +type QueryDefinitionArrayOutput struct{ *pulumi.OutputState } + +func (QueryDefinitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*QueryDefinition)(nil)).Elem() +} + +func (o QueryDefinitionArrayOutput) ToQueryDefinitionArrayOutput() QueryDefinitionArrayOutput { + return o +} + +func (o QueryDefinitionArrayOutput) ToQueryDefinitionArrayOutputWithContext(ctx context.Context) QueryDefinitionArrayOutput { + return o +} + +func (o QueryDefinitionArrayOutput) Index(i pulumi.IntInput) QueryDefinitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *QueryDefinition { + return vs[0].([]*QueryDefinition)[vs[1].(int)] + }).(QueryDefinitionOutput) +} + +type QueryDefinitionMapOutput struct{ *pulumi.OutputState } + +func (QueryDefinitionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*QueryDefinition)(nil)).Elem() +} + +func (o QueryDefinitionMapOutput) ToQueryDefinitionMapOutput() QueryDefinitionMapOutput { + return o +} + +func (o QueryDefinitionMapOutput) ToQueryDefinitionMapOutputWithContext(ctx context.Context) QueryDefinitionMapOutput { + return o +} + +func (o QueryDefinitionMapOutput) MapIndex(k pulumi.StringInput) QueryDefinitionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *QueryDefinition { + return vs[0].(map[string]*QueryDefinition)[vs[1].(string)] + }).(QueryDefinitionOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*QueryDefinitionInput)(nil)).Elem(), &QueryDefinition{}) + pulumi.RegisterInputType(reflect.TypeOf((*QueryDefinitionArrayInput)(nil)).Elem(), QueryDefinitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*QueryDefinitionMapInput)(nil)).Elem(), QueryDefinitionMap{}) + pulumi.RegisterOutputType(QueryDefinitionOutput{}) + pulumi.RegisterOutputType(QueryDefinitionArrayOutput{}) + pulumi.RegisterOutputType(QueryDefinitionMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/accountSettingDefault.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/accountSettingDefault.go new file mode 100644 index 000000000..ff4e04883 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/accountSettingDefault.go @@ -0,0 +1,280 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an ECS default account setting for a specific ECS Resource name within a specific region. More information can be found on the [ECS Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html). +// +// > **NOTE:** The AWS API does not delete this resource. When you run `destroy`, the provider will attempt to disable the setting. +// +// > **NOTE:** Your AWS account may not support disabling `containerInstanceLongArnFormat`, `serviceLongArnFormat`, and `taskLongArnFormat`. If your account does not support disabling these, "destroying" this resource will not disable the setting nor cause a provider error. However, the AWS Provider will log an AWS error: `InvalidParameterException: You can no longer disable Long Arn settings`. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewAccountSettingDefault(ctx, "test", &ecs.AccountSettingDefaultArgs{ +// Name: pulumi.String("taskLongArnFormat"), +// Value: pulumi.String("enabled"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import ECS Account Setting defaults using the `name`. For example: +// +// ```sh +// $ pulumi import aws:ecs/accountSettingDefault:AccountSettingDefault example taskLongArnFormat +// ``` +type AccountSettingDefault struct { + pulumi.CustomResourceState + + // Name of the account setting to set. + Name pulumi.StringOutput `pulumi:"name"` + PrincipalArn pulumi.StringOutput `pulumi:"principalArn"` + // State of the setting. + Value pulumi.StringOutput `pulumi:"value"` +} + +// NewAccountSettingDefault registers a new resource with the given unique name, arguments, and options. +func NewAccountSettingDefault(ctx *pulumi.Context, + name string, args *AccountSettingDefaultArgs, opts ...pulumi.ResourceOption) (*AccountSettingDefault, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Value == nil { + return nil, errors.New("invalid value for required argument 'Value'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource AccountSettingDefault + err := ctx.RegisterResource("aws:ecs/accountSettingDefault:AccountSettingDefault", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAccountSettingDefault gets an existing AccountSettingDefault 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 GetAccountSettingDefault(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AccountSettingDefaultState, opts ...pulumi.ResourceOption) (*AccountSettingDefault, error) { + var resource AccountSettingDefault + err := ctx.ReadResource("aws:ecs/accountSettingDefault:AccountSettingDefault", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AccountSettingDefault resources. +type accountSettingDefaultState struct { + // Name of the account setting to set. + Name *string `pulumi:"name"` + PrincipalArn *string `pulumi:"principalArn"` + // State of the setting. + Value *string `pulumi:"value"` +} + +type AccountSettingDefaultState struct { + // Name of the account setting to set. + Name pulumi.StringPtrInput + PrincipalArn pulumi.StringPtrInput + // State of the setting. + Value pulumi.StringPtrInput +} + +func (AccountSettingDefaultState) ElementType() reflect.Type { + return reflect.TypeOf((*accountSettingDefaultState)(nil)).Elem() +} + +type accountSettingDefaultArgs struct { + // Name of the account setting to set. + Name *string `pulumi:"name"` + // State of the setting. + Value string `pulumi:"value"` +} + +// The set of arguments for constructing a AccountSettingDefault resource. +type AccountSettingDefaultArgs struct { + // Name of the account setting to set. + Name pulumi.StringPtrInput + // State of the setting. + Value pulumi.StringInput +} + +func (AccountSettingDefaultArgs) ElementType() reflect.Type { + return reflect.TypeOf((*accountSettingDefaultArgs)(nil)).Elem() +} + +type AccountSettingDefaultInput interface { + pulumi.Input + + ToAccountSettingDefaultOutput() AccountSettingDefaultOutput + ToAccountSettingDefaultOutputWithContext(ctx context.Context) AccountSettingDefaultOutput +} + +func (*AccountSettingDefault) ElementType() reflect.Type { + return reflect.TypeOf((**AccountSettingDefault)(nil)).Elem() +} + +func (i *AccountSettingDefault) ToAccountSettingDefaultOutput() AccountSettingDefaultOutput { + return i.ToAccountSettingDefaultOutputWithContext(context.Background()) +} + +func (i *AccountSettingDefault) ToAccountSettingDefaultOutputWithContext(ctx context.Context) AccountSettingDefaultOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountSettingDefaultOutput) +} + +// AccountSettingDefaultArrayInput is an input type that accepts AccountSettingDefaultArray and AccountSettingDefaultArrayOutput values. +// You can construct a concrete instance of `AccountSettingDefaultArrayInput` via: +// +// AccountSettingDefaultArray{ AccountSettingDefaultArgs{...} } +type AccountSettingDefaultArrayInput interface { + pulumi.Input + + ToAccountSettingDefaultArrayOutput() AccountSettingDefaultArrayOutput + ToAccountSettingDefaultArrayOutputWithContext(context.Context) AccountSettingDefaultArrayOutput +} + +type AccountSettingDefaultArray []AccountSettingDefaultInput + +func (AccountSettingDefaultArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountSettingDefault)(nil)).Elem() +} + +func (i AccountSettingDefaultArray) ToAccountSettingDefaultArrayOutput() AccountSettingDefaultArrayOutput { + return i.ToAccountSettingDefaultArrayOutputWithContext(context.Background()) +} + +func (i AccountSettingDefaultArray) ToAccountSettingDefaultArrayOutputWithContext(ctx context.Context) AccountSettingDefaultArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountSettingDefaultArrayOutput) +} + +// AccountSettingDefaultMapInput is an input type that accepts AccountSettingDefaultMap and AccountSettingDefaultMapOutput values. +// You can construct a concrete instance of `AccountSettingDefaultMapInput` via: +// +// AccountSettingDefaultMap{ "key": AccountSettingDefaultArgs{...} } +type AccountSettingDefaultMapInput interface { + pulumi.Input + + ToAccountSettingDefaultMapOutput() AccountSettingDefaultMapOutput + ToAccountSettingDefaultMapOutputWithContext(context.Context) AccountSettingDefaultMapOutput +} + +type AccountSettingDefaultMap map[string]AccountSettingDefaultInput + +func (AccountSettingDefaultMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountSettingDefault)(nil)).Elem() +} + +func (i AccountSettingDefaultMap) ToAccountSettingDefaultMapOutput() AccountSettingDefaultMapOutput { + return i.ToAccountSettingDefaultMapOutputWithContext(context.Background()) +} + +func (i AccountSettingDefaultMap) ToAccountSettingDefaultMapOutputWithContext(ctx context.Context) AccountSettingDefaultMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountSettingDefaultMapOutput) +} + +type AccountSettingDefaultOutput struct{ *pulumi.OutputState } + +func (AccountSettingDefaultOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccountSettingDefault)(nil)).Elem() +} + +func (o AccountSettingDefaultOutput) ToAccountSettingDefaultOutput() AccountSettingDefaultOutput { + return o +} + +func (o AccountSettingDefaultOutput) ToAccountSettingDefaultOutputWithContext(ctx context.Context) AccountSettingDefaultOutput { + return o +} + +// Name of the account setting to set. +func (o AccountSettingDefaultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *AccountSettingDefault) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +func (o AccountSettingDefaultOutput) PrincipalArn() pulumi.StringOutput { + return o.ApplyT(func(v *AccountSettingDefault) pulumi.StringOutput { return v.PrincipalArn }).(pulumi.StringOutput) +} + +// State of the setting. +func (o AccountSettingDefaultOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v *AccountSettingDefault) pulumi.StringOutput { return v.Value }).(pulumi.StringOutput) +} + +type AccountSettingDefaultArrayOutput struct{ *pulumi.OutputState } + +func (AccountSettingDefaultArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountSettingDefault)(nil)).Elem() +} + +func (o AccountSettingDefaultArrayOutput) ToAccountSettingDefaultArrayOutput() AccountSettingDefaultArrayOutput { + return o +} + +func (o AccountSettingDefaultArrayOutput) ToAccountSettingDefaultArrayOutputWithContext(ctx context.Context) AccountSettingDefaultArrayOutput { + return o +} + +func (o AccountSettingDefaultArrayOutput) Index(i pulumi.IntInput) AccountSettingDefaultOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AccountSettingDefault { + return vs[0].([]*AccountSettingDefault)[vs[1].(int)] + }).(AccountSettingDefaultOutput) +} + +type AccountSettingDefaultMapOutput struct{ *pulumi.OutputState } + +func (AccountSettingDefaultMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountSettingDefault)(nil)).Elem() +} + +func (o AccountSettingDefaultMapOutput) ToAccountSettingDefaultMapOutput() AccountSettingDefaultMapOutput { + return o +} + +func (o AccountSettingDefaultMapOutput) ToAccountSettingDefaultMapOutputWithContext(ctx context.Context) AccountSettingDefaultMapOutput { + return o +} + +func (o AccountSettingDefaultMapOutput) MapIndex(k pulumi.StringInput) AccountSettingDefaultOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AccountSettingDefault { + return vs[0].(map[string]*AccountSettingDefault)[vs[1].(string)] + }).(AccountSettingDefaultOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AccountSettingDefaultInput)(nil)).Elem(), &AccountSettingDefault{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountSettingDefaultArrayInput)(nil)).Elem(), AccountSettingDefaultArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountSettingDefaultMapInput)(nil)).Elem(), AccountSettingDefaultMap{}) + pulumi.RegisterOutputType(AccountSettingDefaultOutput{}) + pulumi.RegisterOutputType(AccountSettingDefaultArrayOutput{}) + pulumi.RegisterOutputType(AccountSettingDefaultMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/capacityProvider.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/capacityProvider.go new file mode 100644 index 000000000..91973ff5e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/capacityProvider.go @@ -0,0 +1,340 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an ECS cluster capacity provider. More information can be found on the [ECS Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-capacity-providers.html). +// +// > **NOTE:** Associating an ECS Capacity Provider to an Auto Scaling Group will automatically add the `AmazonECSManaged` tag to the Auto Scaling Group. This tag should be included in the `autoscaling.Group` resource configuration to prevent the provider from removing it in subsequent executions as well as ensuring the `AmazonECSManaged` tag is propagated to all EC2 Instances in the Auto Scaling Group if `minSize` is above 0 on creation. Any EC2 Instances in the Auto Scaling Group without this tag must be manually be updated, otherwise they may cause unexpected scaling behavior and metrics. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// test, err := autoscaling.NewGroup(ctx, "test", &autoscaling.GroupArgs{ +// Tags: autoscaling.GroupTagArray{ +// &autoscaling.GroupTagArgs{ +// Key: pulumi.String("AmazonECSManaged"), +// Value: pulumi.String("true"), +// PropagateAtLaunch: pulumi.Bool(true), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = ecs.NewCapacityProvider(ctx, "test", &ecs.CapacityProviderArgs{ +// Name: pulumi.String("test"), +// AutoScalingGroupProvider: &ecs.CapacityProviderAutoScalingGroupProviderArgs{ +// AutoScalingGroupArn: test.Arn, +// ManagedTerminationProtection: pulumi.String("ENABLED"), +// ManagedScaling: &ecs.CapacityProviderAutoScalingGroupProviderManagedScalingArgs{ +// MaximumScalingStepSize: pulumi.Int(1000), +// MinimumScalingStepSize: pulumi.Int(1), +// Status: pulumi.String("ENABLED"), +// TargetCapacity: pulumi.Int(10), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import ECS Capacity Providers using the `name`. For example: +// +// ```sh +// $ pulumi import aws:ecs/capacityProvider:CapacityProvider example example +// ``` +type CapacityProvider struct { + pulumi.CustomResourceState + + // ARN that identifies the capacity provider. + Arn pulumi.StringOutput `pulumi:"arn"` + // Configuration block for the provider for the ECS auto scaling group. Detailed below. + AutoScalingGroupProvider CapacityProviderAutoScalingGroupProviderOutput `pulumi:"autoScalingGroupProvider"` + // Name of the capacity provider. + Name pulumi.StringOutput `pulumi:"name"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewCapacityProvider registers a new resource with the given unique name, arguments, and options. +func NewCapacityProvider(ctx *pulumi.Context, + name string, args *CapacityProviderArgs, opts ...pulumi.ResourceOption) (*CapacityProvider, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AutoScalingGroupProvider == nil { + return nil, errors.New("invalid value for required argument 'AutoScalingGroupProvider'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource CapacityProvider + err := ctx.RegisterResource("aws:ecs/capacityProvider:CapacityProvider", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetCapacityProvider gets an existing CapacityProvider 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 GetCapacityProvider(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *CapacityProviderState, opts ...pulumi.ResourceOption) (*CapacityProvider, error) { + var resource CapacityProvider + err := ctx.ReadResource("aws:ecs/capacityProvider:CapacityProvider", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering CapacityProvider resources. +type capacityProviderState struct { + // ARN that identifies the capacity provider. + Arn *string `pulumi:"arn"` + // Configuration block for the provider for the ECS auto scaling group. Detailed below. + AutoScalingGroupProvider *CapacityProviderAutoScalingGroupProvider `pulumi:"autoScalingGroupProvider"` + // Name of the capacity provider. + Name *string `pulumi:"name"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type CapacityProviderState struct { + // ARN that identifies the capacity provider. + Arn pulumi.StringPtrInput + // Configuration block for the provider for the ECS auto scaling group. Detailed below. + AutoScalingGroupProvider CapacityProviderAutoScalingGroupProviderPtrInput + // Name of the capacity provider. + Name pulumi.StringPtrInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (CapacityProviderState) ElementType() reflect.Type { + return reflect.TypeOf((*capacityProviderState)(nil)).Elem() +} + +type capacityProviderArgs struct { + // Configuration block for the provider for the ECS auto scaling group. Detailed below. + AutoScalingGroupProvider CapacityProviderAutoScalingGroupProvider `pulumi:"autoScalingGroupProvider"` + // Name of the capacity provider. + Name *string `pulumi:"name"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a CapacityProvider resource. +type CapacityProviderArgs struct { + // Configuration block for the provider for the ECS auto scaling group. Detailed below. + AutoScalingGroupProvider CapacityProviderAutoScalingGroupProviderInput + // Name of the capacity provider. + Name pulumi.StringPtrInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (CapacityProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*capacityProviderArgs)(nil)).Elem() +} + +type CapacityProviderInput interface { + pulumi.Input + + ToCapacityProviderOutput() CapacityProviderOutput + ToCapacityProviderOutputWithContext(ctx context.Context) CapacityProviderOutput +} + +func (*CapacityProvider) ElementType() reflect.Type { + return reflect.TypeOf((**CapacityProvider)(nil)).Elem() +} + +func (i *CapacityProvider) ToCapacityProviderOutput() CapacityProviderOutput { + return i.ToCapacityProviderOutputWithContext(context.Background()) +} + +func (i *CapacityProvider) ToCapacityProviderOutputWithContext(ctx context.Context) CapacityProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderOutput) +} + +// CapacityProviderArrayInput is an input type that accepts CapacityProviderArray and CapacityProviderArrayOutput values. +// You can construct a concrete instance of `CapacityProviderArrayInput` via: +// +// CapacityProviderArray{ CapacityProviderArgs{...} } +type CapacityProviderArrayInput interface { + pulumi.Input + + ToCapacityProviderArrayOutput() CapacityProviderArrayOutput + ToCapacityProviderArrayOutputWithContext(context.Context) CapacityProviderArrayOutput +} + +type CapacityProviderArray []CapacityProviderInput + +func (CapacityProviderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CapacityProvider)(nil)).Elem() +} + +func (i CapacityProviderArray) ToCapacityProviderArrayOutput() CapacityProviderArrayOutput { + return i.ToCapacityProviderArrayOutputWithContext(context.Background()) +} + +func (i CapacityProviderArray) ToCapacityProviderArrayOutputWithContext(ctx context.Context) CapacityProviderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderArrayOutput) +} + +// CapacityProviderMapInput is an input type that accepts CapacityProviderMap and CapacityProviderMapOutput values. +// You can construct a concrete instance of `CapacityProviderMapInput` via: +// +// CapacityProviderMap{ "key": CapacityProviderArgs{...} } +type CapacityProviderMapInput interface { + pulumi.Input + + ToCapacityProviderMapOutput() CapacityProviderMapOutput + ToCapacityProviderMapOutputWithContext(context.Context) CapacityProviderMapOutput +} + +type CapacityProviderMap map[string]CapacityProviderInput + +func (CapacityProviderMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CapacityProvider)(nil)).Elem() +} + +func (i CapacityProviderMap) ToCapacityProviderMapOutput() CapacityProviderMapOutput { + return i.ToCapacityProviderMapOutputWithContext(context.Background()) +} + +func (i CapacityProviderMap) ToCapacityProviderMapOutputWithContext(ctx context.Context) CapacityProviderMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderMapOutput) +} + +type CapacityProviderOutput struct{ *pulumi.OutputState } + +func (CapacityProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CapacityProvider)(nil)).Elem() +} + +func (o CapacityProviderOutput) ToCapacityProviderOutput() CapacityProviderOutput { + return o +} + +func (o CapacityProviderOutput) ToCapacityProviderOutputWithContext(ctx context.Context) CapacityProviderOutput { + return o +} + +// ARN that identifies the capacity provider. +func (o CapacityProviderOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *CapacityProvider) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Configuration block for the provider for the ECS auto scaling group. Detailed below. +func (o CapacityProviderOutput) AutoScalingGroupProvider() CapacityProviderAutoScalingGroupProviderOutput { + return o.ApplyT(func(v *CapacityProvider) CapacityProviderAutoScalingGroupProviderOutput { + return v.AutoScalingGroupProvider + }).(CapacityProviderAutoScalingGroupProviderOutput) +} + +// Name of the capacity provider. +func (o CapacityProviderOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *CapacityProvider) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o CapacityProviderOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *CapacityProvider) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o CapacityProviderOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *CapacityProvider) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type CapacityProviderArrayOutput struct{ *pulumi.OutputState } + +func (CapacityProviderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*CapacityProvider)(nil)).Elem() +} + +func (o CapacityProviderArrayOutput) ToCapacityProviderArrayOutput() CapacityProviderArrayOutput { + return o +} + +func (o CapacityProviderArrayOutput) ToCapacityProviderArrayOutputWithContext(ctx context.Context) CapacityProviderArrayOutput { + return o +} + +func (o CapacityProviderArrayOutput) Index(i pulumi.IntInput) CapacityProviderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *CapacityProvider { + return vs[0].([]*CapacityProvider)[vs[1].(int)] + }).(CapacityProviderOutput) +} + +type CapacityProviderMapOutput struct{ *pulumi.OutputState } + +func (CapacityProviderMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*CapacityProvider)(nil)).Elem() +} + +func (o CapacityProviderMapOutput) ToCapacityProviderMapOutput() CapacityProviderMapOutput { + return o +} + +func (o CapacityProviderMapOutput) ToCapacityProviderMapOutputWithContext(ctx context.Context) CapacityProviderMapOutput { + return o +} + +func (o CapacityProviderMapOutput) MapIndex(k pulumi.StringInput) CapacityProviderOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *CapacityProvider { + return vs[0].(map[string]*CapacityProvider)[vs[1].(string)] + }).(CapacityProviderOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CapacityProviderInput)(nil)).Elem(), &CapacityProvider{}) + pulumi.RegisterInputType(reflect.TypeOf((*CapacityProviderArrayInput)(nil)).Elem(), CapacityProviderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*CapacityProviderMapInput)(nil)).Elem(), CapacityProviderMap{}) + pulumi.RegisterOutputType(CapacityProviderOutput{}) + pulumi.RegisterOutputType(CapacityProviderArrayOutput{}) + pulumi.RegisterOutputType(CapacityProviderMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/cluster.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/cluster.go new file mode 100644 index 000000000..540456dc5 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/cluster.go @@ -0,0 +1,529 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an ECS cluster. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewCluster(ctx, "foo", &ecs.ClusterArgs{ +// Name: pulumi.String("white-hart"), +// Settings: ecs.ClusterSettingArray{ +// &ecs.ClusterSettingArgs{ +// Name: pulumi.String("containerInsights"), +// Value: pulumi.String("enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Execute Command Configuration with Override Logging +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := kms.NewKey(ctx, "example", &kms.KeyArgs{ +// Description: pulumi.String("example"), +// DeletionWindowInDays: pulumi.Int(7), +// }) +// if err != nil { +// return err +// } +// exampleLogGroup, err := cloudwatch.NewLogGroup(ctx, "example", &cloudwatch.LogGroupArgs{ +// Name: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = ecs.NewCluster(ctx, "test", &ecs.ClusterArgs{ +// Name: pulumi.String("example"), +// Configuration: &ecs.ClusterConfigurationArgs{ +// ExecuteCommandConfiguration: &ecs.ClusterConfigurationExecuteCommandConfigurationArgs{ +// KmsKeyId: example.Arn, +// Logging: pulumi.String("OVERRIDE"), +// LogConfiguration: &ecs.ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs{ +// CloudWatchEncryptionEnabled: pulumi.Bool(true), +// CloudWatchLogGroupName: exampleLogGroup.Name, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Fargate Ephemeral Storage Encryption with Customer-Managed KMS Key +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := aws.GetCallerIdentity(ctx, &aws.GetCallerIdentityArgs{}, nil) +// if err != nil { +// return err +// } +// example, err := kms.NewKey(ctx, "example", &kms.KeyArgs{ +// Description: pulumi.String("example"), +// DeletionWindowInDays: pulumi.Int(7), +// }) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Id": "ECSClusterFargatePolicy", +// "Statement": []interface{}{ +// map[string]interface{}{ +// "Sid": "Enable IAM User Permissions", +// "Effect": "Allow", +// "Principal": map[string]interface{}{ +// "AWS": "*", +// }, +// "Action": "kms:*", +// "Resource": "*", +// }, +// map[string]interface{}{ +// "Sid": "Allow generate data key access for Fargate tasks.", +// "Effect": "Allow", +// "Principal": map[string]interface{}{ +// "Service": "fargate.amazonaws.com", +// }, +// "Action": []string{ +// "kms:GenerateDataKeyWithoutPlaintext", +// }, +// "Condition": map[string]interface{}{ +// "StringEquals": map[string]interface{}{ +// "kms:EncryptionContext:aws:ecs:clusterAccount": []*string{ +// current.AccountId, +// }, +// "kms:EncryptionContext:aws:ecs:clusterName": []string{ +// "example", +// }, +// }, +// }, +// "Resource": "*", +// }, +// map[string]interface{}{ +// "Sid": "Allow grant creation permission for Fargate tasks.", +// "Effect": "Allow", +// "Principal": map[string]interface{}{ +// "Service": "fargate.amazonaws.com", +// }, +// "Action": []string{ +// "kms:CreateGrant", +// }, +// "Condition": map[string]interface{}{ +// "StringEquals": map[string]interface{}{ +// "kms:EncryptionContext:aws:ecs:clusterAccount": []*string{ +// current.AccountId, +// }, +// "kms:EncryptionContext:aws:ecs:clusterName": []string{ +// "example", +// }, +// }, +// "ForAllValues:StringEquals": map[string]interface{}{ +// "kms:GrantOperations": []string{ +// "Decrypt", +// }, +// }, +// }, +// "Resource": "*", +// }, +// }, +// "Version": "2012-10-17", +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// exampleKeyPolicy, err := kms.NewKeyPolicy(ctx, "example", &kms.KeyPolicyArgs{ +// KeyId: example.ID(), +// Policy: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// _, err = ecs.NewCluster(ctx, "test", &ecs.ClusterArgs{ +// Name: pulumi.String("example"), +// Configuration: &ecs.ClusterConfigurationArgs{ +// ManagedStorageConfiguration: &ecs.ClusterConfigurationManagedStorageConfigurationArgs{ +// FargateEphemeralStorageKmsKeyId: example.ID(), +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// exampleKeyPolicy, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import ECS clusters using the cluster name. For example: +// +// ```sh +// $ pulumi import aws:ecs/cluster:Cluster stateless stateless-app +// ``` +type Cluster struct { + pulumi.CustomResourceState + + // ARN that identifies the cluster. + Arn pulumi.StringOutput `pulumi:"arn"` + // Execute command configuration for the cluster. See `configuration` Block for details. + Configuration ClusterConfigurationPtrOutput `pulumi:"configuration"` + // Name of the cluster (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringOutput `pulumi:"name"` + // Default Service Connect namespace. See `serviceConnectDefaults` Block for details. + ServiceConnectDefaults ClusterServiceConnectDefaultsPtrOutput `pulumi:"serviceConnectDefaults"` + // Configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster. See `setting` Block for details. + Settings ClusterSettingArrayOutput `pulumi:"settings"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewCluster registers a new resource with the given unique name, arguments, and options. +func NewCluster(ctx *pulumi.Context, + name string, args *ClusterArgs, opts ...pulumi.ResourceOption) (*Cluster, error) { + if args == nil { + args = &ClusterArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Cluster + err := ctx.RegisterResource("aws:ecs/cluster:Cluster", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetCluster gets an existing Cluster 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 GetCluster(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ClusterState, opts ...pulumi.ResourceOption) (*Cluster, error) { + var resource Cluster + err := ctx.ReadResource("aws:ecs/cluster:Cluster", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Cluster resources. +type clusterState struct { + // ARN that identifies the cluster. + Arn *string `pulumi:"arn"` + // Execute command configuration for the cluster. See `configuration` Block for details. + Configuration *ClusterConfiguration `pulumi:"configuration"` + // Name of the cluster (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Default Service Connect namespace. See `serviceConnectDefaults` Block for details. + ServiceConnectDefaults *ClusterServiceConnectDefaults `pulumi:"serviceConnectDefaults"` + // Configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster. See `setting` Block for details. + Settings []ClusterSetting `pulumi:"settings"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type ClusterState struct { + // ARN that identifies the cluster. + Arn pulumi.StringPtrInput + // Execute command configuration for the cluster. See `configuration` Block for details. + Configuration ClusterConfigurationPtrInput + // Name of the cluster (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Default Service Connect namespace. See `serviceConnectDefaults` Block for details. + ServiceConnectDefaults ClusterServiceConnectDefaultsPtrInput + // Configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster. See `setting` Block for details. + Settings ClusterSettingArrayInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (ClusterState) ElementType() reflect.Type { + return reflect.TypeOf((*clusterState)(nil)).Elem() +} + +type clusterArgs struct { + // Execute command configuration for the cluster. See `configuration` Block for details. + Configuration *ClusterConfiguration `pulumi:"configuration"` + // Name of the cluster (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Default Service Connect namespace. See `serviceConnectDefaults` Block for details. + ServiceConnectDefaults *ClusterServiceConnectDefaults `pulumi:"serviceConnectDefaults"` + // Configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster. See `setting` Block for details. + Settings []ClusterSetting `pulumi:"settings"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a Cluster resource. +type ClusterArgs struct { + // Execute command configuration for the cluster. See `configuration` Block for details. + Configuration ClusterConfigurationPtrInput + // Name of the cluster (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Default Service Connect namespace. See `serviceConnectDefaults` Block for details. + ServiceConnectDefaults ClusterServiceConnectDefaultsPtrInput + // Configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster. See `setting` Block for details. + Settings ClusterSettingArrayInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (ClusterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*clusterArgs)(nil)).Elem() +} + +type ClusterInput interface { + pulumi.Input + + ToClusterOutput() ClusterOutput + ToClusterOutputWithContext(ctx context.Context) ClusterOutput +} + +func (*Cluster) ElementType() reflect.Type { + return reflect.TypeOf((**Cluster)(nil)).Elem() +} + +func (i *Cluster) ToClusterOutput() ClusterOutput { + return i.ToClusterOutputWithContext(context.Background()) +} + +func (i *Cluster) ToClusterOutputWithContext(ctx context.Context) ClusterOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterOutput) +} + +// ClusterArrayInput is an input type that accepts ClusterArray and ClusterArrayOutput values. +// You can construct a concrete instance of `ClusterArrayInput` via: +// +// ClusterArray{ ClusterArgs{...} } +type ClusterArrayInput interface { + pulumi.Input + + ToClusterArrayOutput() ClusterArrayOutput + ToClusterArrayOutputWithContext(context.Context) ClusterArrayOutput +} + +type ClusterArray []ClusterInput + +func (ClusterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Cluster)(nil)).Elem() +} + +func (i ClusterArray) ToClusterArrayOutput() ClusterArrayOutput { + return i.ToClusterArrayOutputWithContext(context.Background()) +} + +func (i ClusterArray) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterArrayOutput) +} + +// ClusterMapInput is an input type that accepts ClusterMap and ClusterMapOutput values. +// You can construct a concrete instance of `ClusterMapInput` via: +// +// ClusterMap{ "key": ClusterArgs{...} } +type ClusterMapInput interface { + pulumi.Input + + ToClusterMapOutput() ClusterMapOutput + ToClusterMapOutputWithContext(context.Context) ClusterMapOutput +} + +type ClusterMap map[string]ClusterInput + +func (ClusterMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem() +} + +func (i ClusterMap) ToClusterMapOutput() ClusterMapOutput { + return i.ToClusterMapOutputWithContext(context.Background()) +} + +func (i ClusterMap) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterMapOutput) +} + +type ClusterOutput struct{ *pulumi.OutputState } + +func (ClusterOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Cluster)(nil)).Elem() +} + +func (o ClusterOutput) ToClusterOutput() ClusterOutput { + return o +} + +func (o ClusterOutput) ToClusterOutputWithContext(ctx context.Context) ClusterOutput { + return o +} + +// ARN that identifies the cluster. +func (o ClusterOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Execute command configuration for the cluster. See `configuration` Block for details. +func (o ClusterOutput) Configuration() ClusterConfigurationPtrOutput { + return o.ApplyT(func(v *Cluster) ClusterConfigurationPtrOutput { return v.Configuration }).(ClusterConfigurationPtrOutput) +} + +// Name of the cluster (up to 255 letters, numbers, hyphens, and underscores) +// +// The following arguments are optional: +func (o ClusterOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Cluster) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Default Service Connect namespace. See `serviceConnectDefaults` Block for details. +func (o ClusterOutput) ServiceConnectDefaults() ClusterServiceConnectDefaultsPtrOutput { + return o.ApplyT(func(v *Cluster) ClusterServiceConnectDefaultsPtrOutput { return v.ServiceConnectDefaults }).(ClusterServiceConnectDefaultsPtrOutput) +} + +// Configuration block(s) with cluster settings. For example, this can be used to enable CloudWatch Container Insights for a cluster. See `setting` Block for details. +func (o ClusterOutput) Settings() ClusterSettingArrayOutput { + return o.ApplyT(func(v *Cluster) ClusterSettingArrayOutput { return v.Settings }).(ClusterSettingArrayOutput) +} + +// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o ClusterOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o ClusterOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *Cluster) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type ClusterArrayOutput struct{ *pulumi.OutputState } + +func (ClusterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Cluster)(nil)).Elem() +} + +func (o ClusterArrayOutput) ToClusterArrayOutput() ClusterArrayOutput { + return o +} + +func (o ClusterArrayOutput) ToClusterArrayOutputWithContext(ctx context.Context) ClusterArrayOutput { + return o +} + +func (o ClusterArrayOutput) Index(i pulumi.IntInput) ClusterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Cluster { + return vs[0].([]*Cluster)[vs[1].(int)] + }).(ClusterOutput) +} + +type ClusterMapOutput struct{ *pulumi.OutputState } + +func (ClusterMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Cluster)(nil)).Elem() +} + +func (o ClusterMapOutput) ToClusterMapOutput() ClusterMapOutput { + return o +} + +func (o ClusterMapOutput) ToClusterMapOutputWithContext(ctx context.Context) ClusterMapOutput { + return o +} + +func (o ClusterMapOutput) MapIndex(k pulumi.StringInput) ClusterOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Cluster { + return vs[0].(map[string]*Cluster)[vs[1].(string)] + }).(ClusterOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ClusterInput)(nil)).Elem(), &Cluster{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterArrayInput)(nil)).Elem(), ClusterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterMapInput)(nil)).Elem(), ClusterMap{}) + pulumi.RegisterOutputType(ClusterOutput{}) + pulumi.RegisterOutputType(ClusterArrayOutput{}) + pulumi.RegisterOutputType(ClusterMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/clusterCapacityProviders.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/clusterCapacityProviders.go new file mode 100644 index 000000000..c661b5dba --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/clusterCapacityProviders.go @@ -0,0 +1,303 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages the capacity providers of an ECS Cluster. +// +// More information about capacity providers can be found in the [ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-capacity-providers.html). +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := ecs.NewCluster(ctx, "example", &ecs.ClusterArgs{ +// Name: pulumi.String("my-cluster"), +// }) +// if err != nil { +// return err +// } +// _, err = ecs.NewClusterCapacityProviders(ctx, "example", &ecs.ClusterCapacityProvidersArgs{ +// ClusterName: example.Name, +// CapacityProviders: pulumi.StringArray{ +// pulumi.String("FARGATE"), +// }, +// DefaultCapacityProviderStrategies: ecs.ClusterCapacityProvidersDefaultCapacityProviderStrategyArray{ +// &ecs.ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs{ +// Base: pulumi.Int(1), +// Weight: pulumi.Int(100), +// CapacityProvider: pulumi.String("FARGATE"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import ECS cluster capacity providers using the `cluster_name` attribute. For example: +// +// ```sh +// $ pulumi import aws:ecs/clusterCapacityProviders:ClusterCapacityProviders example my-cluster +// ``` +type ClusterCapacityProviders struct { + pulumi.CustomResourceState + + // Set of names of one or more capacity providers to associate with the cluster. Valid values also include `FARGATE` and `FARGATE_SPOT`. + CapacityProviders pulumi.StringArrayOutput `pulumi:"capacityProviders"` + // Name of the ECS cluster to manage capacity providers for. + ClusterName pulumi.StringOutput `pulumi:"clusterName"` + // Set of capacity provider strategies to use by default for the cluster. Detailed below. + DefaultCapacityProviderStrategies ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput `pulumi:"defaultCapacityProviderStrategies"` +} + +// NewClusterCapacityProviders registers a new resource with the given unique name, arguments, and options. +func NewClusterCapacityProviders(ctx *pulumi.Context, + name string, args *ClusterCapacityProvidersArgs, opts ...pulumi.ResourceOption) (*ClusterCapacityProviders, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ClusterName == nil { + return nil, errors.New("invalid value for required argument 'ClusterName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource ClusterCapacityProviders + err := ctx.RegisterResource("aws:ecs/clusterCapacityProviders:ClusterCapacityProviders", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetClusterCapacityProviders gets an existing ClusterCapacityProviders 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 GetClusterCapacityProviders(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ClusterCapacityProvidersState, opts ...pulumi.ResourceOption) (*ClusterCapacityProviders, error) { + var resource ClusterCapacityProviders + err := ctx.ReadResource("aws:ecs/clusterCapacityProviders:ClusterCapacityProviders", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ClusterCapacityProviders resources. +type clusterCapacityProvidersState struct { + // Set of names of one or more capacity providers to associate with the cluster. Valid values also include `FARGATE` and `FARGATE_SPOT`. + CapacityProviders []string `pulumi:"capacityProviders"` + // Name of the ECS cluster to manage capacity providers for. + ClusterName *string `pulumi:"clusterName"` + // Set of capacity provider strategies to use by default for the cluster. Detailed below. + DefaultCapacityProviderStrategies []ClusterCapacityProvidersDefaultCapacityProviderStrategy `pulumi:"defaultCapacityProviderStrategies"` +} + +type ClusterCapacityProvidersState struct { + // Set of names of one or more capacity providers to associate with the cluster. Valid values also include `FARGATE` and `FARGATE_SPOT`. + CapacityProviders pulumi.StringArrayInput + // Name of the ECS cluster to manage capacity providers for. + ClusterName pulumi.StringPtrInput + // Set of capacity provider strategies to use by default for the cluster. Detailed below. + DefaultCapacityProviderStrategies ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayInput +} + +func (ClusterCapacityProvidersState) ElementType() reflect.Type { + return reflect.TypeOf((*clusterCapacityProvidersState)(nil)).Elem() +} + +type clusterCapacityProvidersArgs struct { + // Set of names of one or more capacity providers to associate with the cluster. Valid values also include `FARGATE` and `FARGATE_SPOT`. + CapacityProviders []string `pulumi:"capacityProviders"` + // Name of the ECS cluster to manage capacity providers for. + ClusterName string `pulumi:"clusterName"` + // Set of capacity provider strategies to use by default for the cluster. Detailed below. + DefaultCapacityProviderStrategies []ClusterCapacityProvidersDefaultCapacityProviderStrategy `pulumi:"defaultCapacityProviderStrategies"` +} + +// The set of arguments for constructing a ClusterCapacityProviders resource. +type ClusterCapacityProvidersArgs struct { + // Set of names of one or more capacity providers to associate with the cluster. Valid values also include `FARGATE` and `FARGATE_SPOT`. + CapacityProviders pulumi.StringArrayInput + // Name of the ECS cluster to manage capacity providers for. + ClusterName pulumi.StringInput + // Set of capacity provider strategies to use by default for the cluster. Detailed below. + DefaultCapacityProviderStrategies ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayInput +} + +func (ClusterCapacityProvidersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*clusterCapacityProvidersArgs)(nil)).Elem() +} + +type ClusterCapacityProvidersInput interface { + pulumi.Input + + ToClusterCapacityProvidersOutput() ClusterCapacityProvidersOutput + ToClusterCapacityProvidersOutputWithContext(ctx context.Context) ClusterCapacityProvidersOutput +} + +func (*ClusterCapacityProviders) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterCapacityProviders)(nil)).Elem() +} + +func (i *ClusterCapacityProviders) ToClusterCapacityProvidersOutput() ClusterCapacityProvidersOutput { + return i.ToClusterCapacityProvidersOutputWithContext(context.Background()) +} + +func (i *ClusterCapacityProviders) ToClusterCapacityProvidersOutputWithContext(ctx context.Context) ClusterCapacityProvidersOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterCapacityProvidersOutput) +} + +// ClusterCapacityProvidersArrayInput is an input type that accepts ClusterCapacityProvidersArray and ClusterCapacityProvidersArrayOutput values. +// You can construct a concrete instance of `ClusterCapacityProvidersArrayInput` via: +// +// ClusterCapacityProvidersArray{ ClusterCapacityProvidersArgs{...} } +type ClusterCapacityProvidersArrayInput interface { + pulumi.Input + + ToClusterCapacityProvidersArrayOutput() ClusterCapacityProvidersArrayOutput + ToClusterCapacityProvidersArrayOutputWithContext(context.Context) ClusterCapacityProvidersArrayOutput +} + +type ClusterCapacityProvidersArray []ClusterCapacityProvidersInput + +func (ClusterCapacityProvidersArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ClusterCapacityProviders)(nil)).Elem() +} + +func (i ClusterCapacityProvidersArray) ToClusterCapacityProvidersArrayOutput() ClusterCapacityProvidersArrayOutput { + return i.ToClusterCapacityProvidersArrayOutputWithContext(context.Background()) +} + +func (i ClusterCapacityProvidersArray) ToClusterCapacityProvidersArrayOutputWithContext(ctx context.Context) ClusterCapacityProvidersArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterCapacityProvidersArrayOutput) +} + +// ClusterCapacityProvidersMapInput is an input type that accepts ClusterCapacityProvidersMap and ClusterCapacityProvidersMapOutput values. +// You can construct a concrete instance of `ClusterCapacityProvidersMapInput` via: +// +// ClusterCapacityProvidersMap{ "key": ClusterCapacityProvidersArgs{...} } +type ClusterCapacityProvidersMapInput interface { + pulumi.Input + + ToClusterCapacityProvidersMapOutput() ClusterCapacityProvidersMapOutput + ToClusterCapacityProvidersMapOutputWithContext(context.Context) ClusterCapacityProvidersMapOutput +} + +type ClusterCapacityProvidersMap map[string]ClusterCapacityProvidersInput + +func (ClusterCapacityProvidersMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ClusterCapacityProviders)(nil)).Elem() +} + +func (i ClusterCapacityProvidersMap) ToClusterCapacityProvidersMapOutput() ClusterCapacityProvidersMapOutput { + return i.ToClusterCapacityProvidersMapOutputWithContext(context.Background()) +} + +func (i ClusterCapacityProvidersMap) ToClusterCapacityProvidersMapOutputWithContext(ctx context.Context) ClusterCapacityProvidersMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterCapacityProvidersMapOutput) +} + +type ClusterCapacityProvidersOutput struct{ *pulumi.OutputState } + +func (ClusterCapacityProvidersOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterCapacityProviders)(nil)).Elem() +} + +func (o ClusterCapacityProvidersOutput) ToClusterCapacityProvidersOutput() ClusterCapacityProvidersOutput { + return o +} + +func (o ClusterCapacityProvidersOutput) ToClusterCapacityProvidersOutputWithContext(ctx context.Context) ClusterCapacityProvidersOutput { + return o +} + +// Set of names of one or more capacity providers to associate with the cluster. Valid values also include `FARGATE` and `FARGATE_SPOT`. +func (o ClusterCapacityProvidersOutput) CapacityProviders() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ClusterCapacityProviders) pulumi.StringArrayOutput { return v.CapacityProviders }).(pulumi.StringArrayOutput) +} + +// Name of the ECS cluster to manage capacity providers for. +func (o ClusterCapacityProvidersOutput) ClusterName() pulumi.StringOutput { + return o.ApplyT(func(v *ClusterCapacityProviders) pulumi.StringOutput { return v.ClusterName }).(pulumi.StringOutput) +} + +// Set of capacity provider strategies to use by default for the cluster. Detailed below. +func (o ClusterCapacityProvidersOutput) DefaultCapacityProviderStrategies() ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput { + return o.ApplyT(func(v *ClusterCapacityProviders) ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput { + return v.DefaultCapacityProviderStrategies + }).(ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput) +} + +type ClusterCapacityProvidersArrayOutput struct{ *pulumi.OutputState } + +func (ClusterCapacityProvidersArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ClusterCapacityProviders)(nil)).Elem() +} + +func (o ClusterCapacityProvidersArrayOutput) ToClusterCapacityProvidersArrayOutput() ClusterCapacityProvidersArrayOutput { + return o +} + +func (o ClusterCapacityProvidersArrayOutput) ToClusterCapacityProvidersArrayOutputWithContext(ctx context.Context) ClusterCapacityProvidersArrayOutput { + return o +} + +func (o ClusterCapacityProvidersArrayOutput) Index(i pulumi.IntInput) ClusterCapacityProvidersOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ClusterCapacityProviders { + return vs[0].([]*ClusterCapacityProviders)[vs[1].(int)] + }).(ClusterCapacityProvidersOutput) +} + +type ClusterCapacityProvidersMapOutput struct{ *pulumi.OutputState } + +func (ClusterCapacityProvidersMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ClusterCapacityProviders)(nil)).Elem() +} + +func (o ClusterCapacityProvidersMapOutput) ToClusterCapacityProvidersMapOutput() ClusterCapacityProvidersMapOutput { + return o +} + +func (o ClusterCapacityProvidersMapOutput) ToClusterCapacityProvidersMapOutputWithContext(ctx context.Context) ClusterCapacityProvidersMapOutput { + return o +} + +func (o ClusterCapacityProvidersMapOutput) MapIndex(k pulumi.StringInput) ClusterCapacityProvidersOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ClusterCapacityProviders { + return vs[0].(map[string]*ClusterCapacityProviders)[vs[1].(string)] + }).(ClusterCapacityProvidersOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ClusterCapacityProvidersInput)(nil)).Elem(), &ClusterCapacityProviders{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterCapacityProvidersArrayInput)(nil)).Elem(), ClusterCapacityProvidersArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterCapacityProvidersMapInput)(nil)).Elem(), ClusterCapacityProvidersMap{}) + pulumi.RegisterOutputType(ClusterCapacityProvidersOutput{}) + pulumi.RegisterOutputType(ClusterCapacityProvidersArrayOutput{}) + pulumi.RegisterOutputType(ClusterCapacityProvidersMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getCluster.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getCluster.go new file mode 100644 index 000000000..53f0b4031 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getCluster.go @@ -0,0 +1,180 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The ECS Cluster data source allows access to details of a specific +// cluster within an AWS ECS service. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.LookupCluster(ctx, &ecs.LookupClusterArgs{ +// ClusterName: "ecs-mongo-production", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupCluster(ctx *pulumi.Context, args *LookupClusterArgs, opts ...pulumi.InvokeOption) (*LookupClusterResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupClusterResult + err := ctx.Invoke("aws:ecs/getCluster:getCluster", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getCluster. +type LookupClusterArgs struct { + // Name of the ECS Cluster + ClusterName string `pulumi:"clusterName"` + // Key-value map of resource tags + Tags map[string]string `pulumi:"tags"` +} + +// A collection of values returned by getCluster. +type LookupClusterResult struct { + // ARN of the ECS Cluster + Arn string `pulumi:"arn"` + ClusterName string `pulumi:"clusterName"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Number of pending tasks for the ECS Cluster + PendingTasksCount int `pulumi:"pendingTasksCount"` + // The number of registered container instances for the ECS Cluster + RegisteredContainerInstancesCount int `pulumi:"registeredContainerInstancesCount"` + // Number of running tasks for the ECS Cluster + RunningTasksCount int `pulumi:"runningTasksCount"` + // The default Service Connect namespace + ServiceConnectDefaults []GetClusterServiceConnectDefault `pulumi:"serviceConnectDefaults"` + // Settings associated with the ECS Cluster + Settings []GetClusterSetting `pulumi:"settings"` + // Status of the ECS Cluster + Status string `pulumi:"status"` + // Key-value map of resource tags + Tags map[string]string `pulumi:"tags"` +} + +func LookupClusterOutput(ctx *pulumi.Context, args LookupClusterOutputArgs, opts ...pulumi.InvokeOption) LookupClusterResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupClusterResultOutput, error) { + args := v.(LookupClusterArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupClusterResult + secret, err := ctx.InvokePackageRaw("aws:ecs/getCluster:getCluster", args, &rv, "", opts...) + if err != nil { + return LookupClusterResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupClusterResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupClusterResultOutput), nil + } + return output, nil + }).(LookupClusterResultOutput) +} + +// A collection of arguments for invoking getCluster. +type LookupClusterOutputArgs struct { + // Name of the ECS Cluster + ClusterName pulumi.StringInput `pulumi:"clusterName"` + // Key-value map of resource tags + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (LookupClusterOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupClusterArgs)(nil)).Elem() +} + +// A collection of values returned by getCluster. +type LookupClusterResultOutput struct{ *pulumi.OutputState } + +func (LookupClusterResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupClusterResult)(nil)).Elem() +} + +func (o LookupClusterResultOutput) ToLookupClusterResultOutput() LookupClusterResultOutput { + return o +} + +func (o LookupClusterResultOutput) ToLookupClusterResultOutputWithContext(ctx context.Context) LookupClusterResultOutput { + return o +} + +// ARN of the ECS Cluster +func (o LookupClusterResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupClusterResult) string { return v.Arn }).(pulumi.StringOutput) +} + +func (o LookupClusterResultOutput) ClusterName() pulumi.StringOutput { + return o.ApplyT(func(v LookupClusterResult) string { return v.ClusterName }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupClusterResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupClusterResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Number of pending tasks for the ECS Cluster +func (o LookupClusterResultOutput) PendingTasksCount() pulumi.IntOutput { + return o.ApplyT(func(v LookupClusterResult) int { return v.PendingTasksCount }).(pulumi.IntOutput) +} + +// The number of registered container instances for the ECS Cluster +func (o LookupClusterResultOutput) RegisteredContainerInstancesCount() pulumi.IntOutput { + return o.ApplyT(func(v LookupClusterResult) int { return v.RegisteredContainerInstancesCount }).(pulumi.IntOutput) +} + +// Number of running tasks for the ECS Cluster +func (o LookupClusterResultOutput) RunningTasksCount() pulumi.IntOutput { + return o.ApplyT(func(v LookupClusterResult) int { return v.RunningTasksCount }).(pulumi.IntOutput) +} + +// The default Service Connect namespace +func (o LookupClusterResultOutput) ServiceConnectDefaults() GetClusterServiceConnectDefaultArrayOutput { + return o.ApplyT(func(v LookupClusterResult) []GetClusterServiceConnectDefault { return v.ServiceConnectDefaults }).(GetClusterServiceConnectDefaultArrayOutput) +} + +// Settings associated with the ECS Cluster +func (o LookupClusterResultOutput) Settings() GetClusterSettingArrayOutput { + return o.ApplyT(func(v LookupClusterResult) []GetClusterSetting { return v.Settings }).(GetClusterSettingArrayOutput) +} + +// Status of the ECS Cluster +func (o LookupClusterResultOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v LookupClusterResult) string { return v.Status }).(pulumi.StringOutput) +} + +// Key-value map of resource tags +func (o LookupClusterResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupClusterResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupClusterResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getContainerDefinition.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getContainerDefinition.go new file mode 100644 index 000000000..48fd25c7a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getContainerDefinition.go @@ -0,0 +1,186 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The ECS container definition data source allows access to details of +// a specific container within an AWS ECS service. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.GetContainerDefinition(ctx, &ecs.GetContainerDefinitionArgs{ +// TaskDefinition: mongo.Id, +// ContainerName: "mongodb", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetContainerDefinition(ctx *pulumi.Context, args *GetContainerDefinitionArgs, opts ...pulumi.InvokeOption) (*GetContainerDefinitionResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetContainerDefinitionResult + err := ctx.Invoke("aws:ecs/getContainerDefinition:getContainerDefinition", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getContainerDefinition. +type GetContainerDefinitionArgs struct { + // Name of the container definition + ContainerName string `pulumi:"containerName"` + // ARN of the task definition which contains the container + TaskDefinition string `pulumi:"taskDefinition"` +} + +// A collection of values returned by getContainerDefinition. +type GetContainerDefinitionResult struct { + ContainerName string `pulumi:"containerName"` + // CPU limit for this container definition + Cpu int `pulumi:"cpu"` + // Indicator if networking is disabled + DisableNetworking bool `pulumi:"disableNetworking"` + // Set docker labels + DockerLabels map[string]string `pulumi:"dockerLabels"` + // Environment in use + Environment map[string]string `pulumi:"environment"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Docker image in use, including the digest + Image string `pulumi:"image"` + // Digest of the docker image in use + ImageDigest string `pulumi:"imageDigest"` + // Memory limit for this container definition + Memory int `pulumi:"memory"` + // Soft limit (in MiB) of memory to reserve for the container. When system memory is under contention, Docker attempts to keep the container memory to this soft limit + MemoryReservation int `pulumi:"memoryReservation"` + TaskDefinition string `pulumi:"taskDefinition"` +} + +func GetContainerDefinitionOutput(ctx *pulumi.Context, args GetContainerDefinitionOutputArgs, opts ...pulumi.InvokeOption) GetContainerDefinitionResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetContainerDefinitionResultOutput, error) { + args := v.(GetContainerDefinitionArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetContainerDefinitionResult + secret, err := ctx.InvokePackageRaw("aws:ecs/getContainerDefinition:getContainerDefinition", args, &rv, "", opts...) + if err != nil { + return GetContainerDefinitionResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetContainerDefinitionResultOutput) + if secret { + return pulumi.ToSecret(output).(GetContainerDefinitionResultOutput), nil + } + return output, nil + }).(GetContainerDefinitionResultOutput) +} + +// A collection of arguments for invoking getContainerDefinition. +type GetContainerDefinitionOutputArgs struct { + // Name of the container definition + ContainerName pulumi.StringInput `pulumi:"containerName"` + // ARN of the task definition which contains the container + TaskDefinition pulumi.StringInput `pulumi:"taskDefinition"` +} + +func (GetContainerDefinitionOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetContainerDefinitionArgs)(nil)).Elem() +} + +// A collection of values returned by getContainerDefinition. +type GetContainerDefinitionResultOutput struct{ *pulumi.OutputState } + +func (GetContainerDefinitionResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetContainerDefinitionResult)(nil)).Elem() +} + +func (o GetContainerDefinitionResultOutput) ToGetContainerDefinitionResultOutput() GetContainerDefinitionResultOutput { + return o +} + +func (o GetContainerDefinitionResultOutput) ToGetContainerDefinitionResultOutputWithContext(ctx context.Context) GetContainerDefinitionResultOutput { + return o +} + +func (o GetContainerDefinitionResultOutput) ContainerName() pulumi.StringOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) string { return v.ContainerName }).(pulumi.StringOutput) +} + +// CPU limit for this container definition +func (o GetContainerDefinitionResultOutput) Cpu() pulumi.IntOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) int { return v.Cpu }).(pulumi.IntOutput) +} + +// Indicator if networking is disabled +func (o GetContainerDefinitionResultOutput) DisableNetworking() pulumi.BoolOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) bool { return v.DisableNetworking }).(pulumi.BoolOutput) +} + +// Set docker labels +func (o GetContainerDefinitionResultOutput) DockerLabels() pulumi.StringMapOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) map[string]string { return v.DockerLabels }).(pulumi.StringMapOutput) +} + +// Environment in use +func (o GetContainerDefinitionResultOutput) Environment() pulumi.StringMapOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) map[string]string { return v.Environment }).(pulumi.StringMapOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetContainerDefinitionResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Docker image in use, including the digest +func (o GetContainerDefinitionResultOutput) Image() pulumi.StringOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) string { return v.Image }).(pulumi.StringOutput) +} + +// Digest of the docker image in use +func (o GetContainerDefinitionResultOutput) ImageDigest() pulumi.StringOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) string { return v.ImageDigest }).(pulumi.StringOutput) +} + +// Memory limit for this container definition +func (o GetContainerDefinitionResultOutput) Memory() pulumi.IntOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) int { return v.Memory }).(pulumi.IntOutput) +} + +// Soft limit (in MiB) of memory to reserve for the container. When system memory is under contention, Docker attempts to keep the container memory to this soft limit +func (o GetContainerDefinitionResultOutput) MemoryReservation() pulumi.IntOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) int { return v.MemoryReservation }).(pulumi.IntOutput) +} + +func (o GetContainerDefinitionResultOutput) TaskDefinition() pulumi.StringOutput { + return o.ApplyT(func(v GetContainerDefinitionResult) string { return v.TaskDefinition }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetContainerDefinitionResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getService.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getService.go new file mode 100644 index 000000000..9db72ad6e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getService.go @@ -0,0 +1,181 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The ECS Service data source allows access to details of a specific +// Service within a AWS ECS Cluster. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.LookupService(ctx, &ecs.LookupServiceArgs{ +// ServiceName: "example", +// ClusterArn: exampleAwsEcsCluster.Arn, +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupService(ctx *pulumi.Context, args *LookupServiceArgs, opts ...pulumi.InvokeOption) (*LookupServiceResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupServiceResult + err := ctx.Invoke("aws:ecs/getService:getService", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getService. +type LookupServiceArgs struct { + // ARN of the ECS Cluster + ClusterArn string `pulumi:"clusterArn"` + // Name of the ECS Service + ServiceName string `pulumi:"serviceName"` + // Resource tags. + Tags map[string]string `pulumi:"tags"` +} + +// A collection of values returned by getService. +type LookupServiceResult struct { + // ARN of the ECS Service + Arn string `pulumi:"arn"` + AvailabilityZoneRebalancing string `pulumi:"availabilityZoneRebalancing"` + ClusterArn string `pulumi:"clusterArn"` + // Number of tasks for the ECS Service + DesiredCount int `pulumi:"desiredCount"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Launch type for the ECS Service + LaunchType string `pulumi:"launchType"` + // Scheduling strategy for the ECS Service + SchedulingStrategy string `pulumi:"schedulingStrategy"` + ServiceName string `pulumi:"serviceName"` + // Resource tags. + Tags map[string]string `pulumi:"tags"` + // Family for the latest ACTIVE revision or full ARN of the task definition. + TaskDefinition string `pulumi:"taskDefinition"` +} + +func LookupServiceOutput(ctx *pulumi.Context, args LookupServiceOutputArgs, opts ...pulumi.InvokeOption) LookupServiceResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupServiceResultOutput, error) { + args := v.(LookupServiceArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupServiceResult + secret, err := ctx.InvokePackageRaw("aws:ecs/getService:getService", args, &rv, "", opts...) + if err != nil { + return LookupServiceResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupServiceResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupServiceResultOutput), nil + } + return output, nil + }).(LookupServiceResultOutput) +} + +// A collection of arguments for invoking getService. +type LookupServiceOutputArgs struct { + // ARN of the ECS Cluster + ClusterArn pulumi.StringInput `pulumi:"clusterArn"` + // Name of the ECS Service + ServiceName pulumi.StringInput `pulumi:"serviceName"` + // Resource tags. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (LookupServiceOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupServiceArgs)(nil)).Elem() +} + +// A collection of values returned by getService. +type LookupServiceResultOutput struct{ *pulumi.OutputState } + +func (LookupServiceResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupServiceResult)(nil)).Elem() +} + +func (o LookupServiceResultOutput) ToLookupServiceResultOutput() LookupServiceResultOutput { + return o +} + +func (o LookupServiceResultOutput) ToLookupServiceResultOutputWithContext(ctx context.Context) LookupServiceResultOutput { + return o +} + +// ARN of the ECS Service +func (o LookupServiceResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.Arn }).(pulumi.StringOutput) +} + +func (o LookupServiceResultOutput) AvailabilityZoneRebalancing() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.AvailabilityZoneRebalancing }).(pulumi.StringOutput) +} + +func (o LookupServiceResultOutput) ClusterArn() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.ClusterArn }).(pulumi.StringOutput) +} + +// Number of tasks for the ECS Service +func (o LookupServiceResultOutput) DesiredCount() pulumi.IntOutput { + return o.ApplyT(func(v LookupServiceResult) int { return v.DesiredCount }).(pulumi.IntOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupServiceResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Launch type for the ECS Service +func (o LookupServiceResultOutput) LaunchType() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.LaunchType }).(pulumi.StringOutput) +} + +// Scheduling strategy for the ECS Service +func (o LookupServiceResultOutput) SchedulingStrategy() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.SchedulingStrategy }).(pulumi.StringOutput) +} + +func (o LookupServiceResultOutput) ServiceName() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.ServiceName }).(pulumi.StringOutput) +} + +// Resource tags. +func (o LookupServiceResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupServiceResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Family for the latest ACTIVE revision or full ARN of the task definition. +func (o LookupServiceResultOutput) TaskDefinition() pulumi.StringOutput { + return o.ApplyT(func(v LookupServiceResult) string { return v.TaskDefinition }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupServiceResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskDefinition.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskDefinition.go new file mode 100644 index 000000000..5ec47aa46 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskDefinition.go @@ -0,0 +1,214 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The ECS task definition data source allows access to details of +// a specific AWS ECS task definition. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// mongoTaskDefinition, err := ecs.NewTaskDefinition(ctx, "mongo", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("mongodb"), +// ContainerDefinitions: pulumi.String(`[ +// { +// "cpu": 128, +// "environment": [{ +// "name": "SECRET", +// "value": "KEY" +// }], +// "essential": true, +// "image": "mongo:latest", +// "memory": 128, +// "memoryReservation": 64, +// "name": "mongodb" +// } +// +// ] +// `), +// +// }) +// if err != nil { +// return err +// } +// // Simply specify the family to find the latest ACTIVE revision in that family. +// mongo := ecs.LookupTaskDefinitionOutput(ctx, ecs.GetTaskDefinitionOutputArgs{ +// TaskDefinition: mongoTaskDefinition.Family, +// }, nil) +// foo, err := ecs.NewCluster(ctx, "foo", &ecs.ClusterArgs{ +// Name: pulumi.String("foo"), +// }) +// if err != nil { +// return err +// } +// _, err = ecs.NewService(ctx, "mongo", &ecs.ServiceArgs{ +// Name: pulumi.String("mongo"), +// Cluster: foo.ID(), +// DesiredCount: pulumi.Int(2), +// TaskDefinition: pulumi.String(mongo.ApplyT(func(mongo ecs.GetTaskDefinitionResult) (*string, error) { +// return &mongo.Arn, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupTaskDefinition(ctx *pulumi.Context, args *LookupTaskDefinitionArgs, opts ...pulumi.InvokeOption) (*LookupTaskDefinitionResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupTaskDefinitionResult + err := ctx.Invoke("aws:ecs/getTaskDefinition:getTaskDefinition", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getTaskDefinition. +type LookupTaskDefinitionArgs struct { + // Family for the latest ACTIVE revision, family and revision (family:revision) for a specific revision in the family, the ARN of the task definition to access to. + TaskDefinition string `pulumi:"taskDefinition"` +} + +// A collection of values returned by getTaskDefinition. +type LookupTaskDefinitionResult struct { + // ARN of the task definition. + Arn string `pulumi:"arn"` + // ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details. + ArnWithoutRevision string `pulumi:"arnWithoutRevision"` + // ARN of the task execution role that the Amazon ECS container agent and the Docker. + ExecutionRoleArn string `pulumi:"executionRoleArn"` + // Family of this task definition. + Family string `pulumi:"family"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Docker networking mode to use for the containers in this task. + NetworkMode string `pulumi:"networkMode"` + // Revision of this task definition. + Revision int `pulumi:"revision"` + // Status of this task definition. + Status string `pulumi:"status"` + TaskDefinition string `pulumi:"taskDefinition"` + // ARN of the IAM role that containers in this task can assume. + TaskRoleArn string `pulumi:"taskRoleArn"` +} + +func LookupTaskDefinitionOutput(ctx *pulumi.Context, args LookupTaskDefinitionOutputArgs, opts ...pulumi.InvokeOption) LookupTaskDefinitionResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupTaskDefinitionResultOutput, error) { + args := v.(LookupTaskDefinitionArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupTaskDefinitionResult + secret, err := ctx.InvokePackageRaw("aws:ecs/getTaskDefinition:getTaskDefinition", args, &rv, "", opts...) + if err != nil { + return LookupTaskDefinitionResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupTaskDefinitionResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupTaskDefinitionResultOutput), nil + } + return output, nil + }).(LookupTaskDefinitionResultOutput) +} + +// A collection of arguments for invoking getTaskDefinition. +type LookupTaskDefinitionOutputArgs struct { + // Family for the latest ACTIVE revision, family and revision (family:revision) for a specific revision in the family, the ARN of the task definition to access to. + TaskDefinition pulumi.StringInput `pulumi:"taskDefinition"` +} + +func (LookupTaskDefinitionOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupTaskDefinitionArgs)(nil)).Elem() +} + +// A collection of values returned by getTaskDefinition. +type LookupTaskDefinitionResultOutput struct{ *pulumi.OutputState } + +func (LookupTaskDefinitionResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupTaskDefinitionResult)(nil)).Elem() +} + +func (o LookupTaskDefinitionResultOutput) ToLookupTaskDefinitionResultOutput() LookupTaskDefinitionResultOutput { + return o +} + +func (o LookupTaskDefinitionResultOutput) ToLookupTaskDefinitionResultOutputWithContext(ctx context.Context) LookupTaskDefinitionResultOutput { + return o +} + +// ARN of the task definition. +func (o LookupTaskDefinitionResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details. +func (o LookupTaskDefinitionResultOutput) ArnWithoutRevision() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.ArnWithoutRevision }).(pulumi.StringOutput) +} + +// ARN of the task execution role that the Amazon ECS container agent and the Docker. +func (o LookupTaskDefinitionResultOutput) ExecutionRoleArn() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.ExecutionRoleArn }).(pulumi.StringOutput) +} + +// Family of this task definition. +func (o LookupTaskDefinitionResultOutput) Family() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.Family }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupTaskDefinitionResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Docker networking mode to use for the containers in this task. +func (o LookupTaskDefinitionResultOutput) NetworkMode() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.NetworkMode }).(pulumi.StringOutput) +} + +// Revision of this task definition. +func (o LookupTaskDefinitionResultOutput) Revision() pulumi.IntOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) int { return v.Revision }).(pulumi.IntOutput) +} + +// Status of this task definition. +func (o LookupTaskDefinitionResultOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.Status }).(pulumi.StringOutput) +} + +func (o LookupTaskDefinitionResultOutput) TaskDefinition() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.TaskDefinition }).(pulumi.StringOutput) +} + +// ARN of the IAM role that containers in this task can assume. +func (o LookupTaskDefinitionResultOutput) TaskRoleArn() pulumi.StringOutput { + return o.ApplyT(func(v LookupTaskDefinitionResult) string { return v.TaskRoleArn }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupTaskDefinitionResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskExecution.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskExecution.go new file mode 100644 index 000000000..b1f0cc6f9 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/getTaskExecution.go @@ -0,0 +1,297 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Data source for managing an AWS ECS (Elastic Container) Task Execution. This data source calls the [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) API, allowing execution of one-time tasks that don't fit a standard resource lifecycle. See the feature request issue for additional context. +// +// > **NOTE on preview operations:** This data source calls the `RunTask` API on every read operation, which means new task(s) may be created from a `pulumi preview` command if all attributes are known. Placing this functionality behind a data source is an intentional trade off to enable use cases requiring a one-time task execution without relying on provisioners. Caution should be taken to ensure the data source is only executed once, or that the resulting tasks can safely run in parallel. +// +// ## Example Usage +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.GetTaskExecution(ctx, &ecs.GetTaskExecutionArgs{ +// Cluster: exampleAwsEcsCluster.Id, +// TaskDefinition: exampleAwsEcsTaskDefinition.Arn, +// DesiredCount: pulumi.IntRef(1), +// LaunchType: pulumi.StringRef("FARGATE"), +// NetworkConfiguration: ecs.GetTaskExecutionNetworkConfiguration{ +// Subnets: []string(%!v(PANIC=Format method: fatal: A failure has occurred: unlowered splat expression @ example.pp:6,22-44)), +// SecurityGroups: interface{}{ +// exampleAwsSecurityGroup.Id, +// }, +// AssignPublicIp: pulumi.BoolRef(false), +// }, +// }, nil); +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +func GetTaskExecution(ctx *pulumi.Context, args *GetTaskExecutionArgs, opts ...pulumi.InvokeOption) (*GetTaskExecutionResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetTaskExecutionResult + err := ctx.Invoke("aws:ecs/getTaskExecution:getTaskExecution", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getTaskExecution. +type GetTaskExecutionArgs struct { + // Set of capacity provider strategies to use for the cluster. See below. + CapacityProviderStrategies []GetTaskExecutionCapacityProviderStrategy `pulumi:"capacityProviderStrategies"` + // An identifier that you provide to ensure the idempotency of the request. It must be unique and is case sensitive. Up to 64 characters are allowed. The valid characters are characters in the range of 33-126, inclusive. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/ECS_Idempotency.html). + ClientToken *string `pulumi:"clientToken"` + // Short name or full Amazon Resource Name (ARN) of the cluster to run the task on. + Cluster string `pulumi:"cluster"` + // Number of instantiations of the specified task to place on your cluster. You can specify up to 10 tasks for each call. + DesiredCount *int `pulumi:"desiredCount"` + // Specifies whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + // Specifies whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + // Name of the task group to associate with the task. The default value is the family name of the task definition. + Group *string `pulumi:"group"` + // Launch type on which to run your service. Valid values are `EC2`, `FARGATE`, and `EXTERNAL`. + LaunchType *string `pulumi:"launchType"` + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration *GetTaskExecutionNetworkConfiguration `pulumi:"networkConfiguration"` + // A list of container overrides that specify the name of a container in the specified task definition and the overrides it should receive. + Overrides *GetTaskExecutionOverrides `pulumi:"overrides"` + // An array of placement constraint objects to use for the task. You can specify up to 10 constraints for each task. See below. + PlacementConstraints []GetTaskExecutionPlacementConstraint `pulumi:"placementConstraints"` + // The placement strategy objects to use for the task. You can specify a maximum of 5 strategy rules for each task. See below. + PlacementStrategies []GetTaskExecutionPlacementStrategy `pulumi:"placementStrategies"` + // The platform version the task uses. A platform version is only specified for tasks hosted on Fargate. If one isn't specified, the `LATEST` platform version is used. + PlatformVersion *string `pulumi:"platformVersion"` + // Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags aren't propagated. An error will be received if you specify the `SERVICE` option when running a task. Valid values are `TASK_DEFINITION` or `NONE`. + PropagateTags *string `pulumi:"propagateTags"` + // The reference ID to use for the task. + ReferenceId *string `pulumi:"referenceId"` + // An optional tag specified when a task is started. + StartedBy *string `pulumi:"startedBy"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // The `family` and `revision` (`family:revision`) or full ARN of the task definition to run. If a revision isn't specified, the latest `ACTIVE` revision is used. + // + // The following arguments are optional: + TaskDefinition string `pulumi:"taskDefinition"` +} + +// A collection of values returned by getTaskExecution. +type GetTaskExecutionResult struct { + CapacityProviderStrategies []GetTaskExecutionCapacityProviderStrategy `pulumi:"capacityProviderStrategies"` + ClientToken *string `pulumi:"clientToken"` + Cluster string `pulumi:"cluster"` + DesiredCount *int `pulumi:"desiredCount"` + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + Group *string `pulumi:"group"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + LaunchType *string `pulumi:"launchType"` + NetworkConfiguration *GetTaskExecutionNetworkConfiguration `pulumi:"networkConfiguration"` + Overrides *GetTaskExecutionOverrides `pulumi:"overrides"` + PlacementConstraints []GetTaskExecutionPlacementConstraint `pulumi:"placementConstraints"` + PlacementStrategies []GetTaskExecutionPlacementStrategy `pulumi:"placementStrategies"` + PlatformVersion *string `pulumi:"platformVersion"` + PropagateTags *string `pulumi:"propagateTags"` + ReferenceId *string `pulumi:"referenceId"` + StartedBy *string `pulumi:"startedBy"` + Tags map[string]string `pulumi:"tags"` + // A list of the provisioned task ARNs. + TaskArns []string `pulumi:"taskArns"` + TaskDefinition string `pulumi:"taskDefinition"` +} + +func GetTaskExecutionOutput(ctx *pulumi.Context, args GetTaskExecutionOutputArgs, opts ...pulumi.InvokeOption) GetTaskExecutionResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetTaskExecutionResultOutput, error) { + args := v.(GetTaskExecutionArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetTaskExecutionResult + secret, err := ctx.InvokePackageRaw("aws:ecs/getTaskExecution:getTaskExecution", args, &rv, "", opts...) + if err != nil { + return GetTaskExecutionResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetTaskExecutionResultOutput) + if secret { + return pulumi.ToSecret(output).(GetTaskExecutionResultOutput), nil + } + return output, nil + }).(GetTaskExecutionResultOutput) +} + +// A collection of arguments for invoking getTaskExecution. +type GetTaskExecutionOutputArgs struct { + // Set of capacity provider strategies to use for the cluster. See below. + CapacityProviderStrategies GetTaskExecutionCapacityProviderStrategyArrayInput `pulumi:"capacityProviderStrategies"` + // An identifier that you provide to ensure the idempotency of the request. It must be unique and is case sensitive. Up to 64 characters are allowed. The valid characters are characters in the range of 33-126, inclusive. For more information, see [Ensuring idempotency](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/ECS_Idempotency.html). + ClientToken pulumi.StringPtrInput `pulumi:"clientToken"` + // Short name or full Amazon Resource Name (ARN) of the cluster to run the task on. + Cluster pulumi.StringInput `pulumi:"cluster"` + // Number of instantiations of the specified task to place on your cluster. You can specify up to 10 tasks for each call. + DesiredCount pulumi.IntPtrInput `pulumi:"desiredCount"` + // Specifies whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags pulumi.BoolPtrInput `pulumi:"enableEcsManagedTags"` + // Specifies whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand pulumi.BoolPtrInput `pulumi:"enableExecuteCommand"` + // Name of the task group to associate with the task. The default value is the family name of the task definition. + Group pulumi.StringPtrInput `pulumi:"group"` + // Launch type on which to run your service. Valid values are `EC2`, `FARGATE`, and `EXTERNAL`. + LaunchType pulumi.StringPtrInput `pulumi:"launchType"` + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration GetTaskExecutionNetworkConfigurationPtrInput `pulumi:"networkConfiguration"` + // A list of container overrides that specify the name of a container in the specified task definition and the overrides it should receive. + Overrides GetTaskExecutionOverridesPtrInput `pulumi:"overrides"` + // An array of placement constraint objects to use for the task. You can specify up to 10 constraints for each task. See below. + PlacementConstraints GetTaskExecutionPlacementConstraintArrayInput `pulumi:"placementConstraints"` + // The placement strategy objects to use for the task. You can specify a maximum of 5 strategy rules for each task. See below. + PlacementStrategies GetTaskExecutionPlacementStrategyArrayInput `pulumi:"placementStrategies"` + // The platform version the task uses. A platform version is only specified for tasks hosted on Fargate. If one isn't specified, the `LATEST` platform version is used. + PlatformVersion pulumi.StringPtrInput `pulumi:"platformVersion"` + // Specifies whether to propagate the tags from the task definition to the task. If no value is specified, the tags aren't propagated. An error will be received if you specify the `SERVICE` option when running a task. Valid values are `TASK_DEFINITION` or `NONE`. + PropagateTags pulumi.StringPtrInput `pulumi:"propagateTags"` + // The reference ID to use for the task. + ReferenceId pulumi.StringPtrInput `pulumi:"referenceId"` + // An optional tag specified when a task is started. + StartedBy pulumi.StringPtrInput `pulumi:"startedBy"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` + // The `family` and `revision` (`family:revision`) or full ARN of the task definition to run. If a revision isn't specified, the latest `ACTIVE` revision is used. + // + // The following arguments are optional: + TaskDefinition pulumi.StringInput `pulumi:"taskDefinition"` +} + +func (GetTaskExecutionOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionArgs)(nil)).Elem() +} + +// A collection of values returned by getTaskExecution. +type GetTaskExecutionResultOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionResult)(nil)).Elem() +} + +func (o GetTaskExecutionResultOutput) ToGetTaskExecutionResultOutput() GetTaskExecutionResultOutput { + return o +} + +func (o GetTaskExecutionResultOutput) ToGetTaskExecutionResultOutputWithContext(ctx context.Context) GetTaskExecutionResultOutput { + return o +} + +func (o GetTaskExecutionResultOutput) CapacityProviderStrategies() GetTaskExecutionCapacityProviderStrategyArrayOutput { + return o.ApplyT(func(v GetTaskExecutionResult) []GetTaskExecutionCapacityProviderStrategy { + return v.CapacityProviderStrategies + }).(GetTaskExecutionCapacityProviderStrategyArrayOutput) +} + +func (o GetTaskExecutionResultOutput) ClientToken() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *string { return v.ClientToken }).(pulumi.StringPtrOutput) +} + +func (o GetTaskExecutionResultOutput) Cluster() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionResult) string { return v.Cluster }).(pulumi.StringOutput) +} + +func (o GetTaskExecutionResultOutput) DesiredCount() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *int { return v.DesiredCount }).(pulumi.IntPtrOutput) +} + +func (o GetTaskExecutionResultOutput) EnableEcsManagedTags() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *bool { return v.EnableEcsManagedTags }).(pulumi.BoolPtrOutput) +} + +func (o GetTaskExecutionResultOutput) EnableExecuteCommand() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *bool { return v.EnableExecuteCommand }).(pulumi.BoolPtrOutput) +} + +func (o GetTaskExecutionResultOutput) Group() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *string { return v.Group }).(pulumi.StringPtrOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetTaskExecutionResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o GetTaskExecutionResultOutput) LaunchType() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *string { return v.LaunchType }).(pulumi.StringPtrOutput) +} + +func (o GetTaskExecutionResultOutput) NetworkConfiguration() GetTaskExecutionNetworkConfigurationPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *GetTaskExecutionNetworkConfiguration { return v.NetworkConfiguration }).(GetTaskExecutionNetworkConfigurationPtrOutput) +} + +func (o GetTaskExecutionResultOutput) Overrides() GetTaskExecutionOverridesPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *GetTaskExecutionOverrides { return v.Overrides }).(GetTaskExecutionOverridesPtrOutput) +} + +func (o GetTaskExecutionResultOutput) PlacementConstraints() GetTaskExecutionPlacementConstraintArrayOutput { + return o.ApplyT(func(v GetTaskExecutionResult) []GetTaskExecutionPlacementConstraint { return v.PlacementConstraints }).(GetTaskExecutionPlacementConstraintArrayOutput) +} + +func (o GetTaskExecutionResultOutput) PlacementStrategies() GetTaskExecutionPlacementStrategyArrayOutput { + return o.ApplyT(func(v GetTaskExecutionResult) []GetTaskExecutionPlacementStrategy { return v.PlacementStrategies }).(GetTaskExecutionPlacementStrategyArrayOutput) +} + +func (o GetTaskExecutionResultOutput) PlatformVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *string { return v.PlatformVersion }).(pulumi.StringPtrOutput) +} + +func (o GetTaskExecutionResultOutput) PropagateTags() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *string { return v.PropagateTags }).(pulumi.StringPtrOutput) +} + +func (o GetTaskExecutionResultOutput) ReferenceId() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *string { return v.ReferenceId }).(pulumi.StringPtrOutput) +} + +func (o GetTaskExecutionResultOutput) StartedBy() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionResult) *string { return v.StartedBy }).(pulumi.StringPtrOutput) +} + +func (o GetTaskExecutionResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v GetTaskExecutionResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// A list of the provisioned task ARNs. +func (o GetTaskExecutionResultOutput) TaskArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetTaskExecutionResult) []string { return v.TaskArns }).(pulumi.StringArrayOutput) +} + +func (o GetTaskExecutionResultOutput) TaskDefinition() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionResult) string { return v.TaskDefinition }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetTaskExecutionResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/init.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/init.go new file mode 100644 index 000000000..23b0c0159 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/init.go @@ -0,0 +1,93 @@ +// 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 ecs + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws:ecs/accountSettingDefault:AccountSettingDefault": + r = &AccountSettingDefault{} + case "aws:ecs/capacityProvider:CapacityProvider": + r = &CapacityProvider{} + case "aws:ecs/cluster:Cluster": + r = &Cluster{} + case "aws:ecs/clusterCapacityProviders:ClusterCapacityProviders": + r = &ClusterCapacityProviders{} + case "aws:ecs/service:Service": + r = &Service{} + case "aws:ecs/tag:Tag": + r = &Tag{} + case "aws:ecs/taskDefinition:TaskDefinition": + r = &TaskDefinition{} + case "aws:ecs/taskSet:TaskSet": + r = &TaskSet{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws", + "ecs/accountSettingDefault", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "ecs/capacityProvider", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "ecs/cluster", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "ecs/clusterCapacityProviders", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "ecs/service", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "ecs/tag", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "ecs/taskDefinition", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "ecs/taskSet", + &module{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/pulumiTypes.go new file mode 100644 index 000000000..8d925e756 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/pulumiTypes.go @@ -0,0 +1,8905 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type CapacityProviderAutoScalingGroupProvider struct { + // ARN of the associated auto scaling group. + AutoScalingGroupArn string `pulumi:"autoScalingGroupArn"` + // Enables or disables a graceful shutdown of instances without disturbing workloads. Valid values are `ENABLED` and `DISABLED`. The default value is `ENABLED` when a capacity provider is created. + ManagedDraining *string `pulumi:"managedDraining"` + // Configuration block defining the parameters of the auto scaling. Detailed below. + ManagedScaling *CapacityProviderAutoScalingGroupProviderManagedScaling `pulumi:"managedScaling"` + // Enables or disables container-aware termination of instances in the auto scaling group when scale-in happens. Valid values are `ENABLED` and `DISABLED`. + ManagedTerminationProtection *string `pulumi:"managedTerminationProtection"` +} + +// CapacityProviderAutoScalingGroupProviderInput is an input type that accepts CapacityProviderAutoScalingGroupProviderArgs and CapacityProviderAutoScalingGroupProviderOutput values. +// You can construct a concrete instance of `CapacityProviderAutoScalingGroupProviderInput` via: +// +// CapacityProviderAutoScalingGroupProviderArgs{...} +type CapacityProviderAutoScalingGroupProviderInput interface { + pulumi.Input + + ToCapacityProviderAutoScalingGroupProviderOutput() CapacityProviderAutoScalingGroupProviderOutput + ToCapacityProviderAutoScalingGroupProviderOutputWithContext(context.Context) CapacityProviderAutoScalingGroupProviderOutput +} + +type CapacityProviderAutoScalingGroupProviderArgs struct { + // ARN of the associated auto scaling group. + AutoScalingGroupArn pulumi.StringInput `pulumi:"autoScalingGroupArn"` + // Enables or disables a graceful shutdown of instances without disturbing workloads. Valid values are `ENABLED` and `DISABLED`. The default value is `ENABLED` when a capacity provider is created. + ManagedDraining pulumi.StringPtrInput `pulumi:"managedDraining"` + // Configuration block defining the parameters of the auto scaling. Detailed below. + ManagedScaling CapacityProviderAutoScalingGroupProviderManagedScalingPtrInput `pulumi:"managedScaling"` + // Enables or disables container-aware termination of instances in the auto scaling group when scale-in happens. Valid values are `ENABLED` and `DISABLED`. + ManagedTerminationProtection pulumi.StringPtrInput `pulumi:"managedTerminationProtection"` +} + +func (CapacityProviderAutoScalingGroupProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*CapacityProviderAutoScalingGroupProvider)(nil)).Elem() +} + +func (i CapacityProviderAutoScalingGroupProviderArgs) ToCapacityProviderAutoScalingGroupProviderOutput() CapacityProviderAutoScalingGroupProviderOutput { + return i.ToCapacityProviderAutoScalingGroupProviderOutputWithContext(context.Background()) +} + +func (i CapacityProviderAutoScalingGroupProviderArgs) ToCapacityProviderAutoScalingGroupProviderOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderAutoScalingGroupProviderOutput) +} + +func (i CapacityProviderAutoScalingGroupProviderArgs) ToCapacityProviderAutoScalingGroupProviderPtrOutput() CapacityProviderAutoScalingGroupProviderPtrOutput { + return i.ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(context.Background()) +} + +func (i CapacityProviderAutoScalingGroupProviderArgs) ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderAutoScalingGroupProviderOutput).ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(ctx) +} + +// CapacityProviderAutoScalingGroupProviderPtrInput is an input type that accepts CapacityProviderAutoScalingGroupProviderArgs, CapacityProviderAutoScalingGroupProviderPtr and CapacityProviderAutoScalingGroupProviderPtrOutput values. +// You can construct a concrete instance of `CapacityProviderAutoScalingGroupProviderPtrInput` via: +// +// CapacityProviderAutoScalingGroupProviderArgs{...} +// +// or: +// +// nil +type CapacityProviderAutoScalingGroupProviderPtrInput interface { + pulumi.Input + + ToCapacityProviderAutoScalingGroupProviderPtrOutput() CapacityProviderAutoScalingGroupProviderPtrOutput + ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(context.Context) CapacityProviderAutoScalingGroupProviderPtrOutput +} + +type capacityProviderAutoScalingGroupProviderPtrType CapacityProviderAutoScalingGroupProviderArgs + +func CapacityProviderAutoScalingGroupProviderPtr(v *CapacityProviderAutoScalingGroupProviderArgs) CapacityProviderAutoScalingGroupProviderPtrInput { + return (*capacityProviderAutoScalingGroupProviderPtrType)(v) +} + +func (*capacityProviderAutoScalingGroupProviderPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**CapacityProviderAutoScalingGroupProvider)(nil)).Elem() +} + +func (i *capacityProviderAutoScalingGroupProviderPtrType) ToCapacityProviderAutoScalingGroupProviderPtrOutput() CapacityProviderAutoScalingGroupProviderPtrOutput { + return i.ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(context.Background()) +} + +func (i *capacityProviderAutoScalingGroupProviderPtrType) ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderAutoScalingGroupProviderPtrOutput) +} + +type CapacityProviderAutoScalingGroupProviderOutput struct{ *pulumi.OutputState } + +func (CapacityProviderAutoScalingGroupProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CapacityProviderAutoScalingGroupProvider)(nil)).Elem() +} + +func (o CapacityProviderAutoScalingGroupProviderOutput) ToCapacityProviderAutoScalingGroupProviderOutput() CapacityProviderAutoScalingGroupProviderOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderOutput) ToCapacityProviderAutoScalingGroupProviderOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderOutput) ToCapacityProviderAutoScalingGroupProviderPtrOutput() CapacityProviderAutoScalingGroupProviderPtrOutput { + return o.ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(context.Background()) +} + +func (o CapacityProviderAutoScalingGroupProviderOutput) ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v CapacityProviderAutoScalingGroupProvider) *CapacityProviderAutoScalingGroupProvider { + return &v + }).(CapacityProviderAutoScalingGroupProviderPtrOutput) +} + +// ARN of the associated auto scaling group. +func (o CapacityProviderAutoScalingGroupProviderOutput) AutoScalingGroupArn() pulumi.StringOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProvider) string { return v.AutoScalingGroupArn }).(pulumi.StringOutput) +} + +// Enables or disables a graceful shutdown of instances without disturbing workloads. Valid values are `ENABLED` and `DISABLED`. The default value is `ENABLED` when a capacity provider is created. +func (o CapacityProviderAutoScalingGroupProviderOutput) ManagedDraining() pulumi.StringPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProvider) *string { return v.ManagedDraining }).(pulumi.StringPtrOutput) +} + +// Configuration block defining the parameters of the auto scaling. Detailed below. +func (o CapacityProviderAutoScalingGroupProviderOutput) ManagedScaling() CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProvider) *CapacityProviderAutoScalingGroupProviderManagedScaling { + return v.ManagedScaling + }).(CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) +} + +// Enables or disables container-aware termination of instances in the auto scaling group when scale-in happens. Valid values are `ENABLED` and `DISABLED`. +func (o CapacityProviderAutoScalingGroupProviderOutput) ManagedTerminationProtection() pulumi.StringPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProvider) *string { return v.ManagedTerminationProtection }).(pulumi.StringPtrOutput) +} + +type CapacityProviderAutoScalingGroupProviderPtrOutput struct{ *pulumi.OutputState } + +func (CapacityProviderAutoScalingGroupProviderPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CapacityProviderAutoScalingGroupProvider)(nil)).Elem() +} + +func (o CapacityProviderAutoScalingGroupProviderPtrOutput) ToCapacityProviderAutoScalingGroupProviderPtrOutput() CapacityProviderAutoScalingGroupProviderPtrOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderPtrOutput) ToCapacityProviderAutoScalingGroupProviderPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderPtrOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderPtrOutput) Elem() CapacityProviderAutoScalingGroupProviderOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProvider) CapacityProviderAutoScalingGroupProvider { + if v != nil { + return *v + } + var ret CapacityProviderAutoScalingGroupProvider + return ret + }).(CapacityProviderAutoScalingGroupProviderOutput) +} + +// ARN of the associated auto scaling group. +func (o CapacityProviderAutoScalingGroupProviderPtrOutput) AutoScalingGroupArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProvider) *string { + if v == nil { + return nil + } + return &v.AutoScalingGroupArn + }).(pulumi.StringPtrOutput) +} + +// Enables or disables a graceful shutdown of instances without disturbing workloads. Valid values are `ENABLED` and `DISABLED`. The default value is `ENABLED` when a capacity provider is created. +func (o CapacityProviderAutoScalingGroupProviderPtrOutput) ManagedDraining() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProvider) *string { + if v == nil { + return nil + } + return v.ManagedDraining + }).(pulumi.StringPtrOutput) +} + +// Configuration block defining the parameters of the auto scaling. Detailed below. +func (o CapacityProviderAutoScalingGroupProviderPtrOutput) ManagedScaling() CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProvider) *CapacityProviderAutoScalingGroupProviderManagedScaling { + if v == nil { + return nil + } + return v.ManagedScaling + }).(CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) +} + +// Enables or disables container-aware termination of instances in the auto scaling group when scale-in happens. Valid values are `ENABLED` and `DISABLED`. +func (o CapacityProviderAutoScalingGroupProviderPtrOutput) ManagedTerminationProtection() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProvider) *string { + if v == nil { + return nil + } + return v.ManagedTerminationProtection + }).(pulumi.StringPtrOutput) +} + +type CapacityProviderAutoScalingGroupProviderManagedScaling struct { + // Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used. + // + // For more information on how the instance warmup period contributes to managed scale-out behavior, see [Control the instances Amazon ECS terminates](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-termination-protection.html) in the _Amazon Elastic Container Service Developer Guide_. + InstanceWarmupPeriod *int `pulumi:"instanceWarmupPeriod"` + // Maximum step adjustment size. A number between 1 and 10,000. + MaximumScalingStepSize *int `pulumi:"maximumScalingStepSize"` + // Minimum step adjustment size. A number between 1 and 10,000. + MinimumScalingStepSize *int `pulumi:"minimumScalingStepSize"` + // Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`. + Status *string `pulumi:"status"` + // Target utilization for the capacity provider. A number between 1 and 100. + TargetCapacity *int `pulumi:"targetCapacity"` +} + +// CapacityProviderAutoScalingGroupProviderManagedScalingInput is an input type that accepts CapacityProviderAutoScalingGroupProviderManagedScalingArgs and CapacityProviderAutoScalingGroupProviderManagedScalingOutput values. +// You can construct a concrete instance of `CapacityProviderAutoScalingGroupProviderManagedScalingInput` via: +// +// CapacityProviderAutoScalingGroupProviderManagedScalingArgs{...} +type CapacityProviderAutoScalingGroupProviderManagedScalingInput interface { + pulumi.Input + + ToCapacityProviderAutoScalingGroupProviderManagedScalingOutput() CapacityProviderAutoScalingGroupProviderManagedScalingOutput + ToCapacityProviderAutoScalingGroupProviderManagedScalingOutputWithContext(context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingOutput +} + +type CapacityProviderAutoScalingGroupProviderManagedScalingArgs struct { + // Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used. + // + // For more information on how the instance warmup period contributes to managed scale-out behavior, see [Control the instances Amazon ECS terminates](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-termination-protection.html) in the _Amazon Elastic Container Service Developer Guide_. + InstanceWarmupPeriod pulumi.IntPtrInput `pulumi:"instanceWarmupPeriod"` + // Maximum step adjustment size. A number between 1 and 10,000. + MaximumScalingStepSize pulumi.IntPtrInput `pulumi:"maximumScalingStepSize"` + // Minimum step adjustment size. A number between 1 and 10,000. + MinimumScalingStepSize pulumi.IntPtrInput `pulumi:"minimumScalingStepSize"` + // Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`. + Status pulumi.StringPtrInput `pulumi:"status"` + // Target utilization for the capacity provider. A number between 1 and 100. + TargetCapacity pulumi.IntPtrInput `pulumi:"targetCapacity"` +} + +func (CapacityProviderAutoScalingGroupProviderManagedScalingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*CapacityProviderAutoScalingGroupProviderManagedScaling)(nil)).Elem() +} + +func (i CapacityProviderAutoScalingGroupProviderManagedScalingArgs) ToCapacityProviderAutoScalingGroupProviderManagedScalingOutput() CapacityProviderAutoScalingGroupProviderManagedScalingOutput { + return i.ToCapacityProviderAutoScalingGroupProviderManagedScalingOutputWithContext(context.Background()) +} + +func (i CapacityProviderAutoScalingGroupProviderManagedScalingArgs) ToCapacityProviderAutoScalingGroupProviderManagedScalingOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderAutoScalingGroupProviderManagedScalingOutput) +} + +func (i CapacityProviderAutoScalingGroupProviderManagedScalingArgs) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput() CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return i.ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(context.Background()) +} + +func (i CapacityProviderAutoScalingGroupProviderManagedScalingArgs) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderAutoScalingGroupProviderManagedScalingOutput).ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(ctx) +} + +// CapacityProviderAutoScalingGroupProviderManagedScalingPtrInput is an input type that accepts CapacityProviderAutoScalingGroupProviderManagedScalingArgs, CapacityProviderAutoScalingGroupProviderManagedScalingPtr and CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput values. +// You can construct a concrete instance of `CapacityProviderAutoScalingGroupProviderManagedScalingPtrInput` via: +// +// CapacityProviderAutoScalingGroupProviderManagedScalingArgs{...} +// +// or: +// +// nil +type CapacityProviderAutoScalingGroupProviderManagedScalingPtrInput interface { + pulumi.Input + + ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput() CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput + ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput +} + +type capacityProviderAutoScalingGroupProviderManagedScalingPtrType CapacityProviderAutoScalingGroupProviderManagedScalingArgs + +func CapacityProviderAutoScalingGroupProviderManagedScalingPtr(v *CapacityProviderAutoScalingGroupProviderManagedScalingArgs) CapacityProviderAutoScalingGroupProviderManagedScalingPtrInput { + return (*capacityProviderAutoScalingGroupProviderManagedScalingPtrType)(v) +} + +func (*capacityProviderAutoScalingGroupProviderManagedScalingPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**CapacityProviderAutoScalingGroupProviderManagedScaling)(nil)).Elem() +} + +func (i *capacityProviderAutoScalingGroupProviderManagedScalingPtrType) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput() CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return i.ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(context.Background()) +} + +func (i *capacityProviderAutoScalingGroupProviderManagedScalingPtrType) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) +} + +type CapacityProviderAutoScalingGroupProviderManagedScalingOutput struct{ *pulumi.OutputState } + +func (CapacityProviderAutoScalingGroupProviderManagedScalingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CapacityProviderAutoScalingGroupProviderManagedScaling)(nil)).Elem() +} + +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) ToCapacityProviderAutoScalingGroupProviderManagedScalingOutput() CapacityProviderAutoScalingGroupProviderManagedScalingOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) ToCapacityProviderAutoScalingGroupProviderManagedScalingOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput() CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return o.ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(context.Background()) +} + +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v CapacityProviderAutoScalingGroupProviderManagedScaling) *CapacityProviderAutoScalingGroupProviderManagedScaling { + return &v + }).(CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) +} + +// Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used. +// +// For more information on how the instance warmup period contributes to managed scale-out behavior, see [Control the instances Amazon ECS terminates](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-termination-protection.html) in the _Amazon Elastic Container Service Developer Guide_. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) InstanceWarmupPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProviderManagedScaling) *int { return v.InstanceWarmupPeriod }).(pulumi.IntPtrOutput) +} + +// Maximum step adjustment size. A number between 1 and 10,000. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) MaximumScalingStepSize() pulumi.IntPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProviderManagedScaling) *int { return v.MaximumScalingStepSize }).(pulumi.IntPtrOutput) +} + +// Minimum step adjustment size. A number between 1 and 10,000. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) MinimumScalingStepSize() pulumi.IntPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProviderManagedScaling) *int { return v.MinimumScalingStepSize }).(pulumi.IntPtrOutput) +} + +// Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProviderManagedScaling) *string { return v.Status }).(pulumi.StringPtrOutput) +} + +// Target utilization for the capacity provider. A number between 1 and 100. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingOutput) TargetCapacity() pulumi.IntPtrOutput { + return o.ApplyT(func(v CapacityProviderAutoScalingGroupProviderManagedScaling) *int { return v.TargetCapacity }).(pulumi.IntPtrOutput) +} + +type CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput struct{ *pulumi.OutputState } + +func (CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CapacityProviderAutoScalingGroupProviderManagedScaling)(nil)).Elem() +} + +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput() CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) ToCapacityProviderAutoScalingGroupProviderManagedScalingPtrOutputWithContext(ctx context.Context) CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput { + return o +} + +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) Elem() CapacityProviderAutoScalingGroupProviderManagedScalingOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProviderManagedScaling) CapacityProviderAutoScalingGroupProviderManagedScaling { + if v != nil { + return *v + } + var ret CapacityProviderAutoScalingGroupProviderManagedScaling + return ret + }).(CapacityProviderAutoScalingGroupProviderManagedScalingOutput) +} + +// Period of time, in seconds, after a newly launched Amazon EC2 instance can contribute to CloudWatch metrics for Auto Scaling group. If this parameter is omitted, the default value of 300 seconds is used. +// +// For more information on how the instance warmup period contributes to managed scale-out behavior, see [Control the instances Amazon ECS terminates](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/managed-termination-protection.html) in the _Amazon Elastic Container Service Developer Guide_. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) InstanceWarmupPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProviderManagedScaling) *int { + if v == nil { + return nil + } + return v.InstanceWarmupPeriod + }).(pulumi.IntPtrOutput) +} + +// Maximum step adjustment size. A number between 1 and 10,000. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) MaximumScalingStepSize() pulumi.IntPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProviderManagedScaling) *int { + if v == nil { + return nil + } + return v.MaximumScalingStepSize + }).(pulumi.IntPtrOutput) +} + +// Minimum step adjustment size. A number between 1 and 10,000. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) MinimumScalingStepSize() pulumi.IntPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProviderManagedScaling) *int { + if v == nil { + return nil + } + return v.MinimumScalingStepSize + }).(pulumi.IntPtrOutput) +} + +// Whether auto scaling is managed by ECS. Valid values are `ENABLED` and `DISABLED`. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProviderManagedScaling) *string { + if v == nil { + return nil + } + return v.Status + }).(pulumi.StringPtrOutput) +} + +// Target utilization for the capacity provider. A number between 1 and 100. +func (o CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput) TargetCapacity() pulumi.IntPtrOutput { + return o.ApplyT(func(v *CapacityProviderAutoScalingGroupProviderManagedScaling) *int { + if v == nil { + return nil + } + return v.TargetCapacity + }).(pulumi.IntPtrOutput) +} + +type ClusterCapacityProvidersDefaultCapacityProviderStrategy struct { + // The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. + Base *int `pulumi:"base"` + // Name of the capacity provider. + CapacityProvider string `pulumi:"capacityProvider"` + // The relative percentage of the total number of launched tasks that should use the specified capacity provider. The `weight` value is taken into consideration after the `base` count of tasks has been satisfied. Defaults to `0`. + Weight *int `pulumi:"weight"` +} + +// ClusterCapacityProvidersDefaultCapacityProviderStrategyInput is an input type that accepts ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs and ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput values. +// You can construct a concrete instance of `ClusterCapacityProvidersDefaultCapacityProviderStrategyInput` via: +// +// ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs{...} +type ClusterCapacityProvidersDefaultCapacityProviderStrategyInput interface { + pulumi.Input + + ToClusterCapacityProvidersDefaultCapacityProviderStrategyOutput() ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput + ToClusterCapacityProvidersDefaultCapacityProviderStrategyOutputWithContext(context.Context) ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput +} + +type ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs struct { + // The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. + Base pulumi.IntPtrInput `pulumi:"base"` + // Name of the capacity provider. + CapacityProvider pulumi.StringInput `pulumi:"capacityProvider"` + // The relative percentage of the total number of launched tasks that should use the specified capacity provider. The `weight` value is taken into consideration after the `base` count of tasks has been satisfied. Defaults to `0`. + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterCapacityProvidersDefaultCapacityProviderStrategy)(nil)).Elem() +} + +func (i ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs) ToClusterCapacityProvidersDefaultCapacityProviderStrategyOutput() ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput { + return i.ToClusterCapacityProvidersDefaultCapacityProviderStrategyOutputWithContext(context.Background()) +} + +func (i ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs) ToClusterCapacityProvidersDefaultCapacityProviderStrategyOutputWithContext(ctx context.Context) ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) +} + +// ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayInput is an input type that accepts ClusterCapacityProvidersDefaultCapacityProviderStrategyArray and ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput values. +// You can construct a concrete instance of `ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayInput` via: +// +// ClusterCapacityProvidersDefaultCapacityProviderStrategyArray{ ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs{...} } +type ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayInput interface { + pulumi.Input + + ToClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput() ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput + ToClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutputWithContext(context.Context) ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput +} + +type ClusterCapacityProvidersDefaultCapacityProviderStrategyArray []ClusterCapacityProvidersDefaultCapacityProviderStrategyInput + +func (ClusterCapacityProvidersDefaultCapacityProviderStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ClusterCapacityProvidersDefaultCapacityProviderStrategy)(nil)).Elem() +} + +func (i ClusterCapacityProvidersDefaultCapacityProviderStrategyArray) ToClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput() ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput { + return i.ToClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutputWithContext(context.Background()) +} + +func (i ClusterCapacityProvidersDefaultCapacityProviderStrategyArray) ToClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput) +} + +type ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput struct{ *pulumi.OutputState } + +func (ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterCapacityProvidersDefaultCapacityProviderStrategy)(nil)).Elem() +} + +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) ToClusterCapacityProvidersDefaultCapacityProviderStrategyOutput() ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput { + return o +} + +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) ToClusterCapacityProvidersDefaultCapacityProviderStrategyOutputWithContext(ctx context.Context) ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput { + return o +} + +// The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) Base() pulumi.IntPtrOutput { + return o.ApplyT(func(v ClusterCapacityProvidersDefaultCapacityProviderStrategy) *int { return v.Base }).(pulumi.IntPtrOutput) +} + +// Name of the capacity provider. +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) CapacityProvider() pulumi.StringOutput { + return o.ApplyT(func(v ClusterCapacityProvidersDefaultCapacityProviderStrategy) string { return v.CapacityProvider }).(pulumi.StringOutput) +} + +// The relative percentage of the total number of launched tasks that should use the specified capacity provider. The `weight` value is taken into consideration after the `base` count of tasks has been satisfied. Defaults to `0`. +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v ClusterCapacityProvidersDefaultCapacityProviderStrategy) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput struct{ *pulumi.OutputState } + +func (ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ClusterCapacityProvidersDefaultCapacityProviderStrategy)(nil)).Elem() +} + +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput) ToClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput() ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput { + return o +} + +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput) ToClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput { + return o +} + +func (o ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput) Index(i pulumi.IntInput) ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterCapacityProvidersDefaultCapacityProviderStrategy { + return vs[0].([]ClusterCapacityProvidersDefaultCapacityProviderStrategy)[vs[1].(int)] + }).(ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput) +} + +type ClusterConfiguration struct { + // Details of the execute command configuration. See `executeCommandConfiguration` Block for details. + ExecuteCommandConfiguration *ClusterConfigurationExecuteCommandConfiguration `pulumi:"executeCommandConfiguration"` + // Details of the managed storage configuration. See `managedStorageConfiguration` Block for details. + ManagedStorageConfiguration *ClusterConfigurationManagedStorageConfiguration `pulumi:"managedStorageConfiguration"` +} + +// ClusterConfigurationInput is an input type that accepts ClusterConfigurationArgs and ClusterConfigurationOutput values. +// You can construct a concrete instance of `ClusterConfigurationInput` via: +// +// ClusterConfigurationArgs{...} +type ClusterConfigurationInput interface { + pulumi.Input + + ToClusterConfigurationOutput() ClusterConfigurationOutput + ToClusterConfigurationOutputWithContext(context.Context) ClusterConfigurationOutput +} + +type ClusterConfigurationArgs struct { + // Details of the execute command configuration. See `executeCommandConfiguration` Block for details. + ExecuteCommandConfiguration ClusterConfigurationExecuteCommandConfigurationPtrInput `pulumi:"executeCommandConfiguration"` + // Details of the managed storage configuration. See `managedStorageConfiguration` Block for details. + ManagedStorageConfiguration ClusterConfigurationManagedStorageConfigurationPtrInput `pulumi:"managedStorageConfiguration"` +} + +func (ClusterConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfiguration)(nil)).Elem() +} + +func (i ClusterConfigurationArgs) ToClusterConfigurationOutput() ClusterConfigurationOutput { + return i.ToClusterConfigurationOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationArgs) ToClusterConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationOutput) +} + +func (i ClusterConfigurationArgs) ToClusterConfigurationPtrOutput() ClusterConfigurationPtrOutput { + return i.ToClusterConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationArgs) ToClusterConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationOutput).ToClusterConfigurationPtrOutputWithContext(ctx) +} + +// ClusterConfigurationPtrInput is an input type that accepts ClusterConfigurationArgs, ClusterConfigurationPtr and ClusterConfigurationPtrOutput values. +// You can construct a concrete instance of `ClusterConfigurationPtrInput` via: +// +// ClusterConfigurationArgs{...} +// +// or: +// +// nil +type ClusterConfigurationPtrInput interface { + pulumi.Input + + ToClusterConfigurationPtrOutput() ClusterConfigurationPtrOutput + ToClusterConfigurationPtrOutputWithContext(context.Context) ClusterConfigurationPtrOutput +} + +type clusterConfigurationPtrType ClusterConfigurationArgs + +func ClusterConfigurationPtr(v *ClusterConfigurationArgs) ClusterConfigurationPtrInput { + return (*clusterConfigurationPtrType)(v) +} + +func (*clusterConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfiguration)(nil)).Elem() +} + +func (i *clusterConfigurationPtrType) ToClusterConfigurationPtrOutput() ClusterConfigurationPtrOutput { + return i.ToClusterConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *clusterConfigurationPtrType) ToClusterConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationPtrOutput) +} + +type ClusterConfigurationOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationOutput) ToClusterConfigurationOutput() ClusterConfigurationOutput { + return o +} + +func (o ClusterConfigurationOutput) ToClusterConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationOutput { + return o +} + +func (o ClusterConfigurationOutput) ToClusterConfigurationPtrOutput() ClusterConfigurationPtrOutput { + return o.ToClusterConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ClusterConfigurationOutput) ToClusterConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterConfiguration) *ClusterConfiguration { + return &v + }).(ClusterConfigurationPtrOutput) +} + +// Details of the execute command configuration. See `executeCommandConfiguration` Block for details. +func (o ClusterConfigurationOutput) ExecuteCommandConfiguration() ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return o.ApplyT(func(v ClusterConfiguration) *ClusterConfigurationExecuteCommandConfiguration { + return v.ExecuteCommandConfiguration + }).(ClusterConfigurationExecuteCommandConfigurationPtrOutput) +} + +// Details of the managed storage configuration. See `managedStorageConfiguration` Block for details. +func (o ClusterConfigurationOutput) ManagedStorageConfiguration() ClusterConfigurationManagedStorageConfigurationPtrOutput { + return o.ApplyT(func(v ClusterConfiguration) *ClusterConfigurationManagedStorageConfiguration { + return v.ManagedStorageConfiguration + }).(ClusterConfigurationManagedStorageConfigurationPtrOutput) +} + +type ClusterConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationPtrOutput) ToClusterConfigurationPtrOutput() ClusterConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationPtrOutput) ToClusterConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationPtrOutput) Elem() ClusterConfigurationOutput { + return o.ApplyT(func(v *ClusterConfiguration) ClusterConfiguration { + if v != nil { + return *v + } + var ret ClusterConfiguration + return ret + }).(ClusterConfigurationOutput) +} + +// Details of the execute command configuration. See `executeCommandConfiguration` Block for details. +func (o ClusterConfigurationPtrOutput) ExecuteCommandConfiguration() ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return o.ApplyT(func(v *ClusterConfiguration) *ClusterConfigurationExecuteCommandConfiguration { + if v == nil { + return nil + } + return v.ExecuteCommandConfiguration + }).(ClusterConfigurationExecuteCommandConfigurationPtrOutput) +} + +// Details of the managed storage configuration. See `managedStorageConfiguration` Block for details. +func (o ClusterConfigurationPtrOutput) ManagedStorageConfiguration() ClusterConfigurationManagedStorageConfigurationPtrOutput { + return o.ApplyT(func(v *ClusterConfiguration) *ClusterConfigurationManagedStorageConfiguration { + if v == nil { + return nil + } + return v.ManagedStorageConfiguration + }).(ClusterConfigurationManagedStorageConfigurationPtrOutput) +} + +type ClusterConfigurationExecuteCommandConfiguration struct { + // AWS Key Management Service key ID to encrypt the data between the local client and the container. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Log configuration for the results of the execute command actions. Required when `logging` is `OVERRIDE`. See `logConfiguration` Block for details. + LogConfiguration *ClusterConfigurationExecuteCommandConfigurationLogConfiguration `pulumi:"logConfiguration"` + // Log setting to use for redirecting logs for your execute command results. Valid values: `NONE`, `DEFAULT`, `OVERRIDE`. + Logging *string `pulumi:"logging"` +} + +// ClusterConfigurationExecuteCommandConfigurationInput is an input type that accepts ClusterConfigurationExecuteCommandConfigurationArgs and ClusterConfigurationExecuteCommandConfigurationOutput values. +// You can construct a concrete instance of `ClusterConfigurationExecuteCommandConfigurationInput` via: +// +// ClusterConfigurationExecuteCommandConfigurationArgs{...} +type ClusterConfigurationExecuteCommandConfigurationInput interface { + pulumi.Input + + ToClusterConfigurationExecuteCommandConfigurationOutput() ClusterConfigurationExecuteCommandConfigurationOutput + ToClusterConfigurationExecuteCommandConfigurationOutputWithContext(context.Context) ClusterConfigurationExecuteCommandConfigurationOutput +} + +type ClusterConfigurationExecuteCommandConfigurationArgs struct { + // AWS Key Management Service key ID to encrypt the data between the local client and the container. + KmsKeyId pulumi.StringPtrInput `pulumi:"kmsKeyId"` + // Log configuration for the results of the execute command actions. Required when `logging` is `OVERRIDE`. See `logConfiguration` Block for details. + LogConfiguration ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrInput `pulumi:"logConfiguration"` + // Log setting to use for redirecting logs for your execute command results. Valid values: `NONE`, `DEFAULT`, `OVERRIDE`. + Logging pulumi.StringPtrInput `pulumi:"logging"` +} + +func (ClusterConfigurationExecuteCommandConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfigurationExecuteCommandConfiguration)(nil)).Elem() +} + +func (i ClusterConfigurationExecuteCommandConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationOutput() ClusterConfigurationExecuteCommandConfigurationOutput { + return i.ToClusterConfigurationExecuteCommandConfigurationOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationExecuteCommandConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationExecuteCommandConfigurationOutput) +} + +func (i ClusterConfigurationExecuteCommandConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return i.ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationExecuteCommandConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationExecuteCommandConfigurationOutput).ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(ctx) +} + +// ClusterConfigurationExecuteCommandConfigurationPtrInput is an input type that accepts ClusterConfigurationExecuteCommandConfigurationArgs, ClusterConfigurationExecuteCommandConfigurationPtr and ClusterConfigurationExecuteCommandConfigurationPtrOutput values. +// You can construct a concrete instance of `ClusterConfigurationExecuteCommandConfigurationPtrInput` via: +// +// ClusterConfigurationExecuteCommandConfigurationArgs{...} +// +// or: +// +// nil +type ClusterConfigurationExecuteCommandConfigurationPtrInput interface { + pulumi.Input + + ToClusterConfigurationExecuteCommandConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationPtrOutput + ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(context.Context) ClusterConfigurationExecuteCommandConfigurationPtrOutput +} + +type clusterConfigurationExecuteCommandConfigurationPtrType ClusterConfigurationExecuteCommandConfigurationArgs + +func ClusterConfigurationExecuteCommandConfigurationPtr(v *ClusterConfigurationExecuteCommandConfigurationArgs) ClusterConfigurationExecuteCommandConfigurationPtrInput { + return (*clusterConfigurationExecuteCommandConfigurationPtrType)(v) +} + +func (*clusterConfigurationExecuteCommandConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfigurationExecuteCommandConfiguration)(nil)).Elem() +} + +func (i *clusterConfigurationExecuteCommandConfigurationPtrType) ToClusterConfigurationExecuteCommandConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return i.ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *clusterConfigurationExecuteCommandConfigurationPtrType) ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationExecuteCommandConfigurationPtrOutput) +} + +type ClusterConfigurationExecuteCommandConfigurationOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationExecuteCommandConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfigurationExecuteCommandConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationExecuteCommandConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationOutput() ClusterConfigurationExecuteCommandConfigurationOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return o.ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ClusterConfigurationExecuteCommandConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterConfigurationExecuteCommandConfiguration) *ClusterConfigurationExecuteCommandConfiguration { + return &v + }).(ClusterConfigurationExecuteCommandConfigurationPtrOutput) +} + +// AWS Key Management Service key ID to encrypt the data between the local client and the container. +func (o ClusterConfigurationExecuteCommandConfigurationOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfiguration) *string { return v.KmsKeyId }).(pulumi.StringPtrOutput) +} + +// Log configuration for the results of the execute command actions. Required when `logging` is `OVERRIDE`. See `logConfiguration` Block for details. +func (o ClusterConfigurationExecuteCommandConfigurationOutput) LogConfiguration() ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfiguration) *ClusterConfigurationExecuteCommandConfigurationLogConfiguration { + return v.LogConfiguration + }).(ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) +} + +// Log setting to use for redirecting logs for your execute command results. Valid values: `NONE`, `DEFAULT`, `OVERRIDE`. +func (o ClusterConfigurationExecuteCommandConfigurationOutput) Logging() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfiguration) *string { return v.Logging }).(pulumi.StringPtrOutput) +} + +type ClusterConfigurationExecuteCommandConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationExecuteCommandConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfigurationExecuteCommandConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationExecuteCommandConfigurationPtrOutput) ToClusterConfigurationExecuteCommandConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationPtrOutput) ToClusterConfigurationExecuteCommandConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationPtrOutput) Elem() ClusterConfigurationExecuteCommandConfigurationOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfiguration) ClusterConfigurationExecuteCommandConfiguration { + if v != nil { + return *v + } + var ret ClusterConfigurationExecuteCommandConfiguration + return ret + }).(ClusterConfigurationExecuteCommandConfigurationOutput) +} + +// AWS Key Management Service key ID to encrypt the data between the local client and the container. +func (o ClusterConfigurationExecuteCommandConfigurationPtrOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfiguration) *string { + if v == nil { + return nil + } + return v.KmsKeyId + }).(pulumi.StringPtrOutput) +} + +// Log configuration for the results of the execute command actions. Required when `logging` is `OVERRIDE`. See `logConfiguration` Block for details. +func (o ClusterConfigurationExecuteCommandConfigurationPtrOutput) LogConfiguration() ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfiguration) *ClusterConfigurationExecuteCommandConfigurationLogConfiguration { + if v == nil { + return nil + } + return v.LogConfiguration + }).(ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) +} + +// Log setting to use for redirecting logs for your execute command results. Valid values: `NONE`, `DEFAULT`, `OVERRIDE`. +func (o ClusterConfigurationExecuteCommandConfigurationPtrOutput) Logging() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfiguration) *string { + if v == nil { + return nil + } + return v.Logging + }).(pulumi.StringPtrOutput) +} + +type ClusterConfigurationExecuteCommandConfigurationLogConfiguration struct { + // Whether to enable encryption on the CloudWatch logs. If not specified, encryption will be disabled. + CloudWatchEncryptionEnabled *bool `pulumi:"cloudWatchEncryptionEnabled"` + // The name of the CloudWatch log group to send logs to. + CloudWatchLogGroupName *string `pulumi:"cloudWatchLogGroupName"` + // Whether to enable encryption on the logs sent to S3. If not specified, encryption will be disabled. + S3BucketEncryptionEnabled *bool `pulumi:"s3BucketEncryptionEnabled"` + // Name of the S3 bucket to send logs to. + S3BucketName *string `pulumi:"s3BucketName"` + // Optional folder in the S3 bucket to place logs in. + S3KeyPrefix *string `pulumi:"s3KeyPrefix"` +} + +// ClusterConfigurationExecuteCommandConfigurationLogConfigurationInput is an input type that accepts ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs and ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput values. +// You can construct a concrete instance of `ClusterConfigurationExecuteCommandConfigurationLogConfigurationInput` via: +// +// ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs{...} +type ClusterConfigurationExecuteCommandConfigurationLogConfigurationInput interface { + pulumi.Input + + ToClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput + ToClusterConfigurationExecuteCommandConfigurationLogConfigurationOutputWithContext(context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput +} + +type ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs struct { + // Whether to enable encryption on the CloudWatch logs. If not specified, encryption will be disabled. + CloudWatchEncryptionEnabled pulumi.BoolPtrInput `pulumi:"cloudWatchEncryptionEnabled"` + // The name of the CloudWatch log group to send logs to. + CloudWatchLogGroupName pulumi.StringPtrInput `pulumi:"cloudWatchLogGroupName"` + // Whether to enable encryption on the logs sent to S3. If not specified, encryption will be disabled. + S3BucketEncryptionEnabled pulumi.BoolPtrInput `pulumi:"s3BucketEncryptionEnabled"` + // Name of the S3 bucket to send logs to. + S3BucketName pulumi.StringPtrInput `pulumi:"s3BucketName"` + // Optional folder in the S3 bucket to place logs in. + S3KeyPrefix pulumi.StringPtrInput `pulumi:"s3KeyPrefix"` +} + +func (ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfigurationExecuteCommandConfigurationLogConfiguration)(nil)).Elem() +} + +func (i ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput { + return i.ToClusterConfigurationExecuteCommandConfigurationLogConfigurationOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) +} + +func (i ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return i.ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput).ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(ctx) +} + +// ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrInput is an input type that accepts ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs, ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtr and ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput values. +// You can construct a concrete instance of `ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrInput` via: +// +// ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs{...} +// +// or: +// +// nil +type ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrInput interface { + pulumi.Input + + ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput + ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput +} + +type clusterConfigurationExecuteCommandConfigurationLogConfigurationPtrType ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs + +func ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtr(v *ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs) ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrInput { + return (*clusterConfigurationExecuteCommandConfigurationLogConfigurationPtrType)(v) +} + +func (*clusterConfigurationExecuteCommandConfigurationLogConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfigurationExecuteCommandConfigurationLogConfiguration)(nil)).Elem() +} + +func (i *clusterConfigurationExecuteCommandConfigurationLogConfigurationPtrType) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return i.ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *clusterConfigurationExecuteCommandConfigurationLogConfigurationPtrType) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) +} + +type ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfigurationExecuteCommandConfigurationLogConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return o.ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *ClusterConfigurationExecuteCommandConfigurationLogConfiguration { + return &v + }).(ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) +} + +// Whether to enable encryption on the CloudWatch logs. If not specified, encryption will be disabled. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) CloudWatchEncryptionEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *bool { + return v.CloudWatchEncryptionEnabled + }).(pulumi.BoolPtrOutput) +} + +// The name of the CloudWatch log group to send logs to. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) CloudWatchLogGroupName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *string { + return v.CloudWatchLogGroupName + }).(pulumi.StringPtrOutput) +} + +// Whether to enable encryption on the logs sent to S3. If not specified, encryption will be disabled. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) S3BucketEncryptionEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *bool { + return v.S3BucketEncryptionEnabled + }).(pulumi.BoolPtrOutput) +} + +// Name of the S3 bucket to send logs to. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) S3BucketName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *string { return v.S3BucketName }).(pulumi.StringPtrOutput) +} + +// Optional folder in the S3 bucket to place logs in. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) S3KeyPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *string { return v.S3KeyPrefix }).(pulumi.StringPtrOutput) +} + +type ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfigurationExecuteCommandConfigurationLogConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput() ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) ToClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) Elem() ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfigurationLogConfiguration) ClusterConfigurationExecuteCommandConfigurationLogConfiguration { + if v != nil { + return *v + } + var ret ClusterConfigurationExecuteCommandConfigurationLogConfiguration + return ret + }).(ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput) +} + +// Whether to enable encryption on the CloudWatch logs. If not specified, encryption will be disabled. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) CloudWatchEncryptionEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *bool { + if v == nil { + return nil + } + return v.CloudWatchEncryptionEnabled + }).(pulumi.BoolPtrOutput) +} + +// The name of the CloudWatch log group to send logs to. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) CloudWatchLogGroupName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *string { + if v == nil { + return nil + } + return v.CloudWatchLogGroupName + }).(pulumi.StringPtrOutput) +} + +// Whether to enable encryption on the logs sent to S3. If not specified, encryption will be disabled. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) S3BucketEncryptionEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *bool { + if v == nil { + return nil + } + return v.S3BucketEncryptionEnabled + }).(pulumi.BoolPtrOutput) +} + +// Name of the S3 bucket to send logs to. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) S3BucketName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *string { + if v == nil { + return nil + } + return v.S3BucketName + }).(pulumi.StringPtrOutput) +} + +// Optional folder in the S3 bucket to place logs in. +func (o ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput) S3KeyPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationExecuteCommandConfigurationLogConfiguration) *string { + if v == nil { + return nil + } + return v.S3KeyPrefix + }).(pulumi.StringPtrOutput) +} + +type ClusterConfigurationManagedStorageConfiguration struct { + // AWS Key Management Service key ID for the Fargate ephemeral storage. + FargateEphemeralStorageKmsKeyId *string `pulumi:"fargateEphemeralStorageKmsKeyId"` + // AWS Key Management Service key ID to encrypt the managed storage. + KmsKeyId *string `pulumi:"kmsKeyId"` +} + +// ClusterConfigurationManagedStorageConfigurationInput is an input type that accepts ClusterConfigurationManagedStorageConfigurationArgs and ClusterConfigurationManagedStorageConfigurationOutput values. +// You can construct a concrete instance of `ClusterConfigurationManagedStorageConfigurationInput` via: +// +// ClusterConfigurationManagedStorageConfigurationArgs{...} +type ClusterConfigurationManagedStorageConfigurationInput interface { + pulumi.Input + + ToClusterConfigurationManagedStorageConfigurationOutput() ClusterConfigurationManagedStorageConfigurationOutput + ToClusterConfigurationManagedStorageConfigurationOutputWithContext(context.Context) ClusterConfigurationManagedStorageConfigurationOutput +} + +type ClusterConfigurationManagedStorageConfigurationArgs struct { + // AWS Key Management Service key ID for the Fargate ephemeral storage. + FargateEphemeralStorageKmsKeyId pulumi.StringPtrInput `pulumi:"fargateEphemeralStorageKmsKeyId"` + // AWS Key Management Service key ID to encrypt the managed storage. + KmsKeyId pulumi.StringPtrInput `pulumi:"kmsKeyId"` +} + +func (ClusterConfigurationManagedStorageConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfigurationManagedStorageConfiguration)(nil)).Elem() +} + +func (i ClusterConfigurationManagedStorageConfigurationArgs) ToClusterConfigurationManagedStorageConfigurationOutput() ClusterConfigurationManagedStorageConfigurationOutput { + return i.ToClusterConfigurationManagedStorageConfigurationOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationManagedStorageConfigurationArgs) ToClusterConfigurationManagedStorageConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationManagedStorageConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationManagedStorageConfigurationOutput) +} + +func (i ClusterConfigurationManagedStorageConfigurationArgs) ToClusterConfigurationManagedStorageConfigurationPtrOutput() ClusterConfigurationManagedStorageConfigurationPtrOutput { + return i.ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ClusterConfigurationManagedStorageConfigurationArgs) ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationManagedStorageConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationManagedStorageConfigurationOutput).ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(ctx) +} + +// ClusterConfigurationManagedStorageConfigurationPtrInput is an input type that accepts ClusterConfigurationManagedStorageConfigurationArgs, ClusterConfigurationManagedStorageConfigurationPtr and ClusterConfigurationManagedStorageConfigurationPtrOutput values. +// You can construct a concrete instance of `ClusterConfigurationManagedStorageConfigurationPtrInput` via: +// +// ClusterConfigurationManagedStorageConfigurationArgs{...} +// +// or: +// +// nil +type ClusterConfigurationManagedStorageConfigurationPtrInput interface { + pulumi.Input + + ToClusterConfigurationManagedStorageConfigurationPtrOutput() ClusterConfigurationManagedStorageConfigurationPtrOutput + ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(context.Context) ClusterConfigurationManagedStorageConfigurationPtrOutput +} + +type clusterConfigurationManagedStorageConfigurationPtrType ClusterConfigurationManagedStorageConfigurationArgs + +func ClusterConfigurationManagedStorageConfigurationPtr(v *ClusterConfigurationManagedStorageConfigurationArgs) ClusterConfigurationManagedStorageConfigurationPtrInput { + return (*clusterConfigurationManagedStorageConfigurationPtrType)(v) +} + +func (*clusterConfigurationManagedStorageConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfigurationManagedStorageConfiguration)(nil)).Elem() +} + +func (i *clusterConfigurationManagedStorageConfigurationPtrType) ToClusterConfigurationManagedStorageConfigurationPtrOutput() ClusterConfigurationManagedStorageConfigurationPtrOutput { + return i.ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *clusterConfigurationManagedStorageConfigurationPtrType) ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationManagedStorageConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterConfigurationManagedStorageConfigurationPtrOutput) +} + +type ClusterConfigurationManagedStorageConfigurationOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationManagedStorageConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterConfigurationManagedStorageConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationManagedStorageConfigurationOutput) ToClusterConfigurationManagedStorageConfigurationOutput() ClusterConfigurationManagedStorageConfigurationOutput { + return o +} + +func (o ClusterConfigurationManagedStorageConfigurationOutput) ToClusterConfigurationManagedStorageConfigurationOutputWithContext(ctx context.Context) ClusterConfigurationManagedStorageConfigurationOutput { + return o +} + +func (o ClusterConfigurationManagedStorageConfigurationOutput) ToClusterConfigurationManagedStorageConfigurationPtrOutput() ClusterConfigurationManagedStorageConfigurationPtrOutput { + return o.ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ClusterConfigurationManagedStorageConfigurationOutput) ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationManagedStorageConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterConfigurationManagedStorageConfiguration) *ClusterConfigurationManagedStorageConfiguration { + return &v + }).(ClusterConfigurationManagedStorageConfigurationPtrOutput) +} + +// AWS Key Management Service key ID for the Fargate ephemeral storage. +func (o ClusterConfigurationManagedStorageConfigurationOutput) FargateEphemeralStorageKmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterConfigurationManagedStorageConfiguration) *string { + return v.FargateEphemeralStorageKmsKeyId + }).(pulumi.StringPtrOutput) +} + +// AWS Key Management Service key ID to encrypt the managed storage. +func (o ClusterConfigurationManagedStorageConfigurationOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ClusterConfigurationManagedStorageConfiguration) *string { return v.KmsKeyId }).(pulumi.StringPtrOutput) +} + +type ClusterConfigurationManagedStorageConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ClusterConfigurationManagedStorageConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterConfigurationManagedStorageConfiguration)(nil)).Elem() +} + +func (o ClusterConfigurationManagedStorageConfigurationPtrOutput) ToClusterConfigurationManagedStorageConfigurationPtrOutput() ClusterConfigurationManagedStorageConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationManagedStorageConfigurationPtrOutput) ToClusterConfigurationManagedStorageConfigurationPtrOutputWithContext(ctx context.Context) ClusterConfigurationManagedStorageConfigurationPtrOutput { + return o +} + +func (o ClusterConfigurationManagedStorageConfigurationPtrOutput) Elem() ClusterConfigurationManagedStorageConfigurationOutput { + return o.ApplyT(func(v *ClusterConfigurationManagedStorageConfiguration) ClusterConfigurationManagedStorageConfiguration { + if v != nil { + return *v + } + var ret ClusterConfigurationManagedStorageConfiguration + return ret + }).(ClusterConfigurationManagedStorageConfigurationOutput) +} + +// AWS Key Management Service key ID for the Fargate ephemeral storage. +func (o ClusterConfigurationManagedStorageConfigurationPtrOutput) FargateEphemeralStorageKmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationManagedStorageConfiguration) *string { + if v == nil { + return nil + } + return v.FargateEphemeralStorageKmsKeyId + }).(pulumi.StringPtrOutput) +} + +// AWS Key Management Service key ID to encrypt the managed storage. +func (o ClusterConfigurationManagedStorageConfigurationPtrOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterConfigurationManagedStorageConfiguration) *string { + if v == nil { + return nil + } + return v.KmsKeyId + }).(pulumi.StringPtrOutput) +} + +type ClusterServiceConnectDefaults struct { + // ARN of the `servicediscovery.HttpNamespace` that's used when you create a service and don't specify a Service Connect configuration. + Namespace string `pulumi:"namespace"` +} + +// ClusterServiceConnectDefaultsInput is an input type that accepts ClusterServiceConnectDefaultsArgs and ClusterServiceConnectDefaultsOutput values. +// You can construct a concrete instance of `ClusterServiceConnectDefaultsInput` via: +// +// ClusterServiceConnectDefaultsArgs{...} +type ClusterServiceConnectDefaultsInput interface { + pulumi.Input + + ToClusterServiceConnectDefaultsOutput() ClusterServiceConnectDefaultsOutput + ToClusterServiceConnectDefaultsOutputWithContext(context.Context) ClusterServiceConnectDefaultsOutput +} + +type ClusterServiceConnectDefaultsArgs struct { + // ARN of the `servicediscovery.HttpNamespace` that's used when you create a service and don't specify a Service Connect configuration. + Namespace pulumi.StringInput `pulumi:"namespace"` +} + +func (ClusterServiceConnectDefaultsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterServiceConnectDefaults)(nil)).Elem() +} + +func (i ClusterServiceConnectDefaultsArgs) ToClusterServiceConnectDefaultsOutput() ClusterServiceConnectDefaultsOutput { + return i.ToClusterServiceConnectDefaultsOutputWithContext(context.Background()) +} + +func (i ClusterServiceConnectDefaultsArgs) ToClusterServiceConnectDefaultsOutputWithContext(ctx context.Context) ClusterServiceConnectDefaultsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterServiceConnectDefaultsOutput) +} + +func (i ClusterServiceConnectDefaultsArgs) ToClusterServiceConnectDefaultsPtrOutput() ClusterServiceConnectDefaultsPtrOutput { + return i.ToClusterServiceConnectDefaultsPtrOutputWithContext(context.Background()) +} + +func (i ClusterServiceConnectDefaultsArgs) ToClusterServiceConnectDefaultsPtrOutputWithContext(ctx context.Context) ClusterServiceConnectDefaultsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterServiceConnectDefaultsOutput).ToClusterServiceConnectDefaultsPtrOutputWithContext(ctx) +} + +// ClusterServiceConnectDefaultsPtrInput is an input type that accepts ClusterServiceConnectDefaultsArgs, ClusterServiceConnectDefaultsPtr and ClusterServiceConnectDefaultsPtrOutput values. +// You can construct a concrete instance of `ClusterServiceConnectDefaultsPtrInput` via: +// +// ClusterServiceConnectDefaultsArgs{...} +// +// or: +// +// nil +type ClusterServiceConnectDefaultsPtrInput interface { + pulumi.Input + + ToClusterServiceConnectDefaultsPtrOutput() ClusterServiceConnectDefaultsPtrOutput + ToClusterServiceConnectDefaultsPtrOutputWithContext(context.Context) ClusterServiceConnectDefaultsPtrOutput +} + +type clusterServiceConnectDefaultsPtrType ClusterServiceConnectDefaultsArgs + +func ClusterServiceConnectDefaultsPtr(v *ClusterServiceConnectDefaultsArgs) ClusterServiceConnectDefaultsPtrInput { + return (*clusterServiceConnectDefaultsPtrType)(v) +} + +func (*clusterServiceConnectDefaultsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterServiceConnectDefaults)(nil)).Elem() +} + +func (i *clusterServiceConnectDefaultsPtrType) ToClusterServiceConnectDefaultsPtrOutput() ClusterServiceConnectDefaultsPtrOutput { + return i.ToClusterServiceConnectDefaultsPtrOutputWithContext(context.Background()) +} + +func (i *clusterServiceConnectDefaultsPtrType) ToClusterServiceConnectDefaultsPtrOutputWithContext(ctx context.Context) ClusterServiceConnectDefaultsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterServiceConnectDefaultsPtrOutput) +} + +type ClusterServiceConnectDefaultsOutput struct{ *pulumi.OutputState } + +func (ClusterServiceConnectDefaultsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterServiceConnectDefaults)(nil)).Elem() +} + +func (o ClusterServiceConnectDefaultsOutput) ToClusterServiceConnectDefaultsOutput() ClusterServiceConnectDefaultsOutput { + return o +} + +func (o ClusterServiceConnectDefaultsOutput) ToClusterServiceConnectDefaultsOutputWithContext(ctx context.Context) ClusterServiceConnectDefaultsOutput { + return o +} + +func (o ClusterServiceConnectDefaultsOutput) ToClusterServiceConnectDefaultsPtrOutput() ClusterServiceConnectDefaultsPtrOutput { + return o.ToClusterServiceConnectDefaultsPtrOutputWithContext(context.Background()) +} + +func (o ClusterServiceConnectDefaultsOutput) ToClusterServiceConnectDefaultsPtrOutputWithContext(ctx context.Context) ClusterServiceConnectDefaultsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ClusterServiceConnectDefaults) *ClusterServiceConnectDefaults { + return &v + }).(ClusterServiceConnectDefaultsPtrOutput) +} + +// ARN of the `servicediscovery.HttpNamespace` that's used when you create a service and don't specify a Service Connect configuration. +func (o ClusterServiceConnectDefaultsOutput) Namespace() pulumi.StringOutput { + return o.ApplyT(func(v ClusterServiceConnectDefaults) string { return v.Namespace }).(pulumi.StringOutput) +} + +type ClusterServiceConnectDefaultsPtrOutput struct{ *pulumi.OutputState } + +func (ClusterServiceConnectDefaultsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ClusterServiceConnectDefaults)(nil)).Elem() +} + +func (o ClusterServiceConnectDefaultsPtrOutput) ToClusterServiceConnectDefaultsPtrOutput() ClusterServiceConnectDefaultsPtrOutput { + return o +} + +func (o ClusterServiceConnectDefaultsPtrOutput) ToClusterServiceConnectDefaultsPtrOutputWithContext(ctx context.Context) ClusterServiceConnectDefaultsPtrOutput { + return o +} + +func (o ClusterServiceConnectDefaultsPtrOutput) Elem() ClusterServiceConnectDefaultsOutput { + return o.ApplyT(func(v *ClusterServiceConnectDefaults) ClusterServiceConnectDefaults { + if v != nil { + return *v + } + var ret ClusterServiceConnectDefaults + return ret + }).(ClusterServiceConnectDefaultsOutput) +} + +// ARN of the `servicediscovery.HttpNamespace` that's used when you create a service and don't specify a Service Connect configuration. +func (o ClusterServiceConnectDefaultsPtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ClusterServiceConnectDefaults) *string { + if v == nil { + return nil + } + return &v.Namespace + }).(pulumi.StringPtrOutput) +} + +type ClusterSetting struct { + // Name of the setting to manage. Valid values: `containerInsights`. + Name string `pulumi:"name"` + // Value to assign to the setting. Valid values: `enabled`, `disabled`. + Value string `pulumi:"value"` +} + +// ClusterSettingInput is an input type that accepts ClusterSettingArgs and ClusterSettingOutput values. +// You can construct a concrete instance of `ClusterSettingInput` via: +// +// ClusterSettingArgs{...} +type ClusterSettingInput interface { + pulumi.Input + + ToClusterSettingOutput() ClusterSettingOutput + ToClusterSettingOutputWithContext(context.Context) ClusterSettingOutput +} + +type ClusterSettingArgs struct { + // Name of the setting to manage. Valid values: `containerInsights`. + Name pulumi.StringInput `pulumi:"name"` + // Value to assign to the setting. Valid values: `enabled`, `disabled`. + Value pulumi.StringInput `pulumi:"value"` +} + +func (ClusterSettingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterSetting)(nil)).Elem() +} + +func (i ClusterSettingArgs) ToClusterSettingOutput() ClusterSettingOutput { + return i.ToClusterSettingOutputWithContext(context.Background()) +} + +func (i ClusterSettingArgs) ToClusterSettingOutputWithContext(ctx context.Context) ClusterSettingOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterSettingOutput) +} + +// ClusterSettingArrayInput is an input type that accepts ClusterSettingArray and ClusterSettingArrayOutput values. +// You can construct a concrete instance of `ClusterSettingArrayInput` via: +// +// ClusterSettingArray{ ClusterSettingArgs{...} } +type ClusterSettingArrayInput interface { + pulumi.Input + + ToClusterSettingArrayOutput() ClusterSettingArrayOutput + ToClusterSettingArrayOutputWithContext(context.Context) ClusterSettingArrayOutput +} + +type ClusterSettingArray []ClusterSettingInput + +func (ClusterSettingArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ClusterSetting)(nil)).Elem() +} + +func (i ClusterSettingArray) ToClusterSettingArrayOutput() ClusterSettingArrayOutput { + return i.ToClusterSettingArrayOutputWithContext(context.Background()) +} + +func (i ClusterSettingArray) ToClusterSettingArrayOutputWithContext(ctx context.Context) ClusterSettingArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ClusterSettingArrayOutput) +} + +type ClusterSettingOutput struct{ *pulumi.OutputState } + +func (ClusterSettingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ClusterSetting)(nil)).Elem() +} + +func (o ClusterSettingOutput) ToClusterSettingOutput() ClusterSettingOutput { + return o +} + +func (o ClusterSettingOutput) ToClusterSettingOutputWithContext(ctx context.Context) ClusterSettingOutput { + return o +} + +// Name of the setting to manage. Valid values: `containerInsights`. +func (o ClusterSettingOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ClusterSetting) string { return v.Name }).(pulumi.StringOutput) +} + +// Value to assign to the setting. Valid values: `enabled`, `disabled`. +func (o ClusterSettingOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v ClusterSetting) string { return v.Value }).(pulumi.StringOutput) +} + +type ClusterSettingArrayOutput struct{ *pulumi.OutputState } + +func (ClusterSettingArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ClusterSetting)(nil)).Elem() +} + +func (o ClusterSettingArrayOutput) ToClusterSettingArrayOutput() ClusterSettingArrayOutput { + return o +} + +func (o ClusterSettingArrayOutput) ToClusterSettingArrayOutputWithContext(ctx context.Context) ClusterSettingArrayOutput { + return o +} + +func (o ClusterSettingArrayOutput) Index(i pulumi.IntInput) ClusterSettingOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ClusterSetting { + return vs[0].([]ClusterSetting)[vs[1].(int)] + }).(ClusterSettingOutput) +} + +type ServiceAlarms struct { + // One or more CloudWatch alarm names. + AlarmNames []string `pulumi:"alarmNames"` + // Whether to use the CloudWatch alarm option in the service deployment process. + Enable bool `pulumi:"enable"` + // Whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is used, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. + Rollback bool `pulumi:"rollback"` +} + +// ServiceAlarmsInput is an input type that accepts ServiceAlarmsArgs and ServiceAlarmsOutput values. +// You can construct a concrete instance of `ServiceAlarmsInput` via: +// +// ServiceAlarmsArgs{...} +type ServiceAlarmsInput interface { + pulumi.Input + + ToServiceAlarmsOutput() ServiceAlarmsOutput + ToServiceAlarmsOutputWithContext(context.Context) ServiceAlarmsOutput +} + +type ServiceAlarmsArgs struct { + // One or more CloudWatch alarm names. + AlarmNames pulumi.StringArrayInput `pulumi:"alarmNames"` + // Whether to use the CloudWatch alarm option in the service deployment process. + Enable pulumi.BoolInput `pulumi:"enable"` + // Whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is used, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. + Rollback pulumi.BoolInput `pulumi:"rollback"` +} + +func (ServiceAlarmsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceAlarms)(nil)).Elem() +} + +func (i ServiceAlarmsArgs) ToServiceAlarmsOutput() ServiceAlarmsOutput { + return i.ToServiceAlarmsOutputWithContext(context.Background()) +} + +func (i ServiceAlarmsArgs) ToServiceAlarmsOutputWithContext(ctx context.Context) ServiceAlarmsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceAlarmsOutput) +} + +func (i ServiceAlarmsArgs) ToServiceAlarmsPtrOutput() ServiceAlarmsPtrOutput { + return i.ToServiceAlarmsPtrOutputWithContext(context.Background()) +} + +func (i ServiceAlarmsArgs) ToServiceAlarmsPtrOutputWithContext(ctx context.Context) ServiceAlarmsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceAlarmsOutput).ToServiceAlarmsPtrOutputWithContext(ctx) +} + +// ServiceAlarmsPtrInput is an input type that accepts ServiceAlarmsArgs, ServiceAlarmsPtr and ServiceAlarmsPtrOutput values. +// You can construct a concrete instance of `ServiceAlarmsPtrInput` via: +// +// ServiceAlarmsArgs{...} +// +// or: +// +// nil +type ServiceAlarmsPtrInput interface { + pulumi.Input + + ToServiceAlarmsPtrOutput() ServiceAlarmsPtrOutput + ToServiceAlarmsPtrOutputWithContext(context.Context) ServiceAlarmsPtrOutput +} + +type serviceAlarmsPtrType ServiceAlarmsArgs + +func ServiceAlarmsPtr(v *ServiceAlarmsArgs) ServiceAlarmsPtrInput { + return (*serviceAlarmsPtrType)(v) +} + +func (*serviceAlarmsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceAlarms)(nil)).Elem() +} + +func (i *serviceAlarmsPtrType) ToServiceAlarmsPtrOutput() ServiceAlarmsPtrOutput { + return i.ToServiceAlarmsPtrOutputWithContext(context.Background()) +} + +func (i *serviceAlarmsPtrType) ToServiceAlarmsPtrOutputWithContext(ctx context.Context) ServiceAlarmsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceAlarmsPtrOutput) +} + +type ServiceAlarmsOutput struct{ *pulumi.OutputState } + +func (ServiceAlarmsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceAlarms)(nil)).Elem() +} + +func (o ServiceAlarmsOutput) ToServiceAlarmsOutput() ServiceAlarmsOutput { + return o +} + +func (o ServiceAlarmsOutput) ToServiceAlarmsOutputWithContext(ctx context.Context) ServiceAlarmsOutput { + return o +} + +func (o ServiceAlarmsOutput) ToServiceAlarmsPtrOutput() ServiceAlarmsPtrOutput { + return o.ToServiceAlarmsPtrOutputWithContext(context.Background()) +} + +func (o ServiceAlarmsOutput) ToServiceAlarmsPtrOutputWithContext(ctx context.Context) ServiceAlarmsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceAlarms) *ServiceAlarms { + return &v + }).(ServiceAlarmsPtrOutput) +} + +// One or more CloudWatch alarm names. +func (o ServiceAlarmsOutput) AlarmNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceAlarms) []string { return v.AlarmNames }).(pulumi.StringArrayOutput) +} + +// Whether to use the CloudWatch alarm option in the service deployment process. +func (o ServiceAlarmsOutput) Enable() pulumi.BoolOutput { + return o.ApplyT(func(v ServiceAlarms) bool { return v.Enable }).(pulumi.BoolOutput) +} + +// Whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is used, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. +func (o ServiceAlarmsOutput) Rollback() pulumi.BoolOutput { + return o.ApplyT(func(v ServiceAlarms) bool { return v.Rollback }).(pulumi.BoolOutput) +} + +type ServiceAlarmsPtrOutput struct{ *pulumi.OutputState } + +func (ServiceAlarmsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceAlarms)(nil)).Elem() +} + +func (o ServiceAlarmsPtrOutput) ToServiceAlarmsPtrOutput() ServiceAlarmsPtrOutput { + return o +} + +func (o ServiceAlarmsPtrOutput) ToServiceAlarmsPtrOutputWithContext(ctx context.Context) ServiceAlarmsPtrOutput { + return o +} + +func (o ServiceAlarmsPtrOutput) Elem() ServiceAlarmsOutput { + return o.ApplyT(func(v *ServiceAlarms) ServiceAlarms { + if v != nil { + return *v + } + var ret ServiceAlarms + return ret + }).(ServiceAlarmsOutput) +} + +// One or more CloudWatch alarm names. +func (o ServiceAlarmsPtrOutput) AlarmNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceAlarms) []string { + if v == nil { + return nil + } + return v.AlarmNames + }).(pulumi.StringArrayOutput) +} + +// Whether to use the CloudWatch alarm option in the service deployment process. +func (o ServiceAlarmsPtrOutput) Enable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceAlarms) *bool { + if v == nil { + return nil + } + return &v.Enable + }).(pulumi.BoolPtrOutput) +} + +// Whether to configure Amazon ECS to roll back the service if a service deployment fails. If rollback is used, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. +func (o ServiceAlarmsPtrOutput) Rollback() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceAlarms) *bool { + if v == nil { + return nil + } + return &v.Rollback + }).(pulumi.BoolPtrOutput) +} + +type ServiceCapacityProviderStrategy struct { + // Number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. + Base *int `pulumi:"base"` + // Short name of the capacity provider. + CapacityProvider string `pulumi:"capacityProvider"` + // Relative percentage of the total number of launched tasks that should use the specified capacity provider. + Weight *int `pulumi:"weight"` +} + +// ServiceCapacityProviderStrategyInput is an input type that accepts ServiceCapacityProviderStrategyArgs and ServiceCapacityProviderStrategyOutput values. +// You can construct a concrete instance of `ServiceCapacityProviderStrategyInput` via: +// +// ServiceCapacityProviderStrategyArgs{...} +type ServiceCapacityProviderStrategyInput interface { + pulumi.Input + + ToServiceCapacityProviderStrategyOutput() ServiceCapacityProviderStrategyOutput + ToServiceCapacityProviderStrategyOutputWithContext(context.Context) ServiceCapacityProviderStrategyOutput +} + +type ServiceCapacityProviderStrategyArgs struct { + // Number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. + Base pulumi.IntPtrInput `pulumi:"base"` + // Short name of the capacity provider. + CapacityProvider pulumi.StringInput `pulumi:"capacityProvider"` + // Relative percentage of the total number of launched tasks that should use the specified capacity provider. + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (ServiceCapacityProviderStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceCapacityProviderStrategy)(nil)).Elem() +} + +func (i ServiceCapacityProviderStrategyArgs) ToServiceCapacityProviderStrategyOutput() ServiceCapacityProviderStrategyOutput { + return i.ToServiceCapacityProviderStrategyOutputWithContext(context.Background()) +} + +func (i ServiceCapacityProviderStrategyArgs) ToServiceCapacityProviderStrategyOutputWithContext(ctx context.Context) ServiceCapacityProviderStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceCapacityProviderStrategyOutput) +} + +// ServiceCapacityProviderStrategyArrayInput is an input type that accepts ServiceCapacityProviderStrategyArray and ServiceCapacityProviderStrategyArrayOutput values. +// You can construct a concrete instance of `ServiceCapacityProviderStrategyArrayInput` via: +// +// ServiceCapacityProviderStrategyArray{ ServiceCapacityProviderStrategyArgs{...} } +type ServiceCapacityProviderStrategyArrayInput interface { + pulumi.Input + + ToServiceCapacityProviderStrategyArrayOutput() ServiceCapacityProviderStrategyArrayOutput + ToServiceCapacityProviderStrategyArrayOutputWithContext(context.Context) ServiceCapacityProviderStrategyArrayOutput +} + +type ServiceCapacityProviderStrategyArray []ServiceCapacityProviderStrategyInput + +func (ServiceCapacityProviderStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceCapacityProviderStrategy)(nil)).Elem() +} + +func (i ServiceCapacityProviderStrategyArray) ToServiceCapacityProviderStrategyArrayOutput() ServiceCapacityProviderStrategyArrayOutput { + return i.ToServiceCapacityProviderStrategyArrayOutputWithContext(context.Background()) +} + +func (i ServiceCapacityProviderStrategyArray) ToServiceCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) ServiceCapacityProviderStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceCapacityProviderStrategyArrayOutput) +} + +type ServiceCapacityProviderStrategyOutput struct{ *pulumi.OutputState } + +func (ServiceCapacityProviderStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceCapacityProviderStrategy)(nil)).Elem() +} + +func (o ServiceCapacityProviderStrategyOutput) ToServiceCapacityProviderStrategyOutput() ServiceCapacityProviderStrategyOutput { + return o +} + +func (o ServiceCapacityProviderStrategyOutput) ToServiceCapacityProviderStrategyOutputWithContext(ctx context.Context) ServiceCapacityProviderStrategyOutput { + return o +} + +// Number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. +func (o ServiceCapacityProviderStrategyOutput) Base() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceCapacityProviderStrategy) *int { return v.Base }).(pulumi.IntPtrOutput) +} + +// Short name of the capacity provider. +func (o ServiceCapacityProviderStrategyOutput) CapacityProvider() pulumi.StringOutput { + return o.ApplyT(func(v ServiceCapacityProviderStrategy) string { return v.CapacityProvider }).(pulumi.StringOutput) +} + +// Relative percentage of the total number of launched tasks that should use the specified capacity provider. +func (o ServiceCapacityProviderStrategyOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceCapacityProviderStrategy) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type ServiceCapacityProviderStrategyArrayOutput struct{ *pulumi.OutputState } + +func (ServiceCapacityProviderStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceCapacityProviderStrategy)(nil)).Elem() +} + +func (o ServiceCapacityProviderStrategyArrayOutput) ToServiceCapacityProviderStrategyArrayOutput() ServiceCapacityProviderStrategyArrayOutput { + return o +} + +func (o ServiceCapacityProviderStrategyArrayOutput) ToServiceCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) ServiceCapacityProviderStrategyArrayOutput { + return o +} + +func (o ServiceCapacityProviderStrategyArrayOutput) Index(i pulumi.IntInput) ServiceCapacityProviderStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceCapacityProviderStrategy { + return vs[0].([]ServiceCapacityProviderStrategy)[vs[1].(int)] + }).(ServiceCapacityProviderStrategyOutput) +} + +type ServiceDeploymentCircuitBreaker struct { + // Whether to enable the deployment circuit breaker logic for the service. + Enable bool `pulumi:"enable"` + // Whether to enable Amazon ECS to roll back the service if a service deployment fails. If rollback is enabled, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. + Rollback bool `pulumi:"rollback"` +} + +// ServiceDeploymentCircuitBreakerInput is an input type that accepts ServiceDeploymentCircuitBreakerArgs and ServiceDeploymentCircuitBreakerOutput values. +// You can construct a concrete instance of `ServiceDeploymentCircuitBreakerInput` via: +// +// ServiceDeploymentCircuitBreakerArgs{...} +type ServiceDeploymentCircuitBreakerInput interface { + pulumi.Input + + ToServiceDeploymentCircuitBreakerOutput() ServiceDeploymentCircuitBreakerOutput + ToServiceDeploymentCircuitBreakerOutputWithContext(context.Context) ServiceDeploymentCircuitBreakerOutput +} + +type ServiceDeploymentCircuitBreakerArgs struct { + // Whether to enable the deployment circuit breaker logic for the service. + Enable pulumi.BoolInput `pulumi:"enable"` + // Whether to enable Amazon ECS to roll back the service if a service deployment fails. If rollback is enabled, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. + Rollback pulumi.BoolInput `pulumi:"rollback"` +} + +func (ServiceDeploymentCircuitBreakerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceDeploymentCircuitBreaker)(nil)).Elem() +} + +func (i ServiceDeploymentCircuitBreakerArgs) ToServiceDeploymentCircuitBreakerOutput() ServiceDeploymentCircuitBreakerOutput { + return i.ToServiceDeploymentCircuitBreakerOutputWithContext(context.Background()) +} + +func (i ServiceDeploymentCircuitBreakerArgs) ToServiceDeploymentCircuitBreakerOutputWithContext(ctx context.Context) ServiceDeploymentCircuitBreakerOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceDeploymentCircuitBreakerOutput) +} + +func (i ServiceDeploymentCircuitBreakerArgs) ToServiceDeploymentCircuitBreakerPtrOutput() ServiceDeploymentCircuitBreakerPtrOutput { + return i.ToServiceDeploymentCircuitBreakerPtrOutputWithContext(context.Background()) +} + +func (i ServiceDeploymentCircuitBreakerArgs) ToServiceDeploymentCircuitBreakerPtrOutputWithContext(ctx context.Context) ServiceDeploymentCircuitBreakerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceDeploymentCircuitBreakerOutput).ToServiceDeploymentCircuitBreakerPtrOutputWithContext(ctx) +} + +// ServiceDeploymentCircuitBreakerPtrInput is an input type that accepts ServiceDeploymentCircuitBreakerArgs, ServiceDeploymentCircuitBreakerPtr and ServiceDeploymentCircuitBreakerPtrOutput values. +// You can construct a concrete instance of `ServiceDeploymentCircuitBreakerPtrInput` via: +// +// ServiceDeploymentCircuitBreakerArgs{...} +// +// or: +// +// nil +type ServiceDeploymentCircuitBreakerPtrInput interface { + pulumi.Input + + ToServiceDeploymentCircuitBreakerPtrOutput() ServiceDeploymentCircuitBreakerPtrOutput + ToServiceDeploymentCircuitBreakerPtrOutputWithContext(context.Context) ServiceDeploymentCircuitBreakerPtrOutput +} + +type serviceDeploymentCircuitBreakerPtrType ServiceDeploymentCircuitBreakerArgs + +func ServiceDeploymentCircuitBreakerPtr(v *ServiceDeploymentCircuitBreakerArgs) ServiceDeploymentCircuitBreakerPtrInput { + return (*serviceDeploymentCircuitBreakerPtrType)(v) +} + +func (*serviceDeploymentCircuitBreakerPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceDeploymentCircuitBreaker)(nil)).Elem() +} + +func (i *serviceDeploymentCircuitBreakerPtrType) ToServiceDeploymentCircuitBreakerPtrOutput() ServiceDeploymentCircuitBreakerPtrOutput { + return i.ToServiceDeploymentCircuitBreakerPtrOutputWithContext(context.Background()) +} + +func (i *serviceDeploymentCircuitBreakerPtrType) ToServiceDeploymentCircuitBreakerPtrOutputWithContext(ctx context.Context) ServiceDeploymentCircuitBreakerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceDeploymentCircuitBreakerPtrOutput) +} + +type ServiceDeploymentCircuitBreakerOutput struct{ *pulumi.OutputState } + +func (ServiceDeploymentCircuitBreakerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceDeploymentCircuitBreaker)(nil)).Elem() +} + +func (o ServiceDeploymentCircuitBreakerOutput) ToServiceDeploymentCircuitBreakerOutput() ServiceDeploymentCircuitBreakerOutput { + return o +} + +func (o ServiceDeploymentCircuitBreakerOutput) ToServiceDeploymentCircuitBreakerOutputWithContext(ctx context.Context) ServiceDeploymentCircuitBreakerOutput { + return o +} + +func (o ServiceDeploymentCircuitBreakerOutput) ToServiceDeploymentCircuitBreakerPtrOutput() ServiceDeploymentCircuitBreakerPtrOutput { + return o.ToServiceDeploymentCircuitBreakerPtrOutputWithContext(context.Background()) +} + +func (o ServiceDeploymentCircuitBreakerOutput) ToServiceDeploymentCircuitBreakerPtrOutputWithContext(ctx context.Context) ServiceDeploymentCircuitBreakerPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceDeploymentCircuitBreaker) *ServiceDeploymentCircuitBreaker { + return &v + }).(ServiceDeploymentCircuitBreakerPtrOutput) +} + +// Whether to enable the deployment circuit breaker logic for the service. +func (o ServiceDeploymentCircuitBreakerOutput) Enable() pulumi.BoolOutput { + return o.ApplyT(func(v ServiceDeploymentCircuitBreaker) bool { return v.Enable }).(pulumi.BoolOutput) +} + +// Whether to enable Amazon ECS to roll back the service if a service deployment fails. If rollback is enabled, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. +func (o ServiceDeploymentCircuitBreakerOutput) Rollback() pulumi.BoolOutput { + return o.ApplyT(func(v ServiceDeploymentCircuitBreaker) bool { return v.Rollback }).(pulumi.BoolOutput) +} + +type ServiceDeploymentCircuitBreakerPtrOutput struct{ *pulumi.OutputState } + +func (ServiceDeploymentCircuitBreakerPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceDeploymentCircuitBreaker)(nil)).Elem() +} + +func (o ServiceDeploymentCircuitBreakerPtrOutput) ToServiceDeploymentCircuitBreakerPtrOutput() ServiceDeploymentCircuitBreakerPtrOutput { + return o +} + +func (o ServiceDeploymentCircuitBreakerPtrOutput) ToServiceDeploymentCircuitBreakerPtrOutputWithContext(ctx context.Context) ServiceDeploymentCircuitBreakerPtrOutput { + return o +} + +func (o ServiceDeploymentCircuitBreakerPtrOutput) Elem() ServiceDeploymentCircuitBreakerOutput { + return o.ApplyT(func(v *ServiceDeploymentCircuitBreaker) ServiceDeploymentCircuitBreaker { + if v != nil { + return *v + } + var ret ServiceDeploymentCircuitBreaker + return ret + }).(ServiceDeploymentCircuitBreakerOutput) +} + +// Whether to enable the deployment circuit breaker logic for the service. +func (o ServiceDeploymentCircuitBreakerPtrOutput) Enable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceDeploymentCircuitBreaker) *bool { + if v == nil { + return nil + } + return &v.Enable + }).(pulumi.BoolPtrOutput) +} + +// Whether to enable Amazon ECS to roll back the service if a service deployment fails. If rollback is enabled, when a service deployment fails, the service is rolled back to the last deployment that completed successfully. +func (o ServiceDeploymentCircuitBreakerPtrOutput) Rollback() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceDeploymentCircuitBreaker) *bool { + if v == nil { + return nil + } + return &v.Rollback + }).(pulumi.BoolPtrOutput) +} + +type ServiceDeploymentController struct { + // Type of deployment controller. Valid values: `CODE_DEPLOY`, `ECS`, `EXTERNAL`. Default: `ECS`. + Type *string `pulumi:"type"` +} + +// ServiceDeploymentControllerInput is an input type that accepts ServiceDeploymentControllerArgs and ServiceDeploymentControllerOutput values. +// You can construct a concrete instance of `ServiceDeploymentControllerInput` via: +// +// ServiceDeploymentControllerArgs{...} +type ServiceDeploymentControllerInput interface { + pulumi.Input + + ToServiceDeploymentControllerOutput() ServiceDeploymentControllerOutput + ToServiceDeploymentControllerOutputWithContext(context.Context) ServiceDeploymentControllerOutput +} + +type ServiceDeploymentControllerArgs struct { + // Type of deployment controller. Valid values: `CODE_DEPLOY`, `ECS`, `EXTERNAL`. Default: `ECS`. + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (ServiceDeploymentControllerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceDeploymentController)(nil)).Elem() +} + +func (i ServiceDeploymentControllerArgs) ToServiceDeploymentControllerOutput() ServiceDeploymentControllerOutput { + return i.ToServiceDeploymentControllerOutputWithContext(context.Background()) +} + +func (i ServiceDeploymentControllerArgs) ToServiceDeploymentControllerOutputWithContext(ctx context.Context) ServiceDeploymentControllerOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceDeploymentControllerOutput) +} + +func (i ServiceDeploymentControllerArgs) ToServiceDeploymentControllerPtrOutput() ServiceDeploymentControllerPtrOutput { + return i.ToServiceDeploymentControllerPtrOutputWithContext(context.Background()) +} + +func (i ServiceDeploymentControllerArgs) ToServiceDeploymentControllerPtrOutputWithContext(ctx context.Context) ServiceDeploymentControllerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceDeploymentControllerOutput).ToServiceDeploymentControllerPtrOutputWithContext(ctx) +} + +// ServiceDeploymentControllerPtrInput is an input type that accepts ServiceDeploymentControllerArgs, ServiceDeploymentControllerPtr and ServiceDeploymentControllerPtrOutput values. +// You can construct a concrete instance of `ServiceDeploymentControllerPtrInput` via: +// +// ServiceDeploymentControllerArgs{...} +// +// or: +// +// nil +type ServiceDeploymentControllerPtrInput interface { + pulumi.Input + + ToServiceDeploymentControllerPtrOutput() ServiceDeploymentControllerPtrOutput + ToServiceDeploymentControllerPtrOutputWithContext(context.Context) ServiceDeploymentControllerPtrOutput +} + +type serviceDeploymentControllerPtrType ServiceDeploymentControllerArgs + +func ServiceDeploymentControllerPtr(v *ServiceDeploymentControllerArgs) ServiceDeploymentControllerPtrInput { + return (*serviceDeploymentControllerPtrType)(v) +} + +func (*serviceDeploymentControllerPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceDeploymentController)(nil)).Elem() +} + +func (i *serviceDeploymentControllerPtrType) ToServiceDeploymentControllerPtrOutput() ServiceDeploymentControllerPtrOutput { + return i.ToServiceDeploymentControllerPtrOutputWithContext(context.Background()) +} + +func (i *serviceDeploymentControllerPtrType) ToServiceDeploymentControllerPtrOutputWithContext(ctx context.Context) ServiceDeploymentControllerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceDeploymentControllerPtrOutput) +} + +type ServiceDeploymentControllerOutput struct{ *pulumi.OutputState } + +func (ServiceDeploymentControllerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceDeploymentController)(nil)).Elem() +} + +func (o ServiceDeploymentControllerOutput) ToServiceDeploymentControllerOutput() ServiceDeploymentControllerOutput { + return o +} + +func (o ServiceDeploymentControllerOutput) ToServiceDeploymentControllerOutputWithContext(ctx context.Context) ServiceDeploymentControllerOutput { + return o +} + +func (o ServiceDeploymentControllerOutput) ToServiceDeploymentControllerPtrOutput() ServiceDeploymentControllerPtrOutput { + return o.ToServiceDeploymentControllerPtrOutputWithContext(context.Background()) +} + +func (o ServiceDeploymentControllerOutput) ToServiceDeploymentControllerPtrOutputWithContext(ctx context.Context) ServiceDeploymentControllerPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceDeploymentController) *ServiceDeploymentController { + return &v + }).(ServiceDeploymentControllerPtrOutput) +} + +// Type of deployment controller. Valid values: `CODE_DEPLOY`, `ECS`, `EXTERNAL`. Default: `ECS`. +func (o ServiceDeploymentControllerOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceDeploymentController) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type ServiceDeploymentControllerPtrOutput struct{ *pulumi.OutputState } + +func (ServiceDeploymentControllerPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceDeploymentController)(nil)).Elem() +} + +func (o ServiceDeploymentControllerPtrOutput) ToServiceDeploymentControllerPtrOutput() ServiceDeploymentControllerPtrOutput { + return o +} + +func (o ServiceDeploymentControllerPtrOutput) ToServiceDeploymentControllerPtrOutputWithContext(ctx context.Context) ServiceDeploymentControllerPtrOutput { + return o +} + +func (o ServiceDeploymentControllerPtrOutput) Elem() ServiceDeploymentControllerOutput { + return o.ApplyT(func(v *ServiceDeploymentController) ServiceDeploymentController { + if v != nil { + return *v + } + var ret ServiceDeploymentController + return ret + }).(ServiceDeploymentControllerOutput) +} + +// Type of deployment controller. Valid values: `CODE_DEPLOY`, `ECS`, `EXTERNAL`. Default: `ECS`. +func (o ServiceDeploymentControllerPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceDeploymentController) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + +type ServiceLoadBalancer struct { + // Name of the container to associate with the load balancer (as it appears in a container definition). + ContainerName string `pulumi:"containerName"` + // Port on the container to associate with the load balancer. + // + // > **Version note:** Multiple `loadBalancer` configuration block support was added in version 2.22.0 of the provider. This allows configuration of [ECS service support for multiple target groups](https://aws.amazon.com/about-aws/whats-new/2019/07/amazon-ecs-services-now-support-multiple-load-balancer-target-groups/). + ContainerPort int `pulumi:"containerPort"` + // Name of the ELB (Classic) to associate with the service. + ElbName *string `pulumi:"elbName"` + // ARN of the Load Balancer target group to associate with the service. + TargetGroupArn *string `pulumi:"targetGroupArn"` +} + +// ServiceLoadBalancerInput is an input type that accepts ServiceLoadBalancerArgs and ServiceLoadBalancerOutput values. +// You can construct a concrete instance of `ServiceLoadBalancerInput` via: +// +// ServiceLoadBalancerArgs{...} +type ServiceLoadBalancerInput interface { + pulumi.Input + + ToServiceLoadBalancerOutput() ServiceLoadBalancerOutput + ToServiceLoadBalancerOutputWithContext(context.Context) ServiceLoadBalancerOutput +} + +type ServiceLoadBalancerArgs struct { + // Name of the container to associate with the load balancer (as it appears in a container definition). + ContainerName pulumi.StringInput `pulumi:"containerName"` + // Port on the container to associate with the load balancer. + // + // > **Version note:** Multiple `loadBalancer` configuration block support was added in version 2.22.0 of the provider. This allows configuration of [ECS service support for multiple target groups](https://aws.amazon.com/about-aws/whats-new/2019/07/amazon-ecs-services-now-support-multiple-load-balancer-target-groups/). + ContainerPort pulumi.IntInput `pulumi:"containerPort"` + // Name of the ELB (Classic) to associate with the service. + ElbName pulumi.StringPtrInput `pulumi:"elbName"` + // ARN of the Load Balancer target group to associate with the service. + TargetGroupArn pulumi.StringPtrInput `pulumi:"targetGroupArn"` +} + +func (ServiceLoadBalancerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLoadBalancer)(nil)).Elem() +} + +func (i ServiceLoadBalancerArgs) ToServiceLoadBalancerOutput() ServiceLoadBalancerOutput { + return i.ToServiceLoadBalancerOutputWithContext(context.Background()) +} + +func (i ServiceLoadBalancerArgs) ToServiceLoadBalancerOutputWithContext(ctx context.Context) ServiceLoadBalancerOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLoadBalancerOutput) +} + +// ServiceLoadBalancerArrayInput is an input type that accepts ServiceLoadBalancerArray and ServiceLoadBalancerArrayOutput values. +// You can construct a concrete instance of `ServiceLoadBalancerArrayInput` via: +// +// ServiceLoadBalancerArray{ ServiceLoadBalancerArgs{...} } +type ServiceLoadBalancerArrayInput interface { + pulumi.Input + + ToServiceLoadBalancerArrayOutput() ServiceLoadBalancerArrayOutput + ToServiceLoadBalancerArrayOutputWithContext(context.Context) ServiceLoadBalancerArrayOutput +} + +type ServiceLoadBalancerArray []ServiceLoadBalancerInput + +func (ServiceLoadBalancerArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceLoadBalancer)(nil)).Elem() +} + +func (i ServiceLoadBalancerArray) ToServiceLoadBalancerArrayOutput() ServiceLoadBalancerArrayOutput { + return i.ToServiceLoadBalancerArrayOutputWithContext(context.Background()) +} + +func (i ServiceLoadBalancerArray) ToServiceLoadBalancerArrayOutputWithContext(ctx context.Context) ServiceLoadBalancerArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLoadBalancerArrayOutput) +} + +type ServiceLoadBalancerOutput struct{ *pulumi.OutputState } + +func (ServiceLoadBalancerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLoadBalancer)(nil)).Elem() +} + +func (o ServiceLoadBalancerOutput) ToServiceLoadBalancerOutput() ServiceLoadBalancerOutput { + return o +} + +func (o ServiceLoadBalancerOutput) ToServiceLoadBalancerOutputWithContext(ctx context.Context) ServiceLoadBalancerOutput { + return o +} + +// Name of the container to associate with the load balancer (as it appears in a container definition). +func (o ServiceLoadBalancerOutput) ContainerName() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLoadBalancer) string { return v.ContainerName }).(pulumi.StringOutput) +} + +// Port on the container to associate with the load balancer. +// +// > **Version note:** Multiple `loadBalancer` configuration block support was added in version 2.22.0 of the provider. This allows configuration of [ECS service support for multiple target groups](https://aws.amazon.com/about-aws/whats-new/2019/07/amazon-ecs-services-now-support-multiple-load-balancer-target-groups/). +func (o ServiceLoadBalancerOutput) ContainerPort() pulumi.IntOutput { + return o.ApplyT(func(v ServiceLoadBalancer) int { return v.ContainerPort }).(pulumi.IntOutput) +} + +// Name of the ELB (Classic) to associate with the service. +func (o ServiceLoadBalancerOutput) ElbName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceLoadBalancer) *string { return v.ElbName }).(pulumi.StringPtrOutput) +} + +// ARN of the Load Balancer target group to associate with the service. +func (o ServiceLoadBalancerOutput) TargetGroupArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceLoadBalancer) *string { return v.TargetGroupArn }).(pulumi.StringPtrOutput) +} + +type ServiceLoadBalancerArrayOutput struct{ *pulumi.OutputState } + +func (ServiceLoadBalancerArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceLoadBalancer)(nil)).Elem() +} + +func (o ServiceLoadBalancerArrayOutput) ToServiceLoadBalancerArrayOutput() ServiceLoadBalancerArrayOutput { + return o +} + +func (o ServiceLoadBalancerArrayOutput) ToServiceLoadBalancerArrayOutputWithContext(ctx context.Context) ServiceLoadBalancerArrayOutput { + return o +} + +func (o ServiceLoadBalancerArrayOutput) Index(i pulumi.IntInput) ServiceLoadBalancerOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceLoadBalancer { + return vs[0].([]ServiceLoadBalancer)[vs[1].(int)] + }).(ServiceLoadBalancerOutput) +} + +type ServiceNetworkConfiguration struct { + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. + // + // For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) + AssignPublicIp *bool `pulumi:"assignPublicIp"` + // Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups []string `pulumi:"securityGroups"` + // Subnets associated with the task or service. + Subnets []string `pulumi:"subnets"` +} + +// ServiceNetworkConfigurationInput is an input type that accepts ServiceNetworkConfigurationArgs and ServiceNetworkConfigurationOutput values. +// You can construct a concrete instance of `ServiceNetworkConfigurationInput` via: +// +// ServiceNetworkConfigurationArgs{...} +type ServiceNetworkConfigurationInput interface { + pulumi.Input + + ToServiceNetworkConfigurationOutput() ServiceNetworkConfigurationOutput + ToServiceNetworkConfigurationOutputWithContext(context.Context) ServiceNetworkConfigurationOutput +} + +type ServiceNetworkConfigurationArgs struct { + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. + // + // For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) + AssignPublicIp pulumi.BoolPtrInput `pulumi:"assignPublicIp"` + // Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups pulumi.StringArrayInput `pulumi:"securityGroups"` + // Subnets associated with the task or service. + Subnets pulumi.StringArrayInput `pulumi:"subnets"` +} + +func (ServiceNetworkConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceNetworkConfiguration)(nil)).Elem() +} + +func (i ServiceNetworkConfigurationArgs) ToServiceNetworkConfigurationOutput() ServiceNetworkConfigurationOutput { + return i.ToServiceNetworkConfigurationOutputWithContext(context.Background()) +} + +func (i ServiceNetworkConfigurationArgs) ToServiceNetworkConfigurationOutputWithContext(ctx context.Context) ServiceNetworkConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceNetworkConfigurationOutput) +} + +func (i ServiceNetworkConfigurationArgs) ToServiceNetworkConfigurationPtrOutput() ServiceNetworkConfigurationPtrOutput { + return i.ToServiceNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ServiceNetworkConfigurationArgs) ToServiceNetworkConfigurationPtrOutputWithContext(ctx context.Context) ServiceNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceNetworkConfigurationOutput).ToServiceNetworkConfigurationPtrOutputWithContext(ctx) +} + +// ServiceNetworkConfigurationPtrInput is an input type that accepts ServiceNetworkConfigurationArgs, ServiceNetworkConfigurationPtr and ServiceNetworkConfigurationPtrOutput values. +// You can construct a concrete instance of `ServiceNetworkConfigurationPtrInput` via: +// +// ServiceNetworkConfigurationArgs{...} +// +// or: +// +// nil +type ServiceNetworkConfigurationPtrInput interface { + pulumi.Input + + ToServiceNetworkConfigurationPtrOutput() ServiceNetworkConfigurationPtrOutput + ToServiceNetworkConfigurationPtrOutputWithContext(context.Context) ServiceNetworkConfigurationPtrOutput +} + +type serviceNetworkConfigurationPtrType ServiceNetworkConfigurationArgs + +func ServiceNetworkConfigurationPtr(v *ServiceNetworkConfigurationArgs) ServiceNetworkConfigurationPtrInput { + return (*serviceNetworkConfigurationPtrType)(v) +} + +func (*serviceNetworkConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceNetworkConfiguration)(nil)).Elem() +} + +func (i *serviceNetworkConfigurationPtrType) ToServiceNetworkConfigurationPtrOutput() ServiceNetworkConfigurationPtrOutput { + return i.ToServiceNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *serviceNetworkConfigurationPtrType) ToServiceNetworkConfigurationPtrOutputWithContext(ctx context.Context) ServiceNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceNetworkConfigurationPtrOutput) +} + +type ServiceNetworkConfigurationOutput struct{ *pulumi.OutputState } + +func (ServiceNetworkConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceNetworkConfiguration)(nil)).Elem() +} + +func (o ServiceNetworkConfigurationOutput) ToServiceNetworkConfigurationOutput() ServiceNetworkConfigurationOutput { + return o +} + +func (o ServiceNetworkConfigurationOutput) ToServiceNetworkConfigurationOutputWithContext(ctx context.Context) ServiceNetworkConfigurationOutput { + return o +} + +func (o ServiceNetworkConfigurationOutput) ToServiceNetworkConfigurationPtrOutput() ServiceNetworkConfigurationPtrOutput { + return o.ToServiceNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ServiceNetworkConfigurationOutput) ToServiceNetworkConfigurationPtrOutputWithContext(ctx context.Context) ServiceNetworkConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceNetworkConfiguration) *ServiceNetworkConfiguration { + return &v + }).(ServiceNetworkConfigurationPtrOutput) +} + +// Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. +// +// For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) +func (o ServiceNetworkConfigurationOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServiceNetworkConfiguration) *bool { return v.AssignPublicIp }).(pulumi.BoolPtrOutput) +} + +// Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. +func (o ServiceNetworkConfigurationOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceNetworkConfiguration) []string { return v.SecurityGroups }).(pulumi.StringArrayOutput) +} + +// Subnets associated with the task or service. +func (o ServiceNetworkConfigurationOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceNetworkConfiguration) []string { return v.Subnets }).(pulumi.StringArrayOutput) +} + +type ServiceNetworkConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ServiceNetworkConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceNetworkConfiguration)(nil)).Elem() +} + +func (o ServiceNetworkConfigurationPtrOutput) ToServiceNetworkConfigurationPtrOutput() ServiceNetworkConfigurationPtrOutput { + return o +} + +func (o ServiceNetworkConfigurationPtrOutput) ToServiceNetworkConfigurationPtrOutputWithContext(ctx context.Context) ServiceNetworkConfigurationPtrOutput { + return o +} + +func (o ServiceNetworkConfigurationPtrOutput) Elem() ServiceNetworkConfigurationOutput { + return o.ApplyT(func(v *ServiceNetworkConfiguration) ServiceNetworkConfiguration { + if v != nil { + return *v + } + var ret ServiceNetworkConfiguration + return ret + }).(ServiceNetworkConfigurationOutput) +} + +// Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. +// +// For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) +func (o ServiceNetworkConfigurationPtrOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceNetworkConfiguration) *bool { + if v == nil { + return nil + } + return v.AssignPublicIp + }).(pulumi.BoolPtrOutput) +} + +// Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. +func (o ServiceNetworkConfigurationPtrOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.SecurityGroups + }).(pulumi.StringArrayOutput) +} + +// Subnets associated with the task or service. +func (o ServiceNetworkConfigurationPtrOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.Subnets + }).(pulumi.StringArrayOutput) +} + +type ServiceOrderedPlacementStrategy struct { + // For the `spread` placement strategy, valid values are `instanceId` (or `host`, + // which has the same effect), or any platform or custom attribute that is applied to a container instance. + // For the `binpack` type, valid values are `memory` and `cpu`. For the `random` type, this attribute is not + // needed. For more information, see [Placement Strategy](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementStrategy.html). + // + // > **Note:** for `spread`, `host` and `instanceId` will be normalized, by AWS, to be `instanceId`. This means the statefile will show `instanceId` but your config will differ if you use `host`. + Field *string `pulumi:"field"` + // Type of placement strategy. Must be one of: `binpack`, `random`, or `spread` + Type string `pulumi:"type"` +} + +// ServiceOrderedPlacementStrategyInput is an input type that accepts ServiceOrderedPlacementStrategyArgs and ServiceOrderedPlacementStrategyOutput values. +// You can construct a concrete instance of `ServiceOrderedPlacementStrategyInput` via: +// +// ServiceOrderedPlacementStrategyArgs{...} +type ServiceOrderedPlacementStrategyInput interface { + pulumi.Input + + ToServiceOrderedPlacementStrategyOutput() ServiceOrderedPlacementStrategyOutput + ToServiceOrderedPlacementStrategyOutputWithContext(context.Context) ServiceOrderedPlacementStrategyOutput +} + +type ServiceOrderedPlacementStrategyArgs struct { + // For the `spread` placement strategy, valid values are `instanceId` (or `host`, + // which has the same effect), or any platform or custom attribute that is applied to a container instance. + // For the `binpack` type, valid values are `memory` and `cpu`. For the `random` type, this attribute is not + // needed. For more information, see [Placement Strategy](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementStrategy.html). + // + // > **Note:** for `spread`, `host` and `instanceId` will be normalized, by AWS, to be `instanceId`. This means the statefile will show `instanceId` but your config will differ if you use `host`. + Field pulumi.StringPtrInput `pulumi:"field"` + // Type of placement strategy. Must be one of: `binpack`, `random`, or `spread` + Type pulumi.StringInput `pulumi:"type"` +} + +func (ServiceOrderedPlacementStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceOrderedPlacementStrategy)(nil)).Elem() +} + +func (i ServiceOrderedPlacementStrategyArgs) ToServiceOrderedPlacementStrategyOutput() ServiceOrderedPlacementStrategyOutput { + return i.ToServiceOrderedPlacementStrategyOutputWithContext(context.Background()) +} + +func (i ServiceOrderedPlacementStrategyArgs) ToServiceOrderedPlacementStrategyOutputWithContext(ctx context.Context) ServiceOrderedPlacementStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceOrderedPlacementStrategyOutput) +} + +// ServiceOrderedPlacementStrategyArrayInput is an input type that accepts ServiceOrderedPlacementStrategyArray and ServiceOrderedPlacementStrategyArrayOutput values. +// You can construct a concrete instance of `ServiceOrderedPlacementStrategyArrayInput` via: +// +// ServiceOrderedPlacementStrategyArray{ ServiceOrderedPlacementStrategyArgs{...} } +type ServiceOrderedPlacementStrategyArrayInput interface { + pulumi.Input + + ToServiceOrderedPlacementStrategyArrayOutput() ServiceOrderedPlacementStrategyArrayOutput + ToServiceOrderedPlacementStrategyArrayOutputWithContext(context.Context) ServiceOrderedPlacementStrategyArrayOutput +} + +type ServiceOrderedPlacementStrategyArray []ServiceOrderedPlacementStrategyInput + +func (ServiceOrderedPlacementStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceOrderedPlacementStrategy)(nil)).Elem() +} + +func (i ServiceOrderedPlacementStrategyArray) ToServiceOrderedPlacementStrategyArrayOutput() ServiceOrderedPlacementStrategyArrayOutput { + return i.ToServiceOrderedPlacementStrategyArrayOutputWithContext(context.Background()) +} + +func (i ServiceOrderedPlacementStrategyArray) ToServiceOrderedPlacementStrategyArrayOutputWithContext(ctx context.Context) ServiceOrderedPlacementStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceOrderedPlacementStrategyArrayOutput) +} + +type ServiceOrderedPlacementStrategyOutput struct{ *pulumi.OutputState } + +func (ServiceOrderedPlacementStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceOrderedPlacementStrategy)(nil)).Elem() +} + +func (o ServiceOrderedPlacementStrategyOutput) ToServiceOrderedPlacementStrategyOutput() ServiceOrderedPlacementStrategyOutput { + return o +} + +func (o ServiceOrderedPlacementStrategyOutput) ToServiceOrderedPlacementStrategyOutputWithContext(ctx context.Context) ServiceOrderedPlacementStrategyOutput { + return o +} + +// For the `spread` placement strategy, valid values are `instanceId` (or `host`, +// which has the same effect), or any platform or custom attribute that is applied to a container instance. +// For the `binpack` type, valid values are `memory` and `cpu`. For the `random` type, this attribute is not +// needed. For more information, see [Placement Strategy](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementStrategy.html). +// +// > **Note:** for `spread`, `host` and `instanceId` will be normalized, by AWS, to be `instanceId`. This means the statefile will show `instanceId` but your config will differ if you use `host`. +func (o ServiceOrderedPlacementStrategyOutput) Field() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceOrderedPlacementStrategy) *string { return v.Field }).(pulumi.StringPtrOutput) +} + +// Type of placement strategy. Must be one of: `binpack`, `random`, or `spread` +func (o ServiceOrderedPlacementStrategyOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ServiceOrderedPlacementStrategy) string { return v.Type }).(pulumi.StringOutput) +} + +type ServiceOrderedPlacementStrategyArrayOutput struct{ *pulumi.OutputState } + +func (ServiceOrderedPlacementStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceOrderedPlacementStrategy)(nil)).Elem() +} + +func (o ServiceOrderedPlacementStrategyArrayOutput) ToServiceOrderedPlacementStrategyArrayOutput() ServiceOrderedPlacementStrategyArrayOutput { + return o +} + +func (o ServiceOrderedPlacementStrategyArrayOutput) ToServiceOrderedPlacementStrategyArrayOutputWithContext(ctx context.Context) ServiceOrderedPlacementStrategyArrayOutput { + return o +} + +func (o ServiceOrderedPlacementStrategyArrayOutput) Index(i pulumi.IntInput) ServiceOrderedPlacementStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceOrderedPlacementStrategy { + return vs[0].([]ServiceOrderedPlacementStrategy)[vs[1].(int)] + }).(ServiceOrderedPlacementStrategyOutput) +} + +type ServicePlacementConstraint struct { + // Cluster Query Language expression to apply to the constraint. Does not need to be specified for the `distinctInstance` type. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). + Expression *string `pulumi:"expression"` + // Type of constraint. The only valid values at this time are `memberOf` and `distinctInstance`. + Type string `pulumi:"type"` +} + +// ServicePlacementConstraintInput is an input type that accepts ServicePlacementConstraintArgs and ServicePlacementConstraintOutput values. +// You can construct a concrete instance of `ServicePlacementConstraintInput` via: +// +// ServicePlacementConstraintArgs{...} +type ServicePlacementConstraintInput interface { + pulumi.Input + + ToServicePlacementConstraintOutput() ServicePlacementConstraintOutput + ToServicePlacementConstraintOutputWithContext(context.Context) ServicePlacementConstraintOutput +} + +type ServicePlacementConstraintArgs struct { + // Cluster Query Language expression to apply to the constraint. Does not need to be specified for the `distinctInstance` type. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). + Expression pulumi.StringPtrInput `pulumi:"expression"` + // Type of constraint. The only valid values at this time are `memberOf` and `distinctInstance`. + Type pulumi.StringInput `pulumi:"type"` +} + +func (ServicePlacementConstraintArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServicePlacementConstraint)(nil)).Elem() +} + +func (i ServicePlacementConstraintArgs) ToServicePlacementConstraintOutput() ServicePlacementConstraintOutput { + return i.ToServicePlacementConstraintOutputWithContext(context.Background()) +} + +func (i ServicePlacementConstraintArgs) ToServicePlacementConstraintOutputWithContext(ctx context.Context) ServicePlacementConstraintOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServicePlacementConstraintOutput) +} + +// ServicePlacementConstraintArrayInput is an input type that accepts ServicePlacementConstraintArray and ServicePlacementConstraintArrayOutput values. +// You can construct a concrete instance of `ServicePlacementConstraintArrayInput` via: +// +// ServicePlacementConstraintArray{ ServicePlacementConstraintArgs{...} } +type ServicePlacementConstraintArrayInput interface { + pulumi.Input + + ToServicePlacementConstraintArrayOutput() ServicePlacementConstraintArrayOutput + ToServicePlacementConstraintArrayOutputWithContext(context.Context) ServicePlacementConstraintArrayOutput +} + +type ServicePlacementConstraintArray []ServicePlacementConstraintInput + +func (ServicePlacementConstraintArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServicePlacementConstraint)(nil)).Elem() +} + +func (i ServicePlacementConstraintArray) ToServicePlacementConstraintArrayOutput() ServicePlacementConstraintArrayOutput { + return i.ToServicePlacementConstraintArrayOutputWithContext(context.Background()) +} + +func (i ServicePlacementConstraintArray) ToServicePlacementConstraintArrayOutputWithContext(ctx context.Context) ServicePlacementConstraintArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServicePlacementConstraintArrayOutput) +} + +type ServicePlacementConstraintOutput struct{ *pulumi.OutputState } + +func (ServicePlacementConstraintOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServicePlacementConstraint)(nil)).Elem() +} + +func (o ServicePlacementConstraintOutput) ToServicePlacementConstraintOutput() ServicePlacementConstraintOutput { + return o +} + +func (o ServicePlacementConstraintOutput) ToServicePlacementConstraintOutputWithContext(ctx context.Context) ServicePlacementConstraintOutput { + return o +} + +// Cluster Query Language expression to apply to the constraint. Does not need to be specified for the `distinctInstance` type. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). +func (o ServicePlacementConstraintOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServicePlacementConstraint) *string { return v.Expression }).(pulumi.StringPtrOutput) +} + +// Type of constraint. The only valid values at this time are `memberOf` and `distinctInstance`. +func (o ServicePlacementConstraintOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ServicePlacementConstraint) string { return v.Type }).(pulumi.StringOutput) +} + +type ServicePlacementConstraintArrayOutput struct{ *pulumi.OutputState } + +func (ServicePlacementConstraintArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServicePlacementConstraint)(nil)).Elem() +} + +func (o ServicePlacementConstraintArrayOutput) ToServicePlacementConstraintArrayOutput() ServicePlacementConstraintArrayOutput { + return o +} + +func (o ServicePlacementConstraintArrayOutput) ToServicePlacementConstraintArrayOutputWithContext(ctx context.Context) ServicePlacementConstraintArrayOutput { + return o +} + +func (o ServicePlacementConstraintArrayOutput) Index(i pulumi.IntInput) ServicePlacementConstraintOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServicePlacementConstraint { + return vs[0].([]ServicePlacementConstraint)[vs[1].(int)] + }).(ServicePlacementConstraintOutput) +} + +type ServiceServiceConnectConfiguration struct { + // Whether to use Service Connect with this service. + Enabled bool `pulumi:"enabled"` + // Log configuration for the container. See below. + LogConfiguration *ServiceServiceConnectConfigurationLogConfiguration `pulumi:"logConfiguration"` + // Namespace name or ARN of the `servicediscovery.HttpNamespace` for use with Service Connect. + Namespace *string `pulumi:"namespace"` + // List of Service Connect service objects. See below. + Services []ServiceServiceConnectConfigurationService `pulumi:"services"` +} + +// ServiceServiceConnectConfigurationInput is an input type that accepts ServiceServiceConnectConfigurationArgs and ServiceServiceConnectConfigurationOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationInput` via: +// +// ServiceServiceConnectConfigurationArgs{...} +type ServiceServiceConnectConfigurationInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationOutput() ServiceServiceConnectConfigurationOutput + ToServiceServiceConnectConfigurationOutputWithContext(context.Context) ServiceServiceConnectConfigurationOutput +} + +type ServiceServiceConnectConfigurationArgs struct { + // Whether to use Service Connect with this service. + Enabled pulumi.BoolInput `pulumi:"enabled"` + // Log configuration for the container. See below. + LogConfiguration ServiceServiceConnectConfigurationLogConfigurationPtrInput `pulumi:"logConfiguration"` + // Namespace name or ARN of the `servicediscovery.HttpNamespace` for use with Service Connect. + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + // List of Service Connect service objects. See below. + Services ServiceServiceConnectConfigurationServiceArrayInput `pulumi:"services"` +} + +func (ServiceServiceConnectConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfiguration)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationArgs) ToServiceServiceConnectConfigurationOutput() ServiceServiceConnectConfigurationOutput { + return i.ToServiceServiceConnectConfigurationOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationArgs) ToServiceServiceConnectConfigurationOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationOutput) +} + +func (i ServiceServiceConnectConfigurationArgs) ToServiceServiceConnectConfigurationPtrOutput() ServiceServiceConnectConfigurationPtrOutput { + return i.ToServiceServiceConnectConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationArgs) ToServiceServiceConnectConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationOutput).ToServiceServiceConnectConfigurationPtrOutputWithContext(ctx) +} + +// ServiceServiceConnectConfigurationPtrInput is an input type that accepts ServiceServiceConnectConfigurationArgs, ServiceServiceConnectConfigurationPtr and ServiceServiceConnectConfigurationPtrOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationPtrInput` via: +// +// ServiceServiceConnectConfigurationArgs{...} +// +// or: +// +// nil +type ServiceServiceConnectConfigurationPtrInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationPtrOutput() ServiceServiceConnectConfigurationPtrOutput + ToServiceServiceConnectConfigurationPtrOutputWithContext(context.Context) ServiceServiceConnectConfigurationPtrOutput +} + +type serviceServiceConnectConfigurationPtrType ServiceServiceConnectConfigurationArgs + +func ServiceServiceConnectConfigurationPtr(v *ServiceServiceConnectConfigurationArgs) ServiceServiceConnectConfigurationPtrInput { + return (*serviceServiceConnectConfigurationPtrType)(v) +} + +func (*serviceServiceConnectConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfiguration)(nil)).Elem() +} + +func (i *serviceServiceConnectConfigurationPtrType) ToServiceServiceConnectConfigurationPtrOutput() ServiceServiceConnectConfigurationPtrOutput { + return i.ToServiceServiceConnectConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *serviceServiceConnectConfigurationPtrType) ToServiceServiceConnectConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationPtrOutput) +} + +type ServiceServiceConnectConfigurationOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfiguration)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationOutput) ToServiceServiceConnectConfigurationOutput() ServiceServiceConnectConfigurationOutput { + return o +} + +func (o ServiceServiceConnectConfigurationOutput) ToServiceServiceConnectConfigurationOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationOutput { + return o +} + +func (o ServiceServiceConnectConfigurationOutput) ToServiceServiceConnectConfigurationPtrOutput() ServiceServiceConnectConfigurationPtrOutput { + return o.ToServiceServiceConnectConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ServiceServiceConnectConfigurationOutput) ToServiceServiceConnectConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceServiceConnectConfiguration) *ServiceServiceConnectConfiguration { + return &v + }).(ServiceServiceConnectConfigurationPtrOutput) +} + +// Whether to use Service Connect with this service. +func (o ServiceServiceConnectConfigurationOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v ServiceServiceConnectConfiguration) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +// Log configuration for the container. See below. +func (o ServiceServiceConnectConfigurationOutput) LogConfiguration() ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfiguration) *ServiceServiceConnectConfigurationLogConfiguration { + return v.LogConfiguration + }).(ServiceServiceConnectConfigurationLogConfigurationPtrOutput) +} + +// Namespace name or ARN of the `servicediscovery.HttpNamespace` for use with Service Connect. +func (o ServiceServiceConnectConfigurationOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfiguration) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +// List of Service Connect service objects. See below. +func (o ServiceServiceConnectConfigurationOutput) Services() ServiceServiceConnectConfigurationServiceArrayOutput { + return o.ApplyT(func(v ServiceServiceConnectConfiguration) []ServiceServiceConnectConfigurationService { + return v.Services + }).(ServiceServiceConnectConfigurationServiceArrayOutput) +} + +type ServiceServiceConnectConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfiguration)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationPtrOutput) ToServiceServiceConnectConfigurationPtrOutput() ServiceServiceConnectConfigurationPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationPtrOutput) ToServiceServiceConnectConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationPtrOutput) Elem() ServiceServiceConnectConfigurationOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfiguration) ServiceServiceConnectConfiguration { + if v != nil { + return *v + } + var ret ServiceServiceConnectConfiguration + return ret + }).(ServiceServiceConnectConfigurationOutput) +} + +// Whether to use Service Connect with this service. +func (o ServiceServiceConnectConfigurationPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfiguration) *bool { + if v == nil { + return nil + } + return &v.Enabled + }).(pulumi.BoolPtrOutput) +} + +// Log configuration for the container. See below. +func (o ServiceServiceConnectConfigurationPtrOutput) LogConfiguration() ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfiguration) *ServiceServiceConnectConfigurationLogConfiguration { + if v == nil { + return nil + } + return v.LogConfiguration + }).(ServiceServiceConnectConfigurationLogConfigurationPtrOutput) +} + +// Namespace name or ARN of the `servicediscovery.HttpNamespace` for use with Service Connect. +func (o ServiceServiceConnectConfigurationPtrOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfiguration) *string { + if v == nil { + return nil + } + return v.Namespace + }).(pulumi.StringPtrOutput) +} + +// List of Service Connect service objects. See below. +func (o ServiceServiceConnectConfigurationPtrOutput) Services() ServiceServiceConnectConfigurationServiceArrayOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfiguration) []ServiceServiceConnectConfigurationService { + if v == nil { + return nil + } + return v.Services + }).(ServiceServiceConnectConfigurationServiceArrayOutput) +} + +type ServiceServiceConnectConfigurationLogConfiguration struct { + // Log driver to use for the container. + LogDriver string `pulumi:"logDriver"` + // Configuration options to send to the log driver. + Options map[string]string `pulumi:"options"` + // Secrets to pass to the log configuration. See below. + SecretOptions []ServiceServiceConnectConfigurationLogConfigurationSecretOption `pulumi:"secretOptions"` +} + +// ServiceServiceConnectConfigurationLogConfigurationInput is an input type that accepts ServiceServiceConnectConfigurationLogConfigurationArgs and ServiceServiceConnectConfigurationLogConfigurationOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationLogConfigurationInput` via: +// +// ServiceServiceConnectConfigurationLogConfigurationArgs{...} +type ServiceServiceConnectConfigurationLogConfigurationInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationLogConfigurationOutput() ServiceServiceConnectConfigurationLogConfigurationOutput + ToServiceServiceConnectConfigurationLogConfigurationOutputWithContext(context.Context) ServiceServiceConnectConfigurationLogConfigurationOutput +} + +type ServiceServiceConnectConfigurationLogConfigurationArgs struct { + // Log driver to use for the container. + LogDriver pulumi.StringInput `pulumi:"logDriver"` + // Configuration options to send to the log driver. + Options pulumi.StringMapInput `pulumi:"options"` + // Secrets to pass to the log configuration. See below. + SecretOptions ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayInput `pulumi:"secretOptions"` +} + +func (ServiceServiceConnectConfigurationLogConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfiguration)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationLogConfigurationArgs) ToServiceServiceConnectConfigurationLogConfigurationOutput() ServiceServiceConnectConfigurationLogConfigurationOutput { + return i.ToServiceServiceConnectConfigurationLogConfigurationOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationLogConfigurationArgs) ToServiceServiceConnectConfigurationLogConfigurationOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationLogConfigurationOutput) +} + +func (i ServiceServiceConnectConfigurationLogConfigurationArgs) ToServiceServiceConnectConfigurationLogConfigurationPtrOutput() ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return i.ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationLogConfigurationArgs) ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationLogConfigurationOutput).ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(ctx) +} + +// ServiceServiceConnectConfigurationLogConfigurationPtrInput is an input type that accepts ServiceServiceConnectConfigurationLogConfigurationArgs, ServiceServiceConnectConfigurationLogConfigurationPtr and ServiceServiceConnectConfigurationLogConfigurationPtrOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationLogConfigurationPtrInput` via: +// +// ServiceServiceConnectConfigurationLogConfigurationArgs{...} +// +// or: +// +// nil +type ServiceServiceConnectConfigurationLogConfigurationPtrInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationLogConfigurationPtrOutput() ServiceServiceConnectConfigurationLogConfigurationPtrOutput + ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(context.Context) ServiceServiceConnectConfigurationLogConfigurationPtrOutput +} + +type serviceServiceConnectConfigurationLogConfigurationPtrType ServiceServiceConnectConfigurationLogConfigurationArgs + +func ServiceServiceConnectConfigurationLogConfigurationPtr(v *ServiceServiceConnectConfigurationLogConfigurationArgs) ServiceServiceConnectConfigurationLogConfigurationPtrInput { + return (*serviceServiceConnectConfigurationLogConfigurationPtrType)(v) +} + +func (*serviceServiceConnectConfigurationLogConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationLogConfiguration)(nil)).Elem() +} + +func (i *serviceServiceConnectConfigurationLogConfigurationPtrType) ToServiceServiceConnectConfigurationLogConfigurationPtrOutput() ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return i.ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *serviceServiceConnectConfigurationLogConfigurationPtrType) ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationLogConfigurationPtrOutput) +} + +type ServiceServiceConnectConfigurationLogConfigurationOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationLogConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfiguration)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationLogConfigurationOutput) ToServiceServiceConnectConfigurationLogConfigurationOutput() ServiceServiceConnectConfigurationLogConfigurationOutput { + return o +} + +func (o ServiceServiceConnectConfigurationLogConfigurationOutput) ToServiceServiceConnectConfigurationLogConfigurationOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationOutput { + return o +} + +func (o ServiceServiceConnectConfigurationLogConfigurationOutput) ToServiceServiceConnectConfigurationLogConfigurationPtrOutput() ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return o.ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ServiceServiceConnectConfigurationLogConfigurationOutput) ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceServiceConnectConfigurationLogConfiguration) *ServiceServiceConnectConfigurationLogConfiguration { + return &v + }).(ServiceServiceConnectConfigurationLogConfigurationPtrOutput) +} + +// Log driver to use for the container. +func (o ServiceServiceConnectConfigurationLogConfigurationOutput) LogDriver() pulumi.StringOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationLogConfiguration) string { return v.LogDriver }).(pulumi.StringOutput) +} + +// Configuration options to send to the log driver. +func (o ServiceServiceConnectConfigurationLogConfigurationOutput) Options() pulumi.StringMapOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationLogConfiguration) map[string]string { return v.Options }).(pulumi.StringMapOutput) +} + +// Secrets to pass to the log configuration. See below. +func (o ServiceServiceConnectConfigurationLogConfigurationOutput) SecretOptions() ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationLogConfiguration) []ServiceServiceConnectConfigurationLogConfigurationSecretOption { + return v.SecretOptions + }).(ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput) +} + +type ServiceServiceConnectConfigurationLogConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationLogConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationLogConfiguration)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationLogConfigurationPtrOutput) ToServiceServiceConnectConfigurationLogConfigurationPtrOutput() ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationLogConfigurationPtrOutput) ToServiceServiceConnectConfigurationLogConfigurationPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationLogConfigurationPtrOutput) Elem() ServiceServiceConnectConfigurationLogConfigurationOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationLogConfiguration) ServiceServiceConnectConfigurationLogConfiguration { + if v != nil { + return *v + } + var ret ServiceServiceConnectConfigurationLogConfiguration + return ret + }).(ServiceServiceConnectConfigurationLogConfigurationOutput) +} + +// Log driver to use for the container. +func (o ServiceServiceConnectConfigurationLogConfigurationPtrOutput) LogDriver() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationLogConfiguration) *string { + if v == nil { + return nil + } + return &v.LogDriver + }).(pulumi.StringPtrOutput) +} + +// Configuration options to send to the log driver. +func (o ServiceServiceConnectConfigurationLogConfigurationPtrOutput) Options() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationLogConfiguration) map[string]string { + if v == nil { + return nil + } + return v.Options + }).(pulumi.StringMapOutput) +} + +// Secrets to pass to the log configuration. See below. +func (o ServiceServiceConnectConfigurationLogConfigurationPtrOutput) SecretOptions() ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationLogConfiguration) []ServiceServiceConnectConfigurationLogConfigurationSecretOption { + if v == nil { + return nil + } + return v.SecretOptions + }).(ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput) +} + +type ServiceServiceConnectConfigurationLogConfigurationSecretOption struct { + // Name of the secret. + Name string `pulumi:"name"` + // Secret to expose to the container. The supported values are either the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store. + ValueFrom string `pulumi:"valueFrom"` +} + +// ServiceServiceConnectConfigurationLogConfigurationSecretOptionInput is an input type that accepts ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs and ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationLogConfigurationSecretOptionInput` via: +// +// ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs{...} +type ServiceServiceConnectConfigurationLogConfigurationSecretOptionInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput() ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput + ToServiceServiceConnectConfigurationLogConfigurationSecretOptionOutputWithContext(context.Context) ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput +} + +type ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs struct { + // Name of the secret. + Name pulumi.StringInput `pulumi:"name"` + // Secret to expose to the container. The supported values are either the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store. + ValueFrom pulumi.StringInput `pulumi:"valueFrom"` +} + +func (ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfigurationSecretOption)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput() ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput { + return i.ToServiceServiceConnectConfigurationLogConfigurationSecretOptionOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput) +} + +// ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayInput is an input type that accepts ServiceServiceConnectConfigurationLogConfigurationSecretOptionArray and ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayInput` via: +// +// ServiceServiceConnectConfigurationLogConfigurationSecretOptionArray{ ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs{...} } +type ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput() ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput + ToServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutputWithContext(context.Context) ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput +} + +type ServiceServiceConnectConfigurationLogConfigurationSecretOptionArray []ServiceServiceConnectConfigurationLogConfigurationSecretOptionInput + +func (ServiceServiceConnectConfigurationLogConfigurationSecretOptionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceServiceConnectConfigurationLogConfigurationSecretOption)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationLogConfigurationSecretOptionArray) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput() ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput { + return i.ToServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationLogConfigurationSecretOptionArray) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput) +} + +type ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfigurationSecretOption)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput() ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput { + return o +} + +func (o ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput { + return o +} + +// Name of the secret. +func (o ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationLogConfigurationSecretOption) string { return v.Name }).(pulumi.StringOutput) +} + +// Secret to expose to the container. The supported values are either the full ARN of the AWS Secrets Manager secret or the full ARN of the parameter in the SSM Parameter Store. +func (o ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput) ValueFrom() pulumi.StringOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationLogConfigurationSecretOption) string { return v.ValueFrom }).(pulumi.StringOutput) +} + +type ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceServiceConnectConfigurationLogConfigurationSecretOption)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput() ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput { + return o +} + +func (o ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput) ToServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput { + return o +} + +func (o ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput) Index(i pulumi.IntInput) ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceServiceConnectConfigurationLogConfigurationSecretOption { + return vs[0].([]ServiceServiceConnectConfigurationLogConfigurationSecretOption)[vs[1].(int)] + }).(ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput) +} + +type ServiceServiceConnectConfigurationService struct { + // List of client aliases for this Service Connect service. You use these to assign names that can be used by client applications. The maximum number of client aliases that you can have in this list is 1. See below. + ClientAlias []ServiceServiceConnectConfigurationServiceClientAlias `pulumi:"clientAlias"` + // Name of the new AWS Cloud Map service that Amazon ECS creates for this Amazon ECS service. + DiscoveryName *string `pulumi:"discoveryName"` + // Port number for the Service Connect proxy to listen on. + IngressPortOverride *int `pulumi:"ingressPortOverride"` + // Name of one of the `portMappings` from all the containers in the task definition of this Amazon ECS service. + PortName string `pulumi:"portName"` + // Configuration timeouts for Service Connect + Timeout *ServiceServiceConnectConfigurationServiceTimeout `pulumi:"timeout"` + // Configuration for enabling Transport Layer Security (TLS) + Tls *ServiceServiceConnectConfigurationServiceTls `pulumi:"tls"` +} + +// ServiceServiceConnectConfigurationServiceInput is an input type that accepts ServiceServiceConnectConfigurationServiceArgs and ServiceServiceConnectConfigurationServiceOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceInput` via: +// +// ServiceServiceConnectConfigurationServiceArgs{...} +type ServiceServiceConnectConfigurationServiceInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceOutput() ServiceServiceConnectConfigurationServiceOutput + ToServiceServiceConnectConfigurationServiceOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceOutput +} + +type ServiceServiceConnectConfigurationServiceArgs struct { + // List of client aliases for this Service Connect service. You use these to assign names that can be used by client applications. The maximum number of client aliases that you can have in this list is 1. See below. + ClientAlias ServiceServiceConnectConfigurationServiceClientAliasArrayInput `pulumi:"clientAlias"` + // Name of the new AWS Cloud Map service that Amazon ECS creates for this Amazon ECS service. + DiscoveryName pulumi.StringPtrInput `pulumi:"discoveryName"` + // Port number for the Service Connect proxy to listen on. + IngressPortOverride pulumi.IntPtrInput `pulumi:"ingressPortOverride"` + // Name of one of the `portMappings` from all the containers in the task definition of this Amazon ECS service. + PortName pulumi.StringInput `pulumi:"portName"` + // Configuration timeouts for Service Connect + Timeout ServiceServiceConnectConfigurationServiceTimeoutPtrInput `pulumi:"timeout"` + // Configuration for enabling Transport Layer Security (TLS) + Tls ServiceServiceConnectConfigurationServiceTlsPtrInput `pulumi:"tls"` +} + +func (ServiceServiceConnectConfigurationServiceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationService)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationServiceArgs) ToServiceServiceConnectConfigurationServiceOutput() ServiceServiceConnectConfigurationServiceOutput { + return i.ToServiceServiceConnectConfigurationServiceOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceArgs) ToServiceServiceConnectConfigurationServiceOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceOutput) +} + +// ServiceServiceConnectConfigurationServiceArrayInput is an input type that accepts ServiceServiceConnectConfigurationServiceArray and ServiceServiceConnectConfigurationServiceArrayOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceArrayInput` via: +// +// ServiceServiceConnectConfigurationServiceArray{ ServiceServiceConnectConfigurationServiceArgs{...} } +type ServiceServiceConnectConfigurationServiceArrayInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceArrayOutput() ServiceServiceConnectConfigurationServiceArrayOutput + ToServiceServiceConnectConfigurationServiceArrayOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceArrayOutput +} + +type ServiceServiceConnectConfigurationServiceArray []ServiceServiceConnectConfigurationServiceInput + +func (ServiceServiceConnectConfigurationServiceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceServiceConnectConfigurationService)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationServiceArray) ToServiceServiceConnectConfigurationServiceArrayOutput() ServiceServiceConnectConfigurationServiceArrayOutput { + return i.ToServiceServiceConnectConfigurationServiceArrayOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceArray) ToServiceServiceConnectConfigurationServiceArrayOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceArrayOutput) +} + +type ServiceServiceConnectConfigurationServiceOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationService)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceOutput) ToServiceServiceConnectConfigurationServiceOutput() ServiceServiceConnectConfigurationServiceOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceOutput) ToServiceServiceConnectConfigurationServiceOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceOutput { + return o +} + +// List of client aliases for this Service Connect service. You use these to assign names that can be used by client applications. The maximum number of client aliases that you can have in this list is 1. See below. +func (o ServiceServiceConnectConfigurationServiceOutput) ClientAlias() ServiceServiceConnectConfigurationServiceClientAliasArrayOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationService) []ServiceServiceConnectConfigurationServiceClientAlias { + return v.ClientAlias + }).(ServiceServiceConnectConfigurationServiceClientAliasArrayOutput) +} + +// Name of the new AWS Cloud Map service that Amazon ECS creates for this Amazon ECS service. +func (o ServiceServiceConnectConfigurationServiceOutput) DiscoveryName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationService) *string { return v.DiscoveryName }).(pulumi.StringPtrOutput) +} + +// Port number for the Service Connect proxy to listen on. +func (o ServiceServiceConnectConfigurationServiceOutput) IngressPortOverride() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationService) *int { return v.IngressPortOverride }).(pulumi.IntPtrOutput) +} + +// Name of one of the `portMappings` from all the containers in the task definition of this Amazon ECS service. +func (o ServiceServiceConnectConfigurationServiceOutput) PortName() pulumi.StringOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationService) string { return v.PortName }).(pulumi.StringOutput) +} + +// Configuration timeouts for Service Connect +func (o ServiceServiceConnectConfigurationServiceOutput) Timeout() ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationService) *ServiceServiceConnectConfigurationServiceTimeout { + return v.Timeout + }).(ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) +} + +// Configuration for enabling Transport Layer Security (TLS) +func (o ServiceServiceConnectConfigurationServiceOutput) Tls() ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationService) *ServiceServiceConnectConfigurationServiceTls { + return v.Tls + }).(ServiceServiceConnectConfigurationServiceTlsPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceArrayOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceServiceConnectConfigurationService)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceArrayOutput) ToServiceServiceConnectConfigurationServiceArrayOutput() ServiceServiceConnectConfigurationServiceArrayOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceArrayOutput) ToServiceServiceConnectConfigurationServiceArrayOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceArrayOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceArrayOutput) Index(i pulumi.IntInput) ServiceServiceConnectConfigurationServiceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceServiceConnectConfigurationService { + return vs[0].([]ServiceServiceConnectConfigurationService)[vs[1].(int)] + }).(ServiceServiceConnectConfigurationServiceOutput) +} + +type ServiceServiceConnectConfigurationServiceClientAlias struct { + // Name that you use in the applications of client tasks to connect to this service. + DnsName *string `pulumi:"dnsName"` + // Listening port number for the Service Connect proxy. This port is available inside of all of the tasks within the same namespace. + Port int `pulumi:"port"` +} + +// ServiceServiceConnectConfigurationServiceClientAliasInput is an input type that accepts ServiceServiceConnectConfigurationServiceClientAliasArgs and ServiceServiceConnectConfigurationServiceClientAliasOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceClientAliasInput` via: +// +// ServiceServiceConnectConfigurationServiceClientAliasArgs{...} +type ServiceServiceConnectConfigurationServiceClientAliasInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceClientAliasOutput() ServiceServiceConnectConfigurationServiceClientAliasOutput + ToServiceServiceConnectConfigurationServiceClientAliasOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceClientAliasOutput +} + +type ServiceServiceConnectConfigurationServiceClientAliasArgs struct { + // Name that you use in the applications of client tasks to connect to this service. + DnsName pulumi.StringPtrInput `pulumi:"dnsName"` + // Listening port number for the Service Connect proxy. This port is available inside of all of the tasks within the same namespace. + Port pulumi.IntInput `pulumi:"port"` +} + +func (ServiceServiceConnectConfigurationServiceClientAliasArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceClientAlias)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationServiceClientAliasArgs) ToServiceServiceConnectConfigurationServiceClientAliasOutput() ServiceServiceConnectConfigurationServiceClientAliasOutput { + return i.ToServiceServiceConnectConfigurationServiceClientAliasOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceClientAliasArgs) ToServiceServiceConnectConfigurationServiceClientAliasOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceClientAliasOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceClientAliasOutput) +} + +// ServiceServiceConnectConfigurationServiceClientAliasArrayInput is an input type that accepts ServiceServiceConnectConfigurationServiceClientAliasArray and ServiceServiceConnectConfigurationServiceClientAliasArrayOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceClientAliasArrayInput` via: +// +// ServiceServiceConnectConfigurationServiceClientAliasArray{ ServiceServiceConnectConfigurationServiceClientAliasArgs{...} } +type ServiceServiceConnectConfigurationServiceClientAliasArrayInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceClientAliasArrayOutput() ServiceServiceConnectConfigurationServiceClientAliasArrayOutput + ToServiceServiceConnectConfigurationServiceClientAliasArrayOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceClientAliasArrayOutput +} + +type ServiceServiceConnectConfigurationServiceClientAliasArray []ServiceServiceConnectConfigurationServiceClientAliasInput + +func (ServiceServiceConnectConfigurationServiceClientAliasArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceServiceConnectConfigurationServiceClientAlias)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationServiceClientAliasArray) ToServiceServiceConnectConfigurationServiceClientAliasArrayOutput() ServiceServiceConnectConfigurationServiceClientAliasArrayOutput { + return i.ToServiceServiceConnectConfigurationServiceClientAliasArrayOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceClientAliasArray) ToServiceServiceConnectConfigurationServiceClientAliasArrayOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceClientAliasArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceClientAliasArrayOutput) +} + +type ServiceServiceConnectConfigurationServiceClientAliasOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceClientAliasOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceClientAlias)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceClientAliasOutput) ToServiceServiceConnectConfigurationServiceClientAliasOutput() ServiceServiceConnectConfigurationServiceClientAliasOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceClientAliasOutput) ToServiceServiceConnectConfigurationServiceClientAliasOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceClientAliasOutput { + return o +} + +// Name that you use in the applications of client tasks to connect to this service. +func (o ServiceServiceConnectConfigurationServiceClientAliasOutput) DnsName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceClientAlias) *string { return v.DnsName }).(pulumi.StringPtrOutput) +} + +// Listening port number for the Service Connect proxy. This port is available inside of all of the tasks within the same namespace. +func (o ServiceServiceConnectConfigurationServiceClientAliasOutput) Port() pulumi.IntOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceClientAlias) int { return v.Port }).(pulumi.IntOutput) +} + +type ServiceServiceConnectConfigurationServiceClientAliasArrayOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceClientAliasArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceServiceConnectConfigurationServiceClientAlias)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceClientAliasArrayOutput) ToServiceServiceConnectConfigurationServiceClientAliasArrayOutput() ServiceServiceConnectConfigurationServiceClientAliasArrayOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceClientAliasArrayOutput) ToServiceServiceConnectConfigurationServiceClientAliasArrayOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceClientAliasArrayOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceClientAliasArrayOutput) Index(i pulumi.IntInput) ServiceServiceConnectConfigurationServiceClientAliasOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceServiceConnectConfigurationServiceClientAlias { + return vs[0].([]ServiceServiceConnectConfigurationServiceClientAlias)[vs[1].(int)] + }).(ServiceServiceConnectConfigurationServiceClientAliasOutput) +} + +type ServiceServiceConnectConfigurationServiceTimeout struct { + // Amount of time in seconds a connection will stay active while idle. A value of 0 can be set to disable idleTimeout. + IdleTimeoutSeconds *int `pulumi:"idleTimeoutSeconds"` + // Amount of time in seconds for the upstream to respond with a complete response per request. A value of 0 can be set to disable perRequestTimeout. Can only be set when appProtocol isn't TCP. + PerRequestTimeoutSeconds *int `pulumi:"perRequestTimeoutSeconds"` +} + +// ServiceServiceConnectConfigurationServiceTimeoutInput is an input type that accepts ServiceServiceConnectConfigurationServiceTimeoutArgs and ServiceServiceConnectConfigurationServiceTimeoutOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceTimeoutInput` via: +// +// ServiceServiceConnectConfigurationServiceTimeoutArgs{...} +type ServiceServiceConnectConfigurationServiceTimeoutInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceTimeoutOutput() ServiceServiceConnectConfigurationServiceTimeoutOutput + ToServiceServiceConnectConfigurationServiceTimeoutOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceTimeoutOutput +} + +type ServiceServiceConnectConfigurationServiceTimeoutArgs struct { + // Amount of time in seconds a connection will stay active while idle. A value of 0 can be set to disable idleTimeout. + IdleTimeoutSeconds pulumi.IntPtrInput `pulumi:"idleTimeoutSeconds"` + // Amount of time in seconds for the upstream to respond with a complete response per request. A value of 0 can be set to disable perRequestTimeout. Can only be set when appProtocol isn't TCP. + PerRequestTimeoutSeconds pulumi.IntPtrInput `pulumi:"perRequestTimeoutSeconds"` +} + +func (ServiceServiceConnectConfigurationServiceTimeoutArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTimeout)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationServiceTimeoutArgs) ToServiceServiceConnectConfigurationServiceTimeoutOutput() ServiceServiceConnectConfigurationServiceTimeoutOutput { + return i.ToServiceServiceConnectConfigurationServiceTimeoutOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceTimeoutArgs) ToServiceServiceConnectConfigurationServiceTimeoutOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTimeoutOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTimeoutOutput) +} + +func (i ServiceServiceConnectConfigurationServiceTimeoutArgs) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutput() ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return i.ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceTimeoutArgs) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTimeoutOutput).ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(ctx) +} + +// ServiceServiceConnectConfigurationServiceTimeoutPtrInput is an input type that accepts ServiceServiceConnectConfigurationServiceTimeoutArgs, ServiceServiceConnectConfigurationServiceTimeoutPtr and ServiceServiceConnectConfigurationServiceTimeoutPtrOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceTimeoutPtrInput` via: +// +// ServiceServiceConnectConfigurationServiceTimeoutArgs{...} +// +// or: +// +// nil +type ServiceServiceConnectConfigurationServiceTimeoutPtrInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceTimeoutPtrOutput() ServiceServiceConnectConfigurationServiceTimeoutPtrOutput + ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceTimeoutPtrOutput +} + +type serviceServiceConnectConfigurationServiceTimeoutPtrType ServiceServiceConnectConfigurationServiceTimeoutArgs + +func ServiceServiceConnectConfigurationServiceTimeoutPtr(v *ServiceServiceConnectConfigurationServiceTimeoutArgs) ServiceServiceConnectConfigurationServiceTimeoutPtrInput { + return (*serviceServiceConnectConfigurationServiceTimeoutPtrType)(v) +} + +func (*serviceServiceConnectConfigurationServiceTimeoutPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationServiceTimeout)(nil)).Elem() +} + +func (i *serviceServiceConnectConfigurationServiceTimeoutPtrType) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutput() ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return i.ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(context.Background()) +} + +func (i *serviceServiceConnectConfigurationServiceTimeoutPtrType) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceTimeoutOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceTimeoutOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTimeout)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceTimeoutOutput) ToServiceServiceConnectConfigurationServiceTimeoutOutput() ServiceServiceConnectConfigurationServiceTimeoutOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTimeoutOutput) ToServiceServiceConnectConfigurationServiceTimeoutOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTimeoutOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTimeoutOutput) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutput() ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return o.ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(context.Background()) +} + +func (o ServiceServiceConnectConfigurationServiceTimeoutOutput) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceServiceConnectConfigurationServiceTimeout) *ServiceServiceConnectConfigurationServiceTimeout { + return &v + }).(ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) +} + +// Amount of time in seconds a connection will stay active while idle. A value of 0 can be set to disable idleTimeout. +func (o ServiceServiceConnectConfigurationServiceTimeoutOutput) IdleTimeoutSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceTimeout) *int { return v.IdleTimeoutSeconds }).(pulumi.IntPtrOutput) +} + +// Amount of time in seconds for the upstream to respond with a complete response per request. A value of 0 can be set to disable perRequestTimeout. Can only be set when appProtocol isn't TCP. +func (o ServiceServiceConnectConfigurationServiceTimeoutOutput) PerRequestTimeoutSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceTimeout) *int { return v.PerRequestTimeoutSeconds }).(pulumi.IntPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceTimeoutPtrOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationServiceTimeout)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutput() ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) ToServiceServiceConnectConfigurationServiceTimeoutPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTimeoutPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) Elem() ServiceServiceConnectConfigurationServiceTimeoutOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTimeout) ServiceServiceConnectConfigurationServiceTimeout { + if v != nil { + return *v + } + var ret ServiceServiceConnectConfigurationServiceTimeout + return ret + }).(ServiceServiceConnectConfigurationServiceTimeoutOutput) +} + +// Amount of time in seconds a connection will stay active while idle. A value of 0 can be set to disable idleTimeout. +func (o ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) IdleTimeoutSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTimeout) *int { + if v == nil { + return nil + } + return v.IdleTimeoutSeconds + }).(pulumi.IntPtrOutput) +} + +// Amount of time in seconds for the upstream to respond with a complete response per request. A value of 0 can be set to disable perRequestTimeout. Can only be set when appProtocol isn't TCP. +func (o ServiceServiceConnectConfigurationServiceTimeoutPtrOutput) PerRequestTimeoutSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTimeout) *int { + if v == nil { + return nil + } + return v.PerRequestTimeoutSeconds + }).(pulumi.IntPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceTls struct { + // Details of the certificate authority which will issue the certificate. + IssuerCertAuthority ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority `pulumi:"issuerCertAuthority"` + // KMS key used to encrypt the private key in Secrets Manager. + KmsKey *string `pulumi:"kmsKey"` + // ARN of the IAM Role that's associated with the Service Connect TLS. + RoleArn *string `pulumi:"roleArn"` +} + +// ServiceServiceConnectConfigurationServiceTlsInput is an input type that accepts ServiceServiceConnectConfigurationServiceTlsArgs and ServiceServiceConnectConfigurationServiceTlsOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceTlsInput` via: +// +// ServiceServiceConnectConfigurationServiceTlsArgs{...} +type ServiceServiceConnectConfigurationServiceTlsInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceTlsOutput() ServiceServiceConnectConfigurationServiceTlsOutput + ToServiceServiceConnectConfigurationServiceTlsOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceTlsOutput +} + +type ServiceServiceConnectConfigurationServiceTlsArgs struct { + // Details of the certificate authority which will issue the certificate. + IssuerCertAuthority ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityInput `pulumi:"issuerCertAuthority"` + // KMS key used to encrypt the private key in Secrets Manager. + KmsKey pulumi.StringPtrInput `pulumi:"kmsKey"` + // ARN of the IAM Role that's associated with the Service Connect TLS. + RoleArn pulumi.StringPtrInput `pulumi:"roleArn"` +} + +func (ServiceServiceConnectConfigurationServiceTlsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTls)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationServiceTlsArgs) ToServiceServiceConnectConfigurationServiceTlsOutput() ServiceServiceConnectConfigurationServiceTlsOutput { + return i.ToServiceServiceConnectConfigurationServiceTlsOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceTlsArgs) ToServiceServiceConnectConfigurationServiceTlsOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTlsOutput) +} + +func (i ServiceServiceConnectConfigurationServiceTlsArgs) ToServiceServiceConnectConfigurationServiceTlsPtrOutput() ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return i.ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceTlsArgs) ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTlsOutput).ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(ctx) +} + +// ServiceServiceConnectConfigurationServiceTlsPtrInput is an input type that accepts ServiceServiceConnectConfigurationServiceTlsArgs, ServiceServiceConnectConfigurationServiceTlsPtr and ServiceServiceConnectConfigurationServiceTlsPtrOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceTlsPtrInput` via: +// +// ServiceServiceConnectConfigurationServiceTlsArgs{...} +// +// or: +// +// nil +type ServiceServiceConnectConfigurationServiceTlsPtrInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceTlsPtrOutput() ServiceServiceConnectConfigurationServiceTlsPtrOutput + ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceTlsPtrOutput +} + +type serviceServiceConnectConfigurationServiceTlsPtrType ServiceServiceConnectConfigurationServiceTlsArgs + +func ServiceServiceConnectConfigurationServiceTlsPtr(v *ServiceServiceConnectConfigurationServiceTlsArgs) ServiceServiceConnectConfigurationServiceTlsPtrInput { + return (*serviceServiceConnectConfigurationServiceTlsPtrType)(v) +} + +func (*serviceServiceConnectConfigurationServiceTlsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationServiceTls)(nil)).Elem() +} + +func (i *serviceServiceConnectConfigurationServiceTlsPtrType) ToServiceServiceConnectConfigurationServiceTlsPtrOutput() ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return i.ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(context.Background()) +} + +func (i *serviceServiceConnectConfigurationServiceTlsPtrType) ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTlsPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceTlsOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceTlsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTls)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceTlsOutput) ToServiceServiceConnectConfigurationServiceTlsOutput() ServiceServiceConnectConfigurationServiceTlsOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsOutput) ToServiceServiceConnectConfigurationServiceTlsOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsOutput) ToServiceServiceConnectConfigurationServiceTlsPtrOutput() ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return o.ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(context.Background()) +} + +func (o ServiceServiceConnectConfigurationServiceTlsOutput) ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceServiceConnectConfigurationServiceTls) *ServiceServiceConnectConfigurationServiceTls { + return &v + }).(ServiceServiceConnectConfigurationServiceTlsPtrOutput) +} + +// Details of the certificate authority which will issue the certificate. +func (o ServiceServiceConnectConfigurationServiceTlsOutput) IssuerCertAuthority() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceTls) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority { + return v.IssuerCertAuthority + }).(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) +} + +// KMS key used to encrypt the private key in Secrets Manager. +func (o ServiceServiceConnectConfigurationServiceTlsOutput) KmsKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceTls) *string { return v.KmsKey }).(pulumi.StringPtrOutput) +} + +// ARN of the IAM Role that's associated with the Service Connect TLS. +func (o ServiceServiceConnectConfigurationServiceTlsOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceTls) *string { return v.RoleArn }).(pulumi.StringPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceTlsPtrOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceTlsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationServiceTls)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceTlsPtrOutput) ToServiceServiceConnectConfigurationServiceTlsPtrOutput() ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsPtrOutput) ToServiceServiceConnectConfigurationServiceTlsPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsPtrOutput) Elem() ServiceServiceConnectConfigurationServiceTlsOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTls) ServiceServiceConnectConfigurationServiceTls { + if v != nil { + return *v + } + var ret ServiceServiceConnectConfigurationServiceTls + return ret + }).(ServiceServiceConnectConfigurationServiceTlsOutput) +} + +// Details of the certificate authority which will issue the certificate. +func (o ServiceServiceConnectConfigurationServiceTlsPtrOutput) IssuerCertAuthority() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTls) *ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority { + if v == nil { + return nil + } + return &v.IssuerCertAuthority + }).(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) +} + +// KMS key used to encrypt the private key in Secrets Manager. +func (o ServiceServiceConnectConfigurationServiceTlsPtrOutput) KmsKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTls) *string { + if v == nil { + return nil + } + return v.KmsKey + }).(pulumi.StringPtrOutput) +} + +// ARN of the IAM Role that's associated with the Service Connect TLS. +func (o ServiceServiceConnectConfigurationServiceTlsPtrOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTls) *string { + if v == nil { + return nil + } + return v.RoleArn + }).(pulumi.StringPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority struct { + // ARN of the `acmpca.CertificateAuthority` used to create the TLS Certificates. + AwsPcaAuthorityArn string `pulumi:"awsPcaAuthorityArn"` +} + +// ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityInput is an input type that accepts ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs and ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityInput` via: +// +// ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs{...} +type ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput + ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput +} + +type ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs struct { + // ARN of the `acmpca.CertificateAuthority` used to create the TLS Certificates. + AwsPcaAuthorityArn pulumi.StringInput `pulumi:"awsPcaAuthorityArn"` +} + +func (ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority)(nil)).Elem() +} + +func (i ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput { + return i.ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) +} + +func (i ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return i.ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(context.Background()) +} + +func (i ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput).ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(ctx) +} + +// ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrInput is an input type that accepts ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs, ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtr and ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput values. +// You can construct a concrete instance of `ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrInput` via: +// +// ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs{...} +// +// or: +// +// nil +type ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrInput interface { + pulumi.Input + + ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput + ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput +} + +type serviceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrType ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs + +func ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtr(v *ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrInput { + return (*serviceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrType)(v) +} + +func (*serviceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority)(nil)).Elem() +} + +func (i *serviceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrType) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return i.ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(context.Background()) +} + +func (i *serviceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrType) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) +} + +type ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return o.ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(context.Background()) +} + +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority) *ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority { + return &v + }).(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) +} + +// ARN of the `acmpca.CertificateAuthority` used to create the TLS Certificates. +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) AwsPcaAuthorityArn() pulumi.StringOutput { + return o.ApplyT(func(v ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority) string { + return v.AwsPcaAuthorityArn + }).(pulumi.StringOutput) +} + +type ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput struct{ *pulumi.OutputState } + +func (ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority)(nil)).Elem() +} + +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) ToServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutputWithContext(ctx context.Context) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput { + return o +} + +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) Elem() ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority) ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority { + if v != nil { + return *v + } + var ret ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority + return ret + }).(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput) +} + +// ARN of the `acmpca.CertificateAuthority` used to create the TLS Certificates. +func (o ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput) AwsPcaAuthorityArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthority) *string { + if v == nil { + return nil + } + return &v.AwsPcaAuthorityArn + }).(pulumi.StringPtrOutput) +} + +type ServiceServiceRegistries struct { + // Container name value, already specified in the task definition, to be used for your service discovery service. + ContainerName *string `pulumi:"containerName"` + // Port value, already specified in the task definition, to be used for your service discovery service. + ContainerPort *int `pulumi:"containerPort"` + // Port value used if your Service Discovery service specified an SRV record. + Port *int `pulumi:"port"` + // ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service`). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html) + RegistryArn string `pulumi:"registryArn"` +} + +// ServiceServiceRegistriesInput is an input type that accepts ServiceServiceRegistriesArgs and ServiceServiceRegistriesOutput values. +// You can construct a concrete instance of `ServiceServiceRegistriesInput` via: +// +// ServiceServiceRegistriesArgs{...} +type ServiceServiceRegistriesInput interface { + pulumi.Input + + ToServiceServiceRegistriesOutput() ServiceServiceRegistriesOutput + ToServiceServiceRegistriesOutputWithContext(context.Context) ServiceServiceRegistriesOutput +} + +type ServiceServiceRegistriesArgs struct { + // Container name value, already specified in the task definition, to be used for your service discovery service. + ContainerName pulumi.StringPtrInput `pulumi:"containerName"` + // Port value, already specified in the task definition, to be used for your service discovery service. + ContainerPort pulumi.IntPtrInput `pulumi:"containerPort"` + // Port value used if your Service Discovery service specified an SRV record. + Port pulumi.IntPtrInput `pulumi:"port"` + // ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service`). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html) + RegistryArn pulumi.StringInput `pulumi:"registryArn"` +} + +func (ServiceServiceRegistriesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceRegistries)(nil)).Elem() +} + +func (i ServiceServiceRegistriesArgs) ToServiceServiceRegistriesOutput() ServiceServiceRegistriesOutput { + return i.ToServiceServiceRegistriesOutputWithContext(context.Background()) +} + +func (i ServiceServiceRegistriesArgs) ToServiceServiceRegistriesOutputWithContext(ctx context.Context) ServiceServiceRegistriesOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceRegistriesOutput) +} + +func (i ServiceServiceRegistriesArgs) ToServiceServiceRegistriesPtrOutput() ServiceServiceRegistriesPtrOutput { + return i.ToServiceServiceRegistriesPtrOutputWithContext(context.Background()) +} + +func (i ServiceServiceRegistriesArgs) ToServiceServiceRegistriesPtrOutputWithContext(ctx context.Context) ServiceServiceRegistriesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceRegistriesOutput).ToServiceServiceRegistriesPtrOutputWithContext(ctx) +} + +// ServiceServiceRegistriesPtrInput is an input type that accepts ServiceServiceRegistriesArgs, ServiceServiceRegistriesPtr and ServiceServiceRegistriesPtrOutput values. +// You can construct a concrete instance of `ServiceServiceRegistriesPtrInput` via: +// +// ServiceServiceRegistriesArgs{...} +// +// or: +// +// nil +type ServiceServiceRegistriesPtrInput interface { + pulumi.Input + + ToServiceServiceRegistriesPtrOutput() ServiceServiceRegistriesPtrOutput + ToServiceServiceRegistriesPtrOutputWithContext(context.Context) ServiceServiceRegistriesPtrOutput +} + +type serviceServiceRegistriesPtrType ServiceServiceRegistriesArgs + +func ServiceServiceRegistriesPtr(v *ServiceServiceRegistriesArgs) ServiceServiceRegistriesPtrInput { + return (*serviceServiceRegistriesPtrType)(v) +} + +func (*serviceServiceRegistriesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceRegistries)(nil)).Elem() +} + +func (i *serviceServiceRegistriesPtrType) ToServiceServiceRegistriesPtrOutput() ServiceServiceRegistriesPtrOutput { + return i.ToServiceServiceRegistriesPtrOutputWithContext(context.Background()) +} + +func (i *serviceServiceRegistriesPtrType) ToServiceServiceRegistriesPtrOutputWithContext(ctx context.Context) ServiceServiceRegistriesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceServiceRegistriesPtrOutput) +} + +type ServiceServiceRegistriesOutput struct{ *pulumi.OutputState } + +func (ServiceServiceRegistriesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceServiceRegistries)(nil)).Elem() +} + +func (o ServiceServiceRegistriesOutput) ToServiceServiceRegistriesOutput() ServiceServiceRegistriesOutput { + return o +} + +func (o ServiceServiceRegistriesOutput) ToServiceServiceRegistriesOutputWithContext(ctx context.Context) ServiceServiceRegistriesOutput { + return o +} + +func (o ServiceServiceRegistriesOutput) ToServiceServiceRegistriesPtrOutput() ServiceServiceRegistriesPtrOutput { + return o.ToServiceServiceRegistriesPtrOutputWithContext(context.Background()) +} + +func (o ServiceServiceRegistriesOutput) ToServiceServiceRegistriesPtrOutputWithContext(ctx context.Context) ServiceServiceRegistriesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceServiceRegistries) *ServiceServiceRegistries { + return &v + }).(ServiceServiceRegistriesPtrOutput) +} + +// Container name value, already specified in the task definition, to be used for your service discovery service. +func (o ServiceServiceRegistriesOutput) ContainerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceServiceRegistries) *string { return v.ContainerName }).(pulumi.StringPtrOutput) +} + +// Port value, already specified in the task definition, to be used for your service discovery service. +func (o ServiceServiceRegistriesOutput) ContainerPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceServiceRegistries) *int { return v.ContainerPort }).(pulumi.IntPtrOutput) +} + +// Port value used if your Service Discovery service specified an SRV record. +func (o ServiceServiceRegistriesOutput) Port() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceServiceRegistries) *int { return v.Port }).(pulumi.IntPtrOutput) +} + +// ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service`). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html) +func (o ServiceServiceRegistriesOutput) RegistryArn() pulumi.StringOutput { + return o.ApplyT(func(v ServiceServiceRegistries) string { return v.RegistryArn }).(pulumi.StringOutput) +} + +type ServiceServiceRegistriesPtrOutput struct{ *pulumi.OutputState } + +func (ServiceServiceRegistriesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceServiceRegistries)(nil)).Elem() +} + +func (o ServiceServiceRegistriesPtrOutput) ToServiceServiceRegistriesPtrOutput() ServiceServiceRegistriesPtrOutput { + return o +} + +func (o ServiceServiceRegistriesPtrOutput) ToServiceServiceRegistriesPtrOutputWithContext(ctx context.Context) ServiceServiceRegistriesPtrOutput { + return o +} + +func (o ServiceServiceRegistriesPtrOutput) Elem() ServiceServiceRegistriesOutput { + return o.ApplyT(func(v *ServiceServiceRegistries) ServiceServiceRegistries { + if v != nil { + return *v + } + var ret ServiceServiceRegistries + return ret + }).(ServiceServiceRegistriesOutput) +} + +// Container name value, already specified in the task definition, to be used for your service discovery service. +func (o ServiceServiceRegistriesPtrOutput) ContainerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceServiceRegistries) *string { + if v == nil { + return nil + } + return v.ContainerName + }).(pulumi.StringPtrOutput) +} + +// Port value, already specified in the task definition, to be used for your service discovery service. +func (o ServiceServiceRegistriesPtrOutput) ContainerPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceServiceRegistries) *int { + if v == nil { + return nil + } + return v.ContainerPort + }).(pulumi.IntPtrOutput) +} + +// Port value used if your Service Discovery service specified an SRV record. +func (o ServiceServiceRegistriesPtrOutput) Port() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceServiceRegistries) *int { + if v == nil { + return nil + } + return v.Port + }).(pulumi.IntPtrOutput) +} + +// ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service`). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html) +func (o ServiceServiceRegistriesPtrOutput) RegistryArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceServiceRegistries) *string { + if v == nil { + return nil + } + return &v.RegistryArn + }).(pulumi.StringPtrOutput) +} + +type ServiceVolumeConfiguration struct { + // Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. See below. + ManagedEbsVolume ServiceVolumeConfigurationManagedEbsVolume `pulumi:"managedEbsVolume"` + // Name of the volume. + Name string `pulumi:"name"` +} + +// ServiceVolumeConfigurationInput is an input type that accepts ServiceVolumeConfigurationArgs and ServiceVolumeConfigurationOutput values. +// You can construct a concrete instance of `ServiceVolumeConfigurationInput` via: +// +// ServiceVolumeConfigurationArgs{...} +type ServiceVolumeConfigurationInput interface { + pulumi.Input + + ToServiceVolumeConfigurationOutput() ServiceVolumeConfigurationOutput + ToServiceVolumeConfigurationOutputWithContext(context.Context) ServiceVolumeConfigurationOutput +} + +type ServiceVolumeConfigurationArgs struct { + // Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. See below. + ManagedEbsVolume ServiceVolumeConfigurationManagedEbsVolumeInput `pulumi:"managedEbsVolume"` + // Name of the volume. + Name pulumi.StringInput `pulumi:"name"` +} + +func (ServiceVolumeConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVolumeConfiguration)(nil)).Elem() +} + +func (i ServiceVolumeConfigurationArgs) ToServiceVolumeConfigurationOutput() ServiceVolumeConfigurationOutput { + return i.ToServiceVolumeConfigurationOutputWithContext(context.Background()) +} + +func (i ServiceVolumeConfigurationArgs) ToServiceVolumeConfigurationOutputWithContext(ctx context.Context) ServiceVolumeConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationOutput) +} + +func (i ServiceVolumeConfigurationArgs) ToServiceVolumeConfigurationPtrOutput() ServiceVolumeConfigurationPtrOutput { + return i.ToServiceVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i ServiceVolumeConfigurationArgs) ToServiceVolumeConfigurationPtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationOutput).ToServiceVolumeConfigurationPtrOutputWithContext(ctx) +} + +// ServiceVolumeConfigurationPtrInput is an input type that accepts ServiceVolumeConfigurationArgs, ServiceVolumeConfigurationPtr and ServiceVolumeConfigurationPtrOutput values. +// You can construct a concrete instance of `ServiceVolumeConfigurationPtrInput` via: +// +// ServiceVolumeConfigurationArgs{...} +// +// or: +// +// nil +type ServiceVolumeConfigurationPtrInput interface { + pulumi.Input + + ToServiceVolumeConfigurationPtrOutput() ServiceVolumeConfigurationPtrOutput + ToServiceVolumeConfigurationPtrOutputWithContext(context.Context) ServiceVolumeConfigurationPtrOutput +} + +type serviceVolumeConfigurationPtrType ServiceVolumeConfigurationArgs + +func ServiceVolumeConfigurationPtr(v *ServiceVolumeConfigurationArgs) ServiceVolumeConfigurationPtrInput { + return (*serviceVolumeConfigurationPtrType)(v) +} + +func (*serviceVolumeConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceVolumeConfiguration)(nil)).Elem() +} + +func (i *serviceVolumeConfigurationPtrType) ToServiceVolumeConfigurationPtrOutput() ServiceVolumeConfigurationPtrOutput { + return i.ToServiceVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *serviceVolumeConfigurationPtrType) ToServiceVolumeConfigurationPtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationPtrOutput) +} + +type ServiceVolumeConfigurationOutput struct{ *pulumi.OutputState } + +func (ServiceVolumeConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVolumeConfiguration)(nil)).Elem() +} + +func (o ServiceVolumeConfigurationOutput) ToServiceVolumeConfigurationOutput() ServiceVolumeConfigurationOutput { + return o +} + +func (o ServiceVolumeConfigurationOutput) ToServiceVolumeConfigurationOutputWithContext(ctx context.Context) ServiceVolumeConfigurationOutput { + return o +} + +func (o ServiceVolumeConfigurationOutput) ToServiceVolumeConfigurationPtrOutput() ServiceVolumeConfigurationPtrOutput { + return o.ToServiceVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (o ServiceVolumeConfigurationOutput) ToServiceVolumeConfigurationPtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceVolumeConfiguration) *ServiceVolumeConfiguration { + return &v + }).(ServiceVolumeConfigurationPtrOutput) +} + +// Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. See below. +func (o ServiceVolumeConfigurationOutput) ManagedEbsVolume() ServiceVolumeConfigurationManagedEbsVolumeOutput { + return o.ApplyT(func(v ServiceVolumeConfiguration) ServiceVolumeConfigurationManagedEbsVolume { + return v.ManagedEbsVolume + }).(ServiceVolumeConfigurationManagedEbsVolumeOutput) +} + +// Name of the volume. +func (o ServiceVolumeConfigurationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ServiceVolumeConfiguration) string { return v.Name }).(pulumi.StringOutput) +} + +type ServiceVolumeConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (ServiceVolumeConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceVolumeConfiguration)(nil)).Elem() +} + +func (o ServiceVolumeConfigurationPtrOutput) ToServiceVolumeConfigurationPtrOutput() ServiceVolumeConfigurationPtrOutput { + return o +} + +func (o ServiceVolumeConfigurationPtrOutput) ToServiceVolumeConfigurationPtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationPtrOutput { + return o +} + +func (o ServiceVolumeConfigurationPtrOutput) Elem() ServiceVolumeConfigurationOutput { + return o.ApplyT(func(v *ServiceVolumeConfiguration) ServiceVolumeConfiguration { + if v != nil { + return *v + } + var ret ServiceVolumeConfiguration + return ret + }).(ServiceVolumeConfigurationOutput) +} + +// Configuration for the Amazon EBS volume that Amazon ECS creates and manages on your behalf. See below. +func (o ServiceVolumeConfigurationPtrOutput) ManagedEbsVolume() ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfiguration) *ServiceVolumeConfigurationManagedEbsVolume { + if v == nil { + return nil + } + return &v.ManagedEbsVolume + }).(ServiceVolumeConfigurationManagedEbsVolumePtrOutput) +} + +// Name of the volume. +func (o ServiceVolumeConfigurationPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfiguration) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +type ServiceVolumeConfigurationManagedEbsVolume struct { + // Whether the volume should be encrypted. Default value is `true`. + Encrypted *bool `pulumi:"encrypted"` + // Linux filesystem type for the volume. For volumes created from a snapshot, same filesystem type must be specified that the volume was using when the snapshot was created. Valid values are `ext3`, `ext4`, `xfs`. Default value is `xfs`. + FileSystemType *string `pulumi:"fileSystemType"` + // Number of I/O operations per second (IOPS). + Iops *int `pulumi:"iops"` + // Amazon Resource Name (ARN) identifier of the Amazon Web Services Key Management Service key to use for Amazon EBS encryption. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Amazon ECS infrastructure IAM role that is used to manage your Amazon Web Services infrastructure. Recommended using the Amazon ECS-managed `AmazonECSInfrastructureRolePolicyForVolumes` IAM policy with this role. + RoleArn string `pulumi:"roleArn"` + // Size of the volume in GiB. You must specify either a `sizeInGb` or a `snapshotId`. You can optionally specify a volume size greater than or equal to the snapshot size. + SizeInGb *int `pulumi:"sizeInGb"` + // Snapshot that Amazon ECS uses to create the volume. You must specify either a `sizeInGb` or a `snapshotId`. + SnapshotId *string `pulumi:"snapshotId"` + // The tags to apply to the volume. See below. + TagSpecifications []ServiceVolumeConfigurationManagedEbsVolumeTagSpecification `pulumi:"tagSpecifications"` + // Throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. + Throughput *int `pulumi:"throughput"` + // Volume type. + VolumeType *string `pulumi:"volumeType"` +} + +// ServiceVolumeConfigurationManagedEbsVolumeInput is an input type that accepts ServiceVolumeConfigurationManagedEbsVolumeArgs and ServiceVolumeConfigurationManagedEbsVolumeOutput values. +// You can construct a concrete instance of `ServiceVolumeConfigurationManagedEbsVolumeInput` via: +// +// ServiceVolumeConfigurationManagedEbsVolumeArgs{...} +type ServiceVolumeConfigurationManagedEbsVolumeInput interface { + pulumi.Input + + ToServiceVolumeConfigurationManagedEbsVolumeOutput() ServiceVolumeConfigurationManagedEbsVolumeOutput + ToServiceVolumeConfigurationManagedEbsVolumeOutputWithContext(context.Context) ServiceVolumeConfigurationManagedEbsVolumeOutput +} + +type ServiceVolumeConfigurationManagedEbsVolumeArgs struct { + // Whether the volume should be encrypted. Default value is `true`. + Encrypted pulumi.BoolPtrInput `pulumi:"encrypted"` + // Linux filesystem type for the volume. For volumes created from a snapshot, same filesystem type must be specified that the volume was using when the snapshot was created. Valid values are `ext3`, `ext4`, `xfs`. Default value is `xfs`. + FileSystemType pulumi.StringPtrInput `pulumi:"fileSystemType"` + // Number of I/O operations per second (IOPS). + Iops pulumi.IntPtrInput `pulumi:"iops"` + // Amazon Resource Name (ARN) identifier of the Amazon Web Services Key Management Service key to use for Amazon EBS encryption. + KmsKeyId pulumi.StringPtrInput `pulumi:"kmsKeyId"` + // Amazon ECS infrastructure IAM role that is used to manage your Amazon Web Services infrastructure. Recommended using the Amazon ECS-managed `AmazonECSInfrastructureRolePolicyForVolumes` IAM policy with this role. + RoleArn pulumi.StringInput `pulumi:"roleArn"` + // Size of the volume in GiB. You must specify either a `sizeInGb` or a `snapshotId`. You can optionally specify a volume size greater than or equal to the snapshot size. + SizeInGb pulumi.IntPtrInput `pulumi:"sizeInGb"` + // Snapshot that Amazon ECS uses to create the volume. You must specify either a `sizeInGb` or a `snapshotId`. + SnapshotId pulumi.StringPtrInput `pulumi:"snapshotId"` + // The tags to apply to the volume. See below. + TagSpecifications ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayInput `pulumi:"tagSpecifications"` + // Throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. + Throughput pulumi.IntPtrInput `pulumi:"throughput"` + // Volume type. + VolumeType pulumi.StringPtrInput `pulumi:"volumeType"` +} + +func (ServiceVolumeConfigurationManagedEbsVolumeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolume)(nil)).Elem() +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeArgs) ToServiceVolumeConfigurationManagedEbsVolumeOutput() ServiceVolumeConfigurationManagedEbsVolumeOutput { + return i.ToServiceVolumeConfigurationManagedEbsVolumeOutputWithContext(context.Background()) +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeArgs) ToServiceVolumeConfigurationManagedEbsVolumeOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumeOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationManagedEbsVolumeOutput) +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeArgs) ToServiceVolumeConfigurationManagedEbsVolumePtrOutput() ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return i.ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(context.Background()) +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeArgs) ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationManagedEbsVolumeOutput).ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(ctx) +} + +// ServiceVolumeConfigurationManagedEbsVolumePtrInput is an input type that accepts ServiceVolumeConfigurationManagedEbsVolumeArgs, ServiceVolumeConfigurationManagedEbsVolumePtr and ServiceVolumeConfigurationManagedEbsVolumePtrOutput values. +// You can construct a concrete instance of `ServiceVolumeConfigurationManagedEbsVolumePtrInput` via: +// +// ServiceVolumeConfigurationManagedEbsVolumeArgs{...} +// +// or: +// +// nil +type ServiceVolumeConfigurationManagedEbsVolumePtrInput interface { + pulumi.Input + + ToServiceVolumeConfigurationManagedEbsVolumePtrOutput() ServiceVolumeConfigurationManagedEbsVolumePtrOutput + ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(context.Context) ServiceVolumeConfigurationManagedEbsVolumePtrOutput +} + +type serviceVolumeConfigurationManagedEbsVolumePtrType ServiceVolumeConfigurationManagedEbsVolumeArgs + +func ServiceVolumeConfigurationManagedEbsVolumePtr(v *ServiceVolumeConfigurationManagedEbsVolumeArgs) ServiceVolumeConfigurationManagedEbsVolumePtrInput { + return (*serviceVolumeConfigurationManagedEbsVolumePtrType)(v) +} + +func (*serviceVolumeConfigurationManagedEbsVolumePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceVolumeConfigurationManagedEbsVolume)(nil)).Elem() +} + +func (i *serviceVolumeConfigurationManagedEbsVolumePtrType) ToServiceVolumeConfigurationManagedEbsVolumePtrOutput() ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return i.ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(context.Background()) +} + +func (i *serviceVolumeConfigurationManagedEbsVolumePtrType) ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationManagedEbsVolumePtrOutput) +} + +type ServiceVolumeConfigurationManagedEbsVolumeOutput struct{ *pulumi.OutputState } + +func (ServiceVolumeConfigurationManagedEbsVolumeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolume)(nil)).Elem() +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) ToServiceVolumeConfigurationManagedEbsVolumeOutput() ServiceVolumeConfigurationManagedEbsVolumeOutput { + return o +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) ToServiceVolumeConfigurationManagedEbsVolumeOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumeOutput { + return o +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) ToServiceVolumeConfigurationManagedEbsVolumePtrOutput() ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return o.ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(context.Background()) +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceVolumeConfigurationManagedEbsVolume) *ServiceVolumeConfigurationManagedEbsVolume { + return &v + }).(ServiceVolumeConfigurationManagedEbsVolumePtrOutput) +} + +// Whether the volume should be encrypted. Default value is `true`. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) Encrypted() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *bool { return v.Encrypted }).(pulumi.BoolPtrOutput) +} + +// Linux filesystem type for the volume. For volumes created from a snapshot, same filesystem type must be specified that the volume was using when the snapshot was created. Valid values are `ext3`, `ext4`, `xfs`. Default value is `xfs`. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) FileSystemType() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *string { return v.FileSystemType }).(pulumi.StringPtrOutput) +} + +// Number of I/O operations per second (IOPS). +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) Iops() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *int { return v.Iops }).(pulumi.IntPtrOutput) +} + +// Amazon Resource Name (ARN) identifier of the Amazon Web Services Key Management Service key to use for Amazon EBS encryption. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *string { return v.KmsKeyId }).(pulumi.StringPtrOutput) +} + +// Amazon ECS infrastructure IAM role that is used to manage your Amazon Web Services infrastructure. Recommended using the Amazon ECS-managed `AmazonECSInfrastructureRolePolicyForVolumes` IAM policy with this role. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) RoleArn() pulumi.StringOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) string { return v.RoleArn }).(pulumi.StringOutput) +} + +// Size of the volume in GiB. You must specify either a `sizeInGb` or a `snapshotId`. You can optionally specify a volume size greater than or equal to the snapshot size. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) SizeInGb() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *int { return v.SizeInGb }).(pulumi.IntPtrOutput) +} + +// Snapshot that Amazon ECS uses to create the volume. You must specify either a `sizeInGb` or a `snapshotId`. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) SnapshotId() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *string { return v.SnapshotId }).(pulumi.StringPtrOutput) +} + +// The tags to apply to the volume. See below. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) TagSpecifications() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) []ServiceVolumeConfigurationManagedEbsVolumeTagSpecification { + return v.TagSpecifications + }).(ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput) +} + +// Throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) Throughput() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *int { return v.Throughput }).(pulumi.IntPtrOutput) +} + +// Volume type. +func (o ServiceVolumeConfigurationManagedEbsVolumeOutput) VolumeType() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolume) *string { return v.VolumeType }).(pulumi.StringPtrOutput) +} + +type ServiceVolumeConfigurationManagedEbsVolumePtrOutput struct{ *pulumi.OutputState } + +func (ServiceVolumeConfigurationManagedEbsVolumePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceVolumeConfigurationManagedEbsVolume)(nil)).Elem() +} + +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) ToServiceVolumeConfigurationManagedEbsVolumePtrOutput() ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return o +} + +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) ToServiceVolumeConfigurationManagedEbsVolumePtrOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumePtrOutput { + return o +} + +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) Elem() ServiceVolumeConfigurationManagedEbsVolumeOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) ServiceVolumeConfigurationManagedEbsVolume { + if v != nil { + return *v + } + var ret ServiceVolumeConfigurationManagedEbsVolume + return ret + }).(ServiceVolumeConfigurationManagedEbsVolumeOutput) +} + +// Whether the volume should be encrypted. Default value is `true`. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) Encrypted() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *bool { + if v == nil { + return nil + } + return v.Encrypted + }).(pulumi.BoolPtrOutput) +} + +// Linux filesystem type for the volume. For volumes created from a snapshot, same filesystem type must be specified that the volume was using when the snapshot was created. Valid values are `ext3`, `ext4`, `xfs`. Default value is `xfs`. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) FileSystemType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *string { + if v == nil { + return nil + } + return v.FileSystemType + }).(pulumi.StringPtrOutput) +} + +// Number of I/O operations per second (IOPS). +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) Iops() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *int { + if v == nil { + return nil + } + return v.Iops + }).(pulumi.IntPtrOutput) +} + +// Amazon Resource Name (ARN) identifier of the Amazon Web Services Key Management Service key to use for Amazon EBS encryption. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *string { + if v == nil { + return nil + } + return v.KmsKeyId + }).(pulumi.StringPtrOutput) +} + +// Amazon ECS infrastructure IAM role that is used to manage your Amazon Web Services infrastructure. Recommended using the Amazon ECS-managed `AmazonECSInfrastructureRolePolicyForVolumes` IAM policy with this role. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *string { + if v == nil { + return nil + } + return &v.RoleArn + }).(pulumi.StringPtrOutput) +} + +// Size of the volume in GiB. You must specify either a `sizeInGb` or a `snapshotId`. You can optionally specify a volume size greater than or equal to the snapshot size. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) SizeInGb() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *int { + if v == nil { + return nil + } + return v.SizeInGb + }).(pulumi.IntPtrOutput) +} + +// Snapshot that Amazon ECS uses to create the volume. You must specify either a `sizeInGb` or a `snapshotId`. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) SnapshotId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *string { + if v == nil { + return nil + } + return v.SnapshotId + }).(pulumi.StringPtrOutput) +} + +// The tags to apply to the volume. See below. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) TagSpecifications() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) []ServiceVolumeConfigurationManagedEbsVolumeTagSpecification { + if v == nil { + return nil + } + return v.TagSpecifications + }).(ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput) +} + +// Throughput to provision for a volume, in MiB/s, with a maximum of 1,000 MiB/s. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) Throughput() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *int { + if v == nil { + return nil + } + return v.Throughput + }).(pulumi.IntPtrOutput) +} + +// Volume type. +func (o ServiceVolumeConfigurationManagedEbsVolumePtrOutput) VolumeType() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceVolumeConfigurationManagedEbsVolume) *string { + if v == nil { + return nil + } + return v.VolumeType + }).(pulumi.StringPtrOutput) +} + +type ServiceVolumeConfigurationManagedEbsVolumeTagSpecification struct { + // Determines whether to propagate the tags from the task definition to the Amazon EBS volume. + PropagateTags *string `pulumi:"propagateTags"` + // The type of volume resource. Valid values, `volume`. + ResourceType string `pulumi:"resourceType"` + // The tags applied to this Amazon EBS volume. `AmazonECSCreated` and `AmazonECSManaged` are reserved tags that can't be used. + Tags map[string]string `pulumi:"tags"` +} + +// ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationInput is an input type that accepts ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs and ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput values. +// You can construct a concrete instance of `ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationInput` via: +// +// ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs{...} +type ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationInput interface { + pulumi.Input + + ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput + ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutputWithContext(context.Context) ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput +} + +type ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs struct { + // Determines whether to propagate the tags from the task definition to the Amazon EBS volume. + PropagateTags pulumi.StringPtrInput `pulumi:"propagateTags"` + // The type of volume resource. Valid values, `volume`. + ResourceType pulumi.StringInput `pulumi:"resourceType"` + // The tags applied to this Amazon EBS volume. `AmazonECSCreated` and `AmazonECSManaged` are reserved tags that can't be used. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolumeTagSpecification)(nil)).Elem() +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput { + return i.ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutputWithContext(context.Background()) +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) +} + +// ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayInput is an input type that accepts ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArray and ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput values. +// You can construct a concrete instance of `ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayInput` via: +// +// ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArray{ ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs{...} } +type ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayInput interface { + pulumi.Input + + ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput + ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutputWithContext(context.Context) ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput +} + +type ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArray []ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationInput + +func (ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceVolumeConfigurationManagedEbsVolumeTagSpecification)(nil)).Elem() +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArray) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput { + return i.ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutputWithContext(context.Background()) +} + +func (i ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArray) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput) +} + +type ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput struct{ *pulumi.OutputState } + +func (ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolumeTagSpecification)(nil)).Elem() +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput { + return o +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput { + return o +} + +// Determines whether to propagate the tags from the task definition to the Amazon EBS volume. +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) PropagateTags() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolumeTagSpecification) *string { return v.PropagateTags }).(pulumi.StringPtrOutput) +} + +// The type of volume resource. Valid values, `volume`. +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) ResourceType() pulumi.StringOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolumeTagSpecification) string { return v.ResourceType }).(pulumi.StringOutput) +} + +// The tags applied to this Amazon EBS volume. `AmazonECSCreated` and `AmazonECSManaged` are reserved tags that can't be used. +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v ServiceVolumeConfigurationManagedEbsVolumeTagSpecification) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput struct{ *pulumi.OutputState } + +func (ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceVolumeConfigurationManagedEbsVolumeTagSpecification)(nil)).Elem() +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput() ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput { + return o +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput) ToServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutputWithContext(ctx context.Context) ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput { + return o +} + +func (o ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput) Index(i pulumi.IntInput) ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceVolumeConfigurationManagedEbsVolumeTagSpecification { + return vs[0].([]ServiceVolumeConfigurationManagedEbsVolumeTagSpecification)[vs[1].(int)] + }).(ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput) +} + +type ServiceVpcLatticeConfiguration struct { + // The name of the port for a target group associated with the VPC Lattice configuration. + PortName string `pulumi:"portName"` + // The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. + RoleArn string `pulumi:"roleArn"` + // The full ARN of the target group or groups associated with the VPC Lattice configuration. + TargetGroupArn string `pulumi:"targetGroupArn"` +} + +// ServiceVpcLatticeConfigurationInput is an input type that accepts ServiceVpcLatticeConfigurationArgs and ServiceVpcLatticeConfigurationOutput values. +// You can construct a concrete instance of `ServiceVpcLatticeConfigurationInput` via: +// +// ServiceVpcLatticeConfigurationArgs{...} +type ServiceVpcLatticeConfigurationInput interface { + pulumi.Input + + ToServiceVpcLatticeConfigurationOutput() ServiceVpcLatticeConfigurationOutput + ToServiceVpcLatticeConfigurationOutputWithContext(context.Context) ServiceVpcLatticeConfigurationOutput +} + +type ServiceVpcLatticeConfigurationArgs struct { + // The name of the port for a target group associated with the VPC Lattice configuration. + PortName pulumi.StringInput `pulumi:"portName"` + // The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. + RoleArn pulumi.StringInput `pulumi:"roleArn"` + // The full ARN of the target group or groups associated with the VPC Lattice configuration. + TargetGroupArn pulumi.StringInput `pulumi:"targetGroupArn"` +} + +func (ServiceVpcLatticeConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVpcLatticeConfiguration)(nil)).Elem() +} + +func (i ServiceVpcLatticeConfigurationArgs) ToServiceVpcLatticeConfigurationOutput() ServiceVpcLatticeConfigurationOutput { + return i.ToServiceVpcLatticeConfigurationOutputWithContext(context.Background()) +} + +func (i ServiceVpcLatticeConfigurationArgs) ToServiceVpcLatticeConfigurationOutputWithContext(ctx context.Context) ServiceVpcLatticeConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVpcLatticeConfigurationOutput) +} + +// ServiceVpcLatticeConfigurationArrayInput is an input type that accepts ServiceVpcLatticeConfigurationArray and ServiceVpcLatticeConfigurationArrayOutput values. +// You can construct a concrete instance of `ServiceVpcLatticeConfigurationArrayInput` via: +// +// ServiceVpcLatticeConfigurationArray{ ServiceVpcLatticeConfigurationArgs{...} } +type ServiceVpcLatticeConfigurationArrayInput interface { + pulumi.Input + + ToServiceVpcLatticeConfigurationArrayOutput() ServiceVpcLatticeConfigurationArrayOutput + ToServiceVpcLatticeConfigurationArrayOutputWithContext(context.Context) ServiceVpcLatticeConfigurationArrayOutput +} + +type ServiceVpcLatticeConfigurationArray []ServiceVpcLatticeConfigurationInput + +func (ServiceVpcLatticeConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceVpcLatticeConfiguration)(nil)).Elem() +} + +func (i ServiceVpcLatticeConfigurationArray) ToServiceVpcLatticeConfigurationArrayOutput() ServiceVpcLatticeConfigurationArrayOutput { + return i.ToServiceVpcLatticeConfigurationArrayOutputWithContext(context.Background()) +} + +func (i ServiceVpcLatticeConfigurationArray) ToServiceVpcLatticeConfigurationArrayOutputWithContext(ctx context.Context) ServiceVpcLatticeConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceVpcLatticeConfigurationArrayOutput) +} + +type ServiceVpcLatticeConfigurationOutput struct{ *pulumi.OutputState } + +func (ServiceVpcLatticeConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceVpcLatticeConfiguration)(nil)).Elem() +} + +func (o ServiceVpcLatticeConfigurationOutput) ToServiceVpcLatticeConfigurationOutput() ServiceVpcLatticeConfigurationOutput { + return o +} + +func (o ServiceVpcLatticeConfigurationOutput) ToServiceVpcLatticeConfigurationOutputWithContext(ctx context.Context) ServiceVpcLatticeConfigurationOutput { + return o +} + +// The name of the port for a target group associated with the VPC Lattice configuration. +func (o ServiceVpcLatticeConfigurationOutput) PortName() pulumi.StringOutput { + return o.ApplyT(func(v ServiceVpcLatticeConfiguration) string { return v.PortName }).(pulumi.StringOutput) +} + +// The ARN of the IAM role to associate with this volume. This is the Amazon ECS infrastructure IAM role that is used to manage your AWS infrastructure. +func (o ServiceVpcLatticeConfigurationOutput) RoleArn() pulumi.StringOutput { + return o.ApplyT(func(v ServiceVpcLatticeConfiguration) string { return v.RoleArn }).(pulumi.StringOutput) +} + +// The full ARN of the target group or groups associated with the VPC Lattice configuration. +func (o ServiceVpcLatticeConfigurationOutput) TargetGroupArn() pulumi.StringOutput { + return o.ApplyT(func(v ServiceVpcLatticeConfiguration) string { return v.TargetGroupArn }).(pulumi.StringOutput) +} + +type ServiceVpcLatticeConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (ServiceVpcLatticeConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceVpcLatticeConfiguration)(nil)).Elem() +} + +func (o ServiceVpcLatticeConfigurationArrayOutput) ToServiceVpcLatticeConfigurationArrayOutput() ServiceVpcLatticeConfigurationArrayOutput { + return o +} + +func (o ServiceVpcLatticeConfigurationArrayOutput) ToServiceVpcLatticeConfigurationArrayOutputWithContext(ctx context.Context) ServiceVpcLatticeConfigurationArrayOutput { + return o +} + +func (o ServiceVpcLatticeConfigurationArrayOutput) Index(i pulumi.IntInput) ServiceVpcLatticeConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceVpcLatticeConfiguration { + return vs[0].([]ServiceVpcLatticeConfiguration)[vs[1].(int)] + }).(ServiceVpcLatticeConfigurationOutput) +} + +type TaskDefinitionEphemeralStorage struct { + // The total amount, in GiB, of ephemeral storage to set for the task. The minimum supported value is `21` GiB and the maximum supported value is `200` GiB. + SizeInGib int `pulumi:"sizeInGib"` +} + +// TaskDefinitionEphemeralStorageInput is an input type that accepts TaskDefinitionEphemeralStorageArgs and TaskDefinitionEphemeralStorageOutput values. +// You can construct a concrete instance of `TaskDefinitionEphemeralStorageInput` via: +// +// TaskDefinitionEphemeralStorageArgs{...} +type TaskDefinitionEphemeralStorageInput interface { + pulumi.Input + + ToTaskDefinitionEphemeralStorageOutput() TaskDefinitionEphemeralStorageOutput + ToTaskDefinitionEphemeralStorageOutputWithContext(context.Context) TaskDefinitionEphemeralStorageOutput +} + +type TaskDefinitionEphemeralStorageArgs struct { + // The total amount, in GiB, of ephemeral storage to set for the task. The minimum supported value is `21` GiB and the maximum supported value is `200` GiB. + SizeInGib pulumi.IntInput `pulumi:"sizeInGib"` +} + +func (TaskDefinitionEphemeralStorageArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionEphemeralStorage)(nil)).Elem() +} + +func (i TaskDefinitionEphemeralStorageArgs) ToTaskDefinitionEphemeralStorageOutput() TaskDefinitionEphemeralStorageOutput { + return i.ToTaskDefinitionEphemeralStorageOutputWithContext(context.Background()) +} + +func (i TaskDefinitionEphemeralStorageArgs) ToTaskDefinitionEphemeralStorageOutputWithContext(ctx context.Context) TaskDefinitionEphemeralStorageOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionEphemeralStorageOutput) +} + +func (i TaskDefinitionEphemeralStorageArgs) ToTaskDefinitionEphemeralStoragePtrOutput() TaskDefinitionEphemeralStoragePtrOutput { + return i.ToTaskDefinitionEphemeralStoragePtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionEphemeralStorageArgs) ToTaskDefinitionEphemeralStoragePtrOutputWithContext(ctx context.Context) TaskDefinitionEphemeralStoragePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionEphemeralStorageOutput).ToTaskDefinitionEphemeralStoragePtrOutputWithContext(ctx) +} + +// TaskDefinitionEphemeralStoragePtrInput is an input type that accepts TaskDefinitionEphemeralStorageArgs, TaskDefinitionEphemeralStoragePtr and TaskDefinitionEphemeralStoragePtrOutput values. +// You can construct a concrete instance of `TaskDefinitionEphemeralStoragePtrInput` via: +// +// TaskDefinitionEphemeralStorageArgs{...} +// +// or: +// +// nil +type TaskDefinitionEphemeralStoragePtrInput interface { + pulumi.Input + + ToTaskDefinitionEphemeralStoragePtrOutput() TaskDefinitionEphemeralStoragePtrOutput + ToTaskDefinitionEphemeralStoragePtrOutputWithContext(context.Context) TaskDefinitionEphemeralStoragePtrOutput +} + +type taskDefinitionEphemeralStoragePtrType TaskDefinitionEphemeralStorageArgs + +func TaskDefinitionEphemeralStoragePtr(v *TaskDefinitionEphemeralStorageArgs) TaskDefinitionEphemeralStoragePtrInput { + return (*taskDefinitionEphemeralStoragePtrType)(v) +} + +func (*taskDefinitionEphemeralStoragePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionEphemeralStorage)(nil)).Elem() +} + +func (i *taskDefinitionEphemeralStoragePtrType) ToTaskDefinitionEphemeralStoragePtrOutput() TaskDefinitionEphemeralStoragePtrOutput { + return i.ToTaskDefinitionEphemeralStoragePtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionEphemeralStoragePtrType) ToTaskDefinitionEphemeralStoragePtrOutputWithContext(ctx context.Context) TaskDefinitionEphemeralStoragePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionEphemeralStoragePtrOutput) +} + +type TaskDefinitionEphemeralStorageOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionEphemeralStorageOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionEphemeralStorage)(nil)).Elem() +} + +func (o TaskDefinitionEphemeralStorageOutput) ToTaskDefinitionEphemeralStorageOutput() TaskDefinitionEphemeralStorageOutput { + return o +} + +func (o TaskDefinitionEphemeralStorageOutput) ToTaskDefinitionEphemeralStorageOutputWithContext(ctx context.Context) TaskDefinitionEphemeralStorageOutput { + return o +} + +func (o TaskDefinitionEphemeralStorageOutput) ToTaskDefinitionEphemeralStoragePtrOutput() TaskDefinitionEphemeralStoragePtrOutput { + return o.ToTaskDefinitionEphemeralStoragePtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionEphemeralStorageOutput) ToTaskDefinitionEphemeralStoragePtrOutputWithContext(ctx context.Context) TaskDefinitionEphemeralStoragePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionEphemeralStorage) *TaskDefinitionEphemeralStorage { + return &v + }).(TaskDefinitionEphemeralStoragePtrOutput) +} + +// The total amount, in GiB, of ephemeral storage to set for the task. The minimum supported value is `21` GiB and the maximum supported value is `200` GiB. +func (o TaskDefinitionEphemeralStorageOutput) SizeInGib() pulumi.IntOutput { + return o.ApplyT(func(v TaskDefinitionEphemeralStorage) int { return v.SizeInGib }).(pulumi.IntOutput) +} + +type TaskDefinitionEphemeralStoragePtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionEphemeralStoragePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionEphemeralStorage)(nil)).Elem() +} + +func (o TaskDefinitionEphemeralStoragePtrOutput) ToTaskDefinitionEphemeralStoragePtrOutput() TaskDefinitionEphemeralStoragePtrOutput { + return o +} + +func (o TaskDefinitionEphemeralStoragePtrOutput) ToTaskDefinitionEphemeralStoragePtrOutputWithContext(ctx context.Context) TaskDefinitionEphemeralStoragePtrOutput { + return o +} + +func (o TaskDefinitionEphemeralStoragePtrOutput) Elem() TaskDefinitionEphemeralStorageOutput { + return o.ApplyT(func(v *TaskDefinitionEphemeralStorage) TaskDefinitionEphemeralStorage { + if v != nil { + return *v + } + var ret TaskDefinitionEphemeralStorage + return ret + }).(TaskDefinitionEphemeralStorageOutput) +} + +// The total amount, in GiB, of ephemeral storage to set for the task. The minimum supported value is `21` GiB and the maximum supported value is `200` GiB. +func (o TaskDefinitionEphemeralStoragePtrOutput) SizeInGib() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionEphemeralStorage) *int { + if v == nil { + return nil + } + return &v.SizeInGib + }).(pulumi.IntPtrOutput) +} + +type TaskDefinitionInferenceAccelerator struct { + // Elastic Inference accelerator device name. The deviceName must also be referenced in a container definition as a ResourceRequirement. + DeviceName string `pulumi:"deviceName"` + // Elastic Inference accelerator type to use. + DeviceType string `pulumi:"deviceType"` +} + +// TaskDefinitionInferenceAcceleratorInput is an input type that accepts TaskDefinitionInferenceAcceleratorArgs and TaskDefinitionInferenceAcceleratorOutput values. +// You can construct a concrete instance of `TaskDefinitionInferenceAcceleratorInput` via: +// +// TaskDefinitionInferenceAcceleratorArgs{...} +type TaskDefinitionInferenceAcceleratorInput interface { + pulumi.Input + + ToTaskDefinitionInferenceAcceleratorOutput() TaskDefinitionInferenceAcceleratorOutput + ToTaskDefinitionInferenceAcceleratorOutputWithContext(context.Context) TaskDefinitionInferenceAcceleratorOutput +} + +type TaskDefinitionInferenceAcceleratorArgs struct { + // Elastic Inference accelerator device name. The deviceName must also be referenced in a container definition as a ResourceRequirement. + DeviceName pulumi.StringInput `pulumi:"deviceName"` + // Elastic Inference accelerator type to use. + DeviceType pulumi.StringInput `pulumi:"deviceType"` +} + +func (TaskDefinitionInferenceAcceleratorArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionInferenceAccelerator)(nil)).Elem() +} + +func (i TaskDefinitionInferenceAcceleratorArgs) ToTaskDefinitionInferenceAcceleratorOutput() TaskDefinitionInferenceAcceleratorOutput { + return i.ToTaskDefinitionInferenceAcceleratorOutputWithContext(context.Background()) +} + +func (i TaskDefinitionInferenceAcceleratorArgs) ToTaskDefinitionInferenceAcceleratorOutputWithContext(ctx context.Context) TaskDefinitionInferenceAcceleratorOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionInferenceAcceleratorOutput) +} + +// TaskDefinitionInferenceAcceleratorArrayInput is an input type that accepts TaskDefinitionInferenceAcceleratorArray and TaskDefinitionInferenceAcceleratorArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionInferenceAcceleratorArrayInput` via: +// +// TaskDefinitionInferenceAcceleratorArray{ TaskDefinitionInferenceAcceleratorArgs{...} } +type TaskDefinitionInferenceAcceleratorArrayInput interface { + pulumi.Input + + ToTaskDefinitionInferenceAcceleratorArrayOutput() TaskDefinitionInferenceAcceleratorArrayOutput + ToTaskDefinitionInferenceAcceleratorArrayOutputWithContext(context.Context) TaskDefinitionInferenceAcceleratorArrayOutput +} + +type TaskDefinitionInferenceAcceleratorArray []TaskDefinitionInferenceAcceleratorInput + +func (TaskDefinitionInferenceAcceleratorArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionInferenceAccelerator)(nil)).Elem() +} + +func (i TaskDefinitionInferenceAcceleratorArray) ToTaskDefinitionInferenceAcceleratorArrayOutput() TaskDefinitionInferenceAcceleratorArrayOutput { + return i.ToTaskDefinitionInferenceAcceleratorArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionInferenceAcceleratorArray) ToTaskDefinitionInferenceAcceleratorArrayOutputWithContext(ctx context.Context) TaskDefinitionInferenceAcceleratorArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionInferenceAcceleratorArrayOutput) +} + +type TaskDefinitionInferenceAcceleratorOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionInferenceAcceleratorOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionInferenceAccelerator)(nil)).Elem() +} + +func (o TaskDefinitionInferenceAcceleratorOutput) ToTaskDefinitionInferenceAcceleratorOutput() TaskDefinitionInferenceAcceleratorOutput { + return o +} + +func (o TaskDefinitionInferenceAcceleratorOutput) ToTaskDefinitionInferenceAcceleratorOutputWithContext(ctx context.Context) TaskDefinitionInferenceAcceleratorOutput { + return o +} + +// Elastic Inference accelerator device name. The deviceName must also be referenced in a container definition as a ResourceRequirement. +func (o TaskDefinitionInferenceAcceleratorOutput) DeviceName() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionInferenceAccelerator) string { return v.DeviceName }).(pulumi.StringOutput) +} + +// Elastic Inference accelerator type to use. +func (o TaskDefinitionInferenceAcceleratorOutput) DeviceType() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionInferenceAccelerator) string { return v.DeviceType }).(pulumi.StringOutput) +} + +type TaskDefinitionInferenceAcceleratorArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionInferenceAcceleratorArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionInferenceAccelerator)(nil)).Elem() +} + +func (o TaskDefinitionInferenceAcceleratorArrayOutput) ToTaskDefinitionInferenceAcceleratorArrayOutput() TaskDefinitionInferenceAcceleratorArrayOutput { + return o +} + +func (o TaskDefinitionInferenceAcceleratorArrayOutput) ToTaskDefinitionInferenceAcceleratorArrayOutputWithContext(ctx context.Context) TaskDefinitionInferenceAcceleratorArrayOutput { + return o +} + +func (o TaskDefinitionInferenceAcceleratorArrayOutput) Index(i pulumi.IntInput) TaskDefinitionInferenceAcceleratorOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionInferenceAccelerator { + return vs[0].([]TaskDefinitionInferenceAccelerator)[vs[1].(int)] + }).(TaskDefinitionInferenceAcceleratorOutput) +} + +type TaskDefinitionPlacementConstraint struct { + // Cluster Query Language expression to apply to the constraint. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). + Expression *string `pulumi:"expression"` + // Type of constraint. Use `memberOf` to restrict selection to a group of valid candidates. Note that `distinctInstance` is not supported in task definitions. + Type string `pulumi:"type"` +} + +// TaskDefinitionPlacementConstraintInput is an input type that accepts TaskDefinitionPlacementConstraintArgs and TaskDefinitionPlacementConstraintOutput values. +// You can construct a concrete instance of `TaskDefinitionPlacementConstraintInput` via: +// +// TaskDefinitionPlacementConstraintArgs{...} +type TaskDefinitionPlacementConstraintInput interface { + pulumi.Input + + ToTaskDefinitionPlacementConstraintOutput() TaskDefinitionPlacementConstraintOutput + ToTaskDefinitionPlacementConstraintOutputWithContext(context.Context) TaskDefinitionPlacementConstraintOutput +} + +type TaskDefinitionPlacementConstraintArgs struct { + // Cluster Query Language expression to apply to the constraint. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). + Expression pulumi.StringPtrInput `pulumi:"expression"` + // Type of constraint. Use `memberOf` to restrict selection to a group of valid candidates. Note that `distinctInstance` is not supported in task definitions. + Type pulumi.StringInput `pulumi:"type"` +} + +func (TaskDefinitionPlacementConstraintArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionPlacementConstraint)(nil)).Elem() +} + +func (i TaskDefinitionPlacementConstraintArgs) ToTaskDefinitionPlacementConstraintOutput() TaskDefinitionPlacementConstraintOutput { + return i.ToTaskDefinitionPlacementConstraintOutputWithContext(context.Background()) +} + +func (i TaskDefinitionPlacementConstraintArgs) ToTaskDefinitionPlacementConstraintOutputWithContext(ctx context.Context) TaskDefinitionPlacementConstraintOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionPlacementConstraintOutput) +} + +// TaskDefinitionPlacementConstraintArrayInput is an input type that accepts TaskDefinitionPlacementConstraintArray and TaskDefinitionPlacementConstraintArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionPlacementConstraintArrayInput` via: +// +// TaskDefinitionPlacementConstraintArray{ TaskDefinitionPlacementConstraintArgs{...} } +type TaskDefinitionPlacementConstraintArrayInput interface { + pulumi.Input + + ToTaskDefinitionPlacementConstraintArrayOutput() TaskDefinitionPlacementConstraintArrayOutput + ToTaskDefinitionPlacementConstraintArrayOutputWithContext(context.Context) TaskDefinitionPlacementConstraintArrayOutput +} + +type TaskDefinitionPlacementConstraintArray []TaskDefinitionPlacementConstraintInput + +func (TaskDefinitionPlacementConstraintArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionPlacementConstraint)(nil)).Elem() +} + +func (i TaskDefinitionPlacementConstraintArray) ToTaskDefinitionPlacementConstraintArrayOutput() TaskDefinitionPlacementConstraintArrayOutput { + return i.ToTaskDefinitionPlacementConstraintArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionPlacementConstraintArray) ToTaskDefinitionPlacementConstraintArrayOutputWithContext(ctx context.Context) TaskDefinitionPlacementConstraintArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionPlacementConstraintArrayOutput) +} + +type TaskDefinitionPlacementConstraintOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionPlacementConstraintOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionPlacementConstraint)(nil)).Elem() +} + +func (o TaskDefinitionPlacementConstraintOutput) ToTaskDefinitionPlacementConstraintOutput() TaskDefinitionPlacementConstraintOutput { + return o +} + +func (o TaskDefinitionPlacementConstraintOutput) ToTaskDefinitionPlacementConstraintOutputWithContext(ctx context.Context) TaskDefinitionPlacementConstraintOutput { + return o +} + +// Cluster Query Language expression to apply to the constraint. For more information, see [Cluster Query Language in the Amazon EC2 Container Service Developer Guide](http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-query-language.html). +func (o TaskDefinitionPlacementConstraintOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionPlacementConstraint) *string { return v.Expression }).(pulumi.StringPtrOutput) +} + +// Type of constraint. Use `memberOf` to restrict selection to a group of valid candidates. Note that `distinctInstance` is not supported in task definitions. +func (o TaskDefinitionPlacementConstraintOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionPlacementConstraint) string { return v.Type }).(pulumi.StringOutput) +} + +type TaskDefinitionPlacementConstraintArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionPlacementConstraintArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionPlacementConstraint)(nil)).Elem() +} + +func (o TaskDefinitionPlacementConstraintArrayOutput) ToTaskDefinitionPlacementConstraintArrayOutput() TaskDefinitionPlacementConstraintArrayOutput { + return o +} + +func (o TaskDefinitionPlacementConstraintArrayOutput) ToTaskDefinitionPlacementConstraintArrayOutputWithContext(ctx context.Context) TaskDefinitionPlacementConstraintArrayOutput { + return o +} + +func (o TaskDefinitionPlacementConstraintArrayOutput) Index(i pulumi.IntInput) TaskDefinitionPlacementConstraintOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionPlacementConstraint { + return vs[0].([]TaskDefinitionPlacementConstraint)[vs[1].(int)] + }).(TaskDefinitionPlacementConstraintOutput) +} + +type TaskDefinitionProxyConfiguration struct { + // Name of the container that will serve as the App Mesh proxy. + ContainerName string `pulumi:"containerName"` + // Set of network configuration parameters to provide the Container Network Interface (CNI) plugin, specified a key-value mapping. + Properties map[string]string `pulumi:"properties"` + // Proxy type. The default value is `APPMESH`. The only supported value is `APPMESH`. + Type *string `pulumi:"type"` +} + +// TaskDefinitionProxyConfigurationInput is an input type that accepts TaskDefinitionProxyConfigurationArgs and TaskDefinitionProxyConfigurationOutput values. +// You can construct a concrete instance of `TaskDefinitionProxyConfigurationInput` via: +// +// TaskDefinitionProxyConfigurationArgs{...} +type TaskDefinitionProxyConfigurationInput interface { + pulumi.Input + + ToTaskDefinitionProxyConfigurationOutput() TaskDefinitionProxyConfigurationOutput + ToTaskDefinitionProxyConfigurationOutputWithContext(context.Context) TaskDefinitionProxyConfigurationOutput +} + +type TaskDefinitionProxyConfigurationArgs struct { + // Name of the container that will serve as the App Mesh proxy. + ContainerName pulumi.StringInput `pulumi:"containerName"` + // Set of network configuration parameters to provide the Container Network Interface (CNI) plugin, specified a key-value mapping. + Properties pulumi.StringMapInput `pulumi:"properties"` + // Proxy type. The default value is `APPMESH`. The only supported value is `APPMESH`. + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (TaskDefinitionProxyConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionProxyConfiguration)(nil)).Elem() +} + +func (i TaskDefinitionProxyConfigurationArgs) ToTaskDefinitionProxyConfigurationOutput() TaskDefinitionProxyConfigurationOutput { + return i.ToTaskDefinitionProxyConfigurationOutputWithContext(context.Background()) +} + +func (i TaskDefinitionProxyConfigurationArgs) ToTaskDefinitionProxyConfigurationOutputWithContext(ctx context.Context) TaskDefinitionProxyConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionProxyConfigurationOutput) +} + +func (i TaskDefinitionProxyConfigurationArgs) ToTaskDefinitionProxyConfigurationPtrOutput() TaskDefinitionProxyConfigurationPtrOutput { + return i.ToTaskDefinitionProxyConfigurationPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionProxyConfigurationArgs) ToTaskDefinitionProxyConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionProxyConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionProxyConfigurationOutput).ToTaskDefinitionProxyConfigurationPtrOutputWithContext(ctx) +} + +// TaskDefinitionProxyConfigurationPtrInput is an input type that accepts TaskDefinitionProxyConfigurationArgs, TaskDefinitionProxyConfigurationPtr and TaskDefinitionProxyConfigurationPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionProxyConfigurationPtrInput` via: +// +// TaskDefinitionProxyConfigurationArgs{...} +// +// or: +// +// nil +type TaskDefinitionProxyConfigurationPtrInput interface { + pulumi.Input + + ToTaskDefinitionProxyConfigurationPtrOutput() TaskDefinitionProxyConfigurationPtrOutput + ToTaskDefinitionProxyConfigurationPtrOutputWithContext(context.Context) TaskDefinitionProxyConfigurationPtrOutput +} + +type taskDefinitionProxyConfigurationPtrType TaskDefinitionProxyConfigurationArgs + +func TaskDefinitionProxyConfigurationPtr(v *TaskDefinitionProxyConfigurationArgs) TaskDefinitionProxyConfigurationPtrInput { + return (*taskDefinitionProxyConfigurationPtrType)(v) +} + +func (*taskDefinitionProxyConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionProxyConfiguration)(nil)).Elem() +} + +func (i *taskDefinitionProxyConfigurationPtrType) ToTaskDefinitionProxyConfigurationPtrOutput() TaskDefinitionProxyConfigurationPtrOutput { + return i.ToTaskDefinitionProxyConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionProxyConfigurationPtrType) ToTaskDefinitionProxyConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionProxyConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionProxyConfigurationPtrOutput) +} + +type TaskDefinitionProxyConfigurationOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionProxyConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionProxyConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionProxyConfigurationOutput) ToTaskDefinitionProxyConfigurationOutput() TaskDefinitionProxyConfigurationOutput { + return o +} + +func (o TaskDefinitionProxyConfigurationOutput) ToTaskDefinitionProxyConfigurationOutputWithContext(ctx context.Context) TaskDefinitionProxyConfigurationOutput { + return o +} + +func (o TaskDefinitionProxyConfigurationOutput) ToTaskDefinitionProxyConfigurationPtrOutput() TaskDefinitionProxyConfigurationPtrOutput { + return o.ToTaskDefinitionProxyConfigurationPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionProxyConfigurationOutput) ToTaskDefinitionProxyConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionProxyConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionProxyConfiguration) *TaskDefinitionProxyConfiguration { + return &v + }).(TaskDefinitionProxyConfigurationPtrOutput) +} + +// Name of the container that will serve as the App Mesh proxy. +func (o TaskDefinitionProxyConfigurationOutput) ContainerName() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionProxyConfiguration) string { return v.ContainerName }).(pulumi.StringOutput) +} + +// Set of network configuration parameters to provide the Container Network Interface (CNI) plugin, specified a key-value mapping. +func (o TaskDefinitionProxyConfigurationOutput) Properties() pulumi.StringMapOutput { + return o.ApplyT(func(v TaskDefinitionProxyConfiguration) map[string]string { return v.Properties }).(pulumi.StringMapOutput) +} + +// Proxy type. The default value is `APPMESH`. The only supported value is `APPMESH`. +func (o TaskDefinitionProxyConfigurationOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionProxyConfiguration) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionProxyConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionProxyConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionProxyConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionProxyConfigurationPtrOutput) ToTaskDefinitionProxyConfigurationPtrOutput() TaskDefinitionProxyConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionProxyConfigurationPtrOutput) ToTaskDefinitionProxyConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionProxyConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionProxyConfigurationPtrOutput) Elem() TaskDefinitionProxyConfigurationOutput { + return o.ApplyT(func(v *TaskDefinitionProxyConfiguration) TaskDefinitionProxyConfiguration { + if v != nil { + return *v + } + var ret TaskDefinitionProxyConfiguration + return ret + }).(TaskDefinitionProxyConfigurationOutput) +} + +// Name of the container that will serve as the App Mesh proxy. +func (o TaskDefinitionProxyConfigurationPtrOutput) ContainerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionProxyConfiguration) *string { + if v == nil { + return nil + } + return &v.ContainerName + }).(pulumi.StringPtrOutput) +} + +// Set of network configuration parameters to provide the Container Network Interface (CNI) plugin, specified a key-value mapping. +func (o TaskDefinitionProxyConfigurationPtrOutput) Properties() pulumi.StringMapOutput { + return o.ApplyT(func(v *TaskDefinitionProxyConfiguration) map[string]string { + if v == nil { + return nil + } + return v.Properties + }).(pulumi.StringMapOutput) +} + +// Proxy type. The default value is `APPMESH`. The only supported value is `APPMESH`. +func (o TaskDefinitionProxyConfigurationPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionProxyConfiguration) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionRuntimePlatform struct { + // Must be set to either `X86_64` or `ARM64`; see [cpu architecture](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) + CpuArchitecture *string `pulumi:"cpuArchitecture"` + // If the `requiresCompatibilities` is `FARGATE` this field is required; must be set to a valid option from the [operating system family in the runtime platform](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) setting + OperatingSystemFamily *string `pulumi:"operatingSystemFamily"` +} + +// TaskDefinitionRuntimePlatformInput is an input type that accepts TaskDefinitionRuntimePlatformArgs and TaskDefinitionRuntimePlatformOutput values. +// You can construct a concrete instance of `TaskDefinitionRuntimePlatformInput` via: +// +// TaskDefinitionRuntimePlatformArgs{...} +type TaskDefinitionRuntimePlatformInput interface { + pulumi.Input + + ToTaskDefinitionRuntimePlatformOutput() TaskDefinitionRuntimePlatformOutput + ToTaskDefinitionRuntimePlatformOutputWithContext(context.Context) TaskDefinitionRuntimePlatformOutput +} + +type TaskDefinitionRuntimePlatformArgs struct { + // Must be set to either `X86_64` or `ARM64`; see [cpu architecture](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) + CpuArchitecture pulumi.StringPtrInput `pulumi:"cpuArchitecture"` + // If the `requiresCompatibilities` is `FARGATE` this field is required; must be set to a valid option from the [operating system family in the runtime platform](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) setting + OperatingSystemFamily pulumi.StringPtrInput `pulumi:"operatingSystemFamily"` +} + +func (TaskDefinitionRuntimePlatformArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionRuntimePlatform)(nil)).Elem() +} + +func (i TaskDefinitionRuntimePlatformArgs) ToTaskDefinitionRuntimePlatformOutput() TaskDefinitionRuntimePlatformOutput { + return i.ToTaskDefinitionRuntimePlatformOutputWithContext(context.Background()) +} + +func (i TaskDefinitionRuntimePlatformArgs) ToTaskDefinitionRuntimePlatformOutputWithContext(ctx context.Context) TaskDefinitionRuntimePlatformOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionRuntimePlatformOutput) +} + +func (i TaskDefinitionRuntimePlatformArgs) ToTaskDefinitionRuntimePlatformPtrOutput() TaskDefinitionRuntimePlatformPtrOutput { + return i.ToTaskDefinitionRuntimePlatformPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionRuntimePlatformArgs) ToTaskDefinitionRuntimePlatformPtrOutputWithContext(ctx context.Context) TaskDefinitionRuntimePlatformPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionRuntimePlatformOutput).ToTaskDefinitionRuntimePlatformPtrOutputWithContext(ctx) +} + +// TaskDefinitionRuntimePlatformPtrInput is an input type that accepts TaskDefinitionRuntimePlatformArgs, TaskDefinitionRuntimePlatformPtr and TaskDefinitionRuntimePlatformPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionRuntimePlatformPtrInput` via: +// +// TaskDefinitionRuntimePlatformArgs{...} +// +// or: +// +// nil +type TaskDefinitionRuntimePlatformPtrInput interface { + pulumi.Input + + ToTaskDefinitionRuntimePlatformPtrOutput() TaskDefinitionRuntimePlatformPtrOutput + ToTaskDefinitionRuntimePlatformPtrOutputWithContext(context.Context) TaskDefinitionRuntimePlatformPtrOutput +} + +type taskDefinitionRuntimePlatformPtrType TaskDefinitionRuntimePlatformArgs + +func TaskDefinitionRuntimePlatformPtr(v *TaskDefinitionRuntimePlatformArgs) TaskDefinitionRuntimePlatformPtrInput { + return (*taskDefinitionRuntimePlatformPtrType)(v) +} + +func (*taskDefinitionRuntimePlatformPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionRuntimePlatform)(nil)).Elem() +} + +func (i *taskDefinitionRuntimePlatformPtrType) ToTaskDefinitionRuntimePlatformPtrOutput() TaskDefinitionRuntimePlatformPtrOutput { + return i.ToTaskDefinitionRuntimePlatformPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionRuntimePlatformPtrType) ToTaskDefinitionRuntimePlatformPtrOutputWithContext(ctx context.Context) TaskDefinitionRuntimePlatformPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionRuntimePlatformPtrOutput) +} + +type TaskDefinitionRuntimePlatformOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionRuntimePlatformOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionRuntimePlatform)(nil)).Elem() +} + +func (o TaskDefinitionRuntimePlatformOutput) ToTaskDefinitionRuntimePlatformOutput() TaskDefinitionRuntimePlatformOutput { + return o +} + +func (o TaskDefinitionRuntimePlatformOutput) ToTaskDefinitionRuntimePlatformOutputWithContext(ctx context.Context) TaskDefinitionRuntimePlatformOutput { + return o +} + +func (o TaskDefinitionRuntimePlatformOutput) ToTaskDefinitionRuntimePlatformPtrOutput() TaskDefinitionRuntimePlatformPtrOutput { + return o.ToTaskDefinitionRuntimePlatformPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionRuntimePlatformOutput) ToTaskDefinitionRuntimePlatformPtrOutputWithContext(ctx context.Context) TaskDefinitionRuntimePlatformPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionRuntimePlatform) *TaskDefinitionRuntimePlatform { + return &v + }).(TaskDefinitionRuntimePlatformPtrOutput) +} + +// Must be set to either `X86_64` or `ARM64`; see [cpu architecture](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) +func (o TaskDefinitionRuntimePlatformOutput) CpuArchitecture() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionRuntimePlatform) *string { return v.CpuArchitecture }).(pulumi.StringPtrOutput) +} + +// If the `requiresCompatibilities` is `FARGATE` this field is required; must be set to a valid option from the [operating system family in the runtime platform](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) setting +func (o TaskDefinitionRuntimePlatformOutput) OperatingSystemFamily() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionRuntimePlatform) *string { return v.OperatingSystemFamily }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionRuntimePlatformPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionRuntimePlatformPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionRuntimePlatform)(nil)).Elem() +} + +func (o TaskDefinitionRuntimePlatformPtrOutput) ToTaskDefinitionRuntimePlatformPtrOutput() TaskDefinitionRuntimePlatformPtrOutput { + return o +} + +func (o TaskDefinitionRuntimePlatformPtrOutput) ToTaskDefinitionRuntimePlatformPtrOutputWithContext(ctx context.Context) TaskDefinitionRuntimePlatformPtrOutput { + return o +} + +func (o TaskDefinitionRuntimePlatformPtrOutput) Elem() TaskDefinitionRuntimePlatformOutput { + return o.ApplyT(func(v *TaskDefinitionRuntimePlatform) TaskDefinitionRuntimePlatform { + if v != nil { + return *v + } + var ret TaskDefinitionRuntimePlatform + return ret + }).(TaskDefinitionRuntimePlatformOutput) +} + +// Must be set to either `X86_64` or `ARM64`; see [cpu architecture](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) +func (o TaskDefinitionRuntimePlatformPtrOutput) CpuArchitecture() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionRuntimePlatform) *string { + if v == nil { + return nil + } + return v.CpuArchitecture + }).(pulumi.StringPtrOutput) +} + +// If the `requiresCompatibilities` is `FARGATE` this field is required; must be set to a valid option from the [operating system family in the runtime platform](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#runtime-platform) setting +func (o TaskDefinitionRuntimePlatformPtrOutput) OperatingSystemFamily() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionRuntimePlatform) *string { + if v == nil { + return nil + } + return v.OperatingSystemFamily + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionVolume struct { + // Whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume configured at launch in the volume configuration. + ConfigureAtLaunch *bool `pulumi:"configureAtLaunch"` + // Configuration block to configure a docker volume. Detailed below. + DockerVolumeConfiguration *TaskDefinitionVolumeDockerVolumeConfiguration `pulumi:"dockerVolumeConfiguration"` + // Configuration block for an EFS volume. Detailed below. + EfsVolumeConfiguration *TaskDefinitionVolumeEfsVolumeConfiguration `pulumi:"efsVolumeConfiguration"` + // Configuration block for an FSX Windows File Server volume. Detailed below. + FsxWindowsFileServerVolumeConfiguration *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration `pulumi:"fsxWindowsFileServerVolumeConfiguration"` + // Path on the host container instance that is presented to the container. If not set, ECS will create a nonpersistent data volume that starts empty and is deleted after the task has finished. + HostPath *string `pulumi:"hostPath"` + // Name of the volume. This name is referenced in the `sourceVolume` + // parameter of container definition in the `mountPoints` section. + Name string `pulumi:"name"` +} + +// TaskDefinitionVolumeInput is an input type that accepts TaskDefinitionVolumeArgs and TaskDefinitionVolumeOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeInput` via: +// +// TaskDefinitionVolumeArgs{...} +type TaskDefinitionVolumeInput interface { + pulumi.Input + + ToTaskDefinitionVolumeOutput() TaskDefinitionVolumeOutput + ToTaskDefinitionVolumeOutputWithContext(context.Context) TaskDefinitionVolumeOutput +} + +type TaskDefinitionVolumeArgs struct { + // Whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume configured at launch in the volume configuration. + ConfigureAtLaunch pulumi.BoolPtrInput `pulumi:"configureAtLaunch"` + // Configuration block to configure a docker volume. Detailed below. + DockerVolumeConfiguration TaskDefinitionVolumeDockerVolumeConfigurationPtrInput `pulumi:"dockerVolumeConfiguration"` + // Configuration block for an EFS volume. Detailed below. + EfsVolumeConfiguration TaskDefinitionVolumeEfsVolumeConfigurationPtrInput `pulumi:"efsVolumeConfiguration"` + // Configuration block for an FSX Windows File Server volume. Detailed below. + FsxWindowsFileServerVolumeConfiguration TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrInput `pulumi:"fsxWindowsFileServerVolumeConfiguration"` + // Path on the host container instance that is presented to the container. If not set, ECS will create a nonpersistent data volume that starts empty and is deleted after the task has finished. + HostPath pulumi.StringPtrInput `pulumi:"hostPath"` + // Name of the volume. This name is referenced in the `sourceVolume` + // parameter of container definition in the `mountPoints` section. + Name pulumi.StringInput `pulumi:"name"` +} + +func (TaskDefinitionVolumeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolume)(nil)).Elem() +} + +func (i TaskDefinitionVolumeArgs) ToTaskDefinitionVolumeOutput() TaskDefinitionVolumeOutput { + return i.ToTaskDefinitionVolumeOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeArgs) ToTaskDefinitionVolumeOutputWithContext(ctx context.Context) TaskDefinitionVolumeOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeOutput) +} + +// TaskDefinitionVolumeArrayInput is an input type that accepts TaskDefinitionVolumeArray and TaskDefinitionVolumeArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeArrayInput` via: +// +// TaskDefinitionVolumeArray{ TaskDefinitionVolumeArgs{...} } +type TaskDefinitionVolumeArrayInput interface { + pulumi.Input + + ToTaskDefinitionVolumeArrayOutput() TaskDefinitionVolumeArrayOutput + ToTaskDefinitionVolumeArrayOutputWithContext(context.Context) TaskDefinitionVolumeArrayOutput +} + +type TaskDefinitionVolumeArray []TaskDefinitionVolumeInput + +func (TaskDefinitionVolumeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionVolume)(nil)).Elem() +} + +func (i TaskDefinitionVolumeArray) ToTaskDefinitionVolumeArrayOutput() TaskDefinitionVolumeArrayOutput { + return i.ToTaskDefinitionVolumeArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeArray) ToTaskDefinitionVolumeArrayOutputWithContext(ctx context.Context) TaskDefinitionVolumeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeArrayOutput) +} + +type TaskDefinitionVolumeOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolume)(nil)).Elem() +} + +func (o TaskDefinitionVolumeOutput) ToTaskDefinitionVolumeOutput() TaskDefinitionVolumeOutput { + return o +} + +func (o TaskDefinitionVolumeOutput) ToTaskDefinitionVolumeOutputWithContext(ctx context.Context) TaskDefinitionVolumeOutput { + return o +} + +// Whether the volume should be configured at launch time. This is used to create Amazon EBS volumes for standalone tasks or tasks created as part of a service. Each task definition revision may only have one volume configured at launch in the volume configuration. +func (o TaskDefinitionVolumeOutput) ConfigureAtLaunch() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolume) *bool { return v.ConfigureAtLaunch }).(pulumi.BoolPtrOutput) +} + +// Configuration block to configure a docker volume. Detailed below. +func (o TaskDefinitionVolumeOutput) DockerVolumeConfiguration() TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolume) *TaskDefinitionVolumeDockerVolumeConfiguration { + return v.DockerVolumeConfiguration + }).(TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) +} + +// Configuration block for an EFS volume. Detailed below. +func (o TaskDefinitionVolumeOutput) EfsVolumeConfiguration() TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolume) *TaskDefinitionVolumeEfsVolumeConfiguration { + return v.EfsVolumeConfiguration + }).(TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) +} + +// Configuration block for an FSX Windows File Server volume. Detailed below. +func (o TaskDefinitionVolumeOutput) FsxWindowsFileServerVolumeConfiguration() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolume) *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration { + return v.FsxWindowsFileServerVolumeConfiguration + }).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) +} + +// Path on the host container instance that is presented to the container. If not set, ECS will create a nonpersistent data volume that starts empty and is deleted after the task has finished. +func (o TaskDefinitionVolumeOutput) HostPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolume) *string { return v.HostPath }).(pulumi.StringPtrOutput) +} + +// Name of the volume. This name is referenced in the `sourceVolume` +// parameter of container definition in the `mountPoints` section. +func (o TaskDefinitionVolumeOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionVolume) string { return v.Name }).(pulumi.StringOutput) +} + +type TaskDefinitionVolumeArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionVolume)(nil)).Elem() +} + +func (o TaskDefinitionVolumeArrayOutput) ToTaskDefinitionVolumeArrayOutput() TaskDefinitionVolumeArrayOutput { + return o +} + +func (o TaskDefinitionVolumeArrayOutput) ToTaskDefinitionVolumeArrayOutputWithContext(ctx context.Context) TaskDefinitionVolumeArrayOutput { + return o +} + +func (o TaskDefinitionVolumeArrayOutput) Index(i pulumi.IntInput) TaskDefinitionVolumeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionVolume { + return vs[0].([]TaskDefinitionVolume)[vs[1].(int)] + }).(TaskDefinitionVolumeOutput) +} + +type TaskDefinitionVolumeDockerVolumeConfiguration struct { + // If this value is `true`, the Docker volume is created if it does not already exist. *Note*: This field is only used if the scope is `shared`. + Autoprovision *bool `pulumi:"autoprovision"` + // Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. + Driver *string `pulumi:"driver"` + // Map of Docker driver specific options. + DriverOpts map[string]string `pulumi:"driverOpts"` + // Map of custom metadata to add to your Docker volume. + Labels map[string]string `pulumi:"labels"` + // Scope for the Docker volume, which determines its lifecycle, either `task` or `shared`. Docker volumes that are scoped to a `task` are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as `shared` persist after the task stops. + Scope *string `pulumi:"scope"` +} + +// TaskDefinitionVolumeDockerVolumeConfigurationInput is an input type that accepts TaskDefinitionVolumeDockerVolumeConfigurationArgs and TaskDefinitionVolumeDockerVolumeConfigurationOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeDockerVolumeConfigurationInput` via: +// +// TaskDefinitionVolumeDockerVolumeConfigurationArgs{...} +type TaskDefinitionVolumeDockerVolumeConfigurationInput interface { + pulumi.Input + + ToTaskDefinitionVolumeDockerVolumeConfigurationOutput() TaskDefinitionVolumeDockerVolumeConfigurationOutput + ToTaskDefinitionVolumeDockerVolumeConfigurationOutputWithContext(context.Context) TaskDefinitionVolumeDockerVolumeConfigurationOutput +} + +type TaskDefinitionVolumeDockerVolumeConfigurationArgs struct { + // If this value is `true`, the Docker volume is created if it does not already exist. *Note*: This field is only used if the scope is `shared`. + Autoprovision pulumi.BoolPtrInput `pulumi:"autoprovision"` + // Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. + Driver pulumi.StringPtrInput `pulumi:"driver"` + // Map of Docker driver specific options. + DriverOpts pulumi.StringMapInput `pulumi:"driverOpts"` + // Map of custom metadata to add to your Docker volume. + Labels pulumi.StringMapInput `pulumi:"labels"` + // Scope for the Docker volume, which determines its lifecycle, either `task` or `shared`. Docker volumes that are scoped to a `task` are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as `shared` persist after the task stops. + Scope pulumi.StringPtrInput `pulumi:"scope"` +} + +func (TaskDefinitionVolumeDockerVolumeConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeDockerVolumeConfiguration)(nil)).Elem() +} + +func (i TaskDefinitionVolumeDockerVolumeConfigurationArgs) ToTaskDefinitionVolumeDockerVolumeConfigurationOutput() TaskDefinitionVolumeDockerVolumeConfigurationOutput { + return i.ToTaskDefinitionVolumeDockerVolumeConfigurationOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeDockerVolumeConfigurationArgs) ToTaskDefinitionVolumeDockerVolumeConfigurationOutputWithContext(ctx context.Context) TaskDefinitionVolumeDockerVolumeConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeDockerVolumeConfigurationOutput) +} + +func (i TaskDefinitionVolumeDockerVolumeConfigurationArgs) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutput() TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return i.ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeDockerVolumeConfigurationArgs) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeDockerVolumeConfigurationOutput).ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(ctx) +} + +// TaskDefinitionVolumeDockerVolumeConfigurationPtrInput is an input type that accepts TaskDefinitionVolumeDockerVolumeConfigurationArgs, TaskDefinitionVolumeDockerVolumeConfigurationPtr and TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeDockerVolumeConfigurationPtrInput` via: +// +// TaskDefinitionVolumeDockerVolumeConfigurationArgs{...} +// +// or: +// +// nil +type TaskDefinitionVolumeDockerVolumeConfigurationPtrInput interface { + pulumi.Input + + ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutput() TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput + ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(context.Context) TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput +} + +type taskDefinitionVolumeDockerVolumeConfigurationPtrType TaskDefinitionVolumeDockerVolumeConfigurationArgs + +func TaskDefinitionVolumeDockerVolumeConfigurationPtr(v *TaskDefinitionVolumeDockerVolumeConfigurationArgs) TaskDefinitionVolumeDockerVolumeConfigurationPtrInput { + return (*taskDefinitionVolumeDockerVolumeConfigurationPtrType)(v) +} + +func (*taskDefinitionVolumeDockerVolumeConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeDockerVolumeConfiguration)(nil)).Elem() +} + +func (i *taskDefinitionVolumeDockerVolumeConfigurationPtrType) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutput() TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return i.ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionVolumeDockerVolumeConfigurationPtrType) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) +} + +type TaskDefinitionVolumeDockerVolumeConfigurationOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeDockerVolumeConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeDockerVolumeConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) ToTaskDefinitionVolumeDockerVolumeConfigurationOutput() TaskDefinitionVolumeDockerVolumeConfigurationOutput { + return o +} + +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) ToTaskDefinitionVolumeDockerVolumeConfigurationOutputWithContext(ctx context.Context) TaskDefinitionVolumeDockerVolumeConfigurationOutput { + return o +} + +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutput() TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return o.ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionVolumeDockerVolumeConfiguration) *TaskDefinitionVolumeDockerVolumeConfiguration { + return &v + }).(TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) +} + +// If this value is `true`, the Docker volume is created if it does not already exist. *Note*: This field is only used if the scope is `shared`. +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) Autoprovision() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeDockerVolumeConfiguration) *bool { return v.Autoprovision }).(pulumi.BoolPtrOutput) +} + +// Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) Driver() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeDockerVolumeConfiguration) *string { return v.Driver }).(pulumi.StringPtrOutput) +} + +// Map of Docker driver specific options. +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) DriverOpts() pulumi.StringMapOutput { + return o.ApplyT(func(v TaskDefinitionVolumeDockerVolumeConfiguration) map[string]string { return v.DriverOpts }).(pulumi.StringMapOutput) +} + +// Map of custom metadata to add to your Docker volume. +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) Labels() pulumi.StringMapOutput { + return o.ApplyT(func(v TaskDefinitionVolumeDockerVolumeConfiguration) map[string]string { return v.Labels }).(pulumi.StringMapOutput) +} + +// Scope for the Docker volume, which determines its lifecycle, either `task` or `shared`. Docker volumes that are scoped to a `task` are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as `shared` persist after the task stops. +func (o TaskDefinitionVolumeDockerVolumeConfigurationOutput) Scope() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeDockerVolumeConfiguration) *string { return v.Scope }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeDockerVolumeConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutput() TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) ToTaskDefinitionVolumeDockerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) Elem() TaskDefinitionVolumeDockerVolumeConfigurationOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeDockerVolumeConfiguration) TaskDefinitionVolumeDockerVolumeConfiguration { + if v != nil { + return *v + } + var ret TaskDefinitionVolumeDockerVolumeConfiguration + return ret + }).(TaskDefinitionVolumeDockerVolumeConfigurationOutput) +} + +// If this value is `true`, the Docker volume is created if it does not already exist. *Note*: This field is only used if the scope is `shared`. +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) Autoprovision() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeDockerVolumeConfiguration) *bool { + if v == nil { + return nil + } + return v.Autoprovision + }).(pulumi.BoolPtrOutput) +} + +// Docker volume driver to use. The driver value must match the driver name provided by Docker because it is used for task placement. +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) Driver() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeDockerVolumeConfiguration) *string { + if v == nil { + return nil + } + return v.Driver + }).(pulumi.StringPtrOutput) +} + +// Map of Docker driver specific options. +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) DriverOpts() pulumi.StringMapOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeDockerVolumeConfiguration) map[string]string { + if v == nil { + return nil + } + return v.DriverOpts + }).(pulumi.StringMapOutput) +} + +// Map of custom metadata to add to your Docker volume. +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) Labels() pulumi.StringMapOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeDockerVolumeConfiguration) map[string]string { + if v == nil { + return nil + } + return v.Labels + }).(pulumi.StringMapOutput) +} + +// Scope for the Docker volume, which determines its lifecycle, either `task` or `shared`. Docker volumes that are scoped to a `task` are automatically provisioned when the task starts and destroyed when the task stops. Docker volumes that are scoped as `shared` persist after the task stops. +func (o TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput) Scope() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeDockerVolumeConfiguration) *string { + if v == nil { + return nil + } + return v.Scope + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionVolumeEfsVolumeConfiguration struct { + // Configuration block for authorization for the Amazon EFS file system. Detailed below. + AuthorizationConfig *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig `pulumi:"authorizationConfig"` + // ID of the EFS File System. + FileSystemId string `pulumi:"fileSystemId"` + // Directory within the Amazon EFS file system to mount as the root directory inside the host. If this parameter is omitted, the root of the Amazon EFS volume will be used. Specifying / will have the same effect as omitting this parameter. This argument is ignored when using `authorizationConfig`. + RootDirectory *string `pulumi:"rootDirectory"` + // Whether or not to enable encryption for Amazon EFS data in transit between the Amazon ECS host and the Amazon EFS server. Transit encryption must be enabled if Amazon EFS IAM authorization is used. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. + TransitEncryption *string `pulumi:"transitEncryption"` + // Port to use for transit encryption. If you do not specify a transit encryption port, it will use the port selection strategy that the Amazon EFS mount helper uses. + TransitEncryptionPort *int `pulumi:"transitEncryptionPort"` +} + +// TaskDefinitionVolumeEfsVolumeConfigurationInput is an input type that accepts TaskDefinitionVolumeEfsVolumeConfigurationArgs and TaskDefinitionVolumeEfsVolumeConfigurationOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeEfsVolumeConfigurationInput` via: +// +// TaskDefinitionVolumeEfsVolumeConfigurationArgs{...} +type TaskDefinitionVolumeEfsVolumeConfigurationInput interface { + pulumi.Input + + ToTaskDefinitionVolumeEfsVolumeConfigurationOutput() TaskDefinitionVolumeEfsVolumeConfigurationOutput + ToTaskDefinitionVolumeEfsVolumeConfigurationOutputWithContext(context.Context) TaskDefinitionVolumeEfsVolumeConfigurationOutput +} + +type TaskDefinitionVolumeEfsVolumeConfigurationArgs struct { + // Configuration block for authorization for the Amazon EFS file system. Detailed below. + AuthorizationConfig TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrInput `pulumi:"authorizationConfig"` + // ID of the EFS File System. + FileSystemId pulumi.StringInput `pulumi:"fileSystemId"` + // Directory within the Amazon EFS file system to mount as the root directory inside the host. If this parameter is omitted, the root of the Amazon EFS volume will be used. Specifying / will have the same effect as omitting this parameter. This argument is ignored when using `authorizationConfig`. + RootDirectory pulumi.StringPtrInput `pulumi:"rootDirectory"` + // Whether or not to enable encryption for Amazon EFS data in transit between the Amazon ECS host and the Amazon EFS server. Transit encryption must be enabled if Amazon EFS IAM authorization is used. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. + TransitEncryption pulumi.StringPtrInput `pulumi:"transitEncryption"` + // Port to use for transit encryption. If you do not specify a transit encryption port, it will use the port selection strategy that the Amazon EFS mount helper uses. + TransitEncryptionPort pulumi.IntPtrInput `pulumi:"transitEncryptionPort"` +} + +func (TaskDefinitionVolumeEfsVolumeConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfiguration)(nil)).Elem() +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationOutput() TaskDefinitionVolumeEfsVolumeConfigurationOutput { + return i.ToTaskDefinitionVolumeEfsVolumeConfigurationOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeEfsVolumeConfigurationOutput) +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return i.ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeEfsVolumeConfigurationOutput).ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(ctx) +} + +// TaskDefinitionVolumeEfsVolumeConfigurationPtrInput is an input type that accepts TaskDefinitionVolumeEfsVolumeConfigurationArgs, TaskDefinitionVolumeEfsVolumeConfigurationPtr and TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeEfsVolumeConfigurationPtrInput` via: +// +// TaskDefinitionVolumeEfsVolumeConfigurationArgs{...} +// +// or: +// +// nil +type TaskDefinitionVolumeEfsVolumeConfigurationPtrInput interface { + pulumi.Input + + ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput + ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(context.Context) TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput +} + +type taskDefinitionVolumeEfsVolumeConfigurationPtrType TaskDefinitionVolumeEfsVolumeConfigurationArgs + +func TaskDefinitionVolumeEfsVolumeConfigurationPtr(v *TaskDefinitionVolumeEfsVolumeConfigurationArgs) TaskDefinitionVolumeEfsVolumeConfigurationPtrInput { + return (*taskDefinitionVolumeEfsVolumeConfigurationPtrType)(v) +} + +func (*taskDefinitionVolumeEfsVolumeConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeEfsVolumeConfiguration)(nil)).Elem() +} + +func (i *taskDefinitionVolumeEfsVolumeConfigurationPtrType) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return i.ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionVolumeEfsVolumeConfigurationPtrType) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) +} + +type TaskDefinitionVolumeEfsVolumeConfigurationOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeEfsVolumeConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationOutput() TaskDefinitionVolumeEfsVolumeConfigurationOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return o.ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionVolumeEfsVolumeConfiguration) *TaskDefinitionVolumeEfsVolumeConfiguration { + return &v + }).(TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) +} + +// Configuration block for authorization for the Amazon EFS file system. Detailed below. +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) AuthorizationConfig() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeEfsVolumeConfiguration) *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig { + return v.AuthorizationConfig + }).(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) +} + +// ID of the EFS File System. +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) FileSystemId() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionVolumeEfsVolumeConfiguration) string { return v.FileSystemId }).(pulumi.StringOutput) +} + +// Directory within the Amazon EFS file system to mount as the root directory inside the host. If this parameter is omitted, the root of the Amazon EFS volume will be used. Specifying / will have the same effect as omitting this parameter. This argument is ignored when using `authorizationConfig`. +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) RootDirectory() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeEfsVolumeConfiguration) *string { return v.RootDirectory }).(pulumi.StringPtrOutput) +} + +// Whether or not to enable encryption for Amazon EFS data in transit between the Amazon ECS host and the Amazon EFS server. Transit encryption must be enabled if Amazon EFS IAM authorization is used. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) TransitEncryption() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeEfsVolumeConfiguration) *string { return v.TransitEncryption }).(pulumi.StringPtrOutput) +} + +// Port to use for transit encryption. If you do not specify a transit encryption port, it will use the port selection strategy that the Amazon EFS mount helper uses. +func (o TaskDefinitionVolumeEfsVolumeConfigurationOutput) TransitEncryptionPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeEfsVolumeConfiguration) *int { return v.TransitEncryptionPort }).(pulumi.IntPtrOutput) +} + +type TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeEfsVolumeConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) Elem() TaskDefinitionVolumeEfsVolumeConfigurationOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfiguration) TaskDefinitionVolumeEfsVolumeConfiguration { + if v != nil { + return *v + } + var ret TaskDefinitionVolumeEfsVolumeConfiguration + return ret + }).(TaskDefinitionVolumeEfsVolumeConfigurationOutput) +} + +// Configuration block for authorization for the Amazon EFS file system. Detailed below. +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) AuthorizationConfig() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfiguration) *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig { + if v == nil { + return nil + } + return v.AuthorizationConfig + }).(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) +} + +// ID of the EFS File System. +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) FileSystemId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfiguration) *string { + if v == nil { + return nil + } + return &v.FileSystemId + }).(pulumi.StringPtrOutput) +} + +// Directory within the Amazon EFS file system to mount as the root directory inside the host. If this parameter is omitted, the root of the Amazon EFS volume will be used. Specifying / will have the same effect as omitting this parameter. This argument is ignored when using `authorizationConfig`. +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) RootDirectory() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfiguration) *string { + if v == nil { + return nil + } + return v.RootDirectory + }).(pulumi.StringPtrOutput) +} + +// Whether or not to enable encryption for Amazon EFS data in transit between the Amazon ECS host and the Amazon EFS server. Transit encryption must be enabled if Amazon EFS IAM authorization is used. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) TransitEncryption() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfiguration) *string { + if v == nil { + return nil + } + return v.TransitEncryption + }).(pulumi.StringPtrOutput) +} + +// Port to use for transit encryption. If you do not specify a transit encryption port, it will use the port selection strategy that the Amazon EFS mount helper uses. +func (o TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput) TransitEncryptionPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfiguration) *int { + if v == nil { + return nil + } + return v.TransitEncryptionPort + }).(pulumi.IntPtrOutput) +} + +type TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig struct { + // Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration. + AccessPointId *string `pulumi:"accessPointId"` + // Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. + Iam *string `pulumi:"iam"` +} + +// TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigInput is an input type that accepts TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs and TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigInput` via: +// +// TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs{...} +type TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigInput interface { + pulumi.Input + + ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput + ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutputWithContext(context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput +} + +type TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs struct { + // Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration. + AccessPointId pulumi.StringPtrInput `pulumi:"accessPointId"` + // Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. + Iam pulumi.StringPtrInput `pulumi:"iam"` +} + +func (TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput { + return i.ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return i.ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput).ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx) +} + +// TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrInput is an input type that accepts TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs, TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtr and TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrInput` via: +// +// TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs{...} +// +// or: +// +// nil +type TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrInput interface { + pulumi.Input + + ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput + ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput +} + +type taskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrType TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs + +func TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtr(v *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrInput { + return (*taskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrType)(v) +} + +func (*taskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (i *taskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrType) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return i.ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrType) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) +} + +type TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return o.ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig) *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig { + return &v + }).(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) +} + +// Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration. +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) AccessPointId() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig) *string { return v.AccessPointId }).(pulumi.StringPtrOutput) +} + +// Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) Iam() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig) *string { return v.Iam }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) ToTaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput { + return o +} + +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) Elem() TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig) TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig { + if v != nil { + return *v + } + var ret TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig + return ret + }).(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput) +} + +// Access point ID to use. If an access point is specified, the root directory value will be relative to the directory set for the access point. If specified, transit encryption must be enabled in the EFSVolumeConfiguration. +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) AccessPointId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig) *string { + if v == nil { + return nil + } + return v.AccessPointId + }).(pulumi.StringPtrOutput) +} + +// Whether or not to use the Amazon ECS task IAM role defined in a task definition when mounting the Amazon EFS file system. If enabled, transit encryption must be enabled in the EFSVolumeConfiguration. Valid values: `ENABLED`, `DISABLED`. If this parameter is omitted, the default value of `DISABLED` is used. +func (o TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput) Iam() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfig) *string { + if v == nil { + return nil + } + return v.Iam + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration struct { + // Configuration block for authorization for the Amazon FSx for Windows File Server file system detailed below. + AuthorizationConfig TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig `pulumi:"authorizationConfig"` + // The Amazon FSx for Windows File Server file system ID to use. + FileSystemId string `pulumi:"fileSystemId"` + // The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host. + RootDirectory string `pulumi:"rootDirectory"` +} + +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationInput is an input type that accepts TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs and TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationInput` via: +// +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs{...} +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationInput interface { + pulumi.Input + + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutputWithContext(context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs struct { + // Configuration block for authorization for the Amazon FSx for Windows File Server file system detailed below. + AuthorizationConfig TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigInput `pulumi:"authorizationConfig"` + // The Amazon FSx for Windows File Server file system ID to use. + FileSystemId pulumi.StringInput `pulumi:"fileSystemId"` + // The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host. + RootDirectory pulumi.StringInput `pulumi:"rootDirectory"` +} + +func (TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration)(nil)).Elem() +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput { + return i.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return i.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput).ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(ctx) +} + +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrInput is an input type that accepts TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs, TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtr and TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrInput` via: +// +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs{...} +// +// or: +// +// nil +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrInput interface { + pulumi.Input + + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput +} + +type taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrType TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs + +func TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtr(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrInput { + return (*taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrType)(v) +} + +func (*taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration)(nil)).Elem() +} + +func (i *taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrType) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return i.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrType) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return o.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration { + return &v + }).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) +} + +// Configuration block for authorization for the Amazon FSx for Windows File Server file system detailed below. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) AuthorizationConfig() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput { + return o.ApplyT(func(v TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig { + return v.AuthorizationConfig + }).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) +} + +// The Amazon FSx for Windows File Server file system ID to use. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) FileSystemId() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) string { return v.FileSystemId }).(pulumi.StringOutput) +} + +// The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) RootDirectory() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) string { return v.RootDirectory }).(pulumi.StringOutput) +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) Elem() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration { + if v != nil { + return *v + } + var ret TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration + return ret + }).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput) +} + +// Configuration block for authorization for the Amazon FSx for Windows File Server file system detailed below. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) AuthorizationConfig() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig { + if v == nil { + return nil + } + return &v.AuthorizationConfig + }).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) +} + +// The Amazon FSx for Windows File Server file system ID to use. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) FileSystemId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) *string { + if v == nil { + return nil + } + return &v.FileSystemId + }).(pulumi.StringPtrOutput) +} + +// The directory within the Amazon FSx for Windows File Server file system to mount as the root directory inside the host. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput) RootDirectory() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfiguration) *string { + if v == nil { + return nil + } + return &v.RootDirectory + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig struct { + // The authorization credential option to use. The authorization credential options can be provided using either the Amazon Resource Name (ARN) of an AWS Secrets Manager secret or AWS Systems Manager Parameter Store parameter. The ARNs refer to the stored credentials. + CredentialsParameter string `pulumi:"credentialsParameter"` + // A fully qualified domain name hosted by an AWS Directory Service Managed Microsoft AD (Active Directory) or self-hosted AD on Amazon EC2. + Domain string `pulumi:"domain"` +} + +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigInput is an input type that accepts TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs and TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigInput` via: +// +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs{...} +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigInput interface { + pulumi.Input + + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutputWithContext(context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs struct { + // The authorization credential option to use. The authorization credential options can be provided using either the Amazon Resource Name (ARN) of an AWS Secrets Manager secret or AWS Systems Manager Parameter Store parameter. The ARNs refer to the stored credentials. + CredentialsParameter pulumi.StringInput `pulumi:"credentialsParameter"` + // A fully qualified domain name hosted by an AWS Directory Service Managed Microsoft AD (Active Directory) or self-hosted AD on Amazon EC2. + Domain pulumi.StringInput `pulumi:"domain"` +} + +func (TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput { + return i.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return i.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput).ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx) +} + +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrInput is an input type that accepts TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs, TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtr and TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrInput` via: +// +// TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs{...} +// +// or: +// +// nil +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrInput interface { + pulumi.Input + + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput + ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput +} + +type taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrType TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs + +func TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtr(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrInput { + return (*taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrType)(v) +} + +func (*taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (i *taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrType) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return i.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrType) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return o.ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig) *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig { + return &v + }).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) +} + +// The authorization credential option to use. The authorization credential options can be provided using either the Amazon Resource Name (ARN) of an AWS Secrets Manager secret or AWS Systems Manager Parameter Store parameter. The ARNs refer to the stored credentials. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) CredentialsParameter() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig) string { + return v.CredentialsParameter + }).(pulumi.StringOutput) +} + +// A fully qualified domain name hosted by an AWS Directory Service Managed Microsoft AD (Active Directory) or self-hosted AD on Amazon EC2. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) Domain() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig) string { + return v.Domain + }).(pulumi.StringOutput) +} + +type TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig)(nil)).Elem() +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) ToTaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutputWithContext(ctx context.Context) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput { + return o +} + +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) Elem() TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig) TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig { + if v != nil { + return *v + } + var ret TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig + return ret + }).(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput) +} + +// The authorization credential option to use. The authorization credential options can be provided using either the Amazon Resource Name (ARN) of an AWS Secrets Manager secret or AWS Systems Manager Parameter Store parameter. The ARNs refer to the stored credentials. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) CredentialsParameter() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig) *string { + if v == nil { + return nil + } + return &v.CredentialsParameter + }).(pulumi.StringPtrOutput) +} + +// A fully qualified domain name hosted by an AWS Directory Service Managed Microsoft AD (Active Directory) or self-hosted AD on Amazon EC2. +func (o TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput) Domain() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfig) *string { + if v == nil { + return nil + } + return &v.Domain + }).(pulumi.StringPtrOutput) +} + +type TaskSetCapacityProviderStrategy struct { + // The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. + Base *int `pulumi:"base"` + // The short name or full Amazon Resource Name (ARN) of the capacity provider. + CapacityProvider string `pulumi:"capacityProvider"` + // The relative percentage of the total number of launched tasks that should use the specified capacity provider. + Weight int `pulumi:"weight"` +} + +// TaskSetCapacityProviderStrategyInput is an input type that accepts TaskSetCapacityProviderStrategyArgs and TaskSetCapacityProviderStrategyOutput values. +// You can construct a concrete instance of `TaskSetCapacityProviderStrategyInput` via: +// +// TaskSetCapacityProviderStrategyArgs{...} +type TaskSetCapacityProviderStrategyInput interface { + pulumi.Input + + ToTaskSetCapacityProviderStrategyOutput() TaskSetCapacityProviderStrategyOutput + ToTaskSetCapacityProviderStrategyOutputWithContext(context.Context) TaskSetCapacityProviderStrategyOutput +} + +type TaskSetCapacityProviderStrategyArgs struct { + // The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. + Base pulumi.IntPtrInput `pulumi:"base"` + // The short name or full Amazon Resource Name (ARN) of the capacity provider. + CapacityProvider pulumi.StringInput `pulumi:"capacityProvider"` + // The relative percentage of the total number of launched tasks that should use the specified capacity provider. + Weight pulumi.IntInput `pulumi:"weight"` +} + +func (TaskSetCapacityProviderStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetCapacityProviderStrategy)(nil)).Elem() +} + +func (i TaskSetCapacityProviderStrategyArgs) ToTaskSetCapacityProviderStrategyOutput() TaskSetCapacityProviderStrategyOutput { + return i.ToTaskSetCapacityProviderStrategyOutputWithContext(context.Background()) +} + +func (i TaskSetCapacityProviderStrategyArgs) ToTaskSetCapacityProviderStrategyOutputWithContext(ctx context.Context) TaskSetCapacityProviderStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetCapacityProviderStrategyOutput) +} + +// TaskSetCapacityProviderStrategyArrayInput is an input type that accepts TaskSetCapacityProviderStrategyArray and TaskSetCapacityProviderStrategyArrayOutput values. +// You can construct a concrete instance of `TaskSetCapacityProviderStrategyArrayInput` via: +// +// TaskSetCapacityProviderStrategyArray{ TaskSetCapacityProviderStrategyArgs{...} } +type TaskSetCapacityProviderStrategyArrayInput interface { + pulumi.Input + + ToTaskSetCapacityProviderStrategyArrayOutput() TaskSetCapacityProviderStrategyArrayOutput + ToTaskSetCapacityProviderStrategyArrayOutputWithContext(context.Context) TaskSetCapacityProviderStrategyArrayOutput +} + +type TaskSetCapacityProviderStrategyArray []TaskSetCapacityProviderStrategyInput + +func (TaskSetCapacityProviderStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskSetCapacityProviderStrategy)(nil)).Elem() +} + +func (i TaskSetCapacityProviderStrategyArray) ToTaskSetCapacityProviderStrategyArrayOutput() TaskSetCapacityProviderStrategyArrayOutput { + return i.ToTaskSetCapacityProviderStrategyArrayOutputWithContext(context.Background()) +} + +func (i TaskSetCapacityProviderStrategyArray) ToTaskSetCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) TaskSetCapacityProviderStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetCapacityProviderStrategyArrayOutput) +} + +type TaskSetCapacityProviderStrategyOutput struct{ *pulumi.OutputState } + +func (TaskSetCapacityProviderStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetCapacityProviderStrategy)(nil)).Elem() +} + +func (o TaskSetCapacityProviderStrategyOutput) ToTaskSetCapacityProviderStrategyOutput() TaskSetCapacityProviderStrategyOutput { + return o +} + +func (o TaskSetCapacityProviderStrategyOutput) ToTaskSetCapacityProviderStrategyOutputWithContext(ctx context.Context) TaskSetCapacityProviderStrategyOutput { + return o +} + +// The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. +func (o TaskSetCapacityProviderStrategyOutput) Base() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskSetCapacityProviderStrategy) *int { return v.Base }).(pulumi.IntPtrOutput) +} + +// The short name or full Amazon Resource Name (ARN) of the capacity provider. +func (o TaskSetCapacityProviderStrategyOutput) CapacityProvider() pulumi.StringOutput { + return o.ApplyT(func(v TaskSetCapacityProviderStrategy) string { return v.CapacityProvider }).(pulumi.StringOutput) +} + +// The relative percentage of the total number of launched tasks that should use the specified capacity provider. +func (o TaskSetCapacityProviderStrategyOutput) Weight() pulumi.IntOutput { + return o.ApplyT(func(v TaskSetCapacityProviderStrategy) int { return v.Weight }).(pulumi.IntOutput) +} + +type TaskSetCapacityProviderStrategyArrayOutput struct{ *pulumi.OutputState } + +func (TaskSetCapacityProviderStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskSetCapacityProviderStrategy)(nil)).Elem() +} + +func (o TaskSetCapacityProviderStrategyArrayOutput) ToTaskSetCapacityProviderStrategyArrayOutput() TaskSetCapacityProviderStrategyArrayOutput { + return o +} + +func (o TaskSetCapacityProviderStrategyArrayOutput) ToTaskSetCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) TaskSetCapacityProviderStrategyArrayOutput { + return o +} + +func (o TaskSetCapacityProviderStrategyArrayOutput) Index(i pulumi.IntInput) TaskSetCapacityProviderStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskSetCapacityProviderStrategy { + return vs[0].([]TaskSetCapacityProviderStrategy)[vs[1].(int)] + }).(TaskSetCapacityProviderStrategyOutput) +} + +type TaskSetLoadBalancer struct { + // The name of the container to associate with the load balancer (as it appears in a container definition). + ContainerName string `pulumi:"containerName"` + // The port on the container to associate with the load balancer. Defaults to `0` if not specified. + // + // > **Note:** Specifying multiple `loadBalancer` configurations is still not supported by AWS for ECS task set. + ContainerPort *int `pulumi:"containerPort"` + // The name of the ELB (Classic) to associate with the service. + LoadBalancerName *string `pulumi:"loadBalancerName"` + // The ARN of the Load Balancer target group to associate with the service. + TargetGroupArn *string `pulumi:"targetGroupArn"` +} + +// TaskSetLoadBalancerInput is an input type that accepts TaskSetLoadBalancerArgs and TaskSetLoadBalancerOutput values. +// You can construct a concrete instance of `TaskSetLoadBalancerInput` via: +// +// TaskSetLoadBalancerArgs{...} +type TaskSetLoadBalancerInput interface { + pulumi.Input + + ToTaskSetLoadBalancerOutput() TaskSetLoadBalancerOutput + ToTaskSetLoadBalancerOutputWithContext(context.Context) TaskSetLoadBalancerOutput +} + +type TaskSetLoadBalancerArgs struct { + // The name of the container to associate with the load balancer (as it appears in a container definition). + ContainerName pulumi.StringInput `pulumi:"containerName"` + // The port on the container to associate with the load balancer. Defaults to `0` if not specified. + // + // > **Note:** Specifying multiple `loadBalancer` configurations is still not supported by AWS for ECS task set. + ContainerPort pulumi.IntPtrInput `pulumi:"containerPort"` + // The name of the ELB (Classic) to associate with the service. + LoadBalancerName pulumi.StringPtrInput `pulumi:"loadBalancerName"` + // The ARN of the Load Balancer target group to associate with the service. + TargetGroupArn pulumi.StringPtrInput `pulumi:"targetGroupArn"` +} + +func (TaskSetLoadBalancerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetLoadBalancer)(nil)).Elem() +} + +func (i TaskSetLoadBalancerArgs) ToTaskSetLoadBalancerOutput() TaskSetLoadBalancerOutput { + return i.ToTaskSetLoadBalancerOutputWithContext(context.Background()) +} + +func (i TaskSetLoadBalancerArgs) ToTaskSetLoadBalancerOutputWithContext(ctx context.Context) TaskSetLoadBalancerOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetLoadBalancerOutput) +} + +// TaskSetLoadBalancerArrayInput is an input type that accepts TaskSetLoadBalancerArray and TaskSetLoadBalancerArrayOutput values. +// You can construct a concrete instance of `TaskSetLoadBalancerArrayInput` via: +// +// TaskSetLoadBalancerArray{ TaskSetLoadBalancerArgs{...} } +type TaskSetLoadBalancerArrayInput interface { + pulumi.Input + + ToTaskSetLoadBalancerArrayOutput() TaskSetLoadBalancerArrayOutput + ToTaskSetLoadBalancerArrayOutputWithContext(context.Context) TaskSetLoadBalancerArrayOutput +} + +type TaskSetLoadBalancerArray []TaskSetLoadBalancerInput + +func (TaskSetLoadBalancerArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskSetLoadBalancer)(nil)).Elem() +} + +func (i TaskSetLoadBalancerArray) ToTaskSetLoadBalancerArrayOutput() TaskSetLoadBalancerArrayOutput { + return i.ToTaskSetLoadBalancerArrayOutputWithContext(context.Background()) +} + +func (i TaskSetLoadBalancerArray) ToTaskSetLoadBalancerArrayOutputWithContext(ctx context.Context) TaskSetLoadBalancerArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetLoadBalancerArrayOutput) +} + +type TaskSetLoadBalancerOutput struct{ *pulumi.OutputState } + +func (TaskSetLoadBalancerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetLoadBalancer)(nil)).Elem() +} + +func (o TaskSetLoadBalancerOutput) ToTaskSetLoadBalancerOutput() TaskSetLoadBalancerOutput { + return o +} + +func (o TaskSetLoadBalancerOutput) ToTaskSetLoadBalancerOutputWithContext(ctx context.Context) TaskSetLoadBalancerOutput { + return o +} + +// The name of the container to associate with the load balancer (as it appears in a container definition). +func (o TaskSetLoadBalancerOutput) ContainerName() pulumi.StringOutput { + return o.ApplyT(func(v TaskSetLoadBalancer) string { return v.ContainerName }).(pulumi.StringOutput) +} + +// The port on the container to associate with the load balancer. Defaults to `0` if not specified. +// +// > **Note:** Specifying multiple `loadBalancer` configurations is still not supported by AWS for ECS task set. +func (o TaskSetLoadBalancerOutput) ContainerPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskSetLoadBalancer) *int { return v.ContainerPort }).(pulumi.IntPtrOutput) +} + +// The name of the ELB (Classic) to associate with the service. +func (o TaskSetLoadBalancerOutput) LoadBalancerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskSetLoadBalancer) *string { return v.LoadBalancerName }).(pulumi.StringPtrOutput) +} + +// The ARN of the Load Balancer target group to associate with the service. +func (o TaskSetLoadBalancerOutput) TargetGroupArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskSetLoadBalancer) *string { return v.TargetGroupArn }).(pulumi.StringPtrOutput) +} + +type TaskSetLoadBalancerArrayOutput struct{ *pulumi.OutputState } + +func (TaskSetLoadBalancerArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskSetLoadBalancer)(nil)).Elem() +} + +func (o TaskSetLoadBalancerArrayOutput) ToTaskSetLoadBalancerArrayOutput() TaskSetLoadBalancerArrayOutput { + return o +} + +func (o TaskSetLoadBalancerArrayOutput) ToTaskSetLoadBalancerArrayOutputWithContext(ctx context.Context) TaskSetLoadBalancerArrayOutput { + return o +} + +func (o TaskSetLoadBalancerArrayOutput) Index(i pulumi.IntInput) TaskSetLoadBalancerOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskSetLoadBalancer { + return vs[0].([]TaskSetLoadBalancer)[vs[1].(int)] + }).(TaskSetLoadBalancerOutput) +} + +type TaskSetNetworkConfiguration struct { + // Whether to assign a public IP address to the ENI (`FARGATE` launch type only). Valid values are `true` or `false`. Default `false`. + // + // For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html). + AssignPublicIp *bool `pulumi:"assignPublicIp"` + // The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. Maximum of 5. + SecurityGroups []string `pulumi:"securityGroups"` + // The subnets associated with the task or service. Maximum of 16. + Subnets []string `pulumi:"subnets"` +} + +// TaskSetNetworkConfigurationInput is an input type that accepts TaskSetNetworkConfigurationArgs and TaskSetNetworkConfigurationOutput values. +// You can construct a concrete instance of `TaskSetNetworkConfigurationInput` via: +// +// TaskSetNetworkConfigurationArgs{...} +type TaskSetNetworkConfigurationInput interface { + pulumi.Input + + ToTaskSetNetworkConfigurationOutput() TaskSetNetworkConfigurationOutput + ToTaskSetNetworkConfigurationOutputWithContext(context.Context) TaskSetNetworkConfigurationOutput +} + +type TaskSetNetworkConfigurationArgs struct { + // Whether to assign a public IP address to the ENI (`FARGATE` launch type only). Valid values are `true` or `false`. Default `false`. + // + // For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html). + AssignPublicIp pulumi.BoolPtrInput `pulumi:"assignPublicIp"` + // The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. Maximum of 5. + SecurityGroups pulumi.StringArrayInput `pulumi:"securityGroups"` + // The subnets associated with the task or service. Maximum of 16. + Subnets pulumi.StringArrayInput `pulumi:"subnets"` +} + +func (TaskSetNetworkConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetNetworkConfiguration)(nil)).Elem() +} + +func (i TaskSetNetworkConfigurationArgs) ToTaskSetNetworkConfigurationOutput() TaskSetNetworkConfigurationOutput { + return i.ToTaskSetNetworkConfigurationOutputWithContext(context.Background()) +} + +func (i TaskSetNetworkConfigurationArgs) ToTaskSetNetworkConfigurationOutputWithContext(ctx context.Context) TaskSetNetworkConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetNetworkConfigurationOutput) +} + +func (i TaskSetNetworkConfigurationArgs) ToTaskSetNetworkConfigurationPtrOutput() TaskSetNetworkConfigurationPtrOutput { + return i.ToTaskSetNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i TaskSetNetworkConfigurationArgs) ToTaskSetNetworkConfigurationPtrOutputWithContext(ctx context.Context) TaskSetNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetNetworkConfigurationOutput).ToTaskSetNetworkConfigurationPtrOutputWithContext(ctx) +} + +// TaskSetNetworkConfigurationPtrInput is an input type that accepts TaskSetNetworkConfigurationArgs, TaskSetNetworkConfigurationPtr and TaskSetNetworkConfigurationPtrOutput values. +// You can construct a concrete instance of `TaskSetNetworkConfigurationPtrInput` via: +// +// TaskSetNetworkConfigurationArgs{...} +// +// or: +// +// nil +type TaskSetNetworkConfigurationPtrInput interface { + pulumi.Input + + ToTaskSetNetworkConfigurationPtrOutput() TaskSetNetworkConfigurationPtrOutput + ToTaskSetNetworkConfigurationPtrOutputWithContext(context.Context) TaskSetNetworkConfigurationPtrOutput +} + +type taskSetNetworkConfigurationPtrType TaskSetNetworkConfigurationArgs + +func TaskSetNetworkConfigurationPtr(v *TaskSetNetworkConfigurationArgs) TaskSetNetworkConfigurationPtrInput { + return (*taskSetNetworkConfigurationPtrType)(v) +} + +func (*taskSetNetworkConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSetNetworkConfiguration)(nil)).Elem() +} + +func (i *taskSetNetworkConfigurationPtrType) ToTaskSetNetworkConfigurationPtrOutput() TaskSetNetworkConfigurationPtrOutput { + return i.ToTaskSetNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *taskSetNetworkConfigurationPtrType) ToTaskSetNetworkConfigurationPtrOutputWithContext(ctx context.Context) TaskSetNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetNetworkConfigurationPtrOutput) +} + +type TaskSetNetworkConfigurationOutput struct{ *pulumi.OutputState } + +func (TaskSetNetworkConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetNetworkConfiguration)(nil)).Elem() +} + +func (o TaskSetNetworkConfigurationOutput) ToTaskSetNetworkConfigurationOutput() TaskSetNetworkConfigurationOutput { + return o +} + +func (o TaskSetNetworkConfigurationOutput) ToTaskSetNetworkConfigurationOutputWithContext(ctx context.Context) TaskSetNetworkConfigurationOutput { + return o +} + +func (o TaskSetNetworkConfigurationOutput) ToTaskSetNetworkConfigurationPtrOutput() TaskSetNetworkConfigurationPtrOutput { + return o.ToTaskSetNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (o TaskSetNetworkConfigurationOutput) ToTaskSetNetworkConfigurationPtrOutputWithContext(ctx context.Context) TaskSetNetworkConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskSetNetworkConfiguration) *TaskSetNetworkConfiguration { + return &v + }).(TaskSetNetworkConfigurationPtrOutput) +} + +// Whether to assign a public IP address to the ENI (`FARGATE` launch type only). Valid values are `true` or `false`. Default `false`. +// +// For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html). +func (o TaskSetNetworkConfigurationOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskSetNetworkConfiguration) *bool { return v.AssignPublicIp }).(pulumi.BoolPtrOutput) +} + +// The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. Maximum of 5. +func (o TaskSetNetworkConfigurationOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskSetNetworkConfiguration) []string { return v.SecurityGroups }).(pulumi.StringArrayOutput) +} + +// The subnets associated with the task or service. Maximum of 16. +func (o TaskSetNetworkConfigurationOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskSetNetworkConfiguration) []string { return v.Subnets }).(pulumi.StringArrayOutput) +} + +type TaskSetNetworkConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (TaskSetNetworkConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSetNetworkConfiguration)(nil)).Elem() +} + +func (o TaskSetNetworkConfigurationPtrOutput) ToTaskSetNetworkConfigurationPtrOutput() TaskSetNetworkConfigurationPtrOutput { + return o +} + +func (o TaskSetNetworkConfigurationPtrOutput) ToTaskSetNetworkConfigurationPtrOutputWithContext(ctx context.Context) TaskSetNetworkConfigurationPtrOutput { + return o +} + +func (o TaskSetNetworkConfigurationPtrOutput) Elem() TaskSetNetworkConfigurationOutput { + return o.ApplyT(func(v *TaskSetNetworkConfiguration) TaskSetNetworkConfiguration { + if v != nil { + return *v + } + var ret TaskSetNetworkConfiguration + return ret + }).(TaskSetNetworkConfigurationOutput) +} + +// Whether to assign a public IP address to the ENI (`FARGATE` launch type only). Valid values are `true` or `false`. Default `false`. +// +// For more information, see [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html). +func (o TaskSetNetworkConfigurationPtrOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskSetNetworkConfiguration) *bool { + if v == nil { + return nil + } + return v.AssignPublicIp + }).(pulumi.BoolPtrOutput) +} + +// The security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. Maximum of 5. +func (o TaskSetNetworkConfigurationPtrOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskSetNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.SecurityGroups + }).(pulumi.StringArrayOutput) +} + +// The subnets associated with the task or service. Maximum of 16. +func (o TaskSetNetworkConfigurationPtrOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskSetNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.Subnets + }).(pulumi.StringArrayOutput) +} + +type TaskSetScale struct { + // The unit of measure for the scale value. Default: `PERCENT`. + Unit *string `pulumi:"unit"` + // The value, specified as a percent total of a service's `desiredCount`, to scale the task set. Defaults to `0` if not specified. Accepted values are numbers between 0.0 and 100.0. + Value *float64 `pulumi:"value"` +} + +// TaskSetScaleInput is an input type that accepts TaskSetScaleArgs and TaskSetScaleOutput values. +// You can construct a concrete instance of `TaskSetScaleInput` via: +// +// TaskSetScaleArgs{...} +type TaskSetScaleInput interface { + pulumi.Input + + ToTaskSetScaleOutput() TaskSetScaleOutput + ToTaskSetScaleOutputWithContext(context.Context) TaskSetScaleOutput +} + +type TaskSetScaleArgs struct { + // The unit of measure for the scale value. Default: `PERCENT`. + Unit pulumi.StringPtrInput `pulumi:"unit"` + // The value, specified as a percent total of a service's `desiredCount`, to scale the task set. Defaults to `0` if not specified. Accepted values are numbers between 0.0 and 100.0. + Value pulumi.Float64PtrInput `pulumi:"value"` +} + +func (TaskSetScaleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetScale)(nil)).Elem() +} + +func (i TaskSetScaleArgs) ToTaskSetScaleOutput() TaskSetScaleOutput { + return i.ToTaskSetScaleOutputWithContext(context.Background()) +} + +func (i TaskSetScaleArgs) ToTaskSetScaleOutputWithContext(ctx context.Context) TaskSetScaleOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetScaleOutput) +} + +func (i TaskSetScaleArgs) ToTaskSetScalePtrOutput() TaskSetScalePtrOutput { + return i.ToTaskSetScalePtrOutputWithContext(context.Background()) +} + +func (i TaskSetScaleArgs) ToTaskSetScalePtrOutputWithContext(ctx context.Context) TaskSetScalePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetScaleOutput).ToTaskSetScalePtrOutputWithContext(ctx) +} + +// TaskSetScalePtrInput is an input type that accepts TaskSetScaleArgs, TaskSetScalePtr and TaskSetScalePtrOutput values. +// You can construct a concrete instance of `TaskSetScalePtrInput` via: +// +// TaskSetScaleArgs{...} +// +// or: +// +// nil +type TaskSetScalePtrInput interface { + pulumi.Input + + ToTaskSetScalePtrOutput() TaskSetScalePtrOutput + ToTaskSetScalePtrOutputWithContext(context.Context) TaskSetScalePtrOutput +} + +type taskSetScalePtrType TaskSetScaleArgs + +func TaskSetScalePtr(v *TaskSetScaleArgs) TaskSetScalePtrInput { + return (*taskSetScalePtrType)(v) +} + +func (*taskSetScalePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSetScale)(nil)).Elem() +} + +func (i *taskSetScalePtrType) ToTaskSetScalePtrOutput() TaskSetScalePtrOutput { + return i.ToTaskSetScalePtrOutputWithContext(context.Background()) +} + +func (i *taskSetScalePtrType) ToTaskSetScalePtrOutputWithContext(ctx context.Context) TaskSetScalePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetScalePtrOutput) +} + +type TaskSetScaleOutput struct{ *pulumi.OutputState } + +func (TaskSetScaleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetScale)(nil)).Elem() +} + +func (o TaskSetScaleOutput) ToTaskSetScaleOutput() TaskSetScaleOutput { + return o +} + +func (o TaskSetScaleOutput) ToTaskSetScaleOutputWithContext(ctx context.Context) TaskSetScaleOutput { + return o +} + +func (o TaskSetScaleOutput) ToTaskSetScalePtrOutput() TaskSetScalePtrOutput { + return o.ToTaskSetScalePtrOutputWithContext(context.Background()) +} + +func (o TaskSetScaleOutput) ToTaskSetScalePtrOutputWithContext(ctx context.Context) TaskSetScalePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskSetScale) *TaskSetScale { + return &v + }).(TaskSetScalePtrOutput) +} + +// The unit of measure for the scale value. Default: `PERCENT`. +func (o TaskSetScaleOutput) Unit() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskSetScale) *string { return v.Unit }).(pulumi.StringPtrOutput) +} + +// The value, specified as a percent total of a service's `desiredCount`, to scale the task set. Defaults to `0` if not specified. Accepted values are numbers between 0.0 and 100.0. +func (o TaskSetScaleOutput) Value() pulumi.Float64PtrOutput { + return o.ApplyT(func(v TaskSetScale) *float64 { return v.Value }).(pulumi.Float64PtrOutput) +} + +type TaskSetScalePtrOutput struct{ *pulumi.OutputState } + +func (TaskSetScalePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSetScale)(nil)).Elem() +} + +func (o TaskSetScalePtrOutput) ToTaskSetScalePtrOutput() TaskSetScalePtrOutput { + return o +} + +func (o TaskSetScalePtrOutput) ToTaskSetScalePtrOutputWithContext(ctx context.Context) TaskSetScalePtrOutput { + return o +} + +func (o TaskSetScalePtrOutput) Elem() TaskSetScaleOutput { + return o.ApplyT(func(v *TaskSetScale) TaskSetScale { + if v != nil { + return *v + } + var ret TaskSetScale + return ret + }).(TaskSetScaleOutput) +} + +// The unit of measure for the scale value. Default: `PERCENT`. +func (o TaskSetScalePtrOutput) Unit() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskSetScale) *string { + if v == nil { + return nil + } + return v.Unit + }).(pulumi.StringPtrOutput) +} + +// The value, specified as a percent total of a service's `desiredCount`, to scale the task set. Defaults to `0` if not specified. Accepted values are numbers between 0.0 and 100.0. +func (o TaskSetScalePtrOutput) Value() pulumi.Float64PtrOutput { + return o.ApplyT(func(v *TaskSetScale) *float64 { + if v == nil { + return nil + } + return v.Value + }).(pulumi.Float64PtrOutput) +} + +type TaskSetServiceRegistries struct { + // The container name value, already specified in the task definition, to be used for your service discovery service. + ContainerName *string `pulumi:"containerName"` + // The port value, already specified in the task definition, to be used for your service discovery service. + ContainerPort *int `pulumi:"containerPort"` + // The port value used if your Service Discovery service specified an SRV record. + Port *int `pulumi:"port"` + // The ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service` resource). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html). + RegistryArn string `pulumi:"registryArn"` +} + +// TaskSetServiceRegistriesInput is an input type that accepts TaskSetServiceRegistriesArgs and TaskSetServiceRegistriesOutput values. +// You can construct a concrete instance of `TaskSetServiceRegistriesInput` via: +// +// TaskSetServiceRegistriesArgs{...} +type TaskSetServiceRegistriesInput interface { + pulumi.Input + + ToTaskSetServiceRegistriesOutput() TaskSetServiceRegistriesOutput + ToTaskSetServiceRegistriesOutputWithContext(context.Context) TaskSetServiceRegistriesOutput +} + +type TaskSetServiceRegistriesArgs struct { + // The container name value, already specified in the task definition, to be used for your service discovery service. + ContainerName pulumi.StringPtrInput `pulumi:"containerName"` + // The port value, already specified in the task definition, to be used for your service discovery service. + ContainerPort pulumi.IntPtrInput `pulumi:"containerPort"` + // The port value used if your Service Discovery service specified an SRV record. + Port pulumi.IntPtrInput `pulumi:"port"` + // The ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service` resource). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html). + RegistryArn pulumi.StringInput `pulumi:"registryArn"` +} + +func (TaskSetServiceRegistriesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetServiceRegistries)(nil)).Elem() +} + +func (i TaskSetServiceRegistriesArgs) ToTaskSetServiceRegistriesOutput() TaskSetServiceRegistriesOutput { + return i.ToTaskSetServiceRegistriesOutputWithContext(context.Background()) +} + +func (i TaskSetServiceRegistriesArgs) ToTaskSetServiceRegistriesOutputWithContext(ctx context.Context) TaskSetServiceRegistriesOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetServiceRegistriesOutput) +} + +func (i TaskSetServiceRegistriesArgs) ToTaskSetServiceRegistriesPtrOutput() TaskSetServiceRegistriesPtrOutput { + return i.ToTaskSetServiceRegistriesPtrOutputWithContext(context.Background()) +} + +func (i TaskSetServiceRegistriesArgs) ToTaskSetServiceRegistriesPtrOutputWithContext(ctx context.Context) TaskSetServiceRegistriesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetServiceRegistriesOutput).ToTaskSetServiceRegistriesPtrOutputWithContext(ctx) +} + +// TaskSetServiceRegistriesPtrInput is an input type that accepts TaskSetServiceRegistriesArgs, TaskSetServiceRegistriesPtr and TaskSetServiceRegistriesPtrOutput values. +// You can construct a concrete instance of `TaskSetServiceRegistriesPtrInput` via: +// +// TaskSetServiceRegistriesArgs{...} +// +// or: +// +// nil +type TaskSetServiceRegistriesPtrInput interface { + pulumi.Input + + ToTaskSetServiceRegistriesPtrOutput() TaskSetServiceRegistriesPtrOutput + ToTaskSetServiceRegistriesPtrOutputWithContext(context.Context) TaskSetServiceRegistriesPtrOutput +} + +type taskSetServiceRegistriesPtrType TaskSetServiceRegistriesArgs + +func TaskSetServiceRegistriesPtr(v *TaskSetServiceRegistriesArgs) TaskSetServiceRegistriesPtrInput { + return (*taskSetServiceRegistriesPtrType)(v) +} + +func (*taskSetServiceRegistriesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSetServiceRegistries)(nil)).Elem() +} + +func (i *taskSetServiceRegistriesPtrType) ToTaskSetServiceRegistriesPtrOutput() TaskSetServiceRegistriesPtrOutput { + return i.ToTaskSetServiceRegistriesPtrOutputWithContext(context.Background()) +} + +func (i *taskSetServiceRegistriesPtrType) ToTaskSetServiceRegistriesPtrOutputWithContext(ctx context.Context) TaskSetServiceRegistriesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetServiceRegistriesPtrOutput) +} + +type TaskSetServiceRegistriesOutput struct{ *pulumi.OutputState } + +func (TaskSetServiceRegistriesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskSetServiceRegistries)(nil)).Elem() +} + +func (o TaskSetServiceRegistriesOutput) ToTaskSetServiceRegistriesOutput() TaskSetServiceRegistriesOutput { + return o +} + +func (o TaskSetServiceRegistriesOutput) ToTaskSetServiceRegistriesOutputWithContext(ctx context.Context) TaskSetServiceRegistriesOutput { + return o +} + +func (o TaskSetServiceRegistriesOutput) ToTaskSetServiceRegistriesPtrOutput() TaskSetServiceRegistriesPtrOutput { + return o.ToTaskSetServiceRegistriesPtrOutputWithContext(context.Background()) +} + +func (o TaskSetServiceRegistriesOutput) ToTaskSetServiceRegistriesPtrOutputWithContext(ctx context.Context) TaskSetServiceRegistriesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskSetServiceRegistries) *TaskSetServiceRegistries { + return &v + }).(TaskSetServiceRegistriesPtrOutput) +} + +// The container name value, already specified in the task definition, to be used for your service discovery service. +func (o TaskSetServiceRegistriesOutput) ContainerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskSetServiceRegistries) *string { return v.ContainerName }).(pulumi.StringPtrOutput) +} + +// The port value, already specified in the task definition, to be used for your service discovery service. +func (o TaskSetServiceRegistriesOutput) ContainerPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskSetServiceRegistries) *int { return v.ContainerPort }).(pulumi.IntPtrOutput) +} + +// The port value used if your Service Discovery service specified an SRV record. +func (o TaskSetServiceRegistriesOutput) Port() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskSetServiceRegistries) *int { return v.Port }).(pulumi.IntPtrOutput) +} + +// The ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service` resource). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html). +func (o TaskSetServiceRegistriesOutput) RegistryArn() pulumi.StringOutput { + return o.ApplyT(func(v TaskSetServiceRegistries) string { return v.RegistryArn }).(pulumi.StringOutput) +} + +type TaskSetServiceRegistriesPtrOutput struct{ *pulumi.OutputState } + +func (TaskSetServiceRegistriesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSetServiceRegistries)(nil)).Elem() +} + +func (o TaskSetServiceRegistriesPtrOutput) ToTaskSetServiceRegistriesPtrOutput() TaskSetServiceRegistriesPtrOutput { + return o +} + +func (o TaskSetServiceRegistriesPtrOutput) ToTaskSetServiceRegistriesPtrOutputWithContext(ctx context.Context) TaskSetServiceRegistriesPtrOutput { + return o +} + +func (o TaskSetServiceRegistriesPtrOutput) Elem() TaskSetServiceRegistriesOutput { + return o.ApplyT(func(v *TaskSetServiceRegistries) TaskSetServiceRegistries { + if v != nil { + return *v + } + var ret TaskSetServiceRegistries + return ret + }).(TaskSetServiceRegistriesOutput) +} + +// The container name value, already specified in the task definition, to be used for your service discovery service. +func (o TaskSetServiceRegistriesPtrOutput) ContainerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskSetServiceRegistries) *string { + if v == nil { + return nil + } + return v.ContainerName + }).(pulumi.StringPtrOutput) +} + +// The port value, already specified in the task definition, to be used for your service discovery service. +func (o TaskSetServiceRegistriesPtrOutput) ContainerPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskSetServiceRegistries) *int { + if v == nil { + return nil + } + return v.ContainerPort + }).(pulumi.IntPtrOutput) +} + +// The port value used if your Service Discovery service specified an SRV record. +func (o TaskSetServiceRegistriesPtrOutput) Port() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskSetServiceRegistries) *int { + if v == nil { + return nil + } + return v.Port + }).(pulumi.IntPtrOutput) +} + +// The ARN of the Service Registry. The currently supported service registry is Amazon Route 53 Auto Naming Service(`servicediscovery.Service` resource). For more information, see [Service](https://docs.aws.amazon.com/Route53/latest/APIReference/API_autonaming_Service.html). +func (o TaskSetServiceRegistriesPtrOutput) RegistryArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskSetServiceRegistries) *string { + if v == nil { + return nil + } + return &v.RegistryArn + }).(pulumi.StringPtrOutput) +} + +type GetClusterServiceConnectDefault struct { + Namespace string `pulumi:"namespace"` +} + +// GetClusterServiceConnectDefaultInput is an input type that accepts GetClusterServiceConnectDefaultArgs and GetClusterServiceConnectDefaultOutput values. +// You can construct a concrete instance of `GetClusterServiceConnectDefaultInput` via: +// +// GetClusterServiceConnectDefaultArgs{...} +type GetClusterServiceConnectDefaultInput interface { + pulumi.Input + + ToGetClusterServiceConnectDefaultOutput() GetClusterServiceConnectDefaultOutput + ToGetClusterServiceConnectDefaultOutputWithContext(context.Context) GetClusterServiceConnectDefaultOutput +} + +type GetClusterServiceConnectDefaultArgs struct { + Namespace pulumi.StringInput `pulumi:"namespace"` +} + +func (GetClusterServiceConnectDefaultArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterServiceConnectDefault)(nil)).Elem() +} + +func (i GetClusterServiceConnectDefaultArgs) ToGetClusterServiceConnectDefaultOutput() GetClusterServiceConnectDefaultOutput { + return i.ToGetClusterServiceConnectDefaultOutputWithContext(context.Background()) +} + +func (i GetClusterServiceConnectDefaultArgs) ToGetClusterServiceConnectDefaultOutputWithContext(ctx context.Context) GetClusterServiceConnectDefaultOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterServiceConnectDefaultOutput) +} + +// GetClusterServiceConnectDefaultArrayInput is an input type that accepts GetClusterServiceConnectDefaultArray and GetClusterServiceConnectDefaultArrayOutput values. +// You can construct a concrete instance of `GetClusterServiceConnectDefaultArrayInput` via: +// +// GetClusterServiceConnectDefaultArray{ GetClusterServiceConnectDefaultArgs{...} } +type GetClusterServiceConnectDefaultArrayInput interface { + pulumi.Input + + ToGetClusterServiceConnectDefaultArrayOutput() GetClusterServiceConnectDefaultArrayOutput + ToGetClusterServiceConnectDefaultArrayOutputWithContext(context.Context) GetClusterServiceConnectDefaultArrayOutput +} + +type GetClusterServiceConnectDefaultArray []GetClusterServiceConnectDefaultInput + +func (GetClusterServiceConnectDefaultArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterServiceConnectDefault)(nil)).Elem() +} + +func (i GetClusterServiceConnectDefaultArray) ToGetClusterServiceConnectDefaultArrayOutput() GetClusterServiceConnectDefaultArrayOutput { + return i.ToGetClusterServiceConnectDefaultArrayOutputWithContext(context.Background()) +} + +func (i GetClusterServiceConnectDefaultArray) ToGetClusterServiceConnectDefaultArrayOutputWithContext(ctx context.Context) GetClusterServiceConnectDefaultArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterServiceConnectDefaultArrayOutput) +} + +type GetClusterServiceConnectDefaultOutput struct{ *pulumi.OutputState } + +func (GetClusterServiceConnectDefaultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterServiceConnectDefault)(nil)).Elem() +} + +func (o GetClusterServiceConnectDefaultOutput) ToGetClusterServiceConnectDefaultOutput() GetClusterServiceConnectDefaultOutput { + return o +} + +func (o GetClusterServiceConnectDefaultOutput) ToGetClusterServiceConnectDefaultOutputWithContext(ctx context.Context) GetClusterServiceConnectDefaultOutput { + return o +} + +func (o GetClusterServiceConnectDefaultOutput) Namespace() pulumi.StringOutput { + return o.ApplyT(func(v GetClusterServiceConnectDefault) string { return v.Namespace }).(pulumi.StringOutput) +} + +type GetClusterServiceConnectDefaultArrayOutput struct{ *pulumi.OutputState } + +func (GetClusterServiceConnectDefaultArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterServiceConnectDefault)(nil)).Elem() +} + +func (o GetClusterServiceConnectDefaultArrayOutput) ToGetClusterServiceConnectDefaultArrayOutput() GetClusterServiceConnectDefaultArrayOutput { + return o +} + +func (o GetClusterServiceConnectDefaultArrayOutput) ToGetClusterServiceConnectDefaultArrayOutputWithContext(ctx context.Context) GetClusterServiceConnectDefaultArrayOutput { + return o +} + +func (o GetClusterServiceConnectDefaultArrayOutput) Index(i pulumi.IntInput) GetClusterServiceConnectDefaultOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetClusterServiceConnectDefault { + return vs[0].([]GetClusterServiceConnectDefault)[vs[1].(int)] + }).(GetClusterServiceConnectDefaultOutput) +} + +type GetClusterSetting struct { + Name string `pulumi:"name"` + Value string `pulumi:"value"` +} + +// GetClusterSettingInput is an input type that accepts GetClusterSettingArgs and GetClusterSettingOutput values. +// You can construct a concrete instance of `GetClusterSettingInput` via: +// +// GetClusterSettingArgs{...} +type GetClusterSettingInput interface { + pulumi.Input + + ToGetClusterSettingOutput() GetClusterSettingOutput + ToGetClusterSettingOutputWithContext(context.Context) GetClusterSettingOutput +} + +type GetClusterSettingArgs struct { + Name pulumi.StringInput `pulumi:"name"` + Value pulumi.StringInput `pulumi:"value"` +} + +func (GetClusterSettingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterSetting)(nil)).Elem() +} + +func (i GetClusterSettingArgs) ToGetClusterSettingOutput() GetClusterSettingOutput { + return i.ToGetClusterSettingOutputWithContext(context.Background()) +} + +func (i GetClusterSettingArgs) ToGetClusterSettingOutputWithContext(ctx context.Context) GetClusterSettingOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterSettingOutput) +} + +// GetClusterSettingArrayInput is an input type that accepts GetClusterSettingArray and GetClusterSettingArrayOutput values. +// You can construct a concrete instance of `GetClusterSettingArrayInput` via: +// +// GetClusterSettingArray{ GetClusterSettingArgs{...} } +type GetClusterSettingArrayInput interface { + pulumi.Input + + ToGetClusterSettingArrayOutput() GetClusterSettingArrayOutput + ToGetClusterSettingArrayOutputWithContext(context.Context) GetClusterSettingArrayOutput +} + +type GetClusterSettingArray []GetClusterSettingInput + +func (GetClusterSettingArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterSetting)(nil)).Elem() +} + +func (i GetClusterSettingArray) ToGetClusterSettingArrayOutput() GetClusterSettingArrayOutput { + return i.ToGetClusterSettingArrayOutputWithContext(context.Background()) +} + +func (i GetClusterSettingArray) ToGetClusterSettingArrayOutputWithContext(ctx context.Context) GetClusterSettingArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetClusterSettingArrayOutput) +} + +type GetClusterSettingOutput struct{ *pulumi.OutputState } + +func (GetClusterSettingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetClusterSetting)(nil)).Elem() +} + +func (o GetClusterSettingOutput) ToGetClusterSettingOutput() GetClusterSettingOutput { + return o +} + +func (o GetClusterSettingOutput) ToGetClusterSettingOutputWithContext(ctx context.Context) GetClusterSettingOutput { + return o +} + +func (o GetClusterSettingOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetClusterSetting) string { return v.Name }).(pulumi.StringOutput) +} + +func (o GetClusterSettingOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v GetClusterSetting) string { return v.Value }).(pulumi.StringOutput) +} + +type GetClusterSettingArrayOutput struct{ *pulumi.OutputState } + +func (GetClusterSettingArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetClusterSetting)(nil)).Elem() +} + +func (o GetClusterSettingArrayOutput) ToGetClusterSettingArrayOutput() GetClusterSettingArrayOutput { + return o +} + +func (o GetClusterSettingArrayOutput) ToGetClusterSettingArrayOutputWithContext(ctx context.Context) GetClusterSettingArrayOutput { + return o +} + +func (o GetClusterSettingArrayOutput) Index(i pulumi.IntInput) GetClusterSettingOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetClusterSetting { + return vs[0].([]GetClusterSetting)[vs[1].(int)] + }).(GetClusterSettingOutput) +} + +type GetTaskExecutionCapacityProviderStrategy struct { + // The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. + Base *int `pulumi:"base"` + // Name of the capacity provider. + CapacityProvider string `pulumi:"capacityProvider"` + // The relative percentage of the total number of launched tasks that should use the specified capacity provider. The `weight` value is taken into consideration after the `base` count of tasks has been satisfied. Defaults to `0`. + Weight *int `pulumi:"weight"` +} + +// GetTaskExecutionCapacityProviderStrategyInput is an input type that accepts GetTaskExecutionCapacityProviderStrategyArgs and GetTaskExecutionCapacityProviderStrategyOutput values. +// You can construct a concrete instance of `GetTaskExecutionCapacityProviderStrategyInput` via: +// +// GetTaskExecutionCapacityProviderStrategyArgs{...} +type GetTaskExecutionCapacityProviderStrategyInput interface { + pulumi.Input + + ToGetTaskExecutionCapacityProviderStrategyOutput() GetTaskExecutionCapacityProviderStrategyOutput + ToGetTaskExecutionCapacityProviderStrategyOutputWithContext(context.Context) GetTaskExecutionCapacityProviderStrategyOutput +} + +type GetTaskExecutionCapacityProviderStrategyArgs struct { + // The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. + Base pulumi.IntPtrInput `pulumi:"base"` + // Name of the capacity provider. + CapacityProvider pulumi.StringInput `pulumi:"capacityProvider"` + // The relative percentage of the total number of launched tasks that should use the specified capacity provider. The `weight` value is taken into consideration after the `base` count of tasks has been satisfied. Defaults to `0`. + Weight pulumi.IntPtrInput `pulumi:"weight"` +} + +func (GetTaskExecutionCapacityProviderStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionCapacityProviderStrategy)(nil)).Elem() +} + +func (i GetTaskExecutionCapacityProviderStrategyArgs) ToGetTaskExecutionCapacityProviderStrategyOutput() GetTaskExecutionCapacityProviderStrategyOutput { + return i.ToGetTaskExecutionCapacityProviderStrategyOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionCapacityProviderStrategyArgs) ToGetTaskExecutionCapacityProviderStrategyOutputWithContext(ctx context.Context) GetTaskExecutionCapacityProviderStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionCapacityProviderStrategyOutput) +} + +// GetTaskExecutionCapacityProviderStrategyArrayInput is an input type that accepts GetTaskExecutionCapacityProviderStrategyArray and GetTaskExecutionCapacityProviderStrategyArrayOutput values. +// You can construct a concrete instance of `GetTaskExecutionCapacityProviderStrategyArrayInput` via: +// +// GetTaskExecutionCapacityProviderStrategyArray{ GetTaskExecutionCapacityProviderStrategyArgs{...} } +type GetTaskExecutionCapacityProviderStrategyArrayInput interface { + pulumi.Input + + ToGetTaskExecutionCapacityProviderStrategyArrayOutput() GetTaskExecutionCapacityProviderStrategyArrayOutput + ToGetTaskExecutionCapacityProviderStrategyArrayOutputWithContext(context.Context) GetTaskExecutionCapacityProviderStrategyArrayOutput +} + +type GetTaskExecutionCapacityProviderStrategyArray []GetTaskExecutionCapacityProviderStrategyInput + +func (GetTaskExecutionCapacityProviderStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionCapacityProviderStrategy)(nil)).Elem() +} + +func (i GetTaskExecutionCapacityProviderStrategyArray) ToGetTaskExecutionCapacityProviderStrategyArrayOutput() GetTaskExecutionCapacityProviderStrategyArrayOutput { + return i.ToGetTaskExecutionCapacityProviderStrategyArrayOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionCapacityProviderStrategyArray) ToGetTaskExecutionCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) GetTaskExecutionCapacityProviderStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionCapacityProviderStrategyArrayOutput) +} + +type GetTaskExecutionCapacityProviderStrategyOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionCapacityProviderStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionCapacityProviderStrategy)(nil)).Elem() +} + +func (o GetTaskExecutionCapacityProviderStrategyOutput) ToGetTaskExecutionCapacityProviderStrategyOutput() GetTaskExecutionCapacityProviderStrategyOutput { + return o +} + +func (o GetTaskExecutionCapacityProviderStrategyOutput) ToGetTaskExecutionCapacityProviderStrategyOutputWithContext(ctx context.Context) GetTaskExecutionCapacityProviderStrategyOutput { + return o +} + +// The number of tasks, at a minimum, to run on the specified capacity provider. Only one capacity provider in a capacity provider strategy can have a base defined. Defaults to `0`. +func (o GetTaskExecutionCapacityProviderStrategyOutput) Base() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetTaskExecutionCapacityProviderStrategy) *int { return v.Base }).(pulumi.IntPtrOutput) +} + +// Name of the capacity provider. +func (o GetTaskExecutionCapacityProviderStrategyOutput) CapacityProvider() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionCapacityProviderStrategy) string { return v.CapacityProvider }).(pulumi.StringOutput) +} + +// The relative percentage of the total number of launched tasks that should use the specified capacity provider. The `weight` value is taken into consideration after the `base` count of tasks has been satisfied. Defaults to `0`. +func (o GetTaskExecutionCapacityProviderStrategyOutput) Weight() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetTaskExecutionCapacityProviderStrategy) *int { return v.Weight }).(pulumi.IntPtrOutput) +} + +type GetTaskExecutionCapacityProviderStrategyArrayOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionCapacityProviderStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionCapacityProviderStrategy)(nil)).Elem() +} + +func (o GetTaskExecutionCapacityProviderStrategyArrayOutput) ToGetTaskExecutionCapacityProviderStrategyArrayOutput() GetTaskExecutionCapacityProviderStrategyArrayOutput { + return o +} + +func (o GetTaskExecutionCapacityProviderStrategyArrayOutput) ToGetTaskExecutionCapacityProviderStrategyArrayOutputWithContext(ctx context.Context) GetTaskExecutionCapacityProviderStrategyArrayOutput { + return o +} + +func (o GetTaskExecutionCapacityProviderStrategyArrayOutput) Index(i pulumi.IntInput) GetTaskExecutionCapacityProviderStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetTaskExecutionCapacityProviderStrategy { + return vs[0].([]GetTaskExecutionCapacityProviderStrategy)[vs[1].(int)] + }).(GetTaskExecutionCapacityProviderStrategyOutput) +} + +type GetTaskExecutionNetworkConfiguration struct { + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. + // + // For more information, see the [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) documentation. + AssignPublicIp *bool `pulumi:"assignPublicIp"` + // Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups []string `pulumi:"securityGroups"` + // Subnets associated with the task or service. + Subnets []string `pulumi:"subnets"` +} + +// GetTaskExecutionNetworkConfigurationInput is an input type that accepts GetTaskExecutionNetworkConfigurationArgs and GetTaskExecutionNetworkConfigurationOutput values. +// You can construct a concrete instance of `GetTaskExecutionNetworkConfigurationInput` via: +// +// GetTaskExecutionNetworkConfigurationArgs{...} +type GetTaskExecutionNetworkConfigurationInput interface { + pulumi.Input + + ToGetTaskExecutionNetworkConfigurationOutput() GetTaskExecutionNetworkConfigurationOutput + ToGetTaskExecutionNetworkConfigurationOutputWithContext(context.Context) GetTaskExecutionNetworkConfigurationOutput +} + +type GetTaskExecutionNetworkConfigurationArgs struct { + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. + // + // For more information, see the [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) documentation. + AssignPublicIp pulumi.BoolPtrInput `pulumi:"assignPublicIp"` + // Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. + SecurityGroups pulumi.StringArrayInput `pulumi:"securityGroups"` + // Subnets associated with the task or service. + Subnets pulumi.StringArrayInput `pulumi:"subnets"` +} + +func (GetTaskExecutionNetworkConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionNetworkConfiguration)(nil)).Elem() +} + +func (i GetTaskExecutionNetworkConfigurationArgs) ToGetTaskExecutionNetworkConfigurationOutput() GetTaskExecutionNetworkConfigurationOutput { + return i.ToGetTaskExecutionNetworkConfigurationOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionNetworkConfigurationArgs) ToGetTaskExecutionNetworkConfigurationOutputWithContext(ctx context.Context) GetTaskExecutionNetworkConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionNetworkConfigurationOutput) +} + +func (i GetTaskExecutionNetworkConfigurationArgs) ToGetTaskExecutionNetworkConfigurationPtrOutput() GetTaskExecutionNetworkConfigurationPtrOutput { + return i.ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionNetworkConfigurationArgs) ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(ctx context.Context) GetTaskExecutionNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionNetworkConfigurationOutput).ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(ctx) +} + +// GetTaskExecutionNetworkConfigurationPtrInput is an input type that accepts GetTaskExecutionNetworkConfigurationArgs, GetTaskExecutionNetworkConfigurationPtr and GetTaskExecutionNetworkConfigurationPtrOutput values. +// You can construct a concrete instance of `GetTaskExecutionNetworkConfigurationPtrInput` via: +// +// GetTaskExecutionNetworkConfigurationArgs{...} +// +// or: +// +// nil +type GetTaskExecutionNetworkConfigurationPtrInput interface { + pulumi.Input + + ToGetTaskExecutionNetworkConfigurationPtrOutput() GetTaskExecutionNetworkConfigurationPtrOutput + ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(context.Context) GetTaskExecutionNetworkConfigurationPtrOutput +} + +type getTaskExecutionNetworkConfigurationPtrType GetTaskExecutionNetworkConfigurationArgs + +func GetTaskExecutionNetworkConfigurationPtr(v *GetTaskExecutionNetworkConfigurationArgs) GetTaskExecutionNetworkConfigurationPtrInput { + return (*getTaskExecutionNetworkConfigurationPtrType)(v) +} + +func (*getTaskExecutionNetworkConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetTaskExecutionNetworkConfiguration)(nil)).Elem() +} + +func (i *getTaskExecutionNetworkConfigurationPtrType) ToGetTaskExecutionNetworkConfigurationPtrOutput() GetTaskExecutionNetworkConfigurationPtrOutput { + return i.ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *getTaskExecutionNetworkConfigurationPtrType) ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(ctx context.Context) GetTaskExecutionNetworkConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionNetworkConfigurationPtrOutput) +} + +type GetTaskExecutionNetworkConfigurationOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionNetworkConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionNetworkConfiguration)(nil)).Elem() +} + +func (o GetTaskExecutionNetworkConfigurationOutput) ToGetTaskExecutionNetworkConfigurationOutput() GetTaskExecutionNetworkConfigurationOutput { + return o +} + +func (o GetTaskExecutionNetworkConfigurationOutput) ToGetTaskExecutionNetworkConfigurationOutputWithContext(ctx context.Context) GetTaskExecutionNetworkConfigurationOutput { + return o +} + +func (o GetTaskExecutionNetworkConfigurationOutput) ToGetTaskExecutionNetworkConfigurationPtrOutput() GetTaskExecutionNetworkConfigurationPtrOutput { + return o.ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(context.Background()) +} + +func (o GetTaskExecutionNetworkConfigurationOutput) ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(ctx context.Context) GetTaskExecutionNetworkConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetTaskExecutionNetworkConfiguration) *GetTaskExecutionNetworkConfiguration { + return &v + }).(GetTaskExecutionNetworkConfigurationPtrOutput) +} + +// Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. +// +// For more information, see the [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) documentation. +func (o GetTaskExecutionNetworkConfigurationOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetTaskExecutionNetworkConfiguration) *bool { return v.AssignPublicIp }).(pulumi.BoolPtrOutput) +} + +// Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. +func (o GetTaskExecutionNetworkConfigurationOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetTaskExecutionNetworkConfiguration) []string { return v.SecurityGroups }).(pulumi.StringArrayOutput) +} + +// Subnets associated with the task or service. +func (o GetTaskExecutionNetworkConfigurationOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetTaskExecutionNetworkConfiguration) []string { return v.Subnets }).(pulumi.StringArrayOutput) +} + +type GetTaskExecutionNetworkConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionNetworkConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetTaskExecutionNetworkConfiguration)(nil)).Elem() +} + +func (o GetTaskExecutionNetworkConfigurationPtrOutput) ToGetTaskExecutionNetworkConfigurationPtrOutput() GetTaskExecutionNetworkConfigurationPtrOutput { + return o +} + +func (o GetTaskExecutionNetworkConfigurationPtrOutput) ToGetTaskExecutionNetworkConfigurationPtrOutputWithContext(ctx context.Context) GetTaskExecutionNetworkConfigurationPtrOutput { + return o +} + +func (o GetTaskExecutionNetworkConfigurationPtrOutput) Elem() GetTaskExecutionNetworkConfigurationOutput { + return o.ApplyT(func(v *GetTaskExecutionNetworkConfiguration) GetTaskExecutionNetworkConfiguration { + if v != nil { + return *v + } + var ret GetTaskExecutionNetworkConfiguration + return ret + }).(GetTaskExecutionNetworkConfigurationOutput) +} + +// Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. +// +// For more information, see the [Task Networking](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) documentation. +func (o GetTaskExecutionNetworkConfigurationPtrOutput) AssignPublicIp() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *GetTaskExecutionNetworkConfiguration) *bool { + if v == nil { + return nil + } + return v.AssignPublicIp + }).(pulumi.BoolPtrOutput) +} + +// Security groups associated with the task or service. If you do not specify a security group, the default security group for the VPC is used. +func (o GetTaskExecutionNetworkConfigurationPtrOutput) SecurityGroups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *GetTaskExecutionNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.SecurityGroups + }).(pulumi.StringArrayOutput) +} + +// Subnets associated with the task or service. +func (o GetTaskExecutionNetworkConfigurationPtrOutput) Subnets() pulumi.StringArrayOutput { + return o.ApplyT(func(v *GetTaskExecutionNetworkConfiguration) []string { + if v == nil { + return nil + } + return v.Subnets + }).(pulumi.StringArrayOutput) +} + +type GetTaskExecutionOverrides struct { + // One or more container overrides that are sent to a task. See below. + ContainerOverrides []GetTaskExecutionOverridesContainerOverride `pulumi:"containerOverrides"` + // The CPU override for the task. + Cpu *string `pulumi:"cpu"` + // Amazon Resource Name (ARN) of the task execution role override for the task. + ExecutionRoleArn *string `pulumi:"executionRoleArn"` + // Elastic Inference accelerator override for the task. See below. + InferenceAcceleratorOverrides []GetTaskExecutionOverridesInferenceAcceleratorOverride `pulumi:"inferenceAcceleratorOverrides"` + // The memory override for the task. + Memory *string `pulumi:"memory"` + // Amazon Resource Name (ARN) of the role that containers in this task can assume. + TaskRoleArn *string `pulumi:"taskRoleArn"` +} + +// GetTaskExecutionOverridesInput is an input type that accepts GetTaskExecutionOverridesArgs and GetTaskExecutionOverridesOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesInput` via: +// +// GetTaskExecutionOverridesArgs{...} +type GetTaskExecutionOverridesInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesOutput() GetTaskExecutionOverridesOutput + ToGetTaskExecutionOverridesOutputWithContext(context.Context) GetTaskExecutionOverridesOutput +} + +type GetTaskExecutionOverridesArgs struct { + // One or more container overrides that are sent to a task. See below. + ContainerOverrides GetTaskExecutionOverridesContainerOverrideArrayInput `pulumi:"containerOverrides"` + // The CPU override for the task. + Cpu pulumi.StringPtrInput `pulumi:"cpu"` + // Amazon Resource Name (ARN) of the task execution role override for the task. + ExecutionRoleArn pulumi.StringPtrInput `pulumi:"executionRoleArn"` + // Elastic Inference accelerator override for the task. See below. + InferenceAcceleratorOverrides GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayInput `pulumi:"inferenceAcceleratorOverrides"` + // The memory override for the task. + Memory pulumi.StringPtrInput `pulumi:"memory"` + // Amazon Resource Name (ARN) of the role that containers in this task can assume. + TaskRoleArn pulumi.StringPtrInput `pulumi:"taskRoleArn"` +} + +func (GetTaskExecutionOverridesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverrides)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesArgs) ToGetTaskExecutionOverridesOutput() GetTaskExecutionOverridesOutput { + return i.ToGetTaskExecutionOverridesOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesArgs) ToGetTaskExecutionOverridesOutputWithContext(ctx context.Context) GetTaskExecutionOverridesOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesOutput) +} + +func (i GetTaskExecutionOverridesArgs) ToGetTaskExecutionOverridesPtrOutput() GetTaskExecutionOverridesPtrOutput { + return i.ToGetTaskExecutionOverridesPtrOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesArgs) ToGetTaskExecutionOverridesPtrOutputWithContext(ctx context.Context) GetTaskExecutionOverridesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesOutput).ToGetTaskExecutionOverridesPtrOutputWithContext(ctx) +} + +// GetTaskExecutionOverridesPtrInput is an input type that accepts GetTaskExecutionOverridesArgs, GetTaskExecutionOverridesPtr and GetTaskExecutionOverridesPtrOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesPtrInput` via: +// +// GetTaskExecutionOverridesArgs{...} +// +// or: +// +// nil +type GetTaskExecutionOverridesPtrInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesPtrOutput() GetTaskExecutionOverridesPtrOutput + ToGetTaskExecutionOverridesPtrOutputWithContext(context.Context) GetTaskExecutionOverridesPtrOutput +} + +type getTaskExecutionOverridesPtrType GetTaskExecutionOverridesArgs + +func GetTaskExecutionOverridesPtr(v *GetTaskExecutionOverridesArgs) GetTaskExecutionOverridesPtrInput { + return (*getTaskExecutionOverridesPtrType)(v) +} + +func (*getTaskExecutionOverridesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**GetTaskExecutionOverrides)(nil)).Elem() +} + +func (i *getTaskExecutionOverridesPtrType) ToGetTaskExecutionOverridesPtrOutput() GetTaskExecutionOverridesPtrOutput { + return i.ToGetTaskExecutionOverridesPtrOutputWithContext(context.Background()) +} + +func (i *getTaskExecutionOverridesPtrType) ToGetTaskExecutionOverridesPtrOutputWithContext(ctx context.Context) GetTaskExecutionOverridesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesPtrOutput) +} + +type GetTaskExecutionOverridesOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverrides)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesOutput) ToGetTaskExecutionOverridesOutput() GetTaskExecutionOverridesOutput { + return o +} + +func (o GetTaskExecutionOverridesOutput) ToGetTaskExecutionOverridesOutputWithContext(ctx context.Context) GetTaskExecutionOverridesOutput { + return o +} + +func (o GetTaskExecutionOverridesOutput) ToGetTaskExecutionOverridesPtrOutput() GetTaskExecutionOverridesPtrOutput { + return o.ToGetTaskExecutionOverridesPtrOutputWithContext(context.Background()) +} + +func (o GetTaskExecutionOverridesOutput) ToGetTaskExecutionOverridesPtrOutputWithContext(ctx context.Context) GetTaskExecutionOverridesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v GetTaskExecutionOverrides) *GetTaskExecutionOverrides { + return &v + }).(GetTaskExecutionOverridesPtrOutput) +} + +// One or more container overrides that are sent to a task. See below. +func (o GetTaskExecutionOverridesOutput) ContainerOverrides() GetTaskExecutionOverridesContainerOverrideArrayOutput { + return o.ApplyT(func(v GetTaskExecutionOverrides) []GetTaskExecutionOverridesContainerOverride { + return v.ContainerOverrides + }).(GetTaskExecutionOverridesContainerOverrideArrayOutput) +} + +// The CPU override for the task. +func (o GetTaskExecutionOverridesOutput) Cpu() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverrides) *string { return v.Cpu }).(pulumi.StringPtrOutput) +} + +// Amazon Resource Name (ARN) of the task execution role override for the task. +func (o GetTaskExecutionOverridesOutput) ExecutionRoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverrides) *string { return v.ExecutionRoleArn }).(pulumi.StringPtrOutput) +} + +// Elastic Inference accelerator override for the task. See below. +func (o GetTaskExecutionOverridesOutput) InferenceAcceleratorOverrides() GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput { + return o.ApplyT(func(v GetTaskExecutionOverrides) []GetTaskExecutionOverridesInferenceAcceleratorOverride { + return v.InferenceAcceleratorOverrides + }).(GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput) +} + +// The memory override for the task. +func (o GetTaskExecutionOverridesOutput) Memory() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverrides) *string { return v.Memory }).(pulumi.StringPtrOutput) +} + +// Amazon Resource Name (ARN) of the role that containers in this task can assume. +func (o GetTaskExecutionOverridesOutput) TaskRoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverrides) *string { return v.TaskRoleArn }).(pulumi.StringPtrOutput) +} + +type GetTaskExecutionOverridesPtrOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GetTaskExecutionOverrides)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesPtrOutput) ToGetTaskExecutionOverridesPtrOutput() GetTaskExecutionOverridesPtrOutput { + return o +} + +func (o GetTaskExecutionOverridesPtrOutput) ToGetTaskExecutionOverridesPtrOutputWithContext(ctx context.Context) GetTaskExecutionOverridesPtrOutput { + return o +} + +func (o GetTaskExecutionOverridesPtrOutput) Elem() GetTaskExecutionOverridesOutput { + return o.ApplyT(func(v *GetTaskExecutionOverrides) GetTaskExecutionOverrides { + if v != nil { + return *v + } + var ret GetTaskExecutionOverrides + return ret + }).(GetTaskExecutionOverridesOutput) +} + +// One or more container overrides that are sent to a task. See below. +func (o GetTaskExecutionOverridesPtrOutput) ContainerOverrides() GetTaskExecutionOverridesContainerOverrideArrayOutput { + return o.ApplyT(func(v *GetTaskExecutionOverrides) []GetTaskExecutionOverridesContainerOverride { + if v == nil { + return nil + } + return v.ContainerOverrides + }).(GetTaskExecutionOverridesContainerOverrideArrayOutput) +} + +// The CPU override for the task. +func (o GetTaskExecutionOverridesPtrOutput) Cpu() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetTaskExecutionOverrides) *string { + if v == nil { + return nil + } + return v.Cpu + }).(pulumi.StringPtrOutput) +} + +// Amazon Resource Name (ARN) of the task execution role override for the task. +func (o GetTaskExecutionOverridesPtrOutput) ExecutionRoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetTaskExecutionOverrides) *string { + if v == nil { + return nil + } + return v.ExecutionRoleArn + }).(pulumi.StringPtrOutput) +} + +// Elastic Inference accelerator override for the task. See below. +func (o GetTaskExecutionOverridesPtrOutput) InferenceAcceleratorOverrides() GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput { + return o.ApplyT(func(v *GetTaskExecutionOverrides) []GetTaskExecutionOverridesInferenceAcceleratorOverride { + if v == nil { + return nil + } + return v.InferenceAcceleratorOverrides + }).(GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput) +} + +// The memory override for the task. +func (o GetTaskExecutionOverridesPtrOutput) Memory() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetTaskExecutionOverrides) *string { + if v == nil { + return nil + } + return v.Memory + }).(pulumi.StringPtrOutput) +} + +// Amazon Resource Name (ARN) of the role that containers in this task can assume. +func (o GetTaskExecutionOverridesPtrOutput) TaskRoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *GetTaskExecutionOverrides) *string { + if v == nil { + return nil + } + return v.TaskRoleArn + }).(pulumi.StringPtrOutput) +} + +type GetTaskExecutionOverridesContainerOverride struct { + // The command to send to the container that overrides the default command from the Docker image or the task definition. + Commands []string `pulumi:"commands"` + // The number of cpu units reserved for the container, instead of the default value from the task definition. + Cpu *int `pulumi:"cpu"` + // The environment variables to send to the container. You can add new environment variables, which are added to the container at launch, or you can override the existing environment variables from the Docker image or the task definition. See below. + Environments []GetTaskExecutionOverridesContainerOverrideEnvironment `pulumi:"environments"` + // The hard limit (in MiB) of memory to present to the container, instead of the default value from the task definition. If your container attempts to exceed the memory specified here, the container is killed. + Memory *int `pulumi:"memory"` + // The soft limit (in MiB) of memory to reserve for the container, instead of the default value from the task definition. + MemoryReservation *int `pulumi:"memoryReservation"` + // The name of the container that receives the override. This parameter is required if any override is specified. + Name string `pulumi:"name"` + // The type and amount of a resource to assign to a container, instead of the default value from the task definition. The only supported resource is a GPU. See below. + ResourceRequirements []GetTaskExecutionOverridesContainerOverrideResourceRequirement `pulumi:"resourceRequirements"` +} + +// GetTaskExecutionOverridesContainerOverrideInput is an input type that accepts GetTaskExecutionOverridesContainerOverrideArgs and GetTaskExecutionOverridesContainerOverrideOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesContainerOverrideInput` via: +// +// GetTaskExecutionOverridesContainerOverrideArgs{...} +type GetTaskExecutionOverridesContainerOverrideInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesContainerOverrideOutput() GetTaskExecutionOverridesContainerOverrideOutput + ToGetTaskExecutionOverridesContainerOverrideOutputWithContext(context.Context) GetTaskExecutionOverridesContainerOverrideOutput +} + +type GetTaskExecutionOverridesContainerOverrideArgs struct { + // The command to send to the container that overrides the default command from the Docker image or the task definition. + Commands pulumi.StringArrayInput `pulumi:"commands"` + // The number of cpu units reserved for the container, instead of the default value from the task definition. + Cpu pulumi.IntPtrInput `pulumi:"cpu"` + // The environment variables to send to the container. You can add new environment variables, which are added to the container at launch, or you can override the existing environment variables from the Docker image or the task definition. See below. + Environments GetTaskExecutionOverridesContainerOverrideEnvironmentArrayInput `pulumi:"environments"` + // The hard limit (in MiB) of memory to present to the container, instead of the default value from the task definition. If your container attempts to exceed the memory specified here, the container is killed. + Memory pulumi.IntPtrInput `pulumi:"memory"` + // The soft limit (in MiB) of memory to reserve for the container, instead of the default value from the task definition. + MemoryReservation pulumi.IntPtrInput `pulumi:"memoryReservation"` + // The name of the container that receives the override. This parameter is required if any override is specified. + Name pulumi.StringInput `pulumi:"name"` + // The type and amount of a resource to assign to a container, instead of the default value from the task definition. The only supported resource is a GPU. See below. + ResourceRequirements GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayInput `pulumi:"resourceRequirements"` +} + +func (GetTaskExecutionOverridesContainerOverrideArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesContainerOverride)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesContainerOverrideArgs) ToGetTaskExecutionOverridesContainerOverrideOutput() GetTaskExecutionOverridesContainerOverrideOutput { + return i.ToGetTaskExecutionOverridesContainerOverrideOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesContainerOverrideArgs) ToGetTaskExecutionOverridesContainerOverrideOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesContainerOverrideOutput) +} + +// GetTaskExecutionOverridesContainerOverrideArrayInput is an input type that accepts GetTaskExecutionOverridesContainerOverrideArray and GetTaskExecutionOverridesContainerOverrideArrayOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesContainerOverrideArrayInput` via: +// +// GetTaskExecutionOverridesContainerOverrideArray{ GetTaskExecutionOverridesContainerOverrideArgs{...} } +type GetTaskExecutionOverridesContainerOverrideArrayInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesContainerOverrideArrayOutput() GetTaskExecutionOverridesContainerOverrideArrayOutput + ToGetTaskExecutionOverridesContainerOverrideArrayOutputWithContext(context.Context) GetTaskExecutionOverridesContainerOverrideArrayOutput +} + +type GetTaskExecutionOverridesContainerOverrideArray []GetTaskExecutionOverridesContainerOverrideInput + +func (GetTaskExecutionOverridesContainerOverrideArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesContainerOverride)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesContainerOverrideArray) ToGetTaskExecutionOverridesContainerOverrideArrayOutput() GetTaskExecutionOverridesContainerOverrideArrayOutput { + return i.ToGetTaskExecutionOverridesContainerOverrideArrayOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesContainerOverrideArray) ToGetTaskExecutionOverridesContainerOverrideArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesContainerOverrideArrayOutput) +} + +type GetTaskExecutionOverridesContainerOverrideOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesContainerOverrideOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesContainerOverride)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesContainerOverrideOutput) ToGetTaskExecutionOverridesContainerOverrideOutput() GetTaskExecutionOverridesContainerOverrideOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideOutput) ToGetTaskExecutionOverridesContainerOverrideOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideOutput { + return o +} + +// The command to send to the container that overrides the default command from the Docker image or the task definition. +func (o GetTaskExecutionOverridesContainerOverrideOutput) Commands() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverride) []string { return v.Commands }).(pulumi.StringArrayOutput) +} + +// The number of cpu units reserved for the container, instead of the default value from the task definition. +func (o GetTaskExecutionOverridesContainerOverrideOutput) Cpu() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverride) *int { return v.Cpu }).(pulumi.IntPtrOutput) +} + +// The environment variables to send to the container. You can add new environment variables, which are added to the container at launch, or you can override the existing environment variables from the Docker image or the task definition. See below. +func (o GetTaskExecutionOverridesContainerOverrideOutput) Environments() GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverride) []GetTaskExecutionOverridesContainerOverrideEnvironment { + return v.Environments + }).(GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput) +} + +// The hard limit (in MiB) of memory to present to the container, instead of the default value from the task definition. If your container attempts to exceed the memory specified here, the container is killed. +func (o GetTaskExecutionOverridesContainerOverrideOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverride) *int { return v.Memory }).(pulumi.IntPtrOutput) +} + +// The soft limit (in MiB) of memory to reserve for the container, instead of the default value from the task definition. +func (o GetTaskExecutionOverridesContainerOverrideOutput) MemoryReservation() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverride) *int { return v.MemoryReservation }).(pulumi.IntPtrOutput) +} + +// The name of the container that receives the override. This parameter is required if any override is specified. +func (o GetTaskExecutionOverridesContainerOverrideOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverride) string { return v.Name }).(pulumi.StringOutput) +} + +// The type and amount of a resource to assign to a container, instead of the default value from the task definition. The only supported resource is a GPU. See below. +func (o GetTaskExecutionOverridesContainerOverrideOutput) ResourceRequirements() GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverride) []GetTaskExecutionOverridesContainerOverrideResourceRequirement { + return v.ResourceRequirements + }).(GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput) +} + +type GetTaskExecutionOverridesContainerOverrideArrayOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesContainerOverrideArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesContainerOverride)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesContainerOverrideArrayOutput) ToGetTaskExecutionOverridesContainerOverrideArrayOutput() GetTaskExecutionOverridesContainerOverrideArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideArrayOutput) ToGetTaskExecutionOverridesContainerOverrideArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideArrayOutput) Index(i pulumi.IntInput) GetTaskExecutionOverridesContainerOverrideOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetTaskExecutionOverridesContainerOverride { + return vs[0].([]GetTaskExecutionOverridesContainerOverride)[vs[1].(int)] + }).(GetTaskExecutionOverridesContainerOverrideOutput) +} + +type GetTaskExecutionOverridesContainerOverrideEnvironment struct { + // The name of the key-value pair. For environment variables, this is the name of the environment variable. + Key string `pulumi:"key"` + // The value of the key-value pair. For environment variables, this is the value of the environment variable. + Value string `pulumi:"value"` +} + +// GetTaskExecutionOverridesContainerOverrideEnvironmentInput is an input type that accepts GetTaskExecutionOverridesContainerOverrideEnvironmentArgs and GetTaskExecutionOverridesContainerOverrideEnvironmentOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesContainerOverrideEnvironmentInput` via: +// +// GetTaskExecutionOverridesContainerOverrideEnvironmentArgs{...} +type GetTaskExecutionOverridesContainerOverrideEnvironmentInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesContainerOverrideEnvironmentOutput() GetTaskExecutionOverridesContainerOverrideEnvironmentOutput + ToGetTaskExecutionOverridesContainerOverrideEnvironmentOutputWithContext(context.Context) GetTaskExecutionOverridesContainerOverrideEnvironmentOutput +} + +type GetTaskExecutionOverridesContainerOverrideEnvironmentArgs struct { + // The name of the key-value pair. For environment variables, this is the name of the environment variable. + Key pulumi.StringInput `pulumi:"key"` + // The value of the key-value pair. For environment variables, this is the value of the environment variable. + Value pulumi.StringInput `pulumi:"value"` +} + +func (GetTaskExecutionOverridesContainerOverrideEnvironmentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideEnvironment)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesContainerOverrideEnvironmentArgs) ToGetTaskExecutionOverridesContainerOverrideEnvironmentOutput() GetTaskExecutionOverridesContainerOverrideEnvironmentOutput { + return i.ToGetTaskExecutionOverridesContainerOverrideEnvironmentOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesContainerOverrideEnvironmentArgs) ToGetTaskExecutionOverridesContainerOverrideEnvironmentOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideEnvironmentOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesContainerOverrideEnvironmentOutput) +} + +// GetTaskExecutionOverridesContainerOverrideEnvironmentArrayInput is an input type that accepts GetTaskExecutionOverridesContainerOverrideEnvironmentArray and GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesContainerOverrideEnvironmentArrayInput` via: +// +// GetTaskExecutionOverridesContainerOverrideEnvironmentArray{ GetTaskExecutionOverridesContainerOverrideEnvironmentArgs{...} } +type GetTaskExecutionOverridesContainerOverrideEnvironmentArrayInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput() GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput + ToGetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutputWithContext(context.Context) GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput +} + +type GetTaskExecutionOverridesContainerOverrideEnvironmentArray []GetTaskExecutionOverridesContainerOverrideEnvironmentInput + +func (GetTaskExecutionOverridesContainerOverrideEnvironmentArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesContainerOverrideEnvironment)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesContainerOverrideEnvironmentArray) ToGetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput() GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput { + return i.ToGetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesContainerOverrideEnvironmentArray) ToGetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput) +} + +type GetTaskExecutionOverridesContainerOverrideEnvironmentOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesContainerOverrideEnvironmentOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideEnvironment)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesContainerOverrideEnvironmentOutput) ToGetTaskExecutionOverridesContainerOverrideEnvironmentOutput() GetTaskExecutionOverridesContainerOverrideEnvironmentOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideEnvironmentOutput) ToGetTaskExecutionOverridesContainerOverrideEnvironmentOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideEnvironmentOutput { + return o +} + +// The name of the key-value pair. For environment variables, this is the name of the environment variable. +func (o GetTaskExecutionOverridesContainerOverrideEnvironmentOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverrideEnvironment) string { return v.Key }).(pulumi.StringOutput) +} + +// The value of the key-value pair. For environment variables, this is the value of the environment variable. +func (o GetTaskExecutionOverridesContainerOverrideEnvironmentOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverrideEnvironment) string { return v.Value }).(pulumi.StringOutput) +} + +type GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesContainerOverrideEnvironment)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput) ToGetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput() GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput) ToGetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput) Index(i pulumi.IntInput) GetTaskExecutionOverridesContainerOverrideEnvironmentOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetTaskExecutionOverridesContainerOverrideEnvironment { + return vs[0].([]GetTaskExecutionOverridesContainerOverrideEnvironment)[vs[1].(int)] + }).(GetTaskExecutionOverridesContainerOverrideEnvironmentOutput) +} + +type GetTaskExecutionOverridesContainerOverrideResourceRequirement struct { + // The type of resource to assign to a container. Valid values are `GPU` or `InferenceAccelerator`. + Type string `pulumi:"type"` + // The value for the specified resource type. If the `GPU` type is used, the value is the number of physical GPUs the Amazon ECS container agent reserves for the container. The number of GPUs that's reserved for all containers in a task can't exceed the number of available GPUs on the container instance that the task is launched on. If the `InferenceAccelerator` type is used, the value matches the `deviceName` for an InferenceAccelerator specified in a task definition. + Value string `pulumi:"value"` +} + +// GetTaskExecutionOverridesContainerOverrideResourceRequirementInput is an input type that accepts GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs and GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesContainerOverrideResourceRequirementInput` via: +// +// GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs{...} +type GetTaskExecutionOverridesContainerOverrideResourceRequirementInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesContainerOverrideResourceRequirementOutput() GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput + ToGetTaskExecutionOverridesContainerOverrideResourceRequirementOutputWithContext(context.Context) GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput +} + +type GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs struct { + // The type of resource to assign to a container. Valid values are `GPU` or `InferenceAccelerator`. + Type pulumi.StringInput `pulumi:"type"` + // The value for the specified resource type. If the `GPU` type is used, the value is the number of physical GPUs the Amazon ECS container agent reserves for the container. The number of GPUs that's reserved for all containers in a task can't exceed the number of available GPUs on the container instance that the task is launched on. If the `InferenceAccelerator` type is used, the value matches the `deviceName` for an InferenceAccelerator specified in a task definition. + Value pulumi.StringInput `pulumi:"value"` +} + +func (GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideResourceRequirement)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementOutput() GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput { + return i.ToGetTaskExecutionOverridesContainerOverrideResourceRequirementOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput) +} + +// GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayInput is an input type that accepts GetTaskExecutionOverridesContainerOverrideResourceRequirementArray and GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayInput` via: +// +// GetTaskExecutionOverridesContainerOverrideResourceRequirementArray{ GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs{...} } +type GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput() GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput + ToGetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutputWithContext(context.Context) GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput +} + +type GetTaskExecutionOverridesContainerOverrideResourceRequirementArray []GetTaskExecutionOverridesContainerOverrideResourceRequirementInput + +func (GetTaskExecutionOverridesContainerOverrideResourceRequirementArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesContainerOverrideResourceRequirement)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesContainerOverrideResourceRequirementArray) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput() GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput { + return i.ToGetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesContainerOverrideResourceRequirementArray) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput) +} + +type GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideResourceRequirement)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementOutput() GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput { + return o +} + +// The type of resource to assign to a container. Valid values are `GPU` or `InferenceAccelerator`. +func (o GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverrideResourceRequirement) string { return v.Type }).(pulumi.StringOutput) +} + +// The value for the specified resource type. If the `GPU` type is used, the value is the number of physical GPUs the Amazon ECS container agent reserves for the container. The number of GPUs that's reserved for all containers in a task can't exceed the number of available GPUs on the container instance that the task is launched on. If the `InferenceAccelerator` type is used, the value matches the `deviceName` for an InferenceAccelerator specified in a task definition. +func (o GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesContainerOverrideResourceRequirement) string { return v.Value }).(pulumi.StringOutput) +} + +type GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesContainerOverrideResourceRequirement)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput() GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput) ToGetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput) Index(i pulumi.IntInput) GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetTaskExecutionOverridesContainerOverrideResourceRequirement { + return vs[0].([]GetTaskExecutionOverridesContainerOverrideResourceRequirement)[vs[1].(int)] + }).(GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput) +} + +type GetTaskExecutionOverridesInferenceAcceleratorOverride struct { + // The Elastic Inference accelerator device name to override for the task. This parameter must match a deviceName specified in the task definition. + DeviceName *string `pulumi:"deviceName"` + // The Elastic Inference accelerator type to use. + DeviceType *string `pulumi:"deviceType"` +} + +// GetTaskExecutionOverridesInferenceAcceleratorOverrideInput is an input type that accepts GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs and GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesInferenceAcceleratorOverrideInput` via: +// +// GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs{...} +type GetTaskExecutionOverridesInferenceAcceleratorOverrideInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesInferenceAcceleratorOverrideOutput() GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput + ToGetTaskExecutionOverridesInferenceAcceleratorOverrideOutputWithContext(context.Context) GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput +} + +type GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs struct { + // The Elastic Inference accelerator device name to override for the task. This parameter must match a deviceName specified in the task definition. + DeviceName pulumi.StringPtrInput `pulumi:"deviceName"` + // The Elastic Inference accelerator type to use. + DeviceType pulumi.StringPtrInput `pulumi:"deviceType"` +} + +func (GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesInferenceAcceleratorOverride)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideOutput() GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput { + return i.ToGetTaskExecutionOverridesInferenceAcceleratorOverrideOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideOutputWithContext(ctx context.Context) GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput) +} + +// GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayInput is an input type that accepts GetTaskExecutionOverridesInferenceAcceleratorOverrideArray and GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput values. +// You can construct a concrete instance of `GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayInput` via: +// +// GetTaskExecutionOverridesInferenceAcceleratorOverrideArray{ GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs{...} } +type GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayInput interface { + pulumi.Input + + ToGetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput() GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput + ToGetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutputWithContext(context.Context) GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput +} + +type GetTaskExecutionOverridesInferenceAcceleratorOverrideArray []GetTaskExecutionOverridesInferenceAcceleratorOverrideInput + +func (GetTaskExecutionOverridesInferenceAcceleratorOverrideArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesInferenceAcceleratorOverride)(nil)).Elem() +} + +func (i GetTaskExecutionOverridesInferenceAcceleratorOverrideArray) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput() GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput { + return i.ToGetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionOverridesInferenceAcceleratorOverrideArray) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput) +} + +type GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionOverridesInferenceAcceleratorOverride)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideOutput() GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput { + return o +} + +func (o GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideOutputWithContext(ctx context.Context) GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput { + return o +} + +// The Elastic Inference accelerator device name to override for the task. This parameter must match a deviceName specified in the task definition. +func (o GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput) DeviceName() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesInferenceAcceleratorOverride) *string { return v.DeviceName }).(pulumi.StringPtrOutput) +} + +// The Elastic Inference accelerator type to use. +func (o GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput) DeviceType() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionOverridesInferenceAcceleratorOverride) *string { return v.DeviceType }).(pulumi.StringPtrOutput) +} + +type GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionOverridesInferenceAcceleratorOverride)(nil)).Elem() +} + +func (o GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput() GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput) ToGetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutputWithContext(ctx context.Context) GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput { + return o +} + +func (o GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput) Index(i pulumi.IntInput) GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetTaskExecutionOverridesInferenceAcceleratorOverride { + return vs[0].([]GetTaskExecutionOverridesInferenceAcceleratorOverride)[vs[1].(int)] + }).(GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput) +} + +type GetTaskExecutionPlacementConstraint struct { + // A cluster query language expression to apply to the constraint. The expression can have a maximum length of 2000 characters. You can't specify an expression if the constraint type is `distinctInstance`. + Expression *string `pulumi:"expression"` + // The type of constraint. Valid values are `distinctInstance` or `memberOf`. Use `distinctInstance` to ensure that each task in a particular group is running on a different container instance. Use `memberOf` to restrict the selection to a group of valid candidates. + Type string `pulumi:"type"` +} + +// GetTaskExecutionPlacementConstraintInput is an input type that accepts GetTaskExecutionPlacementConstraintArgs and GetTaskExecutionPlacementConstraintOutput values. +// You can construct a concrete instance of `GetTaskExecutionPlacementConstraintInput` via: +// +// GetTaskExecutionPlacementConstraintArgs{...} +type GetTaskExecutionPlacementConstraintInput interface { + pulumi.Input + + ToGetTaskExecutionPlacementConstraintOutput() GetTaskExecutionPlacementConstraintOutput + ToGetTaskExecutionPlacementConstraintOutputWithContext(context.Context) GetTaskExecutionPlacementConstraintOutput +} + +type GetTaskExecutionPlacementConstraintArgs struct { + // A cluster query language expression to apply to the constraint. The expression can have a maximum length of 2000 characters. You can't specify an expression if the constraint type is `distinctInstance`. + Expression pulumi.StringPtrInput `pulumi:"expression"` + // The type of constraint. Valid values are `distinctInstance` or `memberOf`. Use `distinctInstance` to ensure that each task in a particular group is running on a different container instance. Use `memberOf` to restrict the selection to a group of valid candidates. + Type pulumi.StringInput `pulumi:"type"` +} + +func (GetTaskExecutionPlacementConstraintArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionPlacementConstraint)(nil)).Elem() +} + +func (i GetTaskExecutionPlacementConstraintArgs) ToGetTaskExecutionPlacementConstraintOutput() GetTaskExecutionPlacementConstraintOutput { + return i.ToGetTaskExecutionPlacementConstraintOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionPlacementConstraintArgs) ToGetTaskExecutionPlacementConstraintOutputWithContext(ctx context.Context) GetTaskExecutionPlacementConstraintOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionPlacementConstraintOutput) +} + +// GetTaskExecutionPlacementConstraintArrayInput is an input type that accepts GetTaskExecutionPlacementConstraintArray and GetTaskExecutionPlacementConstraintArrayOutput values. +// You can construct a concrete instance of `GetTaskExecutionPlacementConstraintArrayInput` via: +// +// GetTaskExecutionPlacementConstraintArray{ GetTaskExecutionPlacementConstraintArgs{...} } +type GetTaskExecutionPlacementConstraintArrayInput interface { + pulumi.Input + + ToGetTaskExecutionPlacementConstraintArrayOutput() GetTaskExecutionPlacementConstraintArrayOutput + ToGetTaskExecutionPlacementConstraintArrayOutputWithContext(context.Context) GetTaskExecutionPlacementConstraintArrayOutput +} + +type GetTaskExecutionPlacementConstraintArray []GetTaskExecutionPlacementConstraintInput + +func (GetTaskExecutionPlacementConstraintArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionPlacementConstraint)(nil)).Elem() +} + +func (i GetTaskExecutionPlacementConstraintArray) ToGetTaskExecutionPlacementConstraintArrayOutput() GetTaskExecutionPlacementConstraintArrayOutput { + return i.ToGetTaskExecutionPlacementConstraintArrayOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionPlacementConstraintArray) ToGetTaskExecutionPlacementConstraintArrayOutputWithContext(ctx context.Context) GetTaskExecutionPlacementConstraintArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionPlacementConstraintArrayOutput) +} + +type GetTaskExecutionPlacementConstraintOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionPlacementConstraintOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionPlacementConstraint)(nil)).Elem() +} + +func (o GetTaskExecutionPlacementConstraintOutput) ToGetTaskExecutionPlacementConstraintOutput() GetTaskExecutionPlacementConstraintOutput { + return o +} + +func (o GetTaskExecutionPlacementConstraintOutput) ToGetTaskExecutionPlacementConstraintOutputWithContext(ctx context.Context) GetTaskExecutionPlacementConstraintOutput { + return o +} + +// A cluster query language expression to apply to the constraint. The expression can have a maximum length of 2000 characters. You can't specify an expression if the constraint type is `distinctInstance`. +func (o GetTaskExecutionPlacementConstraintOutput) Expression() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionPlacementConstraint) *string { return v.Expression }).(pulumi.StringPtrOutput) +} + +// The type of constraint. Valid values are `distinctInstance` or `memberOf`. Use `distinctInstance` to ensure that each task in a particular group is running on a different container instance. Use `memberOf` to restrict the selection to a group of valid candidates. +func (o GetTaskExecutionPlacementConstraintOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionPlacementConstraint) string { return v.Type }).(pulumi.StringOutput) +} + +type GetTaskExecutionPlacementConstraintArrayOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionPlacementConstraintArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionPlacementConstraint)(nil)).Elem() +} + +func (o GetTaskExecutionPlacementConstraintArrayOutput) ToGetTaskExecutionPlacementConstraintArrayOutput() GetTaskExecutionPlacementConstraintArrayOutput { + return o +} + +func (o GetTaskExecutionPlacementConstraintArrayOutput) ToGetTaskExecutionPlacementConstraintArrayOutputWithContext(ctx context.Context) GetTaskExecutionPlacementConstraintArrayOutput { + return o +} + +func (o GetTaskExecutionPlacementConstraintArrayOutput) Index(i pulumi.IntInput) GetTaskExecutionPlacementConstraintOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetTaskExecutionPlacementConstraint { + return vs[0].([]GetTaskExecutionPlacementConstraint)[vs[1].(int)] + }).(GetTaskExecutionPlacementConstraintOutput) +} + +type GetTaskExecutionPlacementStrategy struct { + // The field to apply the placement strategy against. + Field *string `pulumi:"field"` + // The type of placement strategy. Valid values are `random`, `spread`, and `binpack`. + // + // For more information, see the [Placement Strategy](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementStrategy.html) documentation. + Type string `pulumi:"type"` +} + +// GetTaskExecutionPlacementStrategyInput is an input type that accepts GetTaskExecutionPlacementStrategyArgs and GetTaskExecutionPlacementStrategyOutput values. +// You can construct a concrete instance of `GetTaskExecutionPlacementStrategyInput` via: +// +// GetTaskExecutionPlacementStrategyArgs{...} +type GetTaskExecutionPlacementStrategyInput interface { + pulumi.Input + + ToGetTaskExecutionPlacementStrategyOutput() GetTaskExecutionPlacementStrategyOutput + ToGetTaskExecutionPlacementStrategyOutputWithContext(context.Context) GetTaskExecutionPlacementStrategyOutput +} + +type GetTaskExecutionPlacementStrategyArgs struct { + // The field to apply the placement strategy against. + Field pulumi.StringPtrInput `pulumi:"field"` + // The type of placement strategy. Valid values are `random`, `spread`, and `binpack`. + // + // For more information, see the [Placement Strategy](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementStrategy.html) documentation. + Type pulumi.StringInput `pulumi:"type"` +} + +func (GetTaskExecutionPlacementStrategyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionPlacementStrategy)(nil)).Elem() +} + +func (i GetTaskExecutionPlacementStrategyArgs) ToGetTaskExecutionPlacementStrategyOutput() GetTaskExecutionPlacementStrategyOutput { + return i.ToGetTaskExecutionPlacementStrategyOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionPlacementStrategyArgs) ToGetTaskExecutionPlacementStrategyOutputWithContext(ctx context.Context) GetTaskExecutionPlacementStrategyOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionPlacementStrategyOutput) +} + +// GetTaskExecutionPlacementStrategyArrayInput is an input type that accepts GetTaskExecutionPlacementStrategyArray and GetTaskExecutionPlacementStrategyArrayOutput values. +// You can construct a concrete instance of `GetTaskExecutionPlacementStrategyArrayInput` via: +// +// GetTaskExecutionPlacementStrategyArray{ GetTaskExecutionPlacementStrategyArgs{...} } +type GetTaskExecutionPlacementStrategyArrayInput interface { + pulumi.Input + + ToGetTaskExecutionPlacementStrategyArrayOutput() GetTaskExecutionPlacementStrategyArrayOutput + ToGetTaskExecutionPlacementStrategyArrayOutputWithContext(context.Context) GetTaskExecutionPlacementStrategyArrayOutput +} + +type GetTaskExecutionPlacementStrategyArray []GetTaskExecutionPlacementStrategyInput + +func (GetTaskExecutionPlacementStrategyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionPlacementStrategy)(nil)).Elem() +} + +func (i GetTaskExecutionPlacementStrategyArray) ToGetTaskExecutionPlacementStrategyArrayOutput() GetTaskExecutionPlacementStrategyArrayOutput { + return i.ToGetTaskExecutionPlacementStrategyArrayOutputWithContext(context.Background()) +} + +func (i GetTaskExecutionPlacementStrategyArray) ToGetTaskExecutionPlacementStrategyArrayOutputWithContext(ctx context.Context) GetTaskExecutionPlacementStrategyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetTaskExecutionPlacementStrategyArrayOutput) +} + +type GetTaskExecutionPlacementStrategyOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionPlacementStrategyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetTaskExecutionPlacementStrategy)(nil)).Elem() +} + +func (o GetTaskExecutionPlacementStrategyOutput) ToGetTaskExecutionPlacementStrategyOutput() GetTaskExecutionPlacementStrategyOutput { + return o +} + +func (o GetTaskExecutionPlacementStrategyOutput) ToGetTaskExecutionPlacementStrategyOutputWithContext(ctx context.Context) GetTaskExecutionPlacementStrategyOutput { + return o +} + +// The field to apply the placement strategy against. +func (o GetTaskExecutionPlacementStrategyOutput) Field() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetTaskExecutionPlacementStrategy) *string { return v.Field }).(pulumi.StringPtrOutput) +} + +// The type of placement strategy. Valid values are `random`, `spread`, and `binpack`. +// +// For more information, see the [Placement Strategy](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_PlacementStrategy.html) documentation. +func (o GetTaskExecutionPlacementStrategyOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetTaskExecutionPlacementStrategy) string { return v.Type }).(pulumi.StringOutput) +} + +type GetTaskExecutionPlacementStrategyArrayOutput struct{ *pulumi.OutputState } + +func (GetTaskExecutionPlacementStrategyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetTaskExecutionPlacementStrategy)(nil)).Elem() +} + +func (o GetTaskExecutionPlacementStrategyArrayOutput) ToGetTaskExecutionPlacementStrategyArrayOutput() GetTaskExecutionPlacementStrategyArrayOutput { + return o +} + +func (o GetTaskExecutionPlacementStrategyArrayOutput) ToGetTaskExecutionPlacementStrategyArrayOutputWithContext(ctx context.Context) GetTaskExecutionPlacementStrategyArrayOutput { + return o +} + +func (o GetTaskExecutionPlacementStrategyArrayOutput) Index(i pulumi.IntInput) GetTaskExecutionPlacementStrategyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetTaskExecutionPlacementStrategy { + return vs[0].([]GetTaskExecutionPlacementStrategy)[vs[1].(int)] + }).(GetTaskExecutionPlacementStrategyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CapacityProviderAutoScalingGroupProviderInput)(nil)).Elem(), CapacityProviderAutoScalingGroupProviderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CapacityProviderAutoScalingGroupProviderPtrInput)(nil)).Elem(), CapacityProviderAutoScalingGroupProviderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CapacityProviderAutoScalingGroupProviderManagedScalingInput)(nil)).Elem(), CapacityProviderAutoScalingGroupProviderManagedScalingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CapacityProviderAutoScalingGroupProviderManagedScalingPtrInput)(nil)).Elem(), CapacityProviderAutoScalingGroupProviderManagedScalingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterCapacityProvidersDefaultCapacityProviderStrategyInput)(nil)).Elem(), ClusterCapacityProvidersDefaultCapacityProviderStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayInput)(nil)).Elem(), ClusterCapacityProvidersDefaultCapacityProviderStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationInput)(nil)).Elem(), ClusterConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationPtrInput)(nil)).Elem(), ClusterConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationExecuteCommandConfigurationInput)(nil)).Elem(), ClusterConfigurationExecuteCommandConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationExecuteCommandConfigurationPtrInput)(nil)).Elem(), ClusterConfigurationExecuteCommandConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationExecuteCommandConfigurationLogConfigurationInput)(nil)).Elem(), ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrInput)(nil)).Elem(), ClusterConfigurationExecuteCommandConfigurationLogConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationManagedStorageConfigurationInput)(nil)).Elem(), ClusterConfigurationManagedStorageConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterConfigurationManagedStorageConfigurationPtrInput)(nil)).Elem(), ClusterConfigurationManagedStorageConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterServiceConnectDefaultsInput)(nil)).Elem(), ClusterServiceConnectDefaultsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterServiceConnectDefaultsPtrInput)(nil)).Elem(), ClusterServiceConnectDefaultsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterSettingInput)(nil)).Elem(), ClusterSettingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ClusterSettingArrayInput)(nil)).Elem(), ClusterSettingArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceAlarmsInput)(nil)).Elem(), ServiceAlarmsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceAlarmsPtrInput)(nil)).Elem(), ServiceAlarmsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceCapacityProviderStrategyInput)(nil)).Elem(), ServiceCapacityProviderStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceCapacityProviderStrategyArrayInput)(nil)).Elem(), ServiceCapacityProviderStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceDeploymentCircuitBreakerInput)(nil)).Elem(), ServiceDeploymentCircuitBreakerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceDeploymentCircuitBreakerPtrInput)(nil)).Elem(), ServiceDeploymentCircuitBreakerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceDeploymentControllerInput)(nil)).Elem(), ServiceDeploymentControllerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceDeploymentControllerPtrInput)(nil)).Elem(), ServiceDeploymentControllerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLoadBalancerInput)(nil)).Elem(), ServiceLoadBalancerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLoadBalancerArrayInput)(nil)).Elem(), ServiceLoadBalancerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceNetworkConfigurationInput)(nil)).Elem(), ServiceNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceNetworkConfigurationPtrInput)(nil)).Elem(), ServiceNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceOrderedPlacementStrategyInput)(nil)).Elem(), ServiceOrderedPlacementStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceOrderedPlacementStrategyArrayInput)(nil)).Elem(), ServiceOrderedPlacementStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServicePlacementConstraintInput)(nil)).Elem(), ServicePlacementConstraintArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServicePlacementConstraintArrayInput)(nil)).Elem(), ServicePlacementConstraintArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationInput)(nil)).Elem(), ServiceServiceConnectConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationPtrInput)(nil)).Elem(), ServiceServiceConnectConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfigurationInput)(nil)).Elem(), ServiceServiceConnectConfigurationLogConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfigurationPtrInput)(nil)).Elem(), ServiceServiceConnectConfigurationLogConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfigurationSecretOptionInput)(nil)).Elem(), ServiceServiceConnectConfigurationLogConfigurationSecretOptionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayInput)(nil)).Elem(), ServiceServiceConnectConfigurationLogConfigurationSecretOptionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceArrayInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceClientAliasInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceClientAliasArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceClientAliasArrayInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceClientAliasArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTimeoutInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceTimeoutArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTimeoutPtrInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceTimeoutArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTlsInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTlsPtrInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceTlsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrInput)(nil)).Elem(), ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceRegistriesInput)(nil)).Elem(), ServiceServiceRegistriesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceServiceRegistriesPtrInput)(nil)).Elem(), ServiceServiceRegistriesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVolumeConfigurationInput)(nil)).Elem(), ServiceVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVolumeConfigurationPtrInput)(nil)).Elem(), ServiceVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolumeInput)(nil)).Elem(), ServiceVolumeConfigurationManagedEbsVolumeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolumePtrInput)(nil)).Elem(), ServiceVolumeConfigurationManagedEbsVolumeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationInput)(nil)).Elem(), ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayInput)(nil)).Elem(), ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVpcLatticeConfigurationInput)(nil)).Elem(), ServiceVpcLatticeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceVpcLatticeConfigurationArrayInput)(nil)).Elem(), ServiceVpcLatticeConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionEphemeralStorageInput)(nil)).Elem(), TaskDefinitionEphemeralStorageArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionEphemeralStoragePtrInput)(nil)).Elem(), TaskDefinitionEphemeralStorageArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionInferenceAcceleratorInput)(nil)).Elem(), TaskDefinitionInferenceAcceleratorArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionInferenceAcceleratorArrayInput)(nil)).Elem(), TaskDefinitionInferenceAcceleratorArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionPlacementConstraintInput)(nil)).Elem(), TaskDefinitionPlacementConstraintArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionPlacementConstraintArrayInput)(nil)).Elem(), TaskDefinitionPlacementConstraintArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionProxyConfigurationInput)(nil)).Elem(), TaskDefinitionProxyConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionProxyConfigurationPtrInput)(nil)).Elem(), TaskDefinitionProxyConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionRuntimePlatformInput)(nil)).Elem(), TaskDefinitionRuntimePlatformArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionRuntimePlatformPtrInput)(nil)).Elem(), TaskDefinitionRuntimePlatformArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeInput)(nil)).Elem(), TaskDefinitionVolumeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeArrayInput)(nil)).Elem(), TaskDefinitionVolumeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeDockerVolumeConfigurationInput)(nil)).Elem(), TaskDefinitionVolumeDockerVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeDockerVolumeConfigurationPtrInput)(nil)).Elem(), TaskDefinitionVolumeDockerVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfigurationInput)(nil)).Elem(), TaskDefinitionVolumeEfsVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfigurationPtrInput)(nil)).Elem(), TaskDefinitionVolumeEfsVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigInput)(nil)).Elem(), TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrInput)(nil)).Elem(), TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationInput)(nil)).Elem(), TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrInput)(nil)).Elem(), TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigInput)(nil)).Elem(), TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrInput)(nil)).Elem(), TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetCapacityProviderStrategyInput)(nil)).Elem(), TaskSetCapacityProviderStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetCapacityProviderStrategyArrayInput)(nil)).Elem(), TaskSetCapacityProviderStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetLoadBalancerInput)(nil)).Elem(), TaskSetLoadBalancerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetLoadBalancerArrayInput)(nil)).Elem(), TaskSetLoadBalancerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetNetworkConfigurationInput)(nil)).Elem(), TaskSetNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetNetworkConfigurationPtrInput)(nil)).Elem(), TaskSetNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetScaleInput)(nil)).Elem(), TaskSetScaleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetScalePtrInput)(nil)).Elem(), TaskSetScaleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetServiceRegistriesInput)(nil)).Elem(), TaskSetServiceRegistriesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetServiceRegistriesPtrInput)(nil)).Elem(), TaskSetServiceRegistriesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterServiceConnectDefaultInput)(nil)).Elem(), GetClusterServiceConnectDefaultArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterServiceConnectDefaultArrayInput)(nil)).Elem(), GetClusterServiceConnectDefaultArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterSettingInput)(nil)).Elem(), GetClusterSettingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetClusterSettingArrayInput)(nil)).Elem(), GetClusterSettingArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionCapacityProviderStrategyInput)(nil)).Elem(), GetTaskExecutionCapacityProviderStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionCapacityProviderStrategyArrayInput)(nil)).Elem(), GetTaskExecutionCapacityProviderStrategyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionNetworkConfigurationInput)(nil)).Elem(), GetTaskExecutionNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionNetworkConfigurationPtrInput)(nil)).Elem(), GetTaskExecutionNetworkConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesInput)(nil)).Elem(), GetTaskExecutionOverridesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesPtrInput)(nil)).Elem(), GetTaskExecutionOverridesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideInput)(nil)).Elem(), GetTaskExecutionOverridesContainerOverrideArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideArrayInput)(nil)).Elem(), GetTaskExecutionOverridesContainerOverrideArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideEnvironmentInput)(nil)).Elem(), GetTaskExecutionOverridesContainerOverrideEnvironmentArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideEnvironmentArrayInput)(nil)).Elem(), GetTaskExecutionOverridesContainerOverrideEnvironmentArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideResourceRequirementInput)(nil)).Elem(), GetTaskExecutionOverridesContainerOverrideResourceRequirementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayInput)(nil)).Elem(), GetTaskExecutionOverridesContainerOverrideResourceRequirementArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesInferenceAcceleratorOverrideInput)(nil)).Elem(), GetTaskExecutionOverridesInferenceAcceleratorOverrideArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayInput)(nil)).Elem(), GetTaskExecutionOverridesInferenceAcceleratorOverrideArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionPlacementConstraintInput)(nil)).Elem(), GetTaskExecutionPlacementConstraintArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionPlacementConstraintArrayInput)(nil)).Elem(), GetTaskExecutionPlacementConstraintArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionPlacementStrategyInput)(nil)).Elem(), GetTaskExecutionPlacementStrategyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetTaskExecutionPlacementStrategyArrayInput)(nil)).Elem(), GetTaskExecutionPlacementStrategyArray{}) + pulumi.RegisterOutputType(CapacityProviderAutoScalingGroupProviderOutput{}) + pulumi.RegisterOutputType(CapacityProviderAutoScalingGroupProviderPtrOutput{}) + pulumi.RegisterOutputType(CapacityProviderAutoScalingGroupProviderManagedScalingOutput{}) + pulumi.RegisterOutputType(CapacityProviderAutoScalingGroupProviderManagedScalingPtrOutput{}) + pulumi.RegisterOutputType(ClusterCapacityProvidersDefaultCapacityProviderStrategyOutput{}) + pulumi.RegisterOutputType(ClusterCapacityProvidersDefaultCapacityProviderStrategyArrayOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationExecuteCommandConfigurationOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationExecuteCommandConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationExecuteCommandConfigurationLogConfigurationOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationExecuteCommandConfigurationLogConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationManagedStorageConfigurationOutput{}) + pulumi.RegisterOutputType(ClusterConfigurationManagedStorageConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ClusterServiceConnectDefaultsOutput{}) + pulumi.RegisterOutputType(ClusterServiceConnectDefaultsPtrOutput{}) + pulumi.RegisterOutputType(ClusterSettingOutput{}) + pulumi.RegisterOutputType(ClusterSettingArrayOutput{}) + pulumi.RegisterOutputType(ServiceAlarmsOutput{}) + pulumi.RegisterOutputType(ServiceAlarmsPtrOutput{}) + pulumi.RegisterOutputType(ServiceCapacityProviderStrategyOutput{}) + pulumi.RegisterOutputType(ServiceCapacityProviderStrategyArrayOutput{}) + pulumi.RegisterOutputType(ServiceDeploymentCircuitBreakerOutput{}) + pulumi.RegisterOutputType(ServiceDeploymentCircuitBreakerPtrOutput{}) + pulumi.RegisterOutputType(ServiceDeploymentControllerOutput{}) + pulumi.RegisterOutputType(ServiceDeploymentControllerPtrOutput{}) + pulumi.RegisterOutputType(ServiceLoadBalancerOutput{}) + pulumi.RegisterOutputType(ServiceLoadBalancerArrayOutput{}) + pulumi.RegisterOutputType(ServiceNetworkConfigurationOutput{}) + pulumi.RegisterOutputType(ServiceNetworkConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ServiceOrderedPlacementStrategyOutput{}) + pulumi.RegisterOutputType(ServiceOrderedPlacementStrategyArrayOutput{}) + pulumi.RegisterOutputType(ServicePlacementConstraintOutput{}) + pulumi.RegisterOutputType(ServicePlacementConstraintArrayOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationLogConfigurationOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationLogConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationLogConfigurationSecretOptionOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationLogConfigurationSecretOptionArrayOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceArrayOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceClientAliasOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceClientAliasArrayOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceTimeoutOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceTimeoutPtrOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceTlsOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceTlsPtrOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityOutput{}) + pulumi.RegisterOutputType(ServiceServiceConnectConfigurationServiceTlsIssuerCertAuthorityPtrOutput{}) + pulumi.RegisterOutputType(ServiceServiceRegistriesOutput{}) + pulumi.RegisterOutputType(ServiceServiceRegistriesPtrOutput{}) + pulumi.RegisterOutputType(ServiceVolumeConfigurationOutput{}) + pulumi.RegisterOutputType(ServiceVolumeConfigurationPtrOutput{}) + pulumi.RegisterOutputType(ServiceVolumeConfigurationManagedEbsVolumeOutput{}) + pulumi.RegisterOutputType(ServiceVolumeConfigurationManagedEbsVolumePtrOutput{}) + pulumi.RegisterOutputType(ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationOutput{}) + pulumi.RegisterOutputType(ServiceVolumeConfigurationManagedEbsVolumeTagSpecificationArrayOutput{}) + pulumi.RegisterOutputType(ServiceVpcLatticeConfigurationOutput{}) + pulumi.RegisterOutputType(ServiceVpcLatticeConfigurationArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionEphemeralStorageOutput{}) + pulumi.RegisterOutputType(TaskDefinitionEphemeralStoragePtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionInferenceAcceleratorOutput{}) + pulumi.RegisterOutputType(TaskDefinitionInferenceAcceleratorArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionPlacementConstraintOutput{}) + pulumi.RegisterOutputType(TaskDefinitionPlacementConstraintArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionProxyConfigurationOutput{}) + pulumi.RegisterOutputType(TaskDefinitionProxyConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionRuntimePlatformOutput{}) + pulumi.RegisterOutputType(TaskDefinitionRuntimePlatformPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeDockerVolumeConfigurationOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeDockerVolumeConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeEfsVolumeConfigurationOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeEfsVolumeConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigPtrOutput{}) + pulumi.RegisterOutputType(TaskSetCapacityProviderStrategyOutput{}) + pulumi.RegisterOutputType(TaskSetCapacityProviderStrategyArrayOutput{}) + pulumi.RegisterOutputType(TaskSetLoadBalancerOutput{}) + pulumi.RegisterOutputType(TaskSetLoadBalancerArrayOutput{}) + pulumi.RegisterOutputType(TaskSetNetworkConfigurationOutput{}) + pulumi.RegisterOutputType(TaskSetNetworkConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TaskSetScaleOutput{}) + pulumi.RegisterOutputType(TaskSetScalePtrOutput{}) + pulumi.RegisterOutputType(TaskSetServiceRegistriesOutput{}) + pulumi.RegisterOutputType(TaskSetServiceRegistriesPtrOutput{}) + pulumi.RegisterOutputType(GetClusterServiceConnectDefaultOutput{}) + pulumi.RegisterOutputType(GetClusterServiceConnectDefaultArrayOutput{}) + pulumi.RegisterOutputType(GetClusterSettingOutput{}) + pulumi.RegisterOutputType(GetClusterSettingArrayOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionCapacityProviderStrategyOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionCapacityProviderStrategyArrayOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionNetworkConfigurationOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionNetworkConfigurationPtrOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesPtrOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesContainerOverrideOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesContainerOverrideArrayOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesContainerOverrideEnvironmentOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesContainerOverrideEnvironmentArrayOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesContainerOverrideResourceRequirementOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesContainerOverrideResourceRequirementArrayOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesInferenceAcceleratorOverrideOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionOverridesInferenceAcceleratorOverrideArrayOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionPlacementConstraintOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionPlacementConstraintArrayOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionPlacementStrategyOutput{}) + pulumi.RegisterOutputType(GetTaskExecutionPlacementStrategyArrayOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/service.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/service.go new file mode 100644 index 000000000..f760c2c36 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/service.go @@ -0,0 +1,932 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **Note:** To prevent a race condition during service deletion, make sure to set `dependsOn` to the related `iam.RolePolicy`; otherwise, the policy may be destroyed too soon and the ECS service will then get stuck in the `DRAINING` state. +// +// Provides an ECS service - effectively a task that is expected to run until an error occurs or a user terminates it (typically a webserver or a database). +// +// See [ECS Services section in AWS developer guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html). +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewService(ctx, "mongo", &ecs.ServiceArgs{ +// Name: pulumi.String("mongodb"), +// Cluster: pulumi.Any(fooAwsEcsCluster.Id), +// TaskDefinition: pulumi.Any(mongoAwsEcsTaskDefinition.Arn), +// DesiredCount: pulumi.Int(3), +// IamRole: pulumi.Any(fooAwsIamRole.Arn), +// OrderedPlacementStrategies: ecs.ServiceOrderedPlacementStrategyArray{ +// &ecs.ServiceOrderedPlacementStrategyArgs{ +// Type: pulumi.String("binpack"), +// Field: pulumi.String("cpu"), +// }, +// }, +// LoadBalancers: ecs.ServiceLoadBalancerArray{ +// &ecs.ServiceLoadBalancerArgs{ +// TargetGroupArn: pulumi.Any(fooAwsLbTargetGroup.Arn), +// ContainerName: pulumi.String("mongo"), +// ContainerPort: pulumi.Int(8080), +// }, +// }, +// PlacementConstraints: ecs.ServicePlacementConstraintArray{ +// &ecs.ServicePlacementConstraintArgs{ +// Type: pulumi.String("memberOf"), +// Expression: pulumi.String("attribute:ecs.availability-zone in [us-west-2a, us-west-2b]"), +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// foo, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Ignoring Changes to Desired Count +// +// You can use [`ignoreChanges`](https://www.pulumi.com/docs/intro/concepts/programming-model/#ignorechanges) to create an ECS service with an initial count of running instances, then ignore any changes to that count caused externally (e.g. Application Autoscaling). +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewService(ctx, "example", &ecs.ServiceArgs{ +// DesiredCount: pulumi.Int(2), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Daemon Scheduling Strategy +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewService(ctx, "bar", &ecs.ServiceArgs{ +// Name: pulumi.String("bar"), +// Cluster: pulumi.Any(foo.Id), +// TaskDefinition: pulumi.Any(barAwsEcsTaskDefinition.Arn), +// SchedulingStrategy: pulumi.String("DAEMON"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### CloudWatch Deployment Alarms +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewService(ctx, "example", &ecs.ServiceArgs{ +// Name: pulumi.String("example"), +// Cluster: pulumi.Any(exampleAwsEcsCluster.Id), +// Alarms: &ecs.ServiceAlarmsArgs{ +// Enable: pulumi.Bool(true), +// Rollback: pulumi.Bool(true), +// AlarmNames: pulumi.StringArray{ +// exampleAwsCloudwatchMetricAlarm.AlarmName, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### External Deployment Controller +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewService(ctx, "example", &ecs.ServiceArgs{ +// Name: pulumi.String("example"), +// Cluster: pulumi.Any(exampleAwsEcsCluster.Id), +// DeploymentController: &ecs.ServiceDeploymentControllerArgs{ +// Type: pulumi.String("EXTERNAL"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Redeploy Service On Every Apply +// +// The key used with `triggers` is arbitrary. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewService(ctx, "example", &ecs.ServiceArgs{ +// ForceNewDeployment: pulumi.Bool(true), +// Triggers: pulumi.StringMap{ +// "redeployment": pulumi.String("plantimestamp()"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import ECS services using the `name` together with ecs cluster `name`. For example: +// +// ```sh +// $ pulumi import aws:ecs/service:Service imported cluster-name/service-name +// ``` +type Service struct { + pulumi.CustomResourceState + + // Information about the CloudWatch alarms. See below. + Alarms ServiceAlarmsPtrOutput `pulumi:"alarms"` + // ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. + AvailabilityZoneRebalancing pulumi.StringPtrOutput `pulumi:"availabilityZoneRebalancing"` + // Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `forceNewDeployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. + CapacityProviderStrategies ServiceCapacityProviderStrategyArrayOutput `pulumi:"capacityProviderStrategies"` + // ARN of an ECS cluster. + Cluster pulumi.StringOutput `pulumi:"cluster"` + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker ServiceDeploymentCircuitBreakerPtrOutput `pulumi:"deploymentCircuitBreaker"` + // Configuration block for deployment controller configuration. See below. + DeploymentController ServiceDeploymentControllerPtrOutput `pulumi:"deploymentController"` + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent pulumi.IntPtrOutput `pulumi:"deploymentMaximumPercent"` + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent pulumi.IntPtrOutput `pulumi:"deploymentMinimumHealthyPercent"` + // Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount pulumi.IntPtrOutput `pulumi:"desiredCount"` + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags pulumi.BoolPtrOutput `pulumi:"enableEcsManagedTags"` + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand pulumi.BoolPtrOutput `pulumi:"enableExecuteCommand"` + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete pulumi.BoolPtrOutput `pulumi:"forceDelete"` + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `orderedPlacementStrategy` and `placementConstraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment pulumi.BoolPtrOutput `pulumi:"forceNewDeployment"` + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds pulumi.IntPtrOutput `pulumi:"healthCheckGracePeriodSeconds"` + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole pulumi.StringOutput `pulumi:"iamRole"` + // Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. Conflicts with `capacityProviderStrategy`. + LaunchType pulumi.StringOutput `pulumi:"launchType"` + // Configuration block for load balancers. See below. + LoadBalancers ServiceLoadBalancerArrayOutput `pulumi:"loadBalancers"` + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringOutput `pulumi:"name"` + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration ServiceNetworkConfigurationPtrOutput `pulumi:"networkConfiguration"` + // Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. The maximum number of `orderedPlacementStrategy` blocks is `5`. See below. + OrderedPlacementStrategies ServiceOrderedPlacementStrategyArrayOutput `pulumi:"orderedPlacementStrategies"` + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. Maximum number of `placementConstraints` is `10`. See below. + PlacementConstraints ServicePlacementConstraintArrayOutput `pulumi:"placementConstraints"` + // Platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringOutput `pulumi:"platformVersion"` + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags pulumi.StringPtrOutput `pulumi:"propagateTags"` + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy pulumi.StringPtrOutput `pulumi:"schedulingStrategy"` + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration ServiceServiceConnectConfigurationPtrOutput `pulumi:"serviceConnectConfiguration"` + // Service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. See below. + ServiceRegistries ServiceServiceRegistriesPtrOutput `pulumi:"serviceRegistries"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. + TaskDefinition pulumi.StringPtrOutput `pulumi:"taskDefinition"` + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers pulumi.StringMapOutput `pulumi:"triggers"` + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration ServiceVolumeConfigurationPtrOutput `pulumi:"volumeConfiguration"` + // The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below. + VpcLatticeConfigurations ServiceVpcLatticeConfigurationArrayOutput `pulumi:"vpcLatticeConfigurations"` + // If `true`, this provider will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + WaitForSteadyState pulumi.BoolPtrOutput `pulumi:"waitForSteadyState"` +} + +// NewService registers a new resource with the given unique name, arguments, and options. +func NewService(ctx *pulumi.Context, + name string, args *ServiceArgs, opts ...pulumi.ResourceOption) (*Service, error) { + if args == nil { + args = &ServiceArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Service + err := ctx.RegisterResource("aws:ecs/service:Service", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetService gets an existing Service 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 GetService(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServiceState, opts ...pulumi.ResourceOption) (*Service, error) { + var resource Service + err := ctx.ReadResource("aws:ecs/service:Service", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Service resources. +type serviceState struct { + // Information about the CloudWatch alarms. See below. + Alarms *ServiceAlarms `pulumi:"alarms"` + // ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. + AvailabilityZoneRebalancing *string `pulumi:"availabilityZoneRebalancing"` + // Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `forceNewDeployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. + CapacityProviderStrategies []ServiceCapacityProviderStrategy `pulumi:"capacityProviderStrategies"` + // ARN of an ECS cluster. + Cluster *string `pulumi:"cluster"` + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker *ServiceDeploymentCircuitBreaker `pulumi:"deploymentCircuitBreaker"` + // Configuration block for deployment controller configuration. See below. + DeploymentController *ServiceDeploymentController `pulumi:"deploymentController"` + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent *int `pulumi:"deploymentMaximumPercent"` + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent *int `pulumi:"deploymentMinimumHealthyPercent"` + // Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount *int `pulumi:"desiredCount"` + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete *bool `pulumi:"forceDelete"` + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `orderedPlacementStrategy` and `placementConstraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment *bool `pulumi:"forceNewDeployment"` + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds *int `pulumi:"healthCheckGracePeriodSeconds"` + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole *string `pulumi:"iamRole"` + // Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. Conflicts with `capacityProviderStrategy`. + LaunchType *string `pulumi:"launchType"` + // Configuration block for load balancers. See below. + LoadBalancers []ServiceLoadBalancer `pulumi:"loadBalancers"` + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration *ServiceNetworkConfiguration `pulumi:"networkConfiguration"` + // Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. The maximum number of `orderedPlacementStrategy` blocks is `5`. See below. + OrderedPlacementStrategies []ServiceOrderedPlacementStrategy `pulumi:"orderedPlacementStrategies"` + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. Maximum number of `placementConstraints` is `10`. See below. + PlacementConstraints []ServicePlacementConstraint `pulumi:"placementConstraints"` + // Platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion *string `pulumi:"platformVersion"` + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags *string `pulumi:"propagateTags"` + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy *string `pulumi:"schedulingStrategy"` + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration *ServiceServiceConnectConfiguration `pulumi:"serviceConnectConfiguration"` + // Service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. See below. + ServiceRegistries *ServiceServiceRegistries `pulumi:"serviceRegistries"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. + TaskDefinition *string `pulumi:"taskDefinition"` + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers map[string]string `pulumi:"triggers"` + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration *ServiceVolumeConfiguration `pulumi:"volumeConfiguration"` + // The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below. + VpcLatticeConfigurations []ServiceVpcLatticeConfiguration `pulumi:"vpcLatticeConfigurations"` + // If `true`, this provider will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + WaitForSteadyState *bool `pulumi:"waitForSteadyState"` +} + +type ServiceState struct { + // Information about the CloudWatch alarms. See below. + Alarms ServiceAlarmsPtrInput + // ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. + AvailabilityZoneRebalancing pulumi.StringPtrInput + // Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `forceNewDeployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. + CapacityProviderStrategies ServiceCapacityProviderStrategyArrayInput + // ARN of an ECS cluster. + Cluster pulumi.StringPtrInput + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker ServiceDeploymentCircuitBreakerPtrInput + // Configuration block for deployment controller configuration. See below. + DeploymentController ServiceDeploymentControllerPtrInput + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent pulumi.IntPtrInput + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent pulumi.IntPtrInput + // Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount pulumi.IntPtrInput + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags pulumi.BoolPtrInput + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand pulumi.BoolPtrInput + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete pulumi.BoolPtrInput + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `orderedPlacementStrategy` and `placementConstraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment pulumi.BoolPtrInput + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds pulumi.IntPtrInput + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole pulumi.StringPtrInput + // Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. Conflicts with `capacityProviderStrategy`. + LaunchType pulumi.StringPtrInput + // Configuration block for load balancers. See below. + LoadBalancers ServiceLoadBalancerArrayInput + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration ServiceNetworkConfigurationPtrInput + // Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. The maximum number of `orderedPlacementStrategy` blocks is `5`. See below. + OrderedPlacementStrategies ServiceOrderedPlacementStrategyArrayInput + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. Maximum number of `placementConstraints` is `10`. See below. + PlacementConstraints ServicePlacementConstraintArrayInput + // Platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringPtrInput + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags pulumi.StringPtrInput + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy pulumi.StringPtrInput + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration ServiceServiceConnectConfigurationPtrInput + // Service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. See below. + ServiceRegistries ServiceServiceRegistriesPtrInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. + TaskDefinition pulumi.StringPtrInput + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers pulumi.StringMapInput + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration ServiceVolumeConfigurationPtrInput + // The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below. + VpcLatticeConfigurations ServiceVpcLatticeConfigurationArrayInput + // If `true`, this provider will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + WaitForSteadyState pulumi.BoolPtrInput +} + +func (ServiceState) ElementType() reflect.Type { + return reflect.TypeOf((*serviceState)(nil)).Elem() +} + +type serviceArgs struct { + // Information about the CloudWatch alarms. See below. + Alarms *ServiceAlarms `pulumi:"alarms"` + // ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. + AvailabilityZoneRebalancing *string `pulumi:"availabilityZoneRebalancing"` + // Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `forceNewDeployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. + CapacityProviderStrategies []ServiceCapacityProviderStrategy `pulumi:"capacityProviderStrategies"` + // ARN of an ECS cluster. + Cluster *string `pulumi:"cluster"` + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker *ServiceDeploymentCircuitBreaker `pulumi:"deploymentCircuitBreaker"` + // Configuration block for deployment controller configuration. See below. + DeploymentController *ServiceDeploymentController `pulumi:"deploymentController"` + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent *int `pulumi:"deploymentMaximumPercent"` + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent *int `pulumi:"deploymentMinimumHealthyPercent"` + // Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount *int `pulumi:"desiredCount"` + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete *bool `pulumi:"forceDelete"` + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `orderedPlacementStrategy` and `placementConstraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment *bool `pulumi:"forceNewDeployment"` + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds *int `pulumi:"healthCheckGracePeriodSeconds"` + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole *string `pulumi:"iamRole"` + // Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. Conflicts with `capacityProviderStrategy`. + LaunchType *string `pulumi:"launchType"` + // Configuration block for load balancers. See below. + LoadBalancers []ServiceLoadBalancer `pulumi:"loadBalancers"` + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration *ServiceNetworkConfiguration `pulumi:"networkConfiguration"` + // Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. The maximum number of `orderedPlacementStrategy` blocks is `5`. See below. + OrderedPlacementStrategies []ServiceOrderedPlacementStrategy `pulumi:"orderedPlacementStrategies"` + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. Maximum number of `placementConstraints` is `10`. See below. + PlacementConstraints []ServicePlacementConstraint `pulumi:"placementConstraints"` + // Platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion *string `pulumi:"platformVersion"` + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags *string `pulumi:"propagateTags"` + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy *string `pulumi:"schedulingStrategy"` + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration *ServiceServiceConnectConfiguration `pulumi:"serviceConnectConfiguration"` + // Service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. See below. + ServiceRegistries *ServiceServiceRegistries `pulumi:"serviceRegistries"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. + TaskDefinition *string `pulumi:"taskDefinition"` + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers map[string]string `pulumi:"triggers"` + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration *ServiceVolumeConfiguration `pulumi:"volumeConfiguration"` + // The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below. + VpcLatticeConfigurations []ServiceVpcLatticeConfiguration `pulumi:"vpcLatticeConfigurations"` + // If `true`, this provider will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + WaitForSteadyState *bool `pulumi:"waitForSteadyState"` +} + +// The set of arguments for constructing a Service resource. +type ServiceArgs struct { + // Information about the CloudWatch alarms. See below. + Alarms ServiceAlarmsPtrInput + // ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. + AvailabilityZoneRebalancing pulumi.StringPtrInput + // Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `forceNewDeployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. + CapacityProviderStrategies ServiceCapacityProviderStrategyArrayInput + // ARN of an ECS cluster. + Cluster pulumi.StringPtrInput + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker ServiceDeploymentCircuitBreakerPtrInput + // Configuration block for deployment controller configuration. See below. + DeploymentController ServiceDeploymentControllerPtrInput + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent pulumi.IntPtrInput + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent pulumi.IntPtrInput + // Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount pulumi.IntPtrInput + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags pulumi.BoolPtrInput + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand pulumi.BoolPtrInput + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete pulumi.BoolPtrInput + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `orderedPlacementStrategy` and `placementConstraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment pulumi.BoolPtrInput + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds pulumi.IntPtrInput + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole pulumi.StringPtrInput + // Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. Conflicts with `capacityProviderStrategy`. + LaunchType pulumi.StringPtrInput + // Configuration block for load balancers. See below. + LoadBalancers ServiceLoadBalancerArrayInput + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration ServiceNetworkConfigurationPtrInput + // Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. The maximum number of `orderedPlacementStrategy` blocks is `5`. See below. + OrderedPlacementStrategies ServiceOrderedPlacementStrategyArrayInput + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. Maximum number of `placementConstraints` is `10`. See below. + PlacementConstraints ServicePlacementConstraintArrayInput + // Platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringPtrInput + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags pulumi.StringPtrInput + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy pulumi.StringPtrInput + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration ServiceServiceConnectConfigurationPtrInput + // Service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. See below. + ServiceRegistries ServiceServiceRegistriesPtrInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. + TaskDefinition pulumi.StringPtrInput + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers pulumi.StringMapInput + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration ServiceVolumeConfigurationPtrInput + // The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below. + VpcLatticeConfigurations ServiceVpcLatticeConfigurationArrayInput + // If `true`, this provider will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + WaitForSteadyState pulumi.BoolPtrInput +} + +func (ServiceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serviceArgs)(nil)).Elem() +} + +type ServiceInput interface { + pulumi.Input + + ToServiceOutput() ServiceOutput + ToServiceOutputWithContext(ctx context.Context) ServiceOutput +} + +func (*Service) ElementType() reflect.Type { + return reflect.TypeOf((**Service)(nil)).Elem() +} + +func (i *Service) ToServiceOutput() ServiceOutput { + return i.ToServiceOutputWithContext(context.Background()) +} + +func (i *Service) ToServiceOutputWithContext(ctx context.Context) ServiceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceOutput) +} + +// ServiceArrayInput is an input type that accepts ServiceArray and ServiceArrayOutput values. +// You can construct a concrete instance of `ServiceArrayInput` via: +// +// ServiceArray{ ServiceArgs{...} } +type ServiceArrayInput interface { + pulumi.Input + + ToServiceArrayOutput() ServiceArrayOutput + ToServiceArrayOutputWithContext(context.Context) ServiceArrayOutput +} + +type ServiceArray []ServiceInput + +func (ServiceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Service)(nil)).Elem() +} + +func (i ServiceArray) ToServiceArrayOutput() ServiceArrayOutput { + return i.ToServiceArrayOutputWithContext(context.Background()) +} + +func (i ServiceArray) ToServiceArrayOutputWithContext(ctx context.Context) ServiceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceArrayOutput) +} + +// ServiceMapInput is an input type that accepts ServiceMap and ServiceMapOutput values. +// You can construct a concrete instance of `ServiceMapInput` via: +// +// ServiceMap{ "key": ServiceArgs{...} } +type ServiceMapInput interface { + pulumi.Input + + ToServiceMapOutput() ServiceMapOutput + ToServiceMapOutputWithContext(context.Context) ServiceMapOutput +} + +type ServiceMap map[string]ServiceInput + +func (ServiceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Service)(nil)).Elem() +} + +func (i ServiceMap) ToServiceMapOutput() ServiceMapOutput { + return i.ToServiceMapOutputWithContext(context.Background()) +} + +func (i ServiceMap) ToServiceMapOutputWithContext(ctx context.Context) ServiceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceMapOutput) +} + +type ServiceOutput struct{ *pulumi.OutputState } + +func (ServiceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Service)(nil)).Elem() +} + +func (o ServiceOutput) ToServiceOutput() ServiceOutput { + return o +} + +func (o ServiceOutput) ToServiceOutputWithContext(ctx context.Context) ServiceOutput { + return o +} + +// Information about the CloudWatch alarms. See below. +func (o ServiceOutput) Alarms() ServiceAlarmsPtrOutput { + return o.ApplyT(func(v *Service) ServiceAlarmsPtrOutput { return v.Alarms }).(ServiceAlarmsPtrOutput) +} + +// ECS automatically redistributes tasks within a service across Availability Zones (AZs) to mitigate the risk of impaired application availability due to underlying infrastructure failures and task lifecycle activities. The valid values are `ENABLED` and `DISABLED`. Defaults to `DISABLED`. +func (o ServiceOutput) AvailabilityZoneRebalancing() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Service) pulumi.StringPtrOutput { return v.AvailabilityZoneRebalancing }).(pulumi.StringPtrOutput) +} + +// Capacity provider strategies to use for the service. Can be one or more. These can be updated without destroying and recreating the service only if `forceNewDeployment = true` and not changing from 0 `capacityProviderStrategy` blocks to greater than 0, or vice versa. See below. Conflicts with `launchType`. +func (o ServiceOutput) CapacityProviderStrategies() ServiceCapacityProviderStrategyArrayOutput { + return o.ApplyT(func(v *Service) ServiceCapacityProviderStrategyArrayOutput { return v.CapacityProviderStrategies }).(ServiceCapacityProviderStrategyArrayOutput) +} + +// ARN of an ECS cluster. +func (o ServiceOutput) Cluster() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.Cluster }).(pulumi.StringOutput) +} + +// Configuration block for deployment circuit breaker. See below. +func (o ServiceOutput) DeploymentCircuitBreaker() ServiceDeploymentCircuitBreakerPtrOutput { + return o.ApplyT(func(v *Service) ServiceDeploymentCircuitBreakerPtrOutput { return v.DeploymentCircuitBreaker }).(ServiceDeploymentCircuitBreakerPtrOutput) +} + +// Configuration block for deployment controller configuration. See below. +func (o ServiceOutput) DeploymentController() ServiceDeploymentControllerPtrOutput { + return o.ApplyT(func(v *Service) ServiceDeploymentControllerPtrOutput { return v.DeploymentController }).(ServiceDeploymentControllerPtrOutput) +} + +// Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. +func (o ServiceOutput) DeploymentMaximumPercent() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Service) pulumi.IntPtrOutput { return v.DeploymentMaximumPercent }).(pulumi.IntPtrOutput) +} + +// Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. +func (o ServiceOutput) DeploymentMinimumHealthyPercent() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Service) pulumi.IntPtrOutput { return v.DeploymentMinimumHealthyPercent }).(pulumi.IntPtrOutput) +} + +// Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. +func (o ServiceOutput) DesiredCount() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Service) pulumi.IntPtrOutput { return v.DesiredCount }).(pulumi.IntPtrOutput) +} + +// Whether to enable Amazon ECS managed tags for the tasks within the service. +func (o ServiceOutput) EnableEcsManagedTags() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Service) pulumi.BoolPtrOutput { return v.EnableEcsManagedTags }).(pulumi.BoolPtrOutput) +} + +// Whether to enable Amazon ECS Exec for the tasks within the service. +func (o ServiceOutput) EnableExecuteCommand() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Service) pulumi.BoolPtrOutput { return v.EnableExecuteCommand }).(pulumi.BoolPtrOutput) +} + +// Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. +func (o ServiceOutput) ForceDelete() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Service) pulumi.BoolPtrOutput { return v.ForceDelete }).(pulumi.BoolPtrOutput) +} + +// Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `orderedPlacementStrategy` and `placementConstraints` updates. +// When using the forceNewDeployment property you also need to configure the triggers property. +func (o ServiceOutput) ForceNewDeployment() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Service) pulumi.BoolPtrOutput { return v.ForceNewDeployment }).(pulumi.BoolPtrOutput) +} + +// Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. +func (o ServiceOutput) HealthCheckGracePeriodSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Service) pulumi.IntPtrOutput { return v.HealthCheckGracePeriodSeconds }).(pulumi.IntPtrOutput) +} + +// ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. +func (o ServiceOutput) IamRole() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.IamRole }).(pulumi.StringOutput) +} + +// Launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. Conflicts with `capacityProviderStrategy`. +func (o ServiceOutput) LaunchType() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.LaunchType }).(pulumi.StringOutput) +} + +// Configuration block for load balancers. See below. +func (o ServiceOutput) LoadBalancers() ServiceLoadBalancerArrayOutput { + return o.ApplyT(func(v *Service) ServiceLoadBalancerArrayOutput { return v.LoadBalancers }).(ServiceLoadBalancerArrayOutput) +} + +// Name of the service (up to 255 letters, numbers, hyphens, and underscores) +// +// The following arguments are optional: +func (o ServiceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. +func (o ServiceOutput) NetworkConfiguration() ServiceNetworkConfigurationPtrOutput { + return o.ApplyT(func(v *Service) ServiceNetworkConfigurationPtrOutput { return v.NetworkConfiguration }).(ServiceNetworkConfigurationPtrOutput) +} + +// Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. The maximum number of `orderedPlacementStrategy` blocks is `5`. See below. +func (o ServiceOutput) OrderedPlacementStrategies() ServiceOrderedPlacementStrategyArrayOutput { + return o.ApplyT(func(v *Service) ServiceOrderedPlacementStrategyArrayOutput { return v.OrderedPlacementStrategies }).(ServiceOrderedPlacementStrategyArrayOutput) +} + +// Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `forceNewDeployment` is enabled. Maximum number of `placementConstraints` is `10`. See below. +func (o ServiceOutput) PlacementConstraints() ServicePlacementConstraintArrayOutput { + return o.ApplyT(func(v *Service) ServicePlacementConstraintArrayOutput { return v.PlacementConstraints }).(ServicePlacementConstraintArrayOutput) +} + +// Platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). +func (o ServiceOutput) PlatformVersion() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.PlatformVersion }).(pulumi.StringOutput) +} + +// Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. +func (o ServiceOutput) PropagateTags() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Service) pulumi.StringPtrOutput { return v.PropagateTags }).(pulumi.StringPtrOutput) +} + +// Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). +func (o ServiceOutput) SchedulingStrategy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Service) pulumi.StringPtrOutput { return v.SchedulingStrategy }).(pulumi.StringPtrOutput) +} + +// ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. +func (o ServiceOutput) ServiceConnectConfiguration() ServiceServiceConnectConfigurationPtrOutput { + return o.ApplyT(func(v *Service) ServiceServiceConnectConfigurationPtrOutput { return v.ServiceConnectConfiguration }).(ServiceServiceConnectConfigurationPtrOutput) +} + +// Service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. See below. +func (o ServiceOutput) ServiceRegistries() ServiceServiceRegistriesPtrOutput { + return o.ApplyT(func(v *Service) ServiceServiceRegistriesPtrOutput { return v.ServiceRegistries }).(ServiceServiceRegistriesPtrOutput) +} + +// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o ServiceOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Service) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o ServiceOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *Service) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Required unless using the `EXTERNAL` deployment controller. If a revision is not specified, the latest `ACTIVE` revision is used. +func (o ServiceOutput) TaskDefinition() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Service) pulumi.StringPtrOutput { return v.TaskDefinition }).(pulumi.StringPtrOutput) +} + +// Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. +func (o ServiceOutput) Triggers() pulumi.StringMapOutput { + return o.ApplyT(func(v *Service) pulumi.StringMapOutput { return v.Triggers }).(pulumi.StringMapOutput) +} + +// Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. +func (o ServiceOutput) VolumeConfiguration() ServiceVolumeConfigurationPtrOutput { + return o.ApplyT(func(v *Service) ServiceVolumeConfigurationPtrOutput { return v.VolumeConfiguration }).(ServiceVolumeConfigurationPtrOutput) +} + +// The VPC Lattice configuration for your service that allows Lattice to connect, secure, and monitor your service across multiple accounts and VPCs. See below. +func (o ServiceOutput) VpcLatticeConfigurations() ServiceVpcLatticeConfigurationArrayOutput { + return o.ApplyT(func(v *Service) ServiceVpcLatticeConfigurationArrayOutput { return v.VpcLatticeConfigurations }).(ServiceVpcLatticeConfigurationArrayOutput) +} + +// If `true`, this provider will wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. +func (o ServiceOutput) WaitForSteadyState() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Service) pulumi.BoolPtrOutput { return v.WaitForSteadyState }).(pulumi.BoolPtrOutput) +} + +type ServiceArrayOutput struct{ *pulumi.OutputState } + +func (ServiceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Service)(nil)).Elem() +} + +func (o ServiceArrayOutput) ToServiceArrayOutput() ServiceArrayOutput { + return o +} + +func (o ServiceArrayOutput) ToServiceArrayOutputWithContext(ctx context.Context) ServiceArrayOutput { + return o +} + +func (o ServiceArrayOutput) Index(i pulumi.IntInput) ServiceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Service { + return vs[0].([]*Service)[vs[1].(int)] + }).(ServiceOutput) +} + +type ServiceMapOutput struct{ *pulumi.OutputState } + +func (ServiceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Service)(nil)).Elem() +} + +func (o ServiceMapOutput) ToServiceMapOutput() ServiceMapOutput { + return o +} + +func (o ServiceMapOutput) ToServiceMapOutputWithContext(ctx context.Context) ServiceMapOutput { + return o +} + +func (o ServiceMapOutput) MapIndex(k pulumi.StringInput) ServiceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Service { + return vs[0].(map[string]*Service)[vs[1].(string)] + }).(ServiceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServiceInput)(nil)).Elem(), &Service{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceArrayInput)(nil)).Elem(), ServiceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceMapInput)(nil)).Elem(), ServiceMap{}) + pulumi.RegisterOutputType(ServiceOutput{}) + pulumi.RegisterOutputType(ServiceArrayOutput{}) + pulumi.RegisterOutputType(ServiceMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/tag.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/tag.go new file mode 100644 index 000000000..7a46ee82f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/tag.go @@ -0,0 +1,304 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages an individual ECS resource tag. This resource should only be used in cases where ECS resources are created outside the provider (e.g., ECS Clusters implicitly created by Batch Compute Environments). +// +// > **NOTE:** This tagging resource should not be combined with the resource for managing the parent resource. For example, using `ecs.Cluster` and `ecs.Tag` to manage tags of the same ECS Cluster will cause a perpetual difference where the `ecs.Cluster` resource will try to remove the tag being added by the `ecs.Tag` resource. +// +// > **NOTE:** This tagging resource does not use the provider `ignoreTags` configuration. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/batch" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := batch.NewComputeEnvironment(ctx, "example", &batch.ComputeEnvironmentArgs{ +// ComputeEnvironmentName: pulumi.String("example"), +// ServiceRole: pulumi.Any(exampleAwsIamRole.Arn), +// Type: pulumi.String("UNMANAGED"), +// }) +// if err != nil { +// return err +// } +// _, err = ecs.NewTag(ctx, "example", &ecs.TagArgs{ +// ResourceArn: example.EcsClusterArn, +// Key: pulumi.String("Name"), +// Value: pulumi.String("Hello World"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import `aws_ecs_tag` using the ECS resource identifier and key, separated by a comma (`,`). For example: +// +// ```sh +// $ pulumi import aws:ecs/tag:Tag example arn:aws:ecs:us-east-1:123456789012:cluster/example,Name +// ``` +type Tag struct { + pulumi.CustomResourceState + + // Tag name. + Key pulumi.StringOutput `pulumi:"key"` + // Amazon Resource Name (ARN) of the ECS resource to tag. + ResourceArn pulumi.StringOutput `pulumi:"resourceArn"` + // Tag value. + Value pulumi.StringOutput `pulumi:"value"` +} + +// NewTag registers a new resource with the given unique name, arguments, and options. +func NewTag(ctx *pulumi.Context, + name string, args *TagArgs, opts ...pulumi.ResourceOption) (*Tag, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Key == nil { + return nil, errors.New("invalid value for required argument 'Key'") + } + if args.ResourceArn == nil { + return nil, errors.New("invalid value for required argument 'ResourceArn'") + } + if args.Value == nil { + return nil, errors.New("invalid value for required argument 'Value'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Tag + err := ctx.RegisterResource("aws:ecs/tag:Tag", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTag gets an existing Tag 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 GetTag(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TagState, opts ...pulumi.ResourceOption) (*Tag, error) { + var resource Tag + err := ctx.ReadResource("aws:ecs/tag:Tag", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Tag resources. +type tagState struct { + // Tag name. + Key *string `pulumi:"key"` + // Amazon Resource Name (ARN) of the ECS resource to tag. + ResourceArn *string `pulumi:"resourceArn"` + // Tag value. + Value *string `pulumi:"value"` +} + +type TagState struct { + // Tag name. + Key pulumi.StringPtrInput + // Amazon Resource Name (ARN) of the ECS resource to tag. + ResourceArn pulumi.StringPtrInput + // Tag value. + Value pulumi.StringPtrInput +} + +func (TagState) ElementType() reflect.Type { + return reflect.TypeOf((*tagState)(nil)).Elem() +} + +type tagArgs struct { + // Tag name. + Key string `pulumi:"key"` + // Amazon Resource Name (ARN) of the ECS resource to tag. + ResourceArn string `pulumi:"resourceArn"` + // Tag value. + Value string `pulumi:"value"` +} + +// The set of arguments for constructing a Tag resource. +type TagArgs struct { + // Tag name. + Key pulumi.StringInput + // Amazon Resource Name (ARN) of the ECS resource to tag. + ResourceArn pulumi.StringInput + // Tag value. + Value pulumi.StringInput +} + +func (TagArgs) ElementType() reflect.Type { + return reflect.TypeOf((*tagArgs)(nil)).Elem() +} + +type TagInput interface { + pulumi.Input + + ToTagOutput() TagOutput + ToTagOutputWithContext(ctx context.Context) TagOutput +} + +func (*Tag) ElementType() reflect.Type { + return reflect.TypeOf((**Tag)(nil)).Elem() +} + +func (i *Tag) ToTagOutput() TagOutput { + return i.ToTagOutputWithContext(context.Background()) +} + +func (i *Tag) ToTagOutputWithContext(ctx context.Context) TagOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagOutput) +} + +// TagArrayInput is an input type that accepts TagArray and TagArrayOutput values. +// You can construct a concrete instance of `TagArrayInput` via: +// +// TagArray{ TagArgs{...} } +type TagArrayInput interface { + pulumi.Input + + ToTagArrayOutput() TagArrayOutput + ToTagArrayOutputWithContext(context.Context) TagArrayOutput +} + +type TagArray []TagInput + +func (TagArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Tag)(nil)).Elem() +} + +func (i TagArray) ToTagArrayOutput() TagArrayOutput { + return i.ToTagArrayOutputWithContext(context.Background()) +} + +func (i TagArray) ToTagArrayOutputWithContext(ctx context.Context) TagArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagArrayOutput) +} + +// TagMapInput is an input type that accepts TagMap and TagMapOutput values. +// You can construct a concrete instance of `TagMapInput` via: +// +// TagMap{ "key": TagArgs{...} } +type TagMapInput interface { + pulumi.Input + + ToTagMapOutput() TagMapOutput + ToTagMapOutputWithContext(context.Context) TagMapOutput +} + +type TagMap map[string]TagInput + +func (TagMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Tag)(nil)).Elem() +} + +func (i TagMap) ToTagMapOutput() TagMapOutput { + return i.ToTagMapOutputWithContext(context.Background()) +} + +func (i TagMap) ToTagMapOutputWithContext(ctx context.Context) TagMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagMapOutput) +} + +type TagOutput struct{ *pulumi.OutputState } + +func (TagOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Tag)(nil)).Elem() +} + +func (o TagOutput) ToTagOutput() TagOutput { + return o +} + +func (o TagOutput) ToTagOutputWithContext(ctx context.Context) TagOutput { + return o +} + +// Tag name. +func (o TagOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v *Tag) pulumi.StringOutput { return v.Key }).(pulumi.StringOutput) +} + +// Amazon Resource Name (ARN) of the ECS resource to tag. +func (o TagOutput) ResourceArn() pulumi.StringOutput { + return o.ApplyT(func(v *Tag) pulumi.StringOutput { return v.ResourceArn }).(pulumi.StringOutput) +} + +// Tag value. +func (o TagOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v *Tag) pulumi.StringOutput { return v.Value }).(pulumi.StringOutput) +} + +type TagArrayOutput struct{ *pulumi.OutputState } + +func (TagArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Tag)(nil)).Elem() +} + +func (o TagArrayOutput) ToTagArrayOutput() TagArrayOutput { + return o +} + +func (o TagArrayOutput) ToTagArrayOutputWithContext(ctx context.Context) TagArrayOutput { + return o +} + +func (o TagArrayOutput) Index(i pulumi.IntInput) TagOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Tag { + return vs[0].([]*Tag)[vs[1].(int)] + }).(TagOutput) +} + +type TagMapOutput struct{ *pulumi.OutputState } + +func (TagMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Tag)(nil)).Elem() +} + +func (o TagMapOutput) ToTagMapOutput() TagMapOutput { + return o +} + +func (o TagMapOutput) ToTagMapOutputWithContext(ctx context.Context) TagMapOutput { + return o +} + +func (o TagMapOutput) MapIndex(k pulumi.StringInput) TagOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Tag { + return vs[0].(map[string]*Tag)[vs[1].(string)] + }).(TagOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TagInput)(nil)).Elem(), &Tag{}) + pulumi.RegisterInputType(reflect.TypeOf((*TagArrayInput)(nil)).Elem(), TagArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TagMapInput)(nil)).Elem(), TagMap{}) + pulumi.RegisterOutputType(TagOutput{}) + pulumi.RegisterOutputType(TagArrayOutput{}) + pulumi.RegisterOutputType(TagMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskDefinition.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskDefinition.go new file mode 100644 index 000000000..7405a29b6 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskDefinition.go @@ -0,0 +1,958 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages a revision of an ECS task definition to be used in `ecs.Service`. +// +// ## Example Usage +// +// ### Basic Example +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal([]interface{}{ +// map[string]interface{}{ +// "name": "first", +// "image": "service-first", +// "cpu": 10, +// "memory": 512, +// "essential": true, +// "portMappings": []map[string]interface{}{ +// map[string]interface{}{ +// "containerPort": 80, +// "hostPort": 80, +// }, +// }, +// }, +// map[string]interface{}{ +// "name": "second", +// "image": "service-second", +// "cpu": 10, +// "memory": 256, +// "essential": true, +// "portMappings": []map[string]interface{}{ +// map[string]interface{}{ +// "containerPort": 443, +// "hostPort": 443, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = ecs.NewTaskDefinition(ctx, "service", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("service"), +// ContainerDefinitions: pulumi.String(json0), +// Volumes: ecs.TaskDefinitionVolumeArray{ +// &ecs.TaskDefinitionVolumeArgs{ +// Name: pulumi.String("service-storage"), +// HostPath: pulumi.String("/ecs/service-storage"), +// }, +// }, +// PlacementConstraints: ecs.TaskDefinitionPlacementConstraintArray{ +// &ecs.TaskDefinitionPlacementConstraintArgs{ +// Type: pulumi.String("memberOf"), +// Expression: pulumi.String("attribute:ecs.availability-zone in [us-west-2a, us-west-2b]"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### With AppMesh Proxy +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "task-definitions/service.json", +// }, nil) +// if err != nil { +// return err +// } +// _, err = ecs.NewTaskDefinition(ctx, "service", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("service"), +// ContainerDefinitions: pulumi.String(invokeFile.Result), +// ProxyConfiguration: &ecs.TaskDefinitionProxyConfigurationArgs{ +// Type: pulumi.String("APPMESH"), +// ContainerName: pulumi.String("applicationContainerName"), +// Properties: pulumi.StringMap{ +// "AppPorts": pulumi.String("8080"), +// "EgressIgnoredIPs": pulumi.String("169.254.170.2,169.254.169.254"), +// "IgnoredUID": pulumi.String("1337"), +// "ProxyEgressPort": pulumi.String("15001"), +// "ProxyIngressPort": pulumi.String("15000"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example Using `dockerVolumeConfiguration` +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "task-definitions/service.json", +// }, nil) +// if err != nil { +// return err +// } +// _, err = ecs.NewTaskDefinition(ctx, "service", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("service"), +// ContainerDefinitions: pulumi.String(invokeFile.Result), +// Volumes: ecs.TaskDefinitionVolumeArray{ +// &ecs.TaskDefinitionVolumeArgs{ +// Name: pulumi.String("service-storage"), +// DockerVolumeConfiguration: &ecs.TaskDefinitionVolumeDockerVolumeConfigurationArgs{ +// Scope: pulumi.String("shared"), +// Autoprovision: pulumi.Bool(true), +// Driver: pulumi.String("local"), +// DriverOpts: pulumi.StringMap{ +// "type": pulumi.String("nfs"), +// "device": pulumi.Sprintf("%v:/", fs.DnsName), +// "o": pulumi.Sprintf("addr=%v,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport", fs.DnsName), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example Using `efsVolumeConfiguration` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "task-definitions/service.json", +// }, nil) +// if err != nil { +// return err +// } +// _, err = ecs.NewTaskDefinition(ctx, "service", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("service"), +// ContainerDefinitions: pulumi.String(invokeFile.Result), +// Volumes: ecs.TaskDefinitionVolumeArray{ +// &ecs.TaskDefinitionVolumeArgs{ +// Name: pulumi.String("service-storage"), +// EfsVolumeConfiguration: &ecs.TaskDefinitionVolumeEfsVolumeConfigurationArgs{ +// FileSystemId: pulumi.Any(fs.Id), +// RootDirectory: pulumi.String("/opt/data"), +// TransitEncryption: pulumi.String("ENABLED"), +// TransitEncryptionPort: pulumi.Int(2999), +// AuthorizationConfig: &ecs.TaskDefinitionVolumeEfsVolumeConfigurationAuthorizationConfigArgs{ +// AccessPointId: pulumi.Any(test.Id), +// Iam: pulumi.String("ENABLED"), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example Using `fsxWindowsFileServerVolumeConfiguration` +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/secretsmanager" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "username": "admin", +// "password": testAwsDirectoryServiceDirectory.Password, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// test, err := secretsmanager.NewSecretVersion(ctx, "test", &secretsmanager.SecretVersionArgs{ +// SecretId: pulumi.Any(testAwsSecretsmanagerSecret.Id), +// SecretString: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "task-definitions/service.json", +// }, nil) +// if err != nil { +// return err +// } +// _, err = ecs.NewTaskDefinition(ctx, "service", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("service"), +// ContainerDefinitions: pulumi.String(invokeFile.Result), +// Volumes: ecs.TaskDefinitionVolumeArray{ +// &ecs.TaskDefinitionVolumeArgs{ +// Name: pulumi.String("service-storage"), +// FsxWindowsFileServerVolumeConfiguration: &ecs.TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationArgs{ +// FileSystemId: pulumi.Any(testAwsFsxWindowsFileSystem.Id), +// RootDirectory: pulumi.String("\\data"), +// AuthorizationConfig: &ecs.TaskDefinitionVolumeFsxWindowsFileServerVolumeConfigurationAuthorizationConfigArgs{ +// CredentialsParameter: test.Arn, +// Domain: pulumi.Any(testAwsDirectoryServiceDirectory.Name), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example Using `containerDefinitions` and `inferenceAccelerator` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewTaskDefinition(ctx, "test", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("test"), +// ContainerDefinitions: pulumi.String(`[ +// { +// "cpu": 10, +// "command": ["sleep", "10"], +// "entryPoint": ["/"], +// "environment": [ +// {"name": "VARNAME", "value": "VARVAL"} +// ], +// "essential": true, +// "image": "jenkins", +// "memory": 128, +// "name": "jenkins", +// "portMappings": [ +// { +// "containerPort": 80, +// "hostPort": 8080 +// } +// ], +// "resourceRequirements":[ +// { +// "type":"InferenceAccelerator", +// "value":"device_1" +// } +// ] +// } +// +// ] +// `), +// +// InferenceAccelerators: ecs.TaskDefinitionInferenceAcceleratorArray{ +// &ecs.TaskDefinitionInferenceAcceleratorArgs{ +// DeviceName: pulumi.String("device_1"), +// DeviceType: pulumi.String("eia1.medium"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example Using `runtimePlatform` and `fargate` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewTaskDefinition(ctx, "test", &ecs.TaskDefinitionArgs{ +// Family: pulumi.String("test"), +// RequiresCompatibilities: pulumi.StringArray{ +// pulumi.String("FARGATE"), +// }, +// NetworkMode: pulumi.String("awsvpc"), +// Cpu: pulumi.String("1024"), +// Memory: pulumi.String("2048"), +// ContainerDefinitions: pulumi.String(`[ +// { +// "name": "iis", +// "image": "mcr.microsoft.com/windows/servercore/iis", +// "cpu": 1024, +// "memory": 2048, +// "essential": true +// } +// +// ] +// `), +// +// RuntimePlatform: &ecs.TaskDefinitionRuntimePlatformArgs{ +// OperatingSystemFamily: pulumi.String("WINDOWS_SERVER_2019_CORE"), +// CpuArchitecture: pulumi.String("X86_64"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import ECS Task Definitions using their ARNs. For example: +// +// ```sh +// $ pulumi import aws:ecs/taskDefinition:TaskDefinition example arn:aws:ecs:us-east-1:012345678910:task-definition/mytaskfamily:123 +// ``` +type TaskDefinition struct { + pulumi.CustomResourceState + + // Full ARN of the Task Definition (including both `family` and `revision`). + Arn pulumi.StringOutput `pulumi:"arn"` + // ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details. + ArnWithoutRevision pulumi.StringOutput `pulumi:"arnWithoutRevision"` + // A list of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide). + ContainerDefinitions pulumi.StringOutput `pulumi:"containerDefinitions"` + // Number of cpu units used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Cpu pulumi.StringPtrOutput `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage TaskDefinitionEphemeralStoragePtrOutput `pulumi:"ephemeralStorage"` + // ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume. + ExecutionRoleArn pulumi.StringPtrOutput `pulumi:"executionRoleArn"` + // A unique name for your task definition. + // + // The following arguments are optional: + Family pulumi.StringOutput `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators TaskDefinitionInferenceAcceleratorArrayOutput `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode pulumi.StringPtrOutput `pulumi:"ipcMode"` + // Amount (in MiB) of memory used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Memory pulumi.StringPtrOutput `pulumi:"memory"` + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode pulumi.StringOutput `pulumi:"networkMode"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode pulumi.StringPtrOutput `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placementConstraints` is `10`. Detailed below. + PlacementConstraints TaskDefinitionPlacementConstraintArrayOutput `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration TaskDefinitionProxyConfigurationPtrOutput `pulumi:"proxyConfiguration"` + // Set of launch types required by the task. The valid values are `EC2` and `FARGATE`. + RequiresCompatibilities pulumi.StringArrayOutput `pulumi:"requiresCompatibilities"` + // Revision of the task in a particular family. + Revision pulumi.IntOutput `pulumi:"revision"` + // Configuration block for runtimePlatform that containers in your task may use. + RuntimePlatform TaskDefinitionRuntimePlatformPtrOutput `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy pulumi.BoolPtrOutput `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services. + TaskRoleArn pulumi.StringPtrOutput `pulumi:"taskRoleArn"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest pulumi.BoolPtrOutput `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes TaskDefinitionVolumeArrayOutput `pulumi:"volumes"` +} + +// NewTaskDefinition registers a new resource with the given unique name, arguments, and options. +func NewTaskDefinition(ctx *pulumi.Context, + name string, args *TaskDefinitionArgs, opts ...pulumi.ResourceOption) (*TaskDefinition, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ContainerDefinitions == nil { + return nil, errors.New("invalid value for required argument 'ContainerDefinitions'") + } + if args.Family == nil { + return nil, errors.New("invalid value for required argument 'Family'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource TaskDefinition + err := ctx.RegisterResource("aws:ecs/taskDefinition:TaskDefinition", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTaskDefinition gets an existing TaskDefinition 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 GetTaskDefinition(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TaskDefinitionState, opts ...pulumi.ResourceOption) (*TaskDefinition, error) { + var resource TaskDefinition + err := ctx.ReadResource("aws:ecs/taskDefinition:TaskDefinition", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TaskDefinition resources. +type taskDefinitionState struct { + // Full ARN of the Task Definition (including both `family` and `revision`). + Arn *string `pulumi:"arn"` + // ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details. + ArnWithoutRevision *string `pulumi:"arnWithoutRevision"` + // A list of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide). + ContainerDefinitions *string `pulumi:"containerDefinitions"` + // Number of cpu units used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Cpu *string `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage *TaskDefinitionEphemeralStorage `pulumi:"ephemeralStorage"` + // ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume. + ExecutionRoleArn *string `pulumi:"executionRoleArn"` + // A unique name for your task definition. + // + // The following arguments are optional: + Family *string `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators []TaskDefinitionInferenceAccelerator `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode *string `pulumi:"ipcMode"` + // Amount (in MiB) of memory used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Memory *string `pulumi:"memory"` + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode *string `pulumi:"networkMode"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode *string `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placementConstraints` is `10`. Detailed below. + PlacementConstraints []TaskDefinitionPlacementConstraint `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration *TaskDefinitionProxyConfiguration `pulumi:"proxyConfiguration"` + // Set of launch types required by the task. The valid values are `EC2` and `FARGATE`. + RequiresCompatibilities []string `pulumi:"requiresCompatibilities"` + // Revision of the task in a particular family. + Revision *int `pulumi:"revision"` + // Configuration block for runtimePlatform that containers in your task may use. + RuntimePlatform *TaskDefinitionRuntimePlatform `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy *bool `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services. + TaskRoleArn *string `pulumi:"taskRoleArn"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest *bool `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes []TaskDefinitionVolume `pulumi:"volumes"` +} + +type TaskDefinitionState struct { + // Full ARN of the Task Definition (including both `family` and `revision`). + Arn pulumi.StringPtrInput + // ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details. + ArnWithoutRevision pulumi.StringPtrInput + // A list of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide). + ContainerDefinitions pulumi.StringPtrInput + // Number of cpu units used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Cpu pulumi.StringPtrInput + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage TaskDefinitionEphemeralStoragePtrInput + // ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume. + ExecutionRoleArn pulumi.StringPtrInput + // A unique name for your task definition. + // + // The following arguments are optional: + Family pulumi.StringPtrInput + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators TaskDefinitionInferenceAcceleratorArrayInput + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode pulumi.StringPtrInput + // Amount (in MiB) of memory used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Memory pulumi.StringPtrInput + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode pulumi.StringPtrInput + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode pulumi.StringPtrInput + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placementConstraints` is `10`. Detailed below. + PlacementConstraints TaskDefinitionPlacementConstraintArrayInput + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration TaskDefinitionProxyConfigurationPtrInput + // Set of launch types required by the task. The valid values are `EC2` and `FARGATE`. + RequiresCompatibilities pulumi.StringArrayInput + // Revision of the task in a particular family. + Revision pulumi.IntPtrInput + // Configuration block for runtimePlatform that containers in your task may use. + RuntimePlatform TaskDefinitionRuntimePlatformPtrInput + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy pulumi.BoolPtrInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services. + TaskRoleArn pulumi.StringPtrInput + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest pulumi.BoolPtrInput + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes TaskDefinitionVolumeArrayInput +} + +func (TaskDefinitionState) ElementType() reflect.Type { + return reflect.TypeOf((*taskDefinitionState)(nil)).Elem() +} + +type taskDefinitionArgs struct { + // A list of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide). + ContainerDefinitions string `pulumi:"containerDefinitions"` + // Number of cpu units used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Cpu *string `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage *TaskDefinitionEphemeralStorage `pulumi:"ephemeralStorage"` + // ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume. + ExecutionRoleArn *string `pulumi:"executionRoleArn"` + // A unique name for your task definition. + // + // The following arguments are optional: + Family string `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators []TaskDefinitionInferenceAccelerator `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode *string `pulumi:"ipcMode"` + // Amount (in MiB) of memory used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Memory *string `pulumi:"memory"` + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode *string `pulumi:"networkMode"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode *string `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placementConstraints` is `10`. Detailed below. + PlacementConstraints []TaskDefinitionPlacementConstraint `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration *TaskDefinitionProxyConfiguration `pulumi:"proxyConfiguration"` + // Set of launch types required by the task. The valid values are `EC2` and `FARGATE`. + RequiresCompatibilities []string `pulumi:"requiresCompatibilities"` + // Configuration block for runtimePlatform that containers in your task may use. + RuntimePlatform *TaskDefinitionRuntimePlatform `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy *bool `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services. + TaskRoleArn *string `pulumi:"taskRoleArn"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest *bool `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes []TaskDefinitionVolume `pulumi:"volumes"` +} + +// The set of arguments for constructing a TaskDefinition resource. +type TaskDefinitionArgs struct { + // A list of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide). + ContainerDefinitions pulumi.StringInput + // Number of cpu units used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Cpu pulumi.StringPtrInput + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage TaskDefinitionEphemeralStoragePtrInput + // ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume. + ExecutionRoleArn pulumi.StringPtrInput + // A unique name for your task definition. + // + // The following arguments are optional: + Family pulumi.StringInput + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators TaskDefinitionInferenceAcceleratorArrayInput + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode pulumi.StringPtrInput + // Amount (in MiB) of memory used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. + Memory pulumi.StringPtrInput + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode pulumi.StringPtrInput + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode pulumi.StringPtrInput + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placementConstraints` is `10`. Detailed below. + PlacementConstraints TaskDefinitionPlacementConstraintArrayInput + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration TaskDefinitionProxyConfigurationPtrInput + // Set of launch types required by the task. The valid values are `EC2` and `FARGATE`. + RequiresCompatibilities pulumi.StringArrayInput + // Configuration block for runtimePlatform that containers in your task may use. + RuntimePlatform TaskDefinitionRuntimePlatformPtrInput + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy pulumi.BoolPtrInput + // Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services. + TaskRoleArn pulumi.StringPtrInput + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest pulumi.BoolPtrInput + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes TaskDefinitionVolumeArrayInput +} + +func (TaskDefinitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*taskDefinitionArgs)(nil)).Elem() +} + +type TaskDefinitionInput interface { + pulumi.Input + + ToTaskDefinitionOutput() TaskDefinitionOutput + ToTaskDefinitionOutputWithContext(ctx context.Context) TaskDefinitionOutput +} + +func (*TaskDefinition) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinition)(nil)).Elem() +} + +func (i *TaskDefinition) ToTaskDefinitionOutput() TaskDefinitionOutput { + return i.ToTaskDefinitionOutputWithContext(context.Background()) +} + +func (i *TaskDefinition) ToTaskDefinitionOutputWithContext(ctx context.Context) TaskDefinitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionOutput) +} + +// TaskDefinitionArrayInput is an input type that accepts TaskDefinitionArray and TaskDefinitionArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionArrayInput` via: +// +// TaskDefinitionArray{ TaskDefinitionArgs{...} } +type TaskDefinitionArrayInput interface { + pulumi.Input + + ToTaskDefinitionArrayOutput() TaskDefinitionArrayOutput + ToTaskDefinitionArrayOutputWithContext(context.Context) TaskDefinitionArrayOutput +} + +type TaskDefinitionArray []TaskDefinitionInput + +func (TaskDefinitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TaskDefinition)(nil)).Elem() +} + +func (i TaskDefinitionArray) ToTaskDefinitionArrayOutput() TaskDefinitionArrayOutput { + return i.ToTaskDefinitionArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionArray) ToTaskDefinitionArrayOutputWithContext(ctx context.Context) TaskDefinitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionArrayOutput) +} + +// TaskDefinitionMapInput is an input type that accepts TaskDefinitionMap and TaskDefinitionMapOutput values. +// You can construct a concrete instance of `TaskDefinitionMapInput` via: +// +// TaskDefinitionMap{ "key": TaskDefinitionArgs{...} } +type TaskDefinitionMapInput interface { + pulumi.Input + + ToTaskDefinitionMapOutput() TaskDefinitionMapOutput + ToTaskDefinitionMapOutputWithContext(context.Context) TaskDefinitionMapOutput +} + +type TaskDefinitionMap map[string]TaskDefinitionInput + +func (TaskDefinitionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TaskDefinition)(nil)).Elem() +} + +func (i TaskDefinitionMap) ToTaskDefinitionMapOutput() TaskDefinitionMapOutput { + return i.ToTaskDefinitionMapOutputWithContext(context.Background()) +} + +func (i TaskDefinitionMap) ToTaskDefinitionMapOutputWithContext(ctx context.Context) TaskDefinitionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionMapOutput) +} + +type TaskDefinitionOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinition)(nil)).Elem() +} + +func (o TaskDefinitionOutput) ToTaskDefinitionOutput() TaskDefinitionOutput { + return o +} + +func (o TaskDefinitionOutput) ToTaskDefinitionOutputWithContext(ctx context.Context) TaskDefinitionOutput { + return o +} + +// Full ARN of the Task Definition (including both `family` and `revision`). +func (o TaskDefinitionOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// ARN of the Task Definition with the trailing `revision` removed. This may be useful for situations where the latest task definition is always desired. If a revision isn't specified, the latest ACTIVE revision is used. See the [AWS documentation](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_StartTask.html#ECS-StartTask-request-taskDefinition) for details. +func (o TaskDefinitionOutput) ArnWithoutRevision() pulumi.StringOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringOutput { return v.ArnWithoutRevision }).(pulumi.StringOutput) +} + +// A list of valid [container definitions](http://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerDefinition.html) provided as a single valid JSON document. Please note that you should only provide values that are part of the container definition document. For a detailed description of what parameters are available, see the [Task Definition Parameters](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html) section from the official [Developer Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide). +func (o TaskDefinitionOutput) ContainerDefinitions() pulumi.StringOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringOutput { return v.ContainerDefinitions }).(pulumi.StringOutput) +} + +// Number of cpu units used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. +func (o TaskDefinitionOutput) Cpu() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringPtrOutput { return v.Cpu }).(pulumi.StringPtrOutput) +} + +// The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. +func (o TaskDefinitionOutput) EphemeralStorage() TaskDefinitionEphemeralStoragePtrOutput { + return o.ApplyT(func(v *TaskDefinition) TaskDefinitionEphemeralStoragePtrOutput { return v.EphemeralStorage }).(TaskDefinitionEphemeralStoragePtrOutput) +} + +// ARN of the task execution role that the Amazon ECS container agent and the Docker daemon can assume. +func (o TaskDefinitionOutput) ExecutionRoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringPtrOutput { return v.ExecutionRoleArn }).(pulumi.StringPtrOutput) +} + +// A unique name for your task definition. +// +// The following arguments are optional: +func (o TaskDefinitionOutput) Family() pulumi.StringOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringOutput { return v.Family }).(pulumi.StringOutput) +} + +// Configuration block(s) with Inference Accelerators settings. Detailed below. +func (o TaskDefinitionOutput) InferenceAccelerators() TaskDefinitionInferenceAcceleratorArrayOutput { + return o.ApplyT(func(v *TaskDefinition) TaskDefinitionInferenceAcceleratorArrayOutput { return v.InferenceAccelerators }).(TaskDefinitionInferenceAcceleratorArrayOutput) +} + +// IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. +func (o TaskDefinitionOutput) IpcMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringPtrOutput { return v.IpcMode }).(pulumi.StringPtrOutput) +} + +// Amount (in MiB) of memory used by the task. If the `requiresCompatibilities` is `FARGATE` this field is required. +func (o TaskDefinitionOutput) Memory() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringPtrOutput { return v.Memory }).(pulumi.StringPtrOutput) +} + +// Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. +func (o TaskDefinitionOutput) NetworkMode() pulumi.StringOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringOutput { return v.NetworkMode }).(pulumi.StringOutput) +} + +// Process namespace to use for the containers in the task. The valid values are `host` and `task`. +func (o TaskDefinitionOutput) PidMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringPtrOutput { return v.PidMode }).(pulumi.StringPtrOutput) +} + +// Configuration block for rules that are taken into consideration during task placement. Maximum number of `placementConstraints` is `10`. Detailed below. +func (o TaskDefinitionOutput) PlacementConstraints() TaskDefinitionPlacementConstraintArrayOutput { + return o.ApplyT(func(v *TaskDefinition) TaskDefinitionPlacementConstraintArrayOutput { return v.PlacementConstraints }).(TaskDefinitionPlacementConstraintArrayOutput) +} + +// Configuration block for the App Mesh proxy. Detailed below. +func (o TaskDefinitionOutput) ProxyConfiguration() TaskDefinitionProxyConfigurationPtrOutput { + return o.ApplyT(func(v *TaskDefinition) TaskDefinitionProxyConfigurationPtrOutput { return v.ProxyConfiguration }).(TaskDefinitionProxyConfigurationPtrOutput) +} + +// Set of launch types required by the task. The valid values are `EC2` and `FARGATE`. +func (o TaskDefinitionOutput) RequiresCompatibilities() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringArrayOutput { return v.RequiresCompatibilities }).(pulumi.StringArrayOutput) +} + +// Revision of the task in a particular family. +func (o TaskDefinitionOutput) Revision() pulumi.IntOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.IntOutput { return v.Revision }).(pulumi.IntOutput) +} + +// Configuration block for runtimePlatform that containers in your task may use. +func (o TaskDefinitionOutput) RuntimePlatform() TaskDefinitionRuntimePlatformPtrOutput { + return o.ApplyT(func(v *TaskDefinition) TaskDefinitionRuntimePlatformPtrOutput { return v.RuntimePlatform }).(TaskDefinitionRuntimePlatformPtrOutput) +} + +// Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. +func (o TaskDefinitionOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.BoolPtrOutput { return v.SkipDestroy }).(pulumi.BoolPtrOutput) +} + +// Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o TaskDefinitionOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o TaskDefinitionOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// ARN of IAM role that allows your Amazon ECS container task to make calls to other AWS services. +func (o TaskDefinitionOutput) TaskRoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.StringPtrOutput { return v.TaskRoleArn }).(pulumi.StringPtrOutput) +} + +// Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. +func (o TaskDefinitionOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinition) pulumi.BoolPtrOutput { return v.TrackLatest }).(pulumi.BoolPtrOutput) +} + +// Configuration block for volumes that containers in your task may use. Detailed below. +func (o TaskDefinitionOutput) Volumes() TaskDefinitionVolumeArrayOutput { + return o.ApplyT(func(v *TaskDefinition) TaskDefinitionVolumeArrayOutput { return v.Volumes }).(TaskDefinitionVolumeArrayOutput) +} + +type TaskDefinitionArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TaskDefinition)(nil)).Elem() +} + +func (o TaskDefinitionArrayOutput) ToTaskDefinitionArrayOutput() TaskDefinitionArrayOutput { + return o +} + +func (o TaskDefinitionArrayOutput) ToTaskDefinitionArrayOutputWithContext(ctx context.Context) TaskDefinitionArrayOutput { + return o +} + +func (o TaskDefinitionArrayOutput) Index(i pulumi.IntInput) TaskDefinitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *TaskDefinition { + return vs[0].([]*TaskDefinition)[vs[1].(int)] + }).(TaskDefinitionOutput) +} + +type TaskDefinitionMapOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TaskDefinition)(nil)).Elem() +} + +func (o TaskDefinitionMapOutput) ToTaskDefinitionMapOutput() TaskDefinitionMapOutput { + return o +} + +func (o TaskDefinitionMapOutput) ToTaskDefinitionMapOutputWithContext(ctx context.Context) TaskDefinitionMapOutput { + return o +} + +func (o TaskDefinitionMapOutput) MapIndex(k pulumi.StringInput) TaskDefinitionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *TaskDefinition { + return vs[0].(map[string]*TaskDefinition)[vs[1].(string)] + }).(TaskDefinitionOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionInput)(nil)).Elem(), &TaskDefinition{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionArrayInput)(nil)).Elem(), TaskDefinitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionMapInput)(nil)).Elem(), TaskDefinitionMap{}) + pulumi.RegisterOutputType(TaskDefinitionOutput{}) + pulumi.RegisterOutputType(TaskDefinitionArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskSet.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskSet.go new file mode 100644 index 000000000..6387b9bf0 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs/taskSet.go @@ -0,0 +1,585 @@ +// 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 ecs + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an ECS task set - effectively a task that is expected to run until an error occurs or a user terminates it (typically a webserver or a database). +// +// See [ECS Task Set section in AWS developer guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-type-external.html). +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewTaskSet(ctx, "example", &ecs.TaskSetArgs{ +// Service: pulumi.Any(exampleAwsEcsService.Id), +// Cluster: pulumi.Any(exampleAwsEcsCluster.Id), +// TaskDefinition: pulumi.Any(exampleAwsEcsTaskDefinition.Arn), +// LoadBalancers: ecs.TaskSetLoadBalancerArray{ +// &ecs.TaskSetLoadBalancerArgs{ +// TargetGroupArn: pulumi.Any(exampleAwsLbTargetGroup.Arn), +// ContainerName: pulumi.String("mongo"), +// ContainerPort: pulumi.Int(8080), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Ignoring Changes to Scale +// +// You can utilize the generic resource lifecycle configuration block with `ignoreChanges` to create an ECS service with an initial count of running instances, then ignore any changes to that count caused externally (e.g. Application Autoscaling). +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := ecs.NewTaskSet(ctx, "example", &ecs.TaskSetArgs{ +// Scale: &ecs.TaskSetScaleArgs{ +// Value: pulumi.Float64(50), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import ECS Task Sets using the `task_set_id`, `service`, and `cluster` separated by commas (`,`). For example: +// +// ```sh +// $ pulumi import aws:ecs/taskSet:TaskSet example ecs-svc/7177320696926227436,arn:aws:ecs:us-west-2:123456789101:service/example/example-1234567890,arn:aws:ecs:us-west-2:123456789101:cluster/example +// ``` +type TaskSet struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) that identifies the task set. + Arn pulumi.StringOutput `pulumi:"arn"` + // The capacity provider strategy to use for the service. Can be one or more. Defined below. + CapacityProviderStrategies TaskSetCapacityProviderStrategyArrayOutput `pulumi:"capacityProviderStrategies"` + // The short name or ARN of the cluster that hosts the service to create the task set in. + Cluster pulumi.StringOutput `pulumi:"cluster"` + // The external ID associated with the task set. + ExternalId pulumi.StringOutput `pulumi:"externalId"` + // Whether to allow deleting the task set without waiting for scaling down to 0. You can force a task set to delete even if it's in the process of scaling a resource. Normally, the provider drains all the tasks before deleting the task set. This bypasses that behavior and potentially leaves resources dangling. + ForceDelete pulumi.BoolPtrOutput `pulumi:"forceDelete"` + // The launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. + LaunchType pulumi.StringOutput `pulumi:"launchType"` + // Details on load balancers that are used with a task set. Detailed below. + LoadBalancers TaskSetLoadBalancerArrayOutput `pulumi:"loadBalancers"` + // The network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. Detailed below. + NetworkConfiguration TaskSetNetworkConfigurationPtrOutput `pulumi:"networkConfiguration"` + // The platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringOutput `pulumi:"platformVersion"` + // A floating-point percentage of the desired number of tasks to place and keep running in the task set. Detailed below. + Scale TaskSetScaleOutput `pulumi:"scale"` + // The short name or ARN of the ECS service. + Service pulumi.StringOutput `pulumi:"service"` + // The service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. Detailed below. + ServiceRegistries TaskSetServiceRegistriesPtrOutput `pulumi:"serviceRegistries"` + // The stability status. This indicates whether the task set has reached a steady state. + StabilityStatus pulumi.StringOutput `pulumi:"stabilityStatus"` + // The status of the task set. + Status pulumi.StringOutput `pulumi:"status"` + // A map of tags to assign to the file system. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. If you have set `copyTagsToBackups` to true, and you specify one or more tags, no existing file system tags are copied from the file system to the backup. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. + // + // The following arguments are optional: + TaskDefinition pulumi.StringOutput `pulumi:"taskDefinition"` + // The ID of the task set. + TaskSetId pulumi.StringOutput `pulumi:"taskSetId"` + // Whether the provider should wait until the task set has reached `STEADY_STATE`. + WaitUntilStable pulumi.BoolPtrOutput `pulumi:"waitUntilStable"` + // Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or `µs`), `ms`, `s`, `m`, and `h`. Default `10m`. + WaitUntilStableTimeout pulumi.StringPtrOutput `pulumi:"waitUntilStableTimeout"` +} + +// NewTaskSet registers a new resource with the given unique name, arguments, and options. +func NewTaskSet(ctx *pulumi.Context, + name string, args *TaskSetArgs, opts ...pulumi.ResourceOption) (*TaskSet, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Cluster == nil { + return nil, errors.New("invalid value for required argument 'Cluster'") + } + if args.Service == nil { + return nil, errors.New("invalid value for required argument 'Service'") + } + if args.TaskDefinition == nil { + return nil, errors.New("invalid value for required argument 'TaskDefinition'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource TaskSet + err := ctx.RegisterResource("aws:ecs/taskSet:TaskSet", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTaskSet gets an existing TaskSet 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 GetTaskSet(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TaskSetState, opts ...pulumi.ResourceOption) (*TaskSet, error) { + var resource TaskSet + err := ctx.ReadResource("aws:ecs/taskSet:TaskSet", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering TaskSet resources. +type taskSetState struct { + // The Amazon Resource Name (ARN) that identifies the task set. + Arn *string `pulumi:"arn"` + // The capacity provider strategy to use for the service. Can be one or more. Defined below. + CapacityProviderStrategies []TaskSetCapacityProviderStrategy `pulumi:"capacityProviderStrategies"` + // The short name or ARN of the cluster that hosts the service to create the task set in. + Cluster *string `pulumi:"cluster"` + // The external ID associated with the task set. + ExternalId *string `pulumi:"externalId"` + // Whether to allow deleting the task set without waiting for scaling down to 0. You can force a task set to delete even if it's in the process of scaling a resource. Normally, the provider drains all the tasks before deleting the task set. This bypasses that behavior and potentially leaves resources dangling. + ForceDelete *bool `pulumi:"forceDelete"` + // The launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. + LaunchType *string `pulumi:"launchType"` + // Details on load balancers that are used with a task set. Detailed below. + LoadBalancers []TaskSetLoadBalancer `pulumi:"loadBalancers"` + // The network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. Detailed below. + NetworkConfiguration *TaskSetNetworkConfiguration `pulumi:"networkConfiguration"` + // The platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion *string `pulumi:"platformVersion"` + // A floating-point percentage of the desired number of tasks to place and keep running in the task set. Detailed below. + Scale *TaskSetScale `pulumi:"scale"` + // The short name or ARN of the ECS service. + Service *string `pulumi:"service"` + // The service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. Detailed below. + ServiceRegistries *TaskSetServiceRegistries `pulumi:"serviceRegistries"` + // The stability status. This indicates whether the task set has reached a steady state. + StabilityStatus *string `pulumi:"stabilityStatus"` + // The status of the task set. + Status *string `pulumi:"status"` + // A map of tags to assign to the file system. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. If you have set `copyTagsToBackups` to true, and you specify one or more tags, no existing file system tags are copied from the file system to the backup. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. + // + // The following arguments are optional: + TaskDefinition *string `pulumi:"taskDefinition"` + // The ID of the task set. + TaskSetId *string `pulumi:"taskSetId"` + // Whether the provider should wait until the task set has reached `STEADY_STATE`. + WaitUntilStable *bool `pulumi:"waitUntilStable"` + // Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or `µs`), `ms`, `s`, `m`, and `h`. Default `10m`. + WaitUntilStableTimeout *string `pulumi:"waitUntilStableTimeout"` +} + +type TaskSetState struct { + // The Amazon Resource Name (ARN) that identifies the task set. + Arn pulumi.StringPtrInput + // The capacity provider strategy to use for the service. Can be one or more. Defined below. + CapacityProviderStrategies TaskSetCapacityProviderStrategyArrayInput + // The short name or ARN of the cluster that hosts the service to create the task set in. + Cluster pulumi.StringPtrInput + // The external ID associated with the task set. + ExternalId pulumi.StringPtrInput + // Whether to allow deleting the task set without waiting for scaling down to 0. You can force a task set to delete even if it's in the process of scaling a resource. Normally, the provider drains all the tasks before deleting the task set. This bypasses that behavior and potentially leaves resources dangling. + ForceDelete pulumi.BoolPtrInput + // The launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. + LaunchType pulumi.StringPtrInput + // Details on load balancers that are used with a task set. Detailed below. + LoadBalancers TaskSetLoadBalancerArrayInput + // The network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. Detailed below. + NetworkConfiguration TaskSetNetworkConfigurationPtrInput + // The platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringPtrInput + // A floating-point percentage of the desired number of tasks to place and keep running in the task set. Detailed below. + Scale TaskSetScalePtrInput + // The short name or ARN of the ECS service. + Service pulumi.StringPtrInput + // The service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. Detailed below. + ServiceRegistries TaskSetServiceRegistriesPtrInput + // The stability status. This indicates whether the task set has reached a steady state. + StabilityStatus pulumi.StringPtrInput + // The status of the task set. + Status pulumi.StringPtrInput + // A map of tags to assign to the file system. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. If you have set `copyTagsToBackups` to true, and you specify one or more tags, no existing file system tags are copied from the file system to the backup. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. + // + // The following arguments are optional: + TaskDefinition pulumi.StringPtrInput + // The ID of the task set. + TaskSetId pulumi.StringPtrInput + // Whether the provider should wait until the task set has reached `STEADY_STATE`. + WaitUntilStable pulumi.BoolPtrInput + // Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or `µs`), `ms`, `s`, `m`, and `h`. Default `10m`. + WaitUntilStableTimeout pulumi.StringPtrInput +} + +func (TaskSetState) ElementType() reflect.Type { + return reflect.TypeOf((*taskSetState)(nil)).Elem() +} + +type taskSetArgs struct { + // The capacity provider strategy to use for the service. Can be one or more. Defined below. + CapacityProviderStrategies []TaskSetCapacityProviderStrategy `pulumi:"capacityProviderStrategies"` + // The short name or ARN of the cluster that hosts the service to create the task set in. + Cluster string `pulumi:"cluster"` + // The external ID associated with the task set. + ExternalId *string `pulumi:"externalId"` + // Whether to allow deleting the task set without waiting for scaling down to 0. You can force a task set to delete even if it's in the process of scaling a resource. Normally, the provider drains all the tasks before deleting the task set. This bypasses that behavior and potentially leaves resources dangling. + ForceDelete *bool `pulumi:"forceDelete"` + // The launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. + LaunchType *string `pulumi:"launchType"` + // Details on load balancers that are used with a task set. Detailed below. + LoadBalancers []TaskSetLoadBalancer `pulumi:"loadBalancers"` + // The network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. Detailed below. + NetworkConfiguration *TaskSetNetworkConfiguration `pulumi:"networkConfiguration"` + // The platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion *string `pulumi:"platformVersion"` + // A floating-point percentage of the desired number of tasks to place and keep running in the task set. Detailed below. + Scale *TaskSetScale `pulumi:"scale"` + // The short name or ARN of the ECS service. + Service string `pulumi:"service"` + // The service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. Detailed below. + ServiceRegistries *TaskSetServiceRegistries `pulumi:"serviceRegistries"` + // A map of tags to assign to the file system. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. If you have set `copyTagsToBackups` to true, and you specify one or more tags, no existing file system tags are copied from the file system to the backup. + Tags map[string]string `pulumi:"tags"` + // The family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. + // + // The following arguments are optional: + TaskDefinition string `pulumi:"taskDefinition"` + // Whether the provider should wait until the task set has reached `STEADY_STATE`. + WaitUntilStable *bool `pulumi:"waitUntilStable"` + // Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or `µs`), `ms`, `s`, `m`, and `h`. Default `10m`. + WaitUntilStableTimeout *string `pulumi:"waitUntilStableTimeout"` +} + +// The set of arguments for constructing a TaskSet resource. +type TaskSetArgs struct { + // The capacity provider strategy to use for the service. Can be one or more. Defined below. + CapacityProviderStrategies TaskSetCapacityProviderStrategyArrayInput + // The short name or ARN of the cluster that hosts the service to create the task set in. + Cluster pulumi.StringInput + // The external ID associated with the task set. + ExternalId pulumi.StringPtrInput + // Whether to allow deleting the task set without waiting for scaling down to 0. You can force a task set to delete even if it's in the process of scaling a resource. Normally, the provider drains all the tasks before deleting the task set. This bypasses that behavior and potentially leaves resources dangling. + ForceDelete pulumi.BoolPtrInput + // The launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. + LaunchType pulumi.StringPtrInput + // Details on load balancers that are used with a task set. Detailed below. + LoadBalancers TaskSetLoadBalancerArrayInput + // The network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. Detailed below. + NetworkConfiguration TaskSetNetworkConfigurationPtrInput + // The platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringPtrInput + // A floating-point percentage of the desired number of tasks to place and keep running in the task set. Detailed below. + Scale TaskSetScalePtrInput + // The short name or ARN of the ECS service. + Service pulumi.StringInput + // The service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. Detailed below. + ServiceRegistries TaskSetServiceRegistriesPtrInput + // A map of tags to assign to the file system. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. If you have set `copyTagsToBackups` to true, and you specify one or more tags, no existing file system tags are copied from the file system to the backup. + Tags pulumi.StringMapInput + // The family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. + // + // The following arguments are optional: + TaskDefinition pulumi.StringInput + // Whether the provider should wait until the task set has reached `STEADY_STATE`. + WaitUntilStable pulumi.BoolPtrInput + // Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or `µs`), `ms`, `s`, `m`, and `h`. Default `10m`. + WaitUntilStableTimeout pulumi.StringPtrInput +} + +func (TaskSetArgs) ElementType() reflect.Type { + return reflect.TypeOf((*taskSetArgs)(nil)).Elem() +} + +type TaskSetInput interface { + pulumi.Input + + ToTaskSetOutput() TaskSetOutput + ToTaskSetOutputWithContext(ctx context.Context) TaskSetOutput +} + +func (*TaskSet) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSet)(nil)).Elem() +} + +func (i *TaskSet) ToTaskSetOutput() TaskSetOutput { + return i.ToTaskSetOutputWithContext(context.Background()) +} + +func (i *TaskSet) ToTaskSetOutputWithContext(ctx context.Context) TaskSetOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetOutput) +} + +// TaskSetArrayInput is an input type that accepts TaskSetArray and TaskSetArrayOutput values. +// You can construct a concrete instance of `TaskSetArrayInput` via: +// +// TaskSetArray{ TaskSetArgs{...} } +type TaskSetArrayInput interface { + pulumi.Input + + ToTaskSetArrayOutput() TaskSetArrayOutput + ToTaskSetArrayOutputWithContext(context.Context) TaskSetArrayOutput +} + +type TaskSetArray []TaskSetInput + +func (TaskSetArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TaskSet)(nil)).Elem() +} + +func (i TaskSetArray) ToTaskSetArrayOutput() TaskSetArrayOutput { + return i.ToTaskSetArrayOutputWithContext(context.Background()) +} + +func (i TaskSetArray) ToTaskSetArrayOutputWithContext(ctx context.Context) TaskSetArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetArrayOutput) +} + +// TaskSetMapInput is an input type that accepts TaskSetMap and TaskSetMapOutput values. +// You can construct a concrete instance of `TaskSetMapInput` via: +// +// TaskSetMap{ "key": TaskSetArgs{...} } +type TaskSetMapInput interface { + pulumi.Input + + ToTaskSetMapOutput() TaskSetMapOutput + ToTaskSetMapOutputWithContext(context.Context) TaskSetMapOutput +} + +type TaskSetMap map[string]TaskSetInput + +func (TaskSetMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TaskSet)(nil)).Elem() +} + +func (i TaskSetMap) ToTaskSetMapOutput() TaskSetMapOutput { + return i.ToTaskSetMapOutputWithContext(context.Background()) +} + +func (i TaskSetMap) ToTaskSetMapOutputWithContext(ctx context.Context) TaskSetMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskSetMapOutput) +} + +type TaskSetOutput struct{ *pulumi.OutputState } + +func (TaskSetOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskSet)(nil)).Elem() +} + +func (o TaskSetOutput) ToTaskSetOutput() TaskSetOutput { + return o +} + +func (o TaskSetOutput) ToTaskSetOutputWithContext(ctx context.Context) TaskSetOutput { + return o +} + +// The Amazon Resource Name (ARN) that identifies the task set. +func (o TaskSetOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The capacity provider strategy to use for the service. Can be one or more. Defined below. +func (o TaskSetOutput) CapacityProviderStrategies() TaskSetCapacityProviderStrategyArrayOutput { + return o.ApplyT(func(v *TaskSet) TaskSetCapacityProviderStrategyArrayOutput { return v.CapacityProviderStrategies }).(TaskSetCapacityProviderStrategyArrayOutput) +} + +// The short name or ARN of the cluster that hosts the service to create the task set in. +func (o TaskSetOutput) Cluster() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.Cluster }).(pulumi.StringOutput) +} + +// The external ID associated with the task set. +func (o TaskSetOutput) ExternalId() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.ExternalId }).(pulumi.StringOutput) +} + +// Whether to allow deleting the task set without waiting for scaling down to 0. You can force a task set to delete even if it's in the process of scaling a resource. Normally, the provider drains all the tasks before deleting the task set. This bypasses that behavior and potentially leaves resources dangling. +func (o TaskSetOutput) ForceDelete() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskSet) pulumi.BoolPtrOutput { return v.ForceDelete }).(pulumi.BoolPtrOutput) +} + +// The launch type on which to run your service. The valid values are `EC2`, `FARGATE`, and `EXTERNAL`. Defaults to `EC2`. +func (o TaskSetOutput) LaunchType() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.LaunchType }).(pulumi.StringOutput) +} + +// Details on load balancers that are used with a task set. Detailed below. +func (o TaskSetOutput) LoadBalancers() TaskSetLoadBalancerArrayOutput { + return o.ApplyT(func(v *TaskSet) TaskSetLoadBalancerArrayOutput { return v.LoadBalancers }).(TaskSetLoadBalancerArrayOutput) +} + +// The network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. Detailed below. +func (o TaskSetOutput) NetworkConfiguration() TaskSetNetworkConfigurationPtrOutput { + return o.ApplyT(func(v *TaskSet) TaskSetNetworkConfigurationPtrOutput { return v.NetworkConfiguration }).(TaskSetNetworkConfigurationPtrOutput) +} + +// The platform version on which to run your service. Only applicable for `launchType` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). +func (o TaskSetOutput) PlatformVersion() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.PlatformVersion }).(pulumi.StringOutput) +} + +// A floating-point percentage of the desired number of tasks to place and keep running in the task set. Detailed below. +func (o TaskSetOutput) Scale() TaskSetScaleOutput { + return o.ApplyT(func(v *TaskSet) TaskSetScaleOutput { return v.Scale }).(TaskSetScaleOutput) +} + +// The short name or ARN of the ECS service. +func (o TaskSetOutput) Service() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.Service }).(pulumi.StringOutput) +} + +// The service discovery registries for the service. The maximum number of `serviceRegistries` blocks is `1`. Detailed below. +func (o TaskSetOutput) ServiceRegistries() TaskSetServiceRegistriesPtrOutput { + return o.ApplyT(func(v *TaskSet) TaskSetServiceRegistriesPtrOutput { return v.ServiceRegistries }).(TaskSetServiceRegistriesPtrOutput) +} + +// The stability status. This indicates whether the task set has reached a steady state. +func (o TaskSetOutput) StabilityStatus() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.StabilityStatus }).(pulumi.StringOutput) +} + +// The status of the task set. +func (o TaskSetOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput) +} + +// A map of tags to assign to the file system. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. If you have set `copyTagsToBackups` to true, and you specify one or more tags, no existing file system tags are copied from the file system to the backup. +func (o TaskSetOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o TaskSetOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. +// +// The following arguments are optional: +func (o TaskSetOutput) TaskDefinition() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.TaskDefinition }).(pulumi.StringOutput) +} + +// The ID of the task set. +func (o TaskSetOutput) TaskSetId() pulumi.StringOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringOutput { return v.TaskSetId }).(pulumi.StringOutput) +} + +// Whether the provider should wait until the task set has reached `STEADY_STATE`. +func (o TaskSetOutput) WaitUntilStable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskSet) pulumi.BoolPtrOutput { return v.WaitUntilStable }).(pulumi.BoolPtrOutput) +} + +// Wait timeout for task set to reach `STEADY_STATE`. Valid time units include `ns`, `us` (or `µs`), `ms`, `s`, `m`, and `h`. Default `10m`. +func (o TaskSetOutput) WaitUntilStableTimeout() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskSet) pulumi.StringPtrOutput { return v.WaitUntilStableTimeout }).(pulumi.StringPtrOutput) +} + +type TaskSetArrayOutput struct{ *pulumi.OutputState } + +func (TaskSetArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*TaskSet)(nil)).Elem() +} + +func (o TaskSetArrayOutput) ToTaskSetArrayOutput() TaskSetArrayOutput { + return o +} + +func (o TaskSetArrayOutput) ToTaskSetArrayOutputWithContext(ctx context.Context) TaskSetArrayOutput { + return o +} + +func (o TaskSetArrayOutput) Index(i pulumi.IntInput) TaskSetOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *TaskSet { + return vs[0].([]*TaskSet)[vs[1].(int)] + }).(TaskSetOutput) +} + +type TaskSetMapOutput struct{ *pulumi.OutputState } + +func (TaskSetMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*TaskSet)(nil)).Elem() +} + +func (o TaskSetMapOutput) ToTaskSetMapOutput() TaskSetMapOutput { + return o +} + +func (o TaskSetMapOutput) ToTaskSetMapOutputWithContext(ctx context.Context) TaskSetMapOutput { + return o +} + +func (o TaskSetMapOutput) MapIndex(k pulumi.StringInput) TaskSetOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *TaskSet { + return vs[0].(map[string]*TaskSet)[vs[1].(string)] + }).(TaskSetOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetInput)(nil)).Elem(), &TaskSet{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetArrayInput)(nil)).Elem(), TaskSetArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskSetMapInput)(nil)).Elem(), TaskSetMap{}) + pulumi.RegisterOutputType(TaskSetOutput{}) + pulumi.RegisterOutputType(TaskSetArrayOutput{}) + pulumi.RegisterOutputType(TaskSetMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accessKey.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accessKey.go new file mode 100644 index 000000000..522764253 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accessKey.go @@ -0,0 +1,420 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM access key. This is a set of credentials that allow API requests to be made as an IAM user. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// lbUser, err := iam.NewUser(ctx, "lb", &iam.UserArgs{ +// Name: pulumi.String("loadbalancer"), +// Path: pulumi.String("/system/"), +// }) +// if err != nil { +// return err +// } +// lb, err := iam.NewAccessKey(ctx, "lb", &iam.AccessKeyArgs{ +// User: lbUser.Name, +// PgpKey: pulumi.String("keybase:some_person_that_exists"), +// }) +// if err != nil { +// return err +// } +// lbRo, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "ec2:Describe*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = iam.NewUserPolicy(ctx, "lb_ro", &iam.UserPolicyArgs{ +// Name: pulumi.String("test"), +// User: lbUser.Name, +// Policy: pulumi.String(lbRo.Json), +// }) +// if err != nil { +// return err +// } +// ctx.Export("secret", lb.EncryptedSecret) +// return nil +// }) +// } +// +// ``` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// test, err := iam.NewUser(ctx, "test", &iam.UserArgs{ +// Name: pulumi.String("test"), +// Path: pulumi.String("/test/"), +// }) +// if err != nil { +// return err +// } +// testAccessKey, err := iam.NewAccessKey(ctx, "test", &iam.AccessKeyArgs{ +// User: test.Name, +// }) +// if err != nil { +// return err +// } +// ctx.Export("awsIamSmtpPasswordV4", testAccessKey.SesSmtpPasswordV4) +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Access Keys using the identifier. For example: +// +// ```sh +// $ pulumi import aws:iam/accessKey:AccessKey example AKIA1234567890 +// ``` +// Resource attributes such as `encrypted_secret`, `key_fingerprint`, `pgp_key`, `secret`, `ses_smtp_password_v4`, and `encrypted_ses_smtp_password_v4` are not available for imported resources as this information cannot be read from the IAM API. +type AccessKey struct { + pulumi.CustomResourceState + + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the access key was created. + CreateDate pulumi.StringOutput `pulumi:"createDate"` + // Encrypted secret, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted secret may be decrypted using the command line. + EncryptedSecret pulumi.StringOutput `pulumi:"encryptedSecret"` + // Encrypted SES SMTP password, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted password may be decrypted using the command line. + EncryptedSesSmtpPasswordV4 pulumi.StringOutput `pulumi:"encryptedSesSmtpPasswordV4"` + // Fingerprint of the PGP key used to encrypt the secret. This attribute is not available for imported resources. + KeyFingerprint pulumi.StringOutput `pulumi:"keyFingerprint"` + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`, for use in the `encryptedSecret` output attribute. If providing a base-64 encoded PGP public key, make sure to provide the "raw" version and not the "armored" one (e.g. avoid passing the `-a` option to `gpg --export`). + PgpKey pulumi.StringPtrOutput `pulumi:"pgpKey"` + // Secret access key. This attribute is not available for imported resources. Note that this will be written to the state file. If you use this, please protect your backend state file judiciously. Alternatively, you may supply a `pgpKey` instead, which will prevent the secret from being stored in plaintext, at the cost of preventing the use of the secret key in automation. + Secret pulumi.StringOutput `pulumi:"secret"` + // Secret access key converted into an SES SMTP password by applying [AWS's documented Sigv4 conversion algorithm](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html#smtp-credentials-convert). This attribute is not available for imported resources. As SigV4 is region specific, valid Provider regions are `ap-south-1`, `ap-southeast-2`, `eu-central-1`, `eu-west-1`, `us-east-1` and `us-west-2`. See current [AWS SES regions](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region). + SesSmtpPasswordV4 pulumi.StringOutput `pulumi:"sesSmtpPasswordV4"` + // Access key status to apply. Defaults to `Active`. Valid values are `Active` and `Inactive`. + Status pulumi.StringPtrOutput `pulumi:"status"` + // IAM user to associate with this access key. + User pulumi.StringOutput `pulumi:"user"` +} + +// NewAccessKey registers a new resource with the given unique name, arguments, and options. +func NewAccessKey(ctx *pulumi.Context, + name string, args *AccessKeyArgs, opts ...pulumi.ResourceOption) (*AccessKey, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.User == nil { + return nil, errors.New("invalid value for required argument 'User'") + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "secret", + "sesSmtpPasswordV4", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource AccessKey + err := ctx.RegisterResource("aws:iam/accessKey:AccessKey", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAccessKey gets an existing AccessKey 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 GetAccessKey(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AccessKeyState, opts ...pulumi.ResourceOption) (*AccessKey, error) { + var resource AccessKey + err := ctx.ReadResource("aws:iam/accessKey:AccessKey", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AccessKey resources. +type accessKeyState struct { + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the access key was created. + CreateDate *string `pulumi:"createDate"` + // Encrypted secret, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted secret may be decrypted using the command line. + EncryptedSecret *string `pulumi:"encryptedSecret"` + // Encrypted SES SMTP password, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted password may be decrypted using the command line. + EncryptedSesSmtpPasswordV4 *string `pulumi:"encryptedSesSmtpPasswordV4"` + // Fingerprint of the PGP key used to encrypt the secret. This attribute is not available for imported resources. + KeyFingerprint *string `pulumi:"keyFingerprint"` + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`, for use in the `encryptedSecret` output attribute. If providing a base-64 encoded PGP public key, make sure to provide the "raw" version and not the "armored" one (e.g. avoid passing the `-a` option to `gpg --export`). + PgpKey *string `pulumi:"pgpKey"` + // Secret access key. This attribute is not available for imported resources. Note that this will be written to the state file. If you use this, please protect your backend state file judiciously. Alternatively, you may supply a `pgpKey` instead, which will prevent the secret from being stored in plaintext, at the cost of preventing the use of the secret key in automation. + Secret *string `pulumi:"secret"` + // Secret access key converted into an SES SMTP password by applying [AWS's documented Sigv4 conversion algorithm](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html#smtp-credentials-convert). This attribute is not available for imported resources. As SigV4 is region specific, valid Provider regions are `ap-south-1`, `ap-southeast-2`, `eu-central-1`, `eu-west-1`, `us-east-1` and `us-west-2`. See current [AWS SES regions](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region). + SesSmtpPasswordV4 *string `pulumi:"sesSmtpPasswordV4"` + // Access key status to apply. Defaults to `Active`. Valid values are `Active` and `Inactive`. + Status *string `pulumi:"status"` + // IAM user to associate with this access key. + User *string `pulumi:"user"` +} + +type AccessKeyState struct { + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the access key was created. + CreateDate pulumi.StringPtrInput + // Encrypted secret, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted secret may be decrypted using the command line. + EncryptedSecret pulumi.StringPtrInput + // Encrypted SES SMTP password, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted password may be decrypted using the command line. + EncryptedSesSmtpPasswordV4 pulumi.StringPtrInput + // Fingerprint of the PGP key used to encrypt the secret. This attribute is not available for imported resources. + KeyFingerprint pulumi.StringPtrInput + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`, for use in the `encryptedSecret` output attribute. If providing a base-64 encoded PGP public key, make sure to provide the "raw" version and not the "armored" one (e.g. avoid passing the `-a` option to `gpg --export`). + PgpKey pulumi.StringPtrInput + // Secret access key. This attribute is not available for imported resources. Note that this will be written to the state file. If you use this, please protect your backend state file judiciously. Alternatively, you may supply a `pgpKey` instead, which will prevent the secret from being stored in plaintext, at the cost of preventing the use of the secret key in automation. + Secret pulumi.StringPtrInput + // Secret access key converted into an SES SMTP password by applying [AWS's documented Sigv4 conversion algorithm](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html#smtp-credentials-convert). This attribute is not available for imported resources. As SigV4 is region specific, valid Provider regions are `ap-south-1`, `ap-southeast-2`, `eu-central-1`, `eu-west-1`, `us-east-1` and `us-west-2`. See current [AWS SES regions](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region). + SesSmtpPasswordV4 pulumi.StringPtrInput + // Access key status to apply. Defaults to `Active`. Valid values are `Active` and `Inactive`. + Status pulumi.StringPtrInput + // IAM user to associate with this access key. + User pulumi.StringPtrInput +} + +func (AccessKeyState) ElementType() reflect.Type { + return reflect.TypeOf((*accessKeyState)(nil)).Elem() +} + +type accessKeyArgs struct { + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`, for use in the `encryptedSecret` output attribute. If providing a base-64 encoded PGP public key, make sure to provide the "raw" version and not the "armored" one (e.g. avoid passing the `-a` option to `gpg --export`). + PgpKey *string `pulumi:"pgpKey"` + // Access key status to apply. Defaults to `Active`. Valid values are `Active` and `Inactive`. + Status *string `pulumi:"status"` + // IAM user to associate with this access key. + User string `pulumi:"user"` +} + +// The set of arguments for constructing a AccessKey resource. +type AccessKeyArgs struct { + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`, for use in the `encryptedSecret` output attribute. If providing a base-64 encoded PGP public key, make sure to provide the "raw" version and not the "armored" one (e.g. avoid passing the `-a` option to `gpg --export`). + PgpKey pulumi.StringPtrInput + // Access key status to apply. Defaults to `Active`. Valid values are `Active` and `Inactive`. + Status pulumi.StringPtrInput + // IAM user to associate with this access key. + User pulumi.StringInput +} + +func (AccessKeyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*accessKeyArgs)(nil)).Elem() +} + +type AccessKeyInput interface { + pulumi.Input + + ToAccessKeyOutput() AccessKeyOutput + ToAccessKeyOutputWithContext(ctx context.Context) AccessKeyOutput +} + +func (*AccessKey) ElementType() reflect.Type { + return reflect.TypeOf((**AccessKey)(nil)).Elem() +} + +func (i *AccessKey) ToAccessKeyOutput() AccessKeyOutput { + return i.ToAccessKeyOutputWithContext(context.Background()) +} + +func (i *AccessKey) ToAccessKeyOutputWithContext(ctx context.Context) AccessKeyOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessKeyOutput) +} + +// AccessKeyArrayInput is an input type that accepts AccessKeyArray and AccessKeyArrayOutput values. +// You can construct a concrete instance of `AccessKeyArrayInput` via: +// +// AccessKeyArray{ AccessKeyArgs{...} } +type AccessKeyArrayInput interface { + pulumi.Input + + ToAccessKeyArrayOutput() AccessKeyArrayOutput + ToAccessKeyArrayOutputWithContext(context.Context) AccessKeyArrayOutput +} + +type AccessKeyArray []AccessKeyInput + +func (AccessKeyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccessKey)(nil)).Elem() +} + +func (i AccessKeyArray) ToAccessKeyArrayOutput() AccessKeyArrayOutput { + return i.ToAccessKeyArrayOutputWithContext(context.Background()) +} + +func (i AccessKeyArray) ToAccessKeyArrayOutputWithContext(ctx context.Context) AccessKeyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessKeyArrayOutput) +} + +// AccessKeyMapInput is an input type that accepts AccessKeyMap and AccessKeyMapOutput values. +// You can construct a concrete instance of `AccessKeyMapInput` via: +// +// AccessKeyMap{ "key": AccessKeyArgs{...} } +type AccessKeyMapInput interface { + pulumi.Input + + ToAccessKeyMapOutput() AccessKeyMapOutput + ToAccessKeyMapOutputWithContext(context.Context) AccessKeyMapOutput +} + +type AccessKeyMap map[string]AccessKeyInput + +func (AccessKeyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccessKey)(nil)).Elem() +} + +func (i AccessKeyMap) ToAccessKeyMapOutput() AccessKeyMapOutput { + return i.ToAccessKeyMapOutputWithContext(context.Background()) +} + +func (i AccessKeyMap) ToAccessKeyMapOutputWithContext(ctx context.Context) AccessKeyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessKeyMapOutput) +} + +type AccessKeyOutput struct{ *pulumi.OutputState } + +func (AccessKeyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessKey)(nil)).Elem() +} + +func (o AccessKeyOutput) ToAccessKeyOutput() AccessKeyOutput { + return o +} + +func (o AccessKeyOutput) ToAccessKeyOutputWithContext(ctx context.Context) AccessKeyOutput { + return o +} + +// Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the access key was created. +func (o AccessKeyOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringOutput { return v.CreateDate }).(pulumi.StringOutput) +} + +// Encrypted secret, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted secret may be decrypted using the command line. +func (o AccessKeyOutput) EncryptedSecret() pulumi.StringOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringOutput { return v.EncryptedSecret }).(pulumi.StringOutput) +} + +// Encrypted SES SMTP password, base64 encoded, if `pgpKey` was specified. This attribute is not available for imported resources. The encrypted password may be decrypted using the command line. +func (o AccessKeyOutput) EncryptedSesSmtpPasswordV4() pulumi.StringOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringOutput { return v.EncryptedSesSmtpPasswordV4 }).(pulumi.StringOutput) +} + +// Fingerprint of the PGP key used to encrypt the secret. This attribute is not available for imported resources. +func (o AccessKeyOutput) KeyFingerprint() pulumi.StringOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringOutput { return v.KeyFingerprint }).(pulumi.StringOutput) +} + +// Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:some_person_that_exists`, for use in the `encryptedSecret` output attribute. If providing a base-64 encoded PGP public key, make sure to provide the "raw" version and not the "armored" one (e.g. avoid passing the `-a` option to `gpg --export`). +func (o AccessKeyOutput) PgpKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringPtrOutput { return v.PgpKey }).(pulumi.StringPtrOutput) +} + +// Secret access key. This attribute is not available for imported resources. Note that this will be written to the state file. If you use this, please protect your backend state file judiciously. Alternatively, you may supply a `pgpKey` instead, which will prevent the secret from being stored in plaintext, at the cost of preventing the use of the secret key in automation. +func (o AccessKeyOutput) Secret() pulumi.StringOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringOutput { return v.Secret }).(pulumi.StringOutput) +} + +// Secret access key converted into an SES SMTP password by applying [AWS's documented Sigv4 conversion algorithm](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html#smtp-credentials-convert). This attribute is not available for imported resources. As SigV4 is region specific, valid Provider regions are `ap-south-1`, `ap-southeast-2`, `eu-central-1`, `eu-west-1`, `us-east-1` and `us-west-2`. See current [AWS SES regions](https://docs.aws.amazon.com/general/latest/gr/rande.html#ses_region). +func (o AccessKeyOutput) SesSmtpPasswordV4() pulumi.StringOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringOutput { return v.SesSmtpPasswordV4 }).(pulumi.StringOutput) +} + +// Access key status to apply. Defaults to `Active`. Valid values are `Active` and `Inactive`. +func (o AccessKeyOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput) +} + +// IAM user to associate with this access key. +func (o AccessKeyOutput) User() pulumi.StringOutput { + return o.ApplyT(func(v *AccessKey) pulumi.StringOutput { return v.User }).(pulumi.StringOutput) +} + +type AccessKeyArrayOutput struct{ *pulumi.OutputState } + +func (AccessKeyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccessKey)(nil)).Elem() +} + +func (o AccessKeyArrayOutput) ToAccessKeyArrayOutput() AccessKeyArrayOutput { + return o +} + +func (o AccessKeyArrayOutput) ToAccessKeyArrayOutputWithContext(ctx context.Context) AccessKeyArrayOutput { + return o +} + +func (o AccessKeyArrayOutput) Index(i pulumi.IntInput) AccessKeyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AccessKey { + return vs[0].([]*AccessKey)[vs[1].(int)] + }).(AccessKeyOutput) +} + +type AccessKeyMapOutput struct{ *pulumi.OutputState } + +func (AccessKeyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccessKey)(nil)).Elem() +} + +func (o AccessKeyMapOutput) ToAccessKeyMapOutput() AccessKeyMapOutput { + return o +} + +func (o AccessKeyMapOutput) ToAccessKeyMapOutputWithContext(ctx context.Context) AccessKeyMapOutput { + return o +} + +func (o AccessKeyMapOutput) MapIndex(k pulumi.StringInput) AccessKeyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AccessKey { + return vs[0].(map[string]*AccessKey)[vs[1].(string)] + }).(AccessKeyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AccessKeyInput)(nil)).Elem(), &AccessKey{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessKeyArrayInput)(nil)).Elem(), AccessKeyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessKeyMapInput)(nil)).Elem(), AccessKeyMap{}) + pulumi.RegisterOutputType(AccessKeyOutput{}) + pulumi.RegisterOutputType(AccessKeyArrayOutput{}) + pulumi.RegisterOutputType(AccessKeyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountAlias.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountAlias.go new file mode 100644 index 000000000..8ea079935 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountAlias.go @@ -0,0 +1,255 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **Note:** There is only a single account alias per AWS account. +// +// Manages the account alias for the AWS Account. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewAccountAlias(ctx, "alias", &iam.AccountAliasArgs{ +// AccountAlias: pulumi.String("my-account-alias"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import the current Account Alias using the `account_alias`. For example: +// +// ```sh +// $ pulumi import aws:iam/accountAlias:AccountAlias alias my-account-alias +// ``` +type AccountAlias struct { + pulumi.CustomResourceState + + // The account alias + AccountAlias pulumi.StringOutput `pulumi:"accountAlias"` +} + +// NewAccountAlias registers a new resource with the given unique name, arguments, and options. +func NewAccountAlias(ctx *pulumi.Context, + name string, args *AccountAliasArgs, opts ...pulumi.ResourceOption) (*AccountAlias, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AccountAlias == nil { + return nil, errors.New("invalid value for required argument 'AccountAlias'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource AccountAlias + err := ctx.RegisterResource("aws:iam/accountAlias:AccountAlias", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAccountAlias gets an existing AccountAlias 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 GetAccountAlias(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AccountAliasState, opts ...pulumi.ResourceOption) (*AccountAlias, error) { + var resource AccountAlias + err := ctx.ReadResource("aws:iam/accountAlias:AccountAlias", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AccountAlias resources. +type accountAliasState struct { + // The account alias + AccountAlias *string `pulumi:"accountAlias"` +} + +type AccountAliasState struct { + // The account alias + AccountAlias pulumi.StringPtrInput +} + +func (AccountAliasState) ElementType() reflect.Type { + return reflect.TypeOf((*accountAliasState)(nil)).Elem() +} + +type accountAliasArgs struct { + // The account alias + AccountAlias string `pulumi:"accountAlias"` +} + +// The set of arguments for constructing a AccountAlias resource. +type AccountAliasArgs struct { + // The account alias + AccountAlias pulumi.StringInput +} + +func (AccountAliasArgs) ElementType() reflect.Type { + return reflect.TypeOf((*accountAliasArgs)(nil)).Elem() +} + +type AccountAliasInput interface { + pulumi.Input + + ToAccountAliasOutput() AccountAliasOutput + ToAccountAliasOutputWithContext(ctx context.Context) AccountAliasOutput +} + +func (*AccountAlias) ElementType() reflect.Type { + return reflect.TypeOf((**AccountAlias)(nil)).Elem() +} + +func (i *AccountAlias) ToAccountAliasOutput() AccountAliasOutput { + return i.ToAccountAliasOutputWithContext(context.Background()) +} + +func (i *AccountAlias) ToAccountAliasOutputWithContext(ctx context.Context) AccountAliasOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountAliasOutput) +} + +// AccountAliasArrayInput is an input type that accepts AccountAliasArray and AccountAliasArrayOutput values. +// You can construct a concrete instance of `AccountAliasArrayInput` via: +// +// AccountAliasArray{ AccountAliasArgs{...} } +type AccountAliasArrayInput interface { + pulumi.Input + + ToAccountAliasArrayOutput() AccountAliasArrayOutput + ToAccountAliasArrayOutputWithContext(context.Context) AccountAliasArrayOutput +} + +type AccountAliasArray []AccountAliasInput + +func (AccountAliasArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountAlias)(nil)).Elem() +} + +func (i AccountAliasArray) ToAccountAliasArrayOutput() AccountAliasArrayOutput { + return i.ToAccountAliasArrayOutputWithContext(context.Background()) +} + +func (i AccountAliasArray) ToAccountAliasArrayOutputWithContext(ctx context.Context) AccountAliasArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountAliasArrayOutput) +} + +// AccountAliasMapInput is an input type that accepts AccountAliasMap and AccountAliasMapOutput values. +// You can construct a concrete instance of `AccountAliasMapInput` via: +// +// AccountAliasMap{ "key": AccountAliasArgs{...} } +type AccountAliasMapInput interface { + pulumi.Input + + ToAccountAliasMapOutput() AccountAliasMapOutput + ToAccountAliasMapOutputWithContext(context.Context) AccountAliasMapOutput +} + +type AccountAliasMap map[string]AccountAliasInput + +func (AccountAliasMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountAlias)(nil)).Elem() +} + +func (i AccountAliasMap) ToAccountAliasMapOutput() AccountAliasMapOutput { + return i.ToAccountAliasMapOutputWithContext(context.Background()) +} + +func (i AccountAliasMap) ToAccountAliasMapOutputWithContext(ctx context.Context) AccountAliasMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountAliasMapOutput) +} + +type AccountAliasOutput struct{ *pulumi.OutputState } + +func (AccountAliasOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccountAlias)(nil)).Elem() +} + +func (o AccountAliasOutput) ToAccountAliasOutput() AccountAliasOutput { + return o +} + +func (o AccountAliasOutput) ToAccountAliasOutputWithContext(ctx context.Context) AccountAliasOutput { + return o +} + +// The account alias +func (o AccountAliasOutput) AccountAlias() pulumi.StringOutput { + return o.ApplyT(func(v *AccountAlias) pulumi.StringOutput { return v.AccountAlias }).(pulumi.StringOutput) +} + +type AccountAliasArrayOutput struct{ *pulumi.OutputState } + +func (AccountAliasArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountAlias)(nil)).Elem() +} + +func (o AccountAliasArrayOutput) ToAccountAliasArrayOutput() AccountAliasArrayOutput { + return o +} + +func (o AccountAliasArrayOutput) ToAccountAliasArrayOutputWithContext(ctx context.Context) AccountAliasArrayOutput { + return o +} + +func (o AccountAliasArrayOutput) Index(i pulumi.IntInput) AccountAliasOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AccountAlias { + return vs[0].([]*AccountAlias)[vs[1].(int)] + }).(AccountAliasOutput) +} + +type AccountAliasMapOutput struct{ *pulumi.OutputState } + +func (AccountAliasMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountAlias)(nil)).Elem() +} + +func (o AccountAliasMapOutput) ToAccountAliasMapOutput() AccountAliasMapOutput { + return o +} + +func (o AccountAliasMapOutput) ToAccountAliasMapOutputWithContext(ctx context.Context) AccountAliasMapOutput { + return o +} + +func (o AccountAliasMapOutput) MapIndex(k pulumi.StringInput) AccountAliasOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AccountAlias { + return vs[0].(map[string]*AccountAlias)[vs[1].(string)] + }).(AccountAliasOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AccountAliasInput)(nil)).Elem(), &AccountAlias{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountAliasArrayInput)(nil)).Elem(), AccountAliasArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountAliasMapInput)(nil)).Elem(), AccountAliasMap{}) + pulumi.RegisterOutputType(AccountAliasOutput{}) + pulumi.RegisterOutputType(AccountAliasArrayOutput{}) + pulumi.RegisterOutputType(AccountAliasMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountPasswordPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountPasswordPolicy.go new file mode 100644 index 000000000..857a711a3 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/accountPasswordPolicy.go @@ -0,0 +1,389 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **Note:** There is only a single policy allowed per AWS account. An existing policy will be lost when using this resource as an effect of this limitation. +// +// Manages Password Policy for the AWS Account. +// See more about [Account Password Policy](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_passwords_account-policy.html) +// in the official AWS docs. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewAccountPasswordPolicy(ctx, "strict", &iam.AccountPasswordPolicyArgs{ +// MinimumPasswordLength: pulumi.Int(8), +// RequireLowercaseCharacters: pulumi.Bool(true), +// RequireNumbers: pulumi.Bool(true), +// RequireUppercaseCharacters: pulumi.Bool(true), +// RequireSymbols: pulumi.Bool(true), +// AllowUsersToChangePassword: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Account Password Policy using the word `iam-account-password-policy`. For example: +// +// ```sh +// $ pulumi import aws:iam/accountPasswordPolicy:AccountPasswordPolicy strict iam-account-password-policy +// ``` +type AccountPasswordPolicy struct { + pulumi.CustomResourceState + + // Whether to allow users to change their own password + AllowUsersToChangePassword pulumi.BoolPtrOutput `pulumi:"allowUsersToChangePassword"` + // Indicates whether passwords in the account expire. Returns `true` if `maxPasswordAge` contains a value greater than `0`. Returns `false` if it is `0` or _not present_. + ExpirePasswords pulumi.BoolOutput `pulumi:"expirePasswords"` + // Whether users are prevented from setting a new password after their password has expired (i.e., require administrator reset) + HardExpiry pulumi.BoolOutput `pulumi:"hardExpiry"` + // The number of days that an user password is valid. + MaxPasswordAge pulumi.IntOutput `pulumi:"maxPasswordAge"` + // Minimum length to require for user passwords. + MinimumPasswordLength pulumi.IntPtrOutput `pulumi:"minimumPasswordLength"` + // The number of previous passwords that users are prevented from reusing. + PasswordReusePrevention pulumi.IntOutput `pulumi:"passwordReusePrevention"` + // Whether to require lowercase characters for user passwords. + RequireLowercaseCharacters pulumi.BoolOutput `pulumi:"requireLowercaseCharacters"` + // Whether to require numbers for user passwords. + RequireNumbers pulumi.BoolOutput `pulumi:"requireNumbers"` + // Whether to require symbols for user passwords. + RequireSymbols pulumi.BoolOutput `pulumi:"requireSymbols"` + // Whether to require uppercase characters for user passwords. + RequireUppercaseCharacters pulumi.BoolOutput `pulumi:"requireUppercaseCharacters"` +} + +// NewAccountPasswordPolicy registers a new resource with the given unique name, arguments, and options. +func NewAccountPasswordPolicy(ctx *pulumi.Context, + name string, args *AccountPasswordPolicyArgs, opts ...pulumi.ResourceOption) (*AccountPasswordPolicy, error) { + if args == nil { + args = &AccountPasswordPolicyArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource AccountPasswordPolicy + err := ctx.RegisterResource("aws:iam/accountPasswordPolicy:AccountPasswordPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAccountPasswordPolicy gets an existing AccountPasswordPolicy 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 GetAccountPasswordPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AccountPasswordPolicyState, opts ...pulumi.ResourceOption) (*AccountPasswordPolicy, error) { + var resource AccountPasswordPolicy + err := ctx.ReadResource("aws:iam/accountPasswordPolicy:AccountPasswordPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AccountPasswordPolicy resources. +type accountPasswordPolicyState struct { + // Whether to allow users to change their own password + AllowUsersToChangePassword *bool `pulumi:"allowUsersToChangePassword"` + // Indicates whether passwords in the account expire. Returns `true` if `maxPasswordAge` contains a value greater than `0`. Returns `false` if it is `0` or _not present_. + ExpirePasswords *bool `pulumi:"expirePasswords"` + // Whether users are prevented from setting a new password after their password has expired (i.e., require administrator reset) + HardExpiry *bool `pulumi:"hardExpiry"` + // The number of days that an user password is valid. + MaxPasswordAge *int `pulumi:"maxPasswordAge"` + // Minimum length to require for user passwords. + MinimumPasswordLength *int `pulumi:"minimumPasswordLength"` + // The number of previous passwords that users are prevented from reusing. + PasswordReusePrevention *int `pulumi:"passwordReusePrevention"` + // Whether to require lowercase characters for user passwords. + RequireLowercaseCharacters *bool `pulumi:"requireLowercaseCharacters"` + // Whether to require numbers for user passwords. + RequireNumbers *bool `pulumi:"requireNumbers"` + // Whether to require symbols for user passwords. + RequireSymbols *bool `pulumi:"requireSymbols"` + // Whether to require uppercase characters for user passwords. + RequireUppercaseCharacters *bool `pulumi:"requireUppercaseCharacters"` +} + +type AccountPasswordPolicyState struct { + // Whether to allow users to change their own password + AllowUsersToChangePassword pulumi.BoolPtrInput + // Indicates whether passwords in the account expire. Returns `true` if `maxPasswordAge` contains a value greater than `0`. Returns `false` if it is `0` or _not present_. + ExpirePasswords pulumi.BoolPtrInput + // Whether users are prevented from setting a new password after their password has expired (i.e., require administrator reset) + HardExpiry pulumi.BoolPtrInput + // The number of days that an user password is valid. + MaxPasswordAge pulumi.IntPtrInput + // Minimum length to require for user passwords. + MinimumPasswordLength pulumi.IntPtrInput + // The number of previous passwords that users are prevented from reusing. + PasswordReusePrevention pulumi.IntPtrInput + // Whether to require lowercase characters for user passwords. + RequireLowercaseCharacters pulumi.BoolPtrInput + // Whether to require numbers for user passwords. + RequireNumbers pulumi.BoolPtrInput + // Whether to require symbols for user passwords. + RequireSymbols pulumi.BoolPtrInput + // Whether to require uppercase characters for user passwords. + RequireUppercaseCharacters pulumi.BoolPtrInput +} + +func (AccountPasswordPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*accountPasswordPolicyState)(nil)).Elem() +} + +type accountPasswordPolicyArgs struct { + // Whether to allow users to change their own password + AllowUsersToChangePassword *bool `pulumi:"allowUsersToChangePassword"` + // Whether users are prevented from setting a new password after their password has expired (i.e., require administrator reset) + HardExpiry *bool `pulumi:"hardExpiry"` + // The number of days that an user password is valid. + MaxPasswordAge *int `pulumi:"maxPasswordAge"` + // Minimum length to require for user passwords. + MinimumPasswordLength *int `pulumi:"minimumPasswordLength"` + // The number of previous passwords that users are prevented from reusing. + PasswordReusePrevention *int `pulumi:"passwordReusePrevention"` + // Whether to require lowercase characters for user passwords. + RequireLowercaseCharacters *bool `pulumi:"requireLowercaseCharacters"` + // Whether to require numbers for user passwords. + RequireNumbers *bool `pulumi:"requireNumbers"` + // Whether to require symbols for user passwords. + RequireSymbols *bool `pulumi:"requireSymbols"` + // Whether to require uppercase characters for user passwords. + RequireUppercaseCharacters *bool `pulumi:"requireUppercaseCharacters"` +} + +// The set of arguments for constructing a AccountPasswordPolicy resource. +type AccountPasswordPolicyArgs struct { + // Whether to allow users to change their own password + AllowUsersToChangePassword pulumi.BoolPtrInput + // Whether users are prevented from setting a new password after their password has expired (i.e., require administrator reset) + HardExpiry pulumi.BoolPtrInput + // The number of days that an user password is valid. + MaxPasswordAge pulumi.IntPtrInput + // Minimum length to require for user passwords. + MinimumPasswordLength pulumi.IntPtrInput + // The number of previous passwords that users are prevented from reusing. + PasswordReusePrevention pulumi.IntPtrInput + // Whether to require lowercase characters for user passwords. + RequireLowercaseCharacters pulumi.BoolPtrInput + // Whether to require numbers for user passwords. + RequireNumbers pulumi.BoolPtrInput + // Whether to require symbols for user passwords. + RequireSymbols pulumi.BoolPtrInput + // Whether to require uppercase characters for user passwords. + RequireUppercaseCharacters pulumi.BoolPtrInput +} + +func (AccountPasswordPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*accountPasswordPolicyArgs)(nil)).Elem() +} + +type AccountPasswordPolicyInput interface { + pulumi.Input + + ToAccountPasswordPolicyOutput() AccountPasswordPolicyOutput + ToAccountPasswordPolicyOutputWithContext(ctx context.Context) AccountPasswordPolicyOutput +} + +func (*AccountPasswordPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**AccountPasswordPolicy)(nil)).Elem() +} + +func (i *AccountPasswordPolicy) ToAccountPasswordPolicyOutput() AccountPasswordPolicyOutput { + return i.ToAccountPasswordPolicyOutputWithContext(context.Background()) +} + +func (i *AccountPasswordPolicy) ToAccountPasswordPolicyOutputWithContext(ctx context.Context) AccountPasswordPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountPasswordPolicyOutput) +} + +// AccountPasswordPolicyArrayInput is an input type that accepts AccountPasswordPolicyArray and AccountPasswordPolicyArrayOutput values. +// You can construct a concrete instance of `AccountPasswordPolicyArrayInput` via: +// +// AccountPasswordPolicyArray{ AccountPasswordPolicyArgs{...} } +type AccountPasswordPolicyArrayInput interface { + pulumi.Input + + ToAccountPasswordPolicyArrayOutput() AccountPasswordPolicyArrayOutput + ToAccountPasswordPolicyArrayOutputWithContext(context.Context) AccountPasswordPolicyArrayOutput +} + +type AccountPasswordPolicyArray []AccountPasswordPolicyInput + +func (AccountPasswordPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountPasswordPolicy)(nil)).Elem() +} + +func (i AccountPasswordPolicyArray) ToAccountPasswordPolicyArrayOutput() AccountPasswordPolicyArrayOutput { + return i.ToAccountPasswordPolicyArrayOutputWithContext(context.Background()) +} + +func (i AccountPasswordPolicyArray) ToAccountPasswordPolicyArrayOutputWithContext(ctx context.Context) AccountPasswordPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountPasswordPolicyArrayOutput) +} + +// AccountPasswordPolicyMapInput is an input type that accepts AccountPasswordPolicyMap and AccountPasswordPolicyMapOutput values. +// You can construct a concrete instance of `AccountPasswordPolicyMapInput` via: +// +// AccountPasswordPolicyMap{ "key": AccountPasswordPolicyArgs{...} } +type AccountPasswordPolicyMapInput interface { + pulumi.Input + + ToAccountPasswordPolicyMapOutput() AccountPasswordPolicyMapOutput + ToAccountPasswordPolicyMapOutputWithContext(context.Context) AccountPasswordPolicyMapOutput +} + +type AccountPasswordPolicyMap map[string]AccountPasswordPolicyInput + +func (AccountPasswordPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountPasswordPolicy)(nil)).Elem() +} + +func (i AccountPasswordPolicyMap) ToAccountPasswordPolicyMapOutput() AccountPasswordPolicyMapOutput { + return i.ToAccountPasswordPolicyMapOutputWithContext(context.Background()) +} + +func (i AccountPasswordPolicyMap) ToAccountPasswordPolicyMapOutputWithContext(ctx context.Context) AccountPasswordPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountPasswordPolicyMapOutput) +} + +type AccountPasswordPolicyOutput struct{ *pulumi.OutputState } + +func (AccountPasswordPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccountPasswordPolicy)(nil)).Elem() +} + +func (o AccountPasswordPolicyOutput) ToAccountPasswordPolicyOutput() AccountPasswordPolicyOutput { + return o +} + +func (o AccountPasswordPolicyOutput) ToAccountPasswordPolicyOutputWithContext(ctx context.Context) AccountPasswordPolicyOutput { + return o +} + +// Whether to allow users to change their own password +func (o AccountPasswordPolicyOutput) AllowUsersToChangePassword() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.BoolPtrOutput { return v.AllowUsersToChangePassword }).(pulumi.BoolPtrOutput) +} + +// Indicates whether passwords in the account expire. Returns `true` if `maxPasswordAge` contains a value greater than `0`. Returns `false` if it is `0` or _not present_. +func (o AccountPasswordPolicyOutput) ExpirePasswords() pulumi.BoolOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.BoolOutput { return v.ExpirePasswords }).(pulumi.BoolOutput) +} + +// Whether users are prevented from setting a new password after their password has expired (i.e., require administrator reset) +func (o AccountPasswordPolicyOutput) HardExpiry() pulumi.BoolOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.BoolOutput { return v.HardExpiry }).(pulumi.BoolOutput) +} + +// The number of days that an user password is valid. +func (o AccountPasswordPolicyOutput) MaxPasswordAge() pulumi.IntOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.IntOutput { return v.MaxPasswordAge }).(pulumi.IntOutput) +} + +// Minimum length to require for user passwords. +func (o AccountPasswordPolicyOutput) MinimumPasswordLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.IntPtrOutput { return v.MinimumPasswordLength }).(pulumi.IntPtrOutput) +} + +// The number of previous passwords that users are prevented from reusing. +func (o AccountPasswordPolicyOutput) PasswordReusePrevention() pulumi.IntOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.IntOutput { return v.PasswordReusePrevention }).(pulumi.IntOutput) +} + +// Whether to require lowercase characters for user passwords. +func (o AccountPasswordPolicyOutput) RequireLowercaseCharacters() pulumi.BoolOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.BoolOutput { return v.RequireLowercaseCharacters }).(pulumi.BoolOutput) +} + +// Whether to require numbers for user passwords. +func (o AccountPasswordPolicyOutput) RequireNumbers() pulumi.BoolOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.BoolOutput { return v.RequireNumbers }).(pulumi.BoolOutput) +} + +// Whether to require symbols for user passwords. +func (o AccountPasswordPolicyOutput) RequireSymbols() pulumi.BoolOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.BoolOutput { return v.RequireSymbols }).(pulumi.BoolOutput) +} + +// Whether to require uppercase characters for user passwords. +func (o AccountPasswordPolicyOutput) RequireUppercaseCharacters() pulumi.BoolOutput { + return o.ApplyT(func(v *AccountPasswordPolicy) pulumi.BoolOutput { return v.RequireUppercaseCharacters }).(pulumi.BoolOutput) +} + +type AccountPasswordPolicyArrayOutput struct{ *pulumi.OutputState } + +func (AccountPasswordPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountPasswordPolicy)(nil)).Elem() +} + +func (o AccountPasswordPolicyArrayOutput) ToAccountPasswordPolicyArrayOutput() AccountPasswordPolicyArrayOutput { + return o +} + +func (o AccountPasswordPolicyArrayOutput) ToAccountPasswordPolicyArrayOutputWithContext(ctx context.Context) AccountPasswordPolicyArrayOutput { + return o +} + +func (o AccountPasswordPolicyArrayOutput) Index(i pulumi.IntInput) AccountPasswordPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AccountPasswordPolicy { + return vs[0].([]*AccountPasswordPolicy)[vs[1].(int)] + }).(AccountPasswordPolicyOutput) +} + +type AccountPasswordPolicyMapOutput struct{ *pulumi.OutputState } + +func (AccountPasswordPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountPasswordPolicy)(nil)).Elem() +} + +func (o AccountPasswordPolicyMapOutput) ToAccountPasswordPolicyMapOutput() AccountPasswordPolicyMapOutput { + return o +} + +func (o AccountPasswordPolicyMapOutput) ToAccountPasswordPolicyMapOutputWithContext(ctx context.Context) AccountPasswordPolicyMapOutput { + return o +} + +func (o AccountPasswordPolicyMapOutput) MapIndex(k pulumi.StringInput) AccountPasswordPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AccountPasswordPolicy { + return vs[0].(map[string]*AccountPasswordPolicy)[vs[1].(string)] + }).(AccountPasswordPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AccountPasswordPolicyInput)(nil)).Elem(), &AccountPasswordPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountPasswordPolicyArrayInput)(nil)).Elem(), AccountPasswordPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountPasswordPolicyMapInput)(nil)).Elem(), AccountPasswordPolicyMap{}) + pulumi.RegisterOutputType(AccountPasswordPolicyOutput{}) + pulumi.RegisterOutputType(AccountPasswordPolicyArrayOutput{}) + pulumi.RegisterOutputType(AccountPasswordPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccessKeys.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccessKeys.go new file mode 100644 index 000000000..06fcfbc42 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccessKeys.go @@ -0,0 +1,127 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about IAM access keys of a +// specific IAM user. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetAccessKeys(ctx, &iam.GetAccessKeysArgs{ +// User: "an_example_user_name", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetAccessKeys(ctx *pulumi.Context, args *GetAccessKeysArgs, opts ...pulumi.InvokeOption) (*GetAccessKeysResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetAccessKeysResult + err := ctx.Invoke("aws:iam/getAccessKeys:getAccessKeys", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getAccessKeys. +type GetAccessKeysArgs struct { + // Name of the IAM user associated with the access keys. + User string `pulumi:"user"` +} + +// A collection of values returned by getAccessKeys. +type GetAccessKeysResult struct { + // List of the IAM access keys associated with the specified user. See below. + AccessKeys []GetAccessKeysAccessKey `pulumi:"accessKeys"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + User string `pulumi:"user"` +} + +func GetAccessKeysOutput(ctx *pulumi.Context, args GetAccessKeysOutputArgs, opts ...pulumi.InvokeOption) GetAccessKeysResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetAccessKeysResultOutput, error) { + args := v.(GetAccessKeysArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetAccessKeysResult + secret, err := ctx.InvokePackageRaw("aws:iam/getAccessKeys:getAccessKeys", args, &rv, "", opts...) + if err != nil { + return GetAccessKeysResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetAccessKeysResultOutput) + if secret { + return pulumi.ToSecret(output).(GetAccessKeysResultOutput), nil + } + return output, nil + }).(GetAccessKeysResultOutput) +} + +// A collection of arguments for invoking getAccessKeys. +type GetAccessKeysOutputArgs struct { + // Name of the IAM user associated with the access keys. + User pulumi.StringInput `pulumi:"user"` +} + +func (GetAccessKeysOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetAccessKeysArgs)(nil)).Elem() +} + +// A collection of values returned by getAccessKeys. +type GetAccessKeysResultOutput struct{ *pulumi.OutputState } + +func (GetAccessKeysResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetAccessKeysResult)(nil)).Elem() +} + +func (o GetAccessKeysResultOutput) ToGetAccessKeysResultOutput() GetAccessKeysResultOutput { + return o +} + +func (o GetAccessKeysResultOutput) ToGetAccessKeysResultOutputWithContext(ctx context.Context) GetAccessKeysResultOutput { + return o +} + +// List of the IAM access keys associated with the specified user. See below. +func (o GetAccessKeysResultOutput) AccessKeys() GetAccessKeysAccessKeyArrayOutput { + return o.ApplyT(func(v GetAccessKeysResult) []GetAccessKeysAccessKey { return v.AccessKeys }).(GetAccessKeysAccessKeyArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetAccessKeysResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetAccessKeysResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o GetAccessKeysResultOutput) User() pulumi.StringOutput { + return o.ApplyT(func(v GetAccessKeysResult) string { return v.User }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetAccessKeysResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccountAlias.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccountAlias.go new file mode 100644 index 000000000..1999c8de2 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getAccountAlias.go @@ -0,0 +1,103 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The IAM Account Alias data source allows access to the account alias +// for the effective account in which this provider is working. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := iam.LookupAccountAlias(ctx, map[string]interface{}{}, nil) +// if err != nil { +// return err +// } +// ctx.Export("accountAlias", current.AccountAlias) +// return nil +// }) +// } +// +// ``` +func LookupAccountAlias(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*LookupAccountAliasResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupAccountAliasResult + err := ctx.Invoke("aws:iam/getAccountAlias:getAccountAlias", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of values returned by getAccountAlias. +type LookupAccountAliasResult struct { + // Alias associated with the AWS account. + AccountAlias string `pulumi:"accountAlias"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` +} + +func LookupAccountAliasOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) LookupAccountAliasResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (LookupAccountAliasResultOutput, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupAccountAliasResult + secret, err := ctx.InvokePackageRaw("aws:iam/getAccountAlias:getAccountAlias", nil, &rv, "", opts...) + if err != nil { + return LookupAccountAliasResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupAccountAliasResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupAccountAliasResultOutput), nil + } + return output, nil + }).(LookupAccountAliasResultOutput) +} + +// A collection of values returned by getAccountAlias. +type LookupAccountAliasResultOutput struct{ *pulumi.OutputState } + +func (LookupAccountAliasResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupAccountAliasResult)(nil)).Elem() +} + +func (o LookupAccountAliasResultOutput) ToLookupAccountAliasResultOutput() LookupAccountAliasResultOutput { + return o +} + +func (o LookupAccountAliasResultOutput) ToLookupAccountAliasResultOutputWithContext(ctx context.Context) LookupAccountAliasResultOutput { + return o +} + +// Alias associated with the AWS account. +func (o LookupAccountAliasResultOutput) AccountAlias() pulumi.StringOutput { + return o.ApplyT(func(v LookupAccountAliasResult) string { return v.AccountAlias }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupAccountAliasResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupAccountAliasResult) string { return v.Id }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupAccountAliasResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getGroup.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getGroup.go new file mode 100644 index 000000000..085372b5f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getGroup.go @@ -0,0 +1,149 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// IAM group. By using this data source, you can reference IAM group +// properties without having to hard code ARNs as input. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupGroup(ctx, &iam.LookupGroupArgs{ +// GroupName: "an_example_group_name", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupGroup(ctx *pulumi.Context, args *LookupGroupArgs, opts ...pulumi.InvokeOption) (*LookupGroupResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupGroupResult + err := ctx.Invoke("aws:iam/getGroup:getGroup", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getGroup. +type LookupGroupArgs struct { + // Friendly IAM group name to match. + GroupName string `pulumi:"groupName"` +} + +// A collection of values returned by getGroup. +type LookupGroupResult struct { + // User ARN. + Arn string `pulumi:"arn"` + // Stable and unique string identifying the group. + GroupId string `pulumi:"groupId"` + GroupName string `pulumi:"groupName"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Path to the IAM user. + Path string `pulumi:"path"` + // List of objects containing group member information. See below. + Users []GetGroupUser `pulumi:"users"` +} + +func LookupGroupOutput(ctx *pulumi.Context, args LookupGroupOutputArgs, opts ...pulumi.InvokeOption) LookupGroupResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupGroupResultOutput, error) { + args := v.(LookupGroupArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupGroupResult + secret, err := ctx.InvokePackageRaw("aws:iam/getGroup:getGroup", args, &rv, "", opts...) + if err != nil { + return LookupGroupResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupGroupResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupGroupResultOutput), nil + } + return output, nil + }).(LookupGroupResultOutput) +} + +// A collection of arguments for invoking getGroup. +type LookupGroupOutputArgs struct { + // Friendly IAM group name to match. + GroupName pulumi.StringInput `pulumi:"groupName"` +} + +func (LookupGroupOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupGroupArgs)(nil)).Elem() +} + +// A collection of values returned by getGroup. +type LookupGroupResultOutput struct{ *pulumi.OutputState } + +func (LookupGroupResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupGroupResult)(nil)).Elem() +} + +func (o LookupGroupResultOutput) ToLookupGroupResultOutput() LookupGroupResultOutput { + return o +} + +func (o LookupGroupResultOutput) ToLookupGroupResultOutputWithContext(ctx context.Context) LookupGroupResultOutput { + return o +} + +// User ARN. +func (o LookupGroupResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupGroupResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Stable and unique string identifying the group. +func (o LookupGroupResultOutput) GroupId() pulumi.StringOutput { + return o.ApplyT(func(v LookupGroupResult) string { return v.GroupId }).(pulumi.StringOutput) +} + +func (o LookupGroupResultOutput) GroupName() pulumi.StringOutput { + return o.ApplyT(func(v LookupGroupResult) string { return v.GroupName }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupGroupResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupGroupResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Path to the IAM user. +func (o LookupGroupResultOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v LookupGroupResult) string { return v.Path }).(pulumi.StringOutput) +} + +// List of objects containing group member information. See below. +func (o LookupGroupResultOutput) Users() GetGroupUserArrayOutput { + return o.ApplyT(func(v LookupGroupResult) []GetGroupUser { return v.Users }).(GetGroupUserArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupGroupResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfile.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfile.go new file mode 100644 index 000000000..ab49ec3f8 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfile.go @@ -0,0 +1,163 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// IAM instance profile. By using this data source, you can reference IAM +// instance profile properties without having to hard code ARNs as input. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupInstanceProfile(ctx, &iam.LookupInstanceProfileArgs{ +// Name: "an_example_instance_profile_name", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupInstanceProfile(ctx *pulumi.Context, args *LookupInstanceProfileArgs, opts ...pulumi.InvokeOption) (*LookupInstanceProfileResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupInstanceProfileResult + err := ctx.Invoke("aws:iam/getInstanceProfile:getInstanceProfile", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getInstanceProfile. +type LookupInstanceProfileArgs struct { + // Friendly IAM instance profile name to match. + Name string `pulumi:"name"` +} + +// A collection of values returned by getInstanceProfile. +type LookupInstanceProfileResult struct { + // ARN. + Arn string `pulumi:"arn"` + // String representation of the date the instance profile was created. + CreateDate string `pulumi:"createDate"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Name string `pulumi:"name"` + // Path to the instance profile. + Path string `pulumi:"path"` + // Role ARN associated with this instance profile. + RoleArn string `pulumi:"roleArn"` + // Role ID associated with this instance profile. + RoleId string `pulumi:"roleId"` + // Role name associated with this instance profile. + RoleName string `pulumi:"roleName"` +} + +func LookupInstanceProfileOutput(ctx *pulumi.Context, args LookupInstanceProfileOutputArgs, opts ...pulumi.InvokeOption) LookupInstanceProfileResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupInstanceProfileResultOutput, error) { + args := v.(LookupInstanceProfileArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupInstanceProfileResult + secret, err := ctx.InvokePackageRaw("aws:iam/getInstanceProfile:getInstanceProfile", args, &rv, "", opts...) + if err != nil { + return LookupInstanceProfileResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupInstanceProfileResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupInstanceProfileResultOutput), nil + } + return output, nil + }).(LookupInstanceProfileResultOutput) +} + +// A collection of arguments for invoking getInstanceProfile. +type LookupInstanceProfileOutputArgs struct { + // Friendly IAM instance profile name to match. + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupInstanceProfileOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupInstanceProfileArgs)(nil)).Elem() +} + +// A collection of values returned by getInstanceProfile. +type LookupInstanceProfileResultOutput struct{ *pulumi.OutputState } + +func (LookupInstanceProfileResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupInstanceProfileResult)(nil)).Elem() +} + +func (o LookupInstanceProfileResultOutput) ToLookupInstanceProfileResultOutput() LookupInstanceProfileResultOutput { + return o +} + +func (o LookupInstanceProfileResultOutput) ToLookupInstanceProfileResultOutputWithContext(ctx context.Context) LookupInstanceProfileResultOutput { + return o +} + +// ARN. +func (o LookupInstanceProfileResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// String representation of the date the instance profile was created. +func (o LookupInstanceProfileResultOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.CreateDate }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupInstanceProfileResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupInstanceProfileResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.Name }).(pulumi.StringOutput) +} + +// Path to the instance profile. +func (o LookupInstanceProfileResultOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.Path }).(pulumi.StringOutput) +} + +// Role ARN associated with this instance profile. +func (o LookupInstanceProfileResultOutput) RoleArn() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.RoleArn }).(pulumi.StringOutput) +} + +// Role ID associated with this instance profile. +func (o LookupInstanceProfileResultOutput) RoleId() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.RoleId }).(pulumi.StringOutput) +} + +// Role name associated with this instance profile. +func (o LookupInstanceProfileResultOutput) RoleName() pulumi.StringOutput { + return o.ApplyT(func(v LookupInstanceProfileResult) string { return v.RoleName }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupInstanceProfileResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfiles.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfiles.go new file mode 100644 index 000000000..923da6a7e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getInstanceProfiles.go @@ -0,0 +1,142 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about all +// IAM instance profiles under a role. By using this data source, you can reference IAM +// instance profile properties without having to hard code ARNs as input. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetInstanceProfiles(ctx, &iam.GetInstanceProfilesArgs{ +// RoleName: "an_example_iam_role_name", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetInstanceProfiles(ctx *pulumi.Context, args *GetInstanceProfilesArgs, opts ...pulumi.InvokeOption) (*GetInstanceProfilesResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetInstanceProfilesResult + err := ctx.Invoke("aws:iam/getInstanceProfiles:getInstanceProfiles", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getInstanceProfiles. +type GetInstanceProfilesArgs struct { + // IAM role name. + RoleName string `pulumi:"roleName"` +} + +// A collection of values returned by getInstanceProfiles. +type GetInstanceProfilesResult struct { + // Set of ARNs of instance profiles. + Arns []string `pulumi:"arns"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Set of IAM instance profile names. + Names []string `pulumi:"names"` + // Set of IAM instance profile paths. + Paths []string `pulumi:"paths"` + RoleName string `pulumi:"roleName"` +} + +func GetInstanceProfilesOutput(ctx *pulumi.Context, args GetInstanceProfilesOutputArgs, opts ...pulumi.InvokeOption) GetInstanceProfilesResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetInstanceProfilesResultOutput, error) { + args := v.(GetInstanceProfilesArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetInstanceProfilesResult + secret, err := ctx.InvokePackageRaw("aws:iam/getInstanceProfiles:getInstanceProfiles", args, &rv, "", opts...) + if err != nil { + return GetInstanceProfilesResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetInstanceProfilesResultOutput) + if secret { + return pulumi.ToSecret(output).(GetInstanceProfilesResultOutput), nil + } + return output, nil + }).(GetInstanceProfilesResultOutput) +} + +// A collection of arguments for invoking getInstanceProfiles. +type GetInstanceProfilesOutputArgs struct { + // IAM role name. + RoleName pulumi.StringInput `pulumi:"roleName"` +} + +func (GetInstanceProfilesOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetInstanceProfilesArgs)(nil)).Elem() +} + +// A collection of values returned by getInstanceProfiles. +type GetInstanceProfilesResultOutput struct{ *pulumi.OutputState } + +func (GetInstanceProfilesResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetInstanceProfilesResult)(nil)).Elem() +} + +func (o GetInstanceProfilesResultOutput) ToGetInstanceProfilesResultOutput() GetInstanceProfilesResultOutput { + return o +} + +func (o GetInstanceProfilesResultOutput) ToGetInstanceProfilesResultOutputWithContext(ctx context.Context) GetInstanceProfilesResultOutput { + return o +} + +// Set of ARNs of instance profiles. +func (o GetInstanceProfilesResultOutput) Arns() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetInstanceProfilesResult) []string { return v.Arns }).(pulumi.StringArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetInstanceProfilesResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetInstanceProfilesResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Set of IAM instance profile names. +func (o GetInstanceProfilesResultOutput) Names() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetInstanceProfilesResult) []string { return v.Names }).(pulumi.StringArrayOutput) +} + +// Set of IAM instance profile paths. +func (o GetInstanceProfilesResultOutput) Paths() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetInstanceProfilesResult) []string { return v.Paths }).(pulumi.StringArrayOutput) +} + +func (o GetInstanceProfilesResultOutput) RoleName() pulumi.StringOutput { + return o.ApplyT(func(v GetInstanceProfilesResult) string { return v.RoleName }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetInstanceProfilesResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getOpenIdConnectProvider.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getOpenIdConnectProvider.go new file mode 100644 index 000000000..8da5401e2 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getOpenIdConnectProvider.go @@ -0,0 +1,179 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// IAM OpenID Connect provider. By using this data source, you can retrieve the +// the resource information by either its `arn` or `url`. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupOpenIdConnectProvider(ctx, &iam.LookupOpenIdConnectProviderArgs{ +// Arn: pulumi.StringRef("arn:aws:iam::123456789012:oidc-provider/accounts.google.com"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupOpenIdConnectProvider(ctx, &iam.LookupOpenIdConnectProviderArgs{ +// Url: pulumi.StringRef("https://accounts.google.com"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupOpenIdConnectProvider(ctx *pulumi.Context, args *LookupOpenIdConnectProviderArgs, opts ...pulumi.InvokeOption) (*LookupOpenIdConnectProviderResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupOpenIdConnectProviderResult + err := ctx.Invoke("aws:iam/getOpenIdConnectProvider:getOpenIdConnectProvider", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getOpenIdConnectProvider. +type LookupOpenIdConnectProviderArgs struct { + // ARN of the OpenID Connect provider. + Arn *string `pulumi:"arn"` + // Map of resource tags for the IAM OIDC provider. + Tags map[string]string `pulumi:"tags"` + // URL of the OpenID Connect provider. + Url *string `pulumi:"url"` +} + +// A collection of values returned by getOpenIdConnectProvider. +type LookupOpenIdConnectProviderResult struct { + Arn string `pulumi:"arn"` + // List of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) + ClientIdLists []string `pulumi:"clientIdLists"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Map of resource tags for the IAM OIDC provider. + Tags map[string]string `pulumi:"tags"` + // List of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). + ThumbprintLists []string `pulumi:"thumbprintLists"` + Url string `pulumi:"url"` +} + +func LookupOpenIdConnectProviderOutput(ctx *pulumi.Context, args LookupOpenIdConnectProviderOutputArgs, opts ...pulumi.InvokeOption) LookupOpenIdConnectProviderResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupOpenIdConnectProviderResultOutput, error) { + args := v.(LookupOpenIdConnectProviderArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupOpenIdConnectProviderResult + secret, err := ctx.InvokePackageRaw("aws:iam/getOpenIdConnectProvider:getOpenIdConnectProvider", args, &rv, "", opts...) + if err != nil { + return LookupOpenIdConnectProviderResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupOpenIdConnectProviderResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupOpenIdConnectProviderResultOutput), nil + } + return output, nil + }).(LookupOpenIdConnectProviderResultOutput) +} + +// A collection of arguments for invoking getOpenIdConnectProvider. +type LookupOpenIdConnectProviderOutputArgs struct { + // ARN of the OpenID Connect provider. + Arn pulumi.StringPtrInput `pulumi:"arn"` + // Map of resource tags for the IAM OIDC provider. + Tags pulumi.StringMapInput `pulumi:"tags"` + // URL of the OpenID Connect provider. + Url pulumi.StringPtrInput `pulumi:"url"` +} + +func (LookupOpenIdConnectProviderOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupOpenIdConnectProviderArgs)(nil)).Elem() +} + +// A collection of values returned by getOpenIdConnectProvider. +type LookupOpenIdConnectProviderResultOutput struct{ *pulumi.OutputState } + +func (LookupOpenIdConnectProviderResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupOpenIdConnectProviderResult)(nil)).Elem() +} + +func (o LookupOpenIdConnectProviderResultOutput) ToLookupOpenIdConnectProviderResultOutput() LookupOpenIdConnectProviderResultOutput { + return o +} + +func (o LookupOpenIdConnectProviderResultOutput) ToLookupOpenIdConnectProviderResultOutputWithContext(ctx context.Context) LookupOpenIdConnectProviderResultOutput { + return o +} + +func (o LookupOpenIdConnectProviderResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupOpenIdConnectProviderResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// List of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) +func (o LookupOpenIdConnectProviderResultOutput) ClientIdLists() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupOpenIdConnectProviderResult) []string { return v.ClientIdLists }).(pulumi.StringArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupOpenIdConnectProviderResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupOpenIdConnectProviderResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Map of resource tags for the IAM OIDC provider. +func (o LookupOpenIdConnectProviderResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupOpenIdConnectProviderResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// List of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). +func (o LookupOpenIdConnectProviderResultOutput) ThumbprintLists() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupOpenIdConnectProviderResult) []string { return v.ThumbprintLists }).(pulumi.StringArrayOutput) +} + +func (o LookupOpenIdConnectProviderResultOutput) Url() pulumi.StringOutput { + return o.ApplyT(func(v LookupOpenIdConnectProviderResult) string { return v.Url }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupOpenIdConnectProviderResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicy.go new file mode 100644 index 000000000..c9fa7791a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicy.go @@ -0,0 +1,222 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// IAM policy. +// +// ## Example Usage +// +// ### By ARN +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupPolicy(ctx, &iam.LookupPolicyArgs{ +// Arn: pulumi.StringRef("arn:aws:iam::123456789012:policy/UsersManageOwnCredentials"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### By Name +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupPolicy(ctx, &iam.LookupPolicyArgs{ +// Name: pulumi.StringRef("test_policy"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupPolicy(ctx *pulumi.Context, args *LookupPolicyArgs, opts ...pulumi.InvokeOption) (*LookupPolicyResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupPolicyResult + err := ctx.Invoke("aws:iam/getPolicy:getPolicy", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getPolicy. +type LookupPolicyArgs struct { + // ARN of the IAM policy. + // Conflicts with `name` and `pathPrefix`. + Arn *string `pulumi:"arn"` + // Name of the IAM policy. + // Conflicts with `arn`. + Name *string `pulumi:"name"` + // Prefix of the path to the IAM policy. + // Defaults to a slash (`/`). + // Conflicts with `arn`. + PathPrefix *string `pulumi:"pathPrefix"` + // Key-value mapping of tags for the IAM Policy. + Tags map[string]string `pulumi:"tags"` +} + +// A collection of values returned by getPolicy. +type LookupPolicyResult struct { + // ARN of the policy. + Arn string `pulumi:"arn"` + // Number of entities (users, groups, and roles) that the policy is attached to. + AttachmentCount int `pulumi:"attachmentCount"` + // Description of the policy. + Description string `pulumi:"description"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Name string `pulumi:"name"` + // Path to the policy. + Path string `pulumi:"path"` + PathPrefix *string `pulumi:"pathPrefix"` + // Policy document of the policy. + Policy string `pulumi:"policy"` + // Policy's ID. + PolicyId string `pulumi:"policyId"` + // Key-value mapping of tags for the IAM Policy. + Tags map[string]string `pulumi:"tags"` +} + +func LookupPolicyOutput(ctx *pulumi.Context, args LookupPolicyOutputArgs, opts ...pulumi.InvokeOption) LookupPolicyResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupPolicyResultOutput, error) { + args := v.(LookupPolicyArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupPolicyResult + secret, err := ctx.InvokePackageRaw("aws:iam/getPolicy:getPolicy", args, &rv, "", opts...) + if err != nil { + return LookupPolicyResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupPolicyResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupPolicyResultOutput), nil + } + return output, nil + }).(LookupPolicyResultOutput) +} + +// A collection of arguments for invoking getPolicy. +type LookupPolicyOutputArgs struct { + // ARN of the IAM policy. + // Conflicts with `name` and `pathPrefix`. + Arn pulumi.StringPtrInput `pulumi:"arn"` + // Name of the IAM policy. + // Conflicts with `arn`. + Name pulumi.StringPtrInput `pulumi:"name"` + // Prefix of the path to the IAM policy. + // Defaults to a slash (`/`). + // Conflicts with `arn`. + PathPrefix pulumi.StringPtrInput `pulumi:"pathPrefix"` + // Key-value mapping of tags for the IAM Policy. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (LookupPolicyOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupPolicyArgs)(nil)).Elem() +} + +// A collection of values returned by getPolicy. +type LookupPolicyResultOutput struct{ *pulumi.OutputState } + +func (LookupPolicyResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupPolicyResult)(nil)).Elem() +} + +func (o LookupPolicyResultOutput) ToLookupPolicyResultOutput() LookupPolicyResultOutput { + return o +} + +func (o LookupPolicyResultOutput) ToLookupPolicyResultOutputWithContext(ctx context.Context) LookupPolicyResultOutput { + return o +} + +// ARN of the policy. +func (o LookupPolicyResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupPolicyResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Number of entities (users, groups, and roles) that the policy is attached to. +func (o LookupPolicyResultOutput) AttachmentCount() pulumi.IntOutput { + return o.ApplyT(func(v LookupPolicyResult) int { return v.AttachmentCount }).(pulumi.IntOutput) +} + +// Description of the policy. +func (o LookupPolicyResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupPolicyResult) string { return v.Description }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupPolicyResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupPolicyResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupPolicyResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupPolicyResult) string { return v.Name }).(pulumi.StringOutput) +} + +// Path to the policy. +func (o LookupPolicyResultOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v LookupPolicyResult) string { return v.Path }).(pulumi.StringOutput) +} + +func (o LookupPolicyResultOutput) PathPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupPolicyResult) *string { return v.PathPrefix }).(pulumi.StringPtrOutput) +} + +// Policy document of the policy. +func (o LookupPolicyResultOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v LookupPolicyResult) string { return v.Policy }).(pulumi.StringOutput) +} + +// Policy's ID. +func (o LookupPolicyResultOutput) PolicyId() pulumi.StringOutput { + return o.ApplyT(func(v LookupPolicyResult) string { return v.PolicyId }).(pulumi.StringOutput) +} + +// Key-value mapping of tags for the IAM Policy. +func (o LookupPolicyResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupPolicyResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupPolicyResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicyDocument.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicyDocument.go new file mode 100644 index 000000000..373d42d7b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPolicyDocument.go @@ -0,0 +1,737 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Generates an IAM policy document in JSON format for use with resources that expect policy documents such as `iam.Policy`. +// +// Using this data source to generate policy documents is *optional*. It is also valid to use literal JSON strings in your configuration or to use the `file` interpolation function to read a raw JSON policy document from a file. +// +// ## Example Usage +// +// ### Basic Example +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("1"), +// Actions: []string{ +// "s3:ListAllMyBuckets", +// "s3:GetBucketLocation", +// }, +// Resources: []string{ +// "arn:aws:s3:::*", +// }, +// }, +// { +// Actions: []string{ +// "s3:ListBucket", +// }, +// Resources: []string{ +// fmt.Sprintf("arn:aws:s3:::%v", s3BucketName), +// }, +// Conditions: []iam.GetPolicyDocumentStatementCondition{ +// { +// Test: "StringLike", +// Variable: "s3:prefix", +// Values: []string{ +// "", +// "home/", +// "home/&{aws:username}/", +// }, +// }, +// }, +// }, +// { +// Actions: []string{ +// "s3:*", +// }, +// Resources: []string{ +// fmt.Sprintf("arn:aws:s3:::%v/home/&{aws:username}", s3BucketName), +// fmt.Sprintf("arn:aws:s3:::%v/home/&{aws:username}/*", s3BucketName), +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = iam.NewPolicy(ctx, "example", &iam.PolicyArgs{ +// Name: pulumi.String("example_policy"), +// Path: pulumi.String("/"), +// Policy: pulumi.String(example.Json), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example Multiple Condition Keys and Values +// +// You can specify a [condition with multiple keys and values](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) by supplying multiple `condition` blocks with the same `test` value, but differing `variable` and `values` values. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "kms:Decrypt", +// "kms:GenerateDataKey", +// }, +// Resources: []string{ +// "*", +// }, +// Conditions: []iam.GetPolicyDocumentStatementCondition{ +// { +// Test: "ForAnyValue:StringEquals", +// Variable: "kms:EncryptionContext:service", +// Values: []string{ +// "pi", +// }, +// }, +// { +// Test: "ForAnyValue:StringEquals", +// Variable: "kms:EncryptionContext:aws:pi:service", +// Values: []string{ +// "rds", +// }, +// }, +// { +// Test: "ForAnyValue:StringEquals", +// Variable: "kms:EncryptionContext:aws:rds:db-id", +// Values: []string{ +// "db-AAAAABBBBBCCCCCDDDDDEEEEE", +// "db-EEEEEDDDDDCCCCCBBBBBAAAAA", +// }, +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// `data.aws_iam_policy_document.example_multiple_condition_keys_and_values.json` will evaluate to: +// +// ### Example Assume-Role Policy with Multiple Principals +// +// You can specify multiple principal blocks with different types. You can also use this data source to generate an assume-role policy. +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "sts:AssumeRole", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "firehose.amazonaws.com", +// }, +// }, +// { +// Type: "AWS", +// Identifiers: interface{}{ +// trustedRoleArn, +// }, +// }, +// { +// Type: "Federated", +// Identifiers: []string{ +// fmt.Sprintf("arn:aws:iam::%v:saml-provider/%v", accountId, providerName), +// "cognito-identity.amazonaws.com", +// }, +// }, +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// ### Example Using A Source Document +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// source, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "ec2:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// { +// Sid: pulumi.StringRef("SidToOverride"), +// Actions: []string{ +// "s3:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// SourcePolicyDocuments: interface{}{ +// source.Json, +// }, +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("SidToOverride"), +// Actions: []string{ +// "s3:*", +// }, +// Resources: []string{ +// "arn:aws:s3:::somebucket", +// "arn:aws:s3:::somebucket/*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// `data.aws_iam_policy_document.source_document_example.json` will evaluate to: +// +// ### Example Using An Override Document +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// override, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("SidToOverride"), +// Actions: []string{ +// "s3:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// OverridePolicyDocuments: interface{}{ +// override.Json, +// }, +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "ec2:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// { +// Sid: pulumi.StringRef("SidToOverride"), +// Actions: []string{ +// "s3:*", +// }, +// Resources: []string{ +// "arn:aws:s3:::somebucket", +// "arn:aws:s3:::somebucket/*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// `data.aws_iam_policy_document.override_policy_document_example.json` will evaluate to: +// +// ### Example with Both Source and Override Documents +// +// You can also combine `sourcePolicyDocuments` and `overridePolicyDocuments` in the same document. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// source, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("OverridePlaceholder"), +// Actions: []string{ +// "ec2:DescribeAccountAttributes", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// override, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("OverridePlaceholder"), +// Actions: []string{ +// "s3:GetObject", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// SourcePolicyDocuments: interface{}{ +// source.Json, +// }, +// OverridePolicyDocuments: interface{}{ +// override.Json, +// }, +// }, nil); +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// `data.aws_iam_policy_document.politik.json` will evaluate to: +// +// ### Example of Merging Source Documents +// +// Multiple documents can be combined using the `sourcePolicyDocuments` or `overridePolicyDocuments` attributes. `sourcePolicyDocuments` requires that all documents have unique Sids, while `overridePolicyDocuments` will iteratively override matching Sids. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// sourceOne, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "ec2:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// { +// Sid: pulumi.StringRef("UniqueSidOne"), +// Actions: []string{ +// "s3:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// sourceTwo, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("UniqueSidTwo"), +// Actions: []string{ +// "iam:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// { +// Actions: []string{ +// "lambda:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// SourcePolicyDocuments: interface{}{ +// sourceOne.Json, +// sourceTwo.Json, +// }, +// }, nil); +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// `data.aws_iam_policy_document.combined.json` will evaluate to: +// +// ### Example of Merging Override Documents +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// policyOne, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("OverridePlaceHolderOne"), +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "s3:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// policyTwo, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "ec2:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// { +// Sid: pulumi.StringRef("OverridePlaceHolderTwo"), +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "iam:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// policyThree, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("OverridePlaceHolderOne"), +// Effect: pulumi.StringRef("Deny"), +// Actions: []string{ +// "logs:*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// _, err = iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// OverridePolicyDocuments: interface{}{ +// policyOne.Json, +// policyTwo.Json, +// policyThree.Json, +// }, +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Sid: pulumi.StringRef("OverridePlaceHolderTwo"), +// Effect: pulumi.StringRef("Deny"), +// Actions: []string{ +// "*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil); +// if err != nil { +// return err +// } +// return nil +// }) +// } +// ``` +// +// `data.aws_iam_policy_document.combined.json` will evaluate to: +func GetPolicyDocument(ctx *pulumi.Context, args *GetPolicyDocumentArgs, opts ...pulumi.InvokeOption) (*GetPolicyDocumentResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetPolicyDocumentResult + err := ctx.Invoke("aws:iam/getPolicyDocument:getPolicyDocument", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getPolicyDocument. +type GetPolicyDocumentArgs struct { + // Deprecated: Not used + OverrideJson *string `pulumi:"overrideJson"` + // List of IAM policy documents that are merged together into the exported document. In merging, statements with non-blank `sid`s will override statements with the same `sid` from earlier documents in the list. Statements with non-blank `sid`s will also override statements with the same `sid` from `sourcePolicyDocuments`. Non-overriding statements will be added to the exported document. + OverridePolicyDocuments []string `pulumi:"overridePolicyDocuments"` + // ID for the policy document. + PolicyId *string `pulumi:"policyId"` + // Deprecated: Not used + SourceJson *string `pulumi:"sourceJson"` + // List of IAM policy documents that are merged together into the exported document. Statements defined in `sourcePolicyDocuments` must have unique `sid`s. Statements with the same `sid` from `overridePolicyDocuments` will override source statements. + SourcePolicyDocuments []string `pulumi:"sourcePolicyDocuments"` + // Configuration block for a policy statement. Detailed below. + Statements []GetPolicyDocumentStatement `pulumi:"statements"` + // IAM policy document version. Valid values are `2008-10-17` and `2012-10-17`. Defaults to `2012-10-17`. For more information, see the [AWS IAM User Guide](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_version.html). + Version *string `pulumi:"version"` +} + +// A collection of values returned by getPolicyDocument. +type GetPolicyDocumentResult struct { + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Standard JSON policy document rendered based on the arguments above. + Json string `pulumi:"json"` + // Minified JSON policy document rendered based on the arguments above. + MinifiedJson string `pulumi:"minifiedJson"` + // Deprecated: Not used + OverrideJson *string `pulumi:"overrideJson"` + OverridePolicyDocuments []string `pulumi:"overridePolicyDocuments"` + PolicyId *string `pulumi:"policyId"` + // Deprecated: Not used + SourceJson *string `pulumi:"sourceJson"` + SourcePolicyDocuments []string `pulumi:"sourcePolicyDocuments"` + Statements []GetPolicyDocumentStatement `pulumi:"statements"` + Version *string `pulumi:"version"` +} + +func GetPolicyDocumentOutput(ctx *pulumi.Context, args GetPolicyDocumentOutputArgs, opts ...pulumi.InvokeOption) GetPolicyDocumentResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetPolicyDocumentResultOutput, error) { + args := v.(GetPolicyDocumentArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetPolicyDocumentResult + secret, err := ctx.InvokePackageRaw("aws:iam/getPolicyDocument:getPolicyDocument", args, &rv, "", opts...) + if err != nil { + return GetPolicyDocumentResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetPolicyDocumentResultOutput) + if secret { + return pulumi.ToSecret(output).(GetPolicyDocumentResultOutput), nil + } + return output, nil + }).(GetPolicyDocumentResultOutput) +} + +// A collection of arguments for invoking getPolicyDocument. +type GetPolicyDocumentOutputArgs struct { + // Deprecated: Not used + OverrideJson pulumi.StringPtrInput `pulumi:"overrideJson"` + // List of IAM policy documents that are merged together into the exported document. In merging, statements with non-blank `sid`s will override statements with the same `sid` from earlier documents in the list. Statements with non-blank `sid`s will also override statements with the same `sid` from `sourcePolicyDocuments`. Non-overriding statements will be added to the exported document. + OverridePolicyDocuments pulumi.StringArrayInput `pulumi:"overridePolicyDocuments"` + // ID for the policy document. + PolicyId pulumi.StringPtrInput `pulumi:"policyId"` + // Deprecated: Not used + SourceJson pulumi.StringPtrInput `pulumi:"sourceJson"` + // List of IAM policy documents that are merged together into the exported document. Statements defined in `sourcePolicyDocuments` must have unique `sid`s. Statements with the same `sid` from `overridePolicyDocuments` will override source statements. + SourcePolicyDocuments pulumi.StringArrayInput `pulumi:"sourcePolicyDocuments"` + // Configuration block for a policy statement. Detailed below. + Statements GetPolicyDocumentStatementArrayInput `pulumi:"statements"` + // IAM policy document version. Valid values are `2008-10-17` and `2012-10-17`. Defaults to `2012-10-17`. For more information, see the [AWS IAM User Guide](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_version.html). + Version pulumi.StringPtrInput `pulumi:"version"` +} + +func (GetPolicyDocumentOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentArgs)(nil)).Elem() +} + +// A collection of values returned by getPolicyDocument. +type GetPolicyDocumentResultOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentResult)(nil)).Elem() +} + +func (o GetPolicyDocumentResultOutput) ToGetPolicyDocumentResultOutput() GetPolicyDocumentResultOutput { + return o +} + +func (o GetPolicyDocumentResultOutput) ToGetPolicyDocumentResultOutputWithContext(ctx context.Context) GetPolicyDocumentResultOutput { + return o +} + +// The provider-assigned unique ID for this managed resource. +func (o GetPolicyDocumentResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Standard JSON policy document rendered based on the arguments above. +func (o GetPolicyDocumentResultOutput) Json() pulumi.StringOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) string { return v.Json }).(pulumi.StringOutput) +} + +// Minified JSON policy document rendered based on the arguments above. +func (o GetPolicyDocumentResultOutput) MinifiedJson() pulumi.StringOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) string { return v.MinifiedJson }).(pulumi.StringOutput) +} + +// Deprecated: Not used +func (o GetPolicyDocumentResultOutput) OverrideJson() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) *string { return v.OverrideJson }).(pulumi.StringPtrOutput) +} + +func (o GetPolicyDocumentResultOutput) OverridePolicyDocuments() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) []string { return v.OverridePolicyDocuments }).(pulumi.StringArrayOutput) +} + +func (o GetPolicyDocumentResultOutput) PolicyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) *string { return v.PolicyId }).(pulumi.StringPtrOutput) +} + +// Deprecated: Not used +func (o GetPolicyDocumentResultOutput) SourceJson() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) *string { return v.SourceJson }).(pulumi.StringPtrOutput) +} + +func (o GetPolicyDocumentResultOutput) SourcePolicyDocuments() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) []string { return v.SourcePolicyDocuments }).(pulumi.StringArrayOutput) +} + +func (o GetPolicyDocumentResultOutput) Statements() GetPolicyDocumentStatementArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) []GetPolicyDocumentStatement { return v.Statements }).(GetPolicyDocumentStatementArrayOutput) +} + +func (o GetPolicyDocumentResultOutput) Version() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetPolicyDocumentResult) *string { return v.Version }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(GetPolicyDocumentResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPrincipalPolicySimulation.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPrincipalPolicySimulation.go new file mode 100644 index 000000000..f1bc92601 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getPrincipalPolicySimulation.go @@ -0,0 +1,402 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Runs a simulation of the IAM policies of a particular principal against a given hypothetical request. +// +// You can use this data source in conjunction with +// Preconditions and Postconditions so that your configuration can test either whether it should have sufficient access to do its own work, or whether policies your configuration declares itself are sufficient for their intended use elsewhere. +// +// > **Note:** Correctly using this data source requires familiarity with various details of AWS Identity and Access Management, and how various AWS services integrate with it. For general information on the AWS IAM policy simulator, see [Testing IAM policies with the IAM policy simulator](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_testing-policies.html). This data source wraps the `iam:SimulatePrincipalPolicy` API action described on that page. +// +// ## Example Usage +// +// ### Self Access-checking Example +// +// The following example raises an error if the credentials passed to the AWS provider do not have access to perform the three actions `s3:GetObject`, `s3:PutObject`, and `s3:DeleteObject` on the S3 bucket with the given ARN. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := aws.GetCallerIdentity(ctx, &aws.GetCallerIdentityArgs{}, nil) +// if err != nil { +// return err +// } +// _, err = iam.LookupPrincipalPolicySimulation(ctx, &iam.LookupPrincipalPolicySimulationArgs{ +// ActionNames: []string{ +// "s3:GetObject", +// "s3:PutObject", +// "s3:DeleteObject", +// }, +// PolicySourceArn: current.Arn, +// ResourceArns: []string{ +// "arn:aws:s3:::my-test-bucket", +// }, +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// If you intend to use this data source to quickly raise an error when the given credentials are insufficient then you must use `dependsOn` inside any resource which would require those credentials, to ensure that the policy check will run first: +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketObject(ctx, "example", &s3.BucketObjectArgs{ +// Bucket: pulumi.Any("my-test-bucket"), +// }, pulumi.DependsOn([]pulumi.Resource{ +// s3ObjectAccess, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Testing the Effect of a Declared Policy +// +// The following example declares an S3 bucket and a user that should have access to the bucket, and then uses `iam.getPrincipalPolicySimulation` to verify that the user does indeed have access to perform needed operations against the bucket. +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := aws.GetCallerIdentity(ctx, &aws.GetCallerIdentityArgs{}, nil) +// if err != nil { +// return err +// } +// example, err := iam.NewUser(ctx, "example", &iam.UserArgs{ +// Name: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// exampleBucketV2, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-test-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewUserPolicy(ctx, "s3_access", &iam.UserPolicyArgs{ +// Name: pulumi.String("example_s3_access"), +// User: example.Name, +// Policy: exampleBucketV2.Arn.ApplyT(func(arn string) (pulumi.String, error) { +// var _zero pulumi.String +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": "s3:GetObject", +// "Effect": "Allow", +// "Resource": arn, +// }, +// }, +// }) +// if err != nil { +// return _zero, err +// } +// json0 := string(tmpJSON0) +// return pulumi.String(json0), nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// accountAccess, err := s3.NewBucketPolicy(ctx, "account_access", &s3.BucketPolicyArgs{ +// Bucket: exampleBucketV2.Bucket, +// Policy: pulumi.All(exampleBucketV2.Arn, exampleBucketV2.Arn).ApplyT(func(_args []interface{}) (string, error) { +// exampleBucketV2Arn := _args[0].(string) +// exampleBucketV2Arn1 := _args[1].(string) +// var _zero string +// tmpJSON1, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": "s3:*", +// "Effect": "Allow", +// "Principal": map[string]interface{}{ +// "AWS": current.AccountId, +// }, +// "Resource": []string{ +// exampleBucketV2Arn, +// fmt.Sprintf("%v/*", exampleBucketV2Arn1), +// }, +// }, +// }, +// }) +// if err != nil { +// return _zero, err +// } +// json1 := string(tmpJSON1) +// return json1, nil +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// _ = iam.LookupPrincipalPolicySimulationOutput(ctx, iam.GetPrincipalPolicySimulationOutputArgs{ +// ActionNames: pulumi.StringArray{ +// pulumi.String("s3:GetObject"), +// }, +// PolicySourceArn: example.Arn, +// ResourceArns: pulumi.StringArray{ +// exampleBucketV2.Arn, +// }, +// ResourcePolicyJson: accountAccess.Policy, +// }, nil) +// return nil +// }) +// } +// +// ``` +// +// When using `iam.getPrincipalPolicySimulation` to test the effect of a policy declared elsewhere in the same configuration, it's important to use `dependsOn` to make sure that the needed policy has been fully created or updated before running the simulation. +func LookupPrincipalPolicySimulation(ctx *pulumi.Context, args *LookupPrincipalPolicySimulationArgs, opts ...pulumi.InvokeOption) (*LookupPrincipalPolicySimulationResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupPrincipalPolicySimulationResult + err := ctx.Invoke("aws:iam/getPrincipalPolicySimulation:getPrincipalPolicySimulation", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getPrincipalPolicySimulation. +type LookupPrincipalPolicySimulationArgs struct { + // A set of IAM action names to run simulations for. Each entry in this set adds an additional hypothetical request to the simulation. + // + // Action names consist of a service prefix and an action verb separated by a colon, such as `s3:GetObject`. Refer to [Actions, resources, and condition keys for AWS services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) to see the full set of possible IAM action names across all AWS services. + ActionNames []string `pulumi:"actionNames"` + // A set of additional principal policy documents to include in the simulation. The simulator will behave as if each of these policies were associated with the object specified in `policySourceArn`, allowing you to test the effect of hypothetical policies not yet created. + AdditionalPoliciesJsons []string `pulumi:"additionalPoliciesJsons"` + // The ARN of an user that will appear as the "caller" of the simulated requests. If you do not specify `callerArn` then the simulation will use the `policySourceArn` instead, if it contains a user ARN. + CallerArn *string `pulumi:"callerArn"` + // Each `context` block defines an entry in the table of additional context keys in the simulated request. + // + // IAM uses context keys for both custom conditions and for interpolating dynamic request-specific values into policy values. If you use policies that include those features then you will need to provide suitable example values for those keys to achieve a realistic simulation. + Contexts []GetPrincipalPolicySimulationContext `pulumi:"contexts"` + // A set of [permissions boundary policy documents](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) to include in the simulation. + PermissionsBoundaryPoliciesJsons []string `pulumi:"permissionsBoundaryPoliciesJsons"` + // The [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) of the IAM user, group, or role whose policies will be included in the simulation. + // + // You must closely match the form of the real service request you are simulating in order to achieve a realistic result. You can use the following additional arguments to specify other characteristics of the simulated requests: + PolicySourceArn string `pulumi:"policySourceArn"` + // A set of ARNs of resources to include in the simulation. + // + // This argument is important for actions that have either required or optional resource types listed in [Actions, resources, and condition keys for AWS services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html), and you must provide ARNs that identify AWS objects of the appropriate types for the chosen actions. + // + // The policy simulator only automatically loads policies associated with the `policySourceArn`, so if your given resources have their own resource-level policy then you'll also need to provide that explicitly using the `resourcePolicyJson` argument to achieve a realistic simulation. + ResourceArns []string `pulumi:"resourceArns"` + // Specifies a special simulation type to run. Some EC2 actions require special simulation behaviors and a particular set of resource ARNs to achieve a realistic result. + // + // For more details, see the `ResourceHandlingOption` request parameter for [the underlying `iam:SimulatePrincipalPolicy` action](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html). + ResourceHandlingOption *string `pulumi:"resourceHandlingOption"` + // An AWS account ID to use for any resource ARN in `resourceArns` that doesn't include its own AWS account ID. If unspecified, the simulator will use the account ID from the `callerArn` argument as a placeholder. + ResourceOwnerAccountId *string `pulumi:"resourceOwnerAccountId"` + // An IAM policy document representing the resource-level policy of all of the resources specified in `resourceArns`. + // + // The policy simulator cannot automatically load policies that are associated with individual resources, as described in the documentation for `resourceArns` above. + ResourcePolicyJson *string `pulumi:"resourcePolicyJson"` +} + +// A collection of values returned by getPrincipalPolicySimulation. +type LookupPrincipalPolicySimulationResult struct { + ActionNames []string `pulumi:"actionNames"` + AdditionalPoliciesJsons []string `pulumi:"additionalPoliciesJsons"` + // `true` if all of the simulation results have decision "allowed", or `false` otherwise. + AllAllowed bool `pulumi:"allAllowed"` + CallerArn *string `pulumi:"callerArn"` + Contexts []GetPrincipalPolicySimulationContext `pulumi:"contexts"` + Id string `pulumi:"id"` + PermissionsBoundaryPoliciesJsons []string `pulumi:"permissionsBoundaryPoliciesJsons"` + PolicySourceArn string `pulumi:"policySourceArn"` + ResourceArns []string `pulumi:"resourceArns"` + ResourceHandlingOption *string `pulumi:"resourceHandlingOption"` + ResourceOwnerAccountId *string `pulumi:"resourceOwnerAccountId"` + ResourcePolicyJson *string `pulumi:"resourcePolicyJson"` + // A set of result objects, one for each of the simulated requests, with the following nested attributes: + Results []GetPrincipalPolicySimulationResult `pulumi:"results"` +} + +func LookupPrincipalPolicySimulationOutput(ctx *pulumi.Context, args LookupPrincipalPolicySimulationOutputArgs, opts ...pulumi.InvokeOption) LookupPrincipalPolicySimulationResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupPrincipalPolicySimulationResultOutput, error) { + args := v.(LookupPrincipalPolicySimulationArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupPrincipalPolicySimulationResult + secret, err := ctx.InvokePackageRaw("aws:iam/getPrincipalPolicySimulation:getPrincipalPolicySimulation", args, &rv, "", opts...) + if err != nil { + return LookupPrincipalPolicySimulationResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupPrincipalPolicySimulationResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupPrincipalPolicySimulationResultOutput), nil + } + return output, nil + }).(LookupPrincipalPolicySimulationResultOutput) +} + +// A collection of arguments for invoking getPrincipalPolicySimulation. +type LookupPrincipalPolicySimulationOutputArgs struct { + // A set of IAM action names to run simulations for. Each entry in this set adds an additional hypothetical request to the simulation. + // + // Action names consist of a service prefix and an action verb separated by a colon, such as `s3:GetObject`. Refer to [Actions, resources, and condition keys for AWS services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) to see the full set of possible IAM action names across all AWS services. + ActionNames pulumi.StringArrayInput `pulumi:"actionNames"` + // A set of additional principal policy documents to include in the simulation. The simulator will behave as if each of these policies were associated with the object specified in `policySourceArn`, allowing you to test the effect of hypothetical policies not yet created. + AdditionalPoliciesJsons pulumi.StringArrayInput `pulumi:"additionalPoliciesJsons"` + // The ARN of an user that will appear as the "caller" of the simulated requests. If you do not specify `callerArn` then the simulation will use the `policySourceArn` instead, if it contains a user ARN. + CallerArn pulumi.StringPtrInput `pulumi:"callerArn"` + // Each `context` block defines an entry in the table of additional context keys in the simulated request. + // + // IAM uses context keys for both custom conditions and for interpolating dynamic request-specific values into policy values. If you use policies that include those features then you will need to provide suitable example values for those keys to achieve a realistic simulation. + Contexts GetPrincipalPolicySimulationContextArrayInput `pulumi:"contexts"` + // A set of [permissions boundary policy documents](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) to include in the simulation. + PermissionsBoundaryPoliciesJsons pulumi.StringArrayInput `pulumi:"permissionsBoundaryPoliciesJsons"` + // The [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) of the IAM user, group, or role whose policies will be included in the simulation. + // + // You must closely match the form of the real service request you are simulating in order to achieve a realistic result. You can use the following additional arguments to specify other characteristics of the simulated requests: + PolicySourceArn pulumi.StringInput `pulumi:"policySourceArn"` + // A set of ARNs of resources to include in the simulation. + // + // This argument is important for actions that have either required or optional resource types listed in [Actions, resources, and condition keys for AWS services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html), and you must provide ARNs that identify AWS objects of the appropriate types for the chosen actions. + // + // The policy simulator only automatically loads policies associated with the `policySourceArn`, so if your given resources have their own resource-level policy then you'll also need to provide that explicitly using the `resourcePolicyJson` argument to achieve a realistic simulation. + ResourceArns pulumi.StringArrayInput `pulumi:"resourceArns"` + // Specifies a special simulation type to run. Some EC2 actions require special simulation behaviors and a particular set of resource ARNs to achieve a realistic result. + // + // For more details, see the `ResourceHandlingOption` request parameter for [the underlying `iam:SimulatePrincipalPolicy` action](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html). + ResourceHandlingOption pulumi.StringPtrInput `pulumi:"resourceHandlingOption"` + // An AWS account ID to use for any resource ARN in `resourceArns` that doesn't include its own AWS account ID. If unspecified, the simulator will use the account ID from the `callerArn` argument as a placeholder. + ResourceOwnerAccountId pulumi.StringPtrInput `pulumi:"resourceOwnerAccountId"` + // An IAM policy document representing the resource-level policy of all of the resources specified in `resourceArns`. + // + // The policy simulator cannot automatically load policies that are associated with individual resources, as described in the documentation for `resourceArns` above. + ResourcePolicyJson pulumi.StringPtrInput `pulumi:"resourcePolicyJson"` +} + +func (LookupPrincipalPolicySimulationOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupPrincipalPolicySimulationArgs)(nil)).Elem() +} + +// A collection of values returned by getPrincipalPolicySimulation. +type LookupPrincipalPolicySimulationResultOutput struct{ *pulumi.OutputState } + +func (LookupPrincipalPolicySimulationResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupPrincipalPolicySimulationResult)(nil)).Elem() +} + +func (o LookupPrincipalPolicySimulationResultOutput) ToLookupPrincipalPolicySimulationResultOutput() LookupPrincipalPolicySimulationResultOutput { + return o +} + +func (o LookupPrincipalPolicySimulationResultOutput) ToLookupPrincipalPolicySimulationResultOutputWithContext(ctx context.Context) LookupPrincipalPolicySimulationResultOutput { + return o +} + +func (o LookupPrincipalPolicySimulationResultOutput) ActionNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) []string { return v.ActionNames }).(pulumi.StringArrayOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) AdditionalPoliciesJsons() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) []string { return v.AdditionalPoliciesJsons }).(pulumi.StringArrayOutput) +} + +// `true` if all of the simulation results have decision "allowed", or `false` otherwise. +func (o LookupPrincipalPolicySimulationResultOutput) AllAllowed() pulumi.BoolOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) bool { return v.AllAllowed }).(pulumi.BoolOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) CallerArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) *string { return v.CallerArn }).(pulumi.StringPtrOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) Contexts() GetPrincipalPolicySimulationContextArrayOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) []GetPrincipalPolicySimulationContext { return v.Contexts }).(GetPrincipalPolicySimulationContextArrayOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) PermissionsBoundaryPoliciesJsons() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) []string { return v.PermissionsBoundaryPoliciesJsons }).(pulumi.StringArrayOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) PolicySourceArn() pulumi.StringOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) string { return v.PolicySourceArn }).(pulumi.StringOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) ResourceArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) []string { return v.ResourceArns }).(pulumi.StringArrayOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) ResourceHandlingOption() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) *string { return v.ResourceHandlingOption }).(pulumi.StringPtrOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) ResourceOwnerAccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) *string { return v.ResourceOwnerAccountId }).(pulumi.StringPtrOutput) +} + +func (o LookupPrincipalPolicySimulationResultOutput) ResourcePolicyJson() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) *string { return v.ResourcePolicyJson }).(pulumi.StringPtrOutput) +} + +// A set of result objects, one for each of the simulated requests, with the following nested attributes: +func (o LookupPrincipalPolicySimulationResultOutput) Results() GetPrincipalPolicySimulationResultArrayOutput { + return o.ApplyT(func(v LookupPrincipalPolicySimulationResult) []GetPrincipalPolicySimulationResult { return v.Results }).(GetPrincipalPolicySimulationResultArrayOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupPrincipalPolicySimulationResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRole.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRole.go new file mode 100644 index 000000000..5a368e4d2 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRole.go @@ -0,0 +1,195 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// IAM role. By using this data source, you can reference IAM role +// properties without having to hard code ARNs as input. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupRole(ctx, &iam.LookupRoleArgs{ +// Name: "an_example_role_name", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupRole(ctx *pulumi.Context, args *LookupRoleArgs, opts ...pulumi.InvokeOption) (*LookupRoleResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupRoleResult + err := ctx.Invoke("aws:iam/getRole:getRole", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getRole. +type LookupRoleArgs struct { + // Friendly IAM role name to match. + Name string `pulumi:"name"` + // Tags attached to the role. + Tags map[string]string `pulumi:"tags"` +} + +// A collection of values returned by getRole. +type LookupRoleResult struct { + // ARN of the role. + Arn string `pulumi:"arn"` + // Policy document associated with the role. + AssumeRolePolicy string `pulumi:"assumeRolePolicy"` + // Creation date of the role in RFC 3339 format. + CreateDate string `pulumi:"createDate"` + // Description for the role. + Description string `pulumi:"description"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Maximum session duration. + MaxSessionDuration int `pulumi:"maxSessionDuration"` + Name string `pulumi:"name"` + // Path to the role. + Path string `pulumi:"path"` + // The ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary string `pulumi:"permissionsBoundary"` + // Contains information about the last time that an IAM role was used. See `roleLastUsed` for details. + RoleLastUseds []GetRoleRoleLastUsed `pulumi:"roleLastUseds"` + // Tags attached to the role. + Tags map[string]string `pulumi:"tags"` + // Stable and unique string identifying the role. + UniqueId string `pulumi:"uniqueId"` +} + +func LookupRoleOutput(ctx *pulumi.Context, args LookupRoleOutputArgs, opts ...pulumi.InvokeOption) LookupRoleResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupRoleResultOutput, error) { + args := v.(LookupRoleArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupRoleResult + secret, err := ctx.InvokePackageRaw("aws:iam/getRole:getRole", args, &rv, "", opts...) + if err != nil { + return LookupRoleResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupRoleResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupRoleResultOutput), nil + } + return output, nil + }).(LookupRoleResultOutput) +} + +// A collection of arguments for invoking getRole. +type LookupRoleOutputArgs struct { + // Friendly IAM role name to match. + Name pulumi.StringInput `pulumi:"name"` + // Tags attached to the role. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (LookupRoleOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRoleArgs)(nil)).Elem() +} + +// A collection of values returned by getRole. +type LookupRoleResultOutput struct{ *pulumi.OutputState } + +func (LookupRoleResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRoleResult)(nil)).Elem() +} + +func (o LookupRoleResultOutput) ToLookupRoleResultOutput() LookupRoleResultOutput { + return o +} + +func (o LookupRoleResultOutput) ToLookupRoleResultOutputWithContext(ctx context.Context) LookupRoleResultOutput { + return o +} + +// ARN of the role. +func (o LookupRoleResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Policy document associated with the role. +func (o LookupRoleResultOutput) AssumeRolePolicy() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.AssumeRolePolicy }).(pulumi.StringOutput) +} + +// Creation date of the role in RFC 3339 format. +func (o LookupRoleResultOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.CreateDate }).(pulumi.StringOutput) +} + +// Description for the role. +func (o LookupRoleResultOutput) Description() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.Description }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupRoleResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Maximum session duration. +func (o LookupRoleResultOutput) MaxSessionDuration() pulumi.IntOutput { + return o.ApplyT(func(v LookupRoleResult) int { return v.MaxSessionDuration }).(pulumi.IntOutput) +} + +func (o LookupRoleResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.Name }).(pulumi.StringOutput) +} + +// Path to the role. +func (o LookupRoleResultOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.Path }).(pulumi.StringOutput) +} + +// The ARN of the policy that is used to set the permissions boundary for the role. +func (o LookupRoleResultOutput) PermissionsBoundary() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.PermissionsBoundary }).(pulumi.StringOutput) +} + +// Contains information about the last time that an IAM role was used. See `roleLastUsed` for details. +func (o LookupRoleResultOutput) RoleLastUseds() GetRoleRoleLastUsedArrayOutput { + return o.ApplyT(func(v LookupRoleResult) []GetRoleRoleLastUsed { return v.RoleLastUseds }).(GetRoleRoleLastUsedArrayOutput) +} + +// Tags attached to the role. +func (o LookupRoleResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupRoleResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Stable and unique string identifying the role. +func (o LookupRoleResultOutput) UniqueId() pulumi.StringOutput { + return o.ApplyT(func(v LookupRoleResult) string { return v.UniqueId }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupRoleResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRoles.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRoles.go new file mode 100644 index 000000000..eaaf1d2da --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getRoles.go @@ -0,0 +1,251 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to get the ARNs and Names of IAM Roles. +// +// ## Example Usage +// +// ### All roles in an account +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetRoles(ctx, &iam.GetRolesArgs{}, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Roles filtered by name regex +// +// Roles whose role-name contains `project` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetRoles(ctx, &iam.GetRolesArgs{ +// NameRegex: pulumi.StringRef(".*project.*"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Roles filtered by path prefix +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetRoles(ctx, &iam.GetRolesArgs{ +// PathPrefix: pulumi.StringRef("/custom-path"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Roles provisioned by AWS SSO +// +// # Roles in the account filtered by path prefix +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetRoles(ctx, &iam.GetRolesArgs{ +// PathPrefix: pulumi.StringRef("/aws-reserved/sso.amazonaws.com/"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// # Specific role in the account filtered by name regex and path prefix +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetRoles(ctx, &iam.GetRolesArgs{ +// NameRegex: pulumi.StringRef("AWSReservedSSO_permission_set_name_.*"), +// PathPrefix: pulumi.StringRef("/aws-reserved/sso.amazonaws.com/"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetRoles(ctx *pulumi.Context, args *GetRolesArgs, opts ...pulumi.InvokeOption) (*GetRolesResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetRolesResult + err := ctx.Invoke("aws:iam/getRoles:getRoles", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getRoles. +type GetRolesArgs struct { + // Regex string to apply to the IAM roles list returned by AWS. This allows more advanced filtering not supported from the AWS API. This filtering is done locally on what AWS returns, and could have a performance impact if the result is large. Combine this with other options to narrow down the list AWS returns. + NameRegex *string `pulumi:"nameRegex"` + // Path prefix for filtering the results. For example, the prefix `/application_abc/component_xyz/` gets all roles whose path starts with `/application_abc/component_xyz/`. If it is not included, it defaults to a slash (`/`), listing all roles. For more details, check out [list-roles in the AWS CLI reference][1]. + PathPrefix *string `pulumi:"pathPrefix"` +} + +// A collection of values returned by getRoles. +type GetRolesResult struct { + // Set of ARNs of the matched IAM roles. + Arns []string `pulumi:"arns"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + NameRegex *string `pulumi:"nameRegex"` + // Set of Names of the matched IAM roles. + Names []string `pulumi:"names"` + PathPrefix *string `pulumi:"pathPrefix"` +} + +func GetRolesOutput(ctx *pulumi.Context, args GetRolesOutputArgs, opts ...pulumi.InvokeOption) GetRolesResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetRolesResultOutput, error) { + args := v.(GetRolesArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetRolesResult + secret, err := ctx.InvokePackageRaw("aws:iam/getRoles:getRoles", args, &rv, "", opts...) + if err != nil { + return GetRolesResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetRolesResultOutput) + if secret { + return pulumi.ToSecret(output).(GetRolesResultOutput), nil + } + return output, nil + }).(GetRolesResultOutput) +} + +// A collection of arguments for invoking getRoles. +type GetRolesOutputArgs struct { + // Regex string to apply to the IAM roles list returned by AWS. This allows more advanced filtering not supported from the AWS API. This filtering is done locally on what AWS returns, and could have a performance impact if the result is large. Combine this with other options to narrow down the list AWS returns. + NameRegex pulumi.StringPtrInput `pulumi:"nameRegex"` + // Path prefix for filtering the results. For example, the prefix `/application_abc/component_xyz/` gets all roles whose path starts with `/application_abc/component_xyz/`. If it is not included, it defaults to a slash (`/`), listing all roles. For more details, check out [list-roles in the AWS CLI reference][1]. + PathPrefix pulumi.StringPtrInput `pulumi:"pathPrefix"` +} + +func (GetRolesOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRolesArgs)(nil)).Elem() +} + +// A collection of values returned by getRoles. +type GetRolesResultOutput struct{ *pulumi.OutputState } + +func (GetRolesResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRolesResult)(nil)).Elem() +} + +func (o GetRolesResultOutput) ToGetRolesResultOutput() GetRolesResultOutput { + return o +} + +func (o GetRolesResultOutput) ToGetRolesResultOutputWithContext(ctx context.Context) GetRolesResultOutput { + return o +} + +// Set of ARNs of the matched IAM roles. +func (o GetRolesResultOutput) Arns() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetRolesResult) []string { return v.Arns }).(pulumi.StringArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetRolesResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetRolesResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o GetRolesResultOutput) NameRegex() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetRolesResult) *string { return v.NameRegex }).(pulumi.StringPtrOutput) +} + +// Set of Names of the matched IAM roles. +func (o GetRolesResultOutput) Names() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetRolesResult) []string { return v.Names }).(pulumi.StringArrayOutput) +} + +func (o GetRolesResultOutput) PathPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetRolesResult) *string { return v.PathPrefix }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(GetRolesResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSamlProvider.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSamlProvider.go new file mode 100644 index 000000000..a6cf71a94 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSamlProvider.go @@ -0,0 +1,160 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// IAM SAML provider. This will allow you to easily retrieve the metadata +// document of an existing SAML provider. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupSamlProvider(ctx, &iam.LookupSamlProviderArgs{ +// Arn: "arn:aws:iam::123456789:saml-provider/myprovider", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupSamlProvider(ctx *pulumi.Context, args *LookupSamlProviderArgs, opts ...pulumi.InvokeOption) (*LookupSamlProviderResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupSamlProviderResult + err := ctx.Invoke("aws:iam/getSamlProvider:getSamlProvider", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getSamlProvider. +type LookupSamlProviderArgs struct { + // ARN assigned by AWS for the provider. + Arn string `pulumi:"arn"` + // Tags attached to the SAML provider. + Tags map[string]string `pulumi:"tags"` +} + +// A collection of values returned by getSamlProvider. +type LookupSamlProviderResult struct { + Arn string `pulumi:"arn"` + // Creation date of the SAML provider in RFC1123 format, e.g. `Mon, 02 Jan 2006 15:04:05 MST`. + CreateDate string `pulumi:"createDate"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Name of the provider. + Name string `pulumi:"name"` + // The XML document generated by an identity provider that supports SAML 2.0. + SamlMetadataDocument string `pulumi:"samlMetadataDocument"` + // Tags attached to the SAML provider. + Tags map[string]string `pulumi:"tags"` + // Expiration date and time for the SAML provider in RFC1123 format, e.g. `Mon, 02 Jan 2007 15:04:05 MST`. + ValidUntil string `pulumi:"validUntil"` +} + +func LookupSamlProviderOutput(ctx *pulumi.Context, args LookupSamlProviderOutputArgs, opts ...pulumi.InvokeOption) LookupSamlProviderResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupSamlProviderResultOutput, error) { + args := v.(LookupSamlProviderArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupSamlProviderResult + secret, err := ctx.InvokePackageRaw("aws:iam/getSamlProvider:getSamlProvider", args, &rv, "", opts...) + if err != nil { + return LookupSamlProviderResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupSamlProviderResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupSamlProviderResultOutput), nil + } + return output, nil + }).(LookupSamlProviderResultOutput) +} + +// A collection of arguments for invoking getSamlProvider. +type LookupSamlProviderOutputArgs struct { + // ARN assigned by AWS for the provider. + Arn pulumi.StringInput `pulumi:"arn"` + // Tags attached to the SAML provider. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (LookupSamlProviderOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupSamlProviderArgs)(nil)).Elem() +} + +// A collection of values returned by getSamlProvider. +type LookupSamlProviderResultOutput struct{ *pulumi.OutputState } + +func (LookupSamlProviderResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupSamlProviderResult)(nil)).Elem() +} + +func (o LookupSamlProviderResultOutput) ToLookupSamlProviderResultOutput() LookupSamlProviderResultOutput { + return o +} + +func (o LookupSamlProviderResultOutput) ToLookupSamlProviderResultOutputWithContext(ctx context.Context) LookupSamlProviderResultOutput { + return o +} + +func (o LookupSamlProviderResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupSamlProviderResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Creation date of the SAML provider in RFC1123 format, e.g. `Mon, 02 Jan 2006 15:04:05 MST`. +func (o LookupSamlProviderResultOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v LookupSamlProviderResult) string { return v.CreateDate }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupSamlProviderResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupSamlProviderResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Name of the provider. +func (o LookupSamlProviderResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupSamlProviderResult) string { return v.Name }).(pulumi.StringOutput) +} + +// The XML document generated by an identity provider that supports SAML 2.0. +func (o LookupSamlProviderResultOutput) SamlMetadataDocument() pulumi.StringOutput { + return o.ApplyT(func(v LookupSamlProviderResult) string { return v.SamlMetadataDocument }).(pulumi.StringOutput) +} + +// Tags attached to the SAML provider. +func (o LookupSamlProviderResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupSamlProviderResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Expiration date and time for the SAML provider in RFC1123 format, e.g. `Mon, 02 Jan 2007 15:04:05 MST`. +func (o LookupSamlProviderResultOutput) ValidUntil() pulumi.StringOutput { + return o.ApplyT(func(v LookupSamlProviderResult) string { return v.ValidUntil }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupSamlProviderResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getServerCertificate.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getServerCertificate.go new file mode 100644 index 000000000..fc6777767 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getServerCertificate.go @@ -0,0 +1,205 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to lookup information about IAM Server Certificates. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/elb" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// my_domain, err := iam.LookupServerCertificate(ctx, &iam.LookupServerCertificateArgs{ +// NamePrefix: pulumi.StringRef("my-domain.org"), +// Latest: pulumi.BoolRef(true), +// }, nil) +// if err != nil { +// return err +// } +// _, err = elb.NewLoadBalancer(ctx, "elb", &elb.LoadBalancerArgs{ +// Name: pulumi.String("my-domain-elb"), +// Listeners: elb.LoadBalancerListenerArray{ +// &elb.LoadBalancerListenerArgs{ +// InstancePort: pulumi.Int(8000), +// InstanceProtocol: pulumi.String("https"), +// LbPort: pulumi.Int(443), +// LbProtocol: pulumi.String("https"), +// SslCertificateId: pulumi.String(my_domain.Arn), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupServerCertificate(ctx *pulumi.Context, args *LookupServerCertificateArgs, opts ...pulumi.InvokeOption) (*LookupServerCertificateResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupServerCertificateResult + err := ctx.Invoke("aws:iam/getServerCertificate:getServerCertificate", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getServerCertificate. +type LookupServerCertificateArgs struct { + // sort results by expiration date. returns the certificate with expiration date in furthest in the future. + Latest *bool `pulumi:"latest"` + // exact name of the cert to lookup + Name *string `pulumi:"name"` + // prefix of cert to filter by + NamePrefix *string `pulumi:"namePrefix"` + // prefix of path to filter by + PathPrefix *string `pulumi:"pathPrefix"` +} + +// A collection of values returned by getServerCertificate. +type LookupServerCertificateResult struct { + // is set to the ARN of the IAM Server Certificate + Arn string `pulumi:"arn"` + // is the public key certificate (PEM-encoded). This is useful when [configuring back-end instance authentication](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html) policy for load balancer + CertificateBody string `pulumi:"certificateBody"` + // is the public key certificate chain (PEM-encoded) if exists, empty otherwise + CertificateChain string `pulumi:"certificateChain"` + // is set to the expiration date of the IAM Server Certificate + ExpirationDate string `pulumi:"expirationDate"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Latest *bool `pulumi:"latest"` + Name string `pulumi:"name"` + NamePrefix *string `pulumi:"namePrefix"` + // is set to the path of the IAM Server Certificate + Path string `pulumi:"path"` + PathPrefix *string `pulumi:"pathPrefix"` + // is the date when the server certificate was uploaded + UploadDate string `pulumi:"uploadDate"` +} + +func LookupServerCertificateOutput(ctx *pulumi.Context, args LookupServerCertificateOutputArgs, opts ...pulumi.InvokeOption) LookupServerCertificateResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupServerCertificateResultOutput, error) { + args := v.(LookupServerCertificateArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupServerCertificateResult + secret, err := ctx.InvokePackageRaw("aws:iam/getServerCertificate:getServerCertificate", args, &rv, "", opts...) + if err != nil { + return LookupServerCertificateResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupServerCertificateResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupServerCertificateResultOutput), nil + } + return output, nil + }).(LookupServerCertificateResultOutput) +} + +// A collection of arguments for invoking getServerCertificate. +type LookupServerCertificateOutputArgs struct { + // sort results by expiration date. returns the certificate with expiration date in furthest in the future. + Latest pulumi.BoolPtrInput `pulumi:"latest"` + // exact name of the cert to lookup + Name pulumi.StringPtrInput `pulumi:"name"` + // prefix of cert to filter by + NamePrefix pulumi.StringPtrInput `pulumi:"namePrefix"` + // prefix of path to filter by + PathPrefix pulumi.StringPtrInput `pulumi:"pathPrefix"` +} + +func (LookupServerCertificateOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupServerCertificateArgs)(nil)).Elem() +} + +// A collection of values returned by getServerCertificate. +type LookupServerCertificateResultOutput struct{ *pulumi.OutputState } + +func (LookupServerCertificateResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupServerCertificateResult)(nil)).Elem() +} + +func (o LookupServerCertificateResultOutput) ToLookupServerCertificateResultOutput() LookupServerCertificateResultOutput { + return o +} + +func (o LookupServerCertificateResultOutput) ToLookupServerCertificateResultOutputWithContext(ctx context.Context) LookupServerCertificateResultOutput { + return o +} + +// is set to the ARN of the IAM Server Certificate +func (o LookupServerCertificateResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// is the public key certificate (PEM-encoded). This is useful when [configuring back-end instance authentication](http://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html) policy for load balancer +func (o LookupServerCertificateResultOutput) CertificateBody() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.CertificateBody }).(pulumi.StringOutput) +} + +// is the public key certificate chain (PEM-encoded) if exists, empty otherwise +func (o LookupServerCertificateResultOutput) CertificateChain() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.CertificateChain }).(pulumi.StringOutput) +} + +// is set to the expiration date of the IAM Server Certificate +func (o LookupServerCertificateResultOutput) ExpirationDate() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.ExpirationDate }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupServerCertificateResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupServerCertificateResultOutput) Latest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v LookupServerCertificateResult) *bool { return v.Latest }).(pulumi.BoolPtrOutput) +} + +func (o LookupServerCertificateResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.Name }).(pulumi.StringOutput) +} + +func (o LookupServerCertificateResultOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupServerCertificateResult) *string { return v.NamePrefix }).(pulumi.StringPtrOutput) +} + +// is set to the path of the IAM Server Certificate +func (o LookupServerCertificateResultOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.Path }).(pulumi.StringOutput) +} + +func (o LookupServerCertificateResultOutput) PathPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupServerCertificateResult) *string { return v.PathPrefix }).(pulumi.StringPtrOutput) +} + +// is the date when the server certificate was uploaded +func (o LookupServerCertificateResultOutput) UploadDate() pulumi.StringOutput { + return o.ApplyT(func(v LookupServerCertificateResult) string { return v.UploadDate }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupServerCertificateResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSessionContext.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSessionContext.go new file mode 100644 index 000000000..ab8280d0b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getSessionContext.go @@ -0,0 +1,188 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source provides information on the IAM source role of an STS assumed role. For non-role ARNs, this data source simply passes the ARN through in `issuerArn`. +// +// For some AWS resources, multiple types of principals are allowed in the same argument (e.g., IAM users and IAM roles). However, these arguments often do not allow assumed-role (i.e., STS, temporary credential) principals. Given an STS ARN, this data source provides the ARN for the source IAM role. +// +// ## Example Usage +// +// ### Basic Example +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetSessionContext(ctx, &iam.GetSessionContextArgs{ +// Arn: "arn:aws:sts::123456789012:assumed-role/Audien-Heaven/MatyNoyes", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Find the Runner's Source Role +// +// Combined with `getCallerIdentity`, you can get the current user's source IAM role ARN (`issuerArn`) if you're using an assumed role. If you're not using an assumed role, the caller's (e.g., an IAM user's) ARN will simply be passed through. In environments where both IAM users and individuals using assumed roles need to apply the same configurations, this data source enables seamless use. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := aws.GetCallerIdentity(ctx, &aws.GetCallerIdentityArgs{}, nil) +// if err != nil { +// return err +// } +// _, err = iam.GetSessionContext(ctx, &iam.GetSessionContextArgs{ +// Arn: current.Arn, +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetSessionContext(ctx *pulumi.Context, args *GetSessionContextArgs, opts ...pulumi.InvokeOption) (*GetSessionContextResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetSessionContextResult + err := ctx.Invoke("aws:iam/getSessionContext:getSessionContext", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getSessionContext. +type GetSessionContextArgs struct { + // ARN for an assumed role. + // + // > If `arn` is a non-role ARN, Pulumi gives no error and `issuerArn` will be equal to the `arn` value. For STS assumed-role ARNs, Pulumi gives an error if the identified IAM role does not exist. + Arn string `pulumi:"arn"` +} + +// A collection of values returned by getSessionContext. +type GetSessionContextResult struct { + Arn string `pulumi:"arn"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // IAM source role ARN if `arn` corresponds to an STS assumed role. Otherwise, `issuerArn` is equal to `arn`. + IssuerArn string `pulumi:"issuerArn"` + // Unique identifier of the IAM role that issues the STS assumed role. + IssuerId string `pulumi:"issuerId"` + // Name of the source role. Only available if `arn` corresponds to an STS assumed role. + IssuerName string `pulumi:"issuerName"` + // Name of the STS session. Only available if `arn` corresponds to an STS assumed role. + SessionName string `pulumi:"sessionName"` +} + +func GetSessionContextOutput(ctx *pulumi.Context, args GetSessionContextOutputArgs, opts ...pulumi.InvokeOption) GetSessionContextResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetSessionContextResultOutput, error) { + args := v.(GetSessionContextArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetSessionContextResult + secret, err := ctx.InvokePackageRaw("aws:iam/getSessionContext:getSessionContext", args, &rv, "", opts...) + if err != nil { + return GetSessionContextResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetSessionContextResultOutput) + if secret { + return pulumi.ToSecret(output).(GetSessionContextResultOutput), nil + } + return output, nil + }).(GetSessionContextResultOutput) +} + +// A collection of arguments for invoking getSessionContext. +type GetSessionContextOutputArgs struct { + // ARN for an assumed role. + // + // > If `arn` is a non-role ARN, Pulumi gives no error and `issuerArn` will be equal to the `arn` value. For STS assumed-role ARNs, Pulumi gives an error if the identified IAM role does not exist. + Arn pulumi.StringInput `pulumi:"arn"` +} + +func (GetSessionContextOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetSessionContextArgs)(nil)).Elem() +} + +// A collection of values returned by getSessionContext. +type GetSessionContextResultOutput struct{ *pulumi.OutputState } + +func (GetSessionContextResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetSessionContextResult)(nil)).Elem() +} + +func (o GetSessionContextResultOutput) ToGetSessionContextResultOutput() GetSessionContextResultOutput { + return o +} + +func (o GetSessionContextResultOutput) ToGetSessionContextResultOutputWithContext(ctx context.Context) GetSessionContextResultOutput { + return o +} + +func (o GetSessionContextResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v GetSessionContextResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetSessionContextResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetSessionContextResult) string { return v.Id }).(pulumi.StringOutput) +} + +// IAM source role ARN if `arn` corresponds to an STS assumed role. Otherwise, `issuerArn` is equal to `arn`. +func (o GetSessionContextResultOutput) IssuerArn() pulumi.StringOutput { + return o.ApplyT(func(v GetSessionContextResult) string { return v.IssuerArn }).(pulumi.StringOutput) +} + +// Unique identifier of the IAM role that issues the STS assumed role. +func (o GetSessionContextResultOutput) IssuerId() pulumi.StringOutput { + return o.ApplyT(func(v GetSessionContextResult) string { return v.IssuerId }).(pulumi.StringOutput) +} + +// Name of the source role. Only available if `arn` corresponds to an STS assumed role. +func (o GetSessionContextResultOutput) IssuerName() pulumi.StringOutput { + return o.ApplyT(func(v GetSessionContextResult) string { return v.IssuerName }).(pulumi.StringOutput) +} + +// Name of the STS session. Only available if `arn` corresponds to an STS assumed role. +func (o GetSessionContextResultOutput) SessionName() pulumi.StringOutput { + return o.ApplyT(func(v GetSessionContextResult) string { return v.SessionName }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetSessionContextResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUser.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUser.go new file mode 100644 index 000000000..eefd72b37 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUser.go @@ -0,0 +1,162 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// This data source can be used to fetch information about a specific +// IAM user. By using this data source, you can reference IAM user +// properties without having to hard code ARNs or unique IDs as input. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.LookupUser(ctx, &iam.LookupUserArgs{ +// UserName: "an_example_user_name", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupUser(ctx *pulumi.Context, args *LookupUserArgs, opts ...pulumi.InvokeOption) (*LookupUserResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupUserResult + err := ctx.Invoke("aws:iam/getUser:getUser", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getUser. +type LookupUserArgs struct { + // Map of key-value pairs associated with the user. + Tags map[string]string `pulumi:"tags"` + // Friendly IAM user name to match. + UserName string `pulumi:"userName"` +} + +// A collection of values returned by getUser. +type LookupUserResult struct { + // ARN assigned by AWS for this user. + Arn string `pulumi:"arn"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Path in which this user was created. + Path string `pulumi:"path"` + // The ARN of the policy that is used to set the permissions boundary for the user. + PermissionsBoundary string `pulumi:"permissionsBoundary"` + // Map of key-value pairs associated with the user. + Tags map[string]string `pulumi:"tags"` + // Unique ID assigned by AWS for this user. + UserId string `pulumi:"userId"` + // Name associated to this User + UserName string `pulumi:"userName"` +} + +func LookupUserOutput(ctx *pulumi.Context, args LookupUserOutputArgs, opts ...pulumi.InvokeOption) LookupUserResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupUserResultOutput, error) { + args := v.(LookupUserArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupUserResult + secret, err := ctx.InvokePackageRaw("aws:iam/getUser:getUser", args, &rv, "", opts...) + if err != nil { + return LookupUserResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupUserResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupUserResultOutput), nil + } + return output, nil + }).(LookupUserResultOutput) +} + +// A collection of arguments for invoking getUser. +type LookupUserOutputArgs struct { + // Map of key-value pairs associated with the user. + Tags pulumi.StringMapInput `pulumi:"tags"` + // Friendly IAM user name to match. + UserName pulumi.StringInput `pulumi:"userName"` +} + +func (LookupUserOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupUserArgs)(nil)).Elem() +} + +// A collection of values returned by getUser. +type LookupUserResultOutput struct{ *pulumi.OutputState } + +func (LookupUserResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupUserResult)(nil)).Elem() +} + +func (o LookupUserResultOutput) ToLookupUserResultOutput() LookupUserResultOutput { + return o +} + +func (o LookupUserResultOutput) ToLookupUserResultOutputWithContext(ctx context.Context) LookupUserResultOutput { + return o +} + +// ARN assigned by AWS for this user. +func (o LookupUserResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupUserResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupUserResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupUserResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Path in which this user was created. +func (o LookupUserResultOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v LookupUserResult) string { return v.Path }).(pulumi.StringOutput) +} + +// The ARN of the policy that is used to set the permissions boundary for the user. +func (o LookupUserResultOutput) PermissionsBoundary() pulumi.StringOutput { + return o.ApplyT(func(v LookupUserResult) string { return v.PermissionsBoundary }).(pulumi.StringOutput) +} + +// Map of key-value pairs associated with the user. +func (o LookupUserResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupUserResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Unique ID assigned by AWS for this user. +func (o LookupUserResultOutput) UserId() pulumi.StringOutput { + return o.ApplyT(func(v LookupUserResult) string { return v.UserId }).(pulumi.StringOutput) +} + +// Name associated to this User +func (o LookupUserResultOutput) UserName() pulumi.StringOutput { + return o.ApplyT(func(v LookupUserResult) string { return v.UserName }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupUserResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUserSshKey.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUserSshKey.go new file mode 100644 index 000000000..71c754663 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUserSshKey.go @@ -0,0 +1,160 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to get information about a SSH public key associated with the specified IAM user. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetUserSshKey(ctx, &iam.GetUserSshKeyArgs{ +// Encoding: "SSH", +// SshPublicKeyId: "APKARUZ32GUTKIGARLXE", +// Username: "test-user", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetUserSshKey(ctx *pulumi.Context, args *GetUserSshKeyArgs, opts ...pulumi.InvokeOption) (*GetUserSshKeyResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetUserSshKeyResult + err := ctx.Invoke("aws:iam/getUserSshKey:getUserSshKey", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getUserSshKey. +type GetUserSshKeyArgs struct { + // Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. + Encoding string `pulumi:"encoding"` + // Unique identifier for the SSH public key. + SshPublicKeyId string `pulumi:"sshPublicKeyId"` + // Name of the IAM user associated with the SSH public key. + Username string `pulumi:"username"` +} + +// A collection of values returned by getUserSshKey. +type GetUserSshKeyResult struct { + Encoding string `pulumi:"encoding"` + // MD5 message digest of the SSH public key. + Fingerprint string `pulumi:"fingerprint"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // SSH public key. + PublicKey string `pulumi:"publicKey"` + SshPublicKeyId string `pulumi:"sshPublicKeyId"` + // Status of the SSH public key. Active means that the key can be used for authentication with an CodeCommit repository. Inactive means that the key cannot be used. + Status string `pulumi:"status"` + Username string `pulumi:"username"` +} + +func GetUserSshKeyOutput(ctx *pulumi.Context, args GetUserSshKeyOutputArgs, opts ...pulumi.InvokeOption) GetUserSshKeyResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetUserSshKeyResultOutput, error) { + args := v.(GetUserSshKeyArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetUserSshKeyResult + secret, err := ctx.InvokePackageRaw("aws:iam/getUserSshKey:getUserSshKey", args, &rv, "", opts...) + if err != nil { + return GetUserSshKeyResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetUserSshKeyResultOutput) + if secret { + return pulumi.ToSecret(output).(GetUserSshKeyResultOutput), nil + } + return output, nil + }).(GetUserSshKeyResultOutput) +} + +// A collection of arguments for invoking getUserSshKey. +type GetUserSshKeyOutputArgs struct { + // Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. + Encoding pulumi.StringInput `pulumi:"encoding"` + // Unique identifier for the SSH public key. + SshPublicKeyId pulumi.StringInput `pulumi:"sshPublicKeyId"` + // Name of the IAM user associated with the SSH public key. + Username pulumi.StringInput `pulumi:"username"` +} + +func (GetUserSshKeyOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetUserSshKeyArgs)(nil)).Elem() +} + +// A collection of values returned by getUserSshKey. +type GetUserSshKeyResultOutput struct{ *pulumi.OutputState } + +func (GetUserSshKeyResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetUserSshKeyResult)(nil)).Elem() +} + +func (o GetUserSshKeyResultOutput) ToGetUserSshKeyResultOutput() GetUserSshKeyResultOutput { + return o +} + +func (o GetUserSshKeyResultOutput) ToGetUserSshKeyResultOutputWithContext(ctx context.Context) GetUserSshKeyResultOutput { + return o +} + +func (o GetUserSshKeyResultOutput) Encoding() pulumi.StringOutput { + return o.ApplyT(func(v GetUserSshKeyResult) string { return v.Encoding }).(pulumi.StringOutput) +} + +// MD5 message digest of the SSH public key. +func (o GetUserSshKeyResultOutput) Fingerprint() pulumi.StringOutput { + return o.ApplyT(func(v GetUserSshKeyResult) string { return v.Fingerprint }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetUserSshKeyResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetUserSshKeyResult) string { return v.Id }).(pulumi.StringOutput) +} + +// SSH public key. +func (o GetUserSshKeyResultOutput) PublicKey() pulumi.StringOutput { + return o.ApplyT(func(v GetUserSshKeyResult) string { return v.PublicKey }).(pulumi.StringOutput) +} + +func (o GetUserSshKeyResultOutput) SshPublicKeyId() pulumi.StringOutput { + return o.ApplyT(func(v GetUserSshKeyResult) string { return v.SshPublicKeyId }).(pulumi.StringOutput) +} + +// Status of the SSH public key. Active means that the key can be used for authentication with an CodeCommit repository. Inactive means that the key cannot be used. +func (o GetUserSshKeyResultOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v GetUserSshKeyResult) string { return v.Status }).(pulumi.StringOutput) +} + +func (o GetUserSshKeyResultOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v GetUserSshKeyResult) string { return v.Username }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetUserSshKeyResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUsers.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUsers.go new file mode 100644 index 000000000..31012e132 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/getUsers.go @@ -0,0 +1,196 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Use this data source to get the ARNs and Names of IAM Users. +// +// ## Example Usage +// +// ### All users in an account +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetUsers(ctx, &iam.GetUsersArgs{}, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Users filtered by name regex +// +// Users whose username contains `abc` +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetUsers(ctx, &iam.GetUsersArgs{ +// NameRegex: pulumi.StringRef(".*abc.*"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Users filtered by path prefix +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.GetUsers(ctx, &iam.GetUsersArgs{ +// PathPrefix: pulumi.StringRef("/custom-path"), +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetUsers(ctx *pulumi.Context, args *GetUsersArgs, opts ...pulumi.InvokeOption) (*GetUsersResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetUsersResult + err := ctx.Invoke("aws:iam/getUsers:getUsers", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getUsers. +type GetUsersArgs struct { + // Regex string to apply to the IAM users list returned by AWS. This allows more advanced filtering not supported from the AWS API. This filtering is done locally on what AWS returns, and could have a performance impact if the result is large. Combine this with other options to narrow down the list AWS returns. + NameRegex *string `pulumi:"nameRegex"` + // Path prefix for filtering the results. For example, the prefix `/division_abc/subdivision_xyz/` gets all users whose path starts with `/division_abc/subdivision_xyz/`. If it is not included, it defaults to a slash (`/`), listing all users. For more details, check out [list-users in the AWS CLI reference][1]. + PathPrefix *string `pulumi:"pathPrefix"` +} + +// A collection of values returned by getUsers. +type GetUsersResult struct { + // Set of ARNs of the matched IAM users. + Arns []string `pulumi:"arns"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + NameRegex *string `pulumi:"nameRegex"` + // Set of Names of the matched IAM users. + Names []string `pulumi:"names"` + PathPrefix *string `pulumi:"pathPrefix"` +} + +func GetUsersOutput(ctx *pulumi.Context, args GetUsersOutputArgs, opts ...pulumi.InvokeOption) GetUsersResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetUsersResultOutput, error) { + args := v.(GetUsersArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetUsersResult + secret, err := ctx.InvokePackageRaw("aws:iam/getUsers:getUsers", args, &rv, "", opts...) + if err != nil { + return GetUsersResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetUsersResultOutput) + if secret { + return pulumi.ToSecret(output).(GetUsersResultOutput), nil + } + return output, nil + }).(GetUsersResultOutput) +} + +// A collection of arguments for invoking getUsers. +type GetUsersOutputArgs struct { + // Regex string to apply to the IAM users list returned by AWS. This allows more advanced filtering not supported from the AWS API. This filtering is done locally on what AWS returns, and could have a performance impact if the result is large. Combine this with other options to narrow down the list AWS returns. + NameRegex pulumi.StringPtrInput `pulumi:"nameRegex"` + // Path prefix for filtering the results. For example, the prefix `/division_abc/subdivision_xyz/` gets all users whose path starts with `/division_abc/subdivision_xyz/`. If it is not included, it defaults to a slash (`/`), listing all users. For more details, check out [list-users in the AWS CLI reference][1]. + PathPrefix pulumi.StringPtrInput `pulumi:"pathPrefix"` +} + +func (GetUsersOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetUsersArgs)(nil)).Elem() +} + +// A collection of values returned by getUsers. +type GetUsersResultOutput struct{ *pulumi.OutputState } + +func (GetUsersResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetUsersResult)(nil)).Elem() +} + +func (o GetUsersResultOutput) ToGetUsersResultOutput() GetUsersResultOutput { + return o +} + +func (o GetUsersResultOutput) ToGetUsersResultOutputWithContext(ctx context.Context) GetUsersResultOutput { + return o +} + +// Set of ARNs of the matched IAM users. +func (o GetUsersResultOutput) Arns() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetUsersResult) []string { return v.Arns }).(pulumi.StringArrayOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetUsersResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetUsersResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o GetUsersResultOutput) NameRegex() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetUsersResult) *string { return v.NameRegex }).(pulumi.StringPtrOutput) +} + +// Set of Names of the matched IAM users. +func (o GetUsersResultOutput) Names() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetUsersResult) []string { return v.Names }).(pulumi.StringArrayOutput) +} + +func (o GetUsersResultOutput) PathPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetUsersResult) *string { return v.PathPrefix }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(GetUsersResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/group.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/group.go new file mode 100644 index 000000000..ba63e828e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/group.go @@ -0,0 +1,289 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM group. +// +// > **NOTE on user management:** Using `iam.GroupMembership` or `iam.UserGroupMembership` resources in addition to manually managing user/group membership using the console may lead to configuration drift or conflicts. For this reason, it's recommended to either manage membership entirely with the provider or entirely within the AWS console. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewGroup(ctx, "developers", &iam.GroupArgs{ +// Name: pulumi.String("developers"), +// Path: pulumi.String("/users/"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Groups using the `name`. For example: +// +// ```sh +// $ pulumi import aws:iam/group:Group developers developers +// ``` +type Group struct { + pulumi.CustomResourceState + + // The ARN assigned by AWS for this group. + Arn pulumi.StringOutput `pulumi:"arn"` + // The group's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. Group names are not distinguished by case. For example, you cannot create groups named both "ADMINS" and "admins". + Name pulumi.StringOutput `pulumi:"name"` + // Path in which to create the group. + Path pulumi.StringPtrOutput `pulumi:"path"` + // The [unique ID][1] assigned by AWS. + UniqueId pulumi.StringOutput `pulumi:"uniqueId"` +} + +// NewGroup registers a new resource with the given unique name, arguments, and options. +func NewGroup(ctx *pulumi.Context, + name string, args *GroupArgs, opts ...pulumi.ResourceOption) (*Group, error) { + if args == nil { + args = &GroupArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Group + err := ctx.RegisterResource("aws:iam/group:Group", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetGroup gets an existing Group 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 GetGroup(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *GroupState, opts ...pulumi.ResourceOption) (*Group, error) { + var resource Group + err := ctx.ReadResource("aws:iam/group:Group", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Group resources. +type groupState struct { + // The ARN assigned by AWS for this group. + Arn *string `pulumi:"arn"` + // The group's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. Group names are not distinguished by case. For example, you cannot create groups named both "ADMINS" and "admins". + Name *string `pulumi:"name"` + // Path in which to create the group. + Path *string `pulumi:"path"` + // The [unique ID][1] assigned by AWS. + UniqueId *string `pulumi:"uniqueId"` +} + +type GroupState struct { + // The ARN assigned by AWS for this group. + Arn pulumi.StringPtrInput + // The group's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. Group names are not distinguished by case. For example, you cannot create groups named both "ADMINS" and "admins". + Name pulumi.StringPtrInput + // Path in which to create the group. + Path pulumi.StringPtrInput + // The [unique ID][1] assigned by AWS. + UniqueId pulumi.StringPtrInput +} + +func (GroupState) ElementType() reflect.Type { + return reflect.TypeOf((*groupState)(nil)).Elem() +} + +type groupArgs struct { + // The group's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. Group names are not distinguished by case. For example, you cannot create groups named both "ADMINS" and "admins". + Name *string `pulumi:"name"` + // Path in which to create the group. + Path *string `pulumi:"path"` +} + +// The set of arguments for constructing a Group resource. +type GroupArgs struct { + // The group's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. Group names are not distinguished by case. For example, you cannot create groups named both "ADMINS" and "admins". + Name pulumi.StringPtrInput + // Path in which to create the group. + Path pulumi.StringPtrInput +} + +func (GroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*groupArgs)(nil)).Elem() +} + +type GroupInput interface { + pulumi.Input + + ToGroupOutput() GroupOutput + ToGroupOutputWithContext(ctx context.Context) GroupOutput +} + +func (*Group) ElementType() reflect.Type { + return reflect.TypeOf((**Group)(nil)).Elem() +} + +func (i *Group) ToGroupOutput() GroupOutput { + return i.ToGroupOutputWithContext(context.Background()) +} + +func (i *Group) ToGroupOutputWithContext(ctx context.Context) GroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupOutput) +} + +// GroupArrayInput is an input type that accepts GroupArray and GroupArrayOutput values. +// You can construct a concrete instance of `GroupArrayInput` via: +// +// GroupArray{ GroupArgs{...} } +type GroupArrayInput interface { + pulumi.Input + + ToGroupArrayOutput() GroupArrayOutput + ToGroupArrayOutputWithContext(context.Context) GroupArrayOutput +} + +type GroupArray []GroupInput + +func (GroupArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Group)(nil)).Elem() +} + +func (i GroupArray) ToGroupArrayOutput() GroupArrayOutput { + return i.ToGroupArrayOutputWithContext(context.Background()) +} + +func (i GroupArray) ToGroupArrayOutputWithContext(ctx context.Context) GroupArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupArrayOutput) +} + +// GroupMapInput is an input type that accepts GroupMap and GroupMapOutput values. +// You can construct a concrete instance of `GroupMapInput` via: +// +// GroupMap{ "key": GroupArgs{...} } +type GroupMapInput interface { + pulumi.Input + + ToGroupMapOutput() GroupMapOutput + ToGroupMapOutputWithContext(context.Context) GroupMapOutput +} + +type GroupMap map[string]GroupInput + +func (GroupMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Group)(nil)).Elem() +} + +func (i GroupMap) ToGroupMapOutput() GroupMapOutput { + return i.ToGroupMapOutputWithContext(context.Background()) +} + +func (i GroupMap) ToGroupMapOutputWithContext(ctx context.Context) GroupMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupMapOutput) +} + +type GroupOutput struct{ *pulumi.OutputState } + +func (GroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Group)(nil)).Elem() +} + +func (o GroupOutput) ToGroupOutput() GroupOutput { + return o +} + +func (o GroupOutput) ToGroupOutputWithContext(ctx context.Context) GroupOutput { + return o +} + +// The ARN assigned by AWS for this group. +func (o GroupOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *Group) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The group's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. Group names are not distinguished by case. For example, you cannot create groups named both "ADMINS" and "admins". +func (o GroupOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Group) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Path in which to create the group. +func (o GroupOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Group) pulumi.StringPtrOutput { return v.Path }).(pulumi.StringPtrOutput) +} + +// The [unique ID][1] assigned by AWS. +func (o GroupOutput) UniqueId() pulumi.StringOutput { + return o.ApplyT(func(v *Group) pulumi.StringOutput { return v.UniqueId }).(pulumi.StringOutput) +} + +type GroupArrayOutput struct{ *pulumi.OutputState } + +func (GroupArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Group)(nil)).Elem() +} + +func (o GroupArrayOutput) ToGroupArrayOutput() GroupArrayOutput { + return o +} + +func (o GroupArrayOutput) ToGroupArrayOutputWithContext(ctx context.Context) GroupArrayOutput { + return o +} + +func (o GroupArrayOutput) Index(i pulumi.IntInput) GroupOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Group { + return vs[0].([]*Group)[vs[1].(int)] + }).(GroupOutput) +} + +type GroupMapOutput struct{ *pulumi.OutputState } + +func (GroupMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Group)(nil)).Elem() +} + +func (o GroupMapOutput) ToGroupMapOutput() GroupMapOutput { + return o +} + +func (o GroupMapOutput) ToGroupMapOutputWithContext(ctx context.Context) GroupMapOutput { + return o +} + +func (o GroupMapOutput) MapIndex(k pulumi.StringInput) GroupOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Group { + return vs[0].(map[string]*Group)[vs[1].(string)] + }).(GroupOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*GroupInput)(nil)).Elem(), &Group{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupArrayInput)(nil)).Elem(), GroupArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupMapInput)(nil)).Elem(), GroupMap{}) + pulumi.RegisterOutputType(GroupOutput{}) + pulumi.RegisterOutputType(GroupArrayOutput{}) + pulumi.RegisterOutputType(GroupMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupMembership.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupMembership.go new file mode 100644 index 000000000..3e7913124 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupMembership.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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **WARNING:** Multiple iam.GroupMembership resources with the same group name will produce inconsistent behavior! +// +// Provides a top level resource to manage IAM Group membership for IAM Users. For +// more information on managing IAM Groups or IAM Users, see IAM Groups or +// IAM Users +// +// > **Note:** `iam.GroupMembership` will conflict with itself if used more than once with the same group. To non-exclusively manage the users in a group, see the +// `iam.UserGroupMembership` resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// group, err := iam.NewGroup(ctx, "group", &iam.GroupArgs{ +// Name: pulumi.String("test-group"), +// }) +// if err != nil { +// return err +// } +// userOne, err := iam.NewUser(ctx, "user_one", &iam.UserArgs{ +// Name: pulumi.String("test-user"), +// }) +// if err != nil { +// return err +// } +// userTwo, err := iam.NewUser(ctx, "user_two", &iam.UserArgs{ +// Name: pulumi.String("test-user-two"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewGroupMembership(ctx, "team", &iam.GroupMembershipArgs{ +// Name: pulumi.String("tf-testing-group-membership"), +// Users: pulumi.StringArray{ +// userOne.Name, +// userTwo.Name, +// }, +// Group: group.Name, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type GroupMembership struct { + pulumi.CustomResourceState + + // The IAM Group name to attach the list of `users` to + Group pulumi.StringOutput `pulumi:"group"` + // The name to identify the Group Membership + Name pulumi.StringOutput `pulumi:"name"` + // A list of IAM User names to associate with the Group + Users pulumi.StringArrayOutput `pulumi:"users"` +} + +// NewGroupMembership registers a new resource with the given unique name, arguments, and options. +func NewGroupMembership(ctx *pulumi.Context, + name string, args *GroupMembershipArgs, opts ...pulumi.ResourceOption) (*GroupMembership, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Group == nil { + return nil, errors.New("invalid value for required argument 'Group'") + } + if args.Users == nil { + return nil, errors.New("invalid value for required argument 'Users'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource GroupMembership + err := ctx.RegisterResource("aws:iam/groupMembership:GroupMembership", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetGroupMembership gets an existing GroupMembership 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 GetGroupMembership(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *GroupMembershipState, opts ...pulumi.ResourceOption) (*GroupMembership, error) { + var resource GroupMembership + err := ctx.ReadResource("aws:iam/groupMembership:GroupMembership", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering GroupMembership resources. +type groupMembershipState struct { + // The IAM Group name to attach the list of `users` to + Group *string `pulumi:"group"` + // The name to identify the Group Membership + Name *string `pulumi:"name"` + // A list of IAM User names to associate with the Group + Users []string `pulumi:"users"` +} + +type GroupMembershipState struct { + // The IAM Group name to attach the list of `users` to + Group pulumi.StringPtrInput + // The name to identify the Group Membership + Name pulumi.StringPtrInput + // A list of IAM User names to associate with the Group + Users pulumi.StringArrayInput +} + +func (GroupMembershipState) ElementType() reflect.Type { + return reflect.TypeOf((*groupMembershipState)(nil)).Elem() +} + +type groupMembershipArgs struct { + // The IAM Group name to attach the list of `users` to + Group string `pulumi:"group"` + // The name to identify the Group Membership + Name *string `pulumi:"name"` + // A list of IAM User names to associate with the Group + Users []string `pulumi:"users"` +} + +// The set of arguments for constructing a GroupMembership resource. +type GroupMembershipArgs struct { + // The IAM Group name to attach the list of `users` to + Group pulumi.StringInput + // The name to identify the Group Membership + Name pulumi.StringPtrInput + // A list of IAM User names to associate with the Group + Users pulumi.StringArrayInput +} + +func (GroupMembershipArgs) ElementType() reflect.Type { + return reflect.TypeOf((*groupMembershipArgs)(nil)).Elem() +} + +type GroupMembershipInput interface { + pulumi.Input + + ToGroupMembershipOutput() GroupMembershipOutput + ToGroupMembershipOutputWithContext(ctx context.Context) GroupMembershipOutput +} + +func (*GroupMembership) ElementType() reflect.Type { + return reflect.TypeOf((**GroupMembership)(nil)).Elem() +} + +func (i *GroupMembership) ToGroupMembershipOutput() GroupMembershipOutput { + return i.ToGroupMembershipOutputWithContext(context.Background()) +} + +func (i *GroupMembership) ToGroupMembershipOutputWithContext(ctx context.Context) GroupMembershipOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupMembershipOutput) +} + +// GroupMembershipArrayInput is an input type that accepts GroupMembershipArray and GroupMembershipArrayOutput values. +// You can construct a concrete instance of `GroupMembershipArrayInput` via: +// +// GroupMembershipArray{ GroupMembershipArgs{...} } +type GroupMembershipArrayInput interface { + pulumi.Input + + ToGroupMembershipArrayOutput() GroupMembershipArrayOutput + ToGroupMembershipArrayOutputWithContext(context.Context) GroupMembershipArrayOutput +} + +type GroupMembershipArray []GroupMembershipInput + +func (GroupMembershipArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupMembership)(nil)).Elem() +} + +func (i GroupMembershipArray) ToGroupMembershipArrayOutput() GroupMembershipArrayOutput { + return i.ToGroupMembershipArrayOutputWithContext(context.Background()) +} + +func (i GroupMembershipArray) ToGroupMembershipArrayOutputWithContext(ctx context.Context) GroupMembershipArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupMembershipArrayOutput) +} + +// GroupMembershipMapInput is an input type that accepts GroupMembershipMap and GroupMembershipMapOutput values. +// You can construct a concrete instance of `GroupMembershipMapInput` via: +// +// GroupMembershipMap{ "key": GroupMembershipArgs{...} } +type GroupMembershipMapInput interface { + pulumi.Input + + ToGroupMembershipMapOutput() GroupMembershipMapOutput + ToGroupMembershipMapOutputWithContext(context.Context) GroupMembershipMapOutput +} + +type GroupMembershipMap map[string]GroupMembershipInput + +func (GroupMembershipMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupMembership)(nil)).Elem() +} + +func (i GroupMembershipMap) ToGroupMembershipMapOutput() GroupMembershipMapOutput { + return i.ToGroupMembershipMapOutputWithContext(context.Background()) +} + +func (i GroupMembershipMap) ToGroupMembershipMapOutputWithContext(ctx context.Context) GroupMembershipMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupMembershipMapOutput) +} + +type GroupMembershipOutput struct{ *pulumi.OutputState } + +func (GroupMembershipOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GroupMembership)(nil)).Elem() +} + +func (o GroupMembershipOutput) ToGroupMembershipOutput() GroupMembershipOutput { + return o +} + +func (o GroupMembershipOutput) ToGroupMembershipOutputWithContext(ctx context.Context) GroupMembershipOutput { + return o +} + +// The IAM Group name to attach the list of `users` to +func (o GroupMembershipOutput) Group() pulumi.StringOutput { + return o.ApplyT(func(v *GroupMembership) pulumi.StringOutput { return v.Group }).(pulumi.StringOutput) +} + +// The name to identify the Group Membership +func (o GroupMembershipOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *GroupMembership) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// A list of IAM User names to associate with the Group +func (o GroupMembershipOutput) Users() pulumi.StringArrayOutput { + return o.ApplyT(func(v *GroupMembership) pulumi.StringArrayOutput { return v.Users }).(pulumi.StringArrayOutput) +} + +type GroupMembershipArrayOutput struct{ *pulumi.OutputState } + +func (GroupMembershipArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupMembership)(nil)).Elem() +} + +func (o GroupMembershipArrayOutput) ToGroupMembershipArrayOutput() GroupMembershipArrayOutput { + return o +} + +func (o GroupMembershipArrayOutput) ToGroupMembershipArrayOutputWithContext(ctx context.Context) GroupMembershipArrayOutput { + return o +} + +func (o GroupMembershipArrayOutput) Index(i pulumi.IntInput) GroupMembershipOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *GroupMembership { + return vs[0].([]*GroupMembership)[vs[1].(int)] + }).(GroupMembershipOutput) +} + +type GroupMembershipMapOutput struct{ *pulumi.OutputState } + +func (GroupMembershipMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupMembership)(nil)).Elem() +} + +func (o GroupMembershipMapOutput) ToGroupMembershipMapOutput() GroupMembershipMapOutput { + return o +} + +func (o GroupMembershipMapOutput) ToGroupMembershipMapOutputWithContext(ctx context.Context) GroupMembershipMapOutput { + return o +} + +func (o GroupMembershipMapOutput) MapIndex(k pulumi.StringInput) GroupMembershipOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *GroupMembership { + return vs[0].(map[string]*GroupMembership)[vs[1].(string)] + }).(GroupMembershipOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*GroupMembershipInput)(nil)).Elem(), &GroupMembership{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupMembershipArrayInput)(nil)).Elem(), GroupMembershipArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupMembershipMapInput)(nil)).Elem(), GroupMembershipMap{}) + pulumi.RegisterOutputType(GroupMembershipOutput{}) + pulumi.RegisterOutputType(GroupMembershipArrayOutput{}) + pulumi.RegisterOutputType(GroupMembershipMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPoliciesExclusive.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPoliciesExclusive.go new file mode 100644 index 000000000..e7d0b1571 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPoliciesExclusive.go @@ -0,0 +1,243 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Import +// +// Using `pulumi import`, import exclusive management of inline policy assignments using the `group_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/groupPoliciesExclusive:GroupPoliciesExclusive example MyGroup +// ``` +type GroupPoliciesExclusive struct { + pulumi.CustomResourceState + + // IAM group name. + GroupName pulumi.StringOutput `pulumi:"groupName"` + // A list of inline policy names to be assigned to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayOutput `pulumi:"policyNames"` +} + +// NewGroupPoliciesExclusive registers a new resource with the given unique name, arguments, and options. +func NewGroupPoliciesExclusive(ctx *pulumi.Context, + name string, args *GroupPoliciesExclusiveArgs, opts ...pulumi.ResourceOption) (*GroupPoliciesExclusive, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.GroupName == nil { + return nil, errors.New("invalid value for required argument 'GroupName'") + } + if args.PolicyNames == nil { + return nil, errors.New("invalid value for required argument 'PolicyNames'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource GroupPoliciesExclusive + err := ctx.RegisterResource("aws:iam/groupPoliciesExclusive:GroupPoliciesExclusive", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetGroupPoliciesExclusive gets an existing GroupPoliciesExclusive 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 GetGroupPoliciesExclusive(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *GroupPoliciesExclusiveState, opts ...pulumi.ResourceOption) (*GroupPoliciesExclusive, error) { + var resource GroupPoliciesExclusive + err := ctx.ReadResource("aws:iam/groupPoliciesExclusive:GroupPoliciesExclusive", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering GroupPoliciesExclusive resources. +type groupPoliciesExclusiveState struct { + // IAM group name. + GroupName *string `pulumi:"groupName"` + // A list of inline policy names to be assigned to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyNames []string `pulumi:"policyNames"` +} + +type GroupPoliciesExclusiveState struct { + // IAM group name. + GroupName pulumi.StringPtrInput + // A list of inline policy names to be assigned to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayInput +} + +func (GroupPoliciesExclusiveState) ElementType() reflect.Type { + return reflect.TypeOf((*groupPoliciesExclusiveState)(nil)).Elem() +} + +type groupPoliciesExclusiveArgs struct { + // IAM group name. + GroupName string `pulumi:"groupName"` + // A list of inline policy names to be assigned to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyNames []string `pulumi:"policyNames"` +} + +// The set of arguments for constructing a GroupPoliciesExclusive resource. +type GroupPoliciesExclusiveArgs struct { + // IAM group name. + GroupName pulumi.StringInput + // A list of inline policy names to be assigned to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayInput +} + +func (GroupPoliciesExclusiveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*groupPoliciesExclusiveArgs)(nil)).Elem() +} + +type GroupPoliciesExclusiveInput interface { + pulumi.Input + + ToGroupPoliciesExclusiveOutput() GroupPoliciesExclusiveOutput + ToGroupPoliciesExclusiveOutputWithContext(ctx context.Context) GroupPoliciesExclusiveOutput +} + +func (*GroupPoliciesExclusive) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPoliciesExclusive)(nil)).Elem() +} + +func (i *GroupPoliciesExclusive) ToGroupPoliciesExclusiveOutput() GroupPoliciesExclusiveOutput { + return i.ToGroupPoliciesExclusiveOutputWithContext(context.Background()) +} + +func (i *GroupPoliciesExclusive) ToGroupPoliciesExclusiveOutputWithContext(ctx context.Context) GroupPoliciesExclusiveOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPoliciesExclusiveOutput) +} + +// GroupPoliciesExclusiveArrayInput is an input type that accepts GroupPoliciesExclusiveArray and GroupPoliciesExclusiveArrayOutput values. +// You can construct a concrete instance of `GroupPoliciesExclusiveArrayInput` via: +// +// GroupPoliciesExclusiveArray{ GroupPoliciesExclusiveArgs{...} } +type GroupPoliciesExclusiveArrayInput interface { + pulumi.Input + + ToGroupPoliciesExclusiveArrayOutput() GroupPoliciesExclusiveArrayOutput + ToGroupPoliciesExclusiveArrayOutputWithContext(context.Context) GroupPoliciesExclusiveArrayOutput +} + +type GroupPoliciesExclusiveArray []GroupPoliciesExclusiveInput + +func (GroupPoliciesExclusiveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPoliciesExclusive)(nil)).Elem() +} + +func (i GroupPoliciesExclusiveArray) ToGroupPoliciesExclusiveArrayOutput() GroupPoliciesExclusiveArrayOutput { + return i.ToGroupPoliciesExclusiveArrayOutputWithContext(context.Background()) +} + +func (i GroupPoliciesExclusiveArray) ToGroupPoliciesExclusiveArrayOutputWithContext(ctx context.Context) GroupPoliciesExclusiveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPoliciesExclusiveArrayOutput) +} + +// GroupPoliciesExclusiveMapInput is an input type that accepts GroupPoliciesExclusiveMap and GroupPoliciesExclusiveMapOutput values. +// You can construct a concrete instance of `GroupPoliciesExclusiveMapInput` via: +// +// GroupPoliciesExclusiveMap{ "key": GroupPoliciesExclusiveArgs{...} } +type GroupPoliciesExclusiveMapInput interface { + pulumi.Input + + ToGroupPoliciesExclusiveMapOutput() GroupPoliciesExclusiveMapOutput + ToGroupPoliciesExclusiveMapOutputWithContext(context.Context) GroupPoliciesExclusiveMapOutput +} + +type GroupPoliciesExclusiveMap map[string]GroupPoliciesExclusiveInput + +func (GroupPoliciesExclusiveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPoliciesExclusive)(nil)).Elem() +} + +func (i GroupPoliciesExclusiveMap) ToGroupPoliciesExclusiveMapOutput() GroupPoliciesExclusiveMapOutput { + return i.ToGroupPoliciesExclusiveMapOutputWithContext(context.Background()) +} + +func (i GroupPoliciesExclusiveMap) ToGroupPoliciesExclusiveMapOutputWithContext(ctx context.Context) GroupPoliciesExclusiveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPoliciesExclusiveMapOutput) +} + +type GroupPoliciesExclusiveOutput struct{ *pulumi.OutputState } + +func (GroupPoliciesExclusiveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPoliciesExclusive)(nil)).Elem() +} + +func (o GroupPoliciesExclusiveOutput) ToGroupPoliciesExclusiveOutput() GroupPoliciesExclusiveOutput { + return o +} + +func (o GroupPoliciesExclusiveOutput) ToGroupPoliciesExclusiveOutputWithContext(ctx context.Context) GroupPoliciesExclusiveOutput { + return o +} + +// IAM group name. +func (o GroupPoliciesExclusiveOutput) GroupName() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPoliciesExclusive) pulumi.StringOutput { return v.GroupName }).(pulumi.StringOutput) +} + +// A list of inline policy names to be assigned to the group. Policies attached to this group but not configured in this argument will be removed. +func (o GroupPoliciesExclusiveOutput) PolicyNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v *GroupPoliciesExclusive) pulumi.StringArrayOutput { return v.PolicyNames }).(pulumi.StringArrayOutput) +} + +type GroupPoliciesExclusiveArrayOutput struct{ *pulumi.OutputState } + +func (GroupPoliciesExclusiveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPoliciesExclusive)(nil)).Elem() +} + +func (o GroupPoliciesExclusiveArrayOutput) ToGroupPoliciesExclusiveArrayOutput() GroupPoliciesExclusiveArrayOutput { + return o +} + +func (o GroupPoliciesExclusiveArrayOutput) ToGroupPoliciesExclusiveArrayOutputWithContext(ctx context.Context) GroupPoliciesExclusiveArrayOutput { + return o +} + +func (o GroupPoliciesExclusiveArrayOutput) Index(i pulumi.IntInput) GroupPoliciesExclusiveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *GroupPoliciesExclusive { + return vs[0].([]*GroupPoliciesExclusive)[vs[1].(int)] + }).(GroupPoliciesExclusiveOutput) +} + +type GroupPoliciesExclusiveMapOutput struct{ *pulumi.OutputState } + +func (GroupPoliciesExclusiveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPoliciesExclusive)(nil)).Elem() +} + +func (o GroupPoliciesExclusiveMapOutput) ToGroupPoliciesExclusiveMapOutput() GroupPoliciesExclusiveMapOutput { + return o +} + +func (o GroupPoliciesExclusiveMapOutput) ToGroupPoliciesExclusiveMapOutputWithContext(ctx context.Context) GroupPoliciesExclusiveMapOutput { + return o +} + +func (o GroupPoliciesExclusiveMapOutput) MapIndex(k pulumi.StringInput) GroupPoliciesExclusiveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *GroupPoliciesExclusive { + return vs[0].(map[string]*GroupPoliciesExclusive)[vs[1].(string)] + }).(GroupPoliciesExclusiveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*GroupPoliciesExclusiveInput)(nil)).Elem(), &GroupPoliciesExclusive{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPoliciesExclusiveArrayInput)(nil)).Elem(), GroupPoliciesExclusiveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPoliciesExclusiveMapInput)(nil)).Elem(), GroupPoliciesExclusiveMap{}) + pulumi.RegisterOutputType(GroupPoliciesExclusiveOutput{}) + pulumi.RegisterOutputType(GroupPoliciesExclusiveArrayOutput{}) + pulumi.RegisterOutputType(GroupPoliciesExclusiveMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicy.go new file mode 100644 index 000000000..276e6fd70 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicy.go @@ -0,0 +1,342 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM policy attached to a group. +// +// > **NOTE:** We suggest using explicit JSON encoding or `aws.iam.getPolicyDocument` when assigning a value to `policy`. They seamlessly translate configuration to JSON, enabling you to maintain consistency within your configuration without the need for context switches. Also, you can sidestep potential complications arising from formatting discrepancies, whitespace inconsistencies, and other nuances inherent to JSON. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// myDevelopers, err := iam.NewGroup(ctx, "my_developers", &iam.GroupArgs{ +// Name: pulumi.String("developers"), +// Path: pulumi.String("/users/"), +// }) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "ec2:Describe*", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = iam.NewGroupPolicy(ctx, "my_developer_policy", &iam.GroupPolicyArgs{ +// Name: pulumi.String("my_developer_policy"), +// Group: myDevelopers.Name, +// Policy: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Group Policies using the `group_name:group_policy_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/groupPolicy:GroupPolicy mypolicy group_of_mypolicy_name:mypolicy_name +// ``` +type GroupPolicy struct { + pulumi.CustomResourceState + + // The IAM group to attach to the policy. + Group pulumi.StringOutput `pulumi:"group"` + // The name of the policy. If omitted, the provider will + // assign a random, unique name. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // The policy document. This is a JSON formatted string. + Policy pulumi.StringOutput `pulumi:"policy"` +} + +// NewGroupPolicy registers a new resource with the given unique name, arguments, and options. +func NewGroupPolicy(ctx *pulumi.Context, + name string, args *GroupPolicyArgs, opts ...pulumi.ResourceOption) (*GroupPolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Group == nil { + return nil, errors.New("invalid value for required argument 'Group'") + } + if args.Policy == nil { + return nil, errors.New("invalid value for required argument 'Policy'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource GroupPolicy + err := ctx.RegisterResource("aws:iam/groupPolicy:GroupPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetGroupPolicy gets an existing GroupPolicy 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 GetGroupPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *GroupPolicyState, opts ...pulumi.ResourceOption) (*GroupPolicy, error) { + var resource GroupPolicy + err := ctx.ReadResource("aws:iam/groupPolicy:GroupPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering GroupPolicy resources. +type groupPolicyState struct { + // The IAM group to attach to the policy. + Group *string `pulumi:"group"` + // The name of the policy. If omitted, the provider will + // assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The policy document. This is a JSON formatted string. + Policy interface{} `pulumi:"policy"` +} + +type GroupPolicyState struct { + // The IAM group to attach to the policy. + Group pulumi.StringPtrInput + // The name of the policy. If omitted, the provider will + // assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The policy document. This is a JSON formatted string. + Policy pulumi.Input +} + +func (GroupPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*groupPolicyState)(nil)).Elem() +} + +type groupPolicyArgs struct { + // The IAM group to attach to the policy. + Group string `pulumi:"group"` + // The name of the policy. If omitted, the provider will + // assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The policy document. This is a JSON formatted string. + Policy interface{} `pulumi:"policy"` +} + +// The set of arguments for constructing a GroupPolicy resource. +type GroupPolicyArgs struct { + // The IAM group to attach to the policy. + Group pulumi.StringInput + // The name of the policy. If omitted, the provider will + // assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The policy document. This is a JSON formatted string. + Policy pulumi.Input +} + +func (GroupPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*groupPolicyArgs)(nil)).Elem() +} + +type GroupPolicyInput interface { + pulumi.Input + + ToGroupPolicyOutput() GroupPolicyOutput + ToGroupPolicyOutputWithContext(ctx context.Context) GroupPolicyOutput +} + +func (*GroupPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPolicy)(nil)).Elem() +} + +func (i *GroupPolicy) ToGroupPolicyOutput() GroupPolicyOutput { + return i.ToGroupPolicyOutputWithContext(context.Background()) +} + +func (i *GroupPolicy) ToGroupPolicyOutputWithContext(ctx context.Context) GroupPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyOutput) +} + +// GroupPolicyArrayInput is an input type that accepts GroupPolicyArray and GroupPolicyArrayOutput values. +// You can construct a concrete instance of `GroupPolicyArrayInput` via: +// +// GroupPolicyArray{ GroupPolicyArgs{...} } +type GroupPolicyArrayInput interface { + pulumi.Input + + ToGroupPolicyArrayOutput() GroupPolicyArrayOutput + ToGroupPolicyArrayOutputWithContext(context.Context) GroupPolicyArrayOutput +} + +type GroupPolicyArray []GroupPolicyInput + +func (GroupPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPolicy)(nil)).Elem() +} + +func (i GroupPolicyArray) ToGroupPolicyArrayOutput() GroupPolicyArrayOutput { + return i.ToGroupPolicyArrayOutputWithContext(context.Background()) +} + +func (i GroupPolicyArray) ToGroupPolicyArrayOutputWithContext(ctx context.Context) GroupPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyArrayOutput) +} + +// GroupPolicyMapInput is an input type that accepts GroupPolicyMap and GroupPolicyMapOutput values. +// You can construct a concrete instance of `GroupPolicyMapInput` via: +// +// GroupPolicyMap{ "key": GroupPolicyArgs{...} } +type GroupPolicyMapInput interface { + pulumi.Input + + ToGroupPolicyMapOutput() GroupPolicyMapOutput + ToGroupPolicyMapOutputWithContext(context.Context) GroupPolicyMapOutput +} + +type GroupPolicyMap map[string]GroupPolicyInput + +func (GroupPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPolicy)(nil)).Elem() +} + +func (i GroupPolicyMap) ToGroupPolicyMapOutput() GroupPolicyMapOutput { + return i.ToGroupPolicyMapOutputWithContext(context.Background()) +} + +func (i GroupPolicyMap) ToGroupPolicyMapOutputWithContext(ctx context.Context) GroupPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyMapOutput) +} + +type GroupPolicyOutput struct{ *pulumi.OutputState } + +func (GroupPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPolicy)(nil)).Elem() +} + +func (o GroupPolicyOutput) ToGroupPolicyOutput() GroupPolicyOutput { + return o +} + +func (o GroupPolicyOutput) ToGroupPolicyOutputWithContext(ctx context.Context) GroupPolicyOutput { + return o +} + +// The IAM group to attach to the policy. +func (o GroupPolicyOutput) Group() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPolicy) pulumi.StringOutput { return v.Group }).(pulumi.StringOutput) +} + +// The name of the policy. If omitted, the provider will +// assign a random, unique name. +func (o GroupPolicyOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPolicy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified +// prefix. Conflicts with `name`. +func (o GroupPolicyOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPolicy) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// The policy document. This is a JSON formatted string. +func (o GroupPolicyOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +type GroupPolicyArrayOutput struct{ *pulumi.OutputState } + +func (GroupPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPolicy)(nil)).Elem() +} + +func (o GroupPolicyArrayOutput) ToGroupPolicyArrayOutput() GroupPolicyArrayOutput { + return o +} + +func (o GroupPolicyArrayOutput) ToGroupPolicyArrayOutputWithContext(ctx context.Context) GroupPolicyArrayOutput { + return o +} + +func (o GroupPolicyArrayOutput) Index(i pulumi.IntInput) GroupPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *GroupPolicy { + return vs[0].([]*GroupPolicy)[vs[1].(int)] + }).(GroupPolicyOutput) +} + +type GroupPolicyMapOutput struct{ *pulumi.OutputState } + +func (GroupPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPolicy)(nil)).Elem() +} + +func (o GroupPolicyMapOutput) ToGroupPolicyMapOutput() GroupPolicyMapOutput { + return o +} + +func (o GroupPolicyMapOutput) ToGroupPolicyMapOutputWithContext(ctx context.Context) GroupPolicyMapOutput { + return o +} + +func (o GroupPolicyMapOutput) MapIndex(k pulumi.StringInput) GroupPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *GroupPolicy { + return vs[0].(map[string]*GroupPolicy)[vs[1].(string)] + }).(GroupPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyInput)(nil)).Elem(), &GroupPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyArrayInput)(nil)).Elem(), GroupPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyMapInput)(nil)).Elem(), GroupPolicyMap{}) + pulumi.RegisterOutputType(GroupPolicyOutput{}) + pulumi.RegisterOutputType(GroupPolicyArrayOutput{}) + pulumi.RegisterOutputType(GroupPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachment.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachment.go new file mode 100644 index 000000000..76c1d46ec --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachment.go @@ -0,0 +1,288 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Attaches a Managed IAM Policy to an IAM group +// +// > **NOTE:** The usage of this resource conflicts with the `iam.PolicyAttachment` resource and will permanently show a difference if both are defined. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// group, err := iam.NewGroup(ctx, "group", &iam.GroupArgs{ +// Name: pulumi.String("test-group"), +// }) +// if err != nil { +// return err +// } +// policy, err := iam.NewPolicy(ctx, "policy", &iam.PolicyArgs{ +// Name: pulumi.String("test-policy"), +// Description: pulumi.String("A test policy"), +// Policy: pulumi.Any("{ ... policy JSON ... }"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewGroupPolicyAttachment(ctx, "test-attach", &iam.GroupPolicyAttachmentArgs{ +// Group: group.Name, +// PolicyArn: policy.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM group policy attachments using the group name and policy arn separated by `/`. For example: +// +// ```sh +// $ pulumi import aws:iam/groupPolicyAttachment:GroupPolicyAttachment test-attach test-group/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy +// ``` +type GroupPolicyAttachment struct { + pulumi.CustomResourceState + + // The group the policy should be applied to + Group pulumi.StringOutput `pulumi:"group"` + // The ARN of the policy you want to apply + PolicyArn pulumi.StringOutput `pulumi:"policyArn"` +} + +// NewGroupPolicyAttachment registers a new resource with the given unique name, arguments, and options. +func NewGroupPolicyAttachment(ctx *pulumi.Context, + name string, args *GroupPolicyAttachmentArgs, opts ...pulumi.ResourceOption) (*GroupPolicyAttachment, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Group == nil { + return nil, errors.New("invalid value for required argument 'Group'") + } + if args.PolicyArn == nil { + return nil, errors.New("invalid value for required argument 'PolicyArn'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource GroupPolicyAttachment + err := ctx.RegisterResource("aws:iam/groupPolicyAttachment:GroupPolicyAttachment", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetGroupPolicyAttachment gets an existing GroupPolicyAttachment 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 GetGroupPolicyAttachment(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *GroupPolicyAttachmentState, opts ...pulumi.ResourceOption) (*GroupPolicyAttachment, error) { + var resource GroupPolicyAttachment + err := ctx.ReadResource("aws:iam/groupPolicyAttachment:GroupPolicyAttachment", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering GroupPolicyAttachment resources. +type groupPolicyAttachmentState struct { + // The group the policy should be applied to + Group interface{} `pulumi:"group"` + // The ARN of the policy you want to apply + PolicyArn *string `pulumi:"policyArn"` +} + +type GroupPolicyAttachmentState struct { + // The group the policy should be applied to + Group pulumi.Input + // The ARN of the policy you want to apply + PolicyArn pulumi.StringPtrInput +} + +func (GroupPolicyAttachmentState) ElementType() reflect.Type { + return reflect.TypeOf((*groupPolicyAttachmentState)(nil)).Elem() +} + +type groupPolicyAttachmentArgs struct { + // The group the policy should be applied to + Group interface{} `pulumi:"group"` + // The ARN of the policy you want to apply + PolicyArn string `pulumi:"policyArn"` +} + +// The set of arguments for constructing a GroupPolicyAttachment resource. +type GroupPolicyAttachmentArgs struct { + // The group the policy should be applied to + Group pulumi.Input + // The ARN of the policy you want to apply + PolicyArn pulumi.StringInput +} + +func (GroupPolicyAttachmentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*groupPolicyAttachmentArgs)(nil)).Elem() +} + +type GroupPolicyAttachmentInput interface { + pulumi.Input + + ToGroupPolicyAttachmentOutput() GroupPolicyAttachmentOutput + ToGroupPolicyAttachmentOutputWithContext(ctx context.Context) GroupPolicyAttachmentOutput +} + +func (*GroupPolicyAttachment) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPolicyAttachment)(nil)).Elem() +} + +func (i *GroupPolicyAttachment) ToGroupPolicyAttachmentOutput() GroupPolicyAttachmentOutput { + return i.ToGroupPolicyAttachmentOutputWithContext(context.Background()) +} + +func (i *GroupPolicyAttachment) ToGroupPolicyAttachmentOutputWithContext(ctx context.Context) GroupPolicyAttachmentOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyAttachmentOutput) +} + +// GroupPolicyAttachmentArrayInput is an input type that accepts GroupPolicyAttachmentArray and GroupPolicyAttachmentArrayOutput values. +// You can construct a concrete instance of `GroupPolicyAttachmentArrayInput` via: +// +// GroupPolicyAttachmentArray{ GroupPolicyAttachmentArgs{...} } +type GroupPolicyAttachmentArrayInput interface { + pulumi.Input + + ToGroupPolicyAttachmentArrayOutput() GroupPolicyAttachmentArrayOutput + ToGroupPolicyAttachmentArrayOutputWithContext(context.Context) GroupPolicyAttachmentArrayOutput +} + +type GroupPolicyAttachmentArray []GroupPolicyAttachmentInput + +func (GroupPolicyAttachmentArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPolicyAttachment)(nil)).Elem() +} + +func (i GroupPolicyAttachmentArray) ToGroupPolicyAttachmentArrayOutput() GroupPolicyAttachmentArrayOutput { + return i.ToGroupPolicyAttachmentArrayOutputWithContext(context.Background()) +} + +func (i GroupPolicyAttachmentArray) ToGroupPolicyAttachmentArrayOutputWithContext(ctx context.Context) GroupPolicyAttachmentArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyAttachmentArrayOutput) +} + +// GroupPolicyAttachmentMapInput is an input type that accepts GroupPolicyAttachmentMap and GroupPolicyAttachmentMapOutput values. +// You can construct a concrete instance of `GroupPolicyAttachmentMapInput` via: +// +// GroupPolicyAttachmentMap{ "key": GroupPolicyAttachmentArgs{...} } +type GroupPolicyAttachmentMapInput interface { + pulumi.Input + + ToGroupPolicyAttachmentMapOutput() GroupPolicyAttachmentMapOutput + ToGroupPolicyAttachmentMapOutputWithContext(context.Context) GroupPolicyAttachmentMapOutput +} + +type GroupPolicyAttachmentMap map[string]GroupPolicyAttachmentInput + +func (GroupPolicyAttachmentMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPolicyAttachment)(nil)).Elem() +} + +func (i GroupPolicyAttachmentMap) ToGroupPolicyAttachmentMapOutput() GroupPolicyAttachmentMapOutput { + return i.ToGroupPolicyAttachmentMapOutputWithContext(context.Background()) +} + +func (i GroupPolicyAttachmentMap) ToGroupPolicyAttachmentMapOutputWithContext(ctx context.Context) GroupPolicyAttachmentMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyAttachmentMapOutput) +} + +type GroupPolicyAttachmentOutput struct{ *pulumi.OutputState } + +func (GroupPolicyAttachmentOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPolicyAttachment)(nil)).Elem() +} + +func (o GroupPolicyAttachmentOutput) ToGroupPolicyAttachmentOutput() GroupPolicyAttachmentOutput { + return o +} + +func (o GroupPolicyAttachmentOutput) ToGroupPolicyAttachmentOutputWithContext(ctx context.Context) GroupPolicyAttachmentOutput { + return o +} + +// The group the policy should be applied to +func (o GroupPolicyAttachmentOutput) Group() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPolicyAttachment) pulumi.StringOutput { return v.Group }).(pulumi.StringOutput) +} + +// The ARN of the policy you want to apply +func (o GroupPolicyAttachmentOutput) PolicyArn() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPolicyAttachment) pulumi.StringOutput { return v.PolicyArn }).(pulumi.StringOutput) +} + +type GroupPolicyAttachmentArrayOutput struct{ *pulumi.OutputState } + +func (GroupPolicyAttachmentArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPolicyAttachment)(nil)).Elem() +} + +func (o GroupPolicyAttachmentArrayOutput) ToGroupPolicyAttachmentArrayOutput() GroupPolicyAttachmentArrayOutput { + return o +} + +func (o GroupPolicyAttachmentArrayOutput) ToGroupPolicyAttachmentArrayOutputWithContext(ctx context.Context) GroupPolicyAttachmentArrayOutput { + return o +} + +func (o GroupPolicyAttachmentArrayOutput) Index(i pulumi.IntInput) GroupPolicyAttachmentOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *GroupPolicyAttachment { + return vs[0].([]*GroupPolicyAttachment)[vs[1].(int)] + }).(GroupPolicyAttachmentOutput) +} + +type GroupPolicyAttachmentMapOutput struct{ *pulumi.OutputState } + +func (GroupPolicyAttachmentMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPolicyAttachment)(nil)).Elem() +} + +func (o GroupPolicyAttachmentMapOutput) ToGroupPolicyAttachmentMapOutput() GroupPolicyAttachmentMapOutput { + return o +} + +func (o GroupPolicyAttachmentMapOutput) ToGroupPolicyAttachmentMapOutputWithContext(ctx context.Context) GroupPolicyAttachmentMapOutput { + return o +} + +func (o GroupPolicyAttachmentMapOutput) MapIndex(k pulumi.StringInput) GroupPolicyAttachmentOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *GroupPolicyAttachment { + return vs[0].(map[string]*GroupPolicyAttachment)[vs[1].(string)] + }).(GroupPolicyAttachmentOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyAttachmentInput)(nil)).Elem(), &GroupPolicyAttachment{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyAttachmentArrayInput)(nil)).Elem(), GroupPolicyAttachmentArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyAttachmentMapInput)(nil)).Elem(), GroupPolicyAttachmentMap{}) + pulumi.RegisterOutputType(GroupPolicyAttachmentOutput{}) + pulumi.RegisterOutputType(GroupPolicyAttachmentArrayOutput{}) + pulumi.RegisterOutputType(GroupPolicyAttachmentMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachmentsExclusive.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachmentsExclusive.go new file mode 100644 index 000000000..3cd69a31a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/groupPolicyAttachmentsExclusive.go @@ -0,0 +1,243 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Import +// +// Using `pulumi import`, import exclusive management of managed IAM policy assignments using the `group_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/groupPolicyAttachmentsExclusive:GroupPolicyAttachmentsExclusive example MyGroup +// ``` +type GroupPolicyAttachmentsExclusive struct { + pulumi.CustomResourceState + + // IAM group name. + GroupName pulumi.StringOutput `pulumi:"groupName"` + // A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayOutput `pulumi:"policyArns"` +} + +// NewGroupPolicyAttachmentsExclusive registers a new resource with the given unique name, arguments, and options. +func NewGroupPolicyAttachmentsExclusive(ctx *pulumi.Context, + name string, args *GroupPolicyAttachmentsExclusiveArgs, opts ...pulumi.ResourceOption) (*GroupPolicyAttachmentsExclusive, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.GroupName == nil { + return nil, errors.New("invalid value for required argument 'GroupName'") + } + if args.PolicyArns == nil { + return nil, errors.New("invalid value for required argument 'PolicyArns'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource GroupPolicyAttachmentsExclusive + err := ctx.RegisterResource("aws:iam/groupPolicyAttachmentsExclusive:GroupPolicyAttachmentsExclusive", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetGroupPolicyAttachmentsExclusive gets an existing GroupPolicyAttachmentsExclusive 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 GetGroupPolicyAttachmentsExclusive(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *GroupPolicyAttachmentsExclusiveState, opts ...pulumi.ResourceOption) (*GroupPolicyAttachmentsExclusive, error) { + var resource GroupPolicyAttachmentsExclusive + err := ctx.ReadResource("aws:iam/groupPolicyAttachmentsExclusive:GroupPolicyAttachmentsExclusive", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering GroupPolicyAttachmentsExclusive resources. +type groupPolicyAttachmentsExclusiveState struct { + // IAM group name. + GroupName *string `pulumi:"groupName"` + // A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyArns []string `pulumi:"policyArns"` +} + +type GroupPolicyAttachmentsExclusiveState struct { + // IAM group name. + GroupName pulumi.StringPtrInput + // A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayInput +} + +func (GroupPolicyAttachmentsExclusiveState) ElementType() reflect.Type { + return reflect.TypeOf((*groupPolicyAttachmentsExclusiveState)(nil)).Elem() +} + +type groupPolicyAttachmentsExclusiveArgs struct { + // IAM group name. + GroupName string `pulumi:"groupName"` + // A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyArns []string `pulumi:"policyArns"` +} + +// The set of arguments for constructing a GroupPolicyAttachmentsExclusive resource. +type GroupPolicyAttachmentsExclusiveArgs struct { + // IAM group name. + GroupName pulumi.StringInput + // A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayInput +} + +func (GroupPolicyAttachmentsExclusiveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*groupPolicyAttachmentsExclusiveArgs)(nil)).Elem() +} + +type GroupPolicyAttachmentsExclusiveInput interface { + pulumi.Input + + ToGroupPolicyAttachmentsExclusiveOutput() GroupPolicyAttachmentsExclusiveOutput + ToGroupPolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) GroupPolicyAttachmentsExclusiveOutput +} + +func (*GroupPolicyAttachmentsExclusive) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i *GroupPolicyAttachmentsExclusive) ToGroupPolicyAttachmentsExclusiveOutput() GroupPolicyAttachmentsExclusiveOutput { + return i.ToGroupPolicyAttachmentsExclusiveOutputWithContext(context.Background()) +} + +func (i *GroupPolicyAttachmentsExclusive) ToGroupPolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) GroupPolicyAttachmentsExclusiveOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyAttachmentsExclusiveOutput) +} + +// GroupPolicyAttachmentsExclusiveArrayInput is an input type that accepts GroupPolicyAttachmentsExclusiveArray and GroupPolicyAttachmentsExclusiveArrayOutput values. +// You can construct a concrete instance of `GroupPolicyAttachmentsExclusiveArrayInput` via: +// +// GroupPolicyAttachmentsExclusiveArray{ GroupPolicyAttachmentsExclusiveArgs{...} } +type GroupPolicyAttachmentsExclusiveArrayInput interface { + pulumi.Input + + ToGroupPolicyAttachmentsExclusiveArrayOutput() GroupPolicyAttachmentsExclusiveArrayOutput + ToGroupPolicyAttachmentsExclusiveArrayOutputWithContext(context.Context) GroupPolicyAttachmentsExclusiveArrayOutput +} + +type GroupPolicyAttachmentsExclusiveArray []GroupPolicyAttachmentsExclusiveInput + +func (GroupPolicyAttachmentsExclusiveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i GroupPolicyAttachmentsExclusiveArray) ToGroupPolicyAttachmentsExclusiveArrayOutput() GroupPolicyAttachmentsExclusiveArrayOutput { + return i.ToGroupPolicyAttachmentsExclusiveArrayOutputWithContext(context.Background()) +} + +func (i GroupPolicyAttachmentsExclusiveArray) ToGroupPolicyAttachmentsExclusiveArrayOutputWithContext(ctx context.Context) GroupPolicyAttachmentsExclusiveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyAttachmentsExclusiveArrayOutput) +} + +// GroupPolicyAttachmentsExclusiveMapInput is an input type that accepts GroupPolicyAttachmentsExclusiveMap and GroupPolicyAttachmentsExclusiveMapOutput values. +// You can construct a concrete instance of `GroupPolicyAttachmentsExclusiveMapInput` via: +// +// GroupPolicyAttachmentsExclusiveMap{ "key": GroupPolicyAttachmentsExclusiveArgs{...} } +type GroupPolicyAttachmentsExclusiveMapInput interface { + pulumi.Input + + ToGroupPolicyAttachmentsExclusiveMapOutput() GroupPolicyAttachmentsExclusiveMapOutput + ToGroupPolicyAttachmentsExclusiveMapOutputWithContext(context.Context) GroupPolicyAttachmentsExclusiveMapOutput +} + +type GroupPolicyAttachmentsExclusiveMap map[string]GroupPolicyAttachmentsExclusiveInput + +func (GroupPolicyAttachmentsExclusiveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i GroupPolicyAttachmentsExclusiveMap) ToGroupPolicyAttachmentsExclusiveMapOutput() GroupPolicyAttachmentsExclusiveMapOutput { + return i.ToGroupPolicyAttachmentsExclusiveMapOutputWithContext(context.Background()) +} + +func (i GroupPolicyAttachmentsExclusiveMap) ToGroupPolicyAttachmentsExclusiveMapOutputWithContext(ctx context.Context) GroupPolicyAttachmentsExclusiveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(GroupPolicyAttachmentsExclusiveMapOutput) +} + +type GroupPolicyAttachmentsExclusiveOutput struct{ *pulumi.OutputState } + +func (GroupPolicyAttachmentsExclusiveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**GroupPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o GroupPolicyAttachmentsExclusiveOutput) ToGroupPolicyAttachmentsExclusiveOutput() GroupPolicyAttachmentsExclusiveOutput { + return o +} + +func (o GroupPolicyAttachmentsExclusiveOutput) ToGroupPolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) GroupPolicyAttachmentsExclusiveOutput { + return o +} + +// IAM group name. +func (o GroupPolicyAttachmentsExclusiveOutput) GroupName() pulumi.StringOutput { + return o.ApplyT(func(v *GroupPolicyAttachmentsExclusive) pulumi.StringOutput { return v.GroupName }).(pulumi.StringOutput) +} + +// A list of managed IAM policy ARNs to be attached to the group. Policies attached to this group but not configured in this argument will be removed. +func (o GroupPolicyAttachmentsExclusiveOutput) PolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *GroupPolicyAttachmentsExclusive) pulumi.StringArrayOutput { return v.PolicyArns }).(pulumi.StringArrayOutput) +} + +type GroupPolicyAttachmentsExclusiveArrayOutput struct{ *pulumi.OutputState } + +func (GroupPolicyAttachmentsExclusiveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*GroupPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o GroupPolicyAttachmentsExclusiveArrayOutput) ToGroupPolicyAttachmentsExclusiveArrayOutput() GroupPolicyAttachmentsExclusiveArrayOutput { + return o +} + +func (o GroupPolicyAttachmentsExclusiveArrayOutput) ToGroupPolicyAttachmentsExclusiveArrayOutputWithContext(ctx context.Context) GroupPolicyAttachmentsExclusiveArrayOutput { + return o +} + +func (o GroupPolicyAttachmentsExclusiveArrayOutput) Index(i pulumi.IntInput) GroupPolicyAttachmentsExclusiveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *GroupPolicyAttachmentsExclusive { + return vs[0].([]*GroupPolicyAttachmentsExclusive)[vs[1].(int)] + }).(GroupPolicyAttachmentsExclusiveOutput) +} + +type GroupPolicyAttachmentsExclusiveMapOutput struct{ *pulumi.OutputState } + +func (GroupPolicyAttachmentsExclusiveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*GroupPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o GroupPolicyAttachmentsExclusiveMapOutput) ToGroupPolicyAttachmentsExclusiveMapOutput() GroupPolicyAttachmentsExclusiveMapOutput { + return o +} + +func (o GroupPolicyAttachmentsExclusiveMapOutput) ToGroupPolicyAttachmentsExclusiveMapOutputWithContext(ctx context.Context) GroupPolicyAttachmentsExclusiveMapOutput { + return o +} + +func (o GroupPolicyAttachmentsExclusiveMapOutput) MapIndex(k pulumi.StringInput) GroupPolicyAttachmentsExclusiveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *GroupPolicyAttachmentsExclusive { + return vs[0].(map[string]*GroupPolicyAttachmentsExclusive)[vs[1].(string)] + }).(GroupPolicyAttachmentsExclusiveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyAttachmentsExclusiveInput)(nil)).Elem(), &GroupPolicyAttachmentsExclusive{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyAttachmentsExclusiveArrayInput)(nil)).Elem(), GroupPolicyAttachmentsExclusiveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GroupPolicyAttachmentsExclusiveMapInput)(nil)).Elem(), GroupPolicyAttachmentsExclusiveMap{}) + pulumi.RegisterOutputType(GroupPolicyAttachmentsExclusiveOutput{}) + pulumi.RegisterOutputType(GroupPolicyAttachmentsExclusiveArrayOutput{}) + pulumi.RegisterOutputType(GroupPolicyAttachmentsExclusiveMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/init.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/init.go new file mode 100644 index 000000000..513a0f13c --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/init.go @@ -0,0 +1,275 @@ +// 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 iam + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws:iam/accessKey:AccessKey": + r = &AccessKey{} + case "aws:iam/accountAlias:AccountAlias": + r = &AccountAlias{} + case "aws:iam/accountPasswordPolicy:AccountPasswordPolicy": + r = &AccountPasswordPolicy{} + case "aws:iam/group:Group": + r = &Group{} + case "aws:iam/groupMembership:GroupMembership": + r = &GroupMembership{} + case "aws:iam/groupPoliciesExclusive:GroupPoliciesExclusive": + r = &GroupPoliciesExclusive{} + case "aws:iam/groupPolicy:GroupPolicy": + r = &GroupPolicy{} + case "aws:iam/groupPolicyAttachment:GroupPolicyAttachment": + r = &GroupPolicyAttachment{} + case "aws:iam/groupPolicyAttachmentsExclusive:GroupPolicyAttachmentsExclusive": + r = &GroupPolicyAttachmentsExclusive{} + case "aws:iam/instanceProfile:InstanceProfile": + r = &InstanceProfile{} + case "aws:iam/openIdConnectProvider:OpenIdConnectProvider": + r = &OpenIdConnectProvider{} + case "aws:iam/organizationsFeatures:OrganizationsFeatures": + r = &OrganizationsFeatures{} + case "aws:iam/policy:Policy": + r = &Policy{} + case "aws:iam/policyAttachment:PolicyAttachment": + r = &PolicyAttachment{} + case "aws:iam/role:Role": + r = &Role{} + case "aws:iam/rolePoliciesExclusive:RolePoliciesExclusive": + r = &RolePoliciesExclusive{} + case "aws:iam/rolePolicy:RolePolicy": + r = &RolePolicy{} + case "aws:iam/rolePolicyAttachment:RolePolicyAttachment": + r = &RolePolicyAttachment{} + case "aws:iam/rolePolicyAttachmentsExclusive:RolePolicyAttachmentsExclusive": + r = &RolePolicyAttachmentsExclusive{} + case "aws:iam/samlProvider:SamlProvider": + r = &SamlProvider{} + case "aws:iam/securityTokenServicePreferences:SecurityTokenServicePreferences": + r = &SecurityTokenServicePreferences{} + case "aws:iam/serverCertificate:ServerCertificate": + r = &ServerCertificate{} + case "aws:iam/serviceLinkedRole:ServiceLinkedRole": + r = &ServiceLinkedRole{} + case "aws:iam/serviceSpecificCredential:ServiceSpecificCredential": + r = &ServiceSpecificCredential{} + case "aws:iam/signingCertificate:SigningCertificate": + r = &SigningCertificate{} + case "aws:iam/sshKey:SshKey": + r = &SshKey{} + case "aws:iam/user:User": + r = &User{} + case "aws:iam/userGroupMembership:UserGroupMembership": + r = &UserGroupMembership{} + case "aws:iam/userLoginProfile:UserLoginProfile": + r = &UserLoginProfile{} + case "aws:iam/userPoliciesExclusive:UserPoliciesExclusive": + r = &UserPoliciesExclusive{} + case "aws:iam/userPolicy:UserPolicy": + r = &UserPolicy{} + case "aws:iam/userPolicyAttachment:UserPolicyAttachment": + r = &UserPolicyAttachment{} + case "aws:iam/userPolicyAttachmentsExclusive:UserPolicyAttachmentsExclusive": + r = &UserPolicyAttachmentsExclusive{} + case "aws:iam/virtualMfaDevice:VirtualMfaDevice": + r = &VirtualMfaDevice{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws", + "iam/accessKey", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/accountAlias", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/accountPasswordPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/group", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/groupMembership", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/groupPoliciesExclusive", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/groupPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/groupPolicyAttachment", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/groupPolicyAttachmentsExclusive", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/instanceProfile", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/openIdConnectProvider", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/organizationsFeatures", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/policy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/policyAttachment", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/role", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/rolePoliciesExclusive", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/rolePolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/rolePolicyAttachment", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/rolePolicyAttachmentsExclusive", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/samlProvider", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/securityTokenServicePreferences", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/serverCertificate", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/serviceLinkedRole", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/serviceSpecificCredential", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/signingCertificate", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/sshKey", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/user", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/userGroupMembership", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/userLoginProfile", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/userPoliciesExclusive", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/userPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/userPolicyAttachment", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/userPolicyAttachmentsExclusive", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "iam/virtualMfaDevice", + &module{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/instanceProfile.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/instanceProfile.go new file mode 100644 index 000000000..9e84e1b70 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/instanceProfile.go @@ -0,0 +1,393 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM instance profile. +// +// > **NOTE:** When managing instance profiles, remember that the `name` attribute must always be unique. This means that even if you have different `role` or `path` values, duplicating an existing instance profile `name` will lead to an `EntityAlreadyExists` error. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "ec2.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// role, err := iam.NewRole(ctx, "role", &iam.RoleArgs{ +// Name: pulumi.String("test_role"), +// Path: pulumi.String("/"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewInstanceProfile(ctx, "test_profile", &iam.InstanceProfileArgs{ +// Name: pulumi.String("test_profile"), +// Role: role.Name, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import Instance Profiles using the `name`. For example: +// +// ```sh +// $ pulumi import aws:iam/instanceProfile:InstanceProfile test_profile app-instance-profile-1 +// ``` +type InstanceProfile struct { + pulumi.CustomResourceState + + // ARN assigned by AWS to the instance profile. + Arn pulumi.StringOutput `pulumi:"arn"` + // Creation timestamp of the instance profile. + CreateDate pulumi.StringOutput `pulumi:"createDate"` + // Name of the instance profile. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. Can be a string of characters consisting of upper and lowercase alphanumeric characters and these special characters: `_`, `+`, `=`, `,`, `.`, `@`, `-`. Spaces are not allowed. The `name` must be unique, regardless of the `path` or `role`. In other words, if there are different `role` or `path` values but the same `name` as an existing instance profile, it will still cause an `EntityAlreadyExists` error. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // Path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the IAM User Guide. Can be a string of characters consisting of either a forward slash (`/`) by itself or a string that must begin and end with forward slashes. Can include any ASCII character from the ! (\u0021) through the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercase letters. + Path pulumi.StringPtrOutput `pulumi:"path"` + // Name of the role to add to the profile. + Role pulumi.StringPtrOutput `pulumi:"role"` + // Map of resource tags for the IAM Instance Profile. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // [Unique ID][1] assigned by AWS. + UniqueId pulumi.StringOutput `pulumi:"uniqueId"` +} + +// NewInstanceProfile registers a new resource with the given unique name, arguments, and options. +func NewInstanceProfile(ctx *pulumi.Context, + name string, args *InstanceProfileArgs, opts ...pulumi.ResourceOption) (*InstanceProfile, error) { + if args == nil { + args = &InstanceProfileArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource InstanceProfile + err := ctx.RegisterResource("aws:iam/instanceProfile:InstanceProfile", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetInstanceProfile gets an existing InstanceProfile 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 GetInstanceProfile(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *InstanceProfileState, opts ...pulumi.ResourceOption) (*InstanceProfile, error) { + var resource InstanceProfile + err := ctx.ReadResource("aws:iam/instanceProfile:InstanceProfile", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering InstanceProfile resources. +type instanceProfileState struct { + // ARN assigned by AWS to the instance profile. + Arn *string `pulumi:"arn"` + // Creation timestamp of the instance profile. + CreateDate *string `pulumi:"createDate"` + // Name of the instance profile. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. Can be a string of characters consisting of upper and lowercase alphanumeric characters and these special characters: `_`, `+`, `=`, `,`, `.`, `@`, `-`. Spaces are not allowed. The `name` must be unique, regardless of the `path` or `role`. In other words, if there are different `role` or `path` values but the same `name` as an existing instance profile, it will still cause an `EntityAlreadyExists` error. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the IAM User Guide. Can be a string of characters consisting of either a forward slash (`/`) by itself or a string that must begin and end with forward slashes. Can include any ASCII character from the ! (\u0021) through the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercase letters. + Path *string `pulumi:"path"` + // Name of the role to add to the profile. + Role interface{} `pulumi:"role"` + // Map of resource tags for the IAM Instance Profile. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // [Unique ID][1] assigned by AWS. + UniqueId *string `pulumi:"uniqueId"` +} + +type InstanceProfileState struct { + // ARN assigned by AWS to the instance profile. + Arn pulumi.StringPtrInput + // Creation timestamp of the instance profile. + CreateDate pulumi.StringPtrInput + // Name of the instance profile. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. Can be a string of characters consisting of upper and lowercase alphanumeric characters and these special characters: `_`, `+`, `=`, `,`, `.`, `@`, `-`. Spaces are not allowed. The `name` must be unique, regardless of the `path` or `role`. In other words, if there are different `role` or `path` values but the same `name` as an existing instance profile, it will still cause an `EntityAlreadyExists` error. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the IAM User Guide. Can be a string of characters consisting of either a forward slash (`/`) by itself or a string that must begin and end with forward slashes. Can include any ASCII character from the ! (\u0021) through the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercase letters. + Path pulumi.StringPtrInput + // Name of the role to add to the profile. + Role pulumi.Input + // Map of resource tags for the IAM Instance Profile. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // [Unique ID][1] assigned by AWS. + UniqueId pulumi.StringPtrInput +} + +func (InstanceProfileState) ElementType() reflect.Type { + return reflect.TypeOf((*instanceProfileState)(nil)).Elem() +} + +type instanceProfileArgs struct { + // Name of the instance profile. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. Can be a string of characters consisting of upper and lowercase alphanumeric characters and these special characters: `_`, `+`, `=`, `,`, `.`, `@`, `-`. Spaces are not allowed. The `name` must be unique, regardless of the `path` or `role`. In other words, if there are different `role` or `path` values but the same `name` as an existing instance profile, it will still cause an `EntityAlreadyExists` error. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the IAM User Guide. Can be a string of characters consisting of either a forward slash (`/`) by itself or a string that must begin and end with forward slashes. Can include any ASCII character from the ! (\u0021) through the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercase letters. + Path *string `pulumi:"path"` + // Name of the role to add to the profile. + Role interface{} `pulumi:"role"` + // Map of resource tags for the IAM Instance Profile. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a InstanceProfile resource. +type InstanceProfileArgs struct { + // Name of the instance profile. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. Can be a string of characters consisting of upper and lowercase alphanumeric characters and these special characters: `_`, `+`, `=`, `,`, `.`, `@`, `-`. Spaces are not allowed. The `name` must be unique, regardless of the `path` or `role`. In other words, if there are different `role` or `path` values but the same `name` as an existing instance profile, it will still cause an `EntityAlreadyExists` error. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the IAM User Guide. Can be a string of characters consisting of either a forward slash (`/`) by itself or a string that must begin and end with forward slashes. Can include any ASCII character from the ! (\u0021) through the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercase letters. + Path pulumi.StringPtrInput + // Name of the role to add to the profile. + Role pulumi.Input + // Map of resource tags for the IAM Instance Profile. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (InstanceProfileArgs) ElementType() reflect.Type { + return reflect.TypeOf((*instanceProfileArgs)(nil)).Elem() +} + +type InstanceProfileInput interface { + pulumi.Input + + ToInstanceProfileOutput() InstanceProfileOutput + ToInstanceProfileOutputWithContext(ctx context.Context) InstanceProfileOutput +} + +func (*InstanceProfile) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceProfile)(nil)).Elem() +} + +func (i *InstanceProfile) ToInstanceProfileOutput() InstanceProfileOutput { + return i.ToInstanceProfileOutputWithContext(context.Background()) +} + +func (i *InstanceProfile) ToInstanceProfileOutputWithContext(ctx context.Context) InstanceProfileOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceProfileOutput) +} + +// InstanceProfileArrayInput is an input type that accepts InstanceProfileArray and InstanceProfileArrayOutput values. +// You can construct a concrete instance of `InstanceProfileArrayInput` via: +// +// InstanceProfileArray{ InstanceProfileArgs{...} } +type InstanceProfileArrayInput interface { + pulumi.Input + + ToInstanceProfileArrayOutput() InstanceProfileArrayOutput + ToInstanceProfileArrayOutputWithContext(context.Context) InstanceProfileArrayOutput +} + +type InstanceProfileArray []InstanceProfileInput + +func (InstanceProfileArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InstanceProfile)(nil)).Elem() +} + +func (i InstanceProfileArray) ToInstanceProfileArrayOutput() InstanceProfileArrayOutput { + return i.ToInstanceProfileArrayOutputWithContext(context.Background()) +} + +func (i InstanceProfileArray) ToInstanceProfileArrayOutputWithContext(ctx context.Context) InstanceProfileArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceProfileArrayOutput) +} + +// InstanceProfileMapInput is an input type that accepts InstanceProfileMap and InstanceProfileMapOutput values. +// You can construct a concrete instance of `InstanceProfileMapInput` via: +// +// InstanceProfileMap{ "key": InstanceProfileArgs{...} } +type InstanceProfileMapInput interface { + pulumi.Input + + ToInstanceProfileMapOutput() InstanceProfileMapOutput + ToInstanceProfileMapOutputWithContext(context.Context) InstanceProfileMapOutput +} + +type InstanceProfileMap map[string]InstanceProfileInput + +func (InstanceProfileMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InstanceProfile)(nil)).Elem() +} + +func (i InstanceProfileMap) ToInstanceProfileMapOutput() InstanceProfileMapOutput { + return i.ToInstanceProfileMapOutputWithContext(context.Background()) +} + +func (i InstanceProfileMap) ToInstanceProfileMapOutputWithContext(ctx context.Context) InstanceProfileMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(InstanceProfileMapOutput) +} + +type InstanceProfileOutput struct{ *pulumi.OutputState } + +func (InstanceProfileOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InstanceProfile)(nil)).Elem() +} + +func (o InstanceProfileOutput) ToInstanceProfileOutput() InstanceProfileOutput { + return o +} + +func (o InstanceProfileOutput) ToInstanceProfileOutputWithContext(ctx context.Context) InstanceProfileOutput { + return o +} + +// ARN assigned by AWS to the instance profile. +func (o InstanceProfileOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Creation timestamp of the instance profile. +func (o InstanceProfileOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringOutput { return v.CreateDate }).(pulumi.StringOutput) +} + +// Name of the instance profile. If omitted, this provider will assign a random, unique name. Conflicts with `namePrefix`. Can be a string of characters consisting of upper and lowercase alphanumeric characters and these special characters: `_`, `+`, `=`, `,`, `.`, `@`, `-`. Spaces are not allowed. The `name` must be unique, regardless of the `path` or `role`. In other words, if there are different `role` or `path` values but the same `name` as an existing instance profile, it will still cause an `EntityAlreadyExists` error. +func (o InstanceProfileOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o InstanceProfileOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// Path to the instance profile. For more information about paths, see [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) in the IAM User Guide. Can be a string of characters consisting of either a forward slash (`/`) by itself or a string that must begin and end with forward slashes. Can include any ASCII character from the ! (\u0021) through the DEL character (\u007F), including most punctuation characters, digits, and upper and lowercase letters. +func (o InstanceProfileOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringPtrOutput { return v.Path }).(pulumi.StringPtrOutput) +} + +// Name of the role to add to the profile. +func (o InstanceProfileOutput) Role() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringPtrOutput { return v.Role }).(pulumi.StringPtrOutput) +} + +// Map of resource tags for the IAM Instance Profile. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o InstanceProfileOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o InstanceProfileOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// [Unique ID][1] assigned by AWS. +func (o InstanceProfileOutput) UniqueId() pulumi.StringOutput { + return o.ApplyT(func(v *InstanceProfile) pulumi.StringOutput { return v.UniqueId }).(pulumi.StringOutput) +} + +type InstanceProfileArrayOutput struct{ *pulumi.OutputState } + +func (InstanceProfileArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*InstanceProfile)(nil)).Elem() +} + +func (o InstanceProfileArrayOutput) ToInstanceProfileArrayOutput() InstanceProfileArrayOutput { + return o +} + +func (o InstanceProfileArrayOutput) ToInstanceProfileArrayOutputWithContext(ctx context.Context) InstanceProfileArrayOutput { + return o +} + +func (o InstanceProfileArrayOutput) Index(i pulumi.IntInput) InstanceProfileOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *InstanceProfile { + return vs[0].([]*InstanceProfile)[vs[1].(int)] + }).(InstanceProfileOutput) +} + +type InstanceProfileMapOutput struct{ *pulumi.OutputState } + +func (InstanceProfileMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*InstanceProfile)(nil)).Elem() +} + +func (o InstanceProfileMapOutput) ToInstanceProfileMapOutput() InstanceProfileMapOutput { + return o +} + +func (o InstanceProfileMapOutput) ToInstanceProfileMapOutputWithContext(ctx context.Context) InstanceProfileMapOutput { + return o +} + +func (o InstanceProfileMapOutput) MapIndex(k pulumi.StringInput) InstanceProfileOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *InstanceProfile { + return vs[0].(map[string]*InstanceProfile)[vs[1].(string)] + }).(InstanceProfileOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*InstanceProfileInput)(nil)).Elem(), &InstanceProfile{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceProfileArrayInput)(nil)).Elem(), InstanceProfileArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InstanceProfileMapInput)(nil)).Elem(), InstanceProfileMap{}) + pulumi.RegisterOutputType(InstanceProfileOutput{}) + pulumi.RegisterOutputType(InstanceProfileArrayOutput{}) + pulumi.RegisterOutputType(InstanceProfileMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/openIdConnectProvider.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/openIdConnectProvider.go new file mode 100644 index 000000000..0da40051e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/openIdConnectProvider.go @@ -0,0 +1,340 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM OpenID Connect provider. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewOpenIdConnectProvider(ctx, "default", &iam.OpenIdConnectProviderArgs{ +// Url: pulumi.String("https://accounts.google.com"), +// ClientIdLists: pulumi.StringArray{ +// pulumi.String("266362248691-342342xasdasdasda-apps.googleusercontent.com"), +// }, +// ThumbprintLists: pulumi.StringArray{ +// pulumi.String("cf23df2207d99a74fbe169e3eba035e633b65d94"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM OpenID Connect Providers using the `arn`. For example: +// +// ```sh +// $ pulumi import aws:iam/openIdConnectProvider:OpenIdConnectProvider default arn:aws:iam::123456789012:oidc-provider/accounts.google.com +// ``` +type OpenIdConnectProvider struct { + pulumi.CustomResourceState + + // The ARN assigned by AWS for this provider. + Arn pulumi.StringOutput `pulumi:"arn"` + // A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) + ClientIdLists pulumi.StringArrayOutput `pulumi:"clientIdLists"` + // Map of resource tags for the IAM OIDC provider. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). + ThumbprintLists pulumi.StringArrayOutput `pulumi:"thumbprintLists"` + // The URL of the identity provider. Corresponds to the _iss_ claim. + Url pulumi.StringOutput `pulumi:"url"` +} + +// NewOpenIdConnectProvider registers a new resource with the given unique name, arguments, and options. +func NewOpenIdConnectProvider(ctx *pulumi.Context, + name string, args *OpenIdConnectProviderArgs, opts ...pulumi.ResourceOption) (*OpenIdConnectProvider, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ClientIdLists == nil { + return nil, errors.New("invalid value for required argument 'ClientIdLists'") + } + if args.ThumbprintLists == nil { + return nil, errors.New("invalid value for required argument 'ThumbprintLists'") + } + if args.Url == nil { + return nil, errors.New("invalid value for required argument 'Url'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource OpenIdConnectProvider + err := ctx.RegisterResource("aws:iam/openIdConnectProvider:OpenIdConnectProvider", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetOpenIdConnectProvider gets an existing OpenIdConnectProvider 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 GetOpenIdConnectProvider(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *OpenIdConnectProviderState, opts ...pulumi.ResourceOption) (*OpenIdConnectProvider, error) { + var resource OpenIdConnectProvider + err := ctx.ReadResource("aws:iam/openIdConnectProvider:OpenIdConnectProvider", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering OpenIdConnectProvider resources. +type openIdConnectProviderState struct { + // The ARN assigned by AWS for this provider. + Arn *string `pulumi:"arn"` + // A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) + ClientIdLists []string `pulumi:"clientIdLists"` + // Map of resource tags for the IAM OIDC provider. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). + ThumbprintLists []string `pulumi:"thumbprintLists"` + // The URL of the identity provider. Corresponds to the _iss_ claim. + Url *string `pulumi:"url"` +} + +type OpenIdConnectProviderState struct { + // The ARN assigned by AWS for this provider. + Arn pulumi.StringPtrInput + // A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) + ClientIdLists pulumi.StringArrayInput + // Map of resource tags for the IAM OIDC provider. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). + ThumbprintLists pulumi.StringArrayInput + // The URL of the identity provider. Corresponds to the _iss_ claim. + Url pulumi.StringPtrInput +} + +func (OpenIdConnectProviderState) ElementType() reflect.Type { + return reflect.TypeOf((*openIdConnectProviderState)(nil)).Elem() +} + +type openIdConnectProviderArgs struct { + // A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) + ClientIdLists []string `pulumi:"clientIdLists"` + // Map of resource tags for the IAM OIDC provider. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). + ThumbprintLists []string `pulumi:"thumbprintLists"` + // The URL of the identity provider. Corresponds to the _iss_ claim. + Url string `pulumi:"url"` +} + +// The set of arguments for constructing a OpenIdConnectProvider resource. +type OpenIdConnectProviderArgs struct { + // A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) + ClientIdLists pulumi.StringArrayInput + // Map of resource tags for the IAM OIDC provider. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). + ThumbprintLists pulumi.StringArrayInput + // The URL of the identity provider. Corresponds to the _iss_ claim. + Url pulumi.StringInput +} + +func (OpenIdConnectProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*openIdConnectProviderArgs)(nil)).Elem() +} + +type OpenIdConnectProviderInput interface { + pulumi.Input + + ToOpenIdConnectProviderOutput() OpenIdConnectProviderOutput + ToOpenIdConnectProviderOutputWithContext(ctx context.Context) OpenIdConnectProviderOutput +} + +func (*OpenIdConnectProvider) ElementType() reflect.Type { + return reflect.TypeOf((**OpenIdConnectProvider)(nil)).Elem() +} + +func (i *OpenIdConnectProvider) ToOpenIdConnectProviderOutput() OpenIdConnectProviderOutput { + return i.ToOpenIdConnectProviderOutputWithContext(context.Background()) +} + +func (i *OpenIdConnectProvider) ToOpenIdConnectProviderOutputWithContext(ctx context.Context) OpenIdConnectProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpenIdConnectProviderOutput) +} + +// OpenIdConnectProviderArrayInput is an input type that accepts OpenIdConnectProviderArray and OpenIdConnectProviderArrayOutput values. +// You can construct a concrete instance of `OpenIdConnectProviderArrayInput` via: +// +// OpenIdConnectProviderArray{ OpenIdConnectProviderArgs{...} } +type OpenIdConnectProviderArrayInput interface { + pulumi.Input + + ToOpenIdConnectProviderArrayOutput() OpenIdConnectProviderArrayOutput + ToOpenIdConnectProviderArrayOutputWithContext(context.Context) OpenIdConnectProviderArrayOutput +} + +type OpenIdConnectProviderArray []OpenIdConnectProviderInput + +func (OpenIdConnectProviderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OpenIdConnectProvider)(nil)).Elem() +} + +func (i OpenIdConnectProviderArray) ToOpenIdConnectProviderArrayOutput() OpenIdConnectProviderArrayOutput { + return i.ToOpenIdConnectProviderArrayOutputWithContext(context.Background()) +} + +func (i OpenIdConnectProviderArray) ToOpenIdConnectProviderArrayOutputWithContext(ctx context.Context) OpenIdConnectProviderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpenIdConnectProviderArrayOutput) +} + +// OpenIdConnectProviderMapInput is an input type that accepts OpenIdConnectProviderMap and OpenIdConnectProviderMapOutput values. +// You can construct a concrete instance of `OpenIdConnectProviderMapInput` via: +// +// OpenIdConnectProviderMap{ "key": OpenIdConnectProviderArgs{...} } +type OpenIdConnectProviderMapInput interface { + pulumi.Input + + ToOpenIdConnectProviderMapOutput() OpenIdConnectProviderMapOutput + ToOpenIdConnectProviderMapOutputWithContext(context.Context) OpenIdConnectProviderMapOutput +} + +type OpenIdConnectProviderMap map[string]OpenIdConnectProviderInput + +func (OpenIdConnectProviderMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OpenIdConnectProvider)(nil)).Elem() +} + +func (i OpenIdConnectProviderMap) ToOpenIdConnectProviderMapOutput() OpenIdConnectProviderMapOutput { + return i.ToOpenIdConnectProviderMapOutputWithContext(context.Background()) +} + +func (i OpenIdConnectProviderMap) ToOpenIdConnectProviderMapOutputWithContext(ctx context.Context) OpenIdConnectProviderMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(OpenIdConnectProviderMapOutput) +} + +type OpenIdConnectProviderOutput struct{ *pulumi.OutputState } + +func (OpenIdConnectProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**OpenIdConnectProvider)(nil)).Elem() +} + +func (o OpenIdConnectProviderOutput) ToOpenIdConnectProviderOutput() OpenIdConnectProviderOutput { + return o +} + +func (o OpenIdConnectProviderOutput) ToOpenIdConnectProviderOutputWithContext(ctx context.Context) OpenIdConnectProviderOutput { + return o +} + +// The ARN assigned by AWS for this provider. +func (o OpenIdConnectProviderOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *OpenIdConnectProvider) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// A list of client IDs (also known as audiences). When a mobile or web app registers with an OpenID Connect provider, they establish a value that identifies the application. (This is the value that's sent as the clientId parameter on OAuth requests.) +func (o OpenIdConnectProviderOutput) ClientIdLists() pulumi.StringArrayOutput { + return o.ApplyT(func(v *OpenIdConnectProvider) pulumi.StringArrayOutput { return v.ClientIdLists }).(pulumi.StringArrayOutput) +} + +// Map of resource tags for the IAM OIDC provider. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o OpenIdConnectProviderOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *OpenIdConnectProvider) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o OpenIdConnectProviderOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *OpenIdConnectProvider) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// A list of server certificate thumbprints for the OpenID Connect (OIDC) identity provider's server certificate(s). +func (o OpenIdConnectProviderOutput) ThumbprintLists() pulumi.StringArrayOutput { + return o.ApplyT(func(v *OpenIdConnectProvider) pulumi.StringArrayOutput { return v.ThumbprintLists }).(pulumi.StringArrayOutput) +} + +// The URL of the identity provider. Corresponds to the _iss_ claim. +func (o OpenIdConnectProviderOutput) Url() pulumi.StringOutput { + return o.ApplyT(func(v *OpenIdConnectProvider) pulumi.StringOutput { return v.Url }).(pulumi.StringOutput) +} + +type OpenIdConnectProviderArrayOutput struct{ *pulumi.OutputState } + +func (OpenIdConnectProviderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OpenIdConnectProvider)(nil)).Elem() +} + +func (o OpenIdConnectProviderArrayOutput) ToOpenIdConnectProviderArrayOutput() OpenIdConnectProviderArrayOutput { + return o +} + +func (o OpenIdConnectProviderArrayOutput) ToOpenIdConnectProviderArrayOutputWithContext(ctx context.Context) OpenIdConnectProviderArrayOutput { + return o +} + +func (o OpenIdConnectProviderArrayOutput) Index(i pulumi.IntInput) OpenIdConnectProviderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *OpenIdConnectProvider { + return vs[0].([]*OpenIdConnectProvider)[vs[1].(int)] + }).(OpenIdConnectProviderOutput) +} + +type OpenIdConnectProviderMapOutput struct{ *pulumi.OutputState } + +func (OpenIdConnectProviderMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OpenIdConnectProvider)(nil)).Elem() +} + +func (o OpenIdConnectProviderMapOutput) ToOpenIdConnectProviderMapOutput() OpenIdConnectProviderMapOutput { + return o +} + +func (o OpenIdConnectProviderMapOutput) ToOpenIdConnectProviderMapOutputWithContext(ctx context.Context) OpenIdConnectProviderMapOutput { + return o +} + +func (o OpenIdConnectProviderMapOutput) MapIndex(k pulumi.StringInput) OpenIdConnectProviderOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *OpenIdConnectProvider { + return vs[0].(map[string]*OpenIdConnectProvider)[vs[1].(string)] + }).(OpenIdConnectProviderOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*OpenIdConnectProviderInput)(nil)).Elem(), &OpenIdConnectProvider{}) + pulumi.RegisterInputType(reflect.TypeOf((*OpenIdConnectProviderArrayInput)(nil)).Elem(), OpenIdConnectProviderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*OpenIdConnectProviderMapInput)(nil)).Elem(), OpenIdConnectProviderMap{}) + pulumi.RegisterOutputType(OpenIdConnectProviderOutput{}) + pulumi.RegisterOutputType(OpenIdConnectProviderArrayOutput{}) + pulumi.RegisterOutputType(OpenIdConnectProviderMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/organizationsFeatures.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/organizationsFeatures.go new file mode 100644 index 000000000..559e7c7c3 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/organizationsFeatures.go @@ -0,0 +1,268 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages centralized root access features across AWS member accounts managed using AWS Organizations. More information about managing root access in IAM can be found in the [Centralize root access for member accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-enable-root-access.html). +// +// > **NOTE:** The AWS account utilizing this resource must be an Organizations management account. Also, you must enable trusted access for AWS Identity and Access Management in AWS Organizations. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/organizations" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := organizations.NewOrganization(ctx, "example", &organizations.OrganizationArgs{ +// AwsServiceAccessPrincipals: pulumi.StringArray{ +// pulumi.String("iam.amazonaws.com"), +// }, +// FeatureSet: pulumi.String("ALL"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewOrganizationsFeatures(ctx, "example", &iam.OrganizationsFeaturesArgs{ +// EnabledFeatures: pulumi.StringArray{ +// pulumi.String("RootCredentialsManagement"), +// pulumi.String("RootSessions"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import root access features using the `id`. For example: +// +// ```sh +// $ pulumi import aws:iam/organizationsFeatures:OrganizationsFeatures example o-1234567 +// ``` +type OrganizationsFeatures struct { + pulumi.CustomResourceState + + // List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. + EnabledFeatures pulumi.StringArrayOutput `pulumi:"enabledFeatures"` +} + +// NewOrganizationsFeatures registers a new resource with the given unique name, arguments, and options. +func NewOrganizationsFeatures(ctx *pulumi.Context, + name string, args *OrganizationsFeaturesArgs, opts ...pulumi.ResourceOption) (*OrganizationsFeatures, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.EnabledFeatures == nil { + return nil, errors.New("invalid value for required argument 'EnabledFeatures'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource OrganizationsFeatures + err := ctx.RegisterResource("aws:iam/organizationsFeatures:OrganizationsFeatures", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetOrganizationsFeatures gets an existing OrganizationsFeatures 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 GetOrganizationsFeatures(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *OrganizationsFeaturesState, opts ...pulumi.ResourceOption) (*OrganizationsFeatures, error) { + var resource OrganizationsFeatures + err := ctx.ReadResource("aws:iam/organizationsFeatures:OrganizationsFeatures", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering OrganizationsFeatures resources. +type organizationsFeaturesState struct { + // List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. + EnabledFeatures []string `pulumi:"enabledFeatures"` +} + +type OrganizationsFeaturesState struct { + // List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. + EnabledFeatures pulumi.StringArrayInput +} + +func (OrganizationsFeaturesState) ElementType() reflect.Type { + return reflect.TypeOf((*organizationsFeaturesState)(nil)).Elem() +} + +type organizationsFeaturesArgs struct { + // List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. + EnabledFeatures []string `pulumi:"enabledFeatures"` +} + +// The set of arguments for constructing a OrganizationsFeatures resource. +type OrganizationsFeaturesArgs struct { + // List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. + EnabledFeatures pulumi.StringArrayInput +} + +func (OrganizationsFeaturesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*organizationsFeaturesArgs)(nil)).Elem() +} + +type OrganizationsFeaturesInput interface { + pulumi.Input + + ToOrganizationsFeaturesOutput() OrganizationsFeaturesOutput + ToOrganizationsFeaturesOutputWithContext(ctx context.Context) OrganizationsFeaturesOutput +} + +func (*OrganizationsFeatures) ElementType() reflect.Type { + return reflect.TypeOf((**OrganizationsFeatures)(nil)).Elem() +} + +func (i *OrganizationsFeatures) ToOrganizationsFeaturesOutput() OrganizationsFeaturesOutput { + return i.ToOrganizationsFeaturesOutputWithContext(context.Background()) +} + +func (i *OrganizationsFeatures) ToOrganizationsFeaturesOutputWithContext(ctx context.Context) OrganizationsFeaturesOutput { + return pulumi.ToOutputWithContext(ctx, i).(OrganizationsFeaturesOutput) +} + +// OrganizationsFeaturesArrayInput is an input type that accepts OrganizationsFeaturesArray and OrganizationsFeaturesArrayOutput values. +// You can construct a concrete instance of `OrganizationsFeaturesArrayInput` via: +// +// OrganizationsFeaturesArray{ OrganizationsFeaturesArgs{...} } +type OrganizationsFeaturesArrayInput interface { + pulumi.Input + + ToOrganizationsFeaturesArrayOutput() OrganizationsFeaturesArrayOutput + ToOrganizationsFeaturesArrayOutputWithContext(context.Context) OrganizationsFeaturesArrayOutput +} + +type OrganizationsFeaturesArray []OrganizationsFeaturesInput + +func (OrganizationsFeaturesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OrganizationsFeatures)(nil)).Elem() +} + +func (i OrganizationsFeaturesArray) ToOrganizationsFeaturesArrayOutput() OrganizationsFeaturesArrayOutput { + return i.ToOrganizationsFeaturesArrayOutputWithContext(context.Background()) +} + +func (i OrganizationsFeaturesArray) ToOrganizationsFeaturesArrayOutputWithContext(ctx context.Context) OrganizationsFeaturesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(OrganizationsFeaturesArrayOutput) +} + +// OrganizationsFeaturesMapInput is an input type that accepts OrganizationsFeaturesMap and OrganizationsFeaturesMapOutput values. +// You can construct a concrete instance of `OrganizationsFeaturesMapInput` via: +// +// OrganizationsFeaturesMap{ "key": OrganizationsFeaturesArgs{...} } +type OrganizationsFeaturesMapInput interface { + pulumi.Input + + ToOrganizationsFeaturesMapOutput() OrganizationsFeaturesMapOutput + ToOrganizationsFeaturesMapOutputWithContext(context.Context) OrganizationsFeaturesMapOutput +} + +type OrganizationsFeaturesMap map[string]OrganizationsFeaturesInput + +func (OrganizationsFeaturesMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OrganizationsFeatures)(nil)).Elem() +} + +func (i OrganizationsFeaturesMap) ToOrganizationsFeaturesMapOutput() OrganizationsFeaturesMapOutput { + return i.ToOrganizationsFeaturesMapOutputWithContext(context.Background()) +} + +func (i OrganizationsFeaturesMap) ToOrganizationsFeaturesMapOutputWithContext(ctx context.Context) OrganizationsFeaturesMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(OrganizationsFeaturesMapOutput) +} + +type OrganizationsFeaturesOutput struct{ *pulumi.OutputState } + +func (OrganizationsFeaturesOutput) ElementType() reflect.Type { + return reflect.TypeOf((**OrganizationsFeatures)(nil)).Elem() +} + +func (o OrganizationsFeaturesOutput) ToOrganizationsFeaturesOutput() OrganizationsFeaturesOutput { + return o +} + +func (o OrganizationsFeaturesOutput) ToOrganizationsFeaturesOutputWithContext(ctx context.Context) OrganizationsFeaturesOutput { + return o +} + +// List of IAM features to enable. Valid values are `RootCredentialsManagement` and `RootSessions`. +func (o OrganizationsFeaturesOutput) EnabledFeatures() pulumi.StringArrayOutput { + return o.ApplyT(func(v *OrganizationsFeatures) pulumi.StringArrayOutput { return v.EnabledFeatures }).(pulumi.StringArrayOutput) +} + +type OrganizationsFeaturesArrayOutput struct{ *pulumi.OutputState } + +func (OrganizationsFeaturesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*OrganizationsFeatures)(nil)).Elem() +} + +func (o OrganizationsFeaturesArrayOutput) ToOrganizationsFeaturesArrayOutput() OrganizationsFeaturesArrayOutput { + return o +} + +func (o OrganizationsFeaturesArrayOutput) ToOrganizationsFeaturesArrayOutputWithContext(ctx context.Context) OrganizationsFeaturesArrayOutput { + return o +} + +func (o OrganizationsFeaturesArrayOutput) Index(i pulumi.IntInput) OrganizationsFeaturesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *OrganizationsFeatures { + return vs[0].([]*OrganizationsFeatures)[vs[1].(int)] + }).(OrganizationsFeaturesOutput) +} + +type OrganizationsFeaturesMapOutput struct{ *pulumi.OutputState } + +func (OrganizationsFeaturesMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*OrganizationsFeatures)(nil)).Elem() +} + +func (o OrganizationsFeaturesMapOutput) ToOrganizationsFeaturesMapOutput() OrganizationsFeaturesMapOutput { + return o +} + +func (o OrganizationsFeaturesMapOutput) ToOrganizationsFeaturesMapOutputWithContext(ctx context.Context) OrganizationsFeaturesMapOutput { + return o +} + +func (o OrganizationsFeaturesMapOutput) MapIndex(k pulumi.StringInput) OrganizationsFeaturesOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *OrganizationsFeatures { + return vs[0].(map[string]*OrganizationsFeatures)[vs[1].(string)] + }).(OrganizationsFeaturesOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*OrganizationsFeaturesInput)(nil)).Elem(), &OrganizationsFeatures{}) + pulumi.RegisterInputType(reflect.TypeOf((*OrganizationsFeaturesArrayInput)(nil)).Elem(), OrganizationsFeaturesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*OrganizationsFeaturesMapInput)(nil)).Elem(), OrganizationsFeaturesMap{}) + pulumi.RegisterOutputType(OrganizationsFeaturesOutput{}) + pulumi.RegisterOutputType(OrganizationsFeaturesArrayOutput{}) + pulumi.RegisterOutputType(OrganizationsFeaturesMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policy.go new file mode 100644 index 000000000..f45ce6a7d --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policy.go @@ -0,0 +1,403 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM policy. +// +// > **NOTE:** We suggest using explicit JSON encoding or `aws.iam.getPolicyDocument` when assigning a value to `policy`. They seamlessly translate configuration to JSON, enabling you to maintain consistency within your configuration without the need for context switches. Also, you can sidestep potential complications arising from formatting discrepancies, whitespace inconsistencies, and other nuances inherent to JSON. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "ec2:Describe*", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = iam.NewPolicy(ctx, "policy", &iam.PolicyArgs{ +// Name: pulumi.String("test_policy"), +// Path: pulumi.String("/"), +// Description: pulumi.String("My test policy"), +// Policy: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Policies using the `arn`. For example: +// +// ```sh +// $ pulumi import aws:iam/policy:Policy administrator arn:aws:iam::123456789012:policy/UsersManageOwnCredentials +// ``` +type Policy struct { + pulumi.CustomResourceState + + // ARN assigned by AWS to this policy. + Arn pulumi.StringOutput `pulumi:"arn"` + // Number of entities (users, groups, and roles) that the policy is attached to. + AttachmentCount pulumi.IntOutput `pulumi:"attachmentCount"` + // Description of the IAM policy. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Name of the policy. If omitted, the provider will assign a random, unique name. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // Path in which to create the policy. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path pulumi.StringPtrOutput `pulumi:"path"` + // Policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide + Policy pulumi.StringOutput `pulumi:"policy"` + // Policy's ID. + PolicyId pulumi.StringOutput `pulumi:"policyId"` + // Map of resource tags for the IAM Policy. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` +} + +// NewPolicy registers a new resource with the given unique name, arguments, and options. +func NewPolicy(ctx *pulumi.Context, + name string, args *PolicyArgs, opts ...pulumi.ResourceOption) (*Policy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Policy == nil { + return nil, errors.New("invalid value for required argument 'Policy'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Policy + err := ctx.RegisterResource("aws:iam/policy:Policy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetPolicy gets an existing Policy 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 GetPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *PolicyState, opts ...pulumi.ResourceOption) (*Policy, error) { + var resource Policy + err := ctx.ReadResource("aws:iam/policy:Policy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Policy resources. +type policyState struct { + // ARN assigned by AWS to this policy. + Arn *string `pulumi:"arn"` + // Number of entities (users, groups, and roles) that the policy is attached to. + AttachmentCount *int `pulumi:"attachmentCount"` + // Description of the IAM policy. + Description *string `pulumi:"description"` + // Name of the policy. If omitted, the provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Path in which to create the policy. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path *string `pulumi:"path"` + // Policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide + Policy interface{} `pulumi:"policy"` + // Policy's ID. + PolicyId *string `pulumi:"policyId"` + // Map of resource tags for the IAM Policy. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` +} + +type PolicyState struct { + // ARN assigned by AWS to this policy. + Arn pulumi.StringPtrInput + // Number of entities (users, groups, and roles) that the policy is attached to. + AttachmentCount pulumi.IntPtrInput + // Description of the IAM policy. + Description pulumi.StringPtrInput + // Name of the policy. If omitted, the provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Path in which to create the policy. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path pulumi.StringPtrInput + // Policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide + Policy pulumi.Input + // Policy's ID. + PolicyId pulumi.StringPtrInput + // Map of resource tags for the IAM Policy. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput +} + +func (PolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*policyState)(nil)).Elem() +} + +type policyArgs struct { + // Description of the IAM policy. + Description *string `pulumi:"description"` + // Name of the policy. If omitted, the provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Path in which to create the policy. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path *string `pulumi:"path"` + // Policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide + Policy interface{} `pulumi:"policy"` + // Map of resource tags for the IAM Policy. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a Policy resource. +type PolicyArgs struct { + // Description of the IAM policy. + Description pulumi.StringPtrInput + // Name of the policy. If omitted, the provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Path in which to create the policy. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path pulumi.StringPtrInput + // Policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide + Policy pulumi.Input + // Map of resource tags for the IAM Policy. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (PolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*policyArgs)(nil)).Elem() +} + +type PolicyInput interface { + pulumi.Input + + ToPolicyOutput() PolicyOutput + ToPolicyOutputWithContext(ctx context.Context) PolicyOutput +} + +func (*Policy) ElementType() reflect.Type { + return reflect.TypeOf((**Policy)(nil)).Elem() +} + +func (i *Policy) ToPolicyOutput() PolicyOutput { + return i.ToPolicyOutputWithContext(context.Background()) +} + +func (i *Policy) ToPolicyOutputWithContext(ctx context.Context) PolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(PolicyOutput) +} + +// PolicyArrayInput is an input type that accepts PolicyArray and PolicyArrayOutput values. +// You can construct a concrete instance of `PolicyArrayInput` via: +// +// PolicyArray{ PolicyArgs{...} } +type PolicyArrayInput interface { + pulumi.Input + + ToPolicyArrayOutput() PolicyArrayOutput + ToPolicyArrayOutputWithContext(context.Context) PolicyArrayOutput +} + +type PolicyArray []PolicyInput + +func (PolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Policy)(nil)).Elem() +} + +func (i PolicyArray) ToPolicyArrayOutput() PolicyArrayOutput { + return i.ToPolicyArrayOutputWithContext(context.Background()) +} + +func (i PolicyArray) ToPolicyArrayOutputWithContext(ctx context.Context) PolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(PolicyArrayOutput) +} + +// PolicyMapInput is an input type that accepts PolicyMap and PolicyMapOutput values. +// You can construct a concrete instance of `PolicyMapInput` via: +// +// PolicyMap{ "key": PolicyArgs{...} } +type PolicyMapInput interface { + pulumi.Input + + ToPolicyMapOutput() PolicyMapOutput + ToPolicyMapOutputWithContext(context.Context) PolicyMapOutput +} + +type PolicyMap map[string]PolicyInput + +func (PolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Policy)(nil)).Elem() +} + +func (i PolicyMap) ToPolicyMapOutput() PolicyMapOutput { + return i.ToPolicyMapOutputWithContext(context.Background()) +} + +func (i PolicyMap) ToPolicyMapOutputWithContext(ctx context.Context) PolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(PolicyMapOutput) +} + +type PolicyOutput struct{ *pulumi.OutputState } + +func (PolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Policy)(nil)).Elem() +} + +func (o PolicyOutput) ToPolicyOutput() PolicyOutput { + return o +} + +func (o PolicyOutput) ToPolicyOutputWithContext(ctx context.Context) PolicyOutput { + return o +} + +// ARN assigned by AWS to this policy. +func (o PolicyOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Number of entities (users, groups, and roles) that the policy is attached to. +func (o PolicyOutput) AttachmentCount() pulumi.IntOutput { + return o.ApplyT(func(v *Policy) pulumi.IntOutput { return v.AttachmentCount }).(pulumi.IntOutput) +} + +// Description of the IAM policy. +func (o PolicyOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Policy) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Name of the policy. If omitted, the provider will assign a random, unique name. +func (o PolicyOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o PolicyOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// Path in which to create the policy. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. +func (o PolicyOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Policy) pulumi.StringPtrOutput { return v.Path }).(pulumi.StringPtrOutput) +} + +// Policy document. This is a JSON formatted string. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide +func (o PolicyOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +// Policy's ID. +func (o PolicyOutput) PolicyId() pulumi.StringOutput { + return o.ApplyT(func(v *Policy) pulumi.StringOutput { return v.PolicyId }).(pulumi.StringOutput) +} + +// Map of resource tags for the IAM Policy. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o PolicyOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Policy) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o PolicyOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *Policy) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +type PolicyArrayOutput struct{ *pulumi.OutputState } + +func (PolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Policy)(nil)).Elem() +} + +func (o PolicyArrayOutput) ToPolicyArrayOutput() PolicyArrayOutput { + return o +} + +func (o PolicyArrayOutput) ToPolicyArrayOutputWithContext(ctx context.Context) PolicyArrayOutput { + return o +} + +func (o PolicyArrayOutput) Index(i pulumi.IntInput) PolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Policy { + return vs[0].([]*Policy)[vs[1].(int)] + }).(PolicyOutput) +} + +type PolicyMapOutput struct{ *pulumi.OutputState } + +func (PolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Policy)(nil)).Elem() +} + +func (o PolicyMapOutput) ToPolicyMapOutput() PolicyMapOutput { + return o +} + +func (o PolicyMapOutput) ToPolicyMapOutputWithContext(ctx context.Context) PolicyMapOutput { + return o +} + +func (o PolicyMapOutput) MapIndex(k pulumi.StringInput) PolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Policy { + return vs[0].(map[string]*Policy)[vs[1].(string)] + }).(PolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*PolicyInput)(nil)).Elem(), &Policy{}) + pulumi.RegisterInputType(reflect.TypeOf((*PolicyArrayInput)(nil)).Elem(), PolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*PolicyMapInput)(nil)).Elem(), PolicyMap{}) + pulumi.RegisterOutputType(PolicyOutput{}) + pulumi.RegisterOutputType(PolicyArrayOutput{}) + pulumi.RegisterOutputType(PolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policyAttachment.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policyAttachment.go new file mode 100644 index 000000000..41c083d6f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/policyAttachment.go @@ -0,0 +1,387 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Attaches a Managed IAM Policy to user(s), role(s), and/or group(s) +// +// !> **WARNING:** The iam.PolicyAttachment resource creates **exclusive** attachments of IAM policies. Across the entire AWS account, all of the users/roles/groups to which a single policy is attached must be declared by a single iam.PolicyAttachment resource. This means that even any users/roles/groups that have the attached policy via any other mechanism (including other resources managed by this provider) will have that attached policy revoked by this resource. Consider `iam.RolePolicyAttachment`, `iam.UserPolicyAttachment`, or `iam.GroupPolicyAttachment` instead. These resources do not enforce exclusive attachment of an IAM policy. +// +// > **NOTE:** The usage of this resource conflicts with the `iam.GroupPolicyAttachment`, `iam.RolePolicyAttachment`, and `iam.UserPolicyAttachment` resources and will permanently show a difference if both are defined. +// +// > **NOTE:** For a given role, this resource is incompatible with using the `iam.Role` resource `managedPolicyArns` argument. When using that argument and this resource, both will attempt to manage the role's managed policy attachments and the provider will show a permanent difference. +// +// > **NOTE:** To ensure Pulumi correctly manages dependencies during updates, use a reference to the IAM resource when defining the `policyArn` for `iam.PolicyAttachment`, rather than constructing the ARN directly. For example, use `policyArn = aws_iam_policy.example.arn` instead of `policyArn = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:policy/Example"`. Failing to do so may lead to errors like `DeleteConflict: Cannot delete a policy attached to entities` or `NoSuchEntity`. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// user, err := iam.NewUser(ctx, "user", &iam.UserArgs{ +// Name: pulumi.String("test-user"), +// }) +// if err != nil { +// return err +// } +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "ec2.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// role, err := iam.NewRole(ctx, "role", &iam.RoleArgs{ +// Name: pulumi.String("test-role"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// group, err := iam.NewGroup(ctx, "group", &iam.GroupArgs{ +// Name: pulumi.String("test-group"), +// }) +// if err != nil { +// return err +// } +// policy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "ec2:Describe*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// policyPolicy, err := iam.NewPolicy(ctx, "policy", &iam.PolicyArgs{ +// Name: pulumi.String("test-policy"), +// Description: pulumi.String("A test policy"), +// Policy: pulumi.String(policy.Json), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewPolicyAttachment(ctx, "test-attach", &iam.PolicyAttachmentArgs{ +// Name: pulumi.String("test-attachment"), +// Users: pulumi.Array{ +// user.Name, +// }, +// Roles: pulumi.Array{ +// role.Name, +// }, +// Groups: pulumi.Array{ +// group.Name, +// }, +// PolicyArn: policyPolicy.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type PolicyAttachment struct { + pulumi.CustomResourceState + + // Group(s) the policy should be applied to. + Groups pulumi.StringArrayOutput `pulumi:"groups"` + // Name of the attachment. This cannot be an empty string. + Name pulumi.StringOutput `pulumi:"name"` + // ARN of the policy you want to apply. Typically this should be a reference to the ARN of another resource to ensure dependency ordering, such as `aws_iam_policy.example.arn`. + PolicyArn pulumi.StringOutput `pulumi:"policyArn"` + // Role(s) the policy should be applied to. + Roles pulumi.StringArrayOutput `pulumi:"roles"` + // User(s) the policy should be applied to. + Users pulumi.StringArrayOutput `pulumi:"users"` +} + +// NewPolicyAttachment registers a new resource with the given unique name, arguments, and options. +func NewPolicyAttachment(ctx *pulumi.Context, + name string, args *PolicyAttachmentArgs, opts ...pulumi.ResourceOption) (*PolicyAttachment, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyArn == nil { + return nil, errors.New("invalid value for required argument 'PolicyArn'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource PolicyAttachment + err := ctx.RegisterResource("aws:iam/policyAttachment:PolicyAttachment", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetPolicyAttachment gets an existing PolicyAttachment 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 GetPolicyAttachment(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *PolicyAttachmentState, opts ...pulumi.ResourceOption) (*PolicyAttachment, error) { + var resource PolicyAttachment + err := ctx.ReadResource("aws:iam/policyAttachment:PolicyAttachment", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering PolicyAttachment resources. +type policyAttachmentState struct { + // Group(s) the policy should be applied to. + Groups []interface{} `pulumi:"groups"` + // Name of the attachment. This cannot be an empty string. + Name *string `pulumi:"name"` + // ARN of the policy you want to apply. Typically this should be a reference to the ARN of another resource to ensure dependency ordering, such as `aws_iam_policy.example.arn`. + PolicyArn *string `pulumi:"policyArn"` + // Role(s) the policy should be applied to. + Roles []interface{} `pulumi:"roles"` + // User(s) the policy should be applied to. + Users []interface{} `pulumi:"users"` +} + +type PolicyAttachmentState struct { + // Group(s) the policy should be applied to. + Groups pulumi.ArrayInput + // Name of the attachment. This cannot be an empty string. + Name pulumi.StringPtrInput + // ARN of the policy you want to apply. Typically this should be a reference to the ARN of another resource to ensure dependency ordering, such as `aws_iam_policy.example.arn`. + PolicyArn pulumi.StringPtrInput + // Role(s) the policy should be applied to. + Roles pulumi.ArrayInput + // User(s) the policy should be applied to. + Users pulumi.ArrayInput +} + +func (PolicyAttachmentState) ElementType() reflect.Type { + return reflect.TypeOf((*policyAttachmentState)(nil)).Elem() +} + +type policyAttachmentArgs struct { + // Group(s) the policy should be applied to. + Groups []interface{} `pulumi:"groups"` + // Name of the attachment. This cannot be an empty string. + Name *string `pulumi:"name"` + // ARN of the policy you want to apply. Typically this should be a reference to the ARN of another resource to ensure dependency ordering, such as `aws_iam_policy.example.arn`. + PolicyArn string `pulumi:"policyArn"` + // Role(s) the policy should be applied to. + Roles []interface{} `pulumi:"roles"` + // User(s) the policy should be applied to. + Users []interface{} `pulumi:"users"` +} + +// The set of arguments for constructing a PolicyAttachment resource. +type PolicyAttachmentArgs struct { + // Group(s) the policy should be applied to. + Groups pulumi.ArrayInput + // Name of the attachment. This cannot be an empty string. + Name pulumi.StringPtrInput + // ARN of the policy you want to apply. Typically this should be a reference to the ARN of another resource to ensure dependency ordering, such as `aws_iam_policy.example.arn`. + PolicyArn pulumi.StringInput + // Role(s) the policy should be applied to. + Roles pulumi.ArrayInput + // User(s) the policy should be applied to. + Users pulumi.ArrayInput +} + +func (PolicyAttachmentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*policyAttachmentArgs)(nil)).Elem() +} + +type PolicyAttachmentInput interface { + pulumi.Input + + ToPolicyAttachmentOutput() PolicyAttachmentOutput + ToPolicyAttachmentOutputWithContext(ctx context.Context) PolicyAttachmentOutput +} + +func (*PolicyAttachment) ElementType() reflect.Type { + return reflect.TypeOf((**PolicyAttachment)(nil)).Elem() +} + +func (i *PolicyAttachment) ToPolicyAttachmentOutput() PolicyAttachmentOutput { + return i.ToPolicyAttachmentOutputWithContext(context.Background()) +} + +func (i *PolicyAttachment) ToPolicyAttachmentOutputWithContext(ctx context.Context) PolicyAttachmentOutput { + return pulumi.ToOutputWithContext(ctx, i).(PolicyAttachmentOutput) +} + +// PolicyAttachmentArrayInput is an input type that accepts PolicyAttachmentArray and PolicyAttachmentArrayOutput values. +// You can construct a concrete instance of `PolicyAttachmentArrayInput` via: +// +// PolicyAttachmentArray{ PolicyAttachmentArgs{...} } +type PolicyAttachmentArrayInput interface { + pulumi.Input + + ToPolicyAttachmentArrayOutput() PolicyAttachmentArrayOutput + ToPolicyAttachmentArrayOutputWithContext(context.Context) PolicyAttachmentArrayOutput +} + +type PolicyAttachmentArray []PolicyAttachmentInput + +func (PolicyAttachmentArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*PolicyAttachment)(nil)).Elem() +} + +func (i PolicyAttachmentArray) ToPolicyAttachmentArrayOutput() PolicyAttachmentArrayOutput { + return i.ToPolicyAttachmentArrayOutputWithContext(context.Background()) +} + +func (i PolicyAttachmentArray) ToPolicyAttachmentArrayOutputWithContext(ctx context.Context) PolicyAttachmentArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(PolicyAttachmentArrayOutput) +} + +// PolicyAttachmentMapInput is an input type that accepts PolicyAttachmentMap and PolicyAttachmentMapOutput values. +// You can construct a concrete instance of `PolicyAttachmentMapInput` via: +// +// PolicyAttachmentMap{ "key": PolicyAttachmentArgs{...} } +type PolicyAttachmentMapInput interface { + pulumi.Input + + ToPolicyAttachmentMapOutput() PolicyAttachmentMapOutput + ToPolicyAttachmentMapOutputWithContext(context.Context) PolicyAttachmentMapOutput +} + +type PolicyAttachmentMap map[string]PolicyAttachmentInput + +func (PolicyAttachmentMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*PolicyAttachment)(nil)).Elem() +} + +func (i PolicyAttachmentMap) ToPolicyAttachmentMapOutput() PolicyAttachmentMapOutput { + return i.ToPolicyAttachmentMapOutputWithContext(context.Background()) +} + +func (i PolicyAttachmentMap) ToPolicyAttachmentMapOutputWithContext(ctx context.Context) PolicyAttachmentMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(PolicyAttachmentMapOutput) +} + +type PolicyAttachmentOutput struct{ *pulumi.OutputState } + +func (PolicyAttachmentOutput) ElementType() reflect.Type { + return reflect.TypeOf((**PolicyAttachment)(nil)).Elem() +} + +func (o PolicyAttachmentOutput) ToPolicyAttachmentOutput() PolicyAttachmentOutput { + return o +} + +func (o PolicyAttachmentOutput) ToPolicyAttachmentOutputWithContext(ctx context.Context) PolicyAttachmentOutput { + return o +} + +// Group(s) the policy should be applied to. +func (o PolicyAttachmentOutput) Groups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *PolicyAttachment) pulumi.StringArrayOutput { return v.Groups }).(pulumi.StringArrayOutput) +} + +// Name of the attachment. This cannot be an empty string. +func (o PolicyAttachmentOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *PolicyAttachment) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// ARN of the policy you want to apply. Typically this should be a reference to the ARN of another resource to ensure dependency ordering, such as `aws_iam_policy.example.arn`. +func (o PolicyAttachmentOutput) PolicyArn() pulumi.StringOutput { + return o.ApplyT(func(v *PolicyAttachment) pulumi.StringOutput { return v.PolicyArn }).(pulumi.StringOutput) +} + +// Role(s) the policy should be applied to. +func (o PolicyAttachmentOutput) Roles() pulumi.StringArrayOutput { + return o.ApplyT(func(v *PolicyAttachment) pulumi.StringArrayOutput { return v.Roles }).(pulumi.StringArrayOutput) +} + +// User(s) the policy should be applied to. +func (o PolicyAttachmentOutput) Users() pulumi.StringArrayOutput { + return o.ApplyT(func(v *PolicyAttachment) pulumi.StringArrayOutput { return v.Users }).(pulumi.StringArrayOutput) +} + +type PolicyAttachmentArrayOutput struct{ *pulumi.OutputState } + +func (PolicyAttachmentArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*PolicyAttachment)(nil)).Elem() +} + +func (o PolicyAttachmentArrayOutput) ToPolicyAttachmentArrayOutput() PolicyAttachmentArrayOutput { + return o +} + +func (o PolicyAttachmentArrayOutput) ToPolicyAttachmentArrayOutputWithContext(ctx context.Context) PolicyAttachmentArrayOutput { + return o +} + +func (o PolicyAttachmentArrayOutput) Index(i pulumi.IntInput) PolicyAttachmentOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *PolicyAttachment { + return vs[0].([]*PolicyAttachment)[vs[1].(int)] + }).(PolicyAttachmentOutput) +} + +type PolicyAttachmentMapOutput struct{ *pulumi.OutputState } + +func (PolicyAttachmentMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*PolicyAttachment)(nil)).Elem() +} + +func (o PolicyAttachmentMapOutput) ToPolicyAttachmentMapOutput() PolicyAttachmentMapOutput { + return o +} + +func (o PolicyAttachmentMapOutput) ToPolicyAttachmentMapOutputWithContext(ctx context.Context) PolicyAttachmentMapOutput { + return o +} + +func (o PolicyAttachmentMapOutput) MapIndex(k pulumi.StringInput) PolicyAttachmentOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *PolicyAttachment { + return vs[0].(map[string]*PolicyAttachment)[vs[1].(string)] + }).(PolicyAttachmentOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*PolicyAttachmentInput)(nil)).Elem(), &PolicyAttachment{}) + pulumi.RegisterInputType(reflect.TypeOf((*PolicyAttachmentArrayInput)(nil)).Elem(), PolicyAttachmentArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*PolicyAttachmentMapInput)(nil)).Elem(), PolicyAttachmentMap{}) + pulumi.RegisterOutputType(PolicyAttachmentOutput{}) + pulumi.RegisterOutputType(PolicyAttachmentArrayOutput{}) + pulumi.RegisterOutputType(PolicyAttachmentMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiEnums.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiEnums.go new file mode 100644 index 000000000..faf55280b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiEnums.go @@ -0,0 +1,2609 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type ManagedPolicy string + +const ( + ManagedPolicyAPIGatewayServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/APIGatewayServiceRolePolicy") + ManagedPolicyAWSAccountActivityAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAccountActivityAccess") + ManagedPolicyAWSAccountManagementFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAccountManagementFullAccess") + ManagedPolicyAWSAccountManagementReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAccountManagementReadOnlyAccess") + ManagedPolicyAWSAccountUsageReportAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAccountUsageReportAccess") + ManagedPolicyAWSAgentlessDiscoveryService = ManagedPolicy("arn:aws:iam::aws:policy/AWSAgentlessDiscoveryService") + ManagedPolicyAWSAppFabricFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppFabricFullAccess") + ManagedPolicyAWSAppFabricReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppFabricReadOnlyAccess") + ManagedPolicyAWSAppFabricServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSAppFabricServiceRolePolicy") + ManagedPolicyAWSAppMeshEnvoyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppMeshEnvoyAccess") + ManagedPolicyAWSAppMeshFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppMeshFullAccess") + ManagedPolicyAWSAppMeshPreviewEnvoyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppMeshPreviewEnvoyAccess") + ManagedPolicyAWSAppMeshPreviewServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSAppMeshPreviewServiceRolePolicy") + ManagedPolicyAWSAppMeshReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppMeshReadOnly") + ManagedPolicyAWSAppMeshServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSAppMeshServiceRolePolicy") + ManagedPolicyAWSAppRunnerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppRunnerFullAccess") + ManagedPolicyAWSAppRunnerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppRunnerReadOnlyAccess") + ManagedPolicyAWSAppRunnerServicePolicyForECRAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSAppRunnerServicePolicyForECRAccess") + ManagedPolicyAWSAppSyncAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppSyncAdministrator") + ManagedPolicyAWSAppSyncInvokeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppSyncInvokeFullAccess") + ManagedPolicyAWSAppSyncPushToCloudWatchLogs = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSAppSyncPushToCloudWatchLogs") + ManagedPolicyAWSAppSyncSchemaAuthor = ManagedPolicy("arn:aws:iam::aws:policy/AWSAppSyncSchemaAuthor") + ManagedPolicyAWSAppSyncServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSAppSyncServiceRolePolicy") + ManagedPolicyAWSApplicationAutoScalingCustomResourcePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoScalingCustomResourcePolicy") + ManagedPolicyAWSApplicationAutoscalingAppStreamFleetPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingAppStreamFleetPolicy") + ManagedPolicyAWSApplicationAutoscalingCassandraTablePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingCassandraTablePolicy") + ManagedPolicyAWSApplicationAutoscalingComprehendEndpointPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingComprehendEndpointPolicy") + ManagedPolicyAWSApplicationAutoscalingDynamoDBTablePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingDynamoDBTablePolicy") + ManagedPolicyAWSApplicationAutoscalingEC2SpotFleetRequestPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingEC2SpotFleetRequestPolicy") + ManagedPolicyAWSApplicationAutoscalingECSServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingECSServicePolicy") + ManagedPolicyAWSApplicationAutoscalingEMRInstanceGroupPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingEMRInstanceGroupPolicy") + ManagedPolicyAWSApplicationAutoscalingElastiCacheRGPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingElastiCacheRGPolicy") + ManagedPolicyAWSApplicationAutoscalingKafkaClusterPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingKafkaClusterPolicy") + ManagedPolicyAWSApplicationAutoscalingLambdaConcurrencyPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingLambdaConcurrencyPolicy") + ManagedPolicyAWSApplicationAutoscalingNeptuneClusterPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingNeptuneClusterPolicy") + ManagedPolicyAWSApplicationAutoscalingRDSClusterPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingRDSClusterPolicy") + ManagedPolicyAWSApplicationAutoscalingSageMakerEndpointPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationAutoscalingSageMakerEndpointPolicy") + ManagedPolicyAWSApplicationDiscoveryAgentAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationDiscoveryAgentAccess") + ManagedPolicyAWSApplicationDiscoveryAgentlessCollectorAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationDiscoveryAgentlessCollectorAccess") + ManagedPolicyAWSApplicationDiscoveryServiceFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationDiscoveryServiceFullAccess") + ManagedPolicyAWSApplicationMigrationAgentInstallationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationAgentInstallationPolicy") + ManagedPolicyAWSApplicationMigrationAgentPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationAgentPolicy") + ManagedPolicy_AWSApplicationMigrationAgentPolicy_v2 = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationAgentPolicy_v2") + ManagedPolicyAWSApplicationMigrationConversionServerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationConversionServerPolicy") + ManagedPolicyAWSApplicationMigrationEC2Access = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationEC2Access") + ManagedPolicyAWSApplicationMigrationFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationFullAccess") + ManagedPolicyAWSApplicationMigrationMGHAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationMGHAccess") + ManagedPolicyAWSApplicationMigrationReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationReadOnlyAccess") + ManagedPolicyAWSApplicationMigrationReplicationServerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSApplicationMigrationReplicationServerPolicy") + ManagedPolicyAWSApplicationMigrationSSMAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationSSMAccess") + ManagedPolicyAWSApplicationMigrationServiceEc2InstancePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationServiceEc2InstancePolicy") + ManagedPolicyAWSApplicationMigrationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSApplicationMigrationServiceRolePolicy") + ManagedPolicyAWSApplicationMigrationVCenterClientPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSApplicationMigrationVCenterClientPolicy") + ManagedPolicyAWSArtifactAccountSync = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSArtifactAccountSync") + ManagedPolicyAWSArtifactReportsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSArtifactReportsReadOnlyAccess") + ManagedPolicyAWSArtifactServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSArtifactServiceRolePolicy") + ManagedPolicyAWSAuditManagerAdministratorAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSAuditManagerAdministratorAccess") + ManagedPolicyAWSAuditManagerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSAuditManagerServiceRolePolicy") + ManagedPolicyAWSAutoScalingPlansEC2AutoScalingPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSAutoScalingPlansEC2AutoScalingPolicy") + ManagedPolicyAWSBackupAuditAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupAuditAccess") + ManagedPolicyAWSBackupDataTransferAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupDataTransferAccess") + ManagedPolicyAWSBackupFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupFullAccess") + ManagedPolicyAWSBackupGatewayServiceRolePolicyForVirtualMachineMetadataSync = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSBackupGatewayServiceRolePolicyForVirtualMachineMetadataSync") + ManagedPolicyAWSBackupOperatorAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupOperatorAccess") + ManagedPolicyAWSBackupOrganizationAdminAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupOrganizationAdminAccess") + ManagedPolicyAWSBackupRestoreAccessForSAPHANA = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupRestoreAccessForSAPHANA") + ManagedPolicyAWSBackupServiceLinkedRolePolicyForBackup = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSBackupServiceLinkedRolePolicyForBackup") + ManagedPolicyAWSBackupServiceLinkedRolePolicyForBackupTest = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSBackupServiceLinkedRolePolicyForBackupTest") + ManagedPolicyAWSBackupServiceRolePolicyForBackup = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup") + ManagedPolicyAWSBackupServiceRolePolicyForRestores = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForRestores") + ManagedPolicyAWSBackupServiceRolePolicyForS3Backup = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupServiceRolePolicyForS3Backup") + ManagedPolicyAWSBackupServiceRolePolicyForS3Restore = ManagedPolicy("arn:aws:iam::aws:policy/AWSBackupServiceRolePolicyForS3Restore") + ManagedPolicyAWSBatchFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBatchFullAccess") + ManagedPolicyAWSBatchServiceEventTargetRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSBatchServiceEventTargetRole") + ManagedPolicyAWSBatchServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSBatchServiceRole") + ManagedPolicyAWSBillingConductorFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBillingConductorFullAccess") + ManagedPolicyAWSBillingConductorReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBillingConductorReadOnlyAccess") + ManagedPolicyAWSBillingReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBillingReadOnlyAccess") + ManagedPolicyAWSBudgetsActionsWithAWSResourceControlAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBudgetsActionsWithAWSResourceControlAccess") + ManagedPolicy_AWSBudgetsActions_RolePolicyForResourceAdministrationWithSSM = ManagedPolicy("arn:aws:iam::aws:policy/AWSBudgetsActions_RolePolicyForResourceAdministrationWithSSM") + ManagedPolicyAWSBudgetsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBudgetsReadOnlyAccess") + ManagedPolicyAWSBugBustFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBugBustFullAccess") + ManagedPolicyAWSBugBustPlayerAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSBugBustPlayerAccess") + ManagedPolicyAWSBugBustServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSBugBustServiceRolePolicy") + ManagedPolicyAWSCertificateManagerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCertificateManagerFullAccess") + ManagedPolicyAWSCertificateManagerPrivateCAAuditor = ManagedPolicy("arn:aws:iam::aws:policy/AWSCertificateManagerPrivateCAAuditor") + ManagedPolicyAWSCertificateManagerPrivateCAFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCertificateManagerPrivateCAFullAccess") + ManagedPolicyAWSCertificateManagerPrivateCAPrivilegedUser = ManagedPolicy("arn:aws:iam::aws:policy/AWSCertificateManagerPrivateCAPrivilegedUser") + ManagedPolicyAWSCertificateManagerPrivateCAReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSCertificateManagerPrivateCAReadOnly") + ManagedPolicyAWSCertificateManagerPrivateCAUser = ManagedPolicy("arn:aws:iam::aws:policy/AWSCertificateManagerPrivateCAUser") + ManagedPolicyAWSCertificateManagerReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSCertificateManagerReadOnly") + ManagedPolicyAWSChatbotServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSChatbotServiceLinkedRolePolicy") + ManagedPolicyAWSCleanRoomsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCleanRoomsFullAccess") + ManagedPolicyAWSCleanRoomsFullAccessNoQuerying = ManagedPolicy("arn:aws:iam::aws:policy/AWSCleanRoomsFullAccessNoQuerying") + ManagedPolicyAWSCleanRoomsMLFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCleanRoomsMLFullAccess") + ManagedPolicyAWSCleanRoomsMLReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCleanRoomsMLReadOnlyAccess") + ManagedPolicyAWSCleanRoomsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCleanRoomsReadOnlyAccess") + ManagedPolicyAWSCloud9Administrator = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloud9Administrator") + ManagedPolicyAWSCloud9EnvironmentMember = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloud9EnvironmentMember") + ManagedPolicyAWSCloud9SSMInstanceProfile = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloud9SSMInstanceProfile") + ManagedPolicyAWSCloud9ServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSCloud9ServiceRolePolicy") + ManagedPolicyAWSCloud9User = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloud9User") + ManagedPolicyAWSCloudFormationFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudFormationFullAccess") + ManagedPolicyAWSCloudFormationReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudFormationReadOnlyAccess") + ManagedPolicyAWSCloudFrontLogger = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSCloudFrontLogger") + ManagedPolicyAWSCloudHSMFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudHSMFullAccess") + ManagedPolicyAWSCloudHSMReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudHSMReadOnlyAccess") + ManagedPolicyAWSCloudHSMRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSCloudHSMRole") + // Deprecated: No longer supported. Use CloudTrail_FullAccess instead. + ManagedPolicyAWSCloudTrailFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudTrailFullAccess") + // Deprecated: No longer supported. Use CloudTrail_ReadOnlyAccess instead. + ManagedPolicyAWSCloudTrailReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudTrailReadOnlyAccess") + // Deprecated: No longer supported. Use CloudWatchLambdaInsightsExecutionRolePolicy instead. + ManagedPolicyAWSCloudWatchLambdaInsightsExecutionRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudWatchLambdaInsightsExecutionRolePolicy") + ManagedPolicyAWSCloudMapDiscoverInstanceAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudMapDiscoverInstanceAccess") + ManagedPolicyAWSCloudMapFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudMapFullAccess") + ManagedPolicyAWSCloudMapReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudMapReadOnlyAccess") + ManagedPolicyAWSCloudMapRegisterInstanceAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudMapRegisterInstanceAccess") + ManagedPolicyAWSCloudShellFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudShellFullAccess") + ManagedPolicy_CloudTrail_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudTrail_FullAccess") + ManagedPolicy_CloudTrail_ReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCloudTrail_ReadOnlyAccess") + ManagedPolicy_AWSCloudWatchAlarms_ActionSSMIncidentsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSCloudWatchAlarms_ActionSSMIncidentsServiceRolePolicy") + ManagedPolicyAWSCodeArtifactAdminAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeArtifactAdminAccess") + ManagedPolicyAWSCodeArtifactReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeArtifactReadOnlyAccess") + ManagedPolicyAWSCodeBuildAdminAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeBuildAdminAccess") + ManagedPolicyAWSCodeBuildDeveloperAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeBuildDeveloperAccess") + ManagedPolicyAWSCodeBuildReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeBuildReadOnlyAccess") + ManagedPolicyAWSCodeCommitFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeCommitFullAccess") + ManagedPolicyAWSCodeCommitPowerUser = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeCommitPowerUser") + ManagedPolicyAWSCodeCommitReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeCommitReadOnly") + ManagedPolicyAWSCodeDeployDeployerAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeDeployDeployerAccess") + ManagedPolicyAWSCodeDeployFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeDeployFullAccess") + ManagedPolicyAWSCodeDeployReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeDeployReadOnlyAccess") + ManagedPolicyAWSCodeDeployRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSCodeDeployRole") + ManagedPolicyAWSCodeDeployRoleForCloudFormation = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForCloudFormation") + ManagedPolicyAWSCodeDeployRoleForECS = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeDeployRoleForECS") + ManagedPolicyAWSCodeDeployRoleForECSLimited = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeDeployRoleForECSLimited") + ManagedPolicyAWSCodeDeployRoleForLambda = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambda") + ManagedPolicyAWSCodeDeployRoleForLambdaLimited = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSCodeDeployRoleForLambdaLimited") + ManagedPolicyAWSCodePipelineApproverAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodePipelineApproverAccess") + ManagedPolicyAWSCodePipelineCustomActionAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodePipelineCustomActionAccess") + // Deprecated: No longer supported. Use CodePipeline_FullAccess instead. + ManagedPolicyAWSCodePipelineFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodePipelineFullAccess") + // Deprecated: No longer supported. Use CodePipeline_ReadOnlyAccess instead. + ManagedPolicyAWSCodePipelineReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodePipelineReadOnlyAccess") + ManagedPolicy_CodePipeline_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodePipeline_FullAccess") + ManagedPolicy_CodePipeline_ReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodePipeline_ReadOnlyAccess") + ManagedPolicyAWSCodeStarFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSCodeStarFullAccess") + ManagedPolicyAWSCodeStarNotificationsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSCodeStarNotificationsServiceRolePolicy") + ManagedPolicyAWSCodeStarServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSCodeStarServiceRole") + ManagedPolicy_AWS_ConfigRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWS_ConfigRole") + // Deprecated: This has been deprecated in favour of `AWS_ConfigRole` + ManagedPolicyAWSConfigRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSConfigRole") + ManagedPolicyAWSCompromisedKeyQuarantine = ManagedPolicy("arn:aws:iam::aws:policy/AWSCompromisedKeyQuarantine") + ManagedPolicyAWSCompromisedKeyQuarantineV2 = ManagedPolicy("arn:aws:iam::aws:policy/AWSCompromisedKeyQuarantineV2") + ManagedPolicyAWSConfigMultiAccountSetupPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSConfigMultiAccountSetupPolicy") + ManagedPolicyAWSConfigRemediationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSConfigRemediationServiceRolePolicy") + ManagedPolicyAWSConfigRoleForOrganizations = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSConfigRoleForOrganizations") + ManagedPolicyAWSConfigRulesExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSConfigRulesExecutionRole") + ManagedPolicyAWSConfigServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSConfigServiceRolePolicy") + ManagedPolicyAWSConfigUserAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSConfigUserAccess") + ManagedPolicyAWSConnector = ManagedPolicy("arn:aws:iam::aws:policy/AWSConnector") + ManagedPolicyAWSControlTowerAccountServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSControlTowerAccountServiceRolePolicy") + ManagedPolicyAWSControlTowerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSControlTowerServiceRolePolicy") + ManagedPolicyAWSCostAndUsageReportAutomationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSCostAndUsageReportAutomationPolicy") + ManagedPolicyAWSDMSFleetAdvisorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSDMSFleetAdvisorServiceRolePolicy") + ManagedPolicyAWSDMSServerlessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSDMSServerlessServiceRolePolicy") + ManagedPolicyAWSDataExchangeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataExchangeFullAccess") + ManagedPolicyAWSDataExchangeProviderFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataExchangeProviderFullAccess") + ManagedPolicyAWSDataExchangeReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataExchangeReadOnly") + ManagedPolicyAWSDataExchangeSubscriberFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataExchangeSubscriberFullAccess") + ManagedPolicyAWSDataLifecycleManagerSSMFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSDataLifecycleManagerSSMFullAccess") + ManagedPolicyAWSDataLifecycleManagerServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSDataLifecycleManagerServiceRole") + ManagedPolicyAWSDataLifecycleManagerServiceRoleForAMIManagement = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSDataLifecycleManagerServiceRoleForAMIManagement") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicyAWSDataPipelineRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSDataPipelineRole") + ManagedPolicy_AWSDataPipeline_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataPipeline_FullAccess") + ManagedPolicy_AWSDataPipeline_PowerUser = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataPipeline_PowerUser") + ManagedPolicyAWSDataSyncDiscoveryServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSDataSyncDiscoveryServiceRolePolicy") + ManagedPolicyAWSDataSyncFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataSyncFullAccess") + ManagedPolicyAWSDataSyncReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDataSyncReadOnlyAccess") + ManagedPolicyAWSDeepLensLambdaFunctionAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSDeepLensLambdaFunctionAccessPolicy") + ManagedPolicyAWSDeepLensServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSDeepLensServiceRolePolicy") + ManagedPolicyAWSDeepRacerAccountAdminAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDeepRacerAccountAdminAccess") + ManagedPolicyAWSDeepRacerCloudFormationAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSDeepRacerCloudFormationAccessPolicy") + ManagedPolicyAWSDeepRacerDefaultMultiUserAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDeepRacerDefaultMultiUserAccess") + ManagedPolicyAWSDeepRacerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDeepRacerFullAccess") + ManagedPolicyAWSDeepRacerRoboMakerAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSDeepRacerRoboMakerAccessPolicy") + ManagedPolicyAWSDeepRacerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSDeepRacerServiceRolePolicy") + ManagedPolicyAWSDenyAll = ManagedPolicy("arn:aws:iam::aws:policy/AWSDenyAll") + ManagedPolicyAWSDeviceFarmFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDeviceFarmFullAccess") + ManagedPolicyAWSDeviceFarmServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSDeviceFarmServiceRolePolicy") + ManagedPolicyAWSDeviceFarmTestGridServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSDeviceFarmTestGridServiceRolePolicy") + ManagedPolicyAWSDirectConnectFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDirectConnectFullAccess") + ManagedPolicyAWSDirectConnectReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDirectConnectReadOnlyAccess") + ManagedPolicyAWSDirectConnectServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSDirectConnectServiceRolePolicy") + ManagedPolicyAWSDirectoryServiceFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDirectoryServiceFullAccess") + ManagedPolicyAWSDirectoryServiceReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSDirectoryServiceReadOnlyAccess") + ManagedPolicyAWSDiscoveryContinuousExportFirehosePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSDiscoveryContinuousExportFirehosePolicy") + ManagedPolicyAWSEC2CapacityReservationFleetRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSEC2CapacityReservationFleetRolePolicy") + ManagedPolicyAWSEC2FleetServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSEC2FleetServiceRolePolicy") + ManagedPolicyAWSEC2SpotFleetServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSEC2SpotFleetServiceRolePolicy") + ManagedPolicyAWSEC2SpotServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSEC2SpotServiceRolePolicy") + ManagedPolicy_AWSECRPullThroughCache_ServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSECRPullThroughCache_ServiceRolePolicy") + ManagedPolicyAWSElasticBeanstalkCustomPlatformforEC2Role = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkCustomPlatformforEC2Role") + ManagedPolicyAWSElasticBeanstalkEnhancedHealth = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth") + // Deprecated: This policy is deprecated. Please use the AWS managed policy AdministratorAccess-AWSElasticBeanstalk instead. + ManagedPolicyAWSElasticBeanstalkFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkFullAccess") + ManagedPolicyAWSElasticBeanstalkMaintenance = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSElasticBeanstalkMaintenance") + ManagedPolicyAWSElasticBeanstalkManagedUpdatesCustomerRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy") + ManagedPolicyAWSElasticBeanstalkManagedUpdatesServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSElasticBeanstalkManagedUpdatesServiceRolePolicy") + ManagedPolicyAWSElasticBeanstalkMulticontainerDocker = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker") + // Deprecated: This policy is deprecated. Please use the AWS managed policy AWSElasticBeanstalkReadOnly instead. + ManagedPolicyAWSElasticBeanstalkReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkReadOnlyAccess") + ManagedPolicyAWSElasticBeanstalkReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkReadOnly") + ManagedPolicyAWSElasticBeanstalkRoleCWL = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkRoleCWL") + ManagedPolicyAWSElasticBeanstalkRoleCore = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkRoleCore") + ManagedPolicyAWSElasticBeanstalkRoleECS = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkRoleECS") + ManagedPolicyAWSElasticBeanstalkRoleRDS = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkRoleRDS") + ManagedPolicyAWSElasticBeanstalkRoleSNS = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkRoleSNS") + ManagedPolicyAWSElasticBeanstalkRoleWorkerTier = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkRoleWorkerTier") + ManagedPolicyAWSElasticBeanstalkService = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkService") + ManagedPolicyAWSElasticBeanstalkServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSElasticBeanstalkServiceRolePolicy") + ManagedPolicyAWSElasticBeanstalkWebTier = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier") + // Deprecated: This has been deprecated in favour of `AWSElasticBeanstalkWorkerTier` + ManagedPolicyAWSElasticBeanstakWorkerTier = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier") + ManagedPolicyAWSElasticBeanstalkWorkerTier = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier") + ManagedPolicyAWSElasticDisasterRecoveryAgentInstallationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticDisasterRecoveryAgentInstallationPolicy") + ManagedPolicyAWSElasticDisasterRecoveryAgentPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryAgentPolicy") + ManagedPolicyAWSElasticDisasterRecoveryConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticDisasterRecoveryConsoleFullAccess") + ManagedPolicy_AWSElasticDisasterRecoveryConsoleFullAccess_v2 = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticDisasterRecoveryConsoleFullAccess_v2") + ManagedPolicyAWSElasticDisasterRecoveryConversionServerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryConversionServerPolicy") + ManagedPolicyAWSElasticDisasterRecoveryCrossAccountReplicationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryCrossAccountReplicationPolicy") + ManagedPolicyAWSElasticDisasterRecoveryEc2InstancePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryEc2InstancePolicy") + ManagedPolicyAWSElasticDisasterRecoveryFailbackInstallationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticDisasterRecoveryFailbackInstallationPolicy") + ManagedPolicyAWSElasticDisasterRecoveryFailbackPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryFailbackPolicy") + ManagedPolicyAWSElasticDisasterRecoveryLaunchActionsPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticDisasterRecoveryLaunchActionsPolicy") + ManagedPolicyAWSElasticDisasterRecoveryNetworkReplicationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryNetworkReplicationPolicy") + ManagedPolicyAWSElasticDisasterRecoveryReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElasticDisasterRecoveryReadOnlyAccess") + ManagedPolicyAWSElasticDisasterRecoveryRecoveryInstancePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryRecoveryInstancePolicy") + ManagedPolicyAWSElasticDisasterRecoveryReplicationServerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryReplicationServerPolicy") + ManagedPolicyAWSElasticDisasterRecoveryServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSElasticDisasterRecoveryServiceRolePolicy") + ManagedPolicyAWSElasticDisasterRecoveryStagingAccountPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryStagingAccountPolicy") + ManagedPolicy_AWSElasticDisasterRecoveryStagingAccountPolicy_v2 = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSElasticDisasterRecoveryStagingAccountPolicy_v2") + ManagedPolicyAWSElasticLoadBalancingClassicServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSElasticLoadBalancingClassicServiceRolePolicy") + ManagedPolicyAWSElasticLoadBalancingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSElasticLoadBalancingServiceRolePolicy") + ManagedPolicyAWSElementalMediaConvertFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaConvertFullAccess") + ManagedPolicyAWSElementalMediaConvertReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaConvertReadOnly") + ManagedPolicyAWSElementalMediaLiveFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaLiveFullAccess") + ManagedPolicyAWSElementalMediaLiveReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaLiveReadOnly") + ManagedPolicyAWSElementalMediaPackageFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaPackageFullAccess") + ManagedPolicyAWSElementalMediaPackageReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaPackageReadOnly") + ManagedPolicyAWSElementalMediaPackageV2FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaPackageV2FullAccess") + ManagedPolicyAWSElementalMediaPackageV2ReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaPackageV2ReadOnly") + ManagedPolicyAWSElementalMediaStoreFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaStoreFullAccess") + ManagedPolicyAWSElementalMediaStoreReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaStoreReadOnly") + ManagedPolicyAWSElementalMediaTailorFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaTailorFullAccess") + ManagedPolicyAWSElementalMediaTailorReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSElementalMediaTailorReadOnly") + ManagedPolicyAWSEnhancedClassicNetworkingMangementPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSEnhancedClassicNetworkingMangementPolicy") + ManagedPolicyAWSEntityResolutionConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSEntityResolutionConsoleFullAccess") + ManagedPolicyAWSEntityResolutionConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSEntityResolutionConsoleReadOnlyAccess") + ManagedPolicyAWSFMAdminFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSFMAdminFullAccess") + ManagedPolicyAWSFMAdminReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSFMAdminReadOnlyAccess") + ManagedPolicyAWSFMMemberReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSFMMemberReadOnlyAccess") + ManagedPolicyAWSFaultInjectionSimulatorEC2Access = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSFaultInjectionSimulatorEC2Access") + ManagedPolicyAWSFaultInjectionSimulatorECSAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSFaultInjectionSimulatorECSAccess") + ManagedPolicyAWSFaultInjectionSimulatorEKSAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSFaultInjectionSimulatorEKSAccess") + ManagedPolicyAWSFaultInjectionSimulatorNetworkAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSFaultInjectionSimulatorNetworkAccess") + ManagedPolicyAWSFaultInjectionSimulatorRDSAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSFaultInjectionSimulatorRDSAccess") + ManagedPolicyAWSFaultInjectionSimulatorSSMAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSFaultInjectionSimulatorSSMAccess") + ManagedPolicyAWSFinSpaceServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSFinSpaceServiceRolePolicy") + ManagedPolicyAWSForWordPressPluginPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSForWordPressPluginPolicy") + ManagedPolicyAWSGitSyncServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSGitSyncServiceRolePolicy") + ManagedPolicyAWSGlobalAcceleratorSLRPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSGlobalAcceleratorSLRPolicy") + ManagedPolicyAWSGlueConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess") + ManagedPolicyAWSGlueConsoleSageMakerNotebookFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGlueConsoleSageMakerNotebookFullAccess") + ManagedPolicyAWSGlueDataBrewServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSGlueDataBrewServiceRole") + ManagedPolicyAWSGlueSchemaRegistryFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGlueSchemaRegistryFullAccess") + ManagedPolicyAWSGlueSchemaRegistryReadonlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGlueSchemaRegistryReadonlyAccess") + ManagedPolicyAWSGlueServiceNotebookRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSGlueServiceNotebookRole") + ManagedPolicyAWSGlueServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole") + ManagedPolicyAWSGrafanaAccountAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/AWSGrafanaAccountAdministrator") + ManagedPolicyAWSGrafanaConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGrafanaConsoleReadOnlyAccess") + ManagedPolicyAWSGrafanaWorkspacePermissionManagement = ManagedPolicy("arn:aws:iam::aws:policy/AWSGrafanaWorkspacePermissionManagement") + ManagedPolicyAWSGrafanaWorkspacePermissionManagementV2 = ManagedPolicy("arn:aws:iam::aws:policy/AWSGrafanaWorkspacePermissionManagementV2") + ManagedPolicyAWSGreengrassFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGreengrassFullAccess") + // Deprecated: Please use AWSGreengrassFullAccess instead + ManagedPolicyAWSGreengrassFullccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGreengrassFullAccess") + ManagedPolicyAWSGreengrassReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSGreengrassReadOnlyAccess") + ManagedPolicyAWSGreengrassResourceAccessRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy") + ManagedPolicyAWSGroundStationAgentInstancePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSGroundStationAgentInstancePolicy") + ManagedPolicyAWSHealthFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSHealthFullAccess") + ManagedPolicyAWSHealthImagingFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSHealthImagingFullAccess") + ManagedPolicyAWSHealthImagingReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSHealthImagingReadOnlyAccess") + ManagedPolicy_AWSHealth_EventProcessorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSHealth_EventProcessorServiceRolePolicy") + ManagedPolicyAWSIAMIdentityCenterAllowListForIdentityContext = ManagedPolicy("arn:aws:iam::aws:policy/AWSIAMIdentityCenterAllowListForIdentityContext") + ManagedPolicyAWSIPAMServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIPAMServiceRolePolicy") + ManagedPolicyAWSIQContractServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIQContractServiceRolePolicy") + ManagedPolicyAWSIQFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIQFullAccess") + ManagedPolicyAWSIQPermissionServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIQPermissionServiceRolePolicy") + ManagedPolicyAWSIdentitySyncFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIdentitySyncFullAccess") + ManagedPolicyAWSIdentitySyncReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIdentitySyncReadOnlyAccess") + ManagedPolicyAWSImageBuilderFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSImageBuilderFullAccess") + ManagedPolicyAWSImageBuilderReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSImageBuilderReadOnlyAccess") + ManagedPolicyAWSImportExportFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSImportExportFullAccess") + ManagedPolicyAWSImportExportReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSImportExportReadOnlyAccess") + ManagedPolicyAWSIncidentManagerIncidentAccessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSIncidentManagerIncidentAccessServiceRolePolicy") + ManagedPolicyAWSIncidentManagerResolverAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIncidentManagerResolverAccess") + ManagedPolicyAWSIncidentManagerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIncidentManagerServiceRolePolicy") + ManagedPolicyAWSIoT1ClickFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoT1ClickFullAccess") + ManagedPolicyAWSIoT1ClickReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoT1ClickReadOnlyAccess") + ManagedPolicyAWSIoTAnalyticsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTAnalyticsFullAccess") + ManagedPolicyAWSIoTAnalyticsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTAnalyticsReadOnlyAccess") + ManagedPolicyAWSIoTConfigAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTConfigAccess") + ManagedPolicyAWSIoTConfigReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTConfigReadOnlyAccess") + ManagedPolicyAWSIoTDataAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTDataAccess") + ManagedPolicyAWSIoTDeviceDefenderAddThingsToThingGroupMitigationAction = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderAddThingsToThingGroupMitigationAction") + ManagedPolicyAWSIoTDeviceDefenderAudit = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderAudit") + ManagedPolicyAWSIoTDeviceDefenderEnableIoTLoggingMitigationAction = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderEnableIoTLoggingMitigationAction") + ManagedPolicyAWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction") + ManagedPolicyAWSIoTDeviceDefenderReplaceDefaultPolicyMitigationAction = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderReplaceDefaultPolicyMitigationAction") + ManagedPolicyAWSIoTDeviceDefenderUpdateCACertMitigationAction = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderUpdateCACertMitigationAction") + ManagedPolicyAWSIoTDeviceDefenderUpdateDeviceCertMitigationAction = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTDeviceDefenderUpdateDeviceCertMitigationAction") + ManagedPolicyAWSIoTDeviceTesterForFreeRTOSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTDeviceTesterForFreeRTOSFullAccess") + ManagedPolicyAWSIoTDeviceTesterForGreengrassFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTDeviceTesterForGreengrassFullAccess") + ManagedPolicyAWSIoTEventsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTEventsFullAccess") + ManagedPolicyAWSIoTEventsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTEventsReadOnlyAccess") + ManagedPolicyAWSIoTFleetHubFederationAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTFleetHubFederationAccess") + ManagedPolicyAWSIoTFleetwiseServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIoTFleetwiseServiceRolePolicy") + ManagedPolicyAWSIoTFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTFullAccess") + ManagedPolicyAWSIoTLogging = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTLogging") + ManagedPolicyAWSIoTOTAUpdate = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTOTAUpdate") + ManagedPolicyAWSIoTRuleActions = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTRuleActions") + ManagedPolicyAWSIoTSiteWiseConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTSiteWiseConsoleFullAccess") + ManagedPolicyAWSIoTSiteWiseFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTSiteWiseFullAccess") + ManagedPolicyAWSIoTSiteWiseMonitorPortalAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTSiteWiseMonitorPortalAccess") + ManagedPolicyAWSIoTSiteWiseMonitorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIoTSiteWiseMonitorServiceRolePolicy") + ManagedPolicyAWSIoTSiteWiseReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTSiteWiseReadOnlyAccess") + ManagedPolicyAWSIoTThingsRegistration = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration") + ManagedPolicyAWSIoTTwinMakerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIoTTwinMakerServiceRolePolicy") + ManagedPolicyAWSIoTWirelessDataAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTWirelessDataAccess") + ManagedPolicyAWSIoTWirelessFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTWirelessFullAccess") + ManagedPolicyAWSIoTWirelessFullPublishAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTWirelessFullPublishAccess") + ManagedPolicyAWSIoTWirelessGatewayCertManager = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTWirelessGatewayCertManager") + ManagedPolicyAWSIoTWirelessLogging = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTWirelessLogging") + ManagedPolicyAWSIoTWirelessReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIoTWirelessReadOnlyAccess") + ManagedPolicyAWSIotRoboRunnerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSIotRoboRunnerFullAccess") + ManagedPolicyAWSIotRoboRunnerReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSIotRoboRunnerReadOnly") + ManagedPolicyAWSIotRoboRunnerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSIotRoboRunnerServiceRolePolicy") + ManagedPolicyAWSKeyManagementServiceCustomKeyStoresServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSKeyManagementServiceCustomKeyStoresServiceRolePolicy") + ManagedPolicyAWSKeyManagementServiceMultiRegionKeysServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSKeyManagementServiceMultiRegionKeysServiceRolePolicy") + ManagedPolicyAWSKeyManagementServicePowerUser = ManagedPolicy("arn:aws:iam::aws:policy/AWSKeyManagementServicePowerUser") + ManagedPolicyAWSLakeFormationCrossAccountManager = ManagedPolicy("arn:aws:iam::aws:policy/AWSLakeFormationCrossAccountManager") + ManagedPolicyAWSLakeFormationDataAdmin = ManagedPolicy("arn:aws:iam::aws:policy/AWSLakeFormationDataAdmin") + ManagedPolicyAWSLambdaBasicExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole") + ManagedPolicyAWSLambdaDynamoDBExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaDynamoDBExecutionRole") + ManagedPolicyAWSLambdaENIManagementAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaENIManagementAccess") + ManagedPolicyAWSLambdaExecute = ManagedPolicy("arn:aws:iam::aws:policy/AWSLambdaExecute") + // Deprecated: This has been deprecated in favour of `LambdaFullAccess` + ManagedPolicyAWSLambdaFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSLambdaFullAccess") + ManagedPolicyLambdaFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSLambda_FullAccess") + ManagedPolicyAWSLambdaInvocationDynamoDB = ManagedPolicy("arn:aws:iam::aws:policy/AWSLambdaInvocation-DynamoDB") + ManagedPolicyAWSLambdaKinesisExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaKinesisExecutionRole") + // Deprecated: This has been deprecated in favour of `LambdaReadOnlyAccess` + ManagedPolicyAWSLambdaReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSLambdaReadOnlyAccess") + ManagedPolicyLambdaReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSLambda_ReadOnlyAccess") + ManagedPolicyAWSLambdaMSKExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaMSKExecutionRole") + ManagedPolicyAWSLambdaReplicator = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSLambdaReplicator") + ManagedPolicyAWSLambdaRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaRole") + ManagedPolicyAWSLambdaSQSQueueExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaSQSQueueExecutionRole") + ManagedPolicyAWSLambdaVPCAccessExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLambdaVPCAccessExecutionRole") + ManagedPolicyAWSLicenseManagerConsumptionPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSLicenseManagerConsumptionPolicy") + ManagedPolicyAWSLicenseManagerLinuxSubscriptionsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSLicenseManagerLinuxSubscriptionsServiceRolePolicy") + ManagedPolicyAWSLicenseManagerMasterAccountRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSLicenseManagerMasterAccountRolePolicy") + ManagedPolicyAWSLicenseManagerMemberAccountRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSLicenseManagerMemberAccountRolePolicy") + ManagedPolicyAWSLicenseManagerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSLicenseManagerServiceRolePolicy") + ManagedPolicyAWSLicenseManagerUserSubscriptionsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSLicenseManagerUserSubscriptionsServiceRolePolicy") + ManagedPolicyAWSM2ServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSM2ServicePolicy") + ManagedPolicyAWSMSKReplicatorExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSMSKReplicatorExecutionRole") + ManagedPolicyAWSManagedServicesDeploymentToolkitPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSManagedServicesDeploymentToolkitPolicy") + ManagedPolicy_AWSManagedServices_ContactsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSManagedServices_ContactsServiceRolePolicy") + ManagedPolicy_AWSManagedServices_DetectiveControlsConfig_ServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSManagedServices_DetectiveControlsConfig_ServiceRolePolicy") + ManagedPolicy_AWSManagedServices_EventsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSManagedServices_EventsServiceRolePolicy") + ManagedPolicyAWSMarketplaceAmiIngestion = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceAmiIngestion") + ManagedPolicyAWSMarketplaceDeploymentServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMarketplaceDeploymentServiceRolePolicy") + ManagedPolicyAWSMarketplaceFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceFullAccess") + ManagedPolicyAWSMarketplaceGetEntitlements = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceGetEntitlements") + ManagedPolicyAWSMarketplaceImageBuildFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceImageBuildFullAccess") + ManagedPolicyAWSMarketplaceLicenseManagementServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMarketplaceLicenseManagementServiceRolePolicy") + ManagedPolicyAWSMarketplaceManageSubscriptions = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceManageSubscriptions") + ManagedPolicyAWSMarketplaceMeteringFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceMeteringFullAccess") + ManagedPolicyAWSMarketplaceMeteringRegisterUsage = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceMeteringRegisterUsage") + ManagedPolicyAWSMarketplaceProcurementSystemAdminFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceProcurementSystemAdminFullAccess") + ManagedPolicyAWSMarketplacePurchaseOrdersServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMarketplacePurchaseOrdersServiceRolePolicy") + ManagedPolicyAWSMarketplaceReadonly = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceRead-only") + ManagedPolicyAWSMarketplaceResaleAuthorizationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMarketplaceResaleAuthorizationServiceRolePolicy") + ManagedPolicyAWSMarketplaceSellerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceSellerFullAccess") + ManagedPolicyAWSMarketplaceSellerProductsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceSellerProductsFullAccess") + ManagedPolicyAWSMarketplaceSellerProductsReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSMarketplaceSellerProductsReadOnly") + ManagedPolicyAWSMediaConnectServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMediaConnectServicePolicy") + ManagedPolicyAWSMediaTailorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMediaTailorServiceRolePolicy") + ManagedPolicyAWSMigrationHubDMSAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSMigrationHubDMSAccess") + ManagedPolicyAWSMigrationHubDiscoveryAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSMigrationHubDiscoveryAccess") + ManagedPolicyAWSMigrationHubFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubFullAccess") + ManagedPolicyAWSMigrationHubOrchestratorConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubOrchestratorConsoleFullAccess") + ManagedPolicyAWSMigrationHubOrchestratorInstanceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubOrchestratorInstanceRolePolicy") + ManagedPolicyAWSMigrationHubOrchestratorPlugin = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubOrchestratorPlugin") + ManagedPolicyAWSMigrationHubOrchestratorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMigrationHubOrchestratorServiceRolePolicy") + ManagedPolicyAWSMigrationHubRefactorSpacesEnvironmentsWithoutBridgesFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubRefactorSpaces-EnvironmentsWithoutBridgesFullAccess") + ManagedPolicyAWSMigrationHubRefactorSpacesSSMAutomationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSMigrationHubRefactorSpaces-SSMAutomationPolicy") + ManagedPolicyAWSMigrationHubRefactorSpacesFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubRefactorSpacesFullAccess") + ManagedPolicyAWSMigrationHubRefactorSpacesServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMigrationHubRefactorSpacesServiceRolePolicy") + ManagedPolicyAWSMigrationHubSMSAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSMigrationHubSMSAccess") + ManagedPolicyAWSMigrationHubStrategyCollector = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubStrategyCollector") + ManagedPolicyAWSMigrationHubStrategyConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMigrationHubStrategyConsoleFullAccess") + ManagedPolicyAWSMigrationHubStrategyServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSMigrationHubStrategyServiceRolePolicy") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicy_AWSMobileHub_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSMobileHub_FullAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicy_AWSMobileHub_ReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSMobileHub_ReadOnly") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicy_AWSMobileHub_ServiceUseOnly = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSMobileHub_ServiceUseOnly") + ManagedPolicyAWSNetworkFirewallServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSNetworkFirewallServiceRolePolicy") + ManagedPolicyAWSNetworkManagerCloudWANServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSNetworkManagerCloudWANServiceRolePolicy") + ManagedPolicyAWSNetworkManagerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSNetworkManagerFullAccess") + ManagedPolicyAWSNetworkManagerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSNetworkManagerReadOnlyAccess") + ManagedPolicyAWSNetworkManagerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSNetworkManagerServiceRolePolicy") + ManagedPolicyAWSOpsWorksCMInstanceProfileRole = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorksCMInstanceProfileRole") + ManagedPolicyAWSOpsWorksCMServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSOpsWorksCMServiceRole") + ManagedPolicyAWSOpsWorksCloudWatchLogs = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorksCloudWatchLogs") + // Deprecated: This policy is deprecated and will be removed in a future release. Please use OpsWorks_FullAccess instead. + ManagedPolicyAWSOpsWorksFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorksFullAccess") + ManagedPolicyAWSOpsWorksInstanceRegistration = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorksInstanceRegistration") + // Deprecated: This policy is deprecated and will be removed in a future release. Please use AWSOpsWorksRegisterCLI_EC2 or AWSOpsWorksRegisterCLI_OnPremises instead. + ManagedPolicyAWSOpsWorksRegisterCLI = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorksRegisterCLI") + // Deprecated: This policy is deprecated and will be removed in a future release. Please use AWSOpsWorksCMServiceRole instead. + ManagedPolicyAWSOpsWorksRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSOpsWorksRole") + // Deprecated: This policy is deprecated and will be removed in a future release. Please use AWSQuickSightDescribeRDS instead. + ManagedPolicyAWSQuickSightDescribeRD = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuickSightDescribeRDS") + ManagedPolicy_AWSOpsWorksRegisterCLI_EC2 = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorksRegisterCLI_EC2") + ManagedPolicy_AWSOpsWorksRegisterCLI_OnPremises = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorksRegisterCLI_OnPremises") + ManagedPolicy_OpsWorks_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSOpsWorks_FullAccess") + ManagedPolicyAWSOrganizationsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSOrganizationsFullAccess") + ManagedPolicyAWSOrganizationsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSOrganizationsReadOnlyAccess") + ManagedPolicyAWSOrganizationsServiceTrustPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSOrganizationsServiceTrustPolicy") + ManagedPolicyAWSOutpostsAuthorizeServerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSOutpostsAuthorizeServerPolicy") + ManagedPolicyAWSOutpostsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSOutpostsServiceRolePolicy") + ManagedPolicyAWSPanoramaApplianceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSPanoramaApplianceRolePolicy") + ManagedPolicyAWSPanoramaApplianceServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSPanoramaApplianceServiceRolePolicy") + ManagedPolicyAWSPanoramaFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSPanoramaFullAccess") + ManagedPolicyAWSPanoramaGreengrassGroupRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSPanoramaGreengrassGroupRolePolicy") + ManagedPolicyAWSPanoramaSageMakerRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSPanoramaSageMakerRolePolicy") + ManagedPolicyAWSPanoramaServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSPanoramaServiceLinkedRolePolicy") + ManagedPolicyAWSPanoramaServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSPanoramaServiceRolePolicy") + ManagedPolicyAWSPriceListServiceFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSPriceListServiceFullAccess") + ManagedPolicyAWSPrivateCAAuditor = ManagedPolicy("arn:aws:iam::aws:policy/AWSPrivateCAAuditor") + ManagedPolicyAWSPrivateCAFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSPrivateCAFullAccess") + ManagedPolicyAWSPrivateCAPrivilegedUser = ManagedPolicy("arn:aws:iam::aws:policy/AWSPrivateCAPrivilegedUser") + ManagedPolicyAWSPrivateCAReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSPrivateCAReadOnly") + ManagedPolicyAWSPrivateCAUser = ManagedPolicy("arn:aws:iam::aws:policy/AWSPrivateCAUser") + ManagedPolicyAWSPrivateMarketplaceAdminFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSPrivateMarketplaceAdminFullAccess") + ManagedPolicyAWSPrivateMarketplaceRequests = ManagedPolicy("arn:aws:iam::aws:policy/AWSPrivateMarketplaceRequests") + ManagedPolicyAWSPrivateNetworksServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSPrivateNetworksServiceRolePolicy") + ManagedPolicyAWSProtonCodeBuildProvisioningBasicAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSProtonCodeBuildProvisioningBasicAccess") + ManagedPolicyAWSProtonCodeBuildProvisioningServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSProtonCodeBuildProvisioningServiceRolePolicy") + ManagedPolicyAWSProtonDeveloperAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSProtonDeveloperAccess") + ManagedPolicyAWSProtonFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSProtonFullAccess") + ManagedPolicyAWSProtonReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSProtonReadOnlyAccess") + ManagedPolicyAWSProtonServiceGitSyncServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSProtonServiceGitSyncServiceRolePolicy") + ManagedPolicyAWSProtonSyncServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSProtonSyncServiceRolePolicy") + ManagedPolicyAWSPurchaseOrdersServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSPurchaseOrdersServiceRolePolicy") + ManagedPolicyAWSQuickSightDescribeRDS = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuickSightDescribeRDS") + ManagedPolicyAWSQuickSightDescribeRedshift = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuickSightDescribeRedshift") + ManagedPolicyAWSQuickSightElasticsearchPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuickSightElasticsearchPolicy") + ManagedPolicyAWSQuickSightIoTAnalyticsAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSQuickSightIoTAnalyticsAccess") + ManagedPolicyAWSQuickSightListIAM = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuickSightListIAM") + ManagedPolicyAWSQuickSightSageMakerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuickSightSageMakerPolicy") + ManagedPolicyAWSQuickSightTimestreamPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuickSightTimestreamPolicy") + ManagedPolicyAWSQuicksightAthenaAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuicksightAthenaAccess") + ManagedPolicyAWSQuicksightOpenSearchPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSQuicksightOpenSearchPolicy") + ManagedPolicyAWSReachabilityAnalyzerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSReachabilityAnalyzerServiceRolePolicy") + ManagedPolicyAWSRefactoringToolkitFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSRefactoringToolkitFullAccess") + ManagedPolicyAWSRefactoringToolkitSidecarPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSRefactoringToolkitSidecarPolicy") + ManagedPolicyAWSRepostSpaceSupportOperationsPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSRepostSpaceSupportOperationsPolicy") + ManagedPolicyAWSResilienceHubAsssessmentExecutionPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSResilienceHubAsssessmentExecutionPolicy") + ManagedPolicyAWSResourceAccessManagerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSResourceAccessManagerFullAccess") + ManagedPolicyAWSResourceAccessManagerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSResourceAccessManagerReadOnlyAccess") + ManagedPolicyAWSResourceAccessManagerResourceShareParticipantAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSResourceAccessManagerResourceShareParticipantAccess") + ManagedPolicyAWSResourceAccessManagerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSResourceAccessManagerServiceRolePolicy") + ManagedPolicyAWSResourceExplorerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSResourceExplorerFullAccess") + ManagedPolicyAWSResourceExplorerOrganizationsAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSResourceExplorerOrganizationsAccess") + ManagedPolicyAWSResourceExplorerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSResourceExplorerReadOnlyAccess") + ManagedPolicyAWSResourceExplorerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSResourceExplorerServiceRolePolicy") + ManagedPolicyAWSResourceGroupsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSResourceGroupsReadOnlyAccess") + ManagedPolicyAWSRoboMakerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSRoboMakerReadOnlyAccess") + ManagedPolicyAWSRoboMakerServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSRoboMakerServicePolicy") + ManagedPolicyAWSRoboMakerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSRoboMakerServiceRolePolicy") + ManagedPolicy_AWSRoboMaker_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSRoboMaker_FullAccess") + ManagedPolicyAWSRolesAnywhereServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSRolesAnywhereServicePolicy") + ManagedPolicyAWSS3OnOutpostsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSS3OnOutpostsServiceRolePolicy") + ManagedPolicyAWSSSMForSAPServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSSMForSAPServiceLinkedRolePolicy") + ManagedPolicyAWSSSMOpsInsightsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSSMOpsInsightsServiceRolePolicy") + ManagedPolicyAWSSSODirectoryAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/AWSSSODirectoryAdministrator") + ManagedPolicyAWSSSODirectoryReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSSSODirectoryReadOnly") + ManagedPolicyAWSSSOMasterAccountAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/AWSSSOMasterAccountAdministrator") + ManagedPolicyAWSSSOMemberAccountAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/AWSSSOMemberAccountAdministrator") + ManagedPolicyAWSSSOReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSSSOReadOnly") + ManagedPolicyAWSSSOServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSSOServiceRolePolicy") + ManagedPolicyAWSSavingsPlansFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSavingsPlansFullAccess") + ManagedPolicyAWSSavingsPlansReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSavingsPlansReadOnlyAccess") + ManagedPolicyAWSSecurityHubFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSecurityHubFullAccess") + ManagedPolicyAWSSecurityHubOrganizationsAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSecurityHubOrganizationsAccess") + ManagedPolicyAWSSecurityHubReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSecurityHubReadOnlyAccess") + ManagedPolicyAWSSecurityHubServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSecurityHubServiceRolePolicy") + ManagedPolicyAWSServiceCatalogAdminFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSServiceCatalogAdminFullAccess") + ManagedPolicyAWSServiceCatalogAdminReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSServiceCatalogAdminReadOnlyAccess") + ManagedPolicyAWSServiceCatalogAppRegistryFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSServiceCatalogAppRegistryFullAccess") + ManagedPolicyAWSServiceCatalogAppRegistryReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSServiceCatalogAppRegistryReadOnlyAccess") + ManagedPolicyAWSServiceCatalogAppRegistryServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceCatalogAppRegistryServiceRolePolicy") + ManagedPolicyAWSServiceCatalogEndUserFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSServiceCatalogEndUserFullAccess") + ManagedPolicyAWSServiceCatalogEndUserReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSServiceCatalogEndUserReadOnlyAccess") + ManagedPolicyAWSServiceCatalogOrgsDataSyncServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceCatalogOrgsDataSyncServiceRolePolicy") + ManagedPolicyAWSServiceCatalogSyncServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceCatalogSyncServiceRolePolicy") + ManagedPolicyAWSServiceRoleForAmazonEKSNodegroup = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForAmazonEKSNodegroup") + ManagedPolicyAWSServiceRoleForCloudWatchAlarmsActionSSMServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForCloudWatchAlarmsActionSSMServiceRolePolicy") + ManagedPolicy_AWSServiceRoleForCloudWatchMetrics_DbPerfInsightsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForCloudWatchMetrics_DbPerfInsightsServiceRolePolicy") + ManagedPolicyAWSServiceRoleForCodeGuruProfiler = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForCodeGuru-Profiler") + ManagedPolicyAWSServiceRoleForCodeWhispererPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForCodeWhispererPolicy") + ManagedPolicyAWSServiceRoleForEC2ScheduledInstances = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForEC2ScheduledInstances") + ManagedPolicyAWSServiceRoleForGroundStationDataflowEndpointGroupPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForGroundStationDataflowEndpointGroupPolicy") + ManagedPolicyAWSServiceRoleForImageBuilder = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForImageBuilder") + ManagedPolicyAWSServiceRoleForIoTSiteWise = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForIoTSiteWise") + ManagedPolicyAWSServiceRoleForLogDeliveryPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForLogDeliveryPolicy") + ManagedPolicyAWSServiceRoleForMonitronPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForMonitronPolicy") + ManagedPolicyAWSServiceRoleForNeptuneGraphPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForNeptuneGraphPolicy") + ManagedPolicyAWSServiceRoleForPrivateMarketplaceAdminPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForPrivateMarketplaceAdminPolicy") + ManagedPolicyAWSServiceRoleForSMS = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRoleForSMS") + ManagedPolicyAWSServiceRolePolicyForBackupReports = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRolePolicyForBackupReports") + ManagedPolicyAWSServiceRolePolicyForBackupRestoreTesting = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSServiceRolePolicyForBackupRestoreTesting") + ManagedPolicyAWSShieldDRTAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSShieldDRTAccessPolicy") + ManagedPolicyAWSShieldServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSShieldServiceRolePolicy") + ManagedPolicyAWSStepFunctionsConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSStepFunctionsConsoleFullAccess") + ManagedPolicyAWSStepFunctionsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSStepFunctionsFullAccess") + ManagedPolicyAWSStepFunctionsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSStepFunctionsReadOnlyAccess") + ManagedPolicyAWSStorageGatewayFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSStorageGatewayFullAccess") + ManagedPolicyAWSStorageGatewayReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSStorageGatewayReadOnlyAccess") + ManagedPolicyAWSStorageGatewayServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSStorageGatewayServiceRolePolicy") + ManagedPolicyAWSSupplyChainFederationAdminAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSSupplyChainFederationAdminAccess") + ManagedPolicyAWSSupportAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSupportAccess") + ManagedPolicyAWSSupportAppFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSupportAppFullAccess") + ManagedPolicyAWSSupportAppReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSupportAppReadOnlyAccess") + ManagedPolicyAWSSupportPlansFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSupportPlansFullAccess") + ManagedPolicyAWSSupportPlansReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSupportPlansReadOnlyAccess") + ManagedPolicyAWSSupportServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSupportServiceRolePolicy") + ManagedPolicyAWSSystemsManagerAccountDiscoveryServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerAccountDiscoveryServicePolicy") + ManagedPolicyAWSSystemsManagerChangeManagementServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerChangeManagementServicePolicy") + ManagedPolicyAWSSystemsManagerForSAPFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSystemsManagerForSAPFullAccess") + ManagedPolicyAWSSystemsManagerForSAPReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSSystemsManagerForSAPReadOnlyAccess") + ManagedPolicyAWSSystemsManagerOpsDataSyncServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSSystemsManagerOpsDataSyncServiceRolePolicy") + ManagedPolicyAWSThinkboxAWSPortalAdminPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxAWSPortalAdminPolicy") + ManagedPolicyAWSThinkboxAWSPortalGatewayPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxAWSPortalGatewayPolicy") + ManagedPolicyAWSThinkboxAWSPortalWorkerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxAWSPortalWorkerPolicy") + ManagedPolicyAWSThinkboxAssetServerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxAssetServerPolicy") + ManagedPolicyAWSThinkboxDeadlineResourceTrackerAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxDeadlineResourceTrackerAccessPolicy") + ManagedPolicyAWSThinkboxDeadlineResourceTrackerAdminPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxDeadlineResourceTrackerAdminPolicy") + ManagedPolicyAWSThinkboxDeadlineSpotEventPluginAdminPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxDeadlineSpotEventPluginAdminPolicy") + ManagedPolicyAWSThinkboxDeadlineSpotEventPluginWorkerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AWSThinkboxDeadlineSpotEventPluginWorkerPolicy") + ManagedPolicyAWSTransferConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSTransferConsoleFullAccess") + ManagedPolicyAWSTransferFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSTransferFullAccess") + ManagedPolicyAWSTransferLoggingAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AWSTransferLoggingAccess") + ManagedPolicyAWSTransferReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSTransferReadOnlyAccess") + ManagedPolicyAWSTrustedAdvisorPriorityFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSTrustedAdvisorPriorityFullAccess") + ManagedPolicyAWSTrustedAdvisorPriorityReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSTrustedAdvisorPriorityReadOnlyAccess") + ManagedPolicyAWSTrustedAdvisorReportingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSTrustedAdvisorReportingServiceRolePolicy") + ManagedPolicyAWSTrustedAdvisorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSTrustedAdvisorServiceRolePolicy") + ManagedPolicyAWSUserNotificationsServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSUserNotificationsServiceLinkedRolePolicy") + ManagedPolicyAWSVPCS2SVpnServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSVPCS2SVpnServiceRolePolicy") + ManagedPolicyAWSVPCTransitGatewayServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSVPCTransitGatewayServiceRolePolicy") + ManagedPolicyAWSVPCVerifiedAccessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSVPCVerifiedAccessServiceRolePolicy") + ManagedPolicyAWSVendorInsightsAssessorFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSVendorInsightsAssessorFullAccess") + ManagedPolicyAWSVendorInsightsAssessorReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSVendorInsightsAssessorReadOnly") + ManagedPolicyAWSVendorInsightsVendorFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSVendorInsightsVendorFullAccess") + ManagedPolicyAWSVendorInsightsVendorReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AWSVendorInsightsVendorReadOnly") + ManagedPolicyAWSVpcLatticeServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSVpcLatticeServiceRolePolicy") + ManagedPolicyAWSWAFConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSWAFConsoleFullAccess") + ManagedPolicyAWSWAFConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSWAFConsoleReadOnlyAccess") + ManagedPolicyAWSWAFFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSWAFFullAccess") + ManagedPolicyAWSWAFReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSWAFReadOnlyAccess") + ManagedPolicyAWSWellArchitectedDiscoveryServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSWellArchitectedDiscoveryServiceRolePolicy") + ManagedPolicyAWSWellArchitectedOrganizationsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSWellArchitectedOrganizationsServiceRolePolicy") + ManagedPolicyAWSWickrFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSWickrFullAccess") + ManagedPolicyAWSXRayDaemonWriteAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess") + ManagedPolicyAWSXrayCrossAccountSharingConfiguration = ManagedPolicy("arn:aws:iam::aws:policy/AWSXrayCrossAccountSharingConfiguration") + ManagedPolicyAWSXrayFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSXrayFullAccess") + ManagedPolicyAWSXrayReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSXrayReadOnlyAccess") + ManagedPolicyAWSXrayWriteOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess") + ManagedPolicyAWSZonalAutoshiftPracticeRunSLRPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSZonalAutoshiftPracticeRunSLRPolicy") + ManagedPolicyAWSrePostPrivateCloudWatchAccess = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AWSrePostPrivateCloudWatchAccess") + ManagedPolicyAccessAnalyzerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AccessAnalyzerServiceRolePolicy") + ManagedPolicyAdministratorAccess = ManagedPolicy("arn:aws:iam::aws:policy/AdministratorAccess") + ManagedPolicyAdministratorAccessAWSElasticBeanstalk = ManagedPolicy("arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk") + ManagedPolicyAdministratorAccessAmplify = ManagedPolicy("arn:aws:iam::aws:policy/AdministratorAccess-Amplify") + ManagedPolicyAlexaForBusinessDeviceSetup = ManagedPolicy("arn:aws:iam::aws:policy/AlexaForBusinessDeviceSetup") + ManagedPolicyAlexaForBusinessFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AlexaForBusinessFullAccess") + ManagedPolicyAlexaForBusinessGatewayExecution = ManagedPolicy("arn:aws:iam::aws:policy/AlexaForBusinessGatewayExecution") + ManagedPolicyAlexaForBusinessLifesizeDelegatedAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AlexaForBusinessLifesizeDelegatedAccessPolicy") + ManagedPolicyAlexaForBusinessNetworkProfileServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AlexaForBusinessNetworkProfileServicePolicy") + ManagedPolicyAlexaForBusinessPolyDelegatedAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AlexaForBusinessPolyDelegatedAccessPolicy") + ManagedPolicyAlexaForBusinessReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AlexaForBusinessReadOnlyAccess") + ManagedPolicyAmazonAPIGatewayAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAPIGatewayAdministrator") + ManagedPolicyAmazonAPIGatewayInvokeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAPIGatewayInvokeFullAccess") + ManagedPolicyAmazonAPIGatewayPushToCloudWatchLogs = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs") + ManagedPolicyAmazonAppFlowFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAppFlowFullAccess") + ManagedPolicyAmazonAppFlowReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAppFlowReadOnlyAccess") + ManagedPolicyAmazonAppStreamFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAppStreamFullAccess") + ManagedPolicyAmazonAppStreamPCAAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonAppStreamPCAAccess") + ManagedPolicyAmazonAppStreamReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAppStreamReadOnlyAccess") + ManagedPolicyAmazonAppStreamServiceAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonAppStreamServiceAccess") + ManagedPolicyAmazonAthenaFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAthenaFullAccess") + ManagedPolicyAmazonAugmentedAIFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAugmentedAIFullAccess") + ManagedPolicyAmazonAugmentedAIHumanLoopFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAugmentedAIHumanLoopFullAccess") + ManagedPolicyAmazonAugmentedAIIntegratedAPIAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonAugmentedAIIntegratedAPIAccess") + ManagedPolicyAmazonBedrockFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonBedrockFullAccess") + ManagedPolicyAmazonBedrockReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonBedrockReadOnly") + ManagedPolicyAmazonBraketFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonBraketFullAccess") + ManagedPolicyAmazonBraketJobsExecutionPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonBraketJobsExecutionPolicy") + ManagedPolicyAmazonBraketServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonBraketServiceRolePolicy") + ManagedPolicyAmazonChimeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonChimeFullAccess") + ManagedPolicyAmazonChimeReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonChimeReadOnly") + ManagedPolicyAmazonChimeSDK = ManagedPolicy("arn:aws:iam::aws:policy/AmazonChimeSDK") + ManagedPolicyAmazonChimeSDKMediaPipelinesServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonChimeSDKMediaPipelinesServiceLinkedRolePolicy") + ManagedPolicyAmazonChimeSDKMessagingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonChimeSDKMessagingServiceRolePolicy") + ManagedPolicyAmazonChimeServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonChimeServiceRolePolicy") + ManagedPolicyAmazonChimeTranscriptionServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonChimeTranscriptionServiceLinkedRolePolicy") + ManagedPolicyAmazonChimeUserManagement = ManagedPolicy("arn:aws:iam::aws:policy/AmazonChimeUserManagement") + ManagedPolicyAmazonChimeVoiceConnectorServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonChimeVoiceConnectorServiceLinkedRolePolicy") + ManagedPolicyAmazonCloudDirectoryFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCloudDirectoryFullAccess") + ManagedPolicyAmazonCloudDirectoryReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCloudDirectoryReadOnlyAccess") + ManagedPolicyAmazonCloudWatchEvidentlyFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCloudWatchEvidentlyFullAccess") + ManagedPolicyAmazonCloudWatchEvidentlyReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCloudWatchEvidentlyReadOnlyAccess") + ManagedPolicyAmazonCloudWatchEvidentlyServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonCloudWatchEvidentlyServiceRolePolicy") + ManagedPolicyAmazonCloudWatchRUMFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCloudWatchRUMFullAccess") + ManagedPolicyAmazonCloudWatchRUMReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCloudWatchRUMReadOnlyAccess") + ManagedPolicyAmazonCloudWatchRUMServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonCloudWatchRUMServiceRolePolicy") + ManagedPolicyAmazonCodeCatalystFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeCatalystFullAccess") + ManagedPolicyAmazonCodeCatalystReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeCatalystReadOnlyAccess") + ManagedPolicyAmazonCodeCatalystSupportAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonCodeCatalystSupportAccess") + ManagedPolicyAmazonCodeGuruProfilerAgentAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeGuruProfilerAgentAccess") + ManagedPolicyAmazonCodeGuruProfilerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeGuruProfilerFullAccess") + ManagedPolicyAmazonCodeGuruProfilerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeGuruProfilerReadOnlyAccess") + ManagedPolicyAmazonCodeGuruReviewerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeGuruReviewerFullAccess") + ManagedPolicyAmazonCodeGuruReviewerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeGuruReviewerReadOnlyAccess") + ManagedPolicyAmazonCodeGuruReviewerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonCodeGuruReviewerServiceRolePolicy") + ManagedPolicyAmazonCodeGuruSecurityFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeGuruSecurityFullAccess") + ManagedPolicyAmazonCodeGuruSecurityScanAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCodeGuruSecurityScanAccess") + ManagedPolicyAmazonCognitoDeveloperAuthenticatedIdentities = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCognitoDeveloperAuthenticatedIdentities") + ManagedPolicyAmazonCognitoIdpEmailServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonCognitoIdpEmailServiceRolePolicy") + ManagedPolicyAmazonCognitoIdpServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonCognitoIdpServiceRolePolicy") + ManagedPolicyAmazonCognitoPowerUser = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCognitoPowerUser") + ManagedPolicyAmazonCognitoReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCognitoReadOnly") + ManagedPolicyAmazonCognitoUnAuthedIdentitiesSessionPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCognitoUnAuthedIdentitiesSessionPolicy") + ManagedPolicyAmazonCognitoUnauthenticatedIdentities = ManagedPolicy("arn:aws:iam::aws:policy/AmazonCognitoUnauthenticatedIdentities") + ManagedPolicyAmazonConnectCampaignsServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonConnectCampaignsServiceLinkedRolePolicy") + ManagedPolicyAmazonConnectReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonConnectReadOnlyAccess") + ManagedPolicyAmazonConnectServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonConnectServiceLinkedRolePolicy") + ManagedPolicyAmazonConnectSynchronizationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonConnectSynchronizationServiceRolePolicy") + ManagedPolicyAmazonConnectVoiceIDFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonConnectVoiceIDFullAccess") + ManagedPolicy_AmazonConnect_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonConnect_FullAccess") + ManagedPolicyAmazonDMSCloudWatchLogsRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole") + ManagedPolicyAmazonDMSRedshiftS3Role = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonDMSRedshiftS3Role") + ManagedPolicyAmazonDMSVPCManagementRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonDMSVPCManagementRole") + ManagedPolicyAmazonDRSVPCManagement = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDRSVPCManagement") + ManagedPolicyAmazonDataZoneDomainExecutionRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonDataZoneDomainExecutionRolePolicy") + ManagedPolicyAmazonDataZoneEnvironmentRolePermissionsBoundary = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDataZoneEnvironmentRolePermissionsBoundary") + ManagedPolicyAmazonDataZoneFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDataZoneFullAccess") + ManagedPolicyAmazonDataZoneFullUserAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDataZoneFullUserAccess") + ManagedPolicyAmazonDataZoneGlueManageAccessRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonDataZoneGlueManageAccessRolePolicy") + ManagedPolicyAmazonDataZoneRedshiftGlueProvisioningPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDataZoneRedshiftGlueProvisioningPolicy") + ManagedPolicyAmazonDataZoneRedshiftManageAccessRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonDataZoneRedshiftManageAccessRolePolicy") + ManagedPolicyAmazonDetectiveFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDetectiveFullAccess") + ManagedPolicyAmazonDetectiveInvestigatorAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDetectiveInvestigatorAccess") + ManagedPolicyAmazonDetectiveMemberAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDetectiveMemberAccess") + ManagedPolicyAmazonDetectiveOrganizationsAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDetectiveOrganizationsAccess") + ManagedPolicyAmazonDetectiveServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonDetectiveServiceLinkedRolePolicy") + ManagedPolicyAmazonDevOpsGuruConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDevOpsGuruConsoleFullAccess") + ManagedPolicyAmazonDevOpsGuruFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDevOpsGuruFullAccess") + ManagedPolicyAmazonDevOpsGuruOrganizationsAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDevOpsGuruOrganizationsAccess") + ManagedPolicyAmazonDevOpsGuruReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDevOpsGuruReadOnlyAccess") + ManagedPolicyAmazonDevOpsGuruServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonDevOpsGuruServiceRolePolicy") + ManagedPolicyAmazonDocDBElasticServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonDocDB-ElasticServiceRolePolicy") + ManagedPolicyAmazonDocDBConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDocDBConsoleFullAccess") + ManagedPolicyAmazonDocDBElasticFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDocDBElasticFullAccess") + ManagedPolicyAmazonDocDBElasticReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDocDBElasticReadOnlyAccess") + ManagedPolicyAmazonDocDBFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDocDBFullAccess") + ManagedPolicyAmazonDocDBReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDocDBReadOnlyAccess") + ManagedPolicyAmazonDynamoDBFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDynamoDBFullAccess") + ManagedPolicyAmazonDynamoDBFullAccesswithDataPipeline = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDynamoDBFullAccesswithDataPipeline") + ManagedPolicyAmazonDynamoDBReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess") + ManagedPolicyAmazonEBSCSIDriverPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy") + ManagedPolicyAmazonEC2ContainerRegistryFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryFullAccess") + ManagedPolicyAmazonEC2ContainerRegistryPowerUser = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPowerUser") + ManagedPolicyAmazonEC2ContainerRegistryReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly") + ManagedPolicyAmazonEC2ContainerServiceAutoscaleRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceAutoscaleRole") + ManagedPolicyAmazonEC2ContainerServiceEventsRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceEventsRole") + // Deprecated: This policy is deprecated and will be removed in a future release. Use AmazonECS_FullAccess instead. + ManagedPolicyAmazonEC2ContainerServiceFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2ContainerServiceFullAccess") + ManagedPolicyAmazonEC2ContainerServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceRole") + ManagedPolicyAmazonEC2ContainerServiceforEC2Role = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role") + ManagedPolicyAmazonEC2FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2FullAccess") + ManagedPolicyAmazonEC2ReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicyAmazonEC2ReportsAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2ReportsAccess") + ManagedPolicyAmazonEC2RolePolicyForLaunchWizard = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEC2RolePolicyForLaunchWizard") + ManagedPolicyAmazonEC2RoleforAWSCodeDeploy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforAWSCodeDeploy") + ManagedPolicyAmazonEC2RoleforAWSCodeDeployLimited = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforAWSCodeDeployLimited") + ManagedPolicyAmazonEC2RoleforDataPipelineRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforDataPipelineRole") + ManagedPolicyAmazonEC2RoleforSSM = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM") + ManagedPolicyAmazonEC2SpotFleetAutoscaleRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetAutoscaleRole") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicyAmazonEC2SpotFleetRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetRole") + ManagedPolicyAmazonEC2SpotFleetTaggingRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEC2SpotFleetTaggingRole") + ManagedPolicyAmazonECSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonECS_FullAccess") + ManagedPolicyAmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity") + ManagedPolicyAmazonECSInfrastructureRolePolicyForVolumes = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForVolumes") + ManagedPolicyAmazonECSServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonECSServiceRolePolicy") + ManagedPolicyAmazonECSTaskExecutionRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy") + ManagedPolicyAmazonEFSCSIDriverPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy") + ManagedPolicyAmazonEKSClusterPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEKSClusterPolicy") + ManagedPolicyAmazonEKSConnectorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEKSConnectorServiceRolePolicy") + ManagedPolicyAmazonEKSFargatePodExecutionRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEKSFargatePodExecutionRolePolicy") + ManagedPolicyAmazonEKSForFargateServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEKSForFargateServiceRolePolicy") + ManagedPolicyAmazonEKSLocalOutpostClusterPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEKSLocalOutpostClusterPolicy") + ManagedPolicyAmazonEKSLocalOutpostServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEKSLocalOutpostServiceRolePolicy") + ManagedPolicyAmazonEKSServicePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEKSServicePolicy") + ManagedPolicyAmazonEKSServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEKSServiceRolePolicy") + ManagedPolicyAmazonEKSVPCResourceController = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEKSVPCResourceController") + ManagedPolicyAmazonEKSWorkerNodePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy") + ManagedPolicy_AmazonEKS_CNI_Policy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy") + ManagedPolicyAmazonEMRCleanupPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEMRCleanupPolicy") + ManagedPolicyAmazonEMRContainersServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEMRContainersServiceRolePolicy") + ManagedPolicy_AmazonEMRFullAccessPolicy_v2 = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEMRFullAccessPolicy_v2") + ManagedPolicy_AmazonEMRReadOnlyAccessPolicy_v2 = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEMRReadOnlyAccessPolicy_v2") + ManagedPolicyAmazonEMRServerlessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEMRServerlessServiceRolePolicy") + ManagedPolicy_AmazonEMRServicePolicy_v2 = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonEMRServicePolicy_v2") + ManagedPolicyAmazonESCognitoAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonESCognitoAccess") + ManagedPolicyAmazonESFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonESFullAccess") + ManagedPolicyAmazonESReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonESReadOnlyAccess") + ManagedPolicyAmazonElastiCacheFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElastiCacheFullAccess") + ManagedPolicyAmazonElastiCacheReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElastiCacheReadOnlyAccess") + ManagedPolicyAmazonElasticContainerRegistryPublicFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticContainerRegistryPublicFullAccess") + ManagedPolicyAmazonElasticContainerRegistryPublicPowerUser = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticContainerRegistryPublicPowerUser") + ManagedPolicyAmazonElasticContainerRegistryPublicReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticContainerRegistryPublicReadOnly") + ManagedPolicyAmazonElasticFileSystemClientFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticFileSystemClientFullAccess") + ManagedPolicyAmazonElasticFileSystemClientReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticFileSystemClientReadOnlyAccess") + ManagedPolicyAmazonElasticFileSystemClientReadWriteAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticFileSystemClientReadWriteAccess") + ManagedPolicyAmazonElasticFileSystemFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticFileSystemFullAccess") + ManagedPolicyAmazonElasticFileSystemReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticFileSystemReadOnlyAccess") + ManagedPolicyAmazonElasticFileSystemServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonElasticFileSystemServiceRolePolicy") + ManagedPolicyAmazonElasticFileSystemsUtils = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticFileSystemsUtils") + ManagedPolicyAmazonElasticMapReduceEditorsRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceEditorsRole") + ManagedPolicyAmazonElasticMapReduceFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticMapReduceFullAccess") + ManagedPolicyAmazonElasticMapReducePlacementGroupPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticMapReducePlacementGroupPolicy") + ManagedPolicyAmazonElasticMapReduceReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticMapReduceReadOnlyAccess") + ManagedPolicyAmazonElasticMapReduceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceRole") + ManagedPolicyAmazonElasticMapReduceforAutoScalingRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforAutoScalingRole") + ManagedPolicyAmazonElasticMapReduceforEC2Role = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonElasticMapReduceforEC2Role") + // Deprecated: This policy is deprecated and will be removed in a future release. Use ElasticTranscoder_FullAccess instead. + ManagedPolicyAmazonElasticTranscoderFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticTranscoderFullAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. Use ElasticTranscoder_JobsSubmitter instead. + ManagedPolicyAmazonElasticTranscoderJobsSubmitter = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticTranscoderJobsSubmitter") + // Deprecated: This policy is deprecated and will be removed in a future release. Use ElasticTranscoder_ReadOnlyAccess instead. + ManagedPolicyAmazonElasticTranscoderReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticTranscoderReadOnlyAccess") + ManagedPolicyAmazonElasticTranscoderRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonElasticTranscoderRole") + ManagedPolicy_ElasticTranscoder_FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticTranscoder_FullAccess") + ManagedPolicy_ElasticTranscoder_JobsSubmitter = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticTranscoder_JobsSubmitter") + ManagedPolicy_ElasticTranscoder_ReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonElasticTranscoder_ReadOnlyAccess") + ManagedPolicyAmazonElasticsearchServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonElasticsearchServiceRolePolicy") + ManagedPolicyAmazonEventBridgeApiDestinationsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEventBridgeApiDestinationsServiceRolePolicy") + ManagedPolicyAmazonEventBridgeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgeFullAccess") + ManagedPolicyAmazonEventBridgePipesFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgePipesFullAccess") + ManagedPolicyAmazonEventBridgePipesOperatorAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgePipesOperatorAccess") + ManagedPolicyAmazonEventBridgePipesReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgePipesReadOnlyAccess") + ManagedPolicyAmazonEventBridgeReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgeReadOnlyAccess") + ManagedPolicyAmazonEventBridgeSchedulerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgeSchedulerFullAccess") + ManagedPolicyAmazonEventBridgeSchedulerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgeSchedulerReadOnlyAccess") + ManagedPolicyAmazonEventBridgeSchemasFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgeSchemasFullAccess") + ManagedPolicyAmazonEventBridgeSchemasReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonEventBridgeSchemasReadOnlyAccess") + ManagedPolicyAmazonEventBridgeSchemasServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonEventBridgeSchemasServiceRolePolicy") + ManagedPolicyAmazonFISServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonFISServiceRolePolicy") + ManagedPolicyAmazonFSxConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonFSxConsoleFullAccess") + ManagedPolicyAmazonFSxConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonFSxConsoleReadOnlyAccess") + ManagedPolicyAmazonFSxFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonFSxFullAccess") + ManagedPolicyAmazonFSxReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonFSxReadOnlyAccess") + ManagedPolicyAmazonFSxServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonFSxServiceRolePolicy") + ManagedPolicyAmazonForecastFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonForecastFullAccess") + ManagedPolicyAmazonFraudDetectorFullAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonFraudDetectorFullAccessPolicy") + ManagedPolicyAmazonFreeRTOSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonFreeRTOSFullAccess") + ManagedPolicyAmazonFreeRTOSOTAUpdate = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonFreeRTOSOTAUpdate") + ManagedPolicyAmazonGlacierFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonGlacierFullAccess") + ManagedPolicyAmazonGlacierReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonGlacierReadOnlyAccess") + ManagedPolicyAmazonGrafanaAthenaAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonGrafanaAthenaAccess") + ManagedPolicyAmazonGrafanaCloudWatchAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonGrafanaCloudWatchAccess") + ManagedPolicyAmazonGrafanaRedshiftAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonGrafanaRedshiftAccess") + ManagedPolicyAmazonGrafanaServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonGrafanaServiceLinkedRolePolicy") + ManagedPolicyAmazonGuardDutyFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonGuardDutyFullAccess") + ManagedPolicyAmazonGuardDutyMalwareProtectionServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonGuardDutyMalwareProtectionServiceRolePolicy") + ManagedPolicyAmazonGuardDutyReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonGuardDutyReadOnlyAccess") + ManagedPolicyAmazonGuardDutyServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonGuardDutyServiceRolePolicy") + ManagedPolicyAmazonHealthLakeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHealthLakeFullAccess") + ManagedPolicyAmazonHealthLakeReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHealthLakeReadOnlyAccess") + ManagedPolicyAmazonHoneycodeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHoneycodeFullAccess") + ManagedPolicyAmazonHoneycodeReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHoneycodeReadOnlyAccess") + ManagedPolicyAmazonHoneycodeServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonHoneycodeServiceRolePolicy") + ManagedPolicyAmazonHoneycodeTeamAssociationFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHoneycodeTeamAssociationFullAccess") + ManagedPolicyAmazonHoneycodeTeamAssociationReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHoneycodeTeamAssociationReadOnlyAccess") + ManagedPolicyAmazonHoneycodeWorkbookFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHoneycodeWorkbookFullAccess") + ManagedPolicyAmazonHoneycodeWorkbookReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonHoneycodeWorkbookReadOnlyAccess") + ManagedPolicyAmazonInspector2AgentlessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonInspector2AgentlessServiceRolePolicy") + ManagedPolicyAmazonInspector2FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonInspector2FullAccess") + ManagedPolicyAmazonInspector2ManagedCisPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonInspector2ManagedCisPolicy") + ManagedPolicyAmazonInspector2ReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonInspector2ReadOnlyAccess") + ManagedPolicyAmazonInspector2ServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonInspector2ServiceRolePolicy") + ManagedPolicyAmazonInspectorFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonInspectorFullAccess") + ManagedPolicyAmazonInspectorReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonInspectorReadOnlyAccess") + ManagedPolicyAmazonInspectorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonInspectorServiceRolePolicy") + ManagedPolicyAmazonKendraFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKendraFullAccess") + ManagedPolicyAmazonKendraReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKendraReadOnlyAccess") + ManagedPolicyAmazonKeyspacesFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess") + ManagedPolicyAmazonKeyspacesReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKeyspacesReadOnlyAccess") + ManagedPolicy_AmazonKeyspacesReadOnlyAccess_v2 = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKeyspacesReadOnlyAccess_v2") + ManagedPolicyAmazonKinesisAnalyticsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisAnalyticsFullAccess") + ManagedPolicyAmazonKinesisAnalyticsReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisAnalyticsReadOnly") + ManagedPolicyAmazonKinesisFirehoseFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisFirehoseFullAccess") + ManagedPolicyAmazonKinesisFirehoseReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisFirehoseReadOnlyAccess") + ManagedPolicyAmazonKinesisFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisFullAccess") + ManagedPolicyAmazonKinesisReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisReadOnlyAccess") + ManagedPolicyAmazonKinesisVideoStreamsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisVideoStreamsFullAccess") + ManagedPolicyAmazonKinesisVideoStreamsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonKinesisVideoStreamsReadOnlyAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicy_AmazonLaunchWizard_Fullaccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLaunchWizard_Fullaccess") + ManagedPolicyAmazonLaunchWizardFullAccessV2 = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLaunchWizardFullAccessV2") + ManagedPolicyAmazonLexChannelsAccess = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonLexChannelsAccess") + ManagedPolicyAmazonLexFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLexFullAccess") + ManagedPolicyAmazonLexReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLexReadOnly") + ManagedPolicyAmazonLexReplicationPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonLexReplicationPolicy") + ManagedPolicyAmazonLexRunBotsOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLexRunBotsOnly") + ManagedPolicyAmazonLexV2BotPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonLexV2BotPolicy") + ManagedPolicyAmazonLookoutEquipmentFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutEquipmentFullAccess") + ManagedPolicyAmazonLookoutEquipmentReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutEquipmentReadOnlyAccess") + ManagedPolicyAmazonLookoutMetricsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutMetricsFullAccess") + ManagedPolicyAmazonLookoutMetricsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutMetricsReadOnlyAccess") + ManagedPolicyAmazonLookoutVisionConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutVisionConsoleFullAccess") + ManagedPolicyAmazonLookoutVisionConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutVisionConsoleReadOnlyAccess") + ManagedPolicyAmazonLookoutVisionFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutVisionFullAccess") + ManagedPolicyAmazonLookoutVisionReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonLookoutVisionReadOnlyAccess") + ManagedPolicyAmazonMCSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMCSFullAccess") + ManagedPolicyAmazonMCSReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMCSReadOnlyAccess") + ManagedPolicyAmazonMQApiFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMQApiFullAccess") + ManagedPolicyAmazonMQApiReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMQApiReadOnlyAccess") + ManagedPolicyAmazonMQFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMQFullAccess") + ManagedPolicyAmazonMQReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMQReadOnlyAccess") + ManagedPolicyAmazonMQServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonMQServiceRolePolicy") + ManagedPolicyAmazonMSKConnectReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMSKConnectReadOnlyAccess") + ManagedPolicyAmazonMSKFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMSKFullAccess") + ManagedPolicyAmazonMSKReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMSKReadOnlyAccess") + ManagedPolicyAmazonMWAAServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonMWAAServiceRolePolicy") + ManagedPolicyAmazonMachineLearningBatchPredictionsAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMachineLearningBatchPredictionsAccess") + ManagedPolicyAmazonMachineLearningCreateOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMachineLearningCreateOnlyAccess") + ManagedPolicyAmazonMachineLearningFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMachineLearningFullAccess") + ManagedPolicyAmazonMachineLearningManageRealTimeEndpointOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMachineLearningManageRealTimeEndpointOnlyAccess") + ManagedPolicyAmazonMachineLearningReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMachineLearningReadOnlyAccess") + ManagedPolicyAmazonMachineLearningRealTimePredictionOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMachineLearningRealTimePredictionOnlyAccess") + // Deprecated: This policy is deprecated. Use AmazonMachineLearningRoleforRedshiftDataSourceV3 instead. + ManagedPolicyAmazonMachineLearningRoleforRedshiftDataSource = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonMachineLearningRoleforRedshiftDataSource") + ManagedPolicyAmazonMachineLearningRoleforRedshiftDataSourceV3 = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonMachineLearningRoleforRedshiftDataSourceV3") + ManagedPolicyAmazonMacieFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMacieFullAccess") + ManagedPolicyAmazonMacieHandshakeRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonMacieHandshakeRole") + ManagedPolicyAmazonMacieReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMacieReadOnlyAccess") + ManagedPolicyAmazonMacieServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonMacieServiceRole") + ManagedPolicyAmazonMacieServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonMacieServiceRolePolicy") + ManagedPolicyAmazonManagedBlockchainConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonManagedBlockchainConsoleFullAccess") + ManagedPolicyAmazonManagedBlockchainFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonManagedBlockchainFullAccess") + ManagedPolicyAmazonManagedBlockchainReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonManagedBlockchainReadOnlyAccess") + ManagedPolicyAmazonManagedBlockchainServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonManagedBlockchainServiceRolePolicy") + ManagedPolicyAmazonMechanicalTurkFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMechanicalTurkFullAccess") + ManagedPolicyAmazonMechanicalTurkReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMechanicalTurkReadOnly") + ManagedPolicyAmazonMemoryDBFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMemoryDBFullAccess") + ManagedPolicyAmazonMemoryDBReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMemoryDBReadOnlyAccess") + ManagedPolicyAmazonMobileAnalyticsFinancialReportAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMobileAnalyticsFinancialReportAccess") + ManagedPolicyAmazonMobileAnalyticsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMobileAnalyticsFullAccess") + ManagedPolicyAmazonMobileAnalyticsNonfinancialReportAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMobileAnalyticsNon-financialReportAccess") + ManagedPolicyAmazonMobileAnalyticsWriteOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMobileAnalyticsWriteOnlyAccess") + ManagedPolicyAmazonMonitronFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonMonitronFullAccess") + ManagedPolicyAmazonNimbleStudioLaunchProfileWorker = ManagedPolicy("arn:aws:iam::aws:policy/AmazonNimbleStudio-LaunchProfileWorker") + ManagedPolicyAmazonNimbleStudioStudioAdmin = ManagedPolicy("arn:aws:iam::aws:policy/AmazonNimbleStudio-StudioAdmin") + ManagedPolicyAmazonNimbleStudioStudioUser = ManagedPolicy("arn:aws:iam::aws:policy/AmazonNimbleStudio-StudioUser") + ManagedPolicyAmazonOmicsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOmicsFullAccess") + ManagedPolicyAmazonOmicsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOmicsReadOnlyAccess") + ManagedPolicyAmazonOneEnterpriseFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOneEnterpriseFullAccess") + ManagedPolicyAmazonOneEnterpriseInstallerAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOneEnterpriseInstallerAccess") + ManagedPolicyAmazonOneEnterpriseReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOneEnterpriseReadOnlyAccess") + ManagedPolicyAmazonOpenSearchDashboardsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonOpenSearchDashboardsServiceRolePolicy") + ManagedPolicyAmazonOpenSearchIngestionFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOpenSearchIngestionFullAccess") + ManagedPolicyAmazonOpenSearchIngestionReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOpenSearchIngestionReadOnlyAccess") + ManagedPolicyAmazonOpenSearchIngestionServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonOpenSearchIngestionServiceRolePolicy") + ManagedPolicyAmazonOpenSearchServerlessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonOpenSearchServerlessServiceRolePolicy") + ManagedPolicyAmazonOpenSearchServiceCognitoAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOpenSearchServiceCognitoAccess") + ManagedPolicyAmazonOpenSearchServiceFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOpenSearchServiceFullAccess") + ManagedPolicyAmazonOpenSearchServiceReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonOpenSearchServiceReadOnlyAccess") + ManagedPolicyAmazonOpenSearchServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonOpenSearchServiceRolePolicy") + ManagedPolicyAmazonPersonalizeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonPersonalizeFullAccess") + ManagedPolicyAmazonPollyFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonPollyFullAccess") + ManagedPolicyAmazonPollyReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonPollyReadOnlyAccess") + ManagedPolicyAmazonPrometheusConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonPrometheusConsoleFullAccess") + ManagedPolicyAmazonPrometheusFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonPrometheusFullAccess") + ManagedPolicyAmazonPrometheusQueryAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonPrometheusQueryAccess") + ManagedPolicyAmazonPrometheusRemoteWriteAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonPrometheusRemoteWriteAccess") + ManagedPolicyAmazonPrometheusScraperServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonPrometheusScraperServiceRolePolicy") + ManagedPolicyAmazonQFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonQFullAccess") + ManagedPolicyAmazonQLDBConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonQLDBConsoleFullAccess") + ManagedPolicyAmazonQLDBFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonQLDBFullAccess") + ManagedPolicyAmazonQLDBReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonQLDBReadOnly") + ManagedPolicyAmazonRDSBetaServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonRDSBetaServiceRolePolicy") + ManagedPolicyAmazonRDSCustomInstanceProfileRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRDSCustomInstanceProfileRolePolicy") + ManagedPolicyAmazonRDSCustomPreviewServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonRDSCustomPreviewServiceRolePolicy") + ManagedPolicyAmazonRDSCustomServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonRDSCustomServiceRolePolicy") + ManagedPolicyAmazonRDSDataFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRDSDataFullAccess") + ManagedPolicyAmazonRDSDirectoryServiceAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonRDSDirectoryServiceAccess") + ManagedPolicyAmazonRDSEnhancedMonitoringRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonRDSEnhancedMonitoringRole") + ManagedPolicyAmazonRDSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRDSFullAccess") + ManagedPolicyAmazonRDSPerformanceInsightsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRDSPerformanceInsightsFullAccess") + ManagedPolicyAmazonRDSPerformanceInsightsReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRDSPerformanceInsightsReadOnly") + ManagedPolicyAmazonRDSPreviewServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonRDSPreviewServiceRolePolicy") + ManagedPolicyAmazonRDSReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRDSReadOnlyAccess") + ManagedPolicyAmazonRDSServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonRDSServiceRolePolicy") + ManagedPolicyAmazonRedshiftAllCommandsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftAllCommandsFullAccess") + ManagedPolicyAmazonRedshiftDataFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftDataFullAccess") + ManagedPolicyAmazonRedshiftFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftFullAccess") + ManagedPolicyAmazonRedshiftQueryEditor = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftQueryEditor") + ManagedPolicyAmazonRedshiftQueryEditorV2FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2FullAccess") + ManagedPolicyAmazonRedshiftQueryEditorV2NoSharing = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2NoSharing") + ManagedPolicyAmazonRedshiftQueryEditorV2ReadSharing = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2ReadSharing") + ManagedPolicyAmazonRedshiftQueryEditorV2ReadWriteSharing = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftQueryEditorV2ReadWriteSharing") + ManagedPolicyAmazonRedshiftReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRedshiftReadOnlyAccess") + ManagedPolicyAmazonRedshiftServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonRedshiftServiceLinkedRolePolicy") + ManagedPolicyAmazonRekognitionCustomLabelsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRekognitionCustomLabelsFullAccess") + ManagedPolicyAmazonRekognitionFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRekognitionFullAccess") + ManagedPolicyAmazonRekognitionReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRekognitionReadOnlyAccess") + ManagedPolicyAmazonRekognitionServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonRekognitionServiceRole") + ManagedPolicyAmazonRoute53AutoNamingFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53AutoNamingFullAccess") + ManagedPolicyAmazonRoute53AutoNamingReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53AutoNamingReadOnlyAccess") + ManagedPolicyAmazonRoute53AutoNamingRegistrantAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53AutoNamingRegistrantAccess") + ManagedPolicyAmazonRoute53DomainsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53DomainsFullAccess") + ManagedPolicyAmazonRoute53DomainsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53DomainsReadOnlyAccess") + ManagedPolicyAmazonRoute53FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53FullAccess") + ManagedPolicyAmazonRoute53ReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53ReadOnlyAccess") + ManagedPolicyAmazonRoute53RecoveryClusterFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53RecoveryClusterFullAccess") + ManagedPolicyAmazonRoute53RecoveryClusterReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53RecoveryClusterReadOnlyAccess") + ManagedPolicyAmazonRoute53RecoveryControlConfigFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53RecoveryControlConfigFullAccess") + ManagedPolicyAmazonRoute53RecoveryControlConfigReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53RecoveryControlConfigReadOnlyAccess") + ManagedPolicyAmazonRoute53RecoveryReadinessFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53RecoveryReadinessFullAccess") + ManagedPolicyAmazonRoute53RecoveryReadinessReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53RecoveryReadinessReadOnlyAccess") + ManagedPolicyAmazonRoute53ResolverFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53ResolverFullAccess") + ManagedPolicyAmazonRoute53ResolverReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonRoute53ResolverReadOnlyAccess") + ManagedPolicyAmazonS3FullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonS3FullAccess") + ManagedPolicyAmazonS3ObjectLambdaExecutionRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonS3ObjectLambdaExecutionRolePolicy") + ManagedPolicyAmazonS3OutpostsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonS3OutpostsFullAccess") + ManagedPolicyAmazonS3OutpostsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonS3OutpostsReadOnlyAccess") + ManagedPolicyAmazonS3ReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess") + ManagedPolicyAmazonSESFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSESFullAccess") + ManagedPolicyAmazonSESReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSESReadOnlyAccess") + ManagedPolicyAmazonSNSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSNSFullAccess") + ManagedPolicyAmazonSNSReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSNSReadOnlyAccess") + ManagedPolicyAmazonSNSRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSNSRole") + ManagedPolicyAmazonSQSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSQSFullAccess") + ManagedPolicyAmazonSQSReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSQSReadOnlyAccess") + ManagedPolicyAmazonSSMAutomationApproverAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSSMAutomationApproverAccess") + ManagedPolicyAmazonSSMAutomationRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSSMAutomationRole") + ManagedPolicyAmazonSSMDirectoryServiceAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSSMDirectoryServiceAccess") + ManagedPolicyAmazonSSMFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSSMFullAccess") + ManagedPolicyAmazonSSMMaintenanceWindowRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSSMMaintenanceWindowRole") + ManagedPolicyAmazonSSMManagedEC2InstanceDefaultPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSSMManagedEC2InstanceDefaultPolicy") + ManagedPolicyAmazonSSMManagedInstanceCore = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore") + ManagedPolicyAmazonSSMPatchAssociation = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSSMPatchAssociation") + ManagedPolicyAmazonSSMReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSSMReadOnlyAccess") + ManagedPolicyAmazonSSMServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonSSMServiceRolePolicy") + ManagedPolicyAmazonSageMakerAdminServiceCatalogProductsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerAdmin-ServiceCatalogProductsServiceRolePolicy") + ManagedPolicyAmazonSageMakerCanvasAIServicesAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerCanvasAIServicesAccess") + ManagedPolicyAmazonSageMakerCanvasBedrockAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerCanvasBedrockAccess") + ManagedPolicyAmazonSageMakerCanvasDataPrepFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerCanvasDataPrepFullAccess") + ManagedPolicyAmazonSageMakerCanvasDirectDeployAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerCanvasDirectDeployAccess") + ManagedPolicyAmazonSageMakerCanvasForecastAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerCanvasForecastAccess") + ManagedPolicyAmazonSageMakerCanvasFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerCanvasFullAccess") + ManagedPolicyAmazonSageMakerClusterInstanceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerClusterInstanceRolePolicy") + ManagedPolicyAmazonSageMakerCoreServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonSageMakerCoreServiceRolePolicy") + ManagedPolicyAmazonSageMakerEdgeDeviceFleetPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerEdgeDeviceFleetPolicy") + ManagedPolicyAmazonSageMakerFeatureStoreAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerFeatureStoreAccess") + ManagedPolicyAmazonSageMakerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerFullAccess") + ManagedPolicyAmazonSageMakerGeospatialExecutionRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerGeospatialExecutionRole") + ManagedPolicyAmazonSageMakerGeospatialFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerGeospatialFullAccess") + ManagedPolicyAmazonSageMakerGroundTruthExecution = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerGroundTruthExecution") + ManagedPolicyAmazonSageMakerMechanicalTurkAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerMechanicalTurkAccess") + ManagedPolicyAmazonSageMakerModelGovernanceUseAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerModelGovernanceUseAccess") + ManagedPolicyAmazonSageMakerModelRegistryFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerModelRegistryFullAccess") + ManagedPolicyAmazonSageMakerNotebooksServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonSageMakerNotebooksServiceRolePolicy") + ManagedPolicyAmazonSageMakerPartnerServiceCatalogProductsApiGatewayServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerPartnerServiceCatalogProductsApiGatewayServiceRolePolicy") + ManagedPolicyAmazonSageMakerPartnerServiceCatalogProductsCloudFormationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerPartnerServiceCatalogProductsCloudFormationServiceRolePolicy") + ManagedPolicyAmazonSageMakerPartnerServiceCatalogProductsLambdaServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerPartnerServiceCatalogProductsLambdaServiceRolePolicy") + ManagedPolicyAmazonSageMakerPipelinesIntegrations = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerPipelinesIntegrations") + ManagedPolicyAmazonSageMakerReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerReadOnly") + ManagedPolicyAmazonSageMakerServiceCatalogProductsApiGatewayServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerServiceCatalogProductsApiGatewayServiceRolePolicy") + ManagedPolicyAmazonSageMakerServiceCatalogProductsCloudformationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerServiceCatalogProductsCloudformationServiceRolePolicy") + ManagedPolicyAmazonSageMakerServiceCatalogProductsCodeBuildServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSageMakerServiceCatalogProductsCodeBuildServiceRolePolicy") + ManagedPolicyAmazonSageMakerServiceCatalogProductsCodePipelineServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerServiceCatalogProductsCodePipelineServiceRolePolicy") + ManagedPolicyAmazonSageMakerServiceCatalogProductsEventsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerServiceCatalogProductsEventsServiceRolePolicy") + ManagedPolicyAmazonSageMakerServiceCatalogProductsFirehoseServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerServiceCatalogProductsFirehoseServiceRolePolicy") + ManagedPolicyAmazonSageMakerServiceCatalogProductsGlueServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerServiceCatalogProductsGlueServiceRolePolicy") + ManagedPolicyAmazonSageMakerServiceCatalogProductsLambdaServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSageMakerServiceCatalogProductsLambdaServiceRolePolicy") + ManagedPolicyAmazonSecurityLakeAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSecurityLakeAdministrator") + ManagedPolicyAmazonSecurityLakeMetastoreManager = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonSecurityLakeMetastoreManager") + ManagedPolicyAmazonSecurityLakePermissionsBoundary = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSecurityLakePermissionsBoundary") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicyAmazonSumerianFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonSumerianFullAccess") + ManagedPolicyAmazonTextractFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonTextractFullAccess") + ManagedPolicyAmazonTextractServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmazonTextractServiceRole") + ManagedPolicyAmazonTimestreamConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonTimestreamConsoleFullAccess") + ManagedPolicyAmazonTimestreamFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonTimestreamFullAccess") + ManagedPolicyAmazonTimestreamInfluxDBFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonTimestreamInfluxDBFullAccess") + ManagedPolicyAmazonTimestreamInfluxDBServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonTimestreamInfluxDBServiceRolePolicy") + ManagedPolicyAmazonTimestreamReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonTimestreamReadOnlyAccess") + ManagedPolicyAmazonTranscribeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonTranscribeFullAccess") + ManagedPolicyAmazonTranscribeReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonTranscribeReadOnlyAccess") + ManagedPolicyAmazonVPCCrossAccountNetworkInterfaceOperations = ManagedPolicy("arn:aws:iam::aws:policy/AmazonVPCCrossAccountNetworkInterfaceOperations") + ManagedPolicyAmazonVPCFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonVPCFullAccess") + ManagedPolicyAmazonVPCNetworkAccessAnalyzerFullAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonVPCNetworkAccessAnalyzerFullAccessPolicy") + ManagedPolicyAmazonVPCReachabilityAnalyzerFullAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonVPCReachabilityAnalyzerFullAccessPolicy") + ManagedPolicyAmazonVPCReachabilityAnalyzerPathComponentReadPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AmazonVPCReachabilityAnalyzerPathComponentReadPolicy") + ManagedPolicyAmazonVPCReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonVPCReadOnlyAccess") + ManagedPolicyAmazonWorkDocsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkDocsFullAccess") + ManagedPolicyAmazonWorkDocsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkDocsReadOnlyAccess") + ManagedPolicyAmazonWorkMailEventsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonWorkMailEventsServiceRolePolicy") + ManagedPolicyAmazonWorkMailFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkMailFullAccess") + ManagedPolicyAmazonWorkMailMessageFlowFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkMailMessageFlowFullAccess") + ManagedPolicyAmazonWorkMailMessageFlowReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkMailMessageFlowReadOnlyAccess") + ManagedPolicyAmazonWorkMailReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkMailReadOnlyAccess") + ManagedPolicyAmazonWorkSpacesAdmin = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkSpacesAdmin") + ManagedPolicyAmazonWorkSpacesApplicationManagerAdminAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkSpacesApplicationManagerAdminAccess") + ManagedPolicyAmazonWorkSpacesSelfServiceAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkSpacesSelfServiceAccess") + ManagedPolicyAmazonWorkSpacesServiceAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkSpacesServiceAccess") + ManagedPolicyAmazonWorkSpacesWebReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkSpacesWebReadOnly") + ManagedPolicyAmazonWorkSpacesWebServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AmazonWorkSpacesWebServiceRolePolicy") + ManagedPolicyAmazonWorkspacesPCAAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonWorkspacesPCAAccess") + ManagedPolicyAmazonZocaloFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonZocaloFullAccess") + ManagedPolicyAmazonZocaloReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AmazonZocaloReadOnlyAccess") + ManagedPolicyAmplifyBackendDeployFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AmplifyBackendDeployFullAccess") + ManagedPolicyAppIntegrationsServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AppIntegrationsServiceLinkedRolePolicy") + ManagedPolicyAppRunnerNetworkingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AppRunnerNetworkingServiceRolePolicy") + ManagedPolicyAppRunnerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AppRunnerServiceRolePolicy") + ManagedPolicyApplicationAutoScalingForAmazonAppStreamAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ApplicationAutoScalingForAmazonAppStreamAccess") + ManagedPolicyApplicationDiscoveryServiceContinuousExportServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ApplicationDiscoveryServiceContinuousExportServiceRolePolicy") + ManagedPolicyAutoScalingConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AutoScalingConsoleFullAccess") + ManagedPolicyAutoScalingConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AutoScalingConsoleReadOnlyAccess") + ManagedPolicyAutoScalingFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/AutoScalingFullAccess") + ManagedPolicyAutoScalingNotificationAccessRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AutoScalingNotificationAccessRole") + ManagedPolicyAutoScalingReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/AutoScalingReadOnlyAccess") + ManagedPolicyAutoScalingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/AutoScalingServiceRolePolicy") + ManagedPolicyAwsGlueDataBrewFullAccessPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AwsGlueDataBrewFullAccessPolicy") + ManagedPolicyAwsGlueSessionUserRestrictedNotebookPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AwsGlueSessionUserRestrictedNotebookPolicy") + ManagedPolicyAwsGlueSessionUserRestrictedNotebookServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AwsGlueSessionUserRestrictedNotebookServiceRole") + ManagedPolicyAwsGlueSessionUserRestrictedPolicy = ManagedPolicy("arn:aws:iam::aws:policy/AwsGlueSessionUserRestrictedPolicy") + ManagedPolicyAwsGlueSessionUserRestrictedServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/AwsGlueSessionUserRestrictedServiceRole") + ManagedPolicyBatchServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/BatchServiceRolePolicy") + ManagedPolicyBilling = ManagedPolicy("arn:aws:iam::aws:policy/job-function/Billing") + ManagedPolicyCertificateManagerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CertificateManagerServiceRolePolicy") + ManagedPolicyClientVPNServiceConnectionsRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ClientVPNServiceConnectionsRolePolicy") + ManagedPolicyClientVPNServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ClientVPNServiceRolePolicy") + ManagedPolicyCloudFormationStackSetsOrgAdminServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudFormationStackSetsOrgAdminServiceRolePolicy") + ManagedPolicyCloudFormationStackSetsOrgMemberServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudFormationStackSetsOrgMemberServiceRolePolicy") + ManagedPolicyCloudFrontFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudFrontFullAccess") + ManagedPolicyCloudFrontReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudFrontReadOnlyAccess") + ManagedPolicyCloudHSMServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudHSMServiceRolePolicy") + ManagedPolicyCloudSearchFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudSearchFullAccess") + ManagedPolicyCloudSearchReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudSearchReadOnlyAccess") + ManagedPolicyCloudTrailServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudTrailServiceRolePolicy") + ManagedPolicyCloudWatchCrossAccountAccess = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudWatch-CrossAccountAccess") + ManagedPolicyCloudWatchActionsEC2Access = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchActionsEC2Access") + ManagedPolicyCloudWatchAgentAdminPolicy = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchAgentAdminPolicy") + ManagedPolicyCloudWatchAgentServerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy") + ManagedPolicyCloudWatchApplicationInsightsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchApplicationInsightsFullAccess") + ManagedPolicyCloudWatchApplicationInsightsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchApplicationInsightsReadOnlyAccess") + ManagedPolicyCloudWatchApplicationSignalsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudWatchApplicationSignalsServiceRolePolicy") + ManagedPolicyCloudWatchAutomaticDashboardsAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchAutomaticDashboardsAccess") + ManagedPolicyCloudWatchCrossAccountSharingConfiguration = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchCrossAccountSharingConfiguration") + ManagedPolicyCloudWatchEventsBuiltInTargetExecutionAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/CloudWatchEventsBuiltInTargetExecutionAccess") + ManagedPolicyCloudWatchEventsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchEventsFullAccess") + ManagedPolicyCloudWatchEventsInvocationAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/CloudWatchEventsInvocationAccess") + ManagedPolicyCloudWatchEventsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchEventsReadOnlyAccess") + ManagedPolicyCloudWatchEventsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudWatchEventsServiceRolePolicy") + ManagedPolicyCloudWatchFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchFullAccess") + ManagedPolicyCloudWatchFullAccessV2 = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchFullAccessV2") + ManagedPolicyCloudWatchInternetMonitorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudWatchInternetMonitorServiceRolePolicy") + ManagedPolicyCloudWatchLambdaInsightsExecutionRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchLambdaInsightsExecutionRolePolicy") + ManagedPolicyCloudWatchLogsCrossAccountSharingConfiguration = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchLogsCrossAccountSharingConfiguration") + ManagedPolicyCloudWatchLogsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchLogsFullAccess") + ManagedPolicyCloudWatchLogsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchLogsReadOnlyAccess") + ManagedPolicyCloudWatchNetworkMonitorServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudWatchNetworkMonitorServiceRolePolicy") + ManagedPolicyCloudWatchReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchReadOnlyAccess") + ManagedPolicyCloudWatchSyntheticsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchSyntheticsFullAccess") + ManagedPolicyCloudWatchSyntheticsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CloudWatchSyntheticsReadOnlyAccess") + ManagedPolicyCloudwatchApplicationInsightsServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CloudwatchApplicationInsightsServiceLinkedRolePolicy") + ManagedPolicyComprehendDataAccessRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ComprehendDataAccessRolePolicy") + ManagedPolicyComprehendFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ComprehendFullAccess") + ManagedPolicyComprehendMedicalFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ComprehendMedicalFullAccess") + ManagedPolicyComprehendReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/ComprehendReadOnly") + ManagedPolicyComputeOptimizerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/ComputeOptimizerReadOnlyAccess") + ManagedPolicyComputeOptimizerServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ComputeOptimizerServiceRolePolicy") + ManagedPolicyConfigConformsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ConfigConformsServiceRolePolicy") + ManagedPolicyCostOptimizationHubAdminAccess = ManagedPolicy("arn:aws:iam::aws:policy/CostOptimizationHubAdminAccess") + ManagedPolicyCostOptimizationHubReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/CostOptimizationHubReadOnlyAccess") + ManagedPolicyCostOptimizationHubServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CostOptimizationHubServiceRolePolicy") + ManagedPolicyCustomerProfilesServiceLinkedRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/CustomerProfilesServiceLinkedRolePolicy") + ManagedPolicyDAXServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/DAXServiceRolePolicy") + ManagedPolicyDataScientist = ManagedPolicy("arn:aws:iam::aws:policy/job-function/DataScientist") + ManagedPolicyDatabaseAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/job-function/DatabaseAdministrator") + ManagedPolicyDynamoDBCloudWatchContributorInsightsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/DynamoDBCloudWatchContributorInsightsServiceRolePolicy") + ManagedPolicyDynamoDBKinesisReplicationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/DynamoDBKinesisReplicationServiceRolePolicy") + ManagedPolicyDynamoDBReplicationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/DynamoDBReplicationServiceRolePolicy") + ManagedPolicyEC2FastLaunchServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/EC2FastLaunchServiceRolePolicy") + ManagedPolicyEC2FleetTimeShiftableServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/EC2FleetTimeShiftableServiceRolePolicy") + ManagedPolicyEC2ImageBuilderLifecycleExecutionPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/EC2ImageBuilderLifecycleExecutionPolicy") + ManagedPolicyEC2InstanceConnect = ManagedPolicy("arn:aws:iam::aws:policy/EC2InstanceConnect") + ManagedPolicyEC2InstanceProfileForImageBuilder = ManagedPolicy("arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilder") + ManagedPolicyEC2InstanceProfileForImageBuilderECRContainerBuilds = ManagedPolicy("arn:aws:iam::aws:policy/EC2InstanceProfileForImageBuilderECRContainerBuilds") + ManagedPolicyECRReplicationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ECRReplicationServiceRolePolicy") + ManagedPolicyEMRDescribeClusterPolicyForEMRWAL = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/EMRDescribeClusterPolicyForEMRWAL") + ManagedPolicyEc2ImageBuilderCrossAccountDistributionAccess = ManagedPolicy("arn:aws:iam::aws:policy/Ec2ImageBuilderCrossAccountDistributionAccess") + ManagedPolicyEc2InstanceConnectEndpoint = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/Ec2InstanceConnectEndpoint") + ManagedPolicyElastiCacheServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ElastiCacheServiceRolePolicy") + ManagedPolicyElasticLoadBalancingFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ElasticLoadBalancingFullAccess") + ManagedPolicyElasticLoadBalancingReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/ElasticLoadBalancingReadOnly") + ManagedPolicyElementalActivationsDownloadSoftwareAccess = ManagedPolicy("arn:aws:iam::aws:policy/ElementalActivationsDownloadSoftwareAccess") + ManagedPolicyElementalActivationsFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ElementalActivationsFullAccess") + ManagedPolicyElementalActivationsGenerateLicenses = ManagedPolicy("arn:aws:iam::aws:policy/ElementalActivationsGenerateLicenses") + ManagedPolicyElementalActivationsReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/ElementalActivationsReadOnlyAccess") + ManagedPolicyElementalAppliancesSoftwareFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ElementalAppliancesSoftwareFullAccess") + ManagedPolicyElementalAppliancesSoftwareReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/ElementalAppliancesSoftwareReadOnlyAccess") + ManagedPolicyElementalSupportCenterFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ElementalSupportCenterFullAccess") + ManagedPolicyFMSServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/FMSServiceRolePolicy") + ManagedPolicyFSxDeleteServiceLinkedRoleAccess = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/FSxDeleteServiceLinkedRoleAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. + ManagedPolicyFusionDevInternalServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/FusionDevInternalServiceRolePolicy") + ManagedPolicyGameLiftGameServerGroupPolicy = ManagedPolicy("arn:aws:iam::aws:policy/GameLiftGameServerGroupPolicy") + ManagedPolicyGlobalAcceleratorFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/GlobalAcceleratorFullAccess") + ManagedPolicyGlobalAcceleratorReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/GlobalAcceleratorReadOnlyAccess") + ManagedPolicyGreengrassOTAUpdateArtifactAccess = ManagedPolicy("arn:aws:iam::aws:policy/service-role/GreengrassOTAUpdateArtifactAccess") + ManagedPolicyGroundTruthSyntheticConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/GroundTruthSyntheticConsoleFullAccess") + ManagedPolicyGroundTruthSyntheticConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/GroundTruthSyntheticConsoleReadOnlyAccess") + ManagedPolicy_Health_OrganizationsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/Health_OrganizationsServiceRolePolicy") + ManagedPolicyIAMAccessAdvisorReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/IAMAccessAdvisorReadOnly") + ManagedPolicyIAMAccessAnalyzerFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/IAMAccessAnalyzerFullAccess") + ManagedPolicyIAMAccessAnalyzerReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/IAMAccessAnalyzerReadOnlyAccess") + ManagedPolicyIAMFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/IAMFullAccess") + ManagedPolicyIAMReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/IAMReadOnlyAccess") + ManagedPolicyIAMSelfManageServiceSpecificCredentials = ManagedPolicy("arn:aws:iam::aws:policy/IAMSelfManageServiceSpecificCredentials") + ManagedPolicyIAMUserChangePassword = ManagedPolicy("arn:aws:iam::aws:policy/IAMUserChangePassword") + ManagedPolicyIAMUserSSHKeys = ManagedPolicy("arn:aws:iam::aws:policy/IAMUserSSHKeys") + ManagedPolicyIVSFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/IVSFullAccess") + ManagedPolicyIVSReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/IVSReadOnlyAccess") + ManagedPolicyIVSRecordToS3 = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/IVSRecordToS3") + ManagedPolicyKafkaConnectServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/KafkaConnectServiceRolePolicy") + ManagedPolicyKafkaServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/KafkaServiceRolePolicy") + ManagedPolicyKeyspacesReplicationServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/KeyspacesReplicationServiceRolePolicy") + ManagedPolicyLakeFormationDataAccessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/LakeFormationDataAccessServiceRolePolicy") + ManagedPolicyLexBotPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/LexBotPolicy") + ManagedPolicyLexChannelPolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/LexChannelPolicy") + ManagedPolicyLightsailExportAccess = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/LightsailExportAccess") + ManagedPolicyMediaConnectGatewayInstanceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/MediaConnectGatewayInstanceRolePolicy") + ManagedPolicyMediaPackageServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/MediaPackageServiceRolePolicy") + ManagedPolicyMemoryDBServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/MemoryDBServiceRolePolicy") + ManagedPolicyMigrationHubDMSAccessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/MigrationHubDMSAccessServiceRolePolicy") + ManagedPolicyMigrationHubSMSAccessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/MigrationHubSMSAccessServiceRolePolicy") + ManagedPolicyMigrationHubServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/MigrationHubServiceRolePolicy") + ManagedPolicyMonitronServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/MonitronServiceRolePolicy") + ManagedPolicyNeptuneConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/NeptuneConsoleFullAccess") + ManagedPolicyNeptuneFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/NeptuneFullAccess") + ManagedPolicyNeptuneGraphReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/NeptuneGraphReadOnlyAccess") + ManagedPolicyNeptuneReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/NeptuneReadOnlyAccess") + ManagedPolicyNetworkAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/job-function/NetworkAdministrator") + ManagedPolicyOAMFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/OAMFullAccess") + ManagedPolicyOAMReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/OAMReadOnlyAccess") + ManagedPolicyPartnerCentralAccountManagementUserRoleAssociation = ManagedPolicy("arn:aws:iam::aws:policy/PartnerCentralAccountManagementUserRoleAssociation") + ManagedPolicyPowerUserAccess = ManagedPolicy("arn:aws:iam::aws:policy/PowerUserAccess") + ManagedPolicyQuickSightAccessForS3StorageManagementAnalyticsReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/service-role/QuickSightAccessForS3StorageManagementAnalyticsReadOnly") + ManagedPolicyRDSCloudHsmAuthorizationRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/RDSCloudHsmAuthorizationRole") + ManagedPolicyROSAAmazonEBSCSIDriverOperatorPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAAmazonEBSCSIDriverOperatorPolicy") + ManagedPolicyROSACloudNetworkConfigOperatorPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSACloudNetworkConfigOperatorPolicy") + ManagedPolicyROSAControlPlaneOperatorPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAControlPlaneOperatorPolicy") + ManagedPolicyROSAImageRegistryOperatorPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAImageRegistryOperatorPolicy") + ManagedPolicyROSAIngressOperatorPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAIngressOperatorPolicy") + ManagedPolicyROSAInstallerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAInstallerPolicy") + ManagedPolicyROSAKMSProviderPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAKMSProviderPolicy") + ManagedPolicyROSAKubeControllerPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAKubeControllerPolicy") + ManagedPolicyROSAManageSubscription = ManagedPolicy("arn:aws:iam::aws:policy/ROSAManageSubscription") + ManagedPolicyROSANodePoolManagementPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSANodePoolManagementPolicy") + ManagedPolicyROSASRESupportPolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSASRESupportPolicy") + ManagedPolicyROSAWorkerInstancePolicy = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ROSAWorkerInstancePolicy") + ManagedPolicyReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/ReadOnlyAccess") + ManagedPolicyResourceGroupsServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ResourceGroupsServiceRolePolicy") + ManagedPolicyResourceGroupsandTagEditorFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ResourceGroupsandTagEditorFullAccess") + ManagedPolicyResourceGroupsandTagEditorReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/ResourceGroupsandTagEditorReadOnlyAccess") + ManagedPolicyRoute53RecoveryReadinessServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/Route53RecoveryReadinessServiceRolePolicy") + ManagedPolicyRoute53ResolverServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/Route53ResolverServiceRolePolicy") + ManagedPolicyS3StorageLensServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/S3StorageLensServiceRolePolicy") + ManagedPolicySecretsManagerReadWrite = ManagedPolicy("arn:aws:iam::aws:policy/SecretsManagerReadWrite") + ManagedPolicySecurityAudit = ManagedPolicy("arn:aws:iam::aws:policy/SecurityAudit") + ManagedPolicySecurityLakeServiceLinkedRole = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/SecurityLakeServiceLinkedRole") + ManagedPolicyServerMigrationConnector = ManagedPolicy("arn:aws:iam::aws:policy/ServerMigrationConnector") + // Deprecated: This policy is deprecated and will be removed in a future release. Use AWSServerMigration_ServiceRole instead. + ManagedPolicyServerMigrationServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ServerMigrationServiceRole") + // Deprecated: This policy is deprecated and will be removed in a future release. Use AWSServiceCatalogAdminFullAccess instead. + ManagedPolicyServiceCatalogAdminFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ServiceCatalogAdminFullAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. Use AWSServiceCatalogAdminReadOnlyAccess instead. + ManagedPolicyServiceCatalogAdminReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/ServiceCatalogAdminReadOnlyAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. Use AWSServiceCatalogEndUserReadOnlyAccess instead. + ManagedPolicyServiceCatalogEndUserAccess = ManagedPolicy("arn:aws:iam::aws:policy/ServiceCatalogEndUserAccess") + // Deprecated: This policy is deprecated and will be removed in a future release. Use AWSServiceCatalogEndUserFullAccess instead. + ManagedPolicyServiceCatalogEndUserFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ServiceCatalogEndUserFullAccess") + ManagedPolicyServerMigrationServiceConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ServerMigrationServiceConsoleFullAccess") + ManagedPolicyServerMigrationServiceLaunchRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ServerMigrationServiceLaunchRole") + ManagedPolicyServerMigrationServiceRoleForInstanceValidation = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ServerMigrationServiceRoleForInstanceValidation") + ManagedPolicy_AWSServerMigration_ServiceRole = ManagedPolicy("arn:aws:iam::aws:policy/service-role/ServerMigration_ServiceRole") + ManagedPolicyServiceQuotasFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/ServiceQuotasFullAccess") + ManagedPolicyServiceQuotasReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/ServiceQuotasReadOnlyAccess") + ManagedPolicyServiceQuotasServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/ServiceQuotasServiceRolePolicy") + ManagedPolicySimpleWorkflowFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/SimpleWorkflowFullAccess") + ManagedPolicySupportUser = ManagedPolicy("arn:aws:iam::aws:policy/job-function/SupportUser") + ManagedPolicySystemAdministrator = ManagedPolicy("arn:aws:iam::aws:policy/job-function/SystemAdministrator") + ManagedPolicyTranslateFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/TranslateFullAccess") + ManagedPolicyTranslateReadOnly = ManagedPolicy("arn:aws:iam::aws:policy/TranslateReadOnly") + ManagedPolicyVMImportExportRoleForAWSConnector = ManagedPolicy("arn:aws:iam::aws:policy/service-role/VMImportExportRoleForAWSConnector") + ManagedPolicyVPCLatticeFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/VPCLatticeFullAccess") + ManagedPolicyVPCLatticeReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/VPCLatticeReadOnlyAccess") + ManagedPolicyVPCLatticeServicesInvokeAccess = ManagedPolicy("arn:aws:iam::aws:policy/VPCLatticeServicesInvokeAccess") + ManagedPolicyViewOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/job-function/ViewOnlyAccess") + ManagedPolicyWAFLoggingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/WAFLoggingServiceRolePolicy") + ManagedPolicyWAFRegionalLoggingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/WAFRegionalLoggingServiceRolePolicy") + ManagedPolicyWAFV2LoggingServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/WAFV2LoggingServiceRolePolicy") + ManagedPolicyWellArchitectedConsoleFullAccess = ManagedPolicy("arn:aws:iam::aws:policy/WellArchitectedConsoleFullAccess") + ManagedPolicyWellArchitectedConsoleReadOnlyAccess = ManagedPolicy("arn:aws:iam::aws:policy/WellArchitectedConsoleReadOnlyAccess") + ManagedPolicyWorkLinkServiceRolePolicy = ManagedPolicy("arn:aws:iam::aws:policy/WorkLinkServiceRolePolicy") +) + +func (ManagedPolicy) ElementType() reflect.Type { + return reflect.TypeOf((*ManagedPolicy)(nil)).Elem() +} + +func (e ManagedPolicy) ToManagedPolicyOutput() ManagedPolicyOutput { + return pulumi.ToOutput(e).(ManagedPolicyOutput) +} + +func (e ManagedPolicy) ToManagedPolicyOutputWithContext(ctx context.Context) ManagedPolicyOutput { + return pulumi.ToOutputWithContext(ctx, e).(ManagedPolicyOutput) +} + +func (e ManagedPolicy) ToManagedPolicyPtrOutput() ManagedPolicyPtrOutput { + return e.ToManagedPolicyPtrOutputWithContext(context.Background()) +} + +func (e ManagedPolicy) ToManagedPolicyPtrOutputWithContext(ctx context.Context) ManagedPolicyPtrOutput { + return ManagedPolicy(e).ToManagedPolicyOutputWithContext(ctx).ToManagedPolicyPtrOutputWithContext(ctx) +} + +func (e ManagedPolicy) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ManagedPolicy) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e ManagedPolicy) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e ManagedPolicy) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type ManagedPolicyOutput struct{ *pulumi.OutputState } + +func (ManagedPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ManagedPolicy)(nil)).Elem() +} + +func (o ManagedPolicyOutput) ToManagedPolicyOutput() ManagedPolicyOutput { + return o +} + +func (o ManagedPolicyOutput) ToManagedPolicyOutputWithContext(ctx context.Context) ManagedPolicyOutput { + return o +} + +func (o ManagedPolicyOutput) ToManagedPolicyPtrOutput() ManagedPolicyPtrOutput { + return o.ToManagedPolicyPtrOutputWithContext(context.Background()) +} + +func (o ManagedPolicyOutput) ToManagedPolicyPtrOutputWithContext(ctx context.Context) ManagedPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ManagedPolicy) *ManagedPolicy { + return &v + }).(ManagedPolicyPtrOutput) +} + +func (o ManagedPolicyOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o ManagedPolicyOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ManagedPolicy) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o ManagedPolicyOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ManagedPolicyOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e ManagedPolicy) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type ManagedPolicyPtrOutput struct{ *pulumi.OutputState } + +func (ManagedPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ManagedPolicy)(nil)).Elem() +} + +func (o ManagedPolicyPtrOutput) ToManagedPolicyPtrOutput() ManagedPolicyPtrOutput { + return o +} + +func (o ManagedPolicyPtrOutput) ToManagedPolicyPtrOutputWithContext(ctx context.Context) ManagedPolicyPtrOutput { + return o +} + +func (o ManagedPolicyPtrOutput) Elem() ManagedPolicyOutput { + return o.ApplyT(func(v *ManagedPolicy) ManagedPolicy { + if v != nil { + return *v + } + var ret ManagedPolicy + return ret + }).(ManagedPolicyOutput) +} + +func (o ManagedPolicyPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o ManagedPolicyPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *ManagedPolicy) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// ManagedPolicyInput is an input type that accepts values of the ManagedPolicy enum +// A concrete instance of `ManagedPolicyInput` can be one of the following: +// +// ManagedPolicyAPIGatewayServiceRolePolicy +// ManagedPolicyAWSAccountActivityAccess +// ManagedPolicyAWSAccountManagementFullAccess +// ManagedPolicyAWSAccountManagementReadOnlyAccess +// ManagedPolicyAWSAccountUsageReportAccess +// ManagedPolicyAWSAgentlessDiscoveryService +// ManagedPolicyAWSAppFabricFullAccess +// ManagedPolicyAWSAppFabricReadOnlyAccess +// ManagedPolicyAWSAppFabricServiceRolePolicy +// ManagedPolicyAWSAppMeshEnvoyAccess +// ManagedPolicyAWSAppMeshFullAccess +// ManagedPolicyAWSAppMeshPreviewEnvoyAccess +// ManagedPolicyAWSAppMeshPreviewServiceRolePolicy +// ManagedPolicyAWSAppMeshReadOnly +// ManagedPolicyAWSAppMeshServiceRolePolicy +// ManagedPolicyAWSAppRunnerFullAccess +// ManagedPolicyAWSAppRunnerReadOnlyAccess +// ManagedPolicyAWSAppRunnerServicePolicyForECRAccess +// ManagedPolicyAWSAppSyncAdministrator +// ManagedPolicyAWSAppSyncInvokeFullAccess +// ManagedPolicyAWSAppSyncPushToCloudWatchLogs +// ManagedPolicyAWSAppSyncSchemaAuthor +// ManagedPolicyAWSAppSyncServiceRolePolicy +// ManagedPolicyAWSApplicationAutoScalingCustomResourcePolicy +// ManagedPolicyAWSApplicationAutoscalingAppStreamFleetPolicy +// ManagedPolicyAWSApplicationAutoscalingCassandraTablePolicy +// ManagedPolicyAWSApplicationAutoscalingComprehendEndpointPolicy +// ManagedPolicyAWSApplicationAutoscalingDynamoDBTablePolicy +// ManagedPolicyAWSApplicationAutoscalingEC2SpotFleetRequestPolicy +// ManagedPolicyAWSApplicationAutoscalingECSServicePolicy +// ManagedPolicyAWSApplicationAutoscalingEMRInstanceGroupPolicy +// ManagedPolicyAWSApplicationAutoscalingElastiCacheRGPolicy +// ManagedPolicyAWSApplicationAutoscalingKafkaClusterPolicy +// ManagedPolicyAWSApplicationAutoscalingLambdaConcurrencyPolicy +// ManagedPolicyAWSApplicationAutoscalingNeptuneClusterPolicy +// ManagedPolicyAWSApplicationAutoscalingRDSClusterPolicy +// ManagedPolicyAWSApplicationAutoscalingSageMakerEndpointPolicy +// ManagedPolicyAWSApplicationDiscoveryAgentAccess +// ManagedPolicyAWSApplicationDiscoveryAgentlessCollectorAccess +// ManagedPolicyAWSApplicationDiscoveryServiceFullAccess +// ManagedPolicyAWSApplicationMigrationAgentInstallationPolicy +// ManagedPolicyAWSApplicationMigrationAgentPolicy +// ManagedPolicy_AWSApplicationMigrationAgentPolicy_v2 +// ManagedPolicyAWSApplicationMigrationConversionServerPolicy +// ManagedPolicyAWSApplicationMigrationEC2Access +// ManagedPolicyAWSApplicationMigrationFullAccess +// ManagedPolicyAWSApplicationMigrationMGHAccess +// ManagedPolicyAWSApplicationMigrationReadOnlyAccess +// ManagedPolicyAWSApplicationMigrationReplicationServerPolicy +// ManagedPolicyAWSApplicationMigrationSSMAccess +// ManagedPolicyAWSApplicationMigrationServiceEc2InstancePolicy +// ManagedPolicyAWSApplicationMigrationServiceRolePolicy +// ManagedPolicyAWSApplicationMigrationVCenterClientPolicy +// ManagedPolicyAWSArtifactAccountSync +// ManagedPolicyAWSArtifactReportsReadOnlyAccess +// ManagedPolicyAWSArtifactServiceRolePolicy +// ManagedPolicyAWSAuditManagerAdministratorAccess +// ManagedPolicyAWSAuditManagerServiceRolePolicy +// ManagedPolicyAWSAutoScalingPlansEC2AutoScalingPolicy +// ManagedPolicyAWSBackupAuditAccess +// ManagedPolicyAWSBackupDataTransferAccess +// ManagedPolicyAWSBackupFullAccess +// ManagedPolicyAWSBackupGatewayServiceRolePolicyForVirtualMachineMetadataSync +// ManagedPolicyAWSBackupOperatorAccess +// ManagedPolicyAWSBackupOrganizationAdminAccess +// ManagedPolicyAWSBackupRestoreAccessForSAPHANA +// ManagedPolicyAWSBackupServiceLinkedRolePolicyForBackup +// ManagedPolicyAWSBackupServiceLinkedRolePolicyForBackupTest +// ManagedPolicyAWSBackupServiceRolePolicyForBackup +// ManagedPolicyAWSBackupServiceRolePolicyForRestores +// ManagedPolicyAWSBackupServiceRolePolicyForS3Backup +// ManagedPolicyAWSBackupServiceRolePolicyForS3Restore +// ManagedPolicyAWSBatchFullAccess +// ManagedPolicyAWSBatchServiceEventTargetRole +// ManagedPolicyAWSBatchServiceRole +// ManagedPolicyAWSBillingConductorFullAccess +// ManagedPolicyAWSBillingConductorReadOnlyAccess +// ManagedPolicyAWSBillingReadOnlyAccess +// ManagedPolicyAWSBudgetsActionsWithAWSResourceControlAccess +// ManagedPolicy_AWSBudgetsActions_RolePolicyForResourceAdministrationWithSSM +// ManagedPolicyAWSBudgetsReadOnlyAccess +// ManagedPolicyAWSBugBustFullAccess +// ManagedPolicyAWSBugBustPlayerAccess +// ManagedPolicyAWSBugBustServiceRolePolicy +// ManagedPolicyAWSCertificateManagerFullAccess +// ManagedPolicyAWSCertificateManagerPrivateCAAuditor +// ManagedPolicyAWSCertificateManagerPrivateCAFullAccess +// ManagedPolicyAWSCertificateManagerPrivateCAPrivilegedUser +// ManagedPolicyAWSCertificateManagerPrivateCAReadOnly +// ManagedPolicyAWSCertificateManagerPrivateCAUser +// ManagedPolicyAWSCertificateManagerReadOnly +// ManagedPolicyAWSChatbotServiceLinkedRolePolicy +// ManagedPolicyAWSCleanRoomsFullAccess +// ManagedPolicyAWSCleanRoomsFullAccessNoQuerying +// ManagedPolicyAWSCleanRoomsMLFullAccess +// ManagedPolicyAWSCleanRoomsMLReadOnlyAccess +// ManagedPolicyAWSCleanRoomsReadOnlyAccess +// ManagedPolicyAWSCloud9Administrator +// ManagedPolicyAWSCloud9EnvironmentMember +// ManagedPolicyAWSCloud9SSMInstanceProfile +// ManagedPolicyAWSCloud9ServiceRolePolicy +// ManagedPolicyAWSCloud9User +// ManagedPolicyAWSCloudFormationFullAccess +// ManagedPolicyAWSCloudFormationReadOnlyAccess +// ManagedPolicyAWSCloudFrontLogger +// ManagedPolicyAWSCloudHSMFullAccess +// ManagedPolicyAWSCloudHSMReadOnlyAccess +// ManagedPolicyAWSCloudHSMRole +// ManagedPolicyAWSCloudMapDiscoverInstanceAccess +// ManagedPolicyAWSCloudMapFullAccess +// ManagedPolicyAWSCloudMapReadOnlyAccess +// ManagedPolicyAWSCloudMapRegisterInstanceAccess +// ManagedPolicyAWSCloudShellFullAccess +// ManagedPolicy_CloudTrail_FullAccess +// ManagedPolicy_CloudTrail_ReadOnlyAccess +// ManagedPolicy_AWSCloudWatchAlarms_ActionSSMIncidentsServiceRolePolicy +// ManagedPolicyAWSCodeArtifactAdminAccess +// ManagedPolicyAWSCodeArtifactReadOnlyAccess +// ManagedPolicyAWSCodeBuildAdminAccess +// ManagedPolicyAWSCodeBuildDeveloperAccess +// ManagedPolicyAWSCodeBuildReadOnlyAccess +// ManagedPolicyAWSCodeCommitFullAccess +// ManagedPolicyAWSCodeCommitPowerUser +// ManagedPolicyAWSCodeCommitReadOnly +// ManagedPolicyAWSCodeDeployDeployerAccess +// ManagedPolicyAWSCodeDeployFullAccess +// ManagedPolicyAWSCodeDeployReadOnlyAccess +// ManagedPolicyAWSCodeDeployRole +// ManagedPolicyAWSCodeDeployRoleForCloudFormation +// ManagedPolicyAWSCodeDeployRoleForECS +// ManagedPolicyAWSCodeDeployRoleForECSLimited +// ManagedPolicyAWSCodeDeployRoleForLambda +// ManagedPolicyAWSCodeDeployRoleForLambdaLimited +// ManagedPolicyAWSCodePipelineApproverAccess +// ManagedPolicyAWSCodePipelineCustomActionAccess +// ManagedPolicy_CodePipeline_FullAccess +// ManagedPolicy_CodePipeline_ReadOnlyAccess +// ManagedPolicyAWSCodeStarFullAccess +// ManagedPolicyAWSCodeStarNotificationsServiceRolePolicy +// ManagedPolicyAWSCodeStarServiceRole +// ManagedPolicy_AWS_ConfigRole +// ManagedPolicyAWSCompromisedKeyQuarantine +// ManagedPolicyAWSCompromisedKeyQuarantineV2 +// ManagedPolicyAWSConfigMultiAccountSetupPolicy +// ManagedPolicyAWSConfigRemediationServiceRolePolicy +// ManagedPolicyAWSConfigRoleForOrganizations +// ManagedPolicyAWSConfigRulesExecutionRole +// ManagedPolicyAWSConfigServiceRolePolicy +// ManagedPolicyAWSConfigUserAccess +// ManagedPolicyAWSConnector +// ManagedPolicyAWSControlTowerAccountServiceRolePolicy +// ManagedPolicyAWSControlTowerServiceRolePolicy +// ManagedPolicyAWSCostAndUsageReportAutomationPolicy +// ManagedPolicyAWSDMSFleetAdvisorServiceRolePolicy +// ManagedPolicyAWSDMSServerlessServiceRolePolicy +// ManagedPolicyAWSDataExchangeFullAccess +// ManagedPolicyAWSDataExchangeProviderFullAccess +// ManagedPolicyAWSDataExchangeReadOnly +// ManagedPolicyAWSDataExchangeSubscriberFullAccess +// ManagedPolicyAWSDataLifecycleManagerSSMFullAccess +// ManagedPolicyAWSDataLifecycleManagerServiceRole +// ManagedPolicyAWSDataLifecycleManagerServiceRoleForAMIManagement +// ManagedPolicy_AWSDataPipeline_FullAccess +// ManagedPolicy_AWSDataPipeline_PowerUser +// ManagedPolicyAWSDataSyncDiscoveryServiceRolePolicy +// ManagedPolicyAWSDataSyncFullAccess +// ManagedPolicyAWSDataSyncReadOnlyAccess +// ManagedPolicyAWSDeepLensLambdaFunctionAccessPolicy +// ManagedPolicyAWSDeepLensServiceRolePolicy +// ManagedPolicyAWSDeepRacerAccountAdminAccess +// ManagedPolicyAWSDeepRacerCloudFormationAccessPolicy +// ManagedPolicyAWSDeepRacerDefaultMultiUserAccess +// ManagedPolicyAWSDeepRacerFullAccess +// ManagedPolicyAWSDeepRacerRoboMakerAccessPolicy +// ManagedPolicyAWSDeepRacerServiceRolePolicy +// ManagedPolicyAWSDenyAll +// ManagedPolicyAWSDeviceFarmFullAccess +// ManagedPolicyAWSDeviceFarmServiceRolePolicy +// ManagedPolicyAWSDeviceFarmTestGridServiceRolePolicy +// ManagedPolicyAWSDirectConnectFullAccess +// ManagedPolicyAWSDirectConnectReadOnlyAccess +// ManagedPolicyAWSDirectConnectServiceRolePolicy +// ManagedPolicyAWSDirectoryServiceFullAccess +// ManagedPolicyAWSDirectoryServiceReadOnlyAccess +// ManagedPolicyAWSDiscoveryContinuousExportFirehosePolicy +// ManagedPolicyAWSEC2CapacityReservationFleetRolePolicy +// ManagedPolicyAWSEC2FleetServiceRolePolicy +// ManagedPolicyAWSEC2SpotFleetServiceRolePolicy +// ManagedPolicyAWSEC2SpotServiceRolePolicy +// ManagedPolicy_AWSECRPullThroughCache_ServiceRolePolicy +// ManagedPolicyAWSElasticBeanstalkCustomPlatformforEC2Role +// ManagedPolicyAWSElasticBeanstalkEnhancedHealth +// ManagedPolicyAWSElasticBeanstalkMaintenance +// ManagedPolicyAWSElasticBeanstalkManagedUpdatesCustomerRolePolicy +// ManagedPolicyAWSElasticBeanstalkManagedUpdatesServiceRolePolicy +// ManagedPolicyAWSElasticBeanstalkMulticontainerDocker +// ManagedPolicyAWSElasticBeanstalkReadOnly +// ManagedPolicyAWSElasticBeanstalkRoleCWL +// ManagedPolicyAWSElasticBeanstalkRoleCore +// ManagedPolicyAWSElasticBeanstalkRoleECS +// ManagedPolicyAWSElasticBeanstalkRoleRDS +// ManagedPolicyAWSElasticBeanstalkRoleSNS +// ManagedPolicyAWSElasticBeanstalkRoleWorkerTier +// ManagedPolicyAWSElasticBeanstalkService +// ManagedPolicyAWSElasticBeanstalkServiceRolePolicy +// ManagedPolicyAWSElasticBeanstalkWebTier +// ManagedPolicyAWSElasticBeanstalkWorkerTier +// ManagedPolicyAWSElasticDisasterRecoveryAgentInstallationPolicy +// ManagedPolicyAWSElasticDisasterRecoveryAgentPolicy +// ManagedPolicyAWSElasticDisasterRecoveryConsoleFullAccess +// ManagedPolicy_AWSElasticDisasterRecoveryConsoleFullAccess_v2 +// ManagedPolicyAWSElasticDisasterRecoveryConversionServerPolicy +// ManagedPolicyAWSElasticDisasterRecoveryCrossAccountReplicationPolicy +// ManagedPolicyAWSElasticDisasterRecoveryEc2InstancePolicy +// ManagedPolicyAWSElasticDisasterRecoveryFailbackInstallationPolicy +// ManagedPolicyAWSElasticDisasterRecoveryFailbackPolicy +// ManagedPolicyAWSElasticDisasterRecoveryLaunchActionsPolicy +// ManagedPolicyAWSElasticDisasterRecoveryNetworkReplicationPolicy +// ManagedPolicyAWSElasticDisasterRecoveryReadOnlyAccess +// ManagedPolicyAWSElasticDisasterRecoveryRecoveryInstancePolicy +// ManagedPolicyAWSElasticDisasterRecoveryReplicationServerPolicy +// ManagedPolicyAWSElasticDisasterRecoveryServiceRolePolicy +// ManagedPolicyAWSElasticDisasterRecoveryStagingAccountPolicy +// ManagedPolicy_AWSElasticDisasterRecoveryStagingAccountPolicy_v2 +// ManagedPolicyAWSElasticLoadBalancingClassicServiceRolePolicy +// ManagedPolicyAWSElasticLoadBalancingServiceRolePolicy +// ManagedPolicyAWSElementalMediaConvertFullAccess +// ManagedPolicyAWSElementalMediaConvertReadOnly +// ManagedPolicyAWSElementalMediaLiveFullAccess +// ManagedPolicyAWSElementalMediaLiveReadOnly +// ManagedPolicyAWSElementalMediaPackageFullAccess +// ManagedPolicyAWSElementalMediaPackageReadOnly +// ManagedPolicyAWSElementalMediaPackageV2FullAccess +// ManagedPolicyAWSElementalMediaPackageV2ReadOnly +// ManagedPolicyAWSElementalMediaStoreFullAccess +// ManagedPolicyAWSElementalMediaStoreReadOnly +// ManagedPolicyAWSElementalMediaTailorFullAccess +// ManagedPolicyAWSElementalMediaTailorReadOnly +// ManagedPolicyAWSEnhancedClassicNetworkingMangementPolicy +// ManagedPolicyAWSEntityResolutionConsoleFullAccess +// ManagedPolicyAWSEntityResolutionConsoleReadOnlyAccess +// ManagedPolicyAWSFMAdminFullAccess +// ManagedPolicyAWSFMAdminReadOnlyAccess +// ManagedPolicyAWSFMMemberReadOnlyAccess +// ManagedPolicyAWSFaultInjectionSimulatorEC2Access +// ManagedPolicyAWSFaultInjectionSimulatorECSAccess +// ManagedPolicyAWSFaultInjectionSimulatorEKSAccess +// ManagedPolicyAWSFaultInjectionSimulatorNetworkAccess +// ManagedPolicyAWSFaultInjectionSimulatorRDSAccess +// ManagedPolicyAWSFaultInjectionSimulatorSSMAccess +// ManagedPolicyAWSFinSpaceServiceRolePolicy +// ManagedPolicyAWSForWordPressPluginPolicy +// ManagedPolicyAWSGitSyncServiceRolePolicy +// ManagedPolicyAWSGlobalAcceleratorSLRPolicy +// ManagedPolicyAWSGlueConsoleFullAccess +// ManagedPolicyAWSGlueConsoleSageMakerNotebookFullAccess +// ManagedPolicyAWSGlueDataBrewServiceRole +// ManagedPolicyAWSGlueSchemaRegistryFullAccess +// ManagedPolicyAWSGlueSchemaRegistryReadonlyAccess +// ManagedPolicyAWSGlueServiceNotebookRole +// ManagedPolicyAWSGlueServiceRole +// ManagedPolicyAWSGrafanaAccountAdministrator +// ManagedPolicyAWSGrafanaConsoleReadOnlyAccess +// ManagedPolicyAWSGrafanaWorkspacePermissionManagement +// ManagedPolicyAWSGrafanaWorkspacePermissionManagementV2 +// ManagedPolicyAWSGreengrassFullAccess +// ManagedPolicyAWSGreengrassReadOnlyAccess +// ManagedPolicyAWSGreengrassResourceAccessRolePolicy +// ManagedPolicyAWSGroundStationAgentInstancePolicy +// ManagedPolicyAWSHealthFullAccess +// ManagedPolicyAWSHealthImagingFullAccess +// ManagedPolicyAWSHealthImagingReadOnlyAccess +// ManagedPolicy_AWSHealth_EventProcessorServiceRolePolicy +// ManagedPolicyAWSIAMIdentityCenterAllowListForIdentityContext +// ManagedPolicyAWSIPAMServiceRolePolicy +// ManagedPolicyAWSIQContractServiceRolePolicy +// ManagedPolicyAWSIQFullAccess +// ManagedPolicyAWSIQPermissionServiceRolePolicy +// ManagedPolicyAWSIdentitySyncFullAccess +// ManagedPolicyAWSIdentitySyncReadOnlyAccess +// ManagedPolicyAWSImageBuilderFullAccess +// ManagedPolicyAWSImageBuilderReadOnlyAccess +// ManagedPolicyAWSImportExportFullAccess +// ManagedPolicyAWSImportExportReadOnlyAccess +// ManagedPolicyAWSIncidentManagerIncidentAccessServiceRolePolicy +// ManagedPolicyAWSIncidentManagerResolverAccess +// ManagedPolicyAWSIncidentManagerServiceRolePolicy +// ManagedPolicyAWSIoT1ClickFullAccess +// ManagedPolicyAWSIoT1ClickReadOnlyAccess +// ManagedPolicyAWSIoTAnalyticsFullAccess +// ManagedPolicyAWSIoTAnalyticsReadOnlyAccess +// ManagedPolicyAWSIoTConfigAccess +// ManagedPolicyAWSIoTConfigReadOnlyAccess +// ManagedPolicyAWSIoTDataAccess +// ManagedPolicyAWSIoTDeviceDefenderAddThingsToThingGroupMitigationAction +// ManagedPolicyAWSIoTDeviceDefenderAudit +// ManagedPolicyAWSIoTDeviceDefenderEnableIoTLoggingMitigationAction +// ManagedPolicyAWSIoTDeviceDefenderPublishFindingsToSNSMitigationAction +// ManagedPolicyAWSIoTDeviceDefenderReplaceDefaultPolicyMitigationAction +// ManagedPolicyAWSIoTDeviceDefenderUpdateCACertMitigationAction +// ManagedPolicyAWSIoTDeviceDefenderUpdateDeviceCertMitigationAction +// ManagedPolicyAWSIoTDeviceTesterForFreeRTOSFullAccess +// ManagedPolicyAWSIoTDeviceTesterForGreengrassFullAccess +// ManagedPolicyAWSIoTEventsFullAccess +// ManagedPolicyAWSIoTEventsReadOnlyAccess +// ManagedPolicyAWSIoTFleetHubFederationAccess +// ManagedPolicyAWSIoTFleetwiseServiceRolePolicy +// ManagedPolicyAWSIoTFullAccess +// ManagedPolicyAWSIoTLogging +// ManagedPolicyAWSIoTOTAUpdate +// ManagedPolicyAWSIoTRuleActions +// ManagedPolicyAWSIoTSiteWiseConsoleFullAccess +// ManagedPolicyAWSIoTSiteWiseFullAccess +// ManagedPolicyAWSIoTSiteWiseMonitorPortalAccess +// ManagedPolicyAWSIoTSiteWiseMonitorServiceRolePolicy +// ManagedPolicyAWSIoTSiteWiseReadOnlyAccess +// ManagedPolicyAWSIoTThingsRegistration +// ManagedPolicyAWSIoTTwinMakerServiceRolePolicy +// ManagedPolicyAWSIoTWirelessDataAccess +// ManagedPolicyAWSIoTWirelessFullAccess +// ManagedPolicyAWSIoTWirelessFullPublishAccess +// ManagedPolicyAWSIoTWirelessGatewayCertManager +// ManagedPolicyAWSIoTWirelessLogging +// ManagedPolicyAWSIoTWirelessReadOnlyAccess +// ManagedPolicyAWSIotRoboRunnerFullAccess +// ManagedPolicyAWSIotRoboRunnerReadOnly +// ManagedPolicyAWSIotRoboRunnerServiceRolePolicy +// ManagedPolicyAWSKeyManagementServiceCustomKeyStoresServiceRolePolicy +// ManagedPolicyAWSKeyManagementServiceMultiRegionKeysServiceRolePolicy +// ManagedPolicyAWSKeyManagementServicePowerUser +// ManagedPolicyAWSLakeFormationCrossAccountManager +// ManagedPolicyAWSLakeFormationDataAdmin +// ManagedPolicyAWSLambdaBasicExecutionRole +// ManagedPolicyAWSLambdaDynamoDBExecutionRole +// ManagedPolicyAWSLambdaENIManagementAccess +// ManagedPolicyAWSLambdaExecute +// ManagedPolicyLambdaFullAccess +// ManagedPolicyAWSLambdaInvocationDynamoDB +// ManagedPolicyAWSLambdaKinesisExecutionRole +// ManagedPolicyLambdaReadOnlyAccess +// ManagedPolicyAWSLambdaMSKExecutionRole +// ManagedPolicyAWSLambdaReplicator +// ManagedPolicyAWSLambdaRole +// ManagedPolicyAWSLambdaSQSQueueExecutionRole +// ManagedPolicyAWSLambdaVPCAccessExecutionRole +// ManagedPolicyAWSLicenseManagerConsumptionPolicy +// ManagedPolicyAWSLicenseManagerLinuxSubscriptionsServiceRolePolicy +// ManagedPolicyAWSLicenseManagerMasterAccountRolePolicy +// ManagedPolicyAWSLicenseManagerMemberAccountRolePolicy +// ManagedPolicyAWSLicenseManagerServiceRolePolicy +// ManagedPolicyAWSLicenseManagerUserSubscriptionsServiceRolePolicy +// ManagedPolicyAWSM2ServicePolicy +// ManagedPolicyAWSMSKReplicatorExecutionRole +// ManagedPolicyAWSManagedServicesDeploymentToolkitPolicy +// ManagedPolicy_AWSManagedServices_ContactsServiceRolePolicy +// ManagedPolicy_AWSManagedServices_DetectiveControlsConfig_ServiceRolePolicy +// ManagedPolicy_AWSManagedServices_EventsServiceRolePolicy +// ManagedPolicyAWSMarketplaceAmiIngestion +// ManagedPolicyAWSMarketplaceDeploymentServiceRolePolicy +// ManagedPolicyAWSMarketplaceFullAccess +// ManagedPolicyAWSMarketplaceGetEntitlements +// ManagedPolicyAWSMarketplaceImageBuildFullAccess +// ManagedPolicyAWSMarketplaceLicenseManagementServiceRolePolicy +// ManagedPolicyAWSMarketplaceManageSubscriptions +// ManagedPolicyAWSMarketplaceMeteringFullAccess +// ManagedPolicyAWSMarketplaceMeteringRegisterUsage +// ManagedPolicyAWSMarketplaceProcurementSystemAdminFullAccess +// ManagedPolicyAWSMarketplacePurchaseOrdersServiceRolePolicy +// ManagedPolicyAWSMarketplaceReadonly +// ManagedPolicyAWSMarketplaceResaleAuthorizationServiceRolePolicy +// ManagedPolicyAWSMarketplaceSellerFullAccess +// ManagedPolicyAWSMarketplaceSellerProductsFullAccess +// ManagedPolicyAWSMarketplaceSellerProductsReadOnly +// ManagedPolicyAWSMediaConnectServicePolicy +// ManagedPolicyAWSMediaTailorServiceRolePolicy +// ManagedPolicyAWSMigrationHubDMSAccess +// ManagedPolicyAWSMigrationHubDiscoveryAccess +// ManagedPolicyAWSMigrationHubFullAccess +// ManagedPolicyAWSMigrationHubOrchestratorConsoleFullAccess +// ManagedPolicyAWSMigrationHubOrchestratorInstanceRolePolicy +// ManagedPolicyAWSMigrationHubOrchestratorPlugin +// ManagedPolicyAWSMigrationHubOrchestratorServiceRolePolicy +// ManagedPolicyAWSMigrationHubRefactorSpacesEnvironmentsWithoutBridgesFullAccess +// ManagedPolicyAWSMigrationHubRefactorSpacesSSMAutomationPolicy +// ManagedPolicyAWSMigrationHubRefactorSpacesFullAccess +// ManagedPolicyAWSMigrationHubRefactorSpacesServiceRolePolicy +// ManagedPolicyAWSMigrationHubSMSAccess +// ManagedPolicyAWSMigrationHubStrategyCollector +// ManagedPolicyAWSMigrationHubStrategyConsoleFullAccess +// ManagedPolicyAWSMigrationHubStrategyServiceRolePolicy +// ManagedPolicyAWSNetworkFirewallServiceRolePolicy +// ManagedPolicyAWSNetworkManagerCloudWANServiceRolePolicy +// ManagedPolicyAWSNetworkManagerFullAccess +// ManagedPolicyAWSNetworkManagerReadOnlyAccess +// ManagedPolicyAWSNetworkManagerServiceRolePolicy +// ManagedPolicyAWSOpsWorksCMInstanceProfileRole +// ManagedPolicyAWSOpsWorksCMServiceRole +// ManagedPolicyAWSOpsWorksCloudWatchLogs +// ManagedPolicyAWSOpsWorksInstanceRegistration +// ManagedPolicy_AWSOpsWorksRegisterCLI_EC2 +// ManagedPolicy_AWSOpsWorksRegisterCLI_OnPremises +// ManagedPolicy_OpsWorks_FullAccess +// ManagedPolicyAWSOrganizationsFullAccess +// ManagedPolicyAWSOrganizationsReadOnlyAccess +// ManagedPolicyAWSOrganizationsServiceTrustPolicy +// ManagedPolicyAWSOutpostsAuthorizeServerPolicy +// ManagedPolicyAWSOutpostsServiceRolePolicy +// ManagedPolicyAWSPanoramaApplianceRolePolicy +// ManagedPolicyAWSPanoramaApplianceServiceRolePolicy +// ManagedPolicyAWSPanoramaFullAccess +// ManagedPolicyAWSPanoramaGreengrassGroupRolePolicy +// ManagedPolicyAWSPanoramaSageMakerRolePolicy +// ManagedPolicyAWSPanoramaServiceLinkedRolePolicy +// ManagedPolicyAWSPanoramaServiceRolePolicy +// ManagedPolicyAWSPriceListServiceFullAccess +// ManagedPolicyAWSPrivateCAAuditor +// ManagedPolicyAWSPrivateCAFullAccess +// ManagedPolicyAWSPrivateCAPrivilegedUser +// ManagedPolicyAWSPrivateCAReadOnly +// ManagedPolicyAWSPrivateCAUser +// ManagedPolicyAWSPrivateMarketplaceAdminFullAccess +// ManagedPolicyAWSPrivateMarketplaceRequests +// ManagedPolicyAWSPrivateNetworksServiceRolePolicy +// ManagedPolicyAWSProtonCodeBuildProvisioningBasicAccess +// ManagedPolicyAWSProtonCodeBuildProvisioningServiceRolePolicy +// ManagedPolicyAWSProtonDeveloperAccess +// ManagedPolicyAWSProtonFullAccess +// ManagedPolicyAWSProtonReadOnlyAccess +// ManagedPolicyAWSProtonServiceGitSyncServiceRolePolicy +// ManagedPolicyAWSProtonSyncServiceRolePolicy +// ManagedPolicyAWSPurchaseOrdersServiceRolePolicy +// ManagedPolicyAWSQuickSightDescribeRDS +// ManagedPolicyAWSQuickSightDescribeRedshift +// ManagedPolicyAWSQuickSightElasticsearchPolicy +// ManagedPolicyAWSQuickSightIoTAnalyticsAccess +// ManagedPolicyAWSQuickSightListIAM +// ManagedPolicyAWSQuickSightSageMakerPolicy +// ManagedPolicyAWSQuickSightTimestreamPolicy +// ManagedPolicyAWSQuicksightAthenaAccess +// ManagedPolicyAWSQuicksightOpenSearchPolicy +// ManagedPolicyAWSReachabilityAnalyzerServiceRolePolicy +// ManagedPolicyAWSRefactoringToolkitFullAccess +// ManagedPolicyAWSRefactoringToolkitSidecarPolicy +// ManagedPolicyAWSRepostSpaceSupportOperationsPolicy +// ManagedPolicyAWSResilienceHubAsssessmentExecutionPolicy +// ManagedPolicyAWSResourceAccessManagerFullAccess +// ManagedPolicyAWSResourceAccessManagerReadOnlyAccess +// ManagedPolicyAWSResourceAccessManagerResourceShareParticipantAccess +// ManagedPolicyAWSResourceAccessManagerServiceRolePolicy +// ManagedPolicyAWSResourceExplorerFullAccess +// ManagedPolicyAWSResourceExplorerOrganizationsAccess +// ManagedPolicyAWSResourceExplorerReadOnlyAccess +// ManagedPolicyAWSResourceExplorerServiceRolePolicy +// ManagedPolicyAWSResourceGroupsReadOnlyAccess +// ManagedPolicyAWSRoboMakerReadOnlyAccess +// ManagedPolicyAWSRoboMakerServicePolicy +// ManagedPolicyAWSRoboMakerServiceRolePolicy +// ManagedPolicy_AWSRoboMaker_FullAccess +// ManagedPolicyAWSRolesAnywhereServicePolicy +// ManagedPolicyAWSS3OnOutpostsServiceRolePolicy +// ManagedPolicyAWSSSMForSAPServiceLinkedRolePolicy +// ManagedPolicyAWSSSMOpsInsightsServiceRolePolicy +// ManagedPolicyAWSSSODirectoryAdministrator +// ManagedPolicyAWSSSODirectoryReadOnly +// ManagedPolicyAWSSSOMasterAccountAdministrator +// ManagedPolicyAWSSSOMemberAccountAdministrator +// ManagedPolicyAWSSSOReadOnly +// ManagedPolicyAWSSSOServiceRolePolicy +// ManagedPolicyAWSSavingsPlansFullAccess +// ManagedPolicyAWSSavingsPlansReadOnlyAccess +// ManagedPolicyAWSSecurityHubFullAccess +// ManagedPolicyAWSSecurityHubOrganizationsAccess +// ManagedPolicyAWSSecurityHubReadOnlyAccess +// ManagedPolicyAWSSecurityHubServiceRolePolicy +// ManagedPolicyAWSServiceCatalogAdminFullAccess +// ManagedPolicyAWSServiceCatalogAdminReadOnlyAccess +// ManagedPolicyAWSServiceCatalogAppRegistryFullAccess +// ManagedPolicyAWSServiceCatalogAppRegistryReadOnlyAccess +// ManagedPolicyAWSServiceCatalogAppRegistryServiceRolePolicy +// ManagedPolicyAWSServiceCatalogEndUserFullAccess +// ManagedPolicyAWSServiceCatalogEndUserReadOnlyAccess +// ManagedPolicyAWSServiceCatalogOrgsDataSyncServiceRolePolicy +// ManagedPolicyAWSServiceCatalogSyncServiceRolePolicy +// ManagedPolicyAWSServiceRoleForAmazonEKSNodegroup +// ManagedPolicyAWSServiceRoleForCloudWatchAlarmsActionSSMServiceRolePolicy +// ManagedPolicy_AWSServiceRoleForCloudWatchMetrics_DbPerfInsightsServiceRolePolicy +// ManagedPolicyAWSServiceRoleForCodeGuruProfiler +// ManagedPolicyAWSServiceRoleForCodeWhispererPolicy +// ManagedPolicyAWSServiceRoleForEC2ScheduledInstances +// ManagedPolicyAWSServiceRoleForGroundStationDataflowEndpointGroupPolicy +// ManagedPolicyAWSServiceRoleForImageBuilder +// ManagedPolicyAWSServiceRoleForIoTSiteWise +// ManagedPolicyAWSServiceRoleForLogDeliveryPolicy +// ManagedPolicyAWSServiceRoleForMonitronPolicy +// ManagedPolicyAWSServiceRoleForNeptuneGraphPolicy +// ManagedPolicyAWSServiceRoleForPrivateMarketplaceAdminPolicy +// ManagedPolicyAWSServiceRoleForSMS +// ManagedPolicyAWSServiceRolePolicyForBackupReports +// ManagedPolicyAWSServiceRolePolicyForBackupRestoreTesting +// ManagedPolicyAWSShieldDRTAccessPolicy +// ManagedPolicyAWSShieldServiceRolePolicy +// ManagedPolicyAWSStepFunctionsConsoleFullAccess +// ManagedPolicyAWSStepFunctionsFullAccess +// ManagedPolicyAWSStepFunctionsReadOnlyAccess +// ManagedPolicyAWSStorageGatewayFullAccess +// ManagedPolicyAWSStorageGatewayReadOnlyAccess +// ManagedPolicyAWSStorageGatewayServiceRolePolicy +// ManagedPolicyAWSSupplyChainFederationAdminAccess +// ManagedPolicyAWSSupportAccess +// ManagedPolicyAWSSupportAppFullAccess +// ManagedPolicyAWSSupportAppReadOnlyAccess +// ManagedPolicyAWSSupportPlansFullAccess +// ManagedPolicyAWSSupportPlansReadOnlyAccess +// ManagedPolicyAWSSupportServiceRolePolicy +// ManagedPolicyAWSSystemsManagerAccountDiscoveryServicePolicy +// ManagedPolicyAWSSystemsManagerChangeManagementServicePolicy +// ManagedPolicyAWSSystemsManagerForSAPFullAccess +// ManagedPolicyAWSSystemsManagerForSAPReadOnlyAccess +// ManagedPolicyAWSSystemsManagerOpsDataSyncServiceRolePolicy +// ManagedPolicyAWSThinkboxAWSPortalAdminPolicy +// ManagedPolicyAWSThinkboxAWSPortalGatewayPolicy +// ManagedPolicyAWSThinkboxAWSPortalWorkerPolicy +// ManagedPolicyAWSThinkboxAssetServerPolicy +// ManagedPolicyAWSThinkboxDeadlineResourceTrackerAccessPolicy +// ManagedPolicyAWSThinkboxDeadlineResourceTrackerAdminPolicy +// ManagedPolicyAWSThinkboxDeadlineSpotEventPluginAdminPolicy +// ManagedPolicyAWSThinkboxDeadlineSpotEventPluginWorkerPolicy +// ManagedPolicyAWSTransferConsoleFullAccess +// ManagedPolicyAWSTransferFullAccess +// ManagedPolicyAWSTransferLoggingAccess +// ManagedPolicyAWSTransferReadOnlyAccess +// ManagedPolicyAWSTrustedAdvisorPriorityFullAccess +// ManagedPolicyAWSTrustedAdvisorPriorityReadOnlyAccess +// ManagedPolicyAWSTrustedAdvisorReportingServiceRolePolicy +// ManagedPolicyAWSTrustedAdvisorServiceRolePolicy +// ManagedPolicyAWSUserNotificationsServiceLinkedRolePolicy +// ManagedPolicyAWSVPCS2SVpnServiceRolePolicy +// ManagedPolicyAWSVPCTransitGatewayServiceRolePolicy +// ManagedPolicyAWSVPCVerifiedAccessServiceRolePolicy +// ManagedPolicyAWSVendorInsightsAssessorFullAccess +// ManagedPolicyAWSVendorInsightsAssessorReadOnly +// ManagedPolicyAWSVendorInsightsVendorFullAccess +// ManagedPolicyAWSVendorInsightsVendorReadOnly +// ManagedPolicyAWSVpcLatticeServiceRolePolicy +// ManagedPolicyAWSWAFConsoleFullAccess +// ManagedPolicyAWSWAFConsoleReadOnlyAccess +// ManagedPolicyAWSWAFFullAccess +// ManagedPolicyAWSWAFReadOnlyAccess +// ManagedPolicyAWSWellArchitectedDiscoveryServiceRolePolicy +// ManagedPolicyAWSWellArchitectedOrganizationsServiceRolePolicy +// ManagedPolicyAWSWickrFullAccess +// ManagedPolicyAWSXRayDaemonWriteAccess +// ManagedPolicyAWSXrayCrossAccountSharingConfiguration +// ManagedPolicyAWSXrayFullAccess +// ManagedPolicyAWSXrayReadOnlyAccess +// ManagedPolicyAWSXrayWriteOnlyAccess +// ManagedPolicyAWSZonalAutoshiftPracticeRunSLRPolicy +// ManagedPolicyAWSrePostPrivateCloudWatchAccess +// ManagedPolicyAccessAnalyzerServiceRolePolicy +// ManagedPolicyAdministratorAccess +// ManagedPolicyAdministratorAccessAWSElasticBeanstalk +// ManagedPolicyAdministratorAccessAmplify +// ManagedPolicyAlexaForBusinessDeviceSetup +// ManagedPolicyAlexaForBusinessFullAccess +// ManagedPolicyAlexaForBusinessGatewayExecution +// ManagedPolicyAlexaForBusinessLifesizeDelegatedAccessPolicy +// ManagedPolicyAlexaForBusinessNetworkProfileServicePolicy +// ManagedPolicyAlexaForBusinessPolyDelegatedAccessPolicy +// ManagedPolicyAlexaForBusinessReadOnlyAccess +// ManagedPolicyAmazonAPIGatewayAdministrator +// ManagedPolicyAmazonAPIGatewayInvokeFullAccess +// ManagedPolicyAmazonAPIGatewayPushToCloudWatchLogs +// ManagedPolicyAmazonAppFlowFullAccess +// ManagedPolicyAmazonAppFlowReadOnlyAccess +// ManagedPolicyAmazonAppStreamFullAccess +// ManagedPolicyAmazonAppStreamPCAAccess +// ManagedPolicyAmazonAppStreamReadOnlyAccess +// ManagedPolicyAmazonAppStreamServiceAccess +// ManagedPolicyAmazonAthenaFullAccess +// ManagedPolicyAmazonAugmentedAIFullAccess +// ManagedPolicyAmazonAugmentedAIHumanLoopFullAccess +// ManagedPolicyAmazonAugmentedAIIntegratedAPIAccess +// ManagedPolicyAmazonBedrockFullAccess +// ManagedPolicyAmazonBedrockReadOnly +// ManagedPolicyAmazonBraketFullAccess +// ManagedPolicyAmazonBraketJobsExecutionPolicy +// ManagedPolicyAmazonBraketServiceRolePolicy +// ManagedPolicyAmazonChimeFullAccess +// ManagedPolicyAmazonChimeReadOnly +// ManagedPolicyAmazonChimeSDK +// ManagedPolicyAmazonChimeSDKMediaPipelinesServiceLinkedRolePolicy +// ManagedPolicyAmazonChimeSDKMessagingServiceRolePolicy +// ManagedPolicyAmazonChimeServiceRolePolicy +// ManagedPolicyAmazonChimeTranscriptionServiceLinkedRolePolicy +// ManagedPolicyAmazonChimeUserManagement +// ManagedPolicyAmazonChimeVoiceConnectorServiceLinkedRolePolicy +// ManagedPolicyAmazonCloudDirectoryFullAccess +// ManagedPolicyAmazonCloudDirectoryReadOnlyAccess +// ManagedPolicyAmazonCloudWatchEvidentlyFullAccess +// ManagedPolicyAmazonCloudWatchEvidentlyReadOnlyAccess +// ManagedPolicyAmazonCloudWatchEvidentlyServiceRolePolicy +// ManagedPolicyAmazonCloudWatchRUMFullAccess +// ManagedPolicyAmazonCloudWatchRUMReadOnlyAccess +// ManagedPolicyAmazonCloudWatchRUMServiceRolePolicy +// ManagedPolicyAmazonCodeCatalystFullAccess +// ManagedPolicyAmazonCodeCatalystReadOnlyAccess +// ManagedPolicyAmazonCodeCatalystSupportAccess +// ManagedPolicyAmazonCodeGuruProfilerAgentAccess +// ManagedPolicyAmazonCodeGuruProfilerFullAccess +// ManagedPolicyAmazonCodeGuruProfilerReadOnlyAccess +// ManagedPolicyAmazonCodeGuruReviewerFullAccess +// ManagedPolicyAmazonCodeGuruReviewerReadOnlyAccess +// ManagedPolicyAmazonCodeGuruReviewerServiceRolePolicy +// ManagedPolicyAmazonCodeGuruSecurityFullAccess +// ManagedPolicyAmazonCodeGuruSecurityScanAccess +// ManagedPolicyAmazonCognitoDeveloperAuthenticatedIdentities +// ManagedPolicyAmazonCognitoIdpEmailServiceRolePolicy +// ManagedPolicyAmazonCognitoIdpServiceRolePolicy +// ManagedPolicyAmazonCognitoPowerUser +// ManagedPolicyAmazonCognitoReadOnly +// ManagedPolicyAmazonCognitoUnAuthedIdentitiesSessionPolicy +// ManagedPolicyAmazonCognitoUnauthenticatedIdentities +// ManagedPolicyAmazonConnectCampaignsServiceLinkedRolePolicy +// ManagedPolicyAmazonConnectReadOnlyAccess +// ManagedPolicyAmazonConnectServiceLinkedRolePolicy +// ManagedPolicyAmazonConnectSynchronizationServiceRolePolicy +// ManagedPolicyAmazonConnectVoiceIDFullAccess +// ManagedPolicy_AmazonConnect_FullAccess +// ManagedPolicyAmazonDMSCloudWatchLogsRole +// ManagedPolicyAmazonDMSRedshiftS3Role +// ManagedPolicyAmazonDMSVPCManagementRole +// ManagedPolicyAmazonDRSVPCManagement +// ManagedPolicyAmazonDataZoneDomainExecutionRolePolicy +// ManagedPolicyAmazonDataZoneEnvironmentRolePermissionsBoundary +// ManagedPolicyAmazonDataZoneFullAccess +// ManagedPolicyAmazonDataZoneFullUserAccess +// ManagedPolicyAmazonDataZoneGlueManageAccessRolePolicy +// ManagedPolicyAmazonDataZoneRedshiftGlueProvisioningPolicy +// ManagedPolicyAmazonDataZoneRedshiftManageAccessRolePolicy +// ManagedPolicyAmazonDetectiveFullAccess +// ManagedPolicyAmazonDetectiveInvestigatorAccess +// ManagedPolicyAmazonDetectiveMemberAccess +// ManagedPolicyAmazonDetectiveOrganizationsAccess +// ManagedPolicyAmazonDetectiveServiceLinkedRolePolicy +// ManagedPolicyAmazonDevOpsGuruConsoleFullAccess +// ManagedPolicyAmazonDevOpsGuruFullAccess +// ManagedPolicyAmazonDevOpsGuruOrganizationsAccess +// ManagedPolicyAmazonDevOpsGuruReadOnlyAccess +// ManagedPolicyAmazonDevOpsGuruServiceRolePolicy +// ManagedPolicyAmazonDocDBElasticServiceRolePolicy +// ManagedPolicyAmazonDocDBConsoleFullAccess +// ManagedPolicyAmazonDocDBElasticFullAccess +// ManagedPolicyAmazonDocDBElasticReadOnlyAccess +// ManagedPolicyAmazonDocDBFullAccess +// ManagedPolicyAmazonDocDBReadOnlyAccess +// ManagedPolicyAmazonDynamoDBFullAccess +// ManagedPolicyAmazonDynamoDBFullAccesswithDataPipeline +// ManagedPolicyAmazonDynamoDBReadOnlyAccess +// ManagedPolicyAmazonEBSCSIDriverPolicy +// ManagedPolicyAmazonEC2ContainerRegistryFullAccess +// ManagedPolicyAmazonEC2ContainerRegistryPowerUser +// ManagedPolicyAmazonEC2ContainerRegistryReadOnly +// ManagedPolicyAmazonEC2ContainerServiceAutoscaleRole +// ManagedPolicyAmazonEC2ContainerServiceEventsRole +// ManagedPolicyAmazonEC2ContainerServiceRole +// ManagedPolicyAmazonEC2ContainerServiceforEC2Role +// ManagedPolicyAmazonEC2FullAccess +// ManagedPolicyAmazonEC2ReadOnlyAccess +// ManagedPolicyAmazonEC2RolePolicyForLaunchWizard +// ManagedPolicyAmazonEC2RoleforAWSCodeDeploy +// ManagedPolicyAmazonEC2RoleforAWSCodeDeployLimited +// ManagedPolicyAmazonEC2RoleforDataPipelineRole +// ManagedPolicyAmazonEC2RoleforSSM +// ManagedPolicyAmazonEC2SpotFleetAutoscaleRole +// ManagedPolicyAmazonEC2SpotFleetTaggingRole +// ManagedPolicyAmazonECSFullAccess +// ManagedPolicyAmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity +// ManagedPolicyAmazonECSInfrastructureRolePolicyForVolumes +// ManagedPolicyAmazonECSServiceRolePolicy +// ManagedPolicyAmazonECSTaskExecutionRolePolicy +// ManagedPolicyAmazonEFSCSIDriverPolicy +// ManagedPolicyAmazonEKSClusterPolicy +// ManagedPolicyAmazonEKSConnectorServiceRolePolicy +// ManagedPolicyAmazonEKSFargatePodExecutionRolePolicy +// ManagedPolicyAmazonEKSForFargateServiceRolePolicy +// ManagedPolicyAmazonEKSLocalOutpostClusterPolicy +// ManagedPolicyAmazonEKSLocalOutpostServiceRolePolicy +// ManagedPolicyAmazonEKSServicePolicy +// ManagedPolicyAmazonEKSServiceRolePolicy +// ManagedPolicyAmazonEKSVPCResourceController +// ManagedPolicyAmazonEKSWorkerNodePolicy +// ManagedPolicy_AmazonEKS_CNI_Policy +// ManagedPolicyAmazonEMRCleanupPolicy +// ManagedPolicyAmazonEMRContainersServiceRolePolicy +// ManagedPolicy_AmazonEMRFullAccessPolicy_v2 +// ManagedPolicy_AmazonEMRReadOnlyAccessPolicy_v2 +// ManagedPolicyAmazonEMRServerlessServiceRolePolicy +// ManagedPolicy_AmazonEMRServicePolicy_v2 +// ManagedPolicyAmazonESCognitoAccess +// ManagedPolicyAmazonESFullAccess +// ManagedPolicyAmazonESReadOnlyAccess +// ManagedPolicyAmazonElastiCacheFullAccess +// ManagedPolicyAmazonElastiCacheReadOnlyAccess +// ManagedPolicyAmazonElasticContainerRegistryPublicFullAccess +// ManagedPolicyAmazonElasticContainerRegistryPublicPowerUser +// ManagedPolicyAmazonElasticContainerRegistryPublicReadOnly +// ManagedPolicyAmazonElasticFileSystemClientFullAccess +// ManagedPolicyAmazonElasticFileSystemClientReadOnlyAccess +// ManagedPolicyAmazonElasticFileSystemClientReadWriteAccess +// ManagedPolicyAmazonElasticFileSystemFullAccess +// ManagedPolicyAmazonElasticFileSystemReadOnlyAccess +// ManagedPolicyAmazonElasticFileSystemServiceRolePolicy +// ManagedPolicyAmazonElasticFileSystemsUtils +// ManagedPolicyAmazonElasticMapReduceEditorsRole +// ManagedPolicyAmazonElasticMapReduceFullAccess +// ManagedPolicyAmazonElasticMapReducePlacementGroupPolicy +// ManagedPolicyAmazonElasticMapReduceReadOnlyAccess +// ManagedPolicyAmazonElasticMapReduceRole +// ManagedPolicyAmazonElasticMapReduceforAutoScalingRole +// ManagedPolicyAmazonElasticMapReduceforEC2Role +// ManagedPolicyAmazonElasticTranscoderRole +// ManagedPolicy_ElasticTranscoder_FullAccess +// ManagedPolicy_ElasticTranscoder_JobsSubmitter +// ManagedPolicy_ElasticTranscoder_ReadOnlyAccess +// ManagedPolicyAmazonElasticsearchServiceRolePolicy +// ManagedPolicyAmazonEventBridgeApiDestinationsServiceRolePolicy +// ManagedPolicyAmazonEventBridgeFullAccess +// ManagedPolicyAmazonEventBridgePipesFullAccess +// ManagedPolicyAmazonEventBridgePipesOperatorAccess +// ManagedPolicyAmazonEventBridgePipesReadOnlyAccess +// ManagedPolicyAmazonEventBridgeReadOnlyAccess +// ManagedPolicyAmazonEventBridgeSchedulerFullAccess +// ManagedPolicyAmazonEventBridgeSchedulerReadOnlyAccess +// ManagedPolicyAmazonEventBridgeSchemasFullAccess +// ManagedPolicyAmazonEventBridgeSchemasReadOnlyAccess +// ManagedPolicyAmazonEventBridgeSchemasServiceRolePolicy +// ManagedPolicyAmazonFISServiceRolePolicy +// ManagedPolicyAmazonFSxConsoleFullAccess +// ManagedPolicyAmazonFSxConsoleReadOnlyAccess +// ManagedPolicyAmazonFSxFullAccess +// ManagedPolicyAmazonFSxReadOnlyAccess +// ManagedPolicyAmazonFSxServiceRolePolicy +// ManagedPolicyAmazonForecastFullAccess +// ManagedPolicyAmazonFraudDetectorFullAccessPolicy +// ManagedPolicyAmazonFreeRTOSFullAccess +// ManagedPolicyAmazonFreeRTOSOTAUpdate +// ManagedPolicyAmazonGlacierFullAccess +// ManagedPolicyAmazonGlacierReadOnlyAccess +// ManagedPolicyAmazonGrafanaAthenaAccess +// ManagedPolicyAmazonGrafanaCloudWatchAccess +// ManagedPolicyAmazonGrafanaRedshiftAccess +// ManagedPolicyAmazonGrafanaServiceLinkedRolePolicy +// ManagedPolicyAmazonGuardDutyFullAccess +// ManagedPolicyAmazonGuardDutyMalwareProtectionServiceRolePolicy +// ManagedPolicyAmazonGuardDutyReadOnlyAccess +// ManagedPolicyAmazonGuardDutyServiceRolePolicy +// ManagedPolicyAmazonHealthLakeFullAccess +// ManagedPolicyAmazonHealthLakeReadOnlyAccess +// ManagedPolicyAmazonHoneycodeFullAccess +// ManagedPolicyAmazonHoneycodeReadOnlyAccess +// ManagedPolicyAmazonHoneycodeServiceRolePolicy +// ManagedPolicyAmazonHoneycodeTeamAssociationFullAccess +// ManagedPolicyAmazonHoneycodeTeamAssociationReadOnlyAccess +// ManagedPolicyAmazonHoneycodeWorkbookFullAccess +// ManagedPolicyAmazonHoneycodeWorkbookReadOnlyAccess +// ManagedPolicyAmazonInspector2AgentlessServiceRolePolicy +// ManagedPolicyAmazonInspector2FullAccess +// ManagedPolicyAmazonInspector2ManagedCisPolicy +// ManagedPolicyAmazonInspector2ReadOnlyAccess +// ManagedPolicyAmazonInspector2ServiceRolePolicy +// ManagedPolicyAmazonInspectorFullAccess +// ManagedPolicyAmazonInspectorReadOnlyAccess +// ManagedPolicyAmazonInspectorServiceRolePolicy +// ManagedPolicyAmazonKendraFullAccess +// ManagedPolicyAmazonKendraReadOnlyAccess +// ManagedPolicyAmazonKeyspacesFullAccess +// ManagedPolicyAmazonKeyspacesReadOnlyAccess +// ManagedPolicy_AmazonKeyspacesReadOnlyAccess_v2 +// ManagedPolicyAmazonKinesisAnalyticsFullAccess +// ManagedPolicyAmazonKinesisAnalyticsReadOnly +// ManagedPolicyAmazonKinesisFirehoseFullAccess +// ManagedPolicyAmazonKinesisFirehoseReadOnlyAccess +// ManagedPolicyAmazonKinesisFullAccess +// ManagedPolicyAmazonKinesisReadOnlyAccess +// ManagedPolicyAmazonKinesisVideoStreamsFullAccess +// ManagedPolicyAmazonKinesisVideoStreamsReadOnlyAccess +// ManagedPolicyAmazonLaunchWizardFullAccessV2 +// ManagedPolicyAmazonLexChannelsAccess +// ManagedPolicyAmazonLexFullAccess +// ManagedPolicyAmazonLexReadOnly +// ManagedPolicyAmazonLexReplicationPolicy +// ManagedPolicyAmazonLexRunBotsOnly +// ManagedPolicyAmazonLexV2BotPolicy +// ManagedPolicyAmazonLookoutEquipmentFullAccess +// ManagedPolicyAmazonLookoutEquipmentReadOnlyAccess +// ManagedPolicyAmazonLookoutMetricsFullAccess +// ManagedPolicyAmazonLookoutMetricsReadOnlyAccess +// ManagedPolicyAmazonLookoutVisionConsoleFullAccess +// ManagedPolicyAmazonLookoutVisionConsoleReadOnlyAccess +// ManagedPolicyAmazonLookoutVisionFullAccess +// ManagedPolicyAmazonLookoutVisionReadOnlyAccess +// ManagedPolicyAmazonMCSFullAccess +// ManagedPolicyAmazonMCSReadOnlyAccess +// ManagedPolicyAmazonMQApiFullAccess +// ManagedPolicyAmazonMQApiReadOnlyAccess +// ManagedPolicyAmazonMQFullAccess +// ManagedPolicyAmazonMQReadOnlyAccess +// ManagedPolicyAmazonMQServiceRolePolicy +// ManagedPolicyAmazonMSKConnectReadOnlyAccess +// ManagedPolicyAmazonMSKFullAccess +// ManagedPolicyAmazonMSKReadOnlyAccess +// ManagedPolicyAmazonMWAAServiceRolePolicy +// ManagedPolicyAmazonMachineLearningBatchPredictionsAccess +// ManagedPolicyAmazonMachineLearningCreateOnlyAccess +// ManagedPolicyAmazonMachineLearningFullAccess +// ManagedPolicyAmazonMachineLearningManageRealTimeEndpointOnlyAccess +// ManagedPolicyAmazonMachineLearningReadOnlyAccess +// ManagedPolicyAmazonMachineLearningRealTimePredictionOnlyAccess +// ManagedPolicyAmazonMachineLearningRoleforRedshiftDataSourceV3 +// ManagedPolicyAmazonMacieFullAccess +// ManagedPolicyAmazonMacieHandshakeRole +// ManagedPolicyAmazonMacieReadOnlyAccess +// ManagedPolicyAmazonMacieServiceRole +// ManagedPolicyAmazonMacieServiceRolePolicy +// ManagedPolicyAmazonManagedBlockchainConsoleFullAccess +// ManagedPolicyAmazonManagedBlockchainFullAccess +// ManagedPolicyAmazonManagedBlockchainReadOnlyAccess +// ManagedPolicyAmazonManagedBlockchainServiceRolePolicy +// ManagedPolicyAmazonMechanicalTurkFullAccess +// ManagedPolicyAmazonMechanicalTurkReadOnly +// ManagedPolicyAmazonMemoryDBFullAccess +// ManagedPolicyAmazonMemoryDBReadOnlyAccess +// ManagedPolicyAmazonMobileAnalyticsFinancialReportAccess +// ManagedPolicyAmazonMobileAnalyticsFullAccess +// ManagedPolicyAmazonMobileAnalyticsNonfinancialReportAccess +// ManagedPolicyAmazonMobileAnalyticsWriteOnlyAccess +// ManagedPolicyAmazonMonitronFullAccess +// ManagedPolicyAmazonNimbleStudioLaunchProfileWorker +// ManagedPolicyAmazonNimbleStudioStudioAdmin +// ManagedPolicyAmazonNimbleStudioStudioUser +// ManagedPolicyAmazonOmicsFullAccess +// ManagedPolicyAmazonOmicsReadOnlyAccess +// ManagedPolicyAmazonOneEnterpriseFullAccess +// ManagedPolicyAmazonOneEnterpriseInstallerAccess +// ManagedPolicyAmazonOneEnterpriseReadOnlyAccess +// ManagedPolicyAmazonOpenSearchDashboardsServiceRolePolicy +// ManagedPolicyAmazonOpenSearchIngestionFullAccess +// ManagedPolicyAmazonOpenSearchIngestionReadOnlyAccess +// ManagedPolicyAmazonOpenSearchIngestionServiceRolePolicy +// ManagedPolicyAmazonOpenSearchServerlessServiceRolePolicy +// ManagedPolicyAmazonOpenSearchServiceCognitoAccess +// ManagedPolicyAmazonOpenSearchServiceFullAccess +// ManagedPolicyAmazonOpenSearchServiceReadOnlyAccess +// ManagedPolicyAmazonOpenSearchServiceRolePolicy +// ManagedPolicyAmazonPersonalizeFullAccess +// ManagedPolicyAmazonPollyFullAccess +// ManagedPolicyAmazonPollyReadOnlyAccess +// ManagedPolicyAmazonPrometheusConsoleFullAccess +// ManagedPolicyAmazonPrometheusFullAccess +// ManagedPolicyAmazonPrometheusQueryAccess +// ManagedPolicyAmazonPrometheusRemoteWriteAccess +// ManagedPolicyAmazonPrometheusScraperServiceRolePolicy +// ManagedPolicyAmazonQFullAccess +// ManagedPolicyAmazonQLDBConsoleFullAccess +// ManagedPolicyAmazonQLDBFullAccess +// ManagedPolicyAmazonQLDBReadOnly +// ManagedPolicyAmazonRDSBetaServiceRolePolicy +// ManagedPolicyAmazonRDSCustomInstanceProfileRolePolicy +// ManagedPolicyAmazonRDSCustomPreviewServiceRolePolicy +// ManagedPolicyAmazonRDSCustomServiceRolePolicy +// ManagedPolicyAmazonRDSDataFullAccess +// ManagedPolicyAmazonRDSDirectoryServiceAccess +// ManagedPolicyAmazonRDSEnhancedMonitoringRole +// ManagedPolicyAmazonRDSFullAccess +// ManagedPolicyAmazonRDSPerformanceInsightsFullAccess +// ManagedPolicyAmazonRDSPerformanceInsightsReadOnly +// ManagedPolicyAmazonRDSPreviewServiceRolePolicy +// ManagedPolicyAmazonRDSReadOnlyAccess +// ManagedPolicyAmazonRDSServiceRolePolicy +// ManagedPolicyAmazonRedshiftAllCommandsFullAccess +// ManagedPolicyAmazonRedshiftDataFullAccess +// ManagedPolicyAmazonRedshiftFullAccess +// ManagedPolicyAmazonRedshiftQueryEditor +// ManagedPolicyAmazonRedshiftQueryEditorV2FullAccess +// ManagedPolicyAmazonRedshiftQueryEditorV2NoSharing +// ManagedPolicyAmazonRedshiftQueryEditorV2ReadSharing +// ManagedPolicyAmazonRedshiftQueryEditorV2ReadWriteSharing +// ManagedPolicyAmazonRedshiftReadOnlyAccess +// ManagedPolicyAmazonRedshiftServiceLinkedRolePolicy +// ManagedPolicyAmazonRekognitionCustomLabelsFullAccess +// ManagedPolicyAmazonRekognitionFullAccess +// ManagedPolicyAmazonRekognitionReadOnlyAccess +// ManagedPolicyAmazonRekognitionServiceRole +// ManagedPolicyAmazonRoute53AutoNamingFullAccess +// ManagedPolicyAmazonRoute53AutoNamingReadOnlyAccess +// ManagedPolicyAmazonRoute53AutoNamingRegistrantAccess +// ManagedPolicyAmazonRoute53DomainsFullAccess +// ManagedPolicyAmazonRoute53DomainsReadOnlyAccess +// ManagedPolicyAmazonRoute53FullAccess +// ManagedPolicyAmazonRoute53ReadOnlyAccess +// ManagedPolicyAmazonRoute53RecoveryClusterFullAccess +// ManagedPolicyAmazonRoute53RecoveryClusterReadOnlyAccess +// ManagedPolicyAmazonRoute53RecoveryControlConfigFullAccess +// ManagedPolicyAmazonRoute53RecoveryControlConfigReadOnlyAccess +// ManagedPolicyAmazonRoute53RecoveryReadinessFullAccess +// ManagedPolicyAmazonRoute53RecoveryReadinessReadOnlyAccess +// ManagedPolicyAmazonRoute53ResolverFullAccess +// ManagedPolicyAmazonRoute53ResolverReadOnlyAccess +// ManagedPolicyAmazonS3FullAccess +// ManagedPolicyAmazonS3ObjectLambdaExecutionRolePolicy +// ManagedPolicyAmazonS3OutpostsFullAccess +// ManagedPolicyAmazonS3OutpostsReadOnlyAccess +// ManagedPolicyAmazonS3ReadOnlyAccess +// ManagedPolicyAmazonSESFullAccess +// ManagedPolicyAmazonSESReadOnlyAccess +// ManagedPolicyAmazonSNSFullAccess +// ManagedPolicyAmazonSNSReadOnlyAccess +// ManagedPolicyAmazonSNSRole +// ManagedPolicyAmazonSQSFullAccess +// ManagedPolicyAmazonSQSReadOnlyAccess +// ManagedPolicyAmazonSSMAutomationApproverAccess +// ManagedPolicyAmazonSSMAutomationRole +// ManagedPolicyAmazonSSMDirectoryServiceAccess +// ManagedPolicyAmazonSSMFullAccess +// ManagedPolicyAmazonSSMMaintenanceWindowRole +// ManagedPolicyAmazonSSMManagedEC2InstanceDefaultPolicy +// ManagedPolicyAmazonSSMManagedInstanceCore +// ManagedPolicyAmazonSSMPatchAssociation +// ManagedPolicyAmazonSSMReadOnlyAccess +// ManagedPolicyAmazonSSMServiceRolePolicy +// ManagedPolicyAmazonSageMakerAdminServiceCatalogProductsServiceRolePolicy +// ManagedPolicyAmazonSageMakerCanvasAIServicesAccess +// ManagedPolicyAmazonSageMakerCanvasBedrockAccess +// ManagedPolicyAmazonSageMakerCanvasDataPrepFullAccess +// ManagedPolicyAmazonSageMakerCanvasDirectDeployAccess +// ManagedPolicyAmazonSageMakerCanvasForecastAccess +// ManagedPolicyAmazonSageMakerCanvasFullAccess +// ManagedPolicyAmazonSageMakerClusterInstanceRolePolicy +// ManagedPolicyAmazonSageMakerCoreServiceRolePolicy +// ManagedPolicyAmazonSageMakerEdgeDeviceFleetPolicy +// ManagedPolicyAmazonSageMakerFeatureStoreAccess +// ManagedPolicyAmazonSageMakerFullAccess +// ManagedPolicyAmazonSageMakerGeospatialExecutionRole +// ManagedPolicyAmazonSageMakerGeospatialFullAccess +// ManagedPolicyAmazonSageMakerGroundTruthExecution +// ManagedPolicyAmazonSageMakerMechanicalTurkAccess +// ManagedPolicyAmazonSageMakerModelGovernanceUseAccess +// ManagedPolicyAmazonSageMakerModelRegistryFullAccess +// ManagedPolicyAmazonSageMakerNotebooksServiceRolePolicy +// ManagedPolicyAmazonSageMakerPartnerServiceCatalogProductsApiGatewayServiceRolePolicy +// ManagedPolicyAmazonSageMakerPartnerServiceCatalogProductsCloudFormationServiceRolePolicy +// ManagedPolicyAmazonSageMakerPartnerServiceCatalogProductsLambdaServiceRolePolicy +// ManagedPolicyAmazonSageMakerPipelinesIntegrations +// ManagedPolicyAmazonSageMakerReadOnly +// ManagedPolicyAmazonSageMakerServiceCatalogProductsApiGatewayServiceRolePolicy +// ManagedPolicyAmazonSageMakerServiceCatalogProductsCloudformationServiceRolePolicy +// ManagedPolicyAmazonSageMakerServiceCatalogProductsCodeBuildServiceRolePolicy +// ManagedPolicyAmazonSageMakerServiceCatalogProductsCodePipelineServiceRolePolicy +// ManagedPolicyAmazonSageMakerServiceCatalogProductsEventsServiceRolePolicy +// ManagedPolicyAmazonSageMakerServiceCatalogProductsFirehoseServiceRolePolicy +// ManagedPolicyAmazonSageMakerServiceCatalogProductsGlueServiceRolePolicy +// ManagedPolicyAmazonSageMakerServiceCatalogProductsLambdaServiceRolePolicy +// ManagedPolicyAmazonSecurityLakeAdministrator +// ManagedPolicyAmazonSecurityLakeMetastoreManager +// ManagedPolicyAmazonSecurityLakePermissionsBoundary +// ManagedPolicyAmazonTextractFullAccess +// ManagedPolicyAmazonTextractServiceRole +// ManagedPolicyAmazonTimestreamConsoleFullAccess +// ManagedPolicyAmazonTimestreamFullAccess +// ManagedPolicyAmazonTimestreamInfluxDBFullAccess +// ManagedPolicyAmazonTimestreamInfluxDBServiceRolePolicy +// ManagedPolicyAmazonTimestreamReadOnlyAccess +// ManagedPolicyAmazonTranscribeFullAccess +// ManagedPolicyAmazonTranscribeReadOnlyAccess +// ManagedPolicyAmazonVPCCrossAccountNetworkInterfaceOperations +// ManagedPolicyAmazonVPCFullAccess +// ManagedPolicyAmazonVPCNetworkAccessAnalyzerFullAccessPolicy +// ManagedPolicyAmazonVPCReachabilityAnalyzerFullAccessPolicy +// ManagedPolicyAmazonVPCReachabilityAnalyzerPathComponentReadPolicy +// ManagedPolicyAmazonVPCReadOnlyAccess +// ManagedPolicyAmazonWorkDocsFullAccess +// ManagedPolicyAmazonWorkDocsReadOnlyAccess +// ManagedPolicyAmazonWorkMailEventsServiceRolePolicy +// ManagedPolicyAmazonWorkMailFullAccess +// ManagedPolicyAmazonWorkMailMessageFlowFullAccess +// ManagedPolicyAmazonWorkMailMessageFlowReadOnlyAccess +// ManagedPolicyAmazonWorkMailReadOnlyAccess +// ManagedPolicyAmazonWorkSpacesAdmin +// ManagedPolicyAmazonWorkSpacesApplicationManagerAdminAccess +// ManagedPolicyAmazonWorkSpacesSelfServiceAccess +// ManagedPolicyAmazonWorkSpacesServiceAccess +// ManagedPolicyAmazonWorkSpacesWebReadOnly +// ManagedPolicyAmazonWorkSpacesWebServiceRolePolicy +// ManagedPolicyAmazonWorkspacesPCAAccess +// ManagedPolicyAmazonZocaloFullAccess +// ManagedPolicyAmazonZocaloReadOnlyAccess +// ManagedPolicyAmplifyBackendDeployFullAccess +// ManagedPolicyAppIntegrationsServiceLinkedRolePolicy +// ManagedPolicyAppRunnerNetworkingServiceRolePolicy +// ManagedPolicyAppRunnerServiceRolePolicy +// ManagedPolicyApplicationAutoScalingForAmazonAppStreamAccess +// ManagedPolicyApplicationDiscoveryServiceContinuousExportServiceRolePolicy +// ManagedPolicyAutoScalingConsoleFullAccess +// ManagedPolicyAutoScalingConsoleReadOnlyAccess +// ManagedPolicyAutoScalingFullAccess +// ManagedPolicyAutoScalingNotificationAccessRole +// ManagedPolicyAutoScalingReadOnlyAccess +// ManagedPolicyAutoScalingServiceRolePolicy +// ManagedPolicyAwsGlueDataBrewFullAccessPolicy +// ManagedPolicyAwsGlueSessionUserRestrictedNotebookPolicy +// ManagedPolicyAwsGlueSessionUserRestrictedNotebookServiceRole +// ManagedPolicyAwsGlueSessionUserRestrictedPolicy +// ManagedPolicyAwsGlueSessionUserRestrictedServiceRole +// ManagedPolicyBatchServiceRolePolicy +// ManagedPolicyBilling +// ManagedPolicyCertificateManagerServiceRolePolicy +// ManagedPolicyClientVPNServiceConnectionsRolePolicy +// ManagedPolicyClientVPNServiceRolePolicy +// ManagedPolicyCloudFormationStackSetsOrgAdminServiceRolePolicy +// ManagedPolicyCloudFormationStackSetsOrgMemberServiceRolePolicy +// ManagedPolicyCloudFrontFullAccess +// ManagedPolicyCloudFrontReadOnlyAccess +// ManagedPolicyCloudHSMServiceRolePolicy +// ManagedPolicyCloudSearchFullAccess +// ManagedPolicyCloudSearchReadOnlyAccess +// ManagedPolicyCloudTrailServiceRolePolicy +// ManagedPolicyCloudWatchCrossAccountAccess +// ManagedPolicyCloudWatchActionsEC2Access +// ManagedPolicyCloudWatchAgentAdminPolicy +// ManagedPolicyCloudWatchAgentServerPolicy +// ManagedPolicyCloudWatchApplicationInsightsFullAccess +// ManagedPolicyCloudWatchApplicationInsightsReadOnlyAccess +// ManagedPolicyCloudWatchApplicationSignalsServiceRolePolicy +// ManagedPolicyCloudWatchAutomaticDashboardsAccess +// ManagedPolicyCloudWatchCrossAccountSharingConfiguration +// ManagedPolicyCloudWatchEventsBuiltInTargetExecutionAccess +// ManagedPolicyCloudWatchEventsFullAccess +// ManagedPolicyCloudWatchEventsInvocationAccess +// ManagedPolicyCloudWatchEventsReadOnlyAccess +// ManagedPolicyCloudWatchEventsServiceRolePolicy +// ManagedPolicyCloudWatchFullAccess +// ManagedPolicyCloudWatchFullAccessV2 +// ManagedPolicyCloudWatchInternetMonitorServiceRolePolicy +// ManagedPolicyCloudWatchLambdaInsightsExecutionRolePolicy +// ManagedPolicyCloudWatchLogsCrossAccountSharingConfiguration +// ManagedPolicyCloudWatchLogsFullAccess +// ManagedPolicyCloudWatchLogsReadOnlyAccess +// ManagedPolicyCloudWatchNetworkMonitorServiceRolePolicy +// ManagedPolicyCloudWatchReadOnlyAccess +// ManagedPolicyCloudWatchSyntheticsFullAccess +// ManagedPolicyCloudWatchSyntheticsReadOnlyAccess +// ManagedPolicyCloudwatchApplicationInsightsServiceLinkedRolePolicy +// ManagedPolicyComprehendDataAccessRolePolicy +// ManagedPolicyComprehendFullAccess +// ManagedPolicyComprehendMedicalFullAccess +// ManagedPolicyComprehendReadOnly +// ManagedPolicyComputeOptimizerReadOnlyAccess +// ManagedPolicyComputeOptimizerServiceRolePolicy +// ManagedPolicyConfigConformsServiceRolePolicy +// ManagedPolicyCostOptimizationHubAdminAccess +// ManagedPolicyCostOptimizationHubReadOnlyAccess +// ManagedPolicyCostOptimizationHubServiceRolePolicy +// ManagedPolicyCustomerProfilesServiceLinkedRolePolicy +// ManagedPolicyDAXServiceRolePolicy +// ManagedPolicyDataScientist +// ManagedPolicyDatabaseAdministrator +// ManagedPolicyDynamoDBCloudWatchContributorInsightsServiceRolePolicy +// ManagedPolicyDynamoDBKinesisReplicationServiceRolePolicy +// ManagedPolicyDynamoDBReplicationServiceRolePolicy +// ManagedPolicyEC2FastLaunchServiceRolePolicy +// ManagedPolicyEC2FleetTimeShiftableServiceRolePolicy +// ManagedPolicyEC2ImageBuilderLifecycleExecutionPolicy +// ManagedPolicyEC2InstanceConnect +// ManagedPolicyEC2InstanceProfileForImageBuilder +// ManagedPolicyEC2InstanceProfileForImageBuilderECRContainerBuilds +// ManagedPolicyECRReplicationServiceRolePolicy +// ManagedPolicyEMRDescribeClusterPolicyForEMRWAL +// ManagedPolicyEc2ImageBuilderCrossAccountDistributionAccess +// ManagedPolicyEc2InstanceConnectEndpoint +// ManagedPolicyElastiCacheServiceRolePolicy +// ManagedPolicyElasticLoadBalancingFullAccess +// ManagedPolicyElasticLoadBalancingReadOnly +// ManagedPolicyElementalActivationsDownloadSoftwareAccess +// ManagedPolicyElementalActivationsFullAccess +// ManagedPolicyElementalActivationsGenerateLicenses +// ManagedPolicyElementalActivationsReadOnlyAccess +// ManagedPolicyElementalAppliancesSoftwareFullAccess +// ManagedPolicyElementalAppliancesSoftwareReadOnlyAccess +// ManagedPolicyElementalSupportCenterFullAccess +// ManagedPolicyFMSServiceRolePolicy +// ManagedPolicyFSxDeleteServiceLinkedRoleAccess +// ManagedPolicyGameLiftGameServerGroupPolicy +// ManagedPolicyGlobalAcceleratorFullAccess +// ManagedPolicyGlobalAcceleratorReadOnlyAccess +// ManagedPolicyGreengrassOTAUpdateArtifactAccess +// ManagedPolicyGroundTruthSyntheticConsoleFullAccess +// ManagedPolicyGroundTruthSyntheticConsoleReadOnlyAccess +// ManagedPolicy_Health_OrganizationsServiceRolePolicy +// ManagedPolicyIAMAccessAdvisorReadOnly +// ManagedPolicyIAMAccessAnalyzerFullAccess +// ManagedPolicyIAMAccessAnalyzerReadOnlyAccess +// ManagedPolicyIAMFullAccess +// ManagedPolicyIAMReadOnlyAccess +// ManagedPolicyIAMSelfManageServiceSpecificCredentials +// ManagedPolicyIAMUserChangePassword +// ManagedPolicyIAMUserSSHKeys +// ManagedPolicyIVSFullAccess +// ManagedPolicyIVSReadOnlyAccess +// ManagedPolicyIVSRecordToS3 +// ManagedPolicyKafkaConnectServiceRolePolicy +// ManagedPolicyKafkaServiceRolePolicy +// ManagedPolicyKeyspacesReplicationServiceRolePolicy +// ManagedPolicyLakeFormationDataAccessServiceRolePolicy +// ManagedPolicyLexBotPolicy +// ManagedPolicyLexChannelPolicy +// ManagedPolicyLightsailExportAccess +// ManagedPolicyMediaConnectGatewayInstanceRolePolicy +// ManagedPolicyMediaPackageServiceRolePolicy +// ManagedPolicyMemoryDBServiceRolePolicy +// ManagedPolicyMigrationHubDMSAccessServiceRolePolicy +// ManagedPolicyMigrationHubSMSAccessServiceRolePolicy +// ManagedPolicyMigrationHubServiceRolePolicy +// ManagedPolicyMonitronServiceRolePolicy +// ManagedPolicyNeptuneConsoleFullAccess +// ManagedPolicyNeptuneFullAccess +// ManagedPolicyNeptuneGraphReadOnlyAccess +// ManagedPolicyNeptuneReadOnlyAccess +// ManagedPolicyNetworkAdministrator +// ManagedPolicyOAMFullAccess +// ManagedPolicyOAMReadOnlyAccess +// ManagedPolicyPartnerCentralAccountManagementUserRoleAssociation +// ManagedPolicyPowerUserAccess +// ManagedPolicyQuickSightAccessForS3StorageManagementAnalyticsReadOnly +// ManagedPolicyRDSCloudHsmAuthorizationRole +// ManagedPolicyROSAAmazonEBSCSIDriverOperatorPolicy +// ManagedPolicyROSACloudNetworkConfigOperatorPolicy +// ManagedPolicyROSAControlPlaneOperatorPolicy +// ManagedPolicyROSAImageRegistryOperatorPolicy +// ManagedPolicyROSAIngressOperatorPolicy +// ManagedPolicyROSAInstallerPolicy +// ManagedPolicyROSAKMSProviderPolicy +// ManagedPolicyROSAKubeControllerPolicy +// ManagedPolicyROSAManageSubscription +// ManagedPolicyROSANodePoolManagementPolicy +// ManagedPolicyROSASRESupportPolicy +// ManagedPolicyROSAWorkerInstancePolicy +// ManagedPolicyReadOnlyAccess +// ManagedPolicyResourceGroupsServiceRolePolicy +// ManagedPolicyResourceGroupsandTagEditorFullAccess +// ManagedPolicyResourceGroupsandTagEditorReadOnlyAccess +// ManagedPolicyRoute53RecoveryReadinessServiceRolePolicy +// ManagedPolicyRoute53ResolverServiceRolePolicy +// ManagedPolicyS3StorageLensServiceRolePolicy +// ManagedPolicySecretsManagerReadWrite +// ManagedPolicySecurityAudit +// ManagedPolicySecurityLakeServiceLinkedRole +// ManagedPolicyServerMigrationConnector +// ManagedPolicyServerMigrationServiceConsoleFullAccess +// ManagedPolicyServerMigrationServiceLaunchRole +// ManagedPolicyServerMigrationServiceRoleForInstanceValidation +// ManagedPolicy_AWSServerMigration_ServiceRole +// ManagedPolicyServiceQuotasFullAccess +// ManagedPolicyServiceQuotasReadOnlyAccess +// ManagedPolicyServiceQuotasServiceRolePolicy +// ManagedPolicySimpleWorkflowFullAccess +// ManagedPolicySupportUser +// ManagedPolicySystemAdministrator +// ManagedPolicyTranslateFullAccess +// ManagedPolicyTranslateReadOnly +// ManagedPolicyVMImportExportRoleForAWSConnector +// ManagedPolicyVPCLatticeFullAccess +// ManagedPolicyVPCLatticeReadOnlyAccess +// ManagedPolicyVPCLatticeServicesInvokeAccess +// ManagedPolicyViewOnlyAccess +// ManagedPolicyWAFLoggingServiceRolePolicy +// ManagedPolicyWAFRegionalLoggingServiceRolePolicy +// ManagedPolicyWAFV2LoggingServiceRolePolicy +// ManagedPolicyWellArchitectedConsoleFullAccess +// ManagedPolicyWellArchitectedConsoleReadOnlyAccess +// ManagedPolicyWorkLinkServiceRolePolicy +type ManagedPolicyInput interface { + pulumi.Input + + ToManagedPolicyOutput() ManagedPolicyOutput + ToManagedPolicyOutputWithContext(context.Context) ManagedPolicyOutput +} + +var managedPolicyPtrType = reflect.TypeOf((**ManagedPolicy)(nil)).Elem() + +type ManagedPolicyPtrInput interface { + pulumi.Input + + ToManagedPolicyPtrOutput() ManagedPolicyPtrOutput + ToManagedPolicyPtrOutputWithContext(context.Context) ManagedPolicyPtrOutput +} + +type managedPolicyPtr string + +func ManagedPolicyPtr(v string) ManagedPolicyPtrInput { + return (*managedPolicyPtr)(&v) +} + +func (*managedPolicyPtr) ElementType() reflect.Type { + return managedPolicyPtrType +} + +func (in *managedPolicyPtr) ToManagedPolicyPtrOutput() ManagedPolicyPtrOutput { + return pulumi.ToOutput(in).(ManagedPolicyPtrOutput) +} + +func (in *managedPolicyPtr) ToManagedPolicyPtrOutputWithContext(ctx context.Context) ManagedPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(ManagedPolicyPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ManagedPolicyInput)(nil)).Elem(), ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/APIGatewayServiceRolePolicy")) + pulumi.RegisterInputType(reflect.TypeOf((*ManagedPolicyPtrInput)(nil)).Elem(), ManagedPolicy("arn:aws:iam::aws:policy/aws-service-role/APIGatewayServiceRolePolicy")) + pulumi.RegisterOutputType(ManagedPolicyOutput{}) + pulumi.RegisterOutputType(ManagedPolicyPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiTypes.go new file mode 100644 index 000000000..d8058292f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/pulumiTypes.go @@ -0,0 +1,1394 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type RoleInlinePolicy struct { + // Name of the role policy. + Name *string `pulumi:"name"` + // Policy document as a JSON formatted string. + Policy *string `pulumi:"policy"` +} + +// RoleInlinePolicyInput is an input type that accepts RoleInlinePolicyArgs and RoleInlinePolicyOutput values. +// You can construct a concrete instance of `RoleInlinePolicyInput` via: +// +// RoleInlinePolicyArgs{...} +type RoleInlinePolicyInput interface { + pulumi.Input + + ToRoleInlinePolicyOutput() RoleInlinePolicyOutput + ToRoleInlinePolicyOutputWithContext(context.Context) RoleInlinePolicyOutput +} + +type RoleInlinePolicyArgs struct { + // Name of the role policy. + Name pulumi.StringPtrInput `pulumi:"name"` + // Policy document as a JSON formatted string. + Policy pulumi.StringPtrInput `pulumi:"policy"` +} + +func (RoleInlinePolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RoleInlinePolicy)(nil)).Elem() +} + +func (i RoleInlinePolicyArgs) ToRoleInlinePolicyOutput() RoleInlinePolicyOutput { + return i.ToRoleInlinePolicyOutputWithContext(context.Background()) +} + +func (i RoleInlinePolicyArgs) ToRoleInlinePolicyOutputWithContext(ctx context.Context) RoleInlinePolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleInlinePolicyOutput) +} + +// RoleInlinePolicyArrayInput is an input type that accepts RoleInlinePolicyArray and RoleInlinePolicyArrayOutput values. +// You can construct a concrete instance of `RoleInlinePolicyArrayInput` via: +// +// RoleInlinePolicyArray{ RoleInlinePolicyArgs{...} } +type RoleInlinePolicyArrayInput interface { + pulumi.Input + + ToRoleInlinePolicyArrayOutput() RoleInlinePolicyArrayOutput + ToRoleInlinePolicyArrayOutputWithContext(context.Context) RoleInlinePolicyArrayOutput +} + +type RoleInlinePolicyArray []RoleInlinePolicyInput + +func (RoleInlinePolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]RoleInlinePolicy)(nil)).Elem() +} + +func (i RoleInlinePolicyArray) ToRoleInlinePolicyArrayOutput() RoleInlinePolicyArrayOutput { + return i.ToRoleInlinePolicyArrayOutputWithContext(context.Background()) +} + +func (i RoleInlinePolicyArray) ToRoleInlinePolicyArrayOutputWithContext(ctx context.Context) RoleInlinePolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleInlinePolicyArrayOutput) +} + +type RoleInlinePolicyOutput struct{ *pulumi.OutputState } + +func (RoleInlinePolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RoleInlinePolicy)(nil)).Elem() +} + +func (o RoleInlinePolicyOutput) ToRoleInlinePolicyOutput() RoleInlinePolicyOutput { + return o +} + +func (o RoleInlinePolicyOutput) ToRoleInlinePolicyOutputWithContext(ctx context.Context) RoleInlinePolicyOutput { + return o +} + +// Name of the role policy. +func (o RoleInlinePolicyOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoleInlinePolicy) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Policy document as a JSON formatted string. +func (o RoleInlinePolicyOutput) Policy() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoleInlinePolicy) *string { return v.Policy }).(pulumi.StringPtrOutput) +} + +type RoleInlinePolicyArrayOutput struct{ *pulumi.OutputState } + +func (RoleInlinePolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]RoleInlinePolicy)(nil)).Elem() +} + +func (o RoleInlinePolicyArrayOutput) ToRoleInlinePolicyArrayOutput() RoleInlinePolicyArrayOutput { + return o +} + +func (o RoleInlinePolicyArrayOutput) ToRoleInlinePolicyArrayOutputWithContext(ctx context.Context) RoleInlinePolicyArrayOutput { + return o +} + +func (o RoleInlinePolicyArrayOutput) Index(i pulumi.IntInput) RoleInlinePolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) RoleInlinePolicy { + return vs[0].([]RoleInlinePolicy)[vs[1].(int)] + }).(RoleInlinePolicyOutput) +} + +type GetAccessKeysAccessKey struct { + // Access key ID. + AccessKeyId string `pulumi:"accessKeyId"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the access key was created. + CreateDate string `pulumi:"createDate"` + // Access key status. Possible values are `Active` and `Inactive`. + Status string `pulumi:"status"` +} + +// GetAccessKeysAccessKeyInput is an input type that accepts GetAccessKeysAccessKeyArgs and GetAccessKeysAccessKeyOutput values. +// You can construct a concrete instance of `GetAccessKeysAccessKeyInput` via: +// +// GetAccessKeysAccessKeyArgs{...} +type GetAccessKeysAccessKeyInput interface { + pulumi.Input + + ToGetAccessKeysAccessKeyOutput() GetAccessKeysAccessKeyOutput + ToGetAccessKeysAccessKeyOutputWithContext(context.Context) GetAccessKeysAccessKeyOutput +} + +type GetAccessKeysAccessKeyArgs struct { + // Access key ID. + AccessKeyId pulumi.StringInput `pulumi:"accessKeyId"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the access key was created. + CreateDate pulumi.StringInput `pulumi:"createDate"` + // Access key status. Possible values are `Active` and `Inactive`. + Status pulumi.StringInput `pulumi:"status"` +} + +func (GetAccessKeysAccessKeyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetAccessKeysAccessKey)(nil)).Elem() +} + +func (i GetAccessKeysAccessKeyArgs) ToGetAccessKeysAccessKeyOutput() GetAccessKeysAccessKeyOutput { + return i.ToGetAccessKeysAccessKeyOutputWithContext(context.Background()) +} + +func (i GetAccessKeysAccessKeyArgs) ToGetAccessKeysAccessKeyOutputWithContext(ctx context.Context) GetAccessKeysAccessKeyOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetAccessKeysAccessKeyOutput) +} + +// GetAccessKeysAccessKeyArrayInput is an input type that accepts GetAccessKeysAccessKeyArray and GetAccessKeysAccessKeyArrayOutput values. +// You can construct a concrete instance of `GetAccessKeysAccessKeyArrayInput` via: +// +// GetAccessKeysAccessKeyArray{ GetAccessKeysAccessKeyArgs{...} } +type GetAccessKeysAccessKeyArrayInput interface { + pulumi.Input + + ToGetAccessKeysAccessKeyArrayOutput() GetAccessKeysAccessKeyArrayOutput + ToGetAccessKeysAccessKeyArrayOutputWithContext(context.Context) GetAccessKeysAccessKeyArrayOutput +} + +type GetAccessKeysAccessKeyArray []GetAccessKeysAccessKeyInput + +func (GetAccessKeysAccessKeyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetAccessKeysAccessKey)(nil)).Elem() +} + +func (i GetAccessKeysAccessKeyArray) ToGetAccessKeysAccessKeyArrayOutput() GetAccessKeysAccessKeyArrayOutput { + return i.ToGetAccessKeysAccessKeyArrayOutputWithContext(context.Background()) +} + +func (i GetAccessKeysAccessKeyArray) ToGetAccessKeysAccessKeyArrayOutputWithContext(ctx context.Context) GetAccessKeysAccessKeyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetAccessKeysAccessKeyArrayOutput) +} + +type GetAccessKeysAccessKeyOutput struct{ *pulumi.OutputState } + +func (GetAccessKeysAccessKeyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetAccessKeysAccessKey)(nil)).Elem() +} + +func (o GetAccessKeysAccessKeyOutput) ToGetAccessKeysAccessKeyOutput() GetAccessKeysAccessKeyOutput { + return o +} + +func (o GetAccessKeysAccessKeyOutput) ToGetAccessKeysAccessKeyOutputWithContext(ctx context.Context) GetAccessKeysAccessKeyOutput { + return o +} + +// Access key ID. +func (o GetAccessKeysAccessKeyOutput) AccessKeyId() pulumi.StringOutput { + return o.ApplyT(func(v GetAccessKeysAccessKey) string { return v.AccessKeyId }).(pulumi.StringOutput) +} + +// Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the access key was created. +func (o GetAccessKeysAccessKeyOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v GetAccessKeysAccessKey) string { return v.CreateDate }).(pulumi.StringOutput) +} + +// Access key status. Possible values are `Active` and `Inactive`. +func (o GetAccessKeysAccessKeyOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v GetAccessKeysAccessKey) string { return v.Status }).(pulumi.StringOutput) +} + +type GetAccessKeysAccessKeyArrayOutput struct{ *pulumi.OutputState } + +func (GetAccessKeysAccessKeyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetAccessKeysAccessKey)(nil)).Elem() +} + +func (o GetAccessKeysAccessKeyArrayOutput) ToGetAccessKeysAccessKeyArrayOutput() GetAccessKeysAccessKeyArrayOutput { + return o +} + +func (o GetAccessKeysAccessKeyArrayOutput) ToGetAccessKeysAccessKeyArrayOutputWithContext(ctx context.Context) GetAccessKeysAccessKeyArrayOutput { + return o +} + +func (o GetAccessKeysAccessKeyArrayOutput) Index(i pulumi.IntInput) GetAccessKeysAccessKeyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetAccessKeysAccessKey { + return vs[0].([]GetAccessKeysAccessKey)[vs[1].(int)] + }).(GetAccessKeysAccessKeyOutput) +} + +type GetGroupUser struct { + // User ARN. + Arn string `pulumi:"arn"` + // Path to the IAM user. + Path string `pulumi:"path"` + // Stable and unique string identifying the IAM user. + UserId string `pulumi:"userId"` + // Name of the IAM user. + UserName string `pulumi:"userName"` +} + +// GetGroupUserInput is an input type that accepts GetGroupUserArgs and GetGroupUserOutput values. +// You can construct a concrete instance of `GetGroupUserInput` via: +// +// GetGroupUserArgs{...} +type GetGroupUserInput interface { + pulumi.Input + + ToGetGroupUserOutput() GetGroupUserOutput + ToGetGroupUserOutputWithContext(context.Context) GetGroupUserOutput +} + +type GetGroupUserArgs struct { + // User ARN. + Arn pulumi.StringInput `pulumi:"arn"` + // Path to the IAM user. + Path pulumi.StringInput `pulumi:"path"` + // Stable and unique string identifying the IAM user. + UserId pulumi.StringInput `pulumi:"userId"` + // Name of the IAM user. + UserName pulumi.StringInput `pulumi:"userName"` +} + +func (GetGroupUserArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetGroupUser)(nil)).Elem() +} + +func (i GetGroupUserArgs) ToGetGroupUserOutput() GetGroupUserOutput { + return i.ToGetGroupUserOutputWithContext(context.Background()) +} + +func (i GetGroupUserArgs) ToGetGroupUserOutputWithContext(ctx context.Context) GetGroupUserOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetGroupUserOutput) +} + +// GetGroupUserArrayInput is an input type that accepts GetGroupUserArray and GetGroupUserArrayOutput values. +// You can construct a concrete instance of `GetGroupUserArrayInput` via: +// +// GetGroupUserArray{ GetGroupUserArgs{...} } +type GetGroupUserArrayInput interface { + pulumi.Input + + ToGetGroupUserArrayOutput() GetGroupUserArrayOutput + ToGetGroupUserArrayOutputWithContext(context.Context) GetGroupUserArrayOutput +} + +type GetGroupUserArray []GetGroupUserInput + +func (GetGroupUserArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetGroupUser)(nil)).Elem() +} + +func (i GetGroupUserArray) ToGetGroupUserArrayOutput() GetGroupUserArrayOutput { + return i.ToGetGroupUserArrayOutputWithContext(context.Background()) +} + +func (i GetGroupUserArray) ToGetGroupUserArrayOutputWithContext(ctx context.Context) GetGroupUserArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetGroupUserArrayOutput) +} + +type GetGroupUserOutput struct{ *pulumi.OutputState } + +func (GetGroupUserOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetGroupUser)(nil)).Elem() +} + +func (o GetGroupUserOutput) ToGetGroupUserOutput() GetGroupUserOutput { + return o +} + +func (o GetGroupUserOutput) ToGetGroupUserOutputWithContext(ctx context.Context) GetGroupUserOutput { + return o +} + +// User ARN. +func (o GetGroupUserOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v GetGroupUser) string { return v.Arn }).(pulumi.StringOutput) +} + +// Path to the IAM user. +func (o GetGroupUserOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v GetGroupUser) string { return v.Path }).(pulumi.StringOutput) +} + +// Stable and unique string identifying the IAM user. +func (o GetGroupUserOutput) UserId() pulumi.StringOutput { + return o.ApplyT(func(v GetGroupUser) string { return v.UserId }).(pulumi.StringOutput) +} + +// Name of the IAM user. +func (o GetGroupUserOutput) UserName() pulumi.StringOutput { + return o.ApplyT(func(v GetGroupUser) string { return v.UserName }).(pulumi.StringOutput) +} + +type GetGroupUserArrayOutput struct{ *pulumi.OutputState } + +func (GetGroupUserArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetGroupUser)(nil)).Elem() +} + +func (o GetGroupUserArrayOutput) ToGetGroupUserArrayOutput() GetGroupUserArrayOutput { + return o +} + +func (o GetGroupUserArrayOutput) ToGetGroupUserArrayOutputWithContext(ctx context.Context) GetGroupUserArrayOutput { + return o +} + +func (o GetGroupUserArrayOutput) Index(i pulumi.IntInput) GetGroupUserOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetGroupUser { + return vs[0].([]GetGroupUser)[vs[1].(int)] + }).(GetGroupUserOutput) +} + +type GetPolicyDocumentStatement struct { + // List of actions that this statement either allows or denies. For example, `["ec2:RunInstances", "s3:*"]`. + Actions []string `pulumi:"actions"` + // Configuration block for a condition. Detailed below. + Conditions []GetPolicyDocumentStatementCondition `pulumi:"conditions"` + // Whether this statement allows or denies the given actions. Valid values are `Allow` and `Deny`. Defaults to `Allow`. + Effect *string `pulumi:"effect"` + // List of actions that this statement does *not* apply to. Use to apply a policy statement to all actions *except* those listed. + NotActions []string `pulumi:"notActions"` + // Like `principals` except these are principals that the statement does *not* apply to. + NotPrincipals []GetPolicyDocumentStatementNotPrincipal `pulumi:"notPrincipals"` + // List of resource ARNs that this statement does *not* apply to. Use to apply a policy statement to all resources *except* those listed. Conflicts with `resources`. + NotResources []string `pulumi:"notResources"` + // Configuration block for principals. Detailed below. + Principals []GetPolicyDocumentStatementPrincipal `pulumi:"principals"` + // List of resource ARNs that this statement applies to. This is required by AWS if used for an IAM policy. Conflicts with `notResources`. + Resources []string `pulumi:"resources"` + // Sid (statement ID) is an identifier for a policy statement. + Sid *string `pulumi:"sid"` +} + +// GetPolicyDocumentStatementInput is an input type that accepts GetPolicyDocumentStatementArgs and GetPolicyDocumentStatementOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementInput` via: +// +// GetPolicyDocumentStatementArgs{...} +type GetPolicyDocumentStatementInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementOutput() GetPolicyDocumentStatementOutput + ToGetPolicyDocumentStatementOutputWithContext(context.Context) GetPolicyDocumentStatementOutput +} + +type GetPolicyDocumentStatementArgs struct { + // List of actions that this statement either allows or denies. For example, `["ec2:RunInstances", "s3:*"]`. + Actions pulumi.StringArrayInput `pulumi:"actions"` + // Configuration block for a condition. Detailed below. + Conditions GetPolicyDocumentStatementConditionArrayInput `pulumi:"conditions"` + // Whether this statement allows or denies the given actions. Valid values are `Allow` and `Deny`. Defaults to `Allow`. + Effect pulumi.StringPtrInput `pulumi:"effect"` + // List of actions that this statement does *not* apply to. Use to apply a policy statement to all actions *except* those listed. + NotActions pulumi.StringArrayInput `pulumi:"notActions"` + // Like `principals` except these are principals that the statement does *not* apply to. + NotPrincipals GetPolicyDocumentStatementNotPrincipalArrayInput `pulumi:"notPrincipals"` + // List of resource ARNs that this statement does *not* apply to. Use to apply a policy statement to all resources *except* those listed. Conflicts with `resources`. + NotResources pulumi.StringArrayInput `pulumi:"notResources"` + // Configuration block for principals. Detailed below. + Principals GetPolicyDocumentStatementPrincipalArrayInput `pulumi:"principals"` + // List of resource ARNs that this statement applies to. This is required by AWS if used for an IAM policy. Conflicts with `notResources`. + Resources pulumi.StringArrayInput `pulumi:"resources"` + // Sid (statement ID) is an identifier for a policy statement. + Sid pulumi.StringPtrInput `pulumi:"sid"` +} + +func (GetPolicyDocumentStatementArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatement)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementArgs) ToGetPolicyDocumentStatementOutput() GetPolicyDocumentStatementOutput { + return i.ToGetPolicyDocumentStatementOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementArgs) ToGetPolicyDocumentStatementOutputWithContext(ctx context.Context) GetPolicyDocumentStatementOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementOutput) +} + +// GetPolicyDocumentStatementArrayInput is an input type that accepts GetPolicyDocumentStatementArray and GetPolicyDocumentStatementArrayOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementArrayInput` via: +// +// GetPolicyDocumentStatementArray{ GetPolicyDocumentStatementArgs{...} } +type GetPolicyDocumentStatementArrayInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementArrayOutput() GetPolicyDocumentStatementArrayOutput + ToGetPolicyDocumentStatementArrayOutputWithContext(context.Context) GetPolicyDocumentStatementArrayOutput +} + +type GetPolicyDocumentStatementArray []GetPolicyDocumentStatementInput + +func (GetPolicyDocumentStatementArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatement)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementArray) ToGetPolicyDocumentStatementArrayOutput() GetPolicyDocumentStatementArrayOutput { + return i.ToGetPolicyDocumentStatementArrayOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementArray) ToGetPolicyDocumentStatementArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementArrayOutput) +} + +type GetPolicyDocumentStatementOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatement)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementOutput) ToGetPolicyDocumentStatementOutput() GetPolicyDocumentStatementOutput { + return o +} + +func (o GetPolicyDocumentStatementOutput) ToGetPolicyDocumentStatementOutputWithContext(ctx context.Context) GetPolicyDocumentStatementOutput { + return o +} + +// List of actions that this statement either allows or denies. For example, `["ec2:RunInstances", "s3:*"]`. +func (o GetPolicyDocumentStatementOutput) Actions() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) []string { return v.Actions }).(pulumi.StringArrayOutput) +} + +// Configuration block for a condition. Detailed below. +func (o GetPolicyDocumentStatementOutput) Conditions() GetPolicyDocumentStatementConditionArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) []GetPolicyDocumentStatementCondition { return v.Conditions }).(GetPolicyDocumentStatementConditionArrayOutput) +} + +// Whether this statement allows or denies the given actions. Valid values are `Allow` and `Deny`. Defaults to `Allow`. +func (o GetPolicyDocumentStatementOutput) Effect() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) *string { return v.Effect }).(pulumi.StringPtrOutput) +} + +// List of actions that this statement does *not* apply to. Use to apply a policy statement to all actions *except* those listed. +func (o GetPolicyDocumentStatementOutput) NotActions() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) []string { return v.NotActions }).(pulumi.StringArrayOutput) +} + +// Like `principals` except these are principals that the statement does *not* apply to. +func (o GetPolicyDocumentStatementOutput) NotPrincipals() GetPolicyDocumentStatementNotPrincipalArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) []GetPolicyDocumentStatementNotPrincipal { return v.NotPrincipals }).(GetPolicyDocumentStatementNotPrincipalArrayOutput) +} + +// List of resource ARNs that this statement does *not* apply to. Use to apply a policy statement to all resources *except* those listed. Conflicts with `resources`. +func (o GetPolicyDocumentStatementOutput) NotResources() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) []string { return v.NotResources }).(pulumi.StringArrayOutput) +} + +// Configuration block for principals. Detailed below. +func (o GetPolicyDocumentStatementOutput) Principals() GetPolicyDocumentStatementPrincipalArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) []GetPolicyDocumentStatementPrincipal { return v.Principals }).(GetPolicyDocumentStatementPrincipalArrayOutput) +} + +// List of resource ARNs that this statement applies to. This is required by AWS if used for an IAM policy. Conflicts with `notResources`. +func (o GetPolicyDocumentStatementOutput) Resources() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) []string { return v.Resources }).(pulumi.StringArrayOutput) +} + +// Sid (statement ID) is an identifier for a policy statement. +func (o GetPolicyDocumentStatementOutput) Sid() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetPolicyDocumentStatement) *string { return v.Sid }).(pulumi.StringPtrOutput) +} + +type GetPolicyDocumentStatementArrayOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatement)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementArrayOutput) ToGetPolicyDocumentStatementArrayOutput() GetPolicyDocumentStatementArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementArrayOutput) ToGetPolicyDocumentStatementArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementArrayOutput) Index(i pulumi.IntInput) GetPolicyDocumentStatementOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPolicyDocumentStatement { + return vs[0].([]GetPolicyDocumentStatement)[vs[1].(int)] + }).(GetPolicyDocumentStatementOutput) +} + +type GetPolicyDocumentStatementCondition struct { + // Name of the [IAM condition operator](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) to evaluate. + Test string `pulumi:"test"` + // Values to evaluate the condition against. If multiple values are provided, the condition matches if at least one of them applies. That is, AWS evaluates multiple values as though using an "OR" boolean operation. + Values []string `pulumi:"values"` + // Name of a [Context Variable](http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) to apply the condition to. Context variables may either be standard AWS variables starting with `aws:` or service-specific variables prefixed with the service name. + Variable string `pulumi:"variable"` +} + +// GetPolicyDocumentStatementConditionInput is an input type that accepts GetPolicyDocumentStatementConditionArgs and GetPolicyDocumentStatementConditionOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementConditionInput` via: +// +// GetPolicyDocumentStatementConditionArgs{...} +type GetPolicyDocumentStatementConditionInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementConditionOutput() GetPolicyDocumentStatementConditionOutput + ToGetPolicyDocumentStatementConditionOutputWithContext(context.Context) GetPolicyDocumentStatementConditionOutput +} + +type GetPolicyDocumentStatementConditionArgs struct { + // Name of the [IAM condition operator](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) to evaluate. + Test pulumi.StringInput `pulumi:"test"` + // Values to evaluate the condition against. If multiple values are provided, the condition matches if at least one of them applies. That is, AWS evaluates multiple values as though using an "OR" boolean operation. + Values pulumi.StringArrayInput `pulumi:"values"` + // Name of a [Context Variable](http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) to apply the condition to. Context variables may either be standard AWS variables starting with `aws:` or service-specific variables prefixed with the service name. + Variable pulumi.StringInput `pulumi:"variable"` +} + +func (GetPolicyDocumentStatementConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatementCondition)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementConditionArgs) ToGetPolicyDocumentStatementConditionOutput() GetPolicyDocumentStatementConditionOutput { + return i.ToGetPolicyDocumentStatementConditionOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementConditionArgs) ToGetPolicyDocumentStatementConditionOutputWithContext(ctx context.Context) GetPolicyDocumentStatementConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementConditionOutput) +} + +// GetPolicyDocumentStatementConditionArrayInput is an input type that accepts GetPolicyDocumentStatementConditionArray and GetPolicyDocumentStatementConditionArrayOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementConditionArrayInput` via: +// +// GetPolicyDocumentStatementConditionArray{ GetPolicyDocumentStatementConditionArgs{...} } +type GetPolicyDocumentStatementConditionArrayInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementConditionArrayOutput() GetPolicyDocumentStatementConditionArrayOutput + ToGetPolicyDocumentStatementConditionArrayOutputWithContext(context.Context) GetPolicyDocumentStatementConditionArrayOutput +} + +type GetPolicyDocumentStatementConditionArray []GetPolicyDocumentStatementConditionInput + +func (GetPolicyDocumentStatementConditionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatementCondition)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementConditionArray) ToGetPolicyDocumentStatementConditionArrayOutput() GetPolicyDocumentStatementConditionArrayOutput { + return i.ToGetPolicyDocumentStatementConditionArrayOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementConditionArray) ToGetPolicyDocumentStatementConditionArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementConditionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementConditionArrayOutput) +} + +type GetPolicyDocumentStatementConditionOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatementCondition)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementConditionOutput) ToGetPolicyDocumentStatementConditionOutput() GetPolicyDocumentStatementConditionOutput { + return o +} + +func (o GetPolicyDocumentStatementConditionOutput) ToGetPolicyDocumentStatementConditionOutputWithContext(ctx context.Context) GetPolicyDocumentStatementConditionOutput { + return o +} + +// Name of the [IAM condition operator](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) to evaluate. +func (o GetPolicyDocumentStatementConditionOutput) Test() pulumi.StringOutput { + return o.ApplyT(func(v GetPolicyDocumentStatementCondition) string { return v.Test }).(pulumi.StringOutput) +} + +// Values to evaluate the condition against. If multiple values are provided, the condition matches if at least one of them applies. That is, AWS evaluates multiple values as though using an "OR" boolean operation. +func (o GetPolicyDocumentStatementConditionOutput) Values() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatementCondition) []string { return v.Values }).(pulumi.StringArrayOutput) +} + +// Name of a [Context Variable](http://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) to apply the condition to. Context variables may either be standard AWS variables starting with `aws:` or service-specific variables prefixed with the service name. +func (o GetPolicyDocumentStatementConditionOutput) Variable() pulumi.StringOutput { + return o.ApplyT(func(v GetPolicyDocumentStatementCondition) string { return v.Variable }).(pulumi.StringOutput) +} + +type GetPolicyDocumentStatementConditionArrayOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementConditionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatementCondition)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementConditionArrayOutput) ToGetPolicyDocumentStatementConditionArrayOutput() GetPolicyDocumentStatementConditionArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementConditionArrayOutput) ToGetPolicyDocumentStatementConditionArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementConditionArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementConditionArrayOutput) Index(i pulumi.IntInput) GetPolicyDocumentStatementConditionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPolicyDocumentStatementCondition { + return vs[0].([]GetPolicyDocumentStatementCondition)[vs[1].(int)] + }).(GetPolicyDocumentStatementConditionOutput) +} + +type GetPolicyDocumentStatementNotPrincipal struct { + // List of identifiers for principals. When `type` is `AWS`, these are IAM principal ARNs, e.g., `arn:aws:iam::12345678901:role/yak-role`. When `type` is `Service`, these are AWS Service roles, e.g., `lambda.amazonaws.com`. When `type` is `Federated`, these are web identity users or SAML provider ARNs, e.g., `accounts.google.com` or `arn:aws:iam::12345678901:saml-provider/yak-saml-provider`. When `type` is `CanonicalUser`, these are [canonical user IDs](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId), e.g., `79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`. + Identifiers []string `pulumi:"identifiers"` + // Type of principal. Valid values include `AWS`, `Service`, `Federated`, `CanonicalUser` and `*`. + Type string `pulumi:"type"` +} + +// GetPolicyDocumentStatementNotPrincipalInput is an input type that accepts GetPolicyDocumentStatementNotPrincipalArgs and GetPolicyDocumentStatementNotPrincipalOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementNotPrincipalInput` via: +// +// GetPolicyDocumentStatementNotPrincipalArgs{...} +type GetPolicyDocumentStatementNotPrincipalInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementNotPrincipalOutput() GetPolicyDocumentStatementNotPrincipalOutput + ToGetPolicyDocumentStatementNotPrincipalOutputWithContext(context.Context) GetPolicyDocumentStatementNotPrincipalOutput +} + +type GetPolicyDocumentStatementNotPrincipalArgs struct { + // List of identifiers for principals. When `type` is `AWS`, these are IAM principal ARNs, e.g., `arn:aws:iam::12345678901:role/yak-role`. When `type` is `Service`, these are AWS Service roles, e.g., `lambda.amazonaws.com`. When `type` is `Federated`, these are web identity users or SAML provider ARNs, e.g., `accounts.google.com` or `arn:aws:iam::12345678901:saml-provider/yak-saml-provider`. When `type` is `CanonicalUser`, these are [canonical user IDs](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId), e.g., `79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`. + Identifiers pulumi.StringArrayInput `pulumi:"identifiers"` + // Type of principal. Valid values include `AWS`, `Service`, `Federated`, `CanonicalUser` and `*`. + Type pulumi.StringInput `pulumi:"type"` +} + +func (GetPolicyDocumentStatementNotPrincipalArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatementNotPrincipal)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementNotPrincipalArgs) ToGetPolicyDocumentStatementNotPrincipalOutput() GetPolicyDocumentStatementNotPrincipalOutput { + return i.ToGetPolicyDocumentStatementNotPrincipalOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementNotPrincipalArgs) ToGetPolicyDocumentStatementNotPrincipalOutputWithContext(ctx context.Context) GetPolicyDocumentStatementNotPrincipalOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementNotPrincipalOutput) +} + +// GetPolicyDocumentStatementNotPrincipalArrayInput is an input type that accepts GetPolicyDocumentStatementNotPrincipalArray and GetPolicyDocumentStatementNotPrincipalArrayOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementNotPrincipalArrayInput` via: +// +// GetPolicyDocumentStatementNotPrincipalArray{ GetPolicyDocumentStatementNotPrincipalArgs{...} } +type GetPolicyDocumentStatementNotPrincipalArrayInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementNotPrincipalArrayOutput() GetPolicyDocumentStatementNotPrincipalArrayOutput + ToGetPolicyDocumentStatementNotPrincipalArrayOutputWithContext(context.Context) GetPolicyDocumentStatementNotPrincipalArrayOutput +} + +type GetPolicyDocumentStatementNotPrincipalArray []GetPolicyDocumentStatementNotPrincipalInput + +func (GetPolicyDocumentStatementNotPrincipalArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatementNotPrincipal)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementNotPrincipalArray) ToGetPolicyDocumentStatementNotPrincipalArrayOutput() GetPolicyDocumentStatementNotPrincipalArrayOutput { + return i.ToGetPolicyDocumentStatementNotPrincipalArrayOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementNotPrincipalArray) ToGetPolicyDocumentStatementNotPrincipalArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementNotPrincipalArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementNotPrincipalArrayOutput) +} + +type GetPolicyDocumentStatementNotPrincipalOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementNotPrincipalOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatementNotPrincipal)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementNotPrincipalOutput) ToGetPolicyDocumentStatementNotPrincipalOutput() GetPolicyDocumentStatementNotPrincipalOutput { + return o +} + +func (o GetPolicyDocumentStatementNotPrincipalOutput) ToGetPolicyDocumentStatementNotPrincipalOutputWithContext(ctx context.Context) GetPolicyDocumentStatementNotPrincipalOutput { + return o +} + +// List of identifiers for principals. When `type` is `AWS`, these are IAM principal ARNs, e.g., `arn:aws:iam::12345678901:role/yak-role`. When `type` is `Service`, these are AWS Service roles, e.g., `lambda.amazonaws.com`. When `type` is `Federated`, these are web identity users or SAML provider ARNs, e.g., `accounts.google.com` or `arn:aws:iam::12345678901:saml-provider/yak-saml-provider`. When `type` is `CanonicalUser`, these are [canonical user IDs](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId), e.g., `79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`. +func (o GetPolicyDocumentStatementNotPrincipalOutput) Identifiers() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatementNotPrincipal) []string { return v.Identifiers }).(pulumi.StringArrayOutput) +} + +// Type of principal. Valid values include `AWS`, `Service`, `Federated`, `CanonicalUser` and `*`. +func (o GetPolicyDocumentStatementNotPrincipalOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetPolicyDocumentStatementNotPrincipal) string { return v.Type }).(pulumi.StringOutput) +} + +type GetPolicyDocumentStatementNotPrincipalArrayOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementNotPrincipalArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatementNotPrincipal)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementNotPrincipalArrayOutput) ToGetPolicyDocumentStatementNotPrincipalArrayOutput() GetPolicyDocumentStatementNotPrincipalArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementNotPrincipalArrayOutput) ToGetPolicyDocumentStatementNotPrincipalArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementNotPrincipalArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementNotPrincipalArrayOutput) Index(i pulumi.IntInput) GetPolicyDocumentStatementNotPrincipalOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPolicyDocumentStatementNotPrincipal { + return vs[0].([]GetPolicyDocumentStatementNotPrincipal)[vs[1].(int)] + }).(GetPolicyDocumentStatementNotPrincipalOutput) +} + +type GetPolicyDocumentStatementPrincipal struct { + // List of identifiers for principals. When `type` is `AWS`, these are IAM principal ARNs, e.g., `arn:aws:iam::12345678901:role/yak-role`. When `type` is `Service`, these are AWS Service roles, e.g., `lambda.amazonaws.com`. When `type` is `Federated`, these are web identity users or SAML provider ARNs, e.g., `accounts.google.com` or `arn:aws:iam::12345678901:saml-provider/yak-saml-provider`. When `type` is `CanonicalUser`, these are [canonical user IDs](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId), e.g., `79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`. + Identifiers []string `pulumi:"identifiers"` + // Type of principal. Valid values include `AWS`, `Service`, `Federated`, `CanonicalUser` and `*`. + Type string `pulumi:"type"` +} + +// GetPolicyDocumentStatementPrincipalInput is an input type that accepts GetPolicyDocumentStatementPrincipalArgs and GetPolicyDocumentStatementPrincipalOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementPrincipalInput` via: +// +// GetPolicyDocumentStatementPrincipalArgs{...} +type GetPolicyDocumentStatementPrincipalInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementPrincipalOutput() GetPolicyDocumentStatementPrincipalOutput + ToGetPolicyDocumentStatementPrincipalOutputWithContext(context.Context) GetPolicyDocumentStatementPrincipalOutput +} + +type GetPolicyDocumentStatementPrincipalArgs struct { + // List of identifiers for principals. When `type` is `AWS`, these are IAM principal ARNs, e.g., `arn:aws:iam::12345678901:role/yak-role`. When `type` is `Service`, these are AWS Service roles, e.g., `lambda.amazonaws.com`. When `type` is `Federated`, these are web identity users or SAML provider ARNs, e.g., `accounts.google.com` or `arn:aws:iam::12345678901:saml-provider/yak-saml-provider`. When `type` is `CanonicalUser`, these are [canonical user IDs](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId), e.g., `79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`. + Identifiers pulumi.StringArrayInput `pulumi:"identifiers"` + // Type of principal. Valid values include `AWS`, `Service`, `Federated`, `CanonicalUser` and `*`. + Type pulumi.StringInput `pulumi:"type"` +} + +func (GetPolicyDocumentStatementPrincipalArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatementPrincipal)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementPrincipalArgs) ToGetPolicyDocumentStatementPrincipalOutput() GetPolicyDocumentStatementPrincipalOutput { + return i.ToGetPolicyDocumentStatementPrincipalOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementPrincipalArgs) ToGetPolicyDocumentStatementPrincipalOutputWithContext(ctx context.Context) GetPolicyDocumentStatementPrincipalOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementPrincipalOutput) +} + +// GetPolicyDocumentStatementPrincipalArrayInput is an input type that accepts GetPolicyDocumentStatementPrincipalArray and GetPolicyDocumentStatementPrincipalArrayOutput values. +// You can construct a concrete instance of `GetPolicyDocumentStatementPrincipalArrayInput` via: +// +// GetPolicyDocumentStatementPrincipalArray{ GetPolicyDocumentStatementPrincipalArgs{...} } +type GetPolicyDocumentStatementPrincipalArrayInput interface { + pulumi.Input + + ToGetPolicyDocumentStatementPrincipalArrayOutput() GetPolicyDocumentStatementPrincipalArrayOutput + ToGetPolicyDocumentStatementPrincipalArrayOutputWithContext(context.Context) GetPolicyDocumentStatementPrincipalArrayOutput +} + +type GetPolicyDocumentStatementPrincipalArray []GetPolicyDocumentStatementPrincipalInput + +func (GetPolicyDocumentStatementPrincipalArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatementPrincipal)(nil)).Elem() +} + +func (i GetPolicyDocumentStatementPrincipalArray) ToGetPolicyDocumentStatementPrincipalArrayOutput() GetPolicyDocumentStatementPrincipalArrayOutput { + return i.ToGetPolicyDocumentStatementPrincipalArrayOutputWithContext(context.Background()) +} + +func (i GetPolicyDocumentStatementPrincipalArray) ToGetPolicyDocumentStatementPrincipalArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementPrincipalArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPolicyDocumentStatementPrincipalArrayOutput) +} + +type GetPolicyDocumentStatementPrincipalOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementPrincipalOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPolicyDocumentStatementPrincipal)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementPrincipalOutput) ToGetPolicyDocumentStatementPrincipalOutput() GetPolicyDocumentStatementPrincipalOutput { + return o +} + +func (o GetPolicyDocumentStatementPrincipalOutput) ToGetPolicyDocumentStatementPrincipalOutputWithContext(ctx context.Context) GetPolicyDocumentStatementPrincipalOutput { + return o +} + +// List of identifiers for principals. When `type` is `AWS`, these are IAM principal ARNs, e.g., `arn:aws:iam::12345678901:role/yak-role`. When `type` is `Service`, these are AWS Service roles, e.g., `lambda.amazonaws.com`. When `type` is `Federated`, these are web identity users or SAML provider ARNs, e.g., `accounts.google.com` or `arn:aws:iam::12345678901:saml-provider/yak-saml-provider`. When `type` is `CanonicalUser`, these are [canonical user IDs](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingCanonicalId), e.g., `79a59df900b949e55d96a1e698fbacedfd6e09d98eacf8f8d5218e7cd47ef2be`. +func (o GetPolicyDocumentStatementPrincipalOutput) Identifiers() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPolicyDocumentStatementPrincipal) []string { return v.Identifiers }).(pulumi.StringArrayOutput) +} + +// Type of principal. Valid values include `AWS`, `Service`, `Federated`, `CanonicalUser` and `*`. +func (o GetPolicyDocumentStatementPrincipalOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetPolicyDocumentStatementPrincipal) string { return v.Type }).(pulumi.StringOutput) +} + +type GetPolicyDocumentStatementPrincipalArrayOutput struct{ *pulumi.OutputState } + +func (GetPolicyDocumentStatementPrincipalArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPolicyDocumentStatementPrincipal)(nil)).Elem() +} + +func (o GetPolicyDocumentStatementPrincipalArrayOutput) ToGetPolicyDocumentStatementPrincipalArrayOutput() GetPolicyDocumentStatementPrincipalArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementPrincipalArrayOutput) ToGetPolicyDocumentStatementPrincipalArrayOutputWithContext(ctx context.Context) GetPolicyDocumentStatementPrincipalArrayOutput { + return o +} + +func (o GetPolicyDocumentStatementPrincipalArrayOutput) Index(i pulumi.IntInput) GetPolicyDocumentStatementPrincipalOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPolicyDocumentStatementPrincipal { + return vs[0].([]GetPolicyDocumentStatementPrincipal)[vs[1].(int)] + }).(GetPolicyDocumentStatementPrincipalOutput) +} + +type GetPrincipalPolicySimulationContext struct { + // The context _condition key_ to set. + // + // If you have policies containing `Condition` elements or using dynamic interpolations then you will need to provide suitable values for each condition key your policies use. See [Actions, resources, and condition keys for AWS services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) to find the various condition keys that are normally provided for real requests to each action of each AWS service. + Key string `pulumi:"key"` + // An IAM value type that determines how the policy simulator will interpret the strings given in `values`. + // + // For more information, see the `ContextKeyType` field of [`iam.ContextEntry`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ContextEntry.html) in the underlying API. + Type string `pulumi:"type"` + // A set of one or more values for this context entry. + Values []string `pulumi:"values"` +} + +// GetPrincipalPolicySimulationContextInput is an input type that accepts GetPrincipalPolicySimulationContextArgs and GetPrincipalPolicySimulationContextOutput values. +// You can construct a concrete instance of `GetPrincipalPolicySimulationContextInput` via: +// +// GetPrincipalPolicySimulationContextArgs{...} +type GetPrincipalPolicySimulationContextInput interface { + pulumi.Input + + ToGetPrincipalPolicySimulationContextOutput() GetPrincipalPolicySimulationContextOutput + ToGetPrincipalPolicySimulationContextOutputWithContext(context.Context) GetPrincipalPolicySimulationContextOutput +} + +type GetPrincipalPolicySimulationContextArgs struct { + // The context _condition key_ to set. + // + // If you have policies containing `Condition` elements or using dynamic interpolations then you will need to provide suitable values for each condition key your policies use. See [Actions, resources, and condition keys for AWS services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) to find the various condition keys that are normally provided for real requests to each action of each AWS service. + Key pulumi.StringInput `pulumi:"key"` + // An IAM value type that determines how the policy simulator will interpret the strings given in `values`. + // + // For more information, see the `ContextKeyType` field of [`iam.ContextEntry`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ContextEntry.html) in the underlying API. + Type pulumi.StringInput `pulumi:"type"` + // A set of one or more values for this context entry. + Values pulumi.StringArrayInput `pulumi:"values"` +} + +func (GetPrincipalPolicySimulationContextArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrincipalPolicySimulationContext)(nil)).Elem() +} + +func (i GetPrincipalPolicySimulationContextArgs) ToGetPrincipalPolicySimulationContextOutput() GetPrincipalPolicySimulationContextOutput { + return i.ToGetPrincipalPolicySimulationContextOutputWithContext(context.Background()) +} + +func (i GetPrincipalPolicySimulationContextArgs) ToGetPrincipalPolicySimulationContextOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationContextOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrincipalPolicySimulationContextOutput) +} + +// GetPrincipalPolicySimulationContextArrayInput is an input type that accepts GetPrincipalPolicySimulationContextArray and GetPrincipalPolicySimulationContextArrayOutput values. +// You can construct a concrete instance of `GetPrincipalPolicySimulationContextArrayInput` via: +// +// GetPrincipalPolicySimulationContextArray{ GetPrincipalPolicySimulationContextArgs{...} } +type GetPrincipalPolicySimulationContextArrayInput interface { + pulumi.Input + + ToGetPrincipalPolicySimulationContextArrayOutput() GetPrincipalPolicySimulationContextArrayOutput + ToGetPrincipalPolicySimulationContextArrayOutputWithContext(context.Context) GetPrincipalPolicySimulationContextArrayOutput +} + +type GetPrincipalPolicySimulationContextArray []GetPrincipalPolicySimulationContextInput + +func (GetPrincipalPolicySimulationContextArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrincipalPolicySimulationContext)(nil)).Elem() +} + +func (i GetPrincipalPolicySimulationContextArray) ToGetPrincipalPolicySimulationContextArrayOutput() GetPrincipalPolicySimulationContextArrayOutput { + return i.ToGetPrincipalPolicySimulationContextArrayOutputWithContext(context.Background()) +} + +func (i GetPrincipalPolicySimulationContextArray) ToGetPrincipalPolicySimulationContextArrayOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationContextArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrincipalPolicySimulationContextArrayOutput) +} + +type GetPrincipalPolicySimulationContextOutput struct{ *pulumi.OutputState } + +func (GetPrincipalPolicySimulationContextOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrincipalPolicySimulationContext)(nil)).Elem() +} + +func (o GetPrincipalPolicySimulationContextOutput) ToGetPrincipalPolicySimulationContextOutput() GetPrincipalPolicySimulationContextOutput { + return o +} + +func (o GetPrincipalPolicySimulationContextOutput) ToGetPrincipalPolicySimulationContextOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationContextOutput { + return o +} + +// The context _condition key_ to set. +// +// If you have policies containing `Condition` elements or using dynamic interpolations then you will need to provide suitable values for each condition key your policies use. See [Actions, resources, and condition keys for AWS services](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html) to find the various condition keys that are normally provided for real requests to each action of each AWS service. +func (o GetPrincipalPolicySimulationContextOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationContext) string { return v.Key }).(pulumi.StringOutput) +} + +// An IAM value type that determines how the policy simulator will interpret the strings given in `values`. +// +// For more information, see the `ContextKeyType` field of [`iam.ContextEntry`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ContextEntry.html) in the underlying API. +func (o GetPrincipalPolicySimulationContextOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationContext) string { return v.Type }).(pulumi.StringOutput) +} + +// A set of one or more values for this context entry. +func (o GetPrincipalPolicySimulationContextOutput) Values() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationContext) []string { return v.Values }).(pulumi.StringArrayOutput) +} + +type GetPrincipalPolicySimulationContextArrayOutput struct{ *pulumi.OutputState } + +func (GetPrincipalPolicySimulationContextArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrincipalPolicySimulationContext)(nil)).Elem() +} + +func (o GetPrincipalPolicySimulationContextArrayOutput) ToGetPrincipalPolicySimulationContextArrayOutput() GetPrincipalPolicySimulationContextArrayOutput { + return o +} + +func (o GetPrincipalPolicySimulationContextArrayOutput) ToGetPrincipalPolicySimulationContextArrayOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationContextArrayOutput { + return o +} + +func (o GetPrincipalPolicySimulationContextArrayOutput) Index(i pulumi.IntInput) GetPrincipalPolicySimulationContextOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPrincipalPolicySimulationContext { + return vs[0].([]GetPrincipalPolicySimulationContext)[vs[1].(int)] + }).(GetPrincipalPolicySimulationContextOutput) +} + +type GetPrincipalPolicySimulationResult struct { + // The name of the single IAM action used for this particular request. + ActionName string `pulumi:"actionName"` + // `true` if `decision` is "allowed", and `false` otherwise. + Allowed bool `pulumi:"allowed"` + // The raw decision determined from all of the policies in scope; either "allowed", "explicitDeny", or "implicitDeny". + Decision string `pulumi:"decision"` + // A map of arbitrary metadata entries returned by the policy simulator for this request. + DecisionDetails map[string]string `pulumi:"decisionDetails"` + // A nested set of objects describing which policies contained statements that were relevant to this simulation request. Each object has attributes `sourcePolicyId` and `sourcePolicyType` to identify one of the policies. + MatchedStatements []GetPrincipalPolicySimulationResultMatchedStatement `pulumi:"matchedStatements"` + // A set of context keys (or condition keys) that were needed by some of the policies contributing to this result but not specified using a `context` block in the configuration. Missing or incorrect context keys will typically cause a simulated request to be disallowed. + MissingContextKeys []string `pulumi:"missingContextKeys"` + // ARN of the resource that was used for this particular request. When you specify multiple actions and multiple resource ARNs, that causes a separate policy request for each combination of unique action and resource. + ResourceArn string `pulumi:"resourceArn"` +} + +// GetPrincipalPolicySimulationResultInput is an input type that accepts GetPrincipalPolicySimulationResultArgs and GetPrincipalPolicySimulationResultOutput values. +// You can construct a concrete instance of `GetPrincipalPolicySimulationResultInput` via: +// +// GetPrincipalPolicySimulationResultArgs{...} +type GetPrincipalPolicySimulationResultInput interface { + pulumi.Input + + ToGetPrincipalPolicySimulationResultOutput() GetPrincipalPolicySimulationResultOutput + ToGetPrincipalPolicySimulationResultOutputWithContext(context.Context) GetPrincipalPolicySimulationResultOutput +} + +type GetPrincipalPolicySimulationResultArgs struct { + // The name of the single IAM action used for this particular request. + ActionName pulumi.StringInput `pulumi:"actionName"` + // `true` if `decision` is "allowed", and `false` otherwise. + Allowed pulumi.BoolInput `pulumi:"allowed"` + // The raw decision determined from all of the policies in scope; either "allowed", "explicitDeny", or "implicitDeny". + Decision pulumi.StringInput `pulumi:"decision"` + // A map of arbitrary metadata entries returned by the policy simulator for this request. + DecisionDetails pulumi.StringMapInput `pulumi:"decisionDetails"` + // A nested set of objects describing which policies contained statements that were relevant to this simulation request. Each object has attributes `sourcePolicyId` and `sourcePolicyType` to identify one of the policies. + MatchedStatements GetPrincipalPolicySimulationResultMatchedStatementArrayInput `pulumi:"matchedStatements"` + // A set of context keys (or condition keys) that were needed by some of the policies contributing to this result but not specified using a `context` block in the configuration. Missing or incorrect context keys will typically cause a simulated request to be disallowed. + MissingContextKeys pulumi.StringArrayInput `pulumi:"missingContextKeys"` + // ARN of the resource that was used for this particular request. When you specify multiple actions and multiple resource ARNs, that causes a separate policy request for each combination of unique action and resource. + ResourceArn pulumi.StringInput `pulumi:"resourceArn"` +} + +func (GetPrincipalPolicySimulationResultArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrincipalPolicySimulationResult)(nil)).Elem() +} + +func (i GetPrincipalPolicySimulationResultArgs) ToGetPrincipalPolicySimulationResultOutput() GetPrincipalPolicySimulationResultOutput { + return i.ToGetPrincipalPolicySimulationResultOutputWithContext(context.Background()) +} + +func (i GetPrincipalPolicySimulationResultArgs) ToGetPrincipalPolicySimulationResultOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrincipalPolicySimulationResultOutput) +} + +// GetPrincipalPolicySimulationResultArrayInput is an input type that accepts GetPrincipalPolicySimulationResultArray and GetPrincipalPolicySimulationResultArrayOutput values. +// You can construct a concrete instance of `GetPrincipalPolicySimulationResultArrayInput` via: +// +// GetPrincipalPolicySimulationResultArray{ GetPrincipalPolicySimulationResultArgs{...} } +type GetPrincipalPolicySimulationResultArrayInput interface { + pulumi.Input + + ToGetPrincipalPolicySimulationResultArrayOutput() GetPrincipalPolicySimulationResultArrayOutput + ToGetPrincipalPolicySimulationResultArrayOutputWithContext(context.Context) GetPrincipalPolicySimulationResultArrayOutput +} + +type GetPrincipalPolicySimulationResultArray []GetPrincipalPolicySimulationResultInput + +func (GetPrincipalPolicySimulationResultArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrincipalPolicySimulationResult)(nil)).Elem() +} + +func (i GetPrincipalPolicySimulationResultArray) ToGetPrincipalPolicySimulationResultArrayOutput() GetPrincipalPolicySimulationResultArrayOutput { + return i.ToGetPrincipalPolicySimulationResultArrayOutputWithContext(context.Background()) +} + +func (i GetPrincipalPolicySimulationResultArray) ToGetPrincipalPolicySimulationResultArrayOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrincipalPolicySimulationResultArrayOutput) +} + +type GetPrincipalPolicySimulationResultOutput struct{ *pulumi.OutputState } + +func (GetPrincipalPolicySimulationResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrincipalPolicySimulationResult)(nil)).Elem() +} + +func (o GetPrincipalPolicySimulationResultOutput) ToGetPrincipalPolicySimulationResultOutput() GetPrincipalPolicySimulationResultOutput { + return o +} + +func (o GetPrincipalPolicySimulationResultOutput) ToGetPrincipalPolicySimulationResultOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultOutput { + return o +} + +// The name of the single IAM action used for this particular request. +func (o GetPrincipalPolicySimulationResultOutput) ActionName() pulumi.StringOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResult) string { return v.ActionName }).(pulumi.StringOutput) +} + +// `true` if `decision` is "allowed", and `false` otherwise. +func (o GetPrincipalPolicySimulationResultOutput) Allowed() pulumi.BoolOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResult) bool { return v.Allowed }).(pulumi.BoolOutput) +} + +// The raw decision determined from all of the policies in scope; either "allowed", "explicitDeny", or "implicitDeny". +func (o GetPrincipalPolicySimulationResultOutput) Decision() pulumi.StringOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResult) string { return v.Decision }).(pulumi.StringOutput) +} + +// A map of arbitrary metadata entries returned by the policy simulator for this request. +func (o GetPrincipalPolicySimulationResultOutput) DecisionDetails() pulumi.StringMapOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResult) map[string]string { return v.DecisionDetails }).(pulumi.StringMapOutput) +} + +// A nested set of objects describing which policies contained statements that were relevant to this simulation request. Each object has attributes `sourcePolicyId` and `sourcePolicyType` to identify one of the policies. +func (o GetPrincipalPolicySimulationResultOutput) MatchedStatements() GetPrincipalPolicySimulationResultMatchedStatementArrayOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResult) []GetPrincipalPolicySimulationResultMatchedStatement { + return v.MatchedStatements + }).(GetPrincipalPolicySimulationResultMatchedStatementArrayOutput) +} + +// A set of context keys (or condition keys) that were needed by some of the policies contributing to this result but not specified using a `context` block in the configuration. Missing or incorrect context keys will typically cause a simulated request to be disallowed. +func (o GetPrincipalPolicySimulationResultOutput) MissingContextKeys() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResult) []string { return v.MissingContextKeys }).(pulumi.StringArrayOutput) +} + +// ARN of the resource that was used for this particular request. When you specify multiple actions and multiple resource ARNs, that causes a separate policy request for each combination of unique action and resource. +func (o GetPrincipalPolicySimulationResultOutput) ResourceArn() pulumi.StringOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResult) string { return v.ResourceArn }).(pulumi.StringOutput) +} + +type GetPrincipalPolicySimulationResultArrayOutput struct{ *pulumi.OutputState } + +func (GetPrincipalPolicySimulationResultArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrincipalPolicySimulationResult)(nil)).Elem() +} + +func (o GetPrincipalPolicySimulationResultArrayOutput) ToGetPrincipalPolicySimulationResultArrayOutput() GetPrincipalPolicySimulationResultArrayOutput { + return o +} + +func (o GetPrincipalPolicySimulationResultArrayOutput) ToGetPrincipalPolicySimulationResultArrayOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultArrayOutput { + return o +} + +func (o GetPrincipalPolicySimulationResultArrayOutput) Index(i pulumi.IntInput) GetPrincipalPolicySimulationResultOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPrincipalPolicySimulationResult { + return vs[0].([]GetPrincipalPolicySimulationResult)[vs[1].(int)] + }).(GetPrincipalPolicySimulationResultOutput) +} + +type GetPrincipalPolicySimulationResultMatchedStatement struct { + // Identifier of one of the policies used as input to the simulation. + SourcePolicyId string `pulumi:"sourcePolicyId"` + // The type of the policy identified in source_policy_id. + SourcePolicyType string `pulumi:"sourcePolicyType"` +} + +// GetPrincipalPolicySimulationResultMatchedStatementInput is an input type that accepts GetPrincipalPolicySimulationResultMatchedStatementArgs and GetPrincipalPolicySimulationResultMatchedStatementOutput values. +// You can construct a concrete instance of `GetPrincipalPolicySimulationResultMatchedStatementInput` via: +// +// GetPrincipalPolicySimulationResultMatchedStatementArgs{...} +type GetPrincipalPolicySimulationResultMatchedStatementInput interface { + pulumi.Input + + ToGetPrincipalPolicySimulationResultMatchedStatementOutput() GetPrincipalPolicySimulationResultMatchedStatementOutput + ToGetPrincipalPolicySimulationResultMatchedStatementOutputWithContext(context.Context) GetPrincipalPolicySimulationResultMatchedStatementOutput +} + +type GetPrincipalPolicySimulationResultMatchedStatementArgs struct { + // Identifier of one of the policies used as input to the simulation. + SourcePolicyId pulumi.StringInput `pulumi:"sourcePolicyId"` + // The type of the policy identified in source_policy_id. + SourcePolicyType pulumi.StringInput `pulumi:"sourcePolicyType"` +} + +func (GetPrincipalPolicySimulationResultMatchedStatementArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrincipalPolicySimulationResultMatchedStatement)(nil)).Elem() +} + +func (i GetPrincipalPolicySimulationResultMatchedStatementArgs) ToGetPrincipalPolicySimulationResultMatchedStatementOutput() GetPrincipalPolicySimulationResultMatchedStatementOutput { + return i.ToGetPrincipalPolicySimulationResultMatchedStatementOutputWithContext(context.Background()) +} + +func (i GetPrincipalPolicySimulationResultMatchedStatementArgs) ToGetPrincipalPolicySimulationResultMatchedStatementOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultMatchedStatementOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrincipalPolicySimulationResultMatchedStatementOutput) +} + +// GetPrincipalPolicySimulationResultMatchedStatementArrayInput is an input type that accepts GetPrincipalPolicySimulationResultMatchedStatementArray and GetPrincipalPolicySimulationResultMatchedStatementArrayOutput values. +// You can construct a concrete instance of `GetPrincipalPolicySimulationResultMatchedStatementArrayInput` via: +// +// GetPrincipalPolicySimulationResultMatchedStatementArray{ GetPrincipalPolicySimulationResultMatchedStatementArgs{...} } +type GetPrincipalPolicySimulationResultMatchedStatementArrayInput interface { + pulumi.Input + + ToGetPrincipalPolicySimulationResultMatchedStatementArrayOutput() GetPrincipalPolicySimulationResultMatchedStatementArrayOutput + ToGetPrincipalPolicySimulationResultMatchedStatementArrayOutputWithContext(context.Context) GetPrincipalPolicySimulationResultMatchedStatementArrayOutput +} + +type GetPrincipalPolicySimulationResultMatchedStatementArray []GetPrincipalPolicySimulationResultMatchedStatementInput + +func (GetPrincipalPolicySimulationResultMatchedStatementArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrincipalPolicySimulationResultMatchedStatement)(nil)).Elem() +} + +func (i GetPrincipalPolicySimulationResultMatchedStatementArray) ToGetPrincipalPolicySimulationResultMatchedStatementArrayOutput() GetPrincipalPolicySimulationResultMatchedStatementArrayOutput { + return i.ToGetPrincipalPolicySimulationResultMatchedStatementArrayOutputWithContext(context.Background()) +} + +func (i GetPrincipalPolicySimulationResultMatchedStatementArray) ToGetPrincipalPolicySimulationResultMatchedStatementArrayOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultMatchedStatementArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetPrincipalPolicySimulationResultMatchedStatementArrayOutput) +} + +type GetPrincipalPolicySimulationResultMatchedStatementOutput struct{ *pulumi.OutputState } + +func (GetPrincipalPolicySimulationResultMatchedStatementOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetPrincipalPolicySimulationResultMatchedStatement)(nil)).Elem() +} + +func (o GetPrincipalPolicySimulationResultMatchedStatementOutput) ToGetPrincipalPolicySimulationResultMatchedStatementOutput() GetPrincipalPolicySimulationResultMatchedStatementOutput { + return o +} + +func (o GetPrincipalPolicySimulationResultMatchedStatementOutput) ToGetPrincipalPolicySimulationResultMatchedStatementOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultMatchedStatementOutput { + return o +} + +// Identifier of one of the policies used as input to the simulation. +func (o GetPrincipalPolicySimulationResultMatchedStatementOutput) SourcePolicyId() pulumi.StringOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResultMatchedStatement) string { return v.SourcePolicyId }).(pulumi.StringOutput) +} + +// The type of the policy identified in source_policy_id. +func (o GetPrincipalPolicySimulationResultMatchedStatementOutput) SourcePolicyType() pulumi.StringOutput { + return o.ApplyT(func(v GetPrincipalPolicySimulationResultMatchedStatement) string { return v.SourcePolicyType }).(pulumi.StringOutput) +} + +type GetPrincipalPolicySimulationResultMatchedStatementArrayOutput struct{ *pulumi.OutputState } + +func (GetPrincipalPolicySimulationResultMatchedStatementArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetPrincipalPolicySimulationResultMatchedStatement)(nil)).Elem() +} + +func (o GetPrincipalPolicySimulationResultMatchedStatementArrayOutput) ToGetPrincipalPolicySimulationResultMatchedStatementArrayOutput() GetPrincipalPolicySimulationResultMatchedStatementArrayOutput { + return o +} + +func (o GetPrincipalPolicySimulationResultMatchedStatementArrayOutput) ToGetPrincipalPolicySimulationResultMatchedStatementArrayOutputWithContext(ctx context.Context) GetPrincipalPolicySimulationResultMatchedStatementArrayOutput { + return o +} + +func (o GetPrincipalPolicySimulationResultMatchedStatementArrayOutput) Index(i pulumi.IntInput) GetPrincipalPolicySimulationResultMatchedStatementOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetPrincipalPolicySimulationResultMatchedStatement { + return vs[0].([]GetPrincipalPolicySimulationResultMatchedStatement)[vs[1].(int)] + }).(GetPrincipalPolicySimulationResultMatchedStatementOutput) +} + +type GetRoleRoleLastUsed struct { + // The date and time, in RFC 3339 format, that the role was last used. + LastUsedDate string `pulumi:"lastUsedDate"` + // The name of the AWS Region in which the role was last used. + Region string `pulumi:"region"` +} + +// GetRoleRoleLastUsedInput is an input type that accepts GetRoleRoleLastUsedArgs and GetRoleRoleLastUsedOutput values. +// You can construct a concrete instance of `GetRoleRoleLastUsedInput` via: +// +// GetRoleRoleLastUsedArgs{...} +type GetRoleRoleLastUsedInput interface { + pulumi.Input + + ToGetRoleRoleLastUsedOutput() GetRoleRoleLastUsedOutput + ToGetRoleRoleLastUsedOutputWithContext(context.Context) GetRoleRoleLastUsedOutput +} + +type GetRoleRoleLastUsedArgs struct { + // The date and time, in RFC 3339 format, that the role was last used. + LastUsedDate pulumi.StringInput `pulumi:"lastUsedDate"` + // The name of the AWS Region in which the role was last used. + Region pulumi.StringInput `pulumi:"region"` +} + +func (GetRoleRoleLastUsedArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetRoleRoleLastUsed)(nil)).Elem() +} + +func (i GetRoleRoleLastUsedArgs) ToGetRoleRoleLastUsedOutput() GetRoleRoleLastUsedOutput { + return i.ToGetRoleRoleLastUsedOutputWithContext(context.Background()) +} + +func (i GetRoleRoleLastUsedArgs) ToGetRoleRoleLastUsedOutputWithContext(ctx context.Context) GetRoleRoleLastUsedOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRoleRoleLastUsedOutput) +} + +// GetRoleRoleLastUsedArrayInput is an input type that accepts GetRoleRoleLastUsedArray and GetRoleRoleLastUsedArrayOutput values. +// You can construct a concrete instance of `GetRoleRoleLastUsedArrayInput` via: +// +// GetRoleRoleLastUsedArray{ GetRoleRoleLastUsedArgs{...} } +type GetRoleRoleLastUsedArrayInput interface { + pulumi.Input + + ToGetRoleRoleLastUsedArrayOutput() GetRoleRoleLastUsedArrayOutput + ToGetRoleRoleLastUsedArrayOutputWithContext(context.Context) GetRoleRoleLastUsedArrayOutput +} + +type GetRoleRoleLastUsedArray []GetRoleRoleLastUsedInput + +func (GetRoleRoleLastUsedArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRoleRoleLastUsed)(nil)).Elem() +} + +func (i GetRoleRoleLastUsedArray) ToGetRoleRoleLastUsedArrayOutput() GetRoleRoleLastUsedArrayOutput { + return i.ToGetRoleRoleLastUsedArrayOutputWithContext(context.Background()) +} + +func (i GetRoleRoleLastUsedArray) ToGetRoleRoleLastUsedArrayOutputWithContext(ctx context.Context) GetRoleRoleLastUsedArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetRoleRoleLastUsedArrayOutput) +} + +type GetRoleRoleLastUsedOutput struct{ *pulumi.OutputState } + +func (GetRoleRoleLastUsedOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetRoleRoleLastUsed)(nil)).Elem() +} + +func (o GetRoleRoleLastUsedOutput) ToGetRoleRoleLastUsedOutput() GetRoleRoleLastUsedOutput { + return o +} + +func (o GetRoleRoleLastUsedOutput) ToGetRoleRoleLastUsedOutputWithContext(ctx context.Context) GetRoleRoleLastUsedOutput { + return o +} + +// The date and time, in RFC 3339 format, that the role was last used. +func (o GetRoleRoleLastUsedOutput) LastUsedDate() pulumi.StringOutput { + return o.ApplyT(func(v GetRoleRoleLastUsed) string { return v.LastUsedDate }).(pulumi.StringOutput) +} + +// The name of the AWS Region in which the role was last used. +func (o GetRoleRoleLastUsedOutput) Region() pulumi.StringOutput { + return o.ApplyT(func(v GetRoleRoleLastUsed) string { return v.Region }).(pulumi.StringOutput) +} + +type GetRoleRoleLastUsedArrayOutput struct{ *pulumi.OutputState } + +func (GetRoleRoleLastUsedArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetRoleRoleLastUsed)(nil)).Elem() +} + +func (o GetRoleRoleLastUsedArrayOutput) ToGetRoleRoleLastUsedArrayOutput() GetRoleRoleLastUsedArrayOutput { + return o +} + +func (o GetRoleRoleLastUsedArrayOutput) ToGetRoleRoleLastUsedArrayOutputWithContext(ctx context.Context) GetRoleRoleLastUsedArrayOutput { + return o +} + +func (o GetRoleRoleLastUsedArrayOutput) Index(i pulumi.IntInput) GetRoleRoleLastUsedOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetRoleRoleLastUsed { + return vs[0].([]GetRoleRoleLastUsed)[vs[1].(int)] + }).(GetRoleRoleLastUsedOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RoleInlinePolicyInput)(nil)).Elem(), RoleInlinePolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RoleInlinePolicyArrayInput)(nil)).Elem(), RoleInlinePolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetAccessKeysAccessKeyInput)(nil)).Elem(), GetAccessKeysAccessKeyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetAccessKeysAccessKeyArrayInput)(nil)).Elem(), GetAccessKeysAccessKeyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetGroupUserInput)(nil)).Elem(), GetGroupUserArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetGroupUserArrayInput)(nil)).Elem(), GetGroupUserArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementInput)(nil)).Elem(), GetPolicyDocumentStatementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementArrayInput)(nil)).Elem(), GetPolicyDocumentStatementArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementConditionInput)(nil)).Elem(), GetPolicyDocumentStatementConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementConditionArrayInput)(nil)).Elem(), GetPolicyDocumentStatementConditionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementNotPrincipalInput)(nil)).Elem(), GetPolicyDocumentStatementNotPrincipalArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementNotPrincipalArrayInput)(nil)).Elem(), GetPolicyDocumentStatementNotPrincipalArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementPrincipalInput)(nil)).Elem(), GetPolicyDocumentStatementPrincipalArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPolicyDocumentStatementPrincipalArrayInput)(nil)).Elem(), GetPolicyDocumentStatementPrincipalArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrincipalPolicySimulationContextInput)(nil)).Elem(), GetPrincipalPolicySimulationContextArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrincipalPolicySimulationContextArrayInput)(nil)).Elem(), GetPrincipalPolicySimulationContextArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrincipalPolicySimulationResultInput)(nil)).Elem(), GetPrincipalPolicySimulationResultArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrincipalPolicySimulationResultArrayInput)(nil)).Elem(), GetPrincipalPolicySimulationResultArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrincipalPolicySimulationResultMatchedStatementInput)(nil)).Elem(), GetPrincipalPolicySimulationResultMatchedStatementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetPrincipalPolicySimulationResultMatchedStatementArrayInput)(nil)).Elem(), GetPrincipalPolicySimulationResultMatchedStatementArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRoleRoleLastUsedInput)(nil)).Elem(), GetRoleRoleLastUsedArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetRoleRoleLastUsedArrayInput)(nil)).Elem(), GetRoleRoleLastUsedArray{}) + pulumi.RegisterOutputType(RoleInlinePolicyOutput{}) + pulumi.RegisterOutputType(RoleInlinePolicyArrayOutput{}) + pulumi.RegisterOutputType(GetAccessKeysAccessKeyOutput{}) + pulumi.RegisterOutputType(GetAccessKeysAccessKeyArrayOutput{}) + pulumi.RegisterOutputType(GetGroupUserOutput{}) + pulumi.RegisterOutputType(GetGroupUserArrayOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementArrayOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementConditionOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementConditionArrayOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementNotPrincipalOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementNotPrincipalArrayOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementPrincipalOutput{}) + pulumi.RegisterOutputType(GetPolicyDocumentStatementPrincipalArrayOutput{}) + pulumi.RegisterOutputType(GetPrincipalPolicySimulationContextOutput{}) + pulumi.RegisterOutputType(GetPrincipalPolicySimulationContextArrayOutput{}) + pulumi.RegisterOutputType(GetPrincipalPolicySimulationResultOutput{}) + pulumi.RegisterOutputType(GetPrincipalPolicySimulationResultArrayOutput{}) + pulumi.RegisterOutputType(GetPrincipalPolicySimulationResultMatchedStatementOutput{}) + pulumi.RegisterOutputType(GetPrincipalPolicySimulationResultMatchedStatementArrayOutput{}) + pulumi.RegisterOutputType(GetRoleRoleLastUsedOutput{}) + pulumi.RegisterOutputType(GetRoleRoleLastUsedArrayOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/role.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/role.go new file mode 100644 index 000000000..48c09616e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/role.go @@ -0,0 +1,783 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM role. +// +// > **NOTE:** If policies are attached to the role via the `iam.PolicyAttachment` resource and you are modifying the role `name` or `path`, the `forceDetachPolicies` argument must be set to `true` and applied before attempting the operation otherwise you will encounter a `DeleteConflict` error. The `iam.RolePolicyAttachment` resource (recommended) does not have this requirement. +// +// > **NOTE:** If you use this resource's `managedPolicyArns` argument or `inlinePolicy` configuration blocks, this resource will take over exclusive management of the role's respective policy types (e.g., both policy types if both arguments are used). These arguments are incompatible with other ways of managing a role's policies, such as `iam.PolicyAttachment`, `iam.RolePolicyAttachment`, and `iam.RolePolicy`. If you attempt to manage a role's policies by multiple means, you will get resource cycling and/or errors. +// +// > **NOTE:** We suggest using explicit JSON encoding or `aws.iam.getPolicyDocument` when assigning a value to `policy`. They seamlessly translate configuration to JSON, enabling you to maintain consistency within your configuration without the need for context switches. Also, you can sidestep potential complications arising from formatting discrepancies, whitespace inconsistencies, and other nuances inherent to JSON. +// +// ## Example Usage +// +// ### Basic Example +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": "sts:AssumeRole", +// "Effect": "Allow", +// "Sid": "", +// "Principal": map[string]interface{}{ +// "Service": "ec2.amazonaws.com", +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = iam.NewRole(ctx, "test_role", &iam.RoleArgs{ +// Name: pulumi.String("test_role"), +// AssumeRolePolicy: pulumi.String(json0), +// Tags: pulumi.StringMap{ +// "tag-key": pulumi.String("tag-value"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example of Using Data Source for Assume Role Policy +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// instanceAssumeRolePolicy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "sts:AssumeRole", +// }, +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "ec2.amazonaws.com", +// }, +// }, +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = iam.NewRole(ctx, "instance", &iam.RoleArgs{ +// Name: pulumi.String("instance_role"), +// Path: pulumi.String("/system/"), +// AssumeRolePolicy: pulumi.String(instanceAssumeRolePolicy.Json), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example of Exclusive Inline Policies +// +// > The `inlinePolicy` argument is deprecated. Use the `iam.RolePolicy` resource instead. If Pulumi should exclusively manage all inline policy associations (the current behavior of this argument), use the `iam.RolePoliciesExclusive` resource as well. +// +// This example creates an IAM role with two inline IAM policies. If someone adds another inline policy out-of-band, on the next apply, this provider will remove that policy. If someone deletes these policies out-of-band, this provider will recreate them. +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// inlinePolicy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Actions: []string{ +// "ec2:DescribeAccountAttributes", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "ec2:Describe*", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = iam.NewRole(ctx, "example", &iam.RoleArgs{ +// Name: pulumi.String("yak_role"), +// AssumeRolePolicy: pulumi.Any(instanceAssumeRolePolicy.Json), +// InlinePolicies: iam.RoleInlinePolicyArray{ +// &iam.RoleInlinePolicyArgs{ +// Name: pulumi.String("my_inline_policy"), +// Policy: pulumi.String(json0), +// }, +// &iam.RoleInlinePolicyArgs{ +// Name: pulumi.String("policy-8675309"), +// Policy: pulumi.String(inlinePolicy.Json), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example of Removing Inline Policies +// +// > The `inlinePolicy` argument is deprecated. Use the `iam.RolePolicy` resource instead. If Pulumi should exclusively manage all inline policy associations (the current behavior of this argument), use the `iam.RolePoliciesExclusive` resource as well. +// +// This example creates an IAM role with what appears to be empty IAM `inlinePolicy` argument instead of using `inlinePolicy` as a configuration block. The result is that if someone were to add an inline policy out-of-band, on the next apply, this provider will remove that policy. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewRole(ctx, "example", &iam.RoleArgs{ +// InlinePolicies: iam.RoleInlinePolicyArray{ +// &iam.RoleInlinePolicyArgs{}, +// }, +// Name: pulumi.String("yak_role"), +// AssumeRolePolicy: pulumi.Any(instanceAssumeRolePolicy.Json), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example of Exclusive Managed Policies +// +// > The `managedPolicyArns` argument is deprecated. Use the `iam.RolePolicyAttachment` resource instead. If Pulumi should exclusively manage all managed policy attachments (the current behavior of this argument), use the `iam.RolePolicyAttachmentsExclusive` resource as well. +// +// This example creates an IAM role and attaches two managed IAM policies. If someone attaches another managed policy out-of-band, on the next apply, this provider will detach that policy. If someone detaches these policies out-of-band, this provider will attach them again. +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "ec2:Describe*", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// policyOne, err := iam.NewPolicy(ctx, "policy_one", &iam.PolicyArgs{ +// Name: pulumi.String("policy-618033"), +// Policy: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// tmpJSON1, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "s3:ListAllMyBuckets", +// "s3:ListBucket", +// "s3:HeadBucket", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json1 := string(tmpJSON1) +// policyTwo, err := iam.NewPolicy(ctx, "policy_two", &iam.PolicyArgs{ +// Name: pulumi.String("policy-381966"), +// Policy: pulumi.String(json1), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewRole(ctx, "example", &iam.RoleArgs{ +// Name: pulumi.String("yak_role"), +// AssumeRolePolicy: pulumi.Any(instanceAssumeRolePolicy.Json), +// ManagedPolicyArns: pulumi.StringArray{ +// policyOne.Arn, +// policyTwo.Arn, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Example of Removing Managed Policies +// +// > The `managedPolicyArns` argument is deprecated. Use the `iam.RolePolicyAttachment` resource instead. If Pulumi should exclusively manage all managed policy attachments (the current behavior of this argument), use the `iam.RolePolicyAttachmentsExclusive` resource as well. +// +// This example creates an IAM role with an empty `managedPolicyArns` argument. If someone attaches a policy out-of-band, on the next apply, this provider will detach that policy. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewRole(ctx, "example", &iam.RoleArgs{ +// Name: pulumi.String("yak_role"), +// AssumeRolePolicy: pulumi.Any(instanceAssumeRolePolicy.Json), +// ManagedPolicyArns: pulumi.StringArray{}, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Roles using the `name`. For example: +// +// ```sh +// $ pulumi import aws:iam/role:Role developer developer_name +// ``` +type Role struct { + pulumi.CustomResourceState + + // Amazon Resource Name (ARN) specifying the role. + Arn pulumi.StringOutput `pulumi:"arn"` + // Policy that grants an entity permission to assume the role. + // + // > **NOTE:** The `assumeRolePolicy` is very similar to but slightly different than a standard IAM policy and cannot use an `iam.Policy` resource. However, it _can_ use an `iam.getPolicyDocument` data source. See the example above of how this works. + // + // The following arguments are optional: + AssumeRolePolicy pulumi.StringOutput `pulumi:"assumeRolePolicy"` + // Creation date of the IAM role. + CreateDate pulumi.StringOutput `pulumi:"createDate"` + // Description of the role. + Description pulumi.StringPtrOutput `pulumi:"description"` + // Whether to force detaching any policies the role has before destroying it. Defaults to `false`. + ForceDetachPolicies pulumi.BoolPtrOutput `pulumi:"forceDetachPolicies"` + // Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inlinePolicy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. + InlinePolicies RoleInlinePolicyArrayOutput `pulumi:"inlinePolicies"` + // Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managedPolicyArns = []`) will cause Pulumi to remove _all_ managed policy attachments. + ManagedPolicyArns pulumi.StringArrayOutput `pulumi:"managedPolicyArns"` + // Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. + MaxSessionDuration pulumi.IntPtrOutput `pulumi:"maxSessionDuration"` + // Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path pulumi.StringPtrOutput `pulumi:"path"` + // ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary pulumi.StringPtrOutput `pulumi:"permissionsBoundary"` + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Stable and unique string identifying the role. + UniqueId pulumi.StringOutput `pulumi:"uniqueId"` +} + +// NewRole registers a new resource with the given unique name, arguments, and options. +func NewRole(ctx *pulumi.Context, + name string, args *RoleArgs, opts ...pulumi.ResourceOption) (*Role, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AssumeRolePolicy == nil { + return nil, errors.New("invalid value for required argument 'AssumeRolePolicy'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Role + err := ctx.RegisterResource("aws:iam/role:Role", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRole gets an existing Role 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 GetRole(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RoleState, opts ...pulumi.ResourceOption) (*Role, error) { + var resource Role + err := ctx.ReadResource("aws:iam/role:Role", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Role resources. +type roleState struct { + // Amazon Resource Name (ARN) specifying the role. + Arn *string `pulumi:"arn"` + // Policy that grants an entity permission to assume the role. + // + // > **NOTE:** The `assumeRolePolicy` is very similar to but slightly different than a standard IAM policy and cannot use an `iam.Policy` resource. However, it _can_ use an `iam.getPolicyDocument` data source. See the example above of how this works. + // + // The following arguments are optional: + AssumeRolePolicy interface{} `pulumi:"assumeRolePolicy"` + // Creation date of the IAM role. + CreateDate *string `pulumi:"createDate"` + // Description of the role. + Description *string `pulumi:"description"` + // Whether to force detaching any policies the role has before destroying it. Defaults to `false`. + ForceDetachPolicies *bool `pulumi:"forceDetachPolicies"` + // Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inlinePolicy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. + InlinePolicies []RoleInlinePolicy `pulumi:"inlinePolicies"` + // Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managedPolicyArns = []`) will cause Pulumi to remove _all_ managed policy attachments. + ManagedPolicyArns []string `pulumi:"managedPolicyArns"` + // Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. + MaxSessionDuration *int `pulumi:"maxSessionDuration"` + // Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Name *string `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path *string `pulumi:"path"` + // ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary *string `pulumi:"permissionsBoundary"` + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // Stable and unique string identifying the role. + UniqueId *string `pulumi:"uniqueId"` +} + +type RoleState struct { + // Amazon Resource Name (ARN) specifying the role. + Arn pulumi.StringPtrInput + // Policy that grants an entity permission to assume the role. + // + // > **NOTE:** The `assumeRolePolicy` is very similar to but slightly different than a standard IAM policy and cannot use an `iam.Policy` resource. However, it _can_ use an `iam.getPolicyDocument` data source. See the example above of how this works. + // + // The following arguments are optional: + AssumeRolePolicy pulumi.Input + // Creation date of the IAM role. + CreateDate pulumi.StringPtrInput + // Description of the role. + Description pulumi.StringPtrInput + // Whether to force detaching any policies the role has before destroying it. Defaults to `false`. + ForceDetachPolicies pulumi.BoolPtrInput + // Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inlinePolicy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. + InlinePolicies RoleInlinePolicyArrayInput + // Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managedPolicyArns = []`) will cause Pulumi to remove _all_ managed policy attachments. + ManagedPolicyArns pulumi.StringArrayInput + // Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. + MaxSessionDuration pulumi.IntPtrInput + // Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Name pulumi.StringPtrInput + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path pulumi.StringPtrInput + // ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary pulumi.StringPtrInput + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // Stable and unique string identifying the role. + UniqueId pulumi.StringPtrInput +} + +func (RoleState) ElementType() reflect.Type { + return reflect.TypeOf((*roleState)(nil)).Elem() +} + +type roleArgs struct { + // Policy that grants an entity permission to assume the role. + // + // > **NOTE:** The `assumeRolePolicy` is very similar to but slightly different than a standard IAM policy and cannot use an `iam.Policy` resource. However, it _can_ use an `iam.getPolicyDocument` data source. See the example above of how this works. + // + // The following arguments are optional: + AssumeRolePolicy interface{} `pulumi:"assumeRolePolicy"` + // Description of the role. + Description *string `pulumi:"description"` + // Whether to force detaching any policies the role has before destroying it. Defaults to `false`. + ForceDetachPolicies *bool `pulumi:"forceDetachPolicies"` + // Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inlinePolicy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. + InlinePolicies []RoleInlinePolicy `pulumi:"inlinePolicies"` + // Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managedPolicyArns = []`) will cause Pulumi to remove _all_ managed policy attachments. + ManagedPolicyArns []string `pulumi:"managedPolicyArns"` + // Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. + MaxSessionDuration *int `pulumi:"maxSessionDuration"` + // Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Name *string `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path *string `pulumi:"path"` + // ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary *string `pulumi:"permissionsBoundary"` + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a Role resource. +type RoleArgs struct { + // Policy that grants an entity permission to assume the role. + // + // > **NOTE:** The `assumeRolePolicy` is very similar to but slightly different than a standard IAM policy and cannot use an `iam.Policy` resource. However, it _can_ use an `iam.getPolicyDocument` data source. See the example above of how this works. + // + // The following arguments are optional: + AssumeRolePolicy pulumi.Input + // Description of the role. + Description pulumi.StringPtrInput + // Whether to force detaching any policies the role has before destroying it. Defaults to `false`. + ForceDetachPolicies pulumi.BoolPtrInput + // Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inlinePolicy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. + InlinePolicies RoleInlinePolicyArrayInput + // Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managedPolicyArns = []`) will cause Pulumi to remove _all_ managed policy attachments. + ManagedPolicyArns pulumi.StringArrayInput + // Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. + MaxSessionDuration pulumi.IntPtrInput + // Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Name pulumi.StringPtrInput + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path pulumi.StringPtrInput + // ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary pulumi.StringPtrInput + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (RoleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*roleArgs)(nil)).Elem() +} + +type RoleInput interface { + pulumi.Input + + ToRoleOutput() RoleOutput + ToRoleOutputWithContext(ctx context.Context) RoleOutput +} + +func (*Role) ElementType() reflect.Type { + return reflect.TypeOf((**Role)(nil)).Elem() +} + +func (i *Role) ToRoleOutput() RoleOutput { + return i.ToRoleOutputWithContext(context.Background()) +} + +func (i *Role) ToRoleOutputWithContext(ctx context.Context) RoleOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleOutput) +} + +// RoleArrayInput is an input type that accepts RoleArray and RoleArrayOutput values. +// You can construct a concrete instance of `RoleArrayInput` via: +// +// RoleArray{ RoleArgs{...} } +type RoleArrayInput interface { + pulumi.Input + + ToRoleArrayOutput() RoleArrayOutput + ToRoleArrayOutputWithContext(context.Context) RoleArrayOutput +} + +type RoleArray []RoleInput + +func (RoleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Role)(nil)).Elem() +} + +func (i RoleArray) ToRoleArrayOutput() RoleArrayOutput { + return i.ToRoleArrayOutputWithContext(context.Background()) +} + +func (i RoleArray) ToRoleArrayOutputWithContext(ctx context.Context) RoleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleArrayOutput) +} + +// RoleMapInput is an input type that accepts RoleMap and RoleMapOutput values. +// You can construct a concrete instance of `RoleMapInput` via: +// +// RoleMap{ "key": RoleArgs{...} } +type RoleMapInput interface { + pulumi.Input + + ToRoleMapOutput() RoleMapOutput + ToRoleMapOutputWithContext(context.Context) RoleMapOutput +} + +type RoleMap map[string]RoleInput + +func (RoleMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Role)(nil)).Elem() +} + +func (i RoleMap) ToRoleMapOutput() RoleMapOutput { + return i.ToRoleMapOutputWithContext(context.Background()) +} + +func (i RoleMap) ToRoleMapOutputWithContext(ctx context.Context) RoleMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleMapOutput) +} + +type RoleOutput struct{ *pulumi.OutputState } + +func (RoleOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Role)(nil)).Elem() +} + +func (o RoleOutput) ToRoleOutput() RoleOutput { + return o +} + +func (o RoleOutput) ToRoleOutputWithContext(ctx context.Context) RoleOutput { + return o +} + +// Amazon Resource Name (ARN) specifying the role. +func (o RoleOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *Role) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Policy that grants an entity permission to assume the role. +// +// > **NOTE:** The `assumeRolePolicy` is very similar to but slightly different than a standard IAM policy and cannot use an `iam.Policy` resource. However, it _can_ use an `iam.getPolicyDocument` data source. See the example above of how this works. +// +// The following arguments are optional: +func (o RoleOutput) AssumeRolePolicy() pulumi.StringOutput { + return o.ApplyT(func(v *Role) pulumi.StringOutput { return v.AssumeRolePolicy }).(pulumi.StringOutput) +} + +// Creation date of the IAM role. +func (o RoleOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v *Role) pulumi.StringOutput { return v.CreateDate }).(pulumi.StringOutput) +} + +// Description of the role. +func (o RoleOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Role) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// Whether to force detaching any policies the role has before destroying it. Defaults to `false`. +func (o RoleOutput) ForceDetachPolicies() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Role) pulumi.BoolPtrOutput { return v.ForceDetachPolicies }).(pulumi.BoolPtrOutput) +} + +// Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inlinePolicy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. +func (o RoleOutput) InlinePolicies() RoleInlinePolicyArrayOutput { + return o.ApplyT(func(v *Role) RoleInlinePolicyArrayOutput { return v.InlinePolicies }).(RoleInlinePolicyArrayOutput) +} + +// Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managedPolicyArns = []`) will cause Pulumi to remove _all_ managed policy attachments. +func (o RoleOutput) ManagedPolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Role) pulumi.StringArrayOutput { return v.ManagedPolicyArns }).(pulumi.StringArrayOutput) +} + +// Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. +func (o RoleOutput) MaxSessionDuration() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Role) pulumi.IntPtrOutput { return v.MaxSessionDuration }).(pulumi.IntPtrOutput) +} + +// Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. +func (o RoleOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Role) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. +func (o RoleOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *Role) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. +func (o RoleOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Role) pulumi.StringPtrOutput { return v.Path }).(pulumi.StringPtrOutput) +} + +// ARN of the policy that is used to set the permissions boundary for the role. +func (o RoleOutput) PermissionsBoundary() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Role) pulumi.StringPtrOutput { return v.PermissionsBoundary }).(pulumi.StringPtrOutput) +} + +// Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o RoleOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Role) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o RoleOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *Role) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// Stable and unique string identifying the role. +func (o RoleOutput) UniqueId() pulumi.StringOutput { + return o.ApplyT(func(v *Role) pulumi.StringOutput { return v.UniqueId }).(pulumi.StringOutput) +} + +type RoleArrayOutput struct{ *pulumi.OutputState } + +func (RoleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Role)(nil)).Elem() +} + +func (o RoleArrayOutput) ToRoleArrayOutput() RoleArrayOutput { + return o +} + +func (o RoleArrayOutput) ToRoleArrayOutputWithContext(ctx context.Context) RoleArrayOutput { + return o +} + +func (o RoleArrayOutput) Index(i pulumi.IntInput) RoleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Role { + return vs[0].([]*Role)[vs[1].(int)] + }).(RoleOutput) +} + +type RoleMapOutput struct{ *pulumi.OutputState } + +func (RoleMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Role)(nil)).Elem() +} + +func (o RoleMapOutput) ToRoleMapOutput() RoleMapOutput { + return o +} + +func (o RoleMapOutput) ToRoleMapOutputWithContext(ctx context.Context) RoleMapOutput { + return o +} + +func (o RoleMapOutput) MapIndex(k pulumi.StringInput) RoleOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Role { + return vs[0].(map[string]*Role)[vs[1].(string)] + }).(RoleOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RoleInput)(nil)).Elem(), &Role{}) + pulumi.RegisterInputType(reflect.TypeOf((*RoleArrayInput)(nil)).Elem(), RoleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RoleMapInput)(nil)).Elem(), RoleMap{}) + pulumi.RegisterOutputType(RoleOutput{}) + pulumi.RegisterOutputType(RoleArrayOutput{}) + pulumi.RegisterOutputType(RoleMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePoliciesExclusive.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePoliciesExclusive.go new file mode 100644 index 000000000..ecfcaa0b1 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePoliciesExclusive.go @@ -0,0 +1,313 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **NOTE:**: To reliably detect drift between customer managed inline policies listed in this resource and actual policies attached to the role in the cloud, you currently need to run Pulumi with `pulumi up --refresh`. See [#4766](https://github.com/pulumi/pulumi-aws/issues/4766) for tracking making this work with regular `pulumi up` invocations. +// +// Resource for maintaining exclusive management of inline policies assigned to an AWS IAM (Identity & Access Management) role. +// +// !> This resource takes exclusive ownership over inline policies assigned to a role. This includes removal of inline policies which are not explicitly configured. To prevent persistent drift, ensure any `iam.RolePolicy` resources managed alongside this resource are included in the `policyNames` argument. +// +// > Destruction of this resource means Pulumi will no longer manage reconciliation of the configured inline policy assignments. It __will not__ delete the configured policies from the role. +// +// ## Example Usage +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewRolePoliciesExclusive(ctx, "example", &iam.RolePoliciesExclusiveArgs{ +// RoleName: pulumi.Any(exampleAwsIamRole.Name), +// PolicyNames: pulumi.StringArray{ +// exampleAwsIamRolePolicy.Name, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Disallow Inline Policies +// +// To automatically remove any configured inline policies, set the `policyNames` argument to an empty list. +// +// > This will not __prevent__ inline policies from being assigned to a role via Pulumi (or any other interface). This resource enables bringing inline policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewRolePoliciesExclusive(ctx, "example", &iam.RolePoliciesExclusiveArgs{ +// RoleName: pulumi.Any(exampleAwsIamRole.Name), +// PolicyNames: pulumi.StringArray{}, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import exclusive management of inline policy assignments using the `role_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/rolePoliciesExclusive:RolePoliciesExclusive example MyRole +// ``` +type RolePoliciesExclusive struct { + pulumi.CustomResourceState + + // A list of inline policy names to be assigned to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayOutput `pulumi:"policyNames"` + // IAM role name. + RoleName pulumi.StringOutput `pulumi:"roleName"` +} + +// NewRolePoliciesExclusive registers a new resource with the given unique name, arguments, and options. +func NewRolePoliciesExclusive(ctx *pulumi.Context, + name string, args *RolePoliciesExclusiveArgs, opts ...pulumi.ResourceOption) (*RolePoliciesExclusive, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyNames == nil { + return nil, errors.New("invalid value for required argument 'PolicyNames'") + } + if args.RoleName == nil { + return nil, errors.New("invalid value for required argument 'RoleName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RolePoliciesExclusive + err := ctx.RegisterResource("aws:iam/rolePoliciesExclusive:RolePoliciesExclusive", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRolePoliciesExclusive gets an existing RolePoliciesExclusive 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 GetRolePoliciesExclusive(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RolePoliciesExclusiveState, opts ...pulumi.ResourceOption) (*RolePoliciesExclusive, error) { + var resource RolePoliciesExclusive + err := ctx.ReadResource("aws:iam/rolePoliciesExclusive:RolePoliciesExclusive", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RolePoliciesExclusive resources. +type rolePoliciesExclusiveState struct { + // A list of inline policy names to be assigned to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyNames []string `pulumi:"policyNames"` + // IAM role name. + RoleName *string `pulumi:"roleName"` +} + +type RolePoliciesExclusiveState struct { + // A list of inline policy names to be assigned to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayInput + // IAM role name. + RoleName pulumi.StringPtrInput +} + +func (RolePoliciesExclusiveState) ElementType() reflect.Type { + return reflect.TypeOf((*rolePoliciesExclusiveState)(nil)).Elem() +} + +type rolePoliciesExclusiveArgs struct { + // A list of inline policy names to be assigned to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyNames []string `pulumi:"policyNames"` + // IAM role name. + RoleName string `pulumi:"roleName"` +} + +// The set of arguments for constructing a RolePoliciesExclusive resource. +type RolePoliciesExclusiveArgs struct { + // A list of inline policy names to be assigned to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayInput + // IAM role name. + RoleName pulumi.StringInput +} + +func (RolePoliciesExclusiveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*rolePoliciesExclusiveArgs)(nil)).Elem() +} + +type RolePoliciesExclusiveInput interface { + pulumi.Input + + ToRolePoliciesExclusiveOutput() RolePoliciesExclusiveOutput + ToRolePoliciesExclusiveOutputWithContext(ctx context.Context) RolePoliciesExclusiveOutput +} + +func (*RolePoliciesExclusive) ElementType() reflect.Type { + return reflect.TypeOf((**RolePoliciesExclusive)(nil)).Elem() +} + +func (i *RolePoliciesExclusive) ToRolePoliciesExclusiveOutput() RolePoliciesExclusiveOutput { + return i.ToRolePoliciesExclusiveOutputWithContext(context.Background()) +} + +func (i *RolePoliciesExclusive) ToRolePoliciesExclusiveOutputWithContext(ctx context.Context) RolePoliciesExclusiveOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePoliciesExclusiveOutput) +} + +// RolePoliciesExclusiveArrayInput is an input type that accepts RolePoliciesExclusiveArray and RolePoliciesExclusiveArrayOutput values. +// You can construct a concrete instance of `RolePoliciesExclusiveArrayInput` via: +// +// RolePoliciesExclusiveArray{ RolePoliciesExclusiveArgs{...} } +type RolePoliciesExclusiveArrayInput interface { + pulumi.Input + + ToRolePoliciesExclusiveArrayOutput() RolePoliciesExclusiveArrayOutput + ToRolePoliciesExclusiveArrayOutputWithContext(context.Context) RolePoliciesExclusiveArrayOutput +} + +type RolePoliciesExclusiveArray []RolePoliciesExclusiveInput + +func (RolePoliciesExclusiveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePoliciesExclusive)(nil)).Elem() +} + +func (i RolePoliciesExclusiveArray) ToRolePoliciesExclusiveArrayOutput() RolePoliciesExclusiveArrayOutput { + return i.ToRolePoliciesExclusiveArrayOutputWithContext(context.Background()) +} + +func (i RolePoliciesExclusiveArray) ToRolePoliciesExclusiveArrayOutputWithContext(ctx context.Context) RolePoliciesExclusiveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePoliciesExclusiveArrayOutput) +} + +// RolePoliciesExclusiveMapInput is an input type that accepts RolePoliciesExclusiveMap and RolePoliciesExclusiveMapOutput values. +// You can construct a concrete instance of `RolePoliciesExclusiveMapInput` via: +// +// RolePoliciesExclusiveMap{ "key": RolePoliciesExclusiveArgs{...} } +type RolePoliciesExclusiveMapInput interface { + pulumi.Input + + ToRolePoliciesExclusiveMapOutput() RolePoliciesExclusiveMapOutput + ToRolePoliciesExclusiveMapOutputWithContext(context.Context) RolePoliciesExclusiveMapOutput +} + +type RolePoliciesExclusiveMap map[string]RolePoliciesExclusiveInput + +func (RolePoliciesExclusiveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePoliciesExclusive)(nil)).Elem() +} + +func (i RolePoliciesExclusiveMap) ToRolePoliciesExclusiveMapOutput() RolePoliciesExclusiveMapOutput { + return i.ToRolePoliciesExclusiveMapOutputWithContext(context.Background()) +} + +func (i RolePoliciesExclusiveMap) ToRolePoliciesExclusiveMapOutputWithContext(ctx context.Context) RolePoliciesExclusiveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePoliciesExclusiveMapOutput) +} + +type RolePoliciesExclusiveOutput struct{ *pulumi.OutputState } + +func (RolePoliciesExclusiveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RolePoliciesExclusive)(nil)).Elem() +} + +func (o RolePoliciesExclusiveOutput) ToRolePoliciesExclusiveOutput() RolePoliciesExclusiveOutput { + return o +} + +func (o RolePoliciesExclusiveOutput) ToRolePoliciesExclusiveOutputWithContext(ctx context.Context) RolePoliciesExclusiveOutput { + return o +} + +// A list of inline policy names to be assigned to the role. Policies attached to this role but not configured in this argument will be removed. +func (o RolePoliciesExclusiveOutput) PolicyNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RolePoliciesExclusive) pulumi.StringArrayOutput { return v.PolicyNames }).(pulumi.StringArrayOutput) +} + +// IAM role name. +func (o RolePoliciesExclusiveOutput) RoleName() pulumi.StringOutput { + return o.ApplyT(func(v *RolePoliciesExclusive) pulumi.StringOutput { return v.RoleName }).(pulumi.StringOutput) +} + +type RolePoliciesExclusiveArrayOutput struct{ *pulumi.OutputState } + +func (RolePoliciesExclusiveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePoliciesExclusive)(nil)).Elem() +} + +func (o RolePoliciesExclusiveArrayOutput) ToRolePoliciesExclusiveArrayOutput() RolePoliciesExclusiveArrayOutput { + return o +} + +func (o RolePoliciesExclusiveArrayOutput) ToRolePoliciesExclusiveArrayOutputWithContext(ctx context.Context) RolePoliciesExclusiveArrayOutput { + return o +} + +func (o RolePoliciesExclusiveArrayOutput) Index(i pulumi.IntInput) RolePoliciesExclusiveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RolePoliciesExclusive { + return vs[0].([]*RolePoliciesExclusive)[vs[1].(int)] + }).(RolePoliciesExclusiveOutput) +} + +type RolePoliciesExclusiveMapOutput struct{ *pulumi.OutputState } + +func (RolePoliciesExclusiveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePoliciesExclusive)(nil)).Elem() +} + +func (o RolePoliciesExclusiveMapOutput) ToRolePoliciesExclusiveMapOutput() RolePoliciesExclusiveMapOutput { + return o +} + +func (o RolePoliciesExclusiveMapOutput) ToRolePoliciesExclusiveMapOutputWithContext(ctx context.Context) RolePoliciesExclusiveMapOutput { + return o +} + +func (o RolePoliciesExclusiveMapOutput) MapIndex(k pulumi.StringInput) RolePoliciesExclusiveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RolePoliciesExclusive { + return vs[0].(map[string]*RolePoliciesExclusive)[vs[1].(string)] + }).(RolePoliciesExclusiveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RolePoliciesExclusiveInput)(nil)).Elem(), &RolePoliciesExclusive{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePoliciesExclusiveArrayInput)(nil)).Elem(), RolePoliciesExclusiveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePoliciesExclusiveMapInput)(nil)).Elem(), RolePoliciesExclusiveMap{}) + pulumi.RegisterOutputType(RolePoliciesExclusiveOutput{}) + pulumi.RegisterOutputType(RolePoliciesExclusiveArrayOutput{}) + pulumi.RegisterOutputType(RolePoliciesExclusiveMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicy.go new file mode 100644 index 000000000..30518e07e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicy.go @@ -0,0 +1,361 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM role inline policy. +// +// > **NOTE:** For a given role, this resource is incompatible with using the `iam.Role` resource `inlinePolicy` argument. When using that argument and this resource, both will attempt to manage the role's inline policies and the provider will show a permanent difference. +// +// > **NOTE:** We suggest using explicit JSON encoding or `aws.iam.getPolicyDocument` when assigning a value to `policy`. They seamlessly translate configuration to JSON, enabling you to maintain consistency within your configuration without the need for context switches. Also, you can sidestep potential complications arising from formatting discrepancies, whitespace inconsistencies, and other nuances inherent to JSON. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": "sts:AssumeRole", +// "Effect": "Allow", +// "Sid": "", +// "Principal": map[string]interface{}{ +// "Service": "ec2.amazonaws.com", +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// testRole, err := iam.NewRole(ctx, "test_role", &iam.RoleArgs{ +// Name: pulumi.String("test_role"), +// AssumeRolePolicy: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// tmpJSON1, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "ec2:Describe*", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json1 := string(tmpJSON1) +// _, err = iam.NewRolePolicy(ctx, "test_policy", &iam.RolePolicyArgs{ +// Name: pulumi.String("test_policy"), +// Role: testRole.ID(), +// Policy: pulumi.String(json1), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Role Policies using the `role_name:role_policy_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/rolePolicy:RolePolicy mypolicy role_of_mypolicy_name:mypolicy_name +// ``` +type RolePolicy struct { + pulumi.CustomResourceState + + // The name of the role policy. If omitted, this provider will + // assign a random, unique name. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // The inline policy document. This is a JSON formatted string. For more information about building IAM policy documents with the provider, see the AWS IAM Policy Document Guide + Policy pulumi.StringOutput `pulumi:"policy"` + // The name of the IAM role to attach to the policy. + Role pulumi.StringOutput `pulumi:"role"` +} + +// NewRolePolicy registers a new resource with the given unique name, arguments, and options. +func NewRolePolicy(ctx *pulumi.Context, + name string, args *RolePolicyArgs, opts ...pulumi.ResourceOption) (*RolePolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Policy == nil { + return nil, errors.New("invalid value for required argument 'Policy'") + } + if args.Role == nil { + return nil, errors.New("invalid value for required argument 'Role'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RolePolicy + err := ctx.RegisterResource("aws:iam/rolePolicy:RolePolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRolePolicy gets an existing RolePolicy 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 GetRolePolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RolePolicyState, opts ...pulumi.ResourceOption) (*RolePolicy, error) { + var resource RolePolicy + err := ctx.ReadResource("aws:iam/rolePolicy:RolePolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RolePolicy resources. +type rolePolicyState struct { + // The name of the role policy. If omitted, this provider will + // assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The inline policy document. This is a JSON formatted string. For more information about building IAM policy documents with the provider, see the AWS IAM Policy Document Guide + Policy interface{} `pulumi:"policy"` + // The name of the IAM role to attach to the policy. + Role interface{} `pulumi:"role"` +} + +type RolePolicyState struct { + // The name of the role policy. If omitted, this provider will + // assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The inline policy document. This is a JSON formatted string. For more information about building IAM policy documents with the provider, see the AWS IAM Policy Document Guide + Policy pulumi.Input + // The name of the IAM role to attach to the policy. + Role pulumi.Input +} + +func (RolePolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*rolePolicyState)(nil)).Elem() +} + +type rolePolicyArgs struct { + // The name of the role policy. If omitted, this provider will + // assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The inline policy document. This is a JSON formatted string. For more information about building IAM policy documents with the provider, see the AWS IAM Policy Document Guide + Policy interface{} `pulumi:"policy"` + // The name of the IAM role to attach to the policy. + Role interface{} `pulumi:"role"` +} + +// The set of arguments for constructing a RolePolicy resource. +type RolePolicyArgs struct { + // The name of the role policy. If omitted, this provider will + // assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The inline policy document. This is a JSON formatted string. For more information about building IAM policy documents with the provider, see the AWS IAM Policy Document Guide + Policy pulumi.Input + // The name of the IAM role to attach to the policy. + Role pulumi.Input +} + +func (RolePolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*rolePolicyArgs)(nil)).Elem() +} + +type RolePolicyInput interface { + pulumi.Input + + ToRolePolicyOutput() RolePolicyOutput + ToRolePolicyOutputWithContext(ctx context.Context) RolePolicyOutput +} + +func (*RolePolicy) ElementType() reflect.Type { + return reflect.TypeOf((**RolePolicy)(nil)).Elem() +} + +func (i *RolePolicy) ToRolePolicyOutput() RolePolicyOutput { + return i.ToRolePolicyOutputWithContext(context.Background()) +} + +func (i *RolePolicy) ToRolePolicyOutputWithContext(ctx context.Context) RolePolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyOutput) +} + +// RolePolicyArrayInput is an input type that accepts RolePolicyArray and RolePolicyArrayOutput values. +// You can construct a concrete instance of `RolePolicyArrayInput` via: +// +// RolePolicyArray{ RolePolicyArgs{...} } +type RolePolicyArrayInput interface { + pulumi.Input + + ToRolePolicyArrayOutput() RolePolicyArrayOutput + ToRolePolicyArrayOutputWithContext(context.Context) RolePolicyArrayOutput +} + +type RolePolicyArray []RolePolicyInput + +func (RolePolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePolicy)(nil)).Elem() +} + +func (i RolePolicyArray) ToRolePolicyArrayOutput() RolePolicyArrayOutput { + return i.ToRolePolicyArrayOutputWithContext(context.Background()) +} + +func (i RolePolicyArray) ToRolePolicyArrayOutputWithContext(ctx context.Context) RolePolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyArrayOutput) +} + +// RolePolicyMapInput is an input type that accepts RolePolicyMap and RolePolicyMapOutput values. +// You can construct a concrete instance of `RolePolicyMapInput` via: +// +// RolePolicyMap{ "key": RolePolicyArgs{...} } +type RolePolicyMapInput interface { + pulumi.Input + + ToRolePolicyMapOutput() RolePolicyMapOutput + ToRolePolicyMapOutputWithContext(context.Context) RolePolicyMapOutput +} + +type RolePolicyMap map[string]RolePolicyInput + +func (RolePolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePolicy)(nil)).Elem() +} + +func (i RolePolicyMap) ToRolePolicyMapOutput() RolePolicyMapOutput { + return i.ToRolePolicyMapOutputWithContext(context.Background()) +} + +func (i RolePolicyMap) ToRolePolicyMapOutputWithContext(ctx context.Context) RolePolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyMapOutput) +} + +type RolePolicyOutput struct{ *pulumi.OutputState } + +func (RolePolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RolePolicy)(nil)).Elem() +} + +func (o RolePolicyOutput) ToRolePolicyOutput() RolePolicyOutput { + return o +} + +func (o RolePolicyOutput) ToRolePolicyOutputWithContext(ctx context.Context) RolePolicyOutput { + return o +} + +// The name of the role policy. If omitted, this provider will +// assign a random, unique name. +func (o RolePolicyOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *RolePolicy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified +// prefix. Conflicts with `name`. +func (o RolePolicyOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *RolePolicy) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// The inline policy document. This is a JSON formatted string. For more information about building IAM policy documents with the provider, see the AWS IAM Policy Document Guide +func (o RolePolicyOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *RolePolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +// The name of the IAM role to attach to the policy. +func (o RolePolicyOutput) Role() pulumi.StringOutput { + return o.ApplyT(func(v *RolePolicy) pulumi.StringOutput { return v.Role }).(pulumi.StringOutput) +} + +type RolePolicyArrayOutput struct{ *pulumi.OutputState } + +func (RolePolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePolicy)(nil)).Elem() +} + +func (o RolePolicyArrayOutput) ToRolePolicyArrayOutput() RolePolicyArrayOutput { + return o +} + +func (o RolePolicyArrayOutput) ToRolePolicyArrayOutputWithContext(ctx context.Context) RolePolicyArrayOutput { + return o +} + +func (o RolePolicyArrayOutput) Index(i pulumi.IntInput) RolePolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RolePolicy { + return vs[0].([]*RolePolicy)[vs[1].(int)] + }).(RolePolicyOutput) +} + +type RolePolicyMapOutput struct{ *pulumi.OutputState } + +func (RolePolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePolicy)(nil)).Elem() +} + +func (o RolePolicyMapOutput) ToRolePolicyMapOutput() RolePolicyMapOutput { + return o +} + +func (o RolePolicyMapOutput) ToRolePolicyMapOutputWithContext(ctx context.Context) RolePolicyMapOutput { + return o +} + +func (o RolePolicyMapOutput) MapIndex(k pulumi.StringInput) RolePolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RolePolicy { + return vs[0].(map[string]*RolePolicy)[vs[1].(string)] + }).(RolePolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyInput)(nil)).Elem(), &RolePolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyArrayInput)(nil)).Elem(), RolePolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyMapInput)(nil)).Elem(), RolePolicyMap{}) + pulumi.RegisterOutputType(RolePolicyOutput{}) + pulumi.RegisterOutputType(RolePolicyArrayOutput{}) + pulumi.RegisterOutputType(RolePolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachment.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachment.go new file mode 100644 index 000000000..169e7cfd5 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachment.go @@ -0,0 +1,328 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Attaches a Managed IAM Policy to an IAM role +// +// > **NOTE:** The usage of this resource conflicts with the `iam.PolicyAttachment` resource and will permanently show a difference if both are defined. +// +// > **NOTE:** For a given role, this resource is incompatible with using the `iam.Role` resource `managedPolicyArns` argument. When using that argument and this resource, both will attempt to manage the role's managed policy attachments and Pulumi will show a permanent difference. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "ec2.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// role, err := iam.NewRole(ctx, "role", &iam.RoleArgs{ +// Name: pulumi.String("test-role"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// policy, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "ec2:Describe*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// policyPolicy, err := iam.NewPolicy(ctx, "policy", &iam.PolicyArgs{ +// Name: pulumi.String("test-policy"), +// Description: pulumi.String("A test policy"), +// Policy: pulumi.String(policy.Json), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewRolePolicyAttachment(ctx, "test-attach", &iam.RolePolicyAttachmentArgs{ +// Role: role.Name, +// PolicyArn: policyPolicy.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM role policy attachments using the role name and policy arn separated by `/`. For example: +// +// ```sh +// $ pulumi import aws:iam/rolePolicyAttachment:RolePolicyAttachment test-attach test-role/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy +// ``` +type RolePolicyAttachment struct { + pulumi.CustomResourceState + + // The ARN of the policy you want to apply + PolicyArn pulumi.StringOutput `pulumi:"policyArn"` + // The name of the IAM role to which the policy should be applied + Role pulumi.StringOutput `pulumi:"role"` +} + +// NewRolePolicyAttachment registers a new resource with the given unique name, arguments, and options. +func NewRolePolicyAttachment(ctx *pulumi.Context, + name string, args *RolePolicyAttachmentArgs, opts ...pulumi.ResourceOption) (*RolePolicyAttachment, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyArn == nil { + return nil, errors.New("invalid value for required argument 'PolicyArn'") + } + if args.Role == nil { + return nil, errors.New("invalid value for required argument 'Role'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RolePolicyAttachment + err := ctx.RegisterResource("aws:iam/rolePolicyAttachment:RolePolicyAttachment", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRolePolicyAttachment gets an existing RolePolicyAttachment 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 GetRolePolicyAttachment(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RolePolicyAttachmentState, opts ...pulumi.ResourceOption) (*RolePolicyAttachment, error) { + var resource RolePolicyAttachment + err := ctx.ReadResource("aws:iam/rolePolicyAttachment:RolePolicyAttachment", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RolePolicyAttachment resources. +type rolePolicyAttachmentState struct { + // The ARN of the policy you want to apply + PolicyArn *string `pulumi:"policyArn"` + // The name of the IAM role to which the policy should be applied + Role interface{} `pulumi:"role"` +} + +type RolePolicyAttachmentState struct { + // The ARN of the policy you want to apply + PolicyArn pulumi.StringPtrInput + // The name of the IAM role to which the policy should be applied + Role pulumi.Input +} + +func (RolePolicyAttachmentState) ElementType() reflect.Type { + return reflect.TypeOf((*rolePolicyAttachmentState)(nil)).Elem() +} + +type rolePolicyAttachmentArgs struct { + // The ARN of the policy you want to apply + PolicyArn string `pulumi:"policyArn"` + // The name of the IAM role to which the policy should be applied + Role interface{} `pulumi:"role"` +} + +// The set of arguments for constructing a RolePolicyAttachment resource. +type RolePolicyAttachmentArgs struct { + // The ARN of the policy you want to apply + PolicyArn pulumi.StringInput + // The name of the IAM role to which the policy should be applied + Role pulumi.Input +} + +func (RolePolicyAttachmentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*rolePolicyAttachmentArgs)(nil)).Elem() +} + +type RolePolicyAttachmentInput interface { + pulumi.Input + + ToRolePolicyAttachmentOutput() RolePolicyAttachmentOutput + ToRolePolicyAttachmentOutputWithContext(ctx context.Context) RolePolicyAttachmentOutput +} + +func (*RolePolicyAttachment) ElementType() reflect.Type { + return reflect.TypeOf((**RolePolicyAttachment)(nil)).Elem() +} + +func (i *RolePolicyAttachment) ToRolePolicyAttachmentOutput() RolePolicyAttachmentOutput { + return i.ToRolePolicyAttachmentOutputWithContext(context.Background()) +} + +func (i *RolePolicyAttachment) ToRolePolicyAttachmentOutputWithContext(ctx context.Context) RolePolicyAttachmentOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyAttachmentOutput) +} + +// RolePolicyAttachmentArrayInput is an input type that accepts RolePolicyAttachmentArray and RolePolicyAttachmentArrayOutput values. +// You can construct a concrete instance of `RolePolicyAttachmentArrayInput` via: +// +// RolePolicyAttachmentArray{ RolePolicyAttachmentArgs{...} } +type RolePolicyAttachmentArrayInput interface { + pulumi.Input + + ToRolePolicyAttachmentArrayOutput() RolePolicyAttachmentArrayOutput + ToRolePolicyAttachmentArrayOutputWithContext(context.Context) RolePolicyAttachmentArrayOutput +} + +type RolePolicyAttachmentArray []RolePolicyAttachmentInput + +func (RolePolicyAttachmentArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePolicyAttachment)(nil)).Elem() +} + +func (i RolePolicyAttachmentArray) ToRolePolicyAttachmentArrayOutput() RolePolicyAttachmentArrayOutput { + return i.ToRolePolicyAttachmentArrayOutputWithContext(context.Background()) +} + +func (i RolePolicyAttachmentArray) ToRolePolicyAttachmentArrayOutputWithContext(ctx context.Context) RolePolicyAttachmentArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyAttachmentArrayOutput) +} + +// RolePolicyAttachmentMapInput is an input type that accepts RolePolicyAttachmentMap and RolePolicyAttachmentMapOutput values. +// You can construct a concrete instance of `RolePolicyAttachmentMapInput` via: +// +// RolePolicyAttachmentMap{ "key": RolePolicyAttachmentArgs{...} } +type RolePolicyAttachmentMapInput interface { + pulumi.Input + + ToRolePolicyAttachmentMapOutput() RolePolicyAttachmentMapOutput + ToRolePolicyAttachmentMapOutputWithContext(context.Context) RolePolicyAttachmentMapOutput +} + +type RolePolicyAttachmentMap map[string]RolePolicyAttachmentInput + +func (RolePolicyAttachmentMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePolicyAttachment)(nil)).Elem() +} + +func (i RolePolicyAttachmentMap) ToRolePolicyAttachmentMapOutput() RolePolicyAttachmentMapOutput { + return i.ToRolePolicyAttachmentMapOutputWithContext(context.Background()) +} + +func (i RolePolicyAttachmentMap) ToRolePolicyAttachmentMapOutputWithContext(ctx context.Context) RolePolicyAttachmentMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyAttachmentMapOutput) +} + +type RolePolicyAttachmentOutput struct{ *pulumi.OutputState } + +func (RolePolicyAttachmentOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RolePolicyAttachment)(nil)).Elem() +} + +func (o RolePolicyAttachmentOutput) ToRolePolicyAttachmentOutput() RolePolicyAttachmentOutput { + return o +} + +func (o RolePolicyAttachmentOutput) ToRolePolicyAttachmentOutputWithContext(ctx context.Context) RolePolicyAttachmentOutput { + return o +} + +// The ARN of the policy you want to apply +func (o RolePolicyAttachmentOutput) PolicyArn() pulumi.StringOutput { + return o.ApplyT(func(v *RolePolicyAttachment) pulumi.StringOutput { return v.PolicyArn }).(pulumi.StringOutput) +} + +// The name of the IAM role to which the policy should be applied +func (o RolePolicyAttachmentOutput) Role() pulumi.StringOutput { + return o.ApplyT(func(v *RolePolicyAttachment) pulumi.StringOutput { return v.Role }).(pulumi.StringOutput) +} + +type RolePolicyAttachmentArrayOutput struct{ *pulumi.OutputState } + +func (RolePolicyAttachmentArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePolicyAttachment)(nil)).Elem() +} + +func (o RolePolicyAttachmentArrayOutput) ToRolePolicyAttachmentArrayOutput() RolePolicyAttachmentArrayOutput { + return o +} + +func (o RolePolicyAttachmentArrayOutput) ToRolePolicyAttachmentArrayOutputWithContext(ctx context.Context) RolePolicyAttachmentArrayOutput { + return o +} + +func (o RolePolicyAttachmentArrayOutput) Index(i pulumi.IntInput) RolePolicyAttachmentOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RolePolicyAttachment { + return vs[0].([]*RolePolicyAttachment)[vs[1].(int)] + }).(RolePolicyAttachmentOutput) +} + +type RolePolicyAttachmentMapOutput struct{ *pulumi.OutputState } + +func (RolePolicyAttachmentMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePolicyAttachment)(nil)).Elem() +} + +func (o RolePolicyAttachmentMapOutput) ToRolePolicyAttachmentMapOutput() RolePolicyAttachmentMapOutput { + return o +} + +func (o RolePolicyAttachmentMapOutput) ToRolePolicyAttachmentMapOutputWithContext(ctx context.Context) RolePolicyAttachmentMapOutput { + return o +} + +func (o RolePolicyAttachmentMapOutput) MapIndex(k pulumi.StringInput) RolePolicyAttachmentOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RolePolicyAttachment { + return vs[0].(map[string]*RolePolicyAttachment)[vs[1].(string)] + }).(RolePolicyAttachmentOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyAttachmentInput)(nil)).Elem(), &RolePolicyAttachment{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyAttachmentArrayInput)(nil)).Elem(), RolePolicyAttachmentArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyAttachmentMapInput)(nil)).Elem(), RolePolicyAttachmentMap{}) + pulumi.RegisterOutputType(RolePolicyAttachmentOutput{}) + pulumi.RegisterOutputType(RolePolicyAttachmentArrayOutput{}) + pulumi.RegisterOutputType(RolePolicyAttachmentMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachmentsExclusive.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachmentsExclusive.go new file mode 100644 index 000000000..a0a93ca68 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/rolePolicyAttachmentsExclusive.go @@ -0,0 +1,313 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **NOTE:**: To reliably detect drift between customer managed policies listed in this resource and actual policies attached to the role in the cloud, you currently need to run Pulumi with `pulumi up --refresh`. See [#4766](https://github.com/pulumi/pulumi-aws/issues/4766) for tracking making this work with regular `pulumi up` +// +// Resource for maintaining exclusive management of managed IAM policies assigned to an AWS IAM (Identity & Access Management) role. +// +// !> This resource takes exclusive ownership over managed IAM policies attached to a role. This includes removal of managed IAM policies which are not explicitly configured. To prevent persistent drift, ensure any `iam.RolePolicyAttachment` resources managed alongside this resource are included in the `policyArns` argument. +// +// > Destruction of this resource means Pulumi will no longer manage reconciliation of the configured policy attachments. It **will not** detach the configured policies from the role. +// +// ## Example Usage +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewRolePolicyAttachmentsExclusive(ctx, "example", &iam.RolePolicyAttachmentsExclusiveArgs{ +// RoleName: pulumi.Any(exampleAwsIamRole.Name), +// PolicyArns: pulumi.StringArray{ +// exampleAwsIamPolicy.Arn, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Disallow Managed IAM Policies +// +// To automatically remove any configured managed IAM policies, set the `policyArns` argument to an empty list. +// +// > This will not **prevent** managed IAM policies from being assigned to a role via Pulumi (or any other interface). This resource enables bringing managed IAM policy assignments into a configured state, however, this reconciliation happens only when `apply` is proactively run. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewRolePolicyAttachmentsExclusive(ctx, "example", &iam.RolePolicyAttachmentsExclusiveArgs{ +// RoleName: pulumi.Any(exampleAwsIamRole.Name), +// PolicyArns: pulumi.StringArray{}, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import exclusive management of managed IAM policy assignments using the `role_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/rolePolicyAttachmentsExclusive:RolePolicyAttachmentsExclusive example MyRole +// ``` +type RolePolicyAttachmentsExclusive struct { + pulumi.CustomResourceState + + // A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayOutput `pulumi:"policyArns"` + // IAM role name. + RoleName pulumi.StringOutput `pulumi:"roleName"` +} + +// NewRolePolicyAttachmentsExclusive registers a new resource with the given unique name, arguments, and options. +func NewRolePolicyAttachmentsExclusive(ctx *pulumi.Context, + name string, args *RolePolicyAttachmentsExclusiveArgs, opts ...pulumi.ResourceOption) (*RolePolicyAttachmentsExclusive, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyArns == nil { + return nil, errors.New("invalid value for required argument 'PolicyArns'") + } + if args.RoleName == nil { + return nil, errors.New("invalid value for required argument 'RoleName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RolePolicyAttachmentsExclusive + err := ctx.RegisterResource("aws:iam/rolePolicyAttachmentsExclusive:RolePolicyAttachmentsExclusive", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRolePolicyAttachmentsExclusive gets an existing RolePolicyAttachmentsExclusive 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 GetRolePolicyAttachmentsExclusive(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RolePolicyAttachmentsExclusiveState, opts ...pulumi.ResourceOption) (*RolePolicyAttachmentsExclusive, error) { + var resource RolePolicyAttachmentsExclusive + err := ctx.ReadResource("aws:iam/rolePolicyAttachmentsExclusive:RolePolicyAttachmentsExclusive", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RolePolicyAttachmentsExclusive resources. +type rolePolicyAttachmentsExclusiveState struct { + // A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyArns []string `pulumi:"policyArns"` + // IAM role name. + RoleName *string `pulumi:"roleName"` +} + +type RolePolicyAttachmentsExclusiveState struct { + // A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayInput + // IAM role name. + RoleName pulumi.StringPtrInput +} + +func (RolePolicyAttachmentsExclusiveState) ElementType() reflect.Type { + return reflect.TypeOf((*rolePolicyAttachmentsExclusiveState)(nil)).Elem() +} + +type rolePolicyAttachmentsExclusiveArgs struct { + // A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyArns []string `pulumi:"policyArns"` + // IAM role name. + RoleName string `pulumi:"roleName"` +} + +// The set of arguments for constructing a RolePolicyAttachmentsExclusive resource. +type RolePolicyAttachmentsExclusiveArgs struct { + // A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayInput + // IAM role name. + RoleName pulumi.StringInput +} + +func (RolePolicyAttachmentsExclusiveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*rolePolicyAttachmentsExclusiveArgs)(nil)).Elem() +} + +type RolePolicyAttachmentsExclusiveInput interface { + pulumi.Input + + ToRolePolicyAttachmentsExclusiveOutput() RolePolicyAttachmentsExclusiveOutput + ToRolePolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) RolePolicyAttachmentsExclusiveOutput +} + +func (*RolePolicyAttachmentsExclusive) ElementType() reflect.Type { + return reflect.TypeOf((**RolePolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i *RolePolicyAttachmentsExclusive) ToRolePolicyAttachmentsExclusiveOutput() RolePolicyAttachmentsExclusiveOutput { + return i.ToRolePolicyAttachmentsExclusiveOutputWithContext(context.Background()) +} + +func (i *RolePolicyAttachmentsExclusive) ToRolePolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) RolePolicyAttachmentsExclusiveOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyAttachmentsExclusiveOutput) +} + +// RolePolicyAttachmentsExclusiveArrayInput is an input type that accepts RolePolicyAttachmentsExclusiveArray and RolePolicyAttachmentsExclusiveArrayOutput values. +// You can construct a concrete instance of `RolePolicyAttachmentsExclusiveArrayInput` via: +// +// RolePolicyAttachmentsExclusiveArray{ RolePolicyAttachmentsExclusiveArgs{...} } +type RolePolicyAttachmentsExclusiveArrayInput interface { + pulumi.Input + + ToRolePolicyAttachmentsExclusiveArrayOutput() RolePolicyAttachmentsExclusiveArrayOutput + ToRolePolicyAttachmentsExclusiveArrayOutputWithContext(context.Context) RolePolicyAttachmentsExclusiveArrayOutput +} + +type RolePolicyAttachmentsExclusiveArray []RolePolicyAttachmentsExclusiveInput + +func (RolePolicyAttachmentsExclusiveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i RolePolicyAttachmentsExclusiveArray) ToRolePolicyAttachmentsExclusiveArrayOutput() RolePolicyAttachmentsExclusiveArrayOutput { + return i.ToRolePolicyAttachmentsExclusiveArrayOutputWithContext(context.Background()) +} + +func (i RolePolicyAttachmentsExclusiveArray) ToRolePolicyAttachmentsExclusiveArrayOutputWithContext(ctx context.Context) RolePolicyAttachmentsExclusiveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyAttachmentsExclusiveArrayOutput) +} + +// RolePolicyAttachmentsExclusiveMapInput is an input type that accepts RolePolicyAttachmentsExclusiveMap and RolePolicyAttachmentsExclusiveMapOutput values. +// You can construct a concrete instance of `RolePolicyAttachmentsExclusiveMapInput` via: +// +// RolePolicyAttachmentsExclusiveMap{ "key": RolePolicyAttachmentsExclusiveArgs{...} } +type RolePolicyAttachmentsExclusiveMapInput interface { + pulumi.Input + + ToRolePolicyAttachmentsExclusiveMapOutput() RolePolicyAttachmentsExclusiveMapOutput + ToRolePolicyAttachmentsExclusiveMapOutputWithContext(context.Context) RolePolicyAttachmentsExclusiveMapOutput +} + +type RolePolicyAttachmentsExclusiveMap map[string]RolePolicyAttachmentsExclusiveInput + +func (RolePolicyAttachmentsExclusiveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i RolePolicyAttachmentsExclusiveMap) ToRolePolicyAttachmentsExclusiveMapOutput() RolePolicyAttachmentsExclusiveMapOutput { + return i.ToRolePolicyAttachmentsExclusiveMapOutputWithContext(context.Background()) +} + +func (i RolePolicyAttachmentsExclusiveMap) ToRolePolicyAttachmentsExclusiveMapOutputWithContext(ctx context.Context) RolePolicyAttachmentsExclusiveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RolePolicyAttachmentsExclusiveMapOutput) +} + +type RolePolicyAttachmentsExclusiveOutput struct{ *pulumi.OutputState } + +func (RolePolicyAttachmentsExclusiveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RolePolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o RolePolicyAttachmentsExclusiveOutput) ToRolePolicyAttachmentsExclusiveOutput() RolePolicyAttachmentsExclusiveOutput { + return o +} + +func (o RolePolicyAttachmentsExclusiveOutput) ToRolePolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) RolePolicyAttachmentsExclusiveOutput { + return o +} + +// A list of managed IAM policy ARNs to be attached to the role. Policies attached to this role but not configured in this argument will be removed. +func (o RolePolicyAttachmentsExclusiveOutput) PolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RolePolicyAttachmentsExclusive) pulumi.StringArrayOutput { return v.PolicyArns }).(pulumi.StringArrayOutput) +} + +// IAM role name. +func (o RolePolicyAttachmentsExclusiveOutput) RoleName() pulumi.StringOutput { + return o.ApplyT(func(v *RolePolicyAttachmentsExclusive) pulumi.StringOutput { return v.RoleName }).(pulumi.StringOutput) +} + +type RolePolicyAttachmentsExclusiveArrayOutput struct{ *pulumi.OutputState } + +func (RolePolicyAttachmentsExclusiveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RolePolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o RolePolicyAttachmentsExclusiveArrayOutput) ToRolePolicyAttachmentsExclusiveArrayOutput() RolePolicyAttachmentsExclusiveArrayOutput { + return o +} + +func (o RolePolicyAttachmentsExclusiveArrayOutput) ToRolePolicyAttachmentsExclusiveArrayOutputWithContext(ctx context.Context) RolePolicyAttachmentsExclusiveArrayOutput { + return o +} + +func (o RolePolicyAttachmentsExclusiveArrayOutput) Index(i pulumi.IntInput) RolePolicyAttachmentsExclusiveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RolePolicyAttachmentsExclusive { + return vs[0].([]*RolePolicyAttachmentsExclusive)[vs[1].(int)] + }).(RolePolicyAttachmentsExclusiveOutput) +} + +type RolePolicyAttachmentsExclusiveMapOutput struct{ *pulumi.OutputState } + +func (RolePolicyAttachmentsExclusiveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RolePolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o RolePolicyAttachmentsExclusiveMapOutput) ToRolePolicyAttachmentsExclusiveMapOutput() RolePolicyAttachmentsExclusiveMapOutput { + return o +} + +func (o RolePolicyAttachmentsExclusiveMapOutput) ToRolePolicyAttachmentsExclusiveMapOutputWithContext(ctx context.Context) RolePolicyAttachmentsExclusiveMapOutput { + return o +} + +func (o RolePolicyAttachmentsExclusiveMapOutput) MapIndex(k pulumi.StringInput) RolePolicyAttachmentsExclusiveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RolePolicyAttachmentsExclusive { + return vs[0].(map[string]*RolePolicyAttachmentsExclusive)[vs[1].(string)] + }).(RolePolicyAttachmentsExclusiveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyAttachmentsExclusiveInput)(nil)).Elem(), &RolePolicyAttachmentsExclusive{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyAttachmentsExclusiveArrayInput)(nil)).Elem(), RolePolicyAttachmentsExclusiveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RolePolicyAttachmentsExclusiveMapInput)(nil)).Elem(), RolePolicyAttachmentsExclusiveMap{}) + pulumi.RegisterOutputType(RolePolicyAttachmentsExclusiveOutput{}) + pulumi.RegisterOutputType(RolePolicyAttachmentsExclusiveArrayOutput{}) + pulumi.RegisterOutputType(RolePolicyAttachmentsExclusiveMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/samlProvider.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/samlProvider.go new file mode 100644 index 000000000..71ffe3d85 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/samlProvider.go @@ -0,0 +1,332 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM SAML provider. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "saml-metadata.xml", +// }, nil) +// if err != nil { +// return err +// } +// _, err = iam.NewSamlProvider(ctx, "default", &iam.SamlProviderArgs{ +// Name: pulumi.String("myprovider"), +// SamlMetadataDocument: pulumi.String(invokeFile.Result), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM SAML Providers using the `arn`. For example: +// +// ```sh +// $ pulumi import aws:iam/samlProvider:SamlProvider default arn:aws:iam::123456789012:saml-provider/SAMLADFS +// ``` +type SamlProvider struct { + pulumi.CustomResourceState + + // The ARN assigned by AWS for this provider. + Arn pulumi.StringOutput `pulumi:"arn"` + // The name of the provider to create. + Name pulumi.StringOutput `pulumi:"name"` + // An XML document generated by an identity provider that supports SAML 2.0. + SamlMetadataDocument pulumi.StringOutput `pulumi:"samlMetadataDocument"` + // Map of resource tags for the IAM SAML provider. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The expiration date and time for the SAML provider in RFC1123 format, e.g., `Mon, 02 Jan 2006 15:04:05 MST`. + ValidUntil pulumi.StringOutput `pulumi:"validUntil"` +} + +// NewSamlProvider registers a new resource with the given unique name, arguments, and options. +func NewSamlProvider(ctx *pulumi.Context, + name string, args *SamlProviderArgs, opts ...pulumi.ResourceOption) (*SamlProvider, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.SamlMetadataDocument == nil { + return nil, errors.New("invalid value for required argument 'SamlMetadataDocument'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SamlProvider + err := ctx.RegisterResource("aws:iam/samlProvider:SamlProvider", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSamlProvider gets an existing SamlProvider 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 GetSamlProvider(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SamlProviderState, opts ...pulumi.ResourceOption) (*SamlProvider, error) { + var resource SamlProvider + err := ctx.ReadResource("aws:iam/samlProvider:SamlProvider", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SamlProvider resources. +type samlProviderState struct { + // The ARN assigned by AWS for this provider. + Arn *string `pulumi:"arn"` + // The name of the provider to create. + Name *string `pulumi:"name"` + // An XML document generated by an identity provider that supports SAML 2.0. + SamlMetadataDocument *string `pulumi:"samlMetadataDocument"` + // Map of resource tags for the IAM SAML provider. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The expiration date and time for the SAML provider in RFC1123 format, e.g., `Mon, 02 Jan 2006 15:04:05 MST`. + ValidUntil *string `pulumi:"validUntil"` +} + +type SamlProviderState struct { + // The ARN assigned by AWS for this provider. + Arn pulumi.StringPtrInput + // The name of the provider to create. + Name pulumi.StringPtrInput + // An XML document generated by an identity provider that supports SAML 2.0. + SamlMetadataDocument pulumi.StringPtrInput + // Map of resource tags for the IAM SAML provider. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The expiration date and time for the SAML provider in RFC1123 format, e.g., `Mon, 02 Jan 2006 15:04:05 MST`. + ValidUntil pulumi.StringPtrInput +} + +func (SamlProviderState) ElementType() reflect.Type { + return reflect.TypeOf((*samlProviderState)(nil)).Elem() +} + +type samlProviderArgs struct { + // The name of the provider to create. + Name *string `pulumi:"name"` + // An XML document generated by an identity provider that supports SAML 2.0. + SamlMetadataDocument string `pulumi:"samlMetadataDocument"` + // Map of resource tags for the IAM SAML provider. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a SamlProvider resource. +type SamlProviderArgs struct { + // The name of the provider to create. + Name pulumi.StringPtrInput + // An XML document generated by an identity provider that supports SAML 2.0. + SamlMetadataDocument pulumi.StringInput + // Map of resource tags for the IAM SAML provider. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (SamlProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*samlProviderArgs)(nil)).Elem() +} + +type SamlProviderInput interface { + pulumi.Input + + ToSamlProviderOutput() SamlProviderOutput + ToSamlProviderOutputWithContext(ctx context.Context) SamlProviderOutput +} + +func (*SamlProvider) ElementType() reflect.Type { + return reflect.TypeOf((**SamlProvider)(nil)).Elem() +} + +func (i *SamlProvider) ToSamlProviderOutput() SamlProviderOutput { + return i.ToSamlProviderOutputWithContext(context.Background()) +} + +func (i *SamlProvider) ToSamlProviderOutputWithContext(ctx context.Context) SamlProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(SamlProviderOutput) +} + +// SamlProviderArrayInput is an input type that accepts SamlProviderArray and SamlProviderArrayOutput values. +// You can construct a concrete instance of `SamlProviderArrayInput` via: +// +// SamlProviderArray{ SamlProviderArgs{...} } +type SamlProviderArrayInput interface { + pulumi.Input + + ToSamlProviderArrayOutput() SamlProviderArrayOutput + ToSamlProviderArrayOutputWithContext(context.Context) SamlProviderArrayOutput +} + +type SamlProviderArray []SamlProviderInput + +func (SamlProviderArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SamlProvider)(nil)).Elem() +} + +func (i SamlProviderArray) ToSamlProviderArrayOutput() SamlProviderArrayOutput { + return i.ToSamlProviderArrayOutputWithContext(context.Background()) +} + +func (i SamlProviderArray) ToSamlProviderArrayOutputWithContext(ctx context.Context) SamlProviderArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SamlProviderArrayOutput) +} + +// SamlProviderMapInput is an input type that accepts SamlProviderMap and SamlProviderMapOutput values. +// You can construct a concrete instance of `SamlProviderMapInput` via: +// +// SamlProviderMap{ "key": SamlProviderArgs{...} } +type SamlProviderMapInput interface { + pulumi.Input + + ToSamlProviderMapOutput() SamlProviderMapOutput + ToSamlProviderMapOutputWithContext(context.Context) SamlProviderMapOutput +} + +type SamlProviderMap map[string]SamlProviderInput + +func (SamlProviderMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SamlProvider)(nil)).Elem() +} + +func (i SamlProviderMap) ToSamlProviderMapOutput() SamlProviderMapOutput { + return i.ToSamlProviderMapOutputWithContext(context.Background()) +} + +func (i SamlProviderMap) ToSamlProviderMapOutputWithContext(ctx context.Context) SamlProviderMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SamlProviderMapOutput) +} + +type SamlProviderOutput struct{ *pulumi.OutputState } + +func (SamlProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SamlProvider)(nil)).Elem() +} + +func (o SamlProviderOutput) ToSamlProviderOutput() SamlProviderOutput { + return o +} + +func (o SamlProviderOutput) ToSamlProviderOutputWithContext(ctx context.Context) SamlProviderOutput { + return o +} + +// The ARN assigned by AWS for this provider. +func (o SamlProviderOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *SamlProvider) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The name of the provider to create. +func (o SamlProviderOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *SamlProvider) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// An XML document generated by an identity provider that supports SAML 2.0. +func (o SamlProviderOutput) SamlMetadataDocument() pulumi.StringOutput { + return o.ApplyT(func(v *SamlProvider) pulumi.StringOutput { return v.SamlMetadataDocument }).(pulumi.StringOutput) +} + +// Map of resource tags for the IAM SAML provider. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o SamlProviderOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *SamlProvider) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o SamlProviderOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *SamlProvider) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The expiration date and time for the SAML provider in RFC1123 format, e.g., `Mon, 02 Jan 2006 15:04:05 MST`. +func (o SamlProviderOutput) ValidUntil() pulumi.StringOutput { + return o.ApplyT(func(v *SamlProvider) pulumi.StringOutput { return v.ValidUntil }).(pulumi.StringOutput) +} + +type SamlProviderArrayOutput struct{ *pulumi.OutputState } + +func (SamlProviderArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SamlProvider)(nil)).Elem() +} + +func (o SamlProviderArrayOutput) ToSamlProviderArrayOutput() SamlProviderArrayOutput { + return o +} + +func (o SamlProviderArrayOutput) ToSamlProviderArrayOutputWithContext(ctx context.Context) SamlProviderArrayOutput { + return o +} + +func (o SamlProviderArrayOutput) Index(i pulumi.IntInput) SamlProviderOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SamlProvider { + return vs[0].([]*SamlProvider)[vs[1].(int)] + }).(SamlProviderOutput) +} + +type SamlProviderMapOutput struct{ *pulumi.OutputState } + +func (SamlProviderMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SamlProvider)(nil)).Elem() +} + +func (o SamlProviderMapOutput) ToSamlProviderMapOutput() SamlProviderMapOutput { + return o +} + +func (o SamlProviderMapOutput) ToSamlProviderMapOutputWithContext(ctx context.Context) SamlProviderMapOutput { + return o +} + +func (o SamlProviderMapOutput) MapIndex(k pulumi.StringInput) SamlProviderOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SamlProvider { + return vs[0].(map[string]*SamlProvider)[vs[1].(string)] + }).(SamlProviderOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SamlProviderInput)(nil)).Elem(), &SamlProvider{}) + pulumi.RegisterInputType(reflect.TypeOf((*SamlProviderArrayInput)(nil)).Elem(), SamlProviderArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SamlProviderMapInput)(nil)).Elem(), SamlProviderMap{}) + pulumi.RegisterOutputType(SamlProviderOutput{}) + pulumi.RegisterOutputType(SamlProviderArrayOutput{}) + pulumi.RegisterOutputType(SamlProviderMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/securityTokenServicePreferences.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/securityTokenServicePreferences.go new file mode 100644 index 000000000..8217e4e8e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/securityTokenServicePreferences.go @@ -0,0 +1,245 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM Security Token Service Preferences resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewSecurityTokenServicePreferences(ctx, "example", &iam.SecurityTokenServicePreferencesArgs{ +// GlobalEndpointTokenVersion: pulumi.String("v2Token"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type SecurityTokenServicePreferences struct { + pulumi.CustomResourceState + + // The version of the STS global endpoint token. Valid values: `v1Token`, `v2Token`. + GlobalEndpointTokenVersion pulumi.StringOutput `pulumi:"globalEndpointTokenVersion"` +} + +// NewSecurityTokenServicePreferences registers a new resource with the given unique name, arguments, and options. +func NewSecurityTokenServicePreferences(ctx *pulumi.Context, + name string, args *SecurityTokenServicePreferencesArgs, opts ...pulumi.ResourceOption) (*SecurityTokenServicePreferences, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.GlobalEndpointTokenVersion == nil { + return nil, errors.New("invalid value for required argument 'GlobalEndpointTokenVersion'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SecurityTokenServicePreferences + err := ctx.RegisterResource("aws:iam/securityTokenServicePreferences:SecurityTokenServicePreferences", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSecurityTokenServicePreferences gets an existing SecurityTokenServicePreferences 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 GetSecurityTokenServicePreferences(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SecurityTokenServicePreferencesState, opts ...pulumi.ResourceOption) (*SecurityTokenServicePreferences, error) { + var resource SecurityTokenServicePreferences + err := ctx.ReadResource("aws:iam/securityTokenServicePreferences:SecurityTokenServicePreferences", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SecurityTokenServicePreferences resources. +type securityTokenServicePreferencesState struct { + // The version of the STS global endpoint token. Valid values: `v1Token`, `v2Token`. + GlobalEndpointTokenVersion *string `pulumi:"globalEndpointTokenVersion"` +} + +type SecurityTokenServicePreferencesState struct { + // The version of the STS global endpoint token. Valid values: `v1Token`, `v2Token`. + GlobalEndpointTokenVersion pulumi.StringPtrInput +} + +func (SecurityTokenServicePreferencesState) ElementType() reflect.Type { + return reflect.TypeOf((*securityTokenServicePreferencesState)(nil)).Elem() +} + +type securityTokenServicePreferencesArgs struct { + // The version of the STS global endpoint token. Valid values: `v1Token`, `v2Token`. + GlobalEndpointTokenVersion string `pulumi:"globalEndpointTokenVersion"` +} + +// The set of arguments for constructing a SecurityTokenServicePreferences resource. +type SecurityTokenServicePreferencesArgs struct { + // The version of the STS global endpoint token. Valid values: `v1Token`, `v2Token`. + GlobalEndpointTokenVersion pulumi.StringInput +} + +func (SecurityTokenServicePreferencesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*securityTokenServicePreferencesArgs)(nil)).Elem() +} + +type SecurityTokenServicePreferencesInput interface { + pulumi.Input + + ToSecurityTokenServicePreferencesOutput() SecurityTokenServicePreferencesOutput + ToSecurityTokenServicePreferencesOutputWithContext(ctx context.Context) SecurityTokenServicePreferencesOutput +} + +func (*SecurityTokenServicePreferences) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityTokenServicePreferences)(nil)).Elem() +} + +func (i *SecurityTokenServicePreferences) ToSecurityTokenServicePreferencesOutput() SecurityTokenServicePreferencesOutput { + return i.ToSecurityTokenServicePreferencesOutputWithContext(context.Background()) +} + +func (i *SecurityTokenServicePreferences) ToSecurityTokenServicePreferencesOutputWithContext(ctx context.Context) SecurityTokenServicePreferencesOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityTokenServicePreferencesOutput) +} + +// SecurityTokenServicePreferencesArrayInput is an input type that accepts SecurityTokenServicePreferencesArray and SecurityTokenServicePreferencesArrayOutput values. +// You can construct a concrete instance of `SecurityTokenServicePreferencesArrayInput` via: +// +// SecurityTokenServicePreferencesArray{ SecurityTokenServicePreferencesArgs{...} } +type SecurityTokenServicePreferencesArrayInput interface { + pulumi.Input + + ToSecurityTokenServicePreferencesArrayOutput() SecurityTokenServicePreferencesArrayOutput + ToSecurityTokenServicePreferencesArrayOutputWithContext(context.Context) SecurityTokenServicePreferencesArrayOutput +} + +type SecurityTokenServicePreferencesArray []SecurityTokenServicePreferencesInput + +func (SecurityTokenServicePreferencesArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SecurityTokenServicePreferences)(nil)).Elem() +} + +func (i SecurityTokenServicePreferencesArray) ToSecurityTokenServicePreferencesArrayOutput() SecurityTokenServicePreferencesArrayOutput { + return i.ToSecurityTokenServicePreferencesArrayOutputWithContext(context.Background()) +} + +func (i SecurityTokenServicePreferencesArray) ToSecurityTokenServicePreferencesArrayOutputWithContext(ctx context.Context) SecurityTokenServicePreferencesArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityTokenServicePreferencesArrayOutput) +} + +// SecurityTokenServicePreferencesMapInput is an input type that accepts SecurityTokenServicePreferencesMap and SecurityTokenServicePreferencesMapOutput values. +// You can construct a concrete instance of `SecurityTokenServicePreferencesMapInput` via: +// +// SecurityTokenServicePreferencesMap{ "key": SecurityTokenServicePreferencesArgs{...} } +type SecurityTokenServicePreferencesMapInput interface { + pulumi.Input + + ToSecurityTokenServicePreferencesMapOutput() SecurityTokenServicePreferencesMapOutput + ToSecurityTokenServicePreferencesMapOutputWithContext(context.Context) SecurityTokenServicePreferencesMapOutput +} + +type SecurityTokenServicePreferencesMap map[string]SecurityTokenServicePreferencesInput + +func (SecurityTokenServicePreferencesMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SecurityTokenServicePreferences)(nil)).Elem() +} + +func (i SecurityTokenServicePreferencesMap) ToSecurityTokenServicePreferencesMapOutput() SecurityTokenServicePreferencesMapOutput { + return i.ToSecurityTokenServicePreferencesMapOutputWithContext(context.Background()) +} + +func (i SecurityTokenServicePreferencesMap) ToSecurityTokenServicePreferencesMapOutputWithContext(ctx context.Context) SecurityTokenServicePreferencesMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityTokenServicePreferencesMapOutput) +} + +type SecurityTokenServicePreferencesOutput struct{ *pulumi.OutputState } + +func (SecurityTokenServicePreferencesOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityTokenServicePreferences)(nil)).Elem() +} + +func (o SecurityTokenServicePreferencesOutput) ToSecurityTokenServicePreferencesOutput() SecurityTokenServicePreferencesOutput { + return o +} + +func (o SecurityTokenServicePreferencesOutput) ToSecurityTokenServicePreferencesOutputWithContext(ctx context.Context) SecurityTokenServicePreferencesOutput { + return o +} + +// The version of the STS global endpoint token. Valid values: `v1Token`, `v2Token`. +func (o SecurityTokenServicePreferencesOutput) GlobalEndpointTokenVersion() pulumi.StringOutput { + return o.ApplyT(func(v *SecurityTokenServicePreferences) pulumi.StringOutput { return v.GlobalEndpointTokenVersion }).(pulumi.StringOutput) +} + +type SecurityTokenServicePreferencesArrayOutput struct{ *pulumi.OutputState } + +func (SecurityTokenServicePreferencesArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SecurityTokenServicePreferences)(nil)).Elem() +} + +func (o SecurityTokenServicePreferencesArrayOutput) ToSecurityTokenServicePreferencesArrayOutput() SecurityTokenServicePreferencesArrayOutput { + return o +} + +func (o SecurityTokenServicePreferencesArrayOutput) ToSecurityTokenServicePreferencesArrayOutputWithContext(ctx context.Context) SecurityTokenServicePreferencesArrayOutput { + return o +} + +func (o SecurityTokenServicePreferencesArrayOutput) Index(i pulumi.IntInput) SecurityTokenServicePreferencesOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SecurityTokenServicePreferences { + return vs[0].([]*SecurityTokenServicePreferences)[vs[1].(int)] + }).(SecurityTokenServicePreferencesOutput) +} + +type SecurityTokenServicePreferencesMapOutput struct{ *pulumi.OutputState } + +func (SecurityTokenServicePreferencesMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SecurityTokenServicePreferences)(nil)).Elem() +} + +func (o SecurityTokenServicePreferencesMapOutput) ToSecurityTokenServicePreferencesMapOutput() SecurityTokenServicePreferencesMapOutput { + return o +} + +func (o SecurityTokenServicePreferencesMapOutput) ToSecurityTokenServicePreferencesMapOutputWithContext(ctx context.Context) SecurityTokenServicePreferencesMapOutput { + return o +} + +func (o SecurityTokenServicePreferencesMapOutput) MapIndex(k pulumi.StringInput) SecurityTokenServicePreferencesOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SecurityTokenServicePreferences { + return vs[0].(map[string]*SecurityTokenServicePreferences)[vs[1].(string)] + }).(SecurityTokenServicePreferencesOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SecurityTokenServicePreferencesInput)(nil)).Elem(), &SecurityTokenServicePreferences{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityTokenServicePreferencesArrayInput)(nil)).Elem(), SecurityTokenServicePreferencesArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityTokenServicePreferencesMapInput)(nil)).Elem(), SecurityTokenServicePreferencesMap{}) + pulumi.RegisterOutputType(SecurityTokenServicePreferencesOutput{}) + pulumi.RegisterOutputType(SecurityTokenServicePreferencesArrayOutput{}) + pulumi.RegisterOutputType(SecurityTokenServicePreferencesMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serverCertificate.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serverCertificate.go new file mode 100644 index 000000000..b33017449 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serverCertificate.go @@ -0,0 +1,528 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM Server Certificate resource to upload Server Certificates. +// Certs uploaded to IAM can easily work with other AWS services such as: +// +// - AWS Elastic Beanstalk +// - Elastic Load Balancing +// - CloudFront +// - AWS OpsWorks +// +// For information about server certificates in IAM, see [Managing Server +// Certificates][2] in AWS Documentation. +// +// ## Example Usage +// +// **Using certs on file:** +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "self-ca-cert.pem", +// }, nil) +// if err != nil { +// return err +// } +// invokeFile1, err := std.File(ctx, &std.FileArgs{ +// Input: "test-key.pem", +// }, nil) +// if err != nil { +// return err +// } +// _, err = iam.NewServerCertificate(ctx, "test_cert", &iam.ServerCertificateArgs{ +// Name: pulumi.String("some_test_cert"), +// CertificateBody: pulumi.String(invokeFile.Result), +// PrivateKey: pulumi.String(invokeFile1.Result), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// **Example with cert in-line:** +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewServerCertificate(ctx, "test_cert_alt", &iam.ServerCertificateArgs{ +// Name: pulumi.String("alt_test_cert"), +// CertificateBody: pulumi.String("-----BEGIN CERTIFICATE-----\n[......] # cert contents\n-----END CERTIFICATE-----\n"), +// PrivateKey: pulumi.String("-----BEGIN RSA PRIVATE KEY-----\n[......] # cert contents\n-----END RSA PRIVATE KEY-----\n"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// **Use in combination with an AWS ELB resource:** +// +// Some properties of an IAM Server Certificates cannot be updated while they are +// in use. In order for the provider to effectively manage a Certificate in this situation, it is +// recommended you utilize the `namePrefix` attribute and enable the +// `createBeforeDestroy`. This will allow this provider +// to create a new, updated `iam.ServerCertificate` resource and replace it in +// dependant resources before attempting to destroy the old version. +// +// ## Import +// +// Using `pulumi import`, import IAM Server Certificates using the `name`. For example: +// +// ```sh +// $ pulumi import aws:iam/serverCertificate:ServerCertificate certificate example.com-certificate-until-2018 +// ``` +type ServerCertificate struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) specifying the server certificate. + Arn pulumi.StringOutput `pulumi:"arn"` + // The contents of the public key certificate in + // PEM-encoded format. + CertificateBody pulumi.StringOutput `pulumi:"certificateBody"` + // The contents of the certificate chain. + // This is typically a concatenation of the PEM-encoded public key certificates + // of the chain. + CertificateChain pulumi.StringPtrOutput `pulumi:"certificateChain"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) on which the certificate is set to expire. + Expiration pulumi.StringOutput `pulumi:"expiration"` + // The name of the Server Certificate. Do not include the + // path in this value. If omitted, the provider will assign a random, unique name. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // The IAM path for the server certificate. If it is not + // included, it defaults to a slash (/). If this certificate is for use with + // AWS CloudFront, the path must be in format `/cloudfront/your_path_here`. + // See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more details on IAM Paths. + Path pulumi.StringPtrOutput `pulumi:"path"` + // The contents of the private key in PEM-encoded format. + PrivateKey pulumi.StringOutput `pulumi:"privateKey"` + // Map of resource tags for the server certificate. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** AWS performs behind-the-scenes modifications to some certificate files if they do not adhere to a specific format. These modifications will result in this provider forever believing that it needs to update the resources since the local and AWS file contents will not match after theses modifications occur. In order to prevent this from happening you must ensure that all your PEM-encoded files use UNIX line-breaks and that `certificateBody` contains only one certificate. All other certificates should go in `certificateChain`. It is common for some Certificate Authorities to issue certificate files that have DOS line-breaks and that are actually multiple certificates concatenated together in order to form a full certificate chain. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) when the server certificate was uploaded. + UploadDate pulumi.StringOutput `pulumi:"uploadDate"` +} + +// NewServerCertificate registers a new resource with the given unique name, arguments, and options. +func NewServerCertificate(ctx *pulumi.Context, + name string, args *ServerCertificateArgs, opts ...pulumi.ResourceOption) (*ServerCertificate, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.CertificateBody == nil { + return nil, errors.New("invalid value for required argument 'CertificateBody'") + } + if args.PrivateKey == nil { + return nil, errors.New("invalid value for required argument 'PrivateKey'") + } + if args.PrivateKey != nil { + args.PrivateKey = pulumi.ToSecret(args.PrivateKey).(pulumi.StringInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "privateKey", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource ServerCertificate + err := ctx.RegisterResource("aws:iam/serverCertificate:ServerCertificate", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetServerCertificate gets an existing ServerCertificate 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 GetServerCertificate(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServerCertificateState, opts ...pulumi.ResourceOption) (*ServerCertificate, error) { + var resource ServerCertificate + err := ctx.ReadResource("aws:iam/serverCertificate:ServerCertificate", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ServerCertificate resources. +type serverCertificateState struct { + // The Amazon Resource Name (ARN) specifying the server certificate. + Arn *string `pulumi:"arn"` + // The contents of the public key certificate in + // PEM-encoded format. + CertificateBody *string `pulumi:"certificateBody"` + // The contents of the certificate chain. + // This is typically a concatenation of the PEM-encoded public key certificates + // of the chain. + CertificateChain *string `pulumi:"certificateChain"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) on which the certificate is set to expire. + Expiration *string `pulumi:"expiration"` + // The name of the Server Certificate. Do not include the + // path in this value. If omitted, the provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The IAM path for the server certificate. If it is not + // included, it defaults to a slash (/). If this certificate is for use with + // AWS CloudFront, the path must be in format `/cloudfront/your_path_here`. + // See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more details on IAM Paths. + Path *string `pulumi:"path"` + // The contents of the private key in PEM-encoded format. + PrivateKey *string `pulumi:"privateKey"` + // Map of resource tags for the server certificate. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** AWS performs behind-the-scenes modifications to some certificate files if they do not adhere to a specific format. These modifications will result in this provider forever believing that it needs to update the resources since the local and AWS file contents will not match after theses modifications occur. In order to prevent this from happening you must ensure that all your PEM-encoded files use UNIX line-breaks and that `certificateBody` contains only one certificate. All other certificates should go in `certificateChain`. It is common for some Certificate Authorities to issue certificate files that have DOS line-breaks and that are actually multiple certificates concatenated together in order to form a full certificate chain. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) when the server certificate was uploaded. + UploadDate *string `pulumi:"uploadDate"` +} + +type ServerCertificateState struct { + // The Amazon Resource Name (ARN) specifying the server certificate. + Arn pulumi.StringPtrInput + // The contents of the public key certificate in + // PEM-encoded format. + CertificateBody pulumi.StringPtrInput + // The contents of the certificate chain. + // This is typically a concatenation of the PEM-encoded public key certificates + // of the chain. + CertificateChain pulumi.StringPtrInput + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) on which the certificate is set to expire. + Expiration pulumi.StringPtrInput + // The name of the Server Certificate. Do not include the + // path in this value. If omitted, the provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The IAM path for the server certificate. If it is not + // included, it defaults to a slash (/). If this certificate is for use with + // AWS CloudFront, the path must be in format `/cloudfront/your_path_here`. + // See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more details on IAM Paths. + Path pulumi.StringPtrInput + // The contents of the private key in PEM-encoded format. + PrivateKey pulumi.StringPtrInput + // Map of resource tags for the server certificate. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** AWS performs behind-the-scenes modifications to some certificate files if they do not adhere to a specific format. These modifications will result in this provider forever believing that it needs to update the resources since the local and AWS file contents will not match after theses modifications occur. In order to prevent this from happening you must ensure that all your PEM-encoded files use UNIX line-breaks and that `certificateBody` contains only one certificate. All other certificates should go in `certificateChain`. It is common for some Certificate Authorities to issue certificate files that have DOS line-breaks and that are actually multiple certificates concatenated together in order to form a full certificate chain. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) when the server certificate was uploaded. + UploadDate pulumi.StringPtrInput +} + +func (ServerCertificateState) ElementType() reflect.Type { + return reflect.TypeOf((*serverCertificateState)(nil)).Elem() +} + +type serverCertificateArgs struct { + // The contents of the public key certificate in + // PEM-encoded format. + CertificateBody string `pulumi:"certificateBody"` + // The contents of the certificate chain. + // This is typically a concatenation of the PEM-encoded public key certificates + // of the chain. + CertificateChain *string `pulumi:"certificateChain"` + // The name of the Server Certificate. Do not include the + // path in this value. If omitted, the provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The IAM path for the server certificate. If it is not + // included, it defaults to a slash (/). If this certificate is for use with + // AWS CloudFront, the path must be in format `/cloudfront/your_path_here`. + // See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more details on IAM Paths. + Path *string `pulumi:"path"` + // The contents of the private key in PEM-encoded format. + PrivateKey string `pulumi:"privateKey"` + // Map of resource tags for the server certificate. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** AWS performs behind-the-scenes modifications to some certificate files if they do not adhere to a specific format. These modifications will result in this provider forever believing that it needs to update the resources since the local and AWS file contents will not match after theses modifications occur. In order to prevent this from happening you must ensure that all your PEM-encoded files use UNIX line-breaks and that `certificateBody` contains only one certificate. All other certificates should go in `certificateChain`. It is common for some Certificate Authorities to issue certificate files that have DOS line-breaks and that are actually multiple certificates concatenated together in order to form a full certificate chain. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a ServerCertificate resource. +type ServerCertificateArgs struct { + // The contents of the public key certificate in + // PEM-encoded format. + CertificateBody pulumi.StringInput + // The contents of the certificate chain. + // This is typically a concatenation of the PEM-encoded public key certificates + // of the chain. + CertificateChain pulumi.StringPtrInput + // The name of the Server Certificate. Do not include the + // path in this value. If omitted, the provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified + // prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The IAM path for the server certificate. If it is not + // included, it defaults to a slash (/). If this certificate is for use with + // AWS CloudFront, the path must be in format `/cloudfront/your_path_here`. + // See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more details on IAM Paths. + Path pulumi.StringPtrInput + // The contents of the private key in PEM-encoded format. + PrivateKey pulumi.StringInput + // Map of resource tags for the server certificate. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // > **NOTE:** AWS performs behind-the-scenes modifications to some certificate files if they do not adhere to a specific format. These modifications will result in this provider forever believing that it needs to update the resources since the local and AWS file contents will not match after theses modifications occur. In order to prevent this from happening you must ensure that all your PEM-encoded files use UNIX line-breaks and that `certificateBody` contains only one certificate. All other certificates should go in `certificateChain`. It is common for some Certificate Authorities to issue certificate files that have DOS line-breaks and that are actually multiple certificates concatenated together in order to form a full certificate chain. + Tags pulumi.StringMapInput +} + +func (ServerCertificateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serverCertificateArgs)(nil)).Elem() +} + +type ServerCertificateInput interface { + pulumi.Input + + ToServerCertificateOutput() ServerCertificateOutput + ToServerCertificateOutputWithContext(ctx context.Context) ServerCertificateOutput +} + +func (*ServerCertificate) ElementType() reflect.Type { + return reflect.TypeOf((**ServerCertificate)(nil)).Elem() +} + +func (i *ServerCertificate) ToServerCertificateOutput() ServerCertificateOutput { + return i.ToServerCertificateOutputWithContext(context.Background()) +} + +func (i *ServerCertificate) ToServerCertificateOutputWithContext(ctx context.Context) ServerCertificateOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServerCertificateOutput) +} + +// ServerCertificateArrayInput is an input type that accepts ServerCertificateArray and ServerCertificateArrayOutput values. +// You can construct a concrete instance of `ServerCertificateArrayInput` via: +// +// ServerCertificateArray{ ServerCertificateArgs{...} } +type ServerCertificateArrayInput interface { + pulumi.Input + + ToServerCertificateArrayOutput() ServerCertificateArrayOutput + ToServerCertificateArrayOutputWithContext(context.Context) ServerCertificateArrayOutput +} + +type ServerCertificateArray []ServerCertificateInput + +func (ServerCertificateArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServerCertificate)(nil)).Elem() +} + +func (i ServerCertificateArray) ToServerCertificateArrayOutput() ServerCertificateArrayOutput { + return i.ToServerCertificateArrayOutputWithContext(context.Background()) +} + +func (i ServerCertificateArray) ToServerCertificateArrayOutputWithContext(ctx context.Context) ServerCertificateArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServerCertificateArrayOutput) +} + +// ServerCertificateMapInput is an input type that accepts ServerCertificateMap and ServerCertificateMapOutput values. +// You can construct a concrete instance of `ServerCertificateMapInput` via: +// +// ServerCertificateMap{ "key": ServerCertificateArgs{...} } +type ServerCertificateMapInput interface { + pulumi.Input + + ToServerCertificateMapOutput() ServerCertificateMapOutput + ToServerCertificateMapOutputWithContext(context.Context) ServerCertificateMapOutput +} + +type ServerCertificateMap map[string]ServerCertificateInput + +func (ServerCertificateMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServerCertificate)(nil)).Elem() +} + +func (i ServerCertificateMap) ToServerCertificateMapOutput() ServerCertificateMapOutput { + return i.ToServerCertificateMapOutputWithContext(context.Background()) +} + +func (i ServerCertificateMap) ToServerCertificateMapOutputWithContext(ctx context.Context) ServerCertificateMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServerCertificateMapOutput) +} + +type ServerCertificateOutput struct{ *pulumi.OutputState } + +func (ServerCertificateOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServerCertificate)(nil)).Elem() +} + +func (o ServerCertificateOutput) ToServerCertificateOutput() ServerCertificateOutput { + return o +} + +func (o ServerCertificateOutput) ToServerCertificateOutputWithContext(ctx context.Context) ServerCertificateOutput { + return o +} + +// The Amazon Resource Name (ARN) specifying the server certificate. +func (o ServerCertificateOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The contents of the public key certificate in +// PEM-encoded format. +func (o ServerCertificateOutput) CertificateBody() pulumi.StringOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringOutput { return v.CertificateBody }).(pulumi.StringOutput) +} + +// The contents of the certificate chain. +// This is typically a concatenation of the PEM-encoded public key certificates +// of the chain. +func (o ServerCertificateOutput) CertificateChain() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringPtrOutput { return v.CertificateChain }).(pulumi.StringPtrOutput) +} + +// Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) on which the certificate is set to expire. +func (o ServerCertificateOutput) Expiration() pulumi.StringOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringOutput { return v.Expiration }).(pulumi.StringOutput) +} + +// The name of the Server Certificate. Do not include the +// path in this value. If omitted, the provider will assign a random, unique name. +func (o ServerCertificateOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified +// prefix. Conflicts with `name`. +func (o ServerCertificateOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// The IAM path for the server certificate. If it is not +// included, it defaults to a slash (/). If this certificate is for use with +// AWS CloudFront, the path must be in format `/cloudfront/your_path_here`. +// See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more details on IAM Paths. +func (o ServerCertificateOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringPtrOutput { return v.Path }).(pulumi.StringPtrOutput) +} + +// The contents of the private key in PEM-encoded format. +func (o ServerCertificateOutput) PrivateKey() pulumi.StringOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringOutput { return v.PrivateKey }).(pulumi.StringOutput) +} + +// Map of resource tags for the server certificate. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +// +// > **NOTE:** AWS performs behind-the-scenes modifications to some certificate files if they do not adhere to a specific format. These modifications will result in this provider forever believing that it needs to update the resources since the local and AWS file contents will not match after theses modifications occur. In order to prevent this from happening you must ensure that all your PEM-encoded files use UNIX line-breaks and that `certificateBody` contains only one certificate. All other certificates should go in `certificateChain`. It is common for some Certificate Authorities to issue certificate files that have DOS line-breaks and that are actually multiple certificates concatenated together in order to form a full certificate chain. +func (o ServerCertificateOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o ServerCertificateOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) when the server certificate was uploaded. +func (o ServerCertificateOutput) UploadDate() pulumi.StringOutput { + return o.ApplyT(func(v *ServerCertificate) pulumi.StringOutput { return v.UploadDate }).(pulumi.StringOutput) +} + +type ServerCertificateArrayOutput struct{ *pulumi.OutputState } + +func (ServerCertificateArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServerCertificate)(nil)).Elem() +} + +func (o ServerCertificateArrayOutput) ToServerCertificateArrayOutput() ServerCertificateArrayOutput { + return o +} + +func (o ServerCertificateArrayOutput) ToServerCertificateArrayOutputWithContext(ctx context.Context) ServerCertificateArrayOutput { + return o +} + +func (o ServerCertificateArrayOutput) Index(i pulumi.IntInput) ServerCertificateOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ServerCertificate { + return vs[0].([]*ServerCertificate)[vs[1].(int)] + }).(ServerCertificateOutput) +} + +type ServerCertificateMapOutput struct{ *pulumi.OutputState } + +func (ServerCertificateMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServerCertificate)(nil)).Elem() +} + +func (o ServerCertificateMapOutput) ToServerCertificateMapOutput() ServerCertificateMapOutput { + return o +} + +func (o ServerCertificateMapOutput) ToServerCertificateMapOutputWithContext(ctx context.Context) ServerCertificateMapOutput { + return o +} + +func (o ServerCertificateMapOutput) MapIndex(k pulumi.StringInput) ServerCertificateOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ServerCertificate { + return vs[0].(map[string]*ServerCertificate)[vs[1].(string)] + }).(ServerCertificateOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServerCertificateInput)(nil)).Elem(), &ServerCertificate{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServerCertificateArrayInput)(nil)).Elem(), ServerCertificateArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServerCertificateMapInput)(nil)).Elem(), ServerCertificateMap{}) + pulumi.RegisterOutputType(ServerCertificateOutput{}) + pulumi.RegisterOutputType(ServerCertificateArrayOutput{}) + pulumi.RegisterOutputType(ServerCertificateMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceLinkedRole.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceLinkedRole.go new file mode 100644 index 000000000..839fb2a97 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceLinkedRole.go @@ -0,0 +1,372 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an [IAM service-linked role](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html). +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewServiceLinkedRole(ctx, "elasticbeanstalk", &iam.ServiceLinkedRoleArgs{ +// AwsServiceName: pulumi.String("elasticbeanstalk.amazonaws.com"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM service-linked roles using role ARN. For example: +// +// ```sh +// $ pulumi import aws:iam/serviceLinkedRole:ServiceLinkedRole elasticbeanstalk arn:aws:iam::123456789012:role/aws-service-role/elasticbeanstalk.amazonaws.com/AWSServiceRoleForElasticBeanstalk +// ``` +type ServiceLinkedRole struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) specifying the role. + Arn pulumi.StringOutput `pulumi:"arn"` + // The AWS service to which this role is attached. You use a string similar to a URL but without the `http://` in front. For example: `elasticbeanstalk.amazonaws.com`. To find the full list of services that support service-linked roles, check [the docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). + AwsServiceName pulumi.StringOutput `pulumi:"awsServiceName"` + // The creation date of the IAM role. + CreateDate pulumi.StringOutput `pulumi:"createDate"` + // Additional string appended to the role name. Not all AWS services support custom suffixes. + CustomSuffix pulumi.StringPtrOutput `pulumi:"customSuffix"` + // The description of the role. + Description pulumi.StringPtrOutput `pulumi:"description"` + // The name of the role. + Name pulumi.StringOutput `pulumi:"name"` + // The path of the role. + Path pulumi.StringOutput `pulumi:"path"` + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The stable and unique string identifying the role. + UniqueId pulumi.StringOutput `pulumi:"uniqueId"` +} + +// NewServiceLinkedRole registers a new resource with the given unique name, arguments, and options. +func NewServiceLinkedRole(ctx *pulumi.Context, + name string, args *ServiceLinkedRoleArgs, opts ...pulumi.ResourceOption) (*ServiceLinkedRole, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.AwsServiceName == nil { + return nil, errors.New("invalid value for required argument 'AwsServiceName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource ServiceLinkedRole + err := ctx.RegisterResource("aws:iam/serviceLinkedRole:ServiceLinkedRole", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetServiceLinkedRole gets an existing ServiceLinkedRole 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 GetServiceLinkedRole(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServiceLinkedRoleState, opts ...pulumi.ResourceOption) (*ServiceLinkedRole, error) { + var resource ServiceLinkedRole + err := ctx.ReadResource("aws:iam/serviceLinkedRole:ServiceLinkedRole", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ServiceLinkedRole resources. +type serviceLinkedRoleState struct { + // The Amazon Resource Name (ARN) specifying the role. + Arn *string `pulumi:"arn"` + // The AWS service to which this role is attached. You use a string similar to a URL but without the `http://` in front. For example: `elasticbeanstalk.amazonaws.com`. To find the full list of services that support service-linked roles, check [the docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). + AwsServiceName *string `pulumi:"awsServiceName"` + // The creation date of the IAM role. + CreateDate *string `pulumi:"createDate"` + // Additional string appended to the role name. Not all AWS services support custom suffixes. + CustomSuffix *string `pulumi:"customSuffix"` + // The description of the role. + Description *string `pulumi:"description"` + // The name of the role. + Name *string `pulumi:"name"` + // The path of the role. + Path *string `pulumi:"path"` + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The stable and unique string identifying the role. + UniqueId *string `pulumi:"uniqueId"` +} + +type ServiceLinkedRoleState struct { + // The Amazon Resource Name (ARN) specifying the role. + Arn pulumi.StringPtrInput + // The AWS service to which this role is attached. You use a string similar to a URL but without the `http://` in front. For example: `elasticbeanstalk.amazonaws.com`. To find the full list of services that support service-linked roles, check [the docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). + AwsServiceName pulumi.StringPtrInput + // The creation date of the IAM role. + CreateDate pulumi.StringPtrInput + // Additional string appended to the role name. Not all AWS services support custom suffixes. + CustomSuffix pulumi.StringPtrInput + // The description of the role. + Description pulumi.StringPtrInput + // The name of the role. + Name pulumi.StringPtrInput + // The path of the role. + Path pulumi.StringPtrInput + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The stable and unique string identifying the role. + UniqueId pulumi.StringPtrInput +} + +func (ServiceLinkedRoleState) ElementType() reflect.Type { + return reflect.TypeOf((*serviceLinkedRoleState)(nil)).Elem() +} + +type serviceLinkedRoleArgs struct { + // The AWS service to which this role is attached. You use a string similar to a URL but without the `http://` in front. For example: `elasticbeanstalk.amazonaws.com`. To find the full list of services that support service-linked roles, check [the docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). + AwsServiceName string `pulumi:"awsServiceName"` + // Additional string appended to the role name. Not all AWS services support custom suffixes. + CustomSuffix *string `pulumi:"customSuffix"` + // The description of the role. + Description *string `pulumi:"description"` + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a ServiceLinkedRole resource. +type ServiceLinkedRoleArgs struct { + // The AWS service to which this role is attached. You use a string similar to a URL but without the `http://` in front. For example: `elasticbeanstalk.amazonaws.com`. To find the full list of services that support service-linked roles, check [the docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). + AwsServiceName pulumi.StringInput + // Additional string appended to the role name. Not all AWS services support custom suffixes. + CustomSuffix pulumi.StringPtrInput + // The description of the role. + Description pulumi.StringPtrInput + // Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (ServiceLinkedRoleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serviceLinkedRoleArgs)(nil)).Elem() +} + +type ServiceLinkedRoleInput interface { + pulumi.Input + + ToServiceLinkedRoleOutput() ServiceLinkedRoleOutput + ToServiceLinkedRoleOutputWithContext(ctx context.Context) ServiceLinkedRoleOutput +} + +func (*ServiceLinkedRole) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLinkedRole)(nil)).Elem() +} + +func (i *ServiceLinkedRole) ToServiceLinkedRoleOutput() ServiceLinkedRoleOutput { + return i.ToServiceLinkedRoleOutputWithContext(context.Background()) +} + +func (i *ServiceLinkedRole) ToServiceLinkedRoleOutputWithContext(ctx context.Context) ServiceLinkedRoleOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLinkedRoleOutput) +} + +// ServiceLinkedRoleArrayInput is an input type that accepts ServiceLinkedRoleArray and ServiceLinkedRoleArrayOutput values. +// You can construct a concrete instance of `ServiceLinkedRoleArrayInput` via: +// +// ServiceLinkedRoleArray{ ServiceLinkedRoleArgs{...} } +type ServiceLinkedRoleArrayInput interface { + pulumi.Input + + ToServiceLinkedRoleArrayOutput() ServiceLinkedRoleArrayOutput + ToServiceLinkedRoleArrayOutputWithContext(context.Context) ServiceLinkedRoleArrayOutput +} + +type ServiceLinkedRoleArray []ServiceLinkedRoleInput + +func (ServiceLinkedRoleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceLinkedRole)(nil)).Elem() +} + +func (i ServiceLinkedRoleArray) ToServiceLinkedRoleArrayOutput() ServiceLinkedRoleArrayOutput { + return i.ToServiceLinkedRoleArrayOutputWithContext(context.Background()) +} + +func (i ServiceLinkedRoleArray) ToServiceLinkedRoleArrayOutputWithContext(ctx context.Context) ServiceLinkedRoleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLinkedRoleArrayOutput) +} + +// ServiceLinkedRoleMapInput is an input type that accepts ServiceLinkedRoleMap and ServiceLinkedRoleMapOutput values. +// You can construct a concrete instance of `ServiceLinkedRoleMapInput` via: +// +// ServiceLinkedRoleMap{ "key": ServiceLinkedRoleArgs{...} } +type ServiceLinkedRoleMapInput interface { + pulumi.Input + + ToServiceLinkedRoleMapOutput() ServiceLinkedRoleMapOutput + ToServiceLinkedRoleMapOutputWithContext(context.Context) ServiceLinkedRoleMapOutput +} + +type ServiceLinkedRoleMap map[string]ServiceLinkedRoleInput + +func (ServiceLinkedRoleMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceLinkedRole)(nil)).Elem() +} + +func (i ServiceLinkedRoleMap) ToServiceLinkedRoleMapOutput() ServiceLinkedRoleMapOutput { + return i.ToServiceLinkedRoleMapOutputWithContext(context.Background()) +} + +func (i ServiceLinkedRoleMap) ToServiceLinkedRoleMapOutputWithContext(ctx context.Context) ServiceLinkedRoleMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLinkedRoleMapOutput) +} + +type ServiceLinkedRoleOutput struct{ *pulumi.OutputState } + +func (ServiceLinkedRoleOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceLinkedRole)(nil)).Elem() +} + +func (o ServiceLinkedRoleOutput) ToServiceLinkedRoleOutput() ServiceLinkedRoleOutput { + return o +} + +func (o ServiceLinkedRoleOutput) ToServiceLinkedRoleOutputWithContext(ctx context.Context) ServiceLinkedRoleOutput { + return o +} + +// The Amazon Resource Name (ARN) specifying the role. +func (o ServiceLinkedRoleOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The AWS service to which this role is attached. You use a string similar to a URL but without the `http://` in front. For example: `elasticbeanstalk.amazonaws.com`. To find the full list of services that support service-linked roles, check [the docs](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). +func (o ServiceLinkedRoleOutput) AwsServiceName() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringOutput { return v.AwsServiceName }).(pulumi.StringOutput) +} + +// The creation date of the IAM role. +func (o ServiceLinkedRoleOutput) CreateDate() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringOutput { return v.CreateDate }).(pulumi.StringOutput) +} + +// Additional string appended to the role name. Not all AWS services support custom suffixes. +func (o ServiceLinkedRoleOutput) CustomSuffix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringPtrOutput { return v.CustomSuffix }).(pulumi.StringPtrOutput) +} + +// The description of the role. +func (o ServiceLinkedRoleOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) +} + +// The name of the role. +func (o ServiceLinkedRoleOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The path of the role. +func (o ServiceLinkedRoleOutput) Path() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringOutput { return v.Path }).(pulumi.StringOutput) +} + +// Key-value mapping of tags for the IAM role. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o ServiceLinkedRoleOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o ServiceLinkedRoleOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The stable and unique string identifying the role. +func (o ServiceLinkedRoleOutput) UniqueId() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceLinkedRole) pulumi.StringOutput { return v.UniqueId }).(pulumi.StringOutput) +} + +type ServiceLinkedRoleArrayOutput struct{ *pulumi.OutputState } + +func (ServiceLinkedRoleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceLinkedRole)(nil)).Elem() +} + +func (o ServiceLinkedRoleArrayOutput) ToServiceLinkedRoleArrayOutput() ServiceLinkedRoleArrayOutput { + return o +} + +func (o ServiceLinkedRoleArrayOutput) ToServiceLinkedRoleArrayOutputWithContext(ctx context.Context) ServiceLinkedRoleArrayOutput { + return o +} + +func (o ServiceLinkedRoleArrayOutput) Index(i pulumi.IntInput) ServiceLinkedRoleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ServiceLinkedRole { + return vs[0].([]*ServiceLinkedRole)[vs[1].(int)] + }).(ServiceLinkedRoleOutput) +} + +type ServiceLinkedRoleMapOutput struct{ *pulumi.OutputState } + +func (ServiceLinkedRoleMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceLinkedRole)(nil)).Elem() +} + +func (o ServiceLinkedRoleMapOutput) ToServiceLinkedRoleMapOutput() ServiceLinkedRoleMapOutput { + return o +} + +func (o ServiceLinkedRoleMapOutput) ToServiceLinkedRoleMapOutputWithContext(ctx context.Context) ServiceLinkedRoleMapOutput { + return o +} + +func (o ServiceLinkedRoleMapOutput) MapIndex(k pulumi.StringInput) ServiceLinkedRoleOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ServiceLinkedRole { + return vs[0].(map[string]*ServiceLinkedRole)[vs[1].(string)] + }).(ServiceLinkedRoleOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLinkedRoleInput)(nil)).Elem(), &ServiceLinkedRole{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLinkedRoleArrayInput)(nil)).Elem(), ServiceLinkedRoleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLinkedRoleMapInput)(nil)).Elem(), ServiceLinkedRoleMap{}) + pulumi.RegisterOutputType(ServiceLinkedRoleOutput{}) + pulumi.RegisterOutputType(ServiceLinkedRoleArrayOutput{}) + pulumi.RegisterOutputType(ServiceLinkedRoleMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceSpecificCredential.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceSpecificCredential.go new file mode 100644 index 000000000..bfb6651a9 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/serviceSpecificCredential.go @@ -0,0 +1,330 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM Service Specific Credential. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := iam.NewUser(ctx, "example", &iam.UserArgs{ +// Name: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewServiceSpecificCredential(ctx, "example", &iam.ServiceSpecificCredentialArgs{ +// ServiceName: pulumi.String("codecommit.amazonaws.com"), +// UserName: example.Name, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Service Specific Credentials using the `service_name:user_name:service_specific_credential_id`. For example: +// +// ```sh +// $ pulumi import aws:iam/serviceSpecificCredential:ServiceSpecificCredential default `codecommit.amazonaws.com:example:some-id` +// ``` +type ServiceSpecificCredential struct { + pulumi.CustomResourceState + + // The name of the AWS service that is to be associated with the credentials. The service you specify here is the only service that can be accessed using these credentials. + ServiceName pulumi.StringOutput `pulumi:"serviceName"` + // The generated password for the service-specific credential. + ServicePassword pulumi.StringOutput `pulumi:"servicePassword"` + // The unique identifier for the service-specific credential. + ServiceSpecificCredentialId pulumi.StringOutput `pulumi:"serviceSpecificCredentialId"` + // The generated user name for the service-specific credential. This value is generated by combining the IAM user's name combined with the ID number of the AWS account, as in `jane-at-123456789012`, for example. + ServiceUserName pulumi.StringOutput `pulumi:"serviceUserName"` + // The status to be assigned to the service-specific credential. Valid values are `Active` and `Inactive`. Default value is `Active`. + Status pulumi.StringPtrOutput `pulumi:"status"` + // The name of the IAM user that is to be associated with the credentials. The new service-specific credentials have the same permissions as the associated user except that they can be used only to access the specified service. + UserName pulumi.StringOutput `pulumi:"userName"` +} + +// NewServiceSpecificCredential registers a new resource with the given unique name, arguments, and options. +func NewServiceSpecificCredential(ctx *pulumi.Context, + name string, args *ServiceSpecificCredentialArgs, opts ...pulumi.ResourceOption) (*ServiceSpecificCredential, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ServiceName == nil { + return nil, errors.New("invalid value for required argument 'ServiceName'") + } + if args.UserName == nil { + return nil, errors.New("invalid value for required argument 'UserName'") + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "servicePassword", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource ServiceSpecificCredential + err := ctx.RegisterResource("aws:iam/serviceSpecificCredential:ServiceSpecificCredential", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetServiceSpecificCredential gets an existing ServiceSpecificCredential 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 GetServiceSpecificCredential(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServiceSpecificCredentialState, opts ...pulumi.ResourceOption) (*ServiceSpecificCredential, error) { + var resource ServiceSpecificCredential + err := ctx.ReadResource("aws:iam/serviceSpecificCredential:ServiceSpecificCredential", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ServiceSpecificCredential resources. +type serviceSpecificCredentialState struct { + // The name of the AWS service that is to be associated with the credentials. The service you specify here is the only service that can be accessed using these credentials. + ServiceName *string `pulumi:"serviceName"` + // The generated password for the service-specific credential. + ServicePassword *string `pulumi:"servicePassword"` + // The unique identifier for the service-specific credential. + ServiceSpecificCredentialId *string `pulumi:"serviceSpecificCredentialId"` + // The generated user name for the service-specific credential. This value is generated by combining the IAM user's name combined with the ID number of the AWS account, as in `jane-at-123456789012`, for example. + ServiceUserName *string `pulumi:"serviceUserName"` + // The status to be assigned to the service-specific credential. Valid values are `Active` and `Inactive`. Default value is `Active`. + Status *string `pulumi:"status"` + // The name of the IAM user that is to be associated with the credentials. The new service-specific credentials have the same permissions as the associated user except that they can be used only to access the specified service. + UserName *string `pulumi:"userName"` +} + +type ServiceSpecificCredentialState struct { + // The name of the AWS service that is to be associated with the credentials. The service you specify here is the only service that can be accessed using these credentials. + ServiceName pulumi.StringPtrInput + // The generated password for the service-specific credential. + ServicePassword pulumi.StringPtrInput + // The unique identifier for the service-specific credential. + ServiceSpecificCredentialId pulumi.StringPtrInput + // The generated user name for the service-specific credential. This value is generated by combining the IAM user's name combined with the ID number of the AWS account, as in `jane-at-123456789012`, for example. + ServiceUserName pulumi.StringPtrInput + // The status to be assigned to the service-specific credential. Valid values are `Active` and `Inactive`. Default value is `Active`. + Status pulumi.StringPtrInput + // The name of the IAM user that is to be associated with the credentials. The new service-specific credentials have the same permissions as the associated user except that they can be used only to access the specified service. + UserName pulumi.StringPtrInput +} + +func (ServiceSpecificCredentialState) ElementType() reflect.Type { + return reflect.TypeOf((*serviceSpecificCredentialState)(nil)).Elem() +} + +type serviceSpecificCredentialArgs struct { + // The name of the AWS service that is to be associated with the credentials. The service you specify here is the only service that can be accessed using these credentials. + ServiceName string `pulumi:"serviceName"` + // The status to be assigned to the service-specific credential. Valid values are `Active` and `Inactive`. Default value is `Active`. + Status *string `pulumi:"status"` + // The name of the IAM user that is to be associated with the credentials. The new service-specific credentials have the same permissions as the associated user except that they can be used only to access the specified service. + UserName string `pulumi:"userName"` +} + +// The set of arguments for constructing a ServiceSpecificCredential resource. +type ServiceSpecificCredentialArgs struct { + // The name of the AWS service that is to be associated with the credentials. The service you specify here is the only service that can be accessed using these credentials. + ServiceName pulumi.StringInput + // The status to be assigned to the service-specific credential. Valid values are `Active` and `Inactive`. Default value is `Active`. + Status pulumi.StringPtrInput + // The name of the IAM user that is to be associated with the credentials. The new service-specific credentials have the same permissions as the associated user except that they can be used only to access the specified service. + UserName pulumi.StringInput +} + +func (ServiceSpecificCredentialArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serviceSpecificCredentialArgs)(nil)).Elem() +} + +type ServiceSpecificCredentialInput interface { + pulumi.Input + + ToServiceSpecificCredentialOutput() ServiceSpecificCredentialOutput + ToServiceSpecificCredentialOutputWithContext(ctx context.Context) ServiceSpecificCredentialOutput +} + +func (*ServiceSpecificCredential) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceSpecificCredential)(nil)).Elem() +} + +func (i *ServiceSpecificCredential) ToServiceSpecificCredentialOutput() ServiceSpecificCredentialOutput { + return i.ToServiceSpecificCredentialOutputWithContext(context.Background()) +} + +func (i *ServiceSpecificCredential) ToServiceSpecificCredentialOutputWithContext(ctx context.Context) ServiceSpecificCredentialOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceSpecificCredentialOutput) +} + +// ServiceSpecificCredentialArrayInput is an input type that accepts ServiceSpecificCredentialArray and ServiceSpecificCredentialArrayOutput values. +// You can construct a concrete instance of `ServiceSpecificCredentialArrayInput` via: +// +// ServiceSpecificCredentialArray{ ServiceSpecificCredentialArgs{...} } +type ServiceSpecificCredentialArrayInput interface { + pulumi.Input + + ToServiceSpecificCredentialArrayOutput() ServiceSpecificCredentialArrayOutput + ToServiceSpecificCredentialArrayOutputWithContext(context.Context) ServiceSpecificCredentialArrayOutput +} + +type ServiceSpecificCredentialArray []ServiceSpecificCredentialInput + +func (ServiceSpecificCredentialArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceSpecificCredential)(nil)).Elem() +} + +func (i ServiceSpecificCredentialArray) ToServiceSpecificCredentialArrayOutput() ServiceSpecificCredentialArrayOutput { + return i.ToServiceSpecificCredentialArrayOutputWithContext(context.Background()) +} + +func (i ServiceSpecificCredentialArray) ToServiceSpecificCredentialArrayOutputWithContext(ctx context.Context) ServiceSpecificCredentialArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceSpecificCredentialArrayOutput) +} + +// ServiceSpecificCredentialMapInput is an input type that accepts ServiceSpecificCredentialMap and ServiceSpecificCredentialMapOutput values. +// You can construct a concrete instance of `ServiceSpecificCredentialMapInput` via: +// +// ServiceSpecificCredentialMap{ "key": ServiceSpecificCredentialArgs{...} } +type ServiceSpecificCredentialMapInput interface { + pulumi.Input + + ToServiceSpecificCredentialMapOutput() ServiceSpecificCredentialMapOutput + ToServiceSpecificCredentialMapOutputWithContext(context.Context) ServiceSpecificCredentialMapOutput +} + +type ServiceSpecificCredentialMap map[string]ServiceSpecificCredentialInput + +func (ServiceSpecificCredentialMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceSpecificCredential)(nil)).Elem() +} + +func (i ServiceSpecificCredentialMap) ToServiceSpecificCredentialMapOutput() ServiceSpecificCredentialMapOutput { + return i.ToServiceSpecificCredentialMapOutputWithContext(context.Background()) +} + +func (i ServiceSpecificCredentialMap) ToServiceSpecificCredentialMapOutputWithContext(ctx context.Context) ServiceSpecificCredentialMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceSpecificCredentialMapOutput) +} + +type ServiceSpecificCredentialOutput struct{ *pulumi.OutputState } + +func (ServiceSpecificCredentialOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceSpecificCredential)(nil)).Elem() +} + +func (o ServiceSpecificCredentialOutput) ToServiceSpecificCredentialOutput() ServiceSpecificCredentialOutput { + return o +} + +func (o ServiceSpecificCredentialOutput) ToServiceSpecificCredentialOutputWithContext(ctx context.Context) ServiceSpecificCredentialOutput { + return o +} + +// The name of the AWS service that is to be associated with the credentials. The service you specify here is the only service that can be accessed using these credentials. +func (o ServiceSpecificCredentialOutput) ServiceName() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceSpecificCredential) pulumi.StringOutput { return v.ServiceName }).(pulumi.StringOutput) +} + +// The generated password for the service-specific credential. +func (o ServiceSpecificCredentialOutput) ServicePassword() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceSpecificCredential) pulumi.StringOutput { return v.ServicePassword }).(pulumi.StringOutput) +} + +// The unique identifier for the service-specific credential. +func (o ServiceSpecificCredentialOutput) ServiceSpecificCredentialId() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceSpecificCredential) pulumi.StringOutput { return v.ServiceSpecificCredentialId }).(pulumi.StringOutput) +} + +// The generated user name for the service-specific credential. This value is generated by combining the IAM user's name combined with the ID number of the AWS account, as in `jane-at-123456789012`, for example. +func (o ServiceSpecificCredentialOutput) ServiceUserName() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceSpecificCredential) pulumi.StringOutput { return v.ServiceUserName }).(pulumi.StringOutput) +} + +// The status to be assigned to the service-specific credential. Valid values are `Active` and `Inactive`. Default value is `Active`. +func (o ServiceSpecificCredentialOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceSpecificCredential) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput) +} + +// The name of the IAM user that is to be associated with the credentials. The new service-specific credentials have the same permissions as the associated user except that they can be used only to access the specified service. +func (o ServiceSpecificCredentialOutput) UserName() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceSpecificCredential) pulumi.StringOutput { return v.UserName }).(pulumi.StringOutput) +} + +type ServiceSpecificCredentialArrayOutput struct{ *pulumi.OutputState } + +func (ServiceSpecificCredentialArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceSpecificCredential)(nil)).Elem() +} + +func (o ServiceSpecificCredentialArrayOutput) ToServiceSpecificCredentialArrayOutput() ServiceSpecificCredentialArrayOutput { + return o +} + +func (o ServiceSpecificCredentialArrayOutput) ToServiceSpecificCredentialArrayOutputWithContext(ctx context.Context) ServiceSpecificCredentialArrayOutput { + return o +} + +func (o ServiceSpecificCredentialArrayOutput) Index(i pulumi.IntInput) ServiceSpecificCredentialOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ServiceSpecificCredential { + return vs[0].([]*ServiceSpecificCredential)[vs[1].(int)] + }).(ServiceSpecificCredentialOutput) +} + +type ServiceSpecificCredentialMapOutput struct{ *pulumi.OutputState } + +func (ServiceSpecificCredentialMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceSpecificCredential)(nil)).Elem() +} + +func (o ServiceSpecificCredentialMapOutput) ToServiceSpecificCredentialMapOutput() ServiceSpecificCredentialMapOutput { + return o +} + +func (o ServiceSpecificCredentialMapOutput) ToServiceSpecificCredentialMapOutputWithContext(ctx context.Context) ServiceSpecificCredentialMapOutput { + return o +} + +func (o ServiceSpecificCredentialMapOutput) MapIndex(k pulumi.StringInput) ServiceSpecificCredentialOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ServiceSpecificCredential { + return vs[0].(map[string]*ServiceSpecificCredential)[vs[1].(string)] + }).(ServiceSpecificCredentialOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServiceSpecificCredentialInput)(nil)).Elem(), &ServiceSpecificCredential{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceSpecificCredentialArrayInput)(nil)).Elem(), ServiceSpecificCredentialArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceSpecificCredentialMapInput)(nil)).Elem(), ServiceSpecificCredentialMap{}) + pulumi.RegisterOutputType(ServiceSpecificCredentialOutput{}) + pulumi.RegisterOutputType(ServiceSpecificCredentialArrayOutput{}) + pulumi.RegisterOutputType(ServiceSpecificCredentialMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/signingCertificate.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/signingCertificate.go new file mode 100644 index 000000000..27addd8d2 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/signingCertificate.go @@ -0,0 +1,335 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM Signing Certificate resource to upload Signing Certificates. +// +// > **Note:** All arguments including the certificate body will be stored in the raw state as plain-text. +// ## Example Usage +// +// **Using certs on file:** +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "self-ca-cert.pem", +// }, nil) +// if err != nil { +// return err +// } +// _, err = iam.NewSigningCertificate(ctx, "test_cert", &iam.SigningCertificateArgs{ +// Username: pulumi.String("some_test_cert"), +// CertificateBody: pulumi.String(invokeFile.Result), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// **Example with cert in-line:** +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewSigningCertificate(ctx, "test_cert_alt", &iam.SigningCertificateArgs{ +// Username: pulumi.String("some_test_cert"), +// CertificateBody: pulumi.String("-----BEGIN CERTIFICATE-----\n[......] # cert contents\n-----END CERTIFICATE-----\n"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Signing Certificates using the `id`. For example: +// +// ```sh +// $ pulumi import aws:iam/signingCertificate:SigningCertificate certificate IDIDIDIDID:user-name +// ``` +type SigningCertificate struct { + pulumi.CustomResourceState + + // The contents of the signing certificate in PEM-encoded format. + CertificateBody pulumi.StringOutput `pulumi:"certificateBody"` + // The ID for the signing certificate. + CertificateId pulumi.StringOutput `pulumi:"certificateId"` + // The status you want to assign to the certificate. `Active` means that the certificate can be used for programmatic calls to Amazon Web Services `Inactive` means that the certificate cannot be used. + Status pulumi.StringPtrOutput `pulumi:"status"` + // The name of the user the signing certificate is for. + UserName pulumi.StringOutput `pulumi:"userName"` +} + +// NewSigningCertificate registers a new resource with the given unique name, arguments, and options. +func NewSigningCertificate(ctx *pulumi.Context, + name string, args *SigningCertificateArgs, opts ...pulumi.ResourceOption) (*SigningCertificate, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.CertificateBody == nil { + return nil, errors.New("invalid value for required argument 'CertificateBody'") + } + if args.UserName == nil { + return nil, errors.New("invalid value for required argument 'UserName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SigningCertificate + err := ctx.RegisterResource("aws:iam/signingCertificate:SigningCertificate", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSigningCertificate gets an existing SigningCertificate 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 GetSigningCertificate(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SigningCertificateState, opts ...pulumi.ResourceOption) (*SigningCertificate, error) { + var resource SigningCertificate + err := ctx.ReadResource("aws:iam/signingCertificate:SigningCertificate", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SigningCertificate resources. +type signingCertificateState struct { + // The contents of the signing certificate in PEM-encoded format. + CertificateBody *string `pulumi:"certificateBody"` + // The ID for the signing certificate. + CertificateId *string `pulumi:"certificateId"` + // The status you want to assign to the certificate. `Active` means that the certificate can be used for programmatic calls to Amazon Web Services `Inactive` means that the certificate cannot be used. + Status *string `pulumi:"status"` + // The name of the user the signing certificate is for. + UserName *string `pulumi:"userName"` +} + +type SigningCertificateState struct { + // The contents of the signing certificate in PEM-encoded format. + CertificateBody pulumi.StringPtrInput + // The ID for the signing certificate. + CertificateId pulumi.StringPtrInput + // The status you want to assign to the certificate. `Active` means that the certificate can be used for programmatic calls to Amazon Web Services `Inactive` means that the certificate cannot be used. + Status pulumi.StringPtrInput + // The name of the user the signing certificate is for. + UserName pulumi.StringPtrInput +} + +func (SigningCertificateState) ElementType() reflect.Type { + return reflect.TypeOf((*signingCertificateState)(nil)).Elem() +} + +type signingCertificateArgs struct { + // The contents of the signing certificate in PEM-encoded format. + CertificateBody string `pulumi:"certificateBody"` + // The status you want to assign to the certificate. `Active` means that the certificate can be used for programmatic calls to Amazon Web Services `Inactive` means that the certificate cannot be used. + Status *string `pulumi:"status"` + // The name of the user the signing certificate is for. + UserName string `pulumi:"userName"` +} + +// The set of arguments for constructing a SigningCertificate resource. +type SigningCertificateArgs struct { + // The contents of the signing certificate in PEM-encoded format. + CertificateBody pulumi.StringInput + // The status you want to assign to the certificate. `Active` means that the certificate can be used for programmatic calls to Amazon Web Services `Inactive` means that the certificate cannot be used. + Status pulumi.StringPtrInput + // The name of the user the signing certificate is for. + UserName pulumi.StringInput +} + +func (SigningCertificateArgs) ElementType() reflect.Type { + return reflect.TypeOf((*signingCertificateArgs)(nil)).Elem() +} + +type SigningCertificateInput interface { + pulumi.Input + + ToSigningCertificateOutput() SigningCertificateOutput + ToSigningCertificateOutputWithContext(ctx context.Context) SigningCertificateOutput +} + +func (*SigningCertificate) ElementType() reflect.Type { + return reflect.TypeOf((**SigningCertificate)(nil)).Elem() +} + +func (i *SigningCertificate) ToSigningCertificateOutput() SigningCertificateOutput { + return i.ToSigningCertificateOutputWithContext(context.Background()) +} + +func (i *SigningCertificate) ToSigningCertificateOutputWithContext(ctx context.Context) SigningCertificateOutput { + return pulumi.ToOutputWithContext(ctx, i).(SigningCertificateOutput) +} + +// SigningCertificateArrayInput is an input type that accepts SigningCertificateArray and SigningCertificateArrayOutput values. +// You can construct a concrete instance of `SigningCertificateArrayInput` via: +// +// SigningCertificateArray{ SigningCertificateArgs{...} } +type SigningCertificateArrayInput interface { + pulumi.Input + + ToSigningCertificateArrayOutput() SigningCertificateArrayOutput + ToSigningCertificateArrayOutputWithContext(context.Context) SigningCertificateArrayOutput +} + +type SigningCertificateArray []SigningCertificateInput + +func (SigningCertificateArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SigningCertificate)(nil)).Elem() +} + +func (i SigningCertificateArray) ToSigningCertificateArrayOutput() SigningCertificateArrayOutput { + return i.ToSigningCertificateArrayOutputWithContext(context.Background()) +} + +func (i SigningCertificateArray) ToSigningCertificateArrayOutputWithContext(ctx context.Context) SigningCertificateArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SigningCertificateArrayOutput) +} + +// SigningCertificateMapInput is an input type that accepts SigningCertificateMap and SigningCertificateMapOutput values. +// You can construct a concrete instance of `SigningCertificateMapInput` via: +// +// SigningCertificateMap{ "key": SigningCertificateArgs{...} } +type SigningCertificateMapInput interface { + pulumi.Input + + ToSigningCertificateMapOutput() SigningCertificateMapOutput + ToSigningCertificateMapOutputWithContext(context.Context) SigningCertificateMapOutput +} + +type SigningCertificateMap map[string]SigningCertificateInput + +func (SigningCertificateMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SigningCertificate)(nil)).Elem() +} + +func (i SigningCertificateMap) ToSigningCertificateMapOutput() SigningCertificateMapOutput { + return i.ToSigningCertificateMapOutputWithContext(context.Background()) +} + +func (i SigningCertificateMap) ToSigningCertificateMapOutputWithContext(ctx context.Context) SigningCertificateMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SigningCertificateMapOutput) +} + +type SigningCertificateOutput struct{ *pulumi.OutputState } + +func (SigningCertificateOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SigningCertificate)(nil)).Elem() +} + +func (o SigningCertificateOutput) ToSigningCertificateOutput() SigningCertificateOutput { + return o +} + +func (o SigningCertificateOutput) ToSigningCertificateOutputWithContext(ctx context.Context) SigningCertificateOutput { + return o +} + +// The contents of the signing certificate in PEM-encoded format. +func (o SigningCertificateOutput) CertificateBody() pulumi.StringOutput { + return o.ApplyT(func(v *SigningCertificate) pulumi.StringOutput { return v.CertificateBody }).(pulumi.StringOutput) +} + +// The ID for the signing certificate. +func (o SigningCertificateOutput) CertificateId() pulumi.StringOutput { + return o.ApplyT(func(v *SigningCertificate) pulumi.StringOutput { return v.CertificateId }).(pulumi.StringOutput) +} + +// The status you want to assign to the certificate. `Active` means that the certificate can be used for programmatic calls to Amazon Web Services `Inactive` means that the certificate cannot be used. +func (o SigningCertificateOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SigningCertificate) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput) +} + +// The name of the user the signing certificate is for. +func (o SigningCertificateOutput) UserName() pulumi.StringOutput { + return o.ApplyT(func(v *SigningCertificate) pulumi.StringOutput { return v.UserName }).(pulumi.StringOutput) +} + +type SigningCertificateArrayOutput struct{ *pulumi.OutputState } + +func (SigningCertificateArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SigningCertificate)(nil)).Elem() +} + +func (o SigningCertificateArrayOutput) ToSigningCertificateArrayOutput() SigningCertificateArrayOutput { + return o +} + +func (o SigningCertificateArrayOutput) ToSigningCertificateArrayOutputWithContext(ctx context.Context) SigningCertificateArrayOutput { + return o +} + +func (o SigningCertificateArrayOutput) Index(i pulumi.IntInput) SigningCertificateOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SigningCertificate { + return vs[0].([]*SigningCertificate)[vs[1].(int)] + }).(SigningCertificateOutput) +} + +type SigningCertificateMapOutput struct{ *pulumi.OutputState } + +func (SigningCertificateMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SigningCertificate)(nil)).Elem() +} + +func (o SigningCertificateMapOutput) ToSigningCertificateMapOutput() SigningCertificateMapOutput { + return o +} + +func (o SigningCertificateMapOutput) ToSigningCertificateMapOutputWithContext(ctx context.Context) SigningCertificateMapOutput { + return o +} + +func (o SigningCertificateMapOutput) MapIndex(k pulumi.StringInput) SigningCertificateOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SigningCertificate { + return vs[0].(map[string]*SigningCertificate)[vs[1].(string)] + }).(SigningCertificateOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SigningCertificateInput)(nil)).Elem(), &SigningCertificate{}) + pulumi.RegisterInputType(reflect.TypeOf((*SigningCertificateArrayInput)(nil)).Elem(), SigningCertificateArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SigningCertificateMapInput)(nil)).Elem(), SigningCertificateMap{}) + pulumi.RegisterOutputType(SigningCertificateOutput{}) + pulumi.RegisterOutputType(SigningCertificateArrayOutput{}) + pulumi.RegisterOutputType(SigningCertificateMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/sshKey.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/sshKey.go new file mode 100644 index 000000000..588fa1400 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/sshKey.go @@ -0,0 +1,335 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Uploads an SSH public key and associates it with the specified IAM user. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// user, err := iam.NewUser(ctx, "user", &iam.UserArgs{ +// Name: pulumi.String("test-user"), +// Path: pulumi.String("/"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewSshKey(ctx, "user", &iam.SshKeyArgs{ +// Username: user.Name, +// Encoding: pulumi.String("SSH"), +// PublicKey: pulumi.String("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD3F6tyPEFEzV0LX3X8BsXdMsQz1x2cEikKDEY0aIj41qgxMCP/iteneqXSIFZBp5vizPvaoIR3Um9xK7PGoW8giupGn+EPuxIA4cDM4vzOqOkiMPhz5XK0whEjkVzTo4+S0puvDZuwIsdiW9mxhJc7tgBNL0cYlWSYVkz4G/fslNfRPW5mYAM49f4fhtxPb5ok4Q2Lg9dPKVHO/Bgeu5woMc7RY0p1ej6D4CKFE6lymSDJpW0YHX/wqE9+cfEauh7xZcG0q9t2ta6F6fmX0agvpFyZo8aFbXeUBr7osSCJNgvavWbM/06niWrOvYX2xwWdhXmXSrbX8ZbabVohBK41 mytest@mydomain.com"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import SSH public keys using the `username`, `ssh_public_key_id`, and `encoding`. For example: +// +// ```sh +// $ pulumi import aws:iam/sshKey:SshKey user user:APKAJNCNNJICVN7CFKCA:SSH +// ``` +type SshKey struct { + pulumi.CustomResourceState + + // Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. + Encoding pulumi.StringOutput `pulumi:"encoding"` + // The MD5 message digest of the SSH public key. + Fingerprint pulumi.StringOutput `pulumi:"fingerprint"` + // The SSH public key. The public key must be encoded in ssh-rsa format or PEM format. + PublicKey pulumi.StringOutput `pulumi:"publicKey"` + // The unique identifier for the SSH public key. + SshPublicKeyId pulumi.StringOutput `pulumi:"sshPublicKeyId"` + // The status to assign to the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. Default is `active`. + Status pulumi.StringOutput `pulumi:"status"` + // The name of the IAM user to associate the SSH public key with. + Username pulumi.StringOutput `pulumi:"username"` +} + +// NewSshKey registers a new resource with the given unique name, arguments, and options. +func NewSshKey(ctx *pulumi.Context, + name string, args *SshKeyArgs, opts ...pulumi.ResourceOption) (*SshKey, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Encoding == nil { + return nil, errors.New("invalid value for required argument 'Encoding'") + } + if args.PublicKey == nil { + return nil, errors.New("invalid value for required argument 'PublicKey'") + } + if args.Username == nil { + return nil, errors.New("invalid value for required argument 'Username'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource SshKey + err := ctx.RegisterResource("aws:iam/sshKey:SshKey", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSshKey gets an existing SshKey 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 GetSshKey(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SshKeyState, opts ...pulumi.ResourceOption) (*SshKey, error) { + var resource SshKey + err := ctx.ReadResource("aws:iam/sshKey:SshKey", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering SshKey resources. +type sshKeyState struct { + // Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. + Encoding *string `pulumi:"encoding"` + // The MD5 message digest of the SSH public key. + Fingerprint *string `pulumi:"fingerprint"` + // The SSH public key. The public key must be encoded in ssh-rsa format or PEM format. + PublicKey *string `pulumi:"publicKey"` + // The unique identifier for the SSH public key. + SshPublicKeyId *string `pulumi:"sshPublicKeyId"` + // The status to assign to the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. Default is `active`. + Status *string `pulumi:"status"` + // The name of the IAM user to associate the SSH public key with. + Username *string `pulumi:"username"` +} + +type SshKeyState struct { + // Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. + Encoding pulumi.StringPtrInput + // The MD5 message digest of the SSH public key. + Fingerprint pulumi.StringPtrInput + // The SSH public key. The public key must be encoded in ssh-rsa format or PEM format. + PublicKey pulumi.StringPtrInput + // The unique identifier for the SSH public key. + SshPublicKeyId pulumi.StringPtrInput + // The status to assign to the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. Default is `active`. + Status pulumi.StringPtrInput + // The name of the IAM user to associate the SSH public key with. + Username pulumi.StringPtrInput +} + +func (SshKeyState) ElementType() reflect.Type { + return reflect.TypeOf((*sshKeyState)(nil)).Elem() +} + +type sshKeyArgs struct { + // Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. + Encoding string `pulumi:"encoding"` + // The SSH public key. The public key must be encoded in ssh-rsa format or PEM format. + PublicKey string `pulumi:"publicKey"` + // The status to assign to the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. Default is `active`. + Status *string `pulumi:"status"` + // The name of the IAM user to associate the SSH public key with. + Username string `pulumi:"username"` +} + +// The set of arguments for constructing a SshKey resource. +type SshKeyArgs struct { + // Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. + Encoding pulumi.StringInput + // The SSH public key. The public key must be encoded in ssh-rsa format or PEM format. + PublicKey pulumi.StringInput + // The status to assign to the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. Default is `active`. + Status pulumi.StringPtrInput + // The name of the IAM user to associate the SSH public key with. + Username pulumi.StringInput +} + +func (SshKeyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*sshKeyArgs)(nil)).Elem() +} + +type SshKeyInput interface { + pulumi.Input + + ToSshKeyOutput() SshKeyOutput + ToSshKeyOutputWithContext(ctx context.Context) SshKeyOutput +} + +func (*SshKey) ElementType() reflect.Type { + return reflect.TypeOf((**SshKey)(nil)).Elem() +} + +func (i *SshKey) ToSshKeyOutput() SshKeyOutput { + return i.ToSshKeyOutputWithContext(context.Background()) +} + +func (i *SshKey) ToSshKeyOutputWithContext(ctx context.Context) SshKeyOutput { + return pulumi.ToOutputWithContext(ctx, i).(SshKeyOutput) +} + +// SshKeyArrayInput is an input type that accepts SshKeyArray and SshKeyArrayOutput values. +// You can construct a concrete instance of `SshKeyArrayInput` via: +// +// SshKeyArray{ SshKeyArgs{...} } +type SshKeyArrayInput interface { + pulumi.Input + + ToSshKeyArrayOutput() SshKeyArrayOutput + ToSshKeyArrayOutputWithContext(context.Context) SshKeyArrayOutput +} + +type SshKeyArray []SshKeyInput + +func (SshKeyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SshKey)(nil)).Elem() +} + +func (i SshKeyArray) ToSshKeyArrayOutput() SshKeyArrayOutput { + return i.ToSshKeyArrayOutputWithContext(context.Background()) +} + +func (i SshKeyArray) ToSshKeyArrayOutputWithContext(ctx context.Context) SshKeyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SshKeyArrayOutput) +} + +// SshKeyMapInput is an input type that accepts SshKeyMap and SshKeyMapOutput values. +// You can construct a concrete instance of `SshKeyMapInput` via: +// +// SshKeyMap{ "key": SshKeyArgs{...} } +type SshKeyMapInput interface { + pulumi.Input + + ToSshKeyMapOutput() SshKeyMapOutput + ToSshKeyMapOutputWithContext(context.Context) SshKeyMapOutput +} + +type SshKeyMap map[string]SshKeyInput + +func (SshKeyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SshKey)(nil)).Elem() +} + +func (i SshKeyMap) ToSshKeyMapOutput() SshKeyMapOutput { + return i.ToSshKeyMapOutputWithContext(context.Background()) +} + +func (i SshKeyMap) ToSshKeyMapOutputWithContext(ctx context.Context) SshKeyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SshKeyMapOutput) +} + +type SshKeyOutput struct{ *pulumi.OutputState } + +func (SshKeyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SshKey)(nil)).Elem() +} + +func (o SshKeyOutput) ToSshKeyOutput() SshKeyOutput { + return o +} + +func (o SshKeyOutput) ToSshKeyOutputWithContext(ctx context.Context) SshKeyOutput { + return o +} + +// Specifies the public key encoding format to use in the response. To retrieve the public key in ssh-rsa format, use `SSH`. To retrieve the public key in PEM format, use `PEM`. +func (o SshKeyOutput) Encoding() pulumi.StringOutput { + return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.Encoding }).(pulumi.StringOutput) +} + +// The MD5 message digest of the SSH public key. +func (o SshKeyOutput) Fingerprint() pulumi.StringOutput { + return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.Fingerprint }).(pulumi.StringOutput) +} + +// The SSH public key. The public key must be encoded in ssh-rsa format or PEM format. +func (o SshKeyOutput) PublicKey() pulumi.StringOutput { + return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.PublicKey }).(pulumi.StringOutput) +} + +// The unique identifier for the SSH public key. +func (o SshKeyOutput) SshPublicKeyId() pulumi.StringOutput { + return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.SshPublicKeyId }).(pulumi.StringOutput) +} + +// The status to assign to the SSH public key. Active means the key can be used for authentication with an AWS CodeCommit repository. Inactive means the key cannot be used. Default is `active`. +func (o SshKeyOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput) +} + +// The name of the IAM user to associate the SSH public key with. +func (o SshKeyOutput) Username() pulumi.StringOutput { + return o.ApplyT(func(v *SshKey) pulumi.StringOutput { return v.Username }).(pulumi.StringOutput) +} + +type SshKeyArrayOutput struct{ *pulumi.OutputState } + +func (SshKeyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*SshKey)(nil)).Elem() +} + +func (o SshKeyArrayOutput) ToSshKeyArrayOutput() SshKeyArrayOutput { + return o +} + +func (o SshKeyArrayOutput) ToSshKeyArrayOutputWithContext(ctx context.Context) SshKeyArrayOutput { + return o +} + +func (o SshKeyArrayOutput) Index(i pulumi.IntInput) SshKeyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *SshKey { + return vs[0].([]*SshKey)[vs[1].(int)] + }).(SshKeyOutput) +} + +type SshKeyMapOutput struct{ *pulumi.OutputState } + +func (SshKeyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*SshKey)(nil)).Elem() +} + +func (o SshKeyMapOutput) ToSshKeyMapOutput() SshKeyMapOutput { + return o +} + +func (o SshKeyMapOutput) ToSshKeyMapOutputWithContext(ctx context.Context) SshKeyMapOutput { + return o +} + +func (o SshKeyMapOutput) MapIndex(k pulumi.StringInput) SshKeyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *SshKey { + return vs[0].(map[string]*SshKey)[vs[1].(string)] + }).(SshKeyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SshKeyInput)(nil)).Elem(), &SshKey{}) + pulumi.RegisterInputType(reflect.TypeOf((*SshKeyArrayInput)(nil)).Elem(), SshKeyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SshKeyMapInput)(nil)).Elem(), SshKeyMap{}) + pulumi.RegisterOutputType(SshKeyOutput{}) + pulumi.RegisterOutputType(SshKeyArrayOutput{}) + pulumi.RegisterOutputType(SshKeyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/user.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/user.go new file mode 100644 index 000000000..c7f0157c9 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/user.go @@ -0,0 +1,398 @@ +// 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 iam + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM user. +// +// > *NOTE:* If policies are attached to the user via the `iam.PolicyAttachment` resource and you are modifying the user `name` or `path`, the `forceDestroy` argument must be set to `true` and applied before attempting the operation otherwise you will encounter a `DeleteConflict` error. The `iam.UserPolicyAttachment` resource (recommended) does not have this requirement. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// lb, err := iam.NewUser(ctx, "lb", &iam.UserArgs{ +// Name: pulumi.String("loadbalancer"), +// Path: pulumi.String("/system/"), +// Tags: pulumi.StringMap{ +// "tag-key": pulumi.String("tag-value"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewAccessKey(ctx, "lb", &iam.AccessKeyArgs{ +// User: lb.Name, +// }) +// if err != nil { +// return err +// } +// lbRo, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Actions: []string{ +// "ec2:Describe*", +// }, +// Resources: []string{ +// "*", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// _, err = iam.NewUserPolicy(ctx, "lb_ro", &iam.UserPolicyArgs{ +// Name: pulumi.String("test"), +// User: lb.Name, +// Policy: pulumi.String(lbRo.Json), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Users using the `name`. For example: +// +// ```sh +// $ pulumi import aws:iam/user:User lb loadbalancer +// ``` +type User struct { + pulumi.CustomResourceState + + // The ARN assigned by AWS for this user. + Arn pulumi.StringOutput `pulumi:"arn"` + // When destroying this user, destroy even if it + // has non-provider-managed IAM access keys, login profile or MFA devices. Without `forceDestroy` + // a user with non-provider-managed access keys and login profile will fail to be destroyed. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // The user's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. User names are not distinguished by case. For example, you cannot create users named both "TESTUSER" and "testuser". + Name pulumi.StringOutput `pulumi:"name"` + // Path in which to create the user. + Path pulumi.StringPtrOutput `pulumi:"path"` + // The ARN of the policy that is used to set the permissions boundary for the user. + PermissionsBoundary pulumi.StringPtrOutput `pulumi:"permissionsBoundary"` + // Key-value mapping of tags for the IAM user. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The [unique ID][1] assigned by AWS. + UniqueId pulumi.StringOutput `pulumi:"uniqueId"` +} + +// NewUser registers a new resource with the given unique name, arguments, and options. +func NewUser(ctx *pulumi.Context, + name string, args *UserArgs, opts ...pulumi.ResourceOption) (*User, error) { + if args == nil { + args = &UserArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource User + err := ctx.RegisterResource("aws:iam/user:User", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetUser gets an existing User 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 GetUser(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *UserState, opts ...pulumi.ResourceOption) (*User, error) { + var resource User + err := ctx.ReadResource("aws:iam/user:User", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering User resources. +type userState struct { + // The ARN assigned by AWS for this user. + Arn *string `pulumi:"arn"` + // When destroying this user, destroy even if it + // has non-provider-managed IAM access keys, login profile or MFA devices. Without `forceDestroy` + // a user with non-provider-managed access keys and login profile will fail to be destroyed. + ForceDestroy *bool `pulumi:"forceDestroy"` + // The user's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. User names are not distinguished by case. For example, you cannot create users named both "TESTUSER" and "testuser". + Name *string `pulumi:"name"` + // Path in which to create the user. + Path *string `pulumi:"path"` + // The ARN of the policy that is used to set the permissions boundary for the user. + PermissionsBoundary *string `pulumi:"permissionsBoundary"` + // Key-value mapping of tags for the IAM user. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The [unique ID][1] assigned by AWS. + UniqueId *string `pulumi:"uniqueId"` +} + +type UserState struct { + // The ARN assigned by AWS for this user. + Arn pulumi.StringPtrInput + // When destroying this user, destroy even if it + // has non-provider-managed IAM access keys, login profile or MFA devices. Without `forceDestroy` + // a user with non-provider-managed access keys and login profile will fail to be destroyed. + ForceDestroy pulumi.BoolPtrInput + // The user's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. User names are not distinguished by case. For example, you cannot create users named both "TESTUSER" and "testuser". + Name pulumi.StringPtrInput + // Path in which to create the user. + Path pulumi.StringPtrInput + // The ARN of the policy that is used to set the permissions boundary for the user. + PermissionsBoundary pulumi.StringPtrInput + // Key-value mapping of tags for the IAM user. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The [unique ID][1] assigned by AWS. + UniqueId pulumi.StringPtrInput +} + +func (UserState) ElementType() reflect.Type { + return reflect.TypeOf((*userState)(nil)).Elem() +} + +type userArgs struct { + // When destroying this user, destroy even if it + // has non-provider-managed IAM access keys, login profile or MFA devices. Without `forceDestroy` + // a user with non-provider-managed access keys and login profile will fail to be destroyed. + ForceDestroy *bool `pulumi:"forceDestroy"` + // The user's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. User names are not distinguished by case. For example, you cannot create users named both "TESTUSER" and "testuser". + Name *string `pulumi:"name"` + // Path in which to create the user. + Path *string `pulumi:"path"` + // The ARN of the policy that is used to set the permissions boundary for the user. + PermissionsBoundary *string `pulumi:"permissionsBoundary"` + // Key-value mapping of tags for the IAM user. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// The set of arguments for constructing a User resource. +type UserArgs struct { + // When destroying this user, destroy even if it + // has non-provider-managed IAM access keys, login profile or MFA devices. Without `forceDestroy` + // a user with non-provider-managed access keys and login profile will fail to be destroyed. + ForceDestroy pulumi.BoolPtrInput + // The user's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. User names are not distinguished by case. For example, you cannot create users named both "TESTUSER" and "testuser". + Name pulumi.StringPtrInput + // Path in which to create the user. + Path pulumi.StringPtrInput + // The ARN of the policy that is used to set the permissions boundary for the user. + PermissionsBoundary pulumi.StringPtrInput + // Key-value mapping of tags for the IAM user. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput +} + +func (UserArgs) ElementType() reflect.Type { + return reflect.TypeOf((*userArgs)(nil)).Elem() +} + +type UserInput interface { + pulumi.Input + + ToUserOutput() UserOutput + ToUserOutputWithContext(ctx context.Context) UserOutput +} + +func (*User) ElementType() reflect.Type { + return reflect.TypeOf((**User)(nil)).Elem() +} + +func (i *User) ToUserOutput() UserOutput { + return i.ToUserOutputWithContext(context.Background()) +} + +func (i *User) ToUserOutputWithContext(ctx context.Context) UserOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserOutput) +} + +// UserArrayInput is an input type that accepts UserArray and UserArrayOutput values. +// You can construct a concrete instance of `UserArrayInput` via: +// +// UserArray{ UserArgs{...} } +type UserArrayInput interface { + pulumi.Input + + ToUserArrayOutput() UserArrayOutput + ToUserArrayOutputWithContext(context.Context) UserArrayOutput +} + +type UserArray []UserInput + +func (UserArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*User)(nil)).Elem() +} + +func (i UserArray) ToUserArrayOutput() UserArrayOutput { + return i.ToUserArrayOutputWithContext(context.Background()) +} + +func (i UserArray) ToUserArrayOutputWithContext(ctx context.Context) UserArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserArrayOutput) +} + +// UserMapInput is an input type that accepts UserMap and UserMapOutput values. +// You can construct a concrete instance of `UserMapInput` via: +// +// UserMap{ "key": UserArgs{...} } +type UserMapInput interface { + pulumi.Input + + ToUserMapOutput() UserMapOutput + ToUserMapOutputWithContext(context.Context) UserMapOutput +} + +type UserMap map[string]UserInput + +func (UserMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*User)(nil)).Elem() +} + +func (i UserMap) ToUserMapOutput() UserMapOutput { + return i.ToUserMapOutputWithContext(context.Background()) +} + +func (i UserMap) ToUserMapOutputWithContext(ctx context.Context) UserMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserMapOutput) +} + +type UserOutput struct{ *pulumi.OutputState } + +func (UserOutput) ElementType() reflect.Type { + return reflect.TypeOf((**User)(nil)).Elem() +} + +func (o UserOutput) ToUserOutput() UserOutput { + return o +} + +func (o UserOutput) ToUserOutputWithContext(ctx context.Context) UserOutput { + return o +} + +// The ARN assigned by AWS for this user. +func (o UserOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *User) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// When destroying this user, destroy even if it +// has non-provider-managed IAM access keys, login profile or MFA devices. Without `forceDestroy` +// a user with non-provider-managed access keys and login profile will fail to be destroyed. +func (o UserOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *User) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// The user's name. The name must consist of upper and lowercase alphanumeric characters with no spaces. You can also include any of the following characters: `=,.@-_.`. User names are not distinguished by case. For example, you cannot create users named both "TESTUSER" and "testuser". +func (o UserOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *User) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Path in which to create the user. +func (o UserOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *User) pulumi.StringPtrOutput { return v.Path }).(pulumi.StringPtrOutput) +} + +// The ARN of the policy that is used to set the permissions boundary for the user. +func (o UserOutput) PermissionsBoundary() pulumi.StringPtrOutput { + return o.ApplyT(func(v *User) pulumi.StringPtrOutput { return v.PermissionsBoundary }).(pulumi.StringPtrOutput) +} + +// Key-value mapping of tags for the IAM user. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o UserOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *User) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o UserOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *User) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The [unique ID][1] assigned by AWS. +func (o UserOutput) UniqueId() pulumi.StringOutput { + return o.ApplyT(func(v *User) pulumi.StringOutput { return v.UniqueId }).(pulumi.StringOutput) +} + +type UserArrayOutput struct{ *pulumi.OutputState } + +func (UserArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*User)(nil)).Elem() +} + +func (o UserArrayOutput) ToUserArrayOutput() UserArrayOutput { + return o +} + +func (o UserArrayOutput) ToUserArrayOutputWithContext(ctx context.Context) UserArrayOutput { + return o +} + +func (o UserArrayOutput) Index(i pulumi.IntInput) UserOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *User { + return vs[0].([]*User)[vs[1].(int)] + }).(UserOutput) +} + +type UserMapOutput struct{ *pulumi.OutputState } + +func (UserMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*User)(nil)).Elem() +} + +func (o UserMapOutput) ToUserMapOutput() UserMapOutput { + return o +} + +func (o UserMapOutput) ToUserMapOutputWithContext(ctx context.Context) UserMapOutput { + return o +} + +func (o UserMapOutput) MapIndex(k pulumi.StringInput) UserOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *User { + return vs[0].(map[string]*User)[vs[1].(string)] + }).(UserOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*UserInput)(nil)).Elem(), &User{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserArrayInput)(nil)).Elem(), UserArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserMapInput)(nil)).Elem(), UserMap{}) + pulumi.RegisterOutputType(UserOutput{}) + pulumi.RegisterOutputType(UserArrayOutput{}) + pulumi.RegisterOutputType(UserMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userGroupMembership.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userGroupMembership.go new file mode 100644 index 000000000..1ae139b75 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userGroupMembership.go @@ -0,0 +1,313 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource for adding an IAM User to IAM Groups. This +// resource can be used multiple times with the same user for non-overlapping +// groups. +// +// To exclusively manage the users in a group, see the +// `iam.GroupMembership` resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// user1, err := iam.NewUser(ctx, "user1", &iam.UserArgs{ +// Name: pulumi.String("user1"), +// }) +// if err != nil { +// return err +// } +// group1, err := iam.NewGroup(ctx, "group1", &iam.GroupArgs{ +// Name: pulumi.String("group1"), +// }) +// if err != nil { +// return err +// } +// group2, err := iam.NewGroup(ctx, "group2", &iam.GroupArgs{ +// Name: pulumi.String("group2"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewUserGroupMembership(ctx, "example1", &iam.UserGroupMembershipArgs{ +// User: user1.Name, +// Groups: pulumi.StringArray{ +// group1.Name, +// group2.Name, +// }, +// }) +// if err != nil { +// return err +// } +// group3, err := iam.NewGroup(ctx, "group3", &iam.GroupArgs{ +// Name: pulumi.String("group3"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewUserGroupMembership(ctx, "example2", &iam.UserGroupMembershipArgs{ +// User: user1.Name, +// Groups: pulumi.StringArray{ +// group3.Name, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM user group membership using the user name and group names separated by `/`. For example: +// +// ```sh +// $ pulumi import aws:iam/userGroupMembership:UserGroupMembership example1 user1/group1/group2 +// ``` +type UserGroupMembership struct { + pulumi.CustomResourceState + + // A list of IAM Groups to add the user to + Groups pulumi.StringArrayOutput `pulumi:"groups"` + // The name of the IAM User to add to groups + User pulumi.StringOutput `pulumi:"user"` +} + +// NewUserGroupMembership registers a new resource with the given unique name, arguments, and options. +func NewUserGroupMembership(ctx *pulumi.Context, + name string, args *UserGroupMembershipArgs, opts ...pulumi.ResourceOption) (*UserGroupMembership, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Groups == nil { + return nil, errors.New("invalid value for required argument 'Groups'") + } + if args.User == nil { + return nil, errors.New("invalid value for required argument 'User'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource UserGroupMembership + err := ctx.RegisterResource("aws:iam/userGroupMembership:UserGroupMembership", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetUserGroupMembership gets an existing UserGroupMembership 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 GetUserGroupMembership(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *UserGroupMembershipState, opts ...pulumi.ResourceOption) (*UserGroupMembership, error) { + var resource UserGroupMembership + err := ctx.ReadResource("aws:iam/userGroupMembership:UserGroupMembership", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering UserGroupMembership resources. +type userGroupMembershipState struct { + // A list of IAM Groups to add the user to + Groups []string `pulumi:"groups"` + // The name of the IAM User to add to groups + User *string `pulumi:"user"` +} + +type UserGroupMembershipState struct { + // A list of IAM Groups to add the user to + Groups pulumi.StringArrayInput + // The name of the IAM User to add to groups + User pulumi.StringPtrInput +} + +func (UserGroupMembershipState) ElementType() reflect.Type { + return reflect.TypeOf((*userGroupMembershipState)(nil)).Elem() +} + +type userGroupMembershipArgs struct { + // A list of IAM Groups to add the user to + Groups []string `pulumi:"groups"` + // The name of the IAM User to add to groups + User string `pulumi:"user"` +} + +// The set of arguments for constructing a UserGroupMembership resource. +type UserGroupMembershipArgs struct { + // A list of IAM Groups to add the user to + Groups pulumi.StringArrayInput + // The name of the IAM User to add to groups + User pulumi.StringInput +} + +func (UserGroupMembershipArgs) ElementType() reflect.Type { + return reflect.TypeOf((*userGroupMembershipArgs)(nil)).Elem() +} + +type UserGroupMembershipInput interface { + pulumi.Input + + ToUserGroupMembershipOutput() UserGroupMembershipOutput + ToUserGroupMembershipOutputWithContext(ctx context.Context) UserGroupMembershipOutput +} + +func (*UserGroupMembership) ElementType() reflect.Type { + return reflect.TypeOf((**UserGroupMembership)(nil)).Elem() +} + +func (i *UserGroupMembership) ToUserGroupMembershipOutput() UserGroupMembershipOutput { + return i.ToUserGroupMembershipOutputWithContext(context.Background()) +} + +func (i *UserGroupMembership) ToUserGroupMembershipOutputWithContext(ctx context.Context) UserGroupMembershipOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserGroupMembershipOutput) +} + +// UserGroupMembershipArrayInput is an input type that accepts UserGroupMembershipArray and UserGroupMembershipArrayOutput values. +// You can construct a concrete instance of `UserGroupMembershipArrayInput` via: +// +// UserGroupMembershipArray{ UserGroupMembershipArgs{...} } +type UserGroupMembershipArrayInput interface { + pulumi.Input + + ToUserGroupMembershipArrayOutput() UserGroupMembershipArrayOutput + ToUserGroupMembershipArrayOutputWithContext(context.Context) UserGroupMembershipArrayOutput +} + +type UserGroupMembershipArray []UserGroupMembershipInput + +func (UserGroupMembershipArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserGroupMembership)(nil)).Elem() +} + +func (i UserGroupMembershipArray) ToUserGroupMembershipArrayOutput() UserGroupMembershipArrayOutput { + return i.ToUserGroupMembershipArrayOutputWithContext(context.Background()) +} + +func (i UserGroupMembershipArray) ToUserGroupMembershipArrayOutputWithContext(ctx context.Context) UserGroupMembershipArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserGroupMembershipArrayOutput) +} + +// UserGroupMembershipMapInput is an input type that accepts UserGroupMembershipMap and UserGroupMembershipMapOutput values. +// You can construct a concrete instance of `UserGroupMembershipMapInput` via: +// +// UserGroupMembershipMap{ "key": UserGroupMembershipArgs{...} } +type UserGroupMembershipMapInput interface { + pulumi.Input + + ToUserGroupMembershipMapOutput() UserGroupMembershipMapOutput + ToUserGroupMembershipMapOutputWithContext(context.Context) UserGroupMembershipMapOutput +} + +type UserGroupMembershipMap map[string]UserGroupMembershipInput + +func (UserGroupMembershipMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserGroupMembership)(nil)).Elem() +} + +func (i UserGroupMembershipMap) ToUserGroupMembershipMapOutput() UserGroupMembershipMapOutput { + return i.ToUserGroupMembershipMapOutputWithContext(context.Background()) +} + +func (i UserGroupMembershipMap) ToUserGroupMembershipMapOutputWithContext(ctx context.Context) UserGroupMembershipMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserGroupMembershipMapOutput) +} + +type UserGroupMembershipOutput struct{ *pulumi.OutputState } + +func (UserGroupMembershipOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UserGroupMembership)(nil)).Elem() +} + +func (o UserGroupMembershipOutput) ToUserGroupMembershipOutput() UserGroupMembershipOutput { + return o +} + +func (o UserGroupMembershipOutput) ToUserGroupMembershipOutputWithContext(ctx context.Context) UserGroupMembershipOutput { + return o +} + +// A list of IAM Groups to add the user to +func (o UserGroupMembershipOutput) Groups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *UserGroupMembership) pulumi.StringArrayOutput { return v.Groups }).(pulumi.StringArrayOutput) +} + +// The name of the IAM User to add to groups +func (o UserGroupMembershipOutput) User() pulumi.StringOutput { + return o.ApplyT(func(v *UserGroupMembership) pulumi.StringOutput { return v.User }).(pulumi.StringOutput) +} + +type UserGroupMembershipArrayOutput struct{ *pulumi.OutputState } + +func (UserGroupMembershipArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserGroupMembership)(nil)).Elem() +} + +func (o UserGroupMembershipArrayOutput) ToUserGroupMembershipArrayOutput() UserGroupMembershipArrayOutput { + return o +} + +func (o UserGroupMembershipArrayOutput) ToUserGroupMembershipArrayOutputWithContext(ctx context.Context) UserGroupMembershipArrayOutput { + return o +} + +func (o UserGroupMembershipArrayOutput) Index(i pulumi.IntInput) UserGroupMembershipOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *UserGroupMembership { + return vs[0].([]*UserGroupMembership)[vs[1].(int)] + }).(UserGroupMembershipOutput) +} + +type UserGroupMembershipMapOutput struct{ *pulumi.OutputState } + +func (UserGroupMembershipMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserGroupMembership)(nil)).Elem() +} + +func (o UserGroupMembershipMapOutput) ToUserGroupMembershipMapOutput() UserGroupMembershipMapOutput { + return o +} + +func (o UserGroupMembershipMapOutput) ToUserGroupMembershipMapOutputWithContext(ctx context.Context) UserGroupMembershipMapOutput { + return o +} + +func (o UserGroupMembershipMapOutput) MapIndex(k pulumi.StringInput) UserGroupMembershipOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *UserGroupMembership { + return vs[0].(map[string]*UserGroupMembership)[vs[1].(string)] + }).(UserGroupMembershipOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*UserGroupMembershipInput)(nil)).Elem(), &UserGroupMembership{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserGroupMembershipArrayInput)(nil)).Elem(), UserGroupMembershipArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserGroupMembershipMapInput)(nil)).Elem(), UserGroupMembershipMap{}) + pulumi.RegisterOutputType(UserGroupMembershipOutput{}) + pulumi.RegisterOutputType(UserGroupMembershipArrayOutput{}) + pulumi.RegisterOutputType(UserGroupMembershipMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userLoginProfile.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userLoginProfile.go new file mode 100644 index 000000000..0c97f789e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userLoginProfile.go @@ -0,0 +1,348 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages an IAM User Login Profile with limited support for password creation during this provider resource creation. Uses PGP to encrypt the password for safe transport to the user. PGP keys can be obtained from Keybase. +// +// > To reset an IAM User login password via this provider, you can use delete and recreate this resource or change any of the arguments. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := iam.NewUser(ctx, "example", &iam.UserArgs{ +// Name: pulumi.String("example"), +// Path: pulumi.String("/"), +// ForceDestroy: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// exampleUserLoginProfile, err := iam.NewUserLoginProfile(ctx, "example", &iam.UserLoginProfileArgs{ +// User: example.Name, +// PgpKey: pulumi.String("keybase:some_person_that_exists"), +// }) +// if err != nil { +// return err +// } +// ctx.Export("password", exampleUserLoginProfile.EncryptedPassword) +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM User Login Profiles without password information via the IAM User name. For example: +// +// ```sh +// $ pulumi import aws:iam/userLoginProfile:UserLoginProfile example myusername +// ``` +// Since Pulumi has no method to read the PGP or password information during import, use the resource options `ignore_changes` argument to ignore them (unless you want to recreate a password). For example: +type UserLoginProfile struct { + pulumi.CustomResourceState + + // The encrypted password, base64 encoded. Only available if password was handled on resource creation, not import. + EncryptedPassword pulumi.StringOutput `pulumi:"encryptedPassword"` + // The fingerprint of the PGP key used to encrypt the password. Only available if password was handled on this provider resource creation, not import. + KeyFingerprint pulumi.StringOutput `pulumi:"keyFingerprint"` + // The plain text password, only available when `pgpKey` is not provided. + Password pulumi.StringOutput `pulumi:"password"` + // The length of the generated password on resource creation. Only applies on resource creation. Drift detection is not possible with this argument. Default value is `20`. + PasswordLength pulumi.IntPtrOutput `pulumi:"passwordLength"` + // Whether the user should be forced to reset the generated password on resource creation. Only applies on resource creation. + PasswordResetRequired pulumi.BoolOutput `pulumi:"passwordResetRequired"` + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:username`. Only applies on resource creation. Drift detection is not possible with this argument. + PgpKey pulumi.StringPtrOutput `pulumi:"pgpKey"` + // The IAM user's name. + User pulumi.StringOutput `pulumi:"user"` +} + +// NewUserLoginProfile registers a new resource with the given unique name, arguments, and options. +func NewUserLoginProfile(ctx *pulumi.Context, + name string, args *UserLoginProfileArgs, opts ...pulumi.ResourceOption) (*UserLoginProfile, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.User == nil { + return nil, errors.New("invalid value for required argument 'User'") + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "password", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource UserLoginProfile + err := ctx.RegisterResource("aws:iam/userLoginProfile:UserLoginProfile", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetUserLoginProfile gets an existing UserLoginProfile 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 GetUserLoginProfile(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *UserLoginProfileState, opts ...pulumi.ResourceOption) (*UserLoginProfile, error) { + var resource UserLoginProfile + err := ctx.ReadResource("aws:iam/userLoginProfile:UserLoginProfile", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering UserLoginProfile resources. +type userLoginProfileState struct { + // The encrypted password, base64 encoded. Only available if password was handled on resource creation, not import. + EncryptedPassword *string `pulumi:"encryptedPassword"` + // The fingerprint of the PGP key used to encrypt the password. Only available if password was handled on this provider resource creation, not import. + KeyFingerprint *string `pulumi:"keyFingerprint"` + // The plain text password, only available when `pgpKey` is not provided. + Password *string `pulumi:"password"` + // The length of the generated password on resource creation. Only applies on resource creation. Drift detection is not possible with this argument. Default value is `20`. + PasswordLength *int `pulumi:"passwordLength"` + // Whether the user should be forced to reset the generated password on resource creation. Only applies on resource creation. + PasswordResetRequired *bool `pulumi:"passwordResetRequired"` + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:username`. Only applies on resource creation. Drift detection is not possible with this argument. + PgpKey *string `pulumi:"pgpKey"` + // The IAM user's name. + User *string `pulumi:"user"` +} + +type UserLoginProfileState struct { + // The encrypted password, base64 encoded. Only available if password was handled on resource creation, not import. + EncryptedPassword pulumi.StringPtrInput + // The fingerprint of the PGP key used to encrypt the password. Only available if password was handled on this provider resource creation, not import. + KeyFingerprint pulumi.StringPtrInput + // The plain text password, only available when `pgpKey` is not provided. + Password pulumi.StringPtrInput + // The length of the generated password on resource creation. Only applies on resource creation. Drift detection is not possible with this argument. Default value is `20`. + PasswordLength pulumi.IntPtrInput + // Whether the user should be forced to reset the generated password on resource creation. Only applies on resource creation. + PasswordResetRequired pulumi.BoolPtrInput + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:username`. Only applies on resource creation. Drift detection is not possible with this argument. + PgpKey pulumi.StringPtrInput + // The IAM user's name. + User pulumi.StringPtrInput +} + +func (UserLoginProfileState) ElementType() reflect.Type { + return reflect.TypeOf((*userLoginProfileState)(nil)).Elem() +} + +type userLoginProfileArgs struct { + // The length of the generated password on resource creation. Only applies on resource creation. Drift detection is not possible with this argument. Default value is `20`. + PasswordLength *int `pulumi:"passwordLength"` + // Whether the user should be forced to reset the generated password on resource creation. Only applies on resource creation. + PasswordResetRequired *bool `pulumi:"passwordResetRequired"` + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:username`. Only applies on resource creation. Drift detection is not possible with this argument. + PgpKey *string `pulumi:"pgpKey"` + // The IAM user's name. + User string `pulumi:"user"` +} + +// The set of arguments for constructing a UserLoginProfile resource. +type UserLoginProfileArgs struct { + // The length of the generated password on resource creation. Only applies on resource creation. Drift detection is not possible with this argument. Default value is `20`. + PasswordLength pulumi.IntPtrInput + // Whether the user should be forced to reset the generated password on resource creation. Only applies on resource creation. + PasswordResetRequired pulumi.BoolPtrInput + // Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:username`. Only applies on resource creation. Drift detection is not possible with this argument. + PgpKey pulumi.StringPtrInput + // The IAM user's name. + User pulumi.StringInput +} + +func (UserLoginProfileArgs) ElementType() reflect.Type { + return reflect.TypeOf((*userLoginProfileArgs)(nil)).Elem() +} + +type UserLoginProfileInput interface { + pulumi.Input + + ToUserLoginProfileOutput() UserLoginProfileOutput + ToUserLoginProfileOutputWithContext(ctx context.Context) UserLoginProfileOutput +} + +func (*UserLoginProfile) ElementType() reflect.Type { + return reflect.TypeOf((**UserLoginProfile)(nil)).Elem() +} + +func (i *UserLoginProfile) ToUserLoginProfileOutput() UserLoginProfileOutput { + return i.ToUserLoginProfileOutputWithContext(context.Background()) +} + +func (i *UserLoginProfile) ToUserLoginProfileOutputWithContext(ctx context.Context) UserLoginProfileOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserLoginProfileOutput) +} + +// UserLoginProfileArrayInput is an input type that accepts UserLoginProfileArray and UserLoginProfileArrayOutput values. +// You can construct a concrete instance of `UserLoginProfileArrayInput` via: +// +// UserLoginProfileArray{ UserLoginProfileArgs{...} } +type UserLoginProfileArrayInput interface { + pulumi.Input + + ToUserLoginProfileArrayOutput() UserLoginProfileArrayOutput + ToUserLoginProfileArrayOutputWithContext(context.Context) UserLoginProfileArrayOutput +} + +type UserLoginProfileArray []UserLoginProfileInput + +func (UserLoginProfileArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserLoginProfile)(nil)).Elem() +} + +func (i UserLoginProfileArray) ToUserLoginProfileArrayOutput() UserLoginProfileArrayOutput { + return i.ToUserLoginProfileArrayOutputWithContext(context.Background()) +} + +func (i UserLoginProfileArray) ToUserLoginProfileArrayOutputWithContext(ctx context.Context) UserLoginProfileArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserLoginProfileArrayOutput) +} + +// UserLoginProfileMapInput is an input type that accepts UserLoginProfileMap and UserLoginProfileMapOutput values. +// You can construct a concrete instance of `UserLoginProfileMapInput` via: +// +// UserLoginProfileMap{ "key": UserLoginProfileArgs{...} } +type UserLoginProfileMapInput interface { + pulumi.Input + + ToUserLoginProfileMapOutput() UserLoginProfileMapOutput + ToUserLoginProfileMapOutputWithContext(context.Context) UserLoginProfileMapOutput +} + +type UserLoginProfileMap map[string]UserLoginProfileInput + +func (UserLoginProfileMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserLoginProfile)(nil)).Elem() +} + +func (i UserLoginProfileMap) ToUserLoginProfileMapOutput() UserLoginProfileMapOutput { + return i.ToUserLoginProfileMapOutputWithContext(context.Background()) +} + +func (i UserLoginProfileMap) ToUserLoginProfileMapOutputWithContext(ctx context.Context) UserLoginProfileMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserLoginProfileMapOutput) +} + +type UserLoginProfileOutput struct{ *pulumi.OutputState } + +func (UserLoginProfileOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UserLoginProfile)(nil)).Elem() +} + +func (o UserLoginProfileOutput) ToUserLoginProfileOutput() UserLoginProfileOutput { + return o +} + +func (o UserLoginProfileOutput) ToUserLoginProfileOutputWithContext(ctx context.Context) UserLoginProfileOutput { + return o +} + +// The encrypted password, base64 encoded. Only available if password was handled on resource creation, not import. +func (o UserLoginProfileOutput) EncryptedPassword() pulumi.StringOutput { + return o.ApplyT(func(v *UserLoginProfile) pulumi.StringOutput { return v.EncryptedPassword }).(pulumi.StringOutput) +} + +// The fingerprint of the PGP key used to encrypt the password. Only available if password was handled on this provider resource creation, not import. +func (o UserLoginProfileOutput) KeyFingerprint() pulumi.StringOutput { + return o.ApplyT(func(v *UserLoginProfile) pulumi.StringOutput { return v.KeyFingerprint }).(pulumi.StringOutput) +} + +// The plain text password, only available when `pgpKey` is not provided. +func (o UserLoginProfileOutput) Password() pulumi.StringOutput { + return o.ApplyT(func(v *UserLoginProfile) pulumi.StringOutput { return v.Password }).(pulumi.StringOutput) +} + +// The length of the generated password on resource creation. Only applies on resource creation. Drift detection is not possible with this argument. Default value is `20`. +func (o UserLoginProfileOutput) PasswordLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v *UserLoginProfile) pulumi.IntPtrOutput { return v.PasswordLength }).(pulumi.IntPtrOutput) +} + +// Whether the user should be forced to reset the generated password on resource creation. Only applies on resource creation. +func (o UserLoginProfileOutput) PasswordResetRequired() pulumi.BoolOutput { + return o.ApplyT(func(v *UserLoginProfile) pulumi.BoolOutput { return v.PasswordResetRequired }).(pulumi.BoolOutput) +} + +// Either a base-64 encoded PGP public key, or a keybase username in the form `keybase:username`. Only applies on resource creation. Drift detection is not possible with this argument. +func (o UserLoginProfileOutput) PgpKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *UserLoginProfile) pulumi.StringPtrOutput { return v.PgpKey }).(pulumi.StringPtrOutput) +} + +// The IAM user's name. +func (o UserLoginProfileOutput) User() pulumi.StringOutput { + return o.ApplyT(func(v *UserLoginProfile) pulumi.StringOutput { return v.User }).(pulumi.StringOutput) +} + +type UserLoginProfileArrayOutput struct{ *pulumi.OutputState } + +func (UserLoginProfileArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserLoginProfile)(nil)).Elem() +} + +func (o UserLoginProfileArrayOutput) ToUserLoginProfileArrayOutput() UserLoginProfileArrayOutput { + return o +} + +func (o UserLoginProfileArrayOutput) ToUserLoginProfileArrayOutputWithContext(ctx context.Context) UserLoginProfileArrayOutput { + return o +} + +func (o UserLoginProfileArrayOutput) Index(i pulumi.IntInput) UserLoginProfileOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *UserLoginProfile { + return vs[0].([]*UserLoginProfile)[vs[1].(int)] + }).(UserLoginProfileOutput) +} + +type UserLoginProfileMapOutput struct{ *pulumi.OutputState } + +func (UserLoginProfileMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserLoginProfile)(nil)).Elem() +} + +func (o UserLoginProfileMapOutput) ToUserLoginProfileMapOutput() UserLoginProfileMapOutput { + return o +} + +func (o UserLoginProfileMapOutput) ToUserLoginProfileMapOutputWithContext(ctx context.Context) UserLoginProfileMapOutput { + return o +} + +func (o UserLoginProfileMapOutput) MapIndex(k pulumi.StringInput) UserLoginProfileOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *UserLoginProfile { + return vs[0].(map[string]*UserLoginProfile)[vs[1].(string)] + }).(UserLoginProfileOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*UserLoginProfileInput)(nil)).Elem(), &UserLoginProfile{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserLoginProfileArrayInput)(nil)).Elem(), UserLoginProfileArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserLoginProfileMapInput)(nil)).Elem(), UserLoginProfileMap{}) + pulumi.RegisterOutputType(UserLoginProfileOutput{}) + pulumi.RegisterOutputType(UserLoginProfileArrayOutput{}) + pulumi.RegisterOutputType(UserLoginProfileMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPoliciesExclusive.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPoliciesExclusive.go new file mode 100644 index 000000000..936b6c417 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPoliciesExclusive.go @@ -0,0 +1,243 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Import +// +// Using `pulumi import`, import exclusive management of inline policy assignments using the `user_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/userPoliciesExclusive:UserPoliciesExclusive example MyUser +// ``` +type UserPoliciesExclusive struct { + pulumi.CustomResourceState + + // A list of inline policy names to be assigned to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayOutput `pulumi:"policyNames"` + // IAM user name. + UserName pulumi.StringOutput `pulumi:"userName"` +} + +// NewUserPoliciesExclusive registers a new resource with the given unique name, arguments, and options. +func NewUserPoliciesExclusive(ctx *pulumi.Context, + name string, args *UserPoliciesExclusiveArgs, opts ...pulumi.ResourceOption) (*UserPoliciesExclusive, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyNames == nil { + return nil, errors.New("invalid value for required argument 'PolicyNames'") + } + if args.UserName == nil { + return nil, errors.New("invalid value for required argument 'UserName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource UserPoliciesExclusive + err := ctx.RegisterResource("aws:iam/userPoliciesExclusive:UserPoliciesExclusive", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetUserPoliciesExclusive gets an existing UserPoliciesExclusive 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 GetUserPoliciesExclusive(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *UserPoliciesExclusiveState, opts ...pulumi.ResourceOption) (*UserPoliciesExclusive, error) { + var resource UserPoliciesExclusive + err := ctx.ReadResource("aws:iam/userPoliciesExclusive:UserPoliciesExclusive", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering UserPoliciesExclusive resources. +type userPoliciesExclusiveState struct { + // A list of inline policy names to be assigned to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyNames []string `pulumi:"policyNames"` + // IAM user name. + UserName *string `pulumi:"userName"` +} + +type UserPoliciesExclusiveState struct { + // A list of inline policy names to be assigned to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayInput + // IAM user name. + UserName pulumi.StringPtrInput +} + +func (UserPoliciesExclusiveState) ElementType() reflect.Type { + return reflect.TypeOf((*userPoliciesExclusiveState)(nil)).Elem() +} + +type userPoliciesExclusiveArgs struct { + // A list of inline policy names to be assigned to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyNames []string `pulumi:"policyNames"` + // IAM user name. + UserName string `pulumi:"userName"` +} + +// The set of arguments for constructing a UserPoliciesExclusive resource. +type UserPoliciesExclusiveArgs struct { + // A list of inline policy names to be assigned to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyNames pulumi.StringArrayInput + // IAM user name. + UserName pulumi.StringInput +} + +func (UserPoliciesExclusiveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*userPoliciesExclusiveArgs)(nil)).Elem() +} + +type UserPoliciesExclusiveInput interface { + pulumi.Input + + ToUserPoliciesExclusiveOutput() UserPoliciesExclusiveOutput + ToUserPoliciesExclusiveOutputWithContext(ctx context.Context) UserPoliciesExclusiveOutput +} + +func (*UserPoliciesExclusive) ElementType() reflect.Type { + return reflect.TypeOf((**UserPoliciesExclusive)(nil)).Elem() +} + +func (i *UserPoliciesExclusive) ToUserPoliciesExclusiveOutput() UserPoliciesExclusiveOutput { + return i.ToUserPoliciesExclusiveOutputWithContext(context.Background()) +} + +func (i *UserPoliciesExclusive) ToUserPoliciesExclusiveOutputWithContext(ctx context.Context) UserPoliciesExclusiveOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPoliciesExclusiveOutput) +} + +// UserPoliciesExclusiveArrayInput is an input type that accepts UserPoliciesExclusiveArray and UserPoliciesExclusiveArrayOutput values. +// You can construct a concrete instance of `UserPoliciesExclusiveArrayInput` via: +// +// UserPoliciesExclusiveArray{ UserPoliciesExclusiveArgs{...} } +type UserPoliciesExclusiveArrayInput interface { + pulumi.Input + + ToUserPoliciesExclusiveArrayOutput() UserPoliciesExclusiveArrayOutput + ToUserPoliciesExclusiveArrayOutputWithContext(context.Context) UserPoliciesExclusiveArrayOutput +} + +type UserPoliciesExclusiveArray []UserPoliciesExclusiveInput + +func (UserPoliciesExclusiveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPoliciesExclusive)(nil)).Elem() +} + +func (i UserPoliciesExclusiveArray) ToUserPoliciesExclusiveArrayOutput() UserPoliciesExclusiveArrayOutput { + return i.ToUserPoliciesExclusiveArrayOutputWithContext(context.Background()) +} + +func (i UserPoliciesExclusiveArray) ToUserPoliciesExclusiveArrayOutputWithContext(ctx context.Context) UserPoliciesExclusiveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPoliciesExclusiveArrayOutput) +} + +// UserPoliciesExclusiveMapInput is an input type that accepts UserPoliciesExclusiveMap and UserPoliciesExclusiveMapOutput values. +// You can construct a concrete instance of `UserPoliciesExclusiveMapInput` via: +// +// UserPoliciesExclusiveMap{ "key": UserPoliciesExclusiveArgs{...} } +type UserPoliciesExclusiveMapInput interface { + pulumi.Input + + ToUserPoliciesExclusiveMapOutput() UserPoliciesExclusiveMapOutput + ToUserPoliciesExclusiveMapOutputWithContext(context.Context) UserPoliciesExclusiveMapOutput +} + +type UserPoliciesExclusiveMap map[string]UserPoliciesExclusiveInput + +func (UserPoliciesExclusiveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPoliciesExclusive)(nil)).Elem() +} + +func (i UserPoliciesExclusiveMap) ToUserPoliciesExclusiveMapOutput() UserPoliciesExclusiveMapOutput { + return i.ToUserPoliciesExclusiveMapOutputWithContext(context.Background()) +} + +func (i UserPoliciesExclusiveMap) ToUserPoliciesExclusiveMapOutputWithContext(ctx context.Context) UserPoliciesExclusiveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPoliciesExclusiveMapOutput) +} + +type UserPoliciesExclusiveOutput struct{ *pulumi.OutputState } + +func (UserPoliciesExclusiveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UserPoliciesExclusive)(nil)).Elem() +} + +func (o UserPoliciesExclusiveOutput) ToUserPoliciesExclusiveOutput() UserPoliciesExclusiveOutput { + return o +} + +func (o UserPoliciesExclusiveOutput) ToUserPoliciesExclusiveOutputWithContext(ctx context.Context) UserPoliciesExclusiveOutput { + return o +} + +// A list of inline policy names to be assigned to the user. Policies attached to this user but not configured in this argument will be removed. +func (o UserPoliciesExclusiveOutput) PolicyNames() pulumi.StringArrayOutput { + return o.ApplyT(func(v *UserPoliciesExclusive) pulumi.StringArrayOutput { return v.PolicyNames }).(pulumi.StringArrayOutput) +} + +// IAM user name. +func (o UserPoliciesExclusiveOutput) UserName() pulumi.StringOutput { + return o.ApplyT(func(v *UserPoliciesExclusive) pulumi.StringOutput { return v.UserName }).(pulumi.StringOutput) +} + +type UserPoliciesExclusiveArrayOutput struct{ *pulumi.OutputState } + +func (UserPoliciesExclusiveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPoliciesExclusive)(nil)).Elem() +} + +func (o UserPoliciesExclusiveArrayOutput) ToUserPoliciesExclusiveArrayOutput() UserPoliciesExclusiveArrayOutput { + return o +} + +func (o UserPoliciesExclusiveArrayOutput) ToUserPoliciesExclusiveArrayOutputWithContext(ctx context.Context) UserPoliciesExclusiveArrayOutput { + return o +} + +func (o UserPoliciesExclusiveArrayOutput) Index(i pulumi.IntInput) UserPoliciesExclusiveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *UserPoliciesExclusive { + return vs[0].([]*UserPoliciesExclusive)[vs[1].(int)] + }).(UserPoliciesExclusiveOutput) +} + +type UserPoliciesExclusiveMapOutput struct{ *pulumi.OutputState } + +func (UserPoliciesExclusiveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPoliciesExclusive)(nil)).Elem() +} + +func (o UserPoliciesExclusiveMapOutput) ToUserPoliciesExclusiveMapOutput() UserPoliciesExclusiveMapOutput { + return o +} + +func (o UserPoliciesExclusiveMapOutput) ToUserPoliciesExclusiveMapOutputWithContext(ctx context.Context) UserPoliciesExclusiveMapOutput { + return o +} + +func (o UserPoliciesExclusiveMapOutput) MapIndex(k pulumi.StringInput) UserPoliciesExclusiveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *UserPoliciesExclusive { + return vs[0].(map[string]*UserPoliciesExclusive)[vs[1].(string)] + }).(UserPoliciesExclusiveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*UserPoliciesExclusiveInput)(nil)).Elem(), &UserPoliciesExclusive{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPoliciesExclusiveArrayInput)(nil)).Elem(), UserPoliciesExclusiveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPoliciesExclusiveMapInput)(nil)).Elem(), UserPoliciesExclusiveMap{}) + pulumi.RegisterOutputType(UserPoliciesExclusiveOutput{}) + pulumi.RegisterOutputType(UserPoliciesExclusiveArrayOutput{}) + pulumi.RegisterOutputType(UserPoliciesExclusiveMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicy.go new file mode 100644 index 000000000..89c4caf3f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicy.go @@ -0,0 +1,336 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM policy attached to a user. +// +// > **NOTE:** We suggest using explicit JSON encoding or `aws.iam.getPolicyDocument` when assigning a value to `policy`. They seamlessly translate configuration to JSON, enabling you to maintain consistency within your configuration without the need for context switches. Also, you can sidestep potential complications arising from formatting discrepancies, whitespace inconsistencies, and other nuances inherent to JSON. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "encoding/json" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// lb, err := iam.NewUser(ctx, "lb", &iam.UserArgs{ +// Name: pulumi.String("loadbalancer"), +// Path: pulumi.String("/system/"), +// }) +// if err != nil { +// return err +// } +// tmpJSON0, err := json.Marshal(map[string]interface{}{ +// "Version": "2012-10-17", +// "Statement": []map[string]interface{}{ +// map[string]interface{}{ +// "Action": []string{ +// "ec2:Describe*", +// }, +// "Effect": "Allow", +// "Resource": "*", +// }, +// }, +// }) +// if err != nil { +// return err +// } +// json0 := string(tmpJSON0) +// _, err = iam.NewUserPolicy(ctx, "lb_ro", &iam.UserPolicyArgs{ +// Name: pulumi.String("test"), +// User: lb.Name, +// Policy: pulumi.String(json0), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewAccessKey(ctx, "lb", &iam.AccessKeyArgs{ +// User: lb.Name, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM User Policies using the `user_name:user_policy_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/userPolicy:UserPolicy mypolicy user_of_mypolicy_name:mypolicy_name +// ``` +type UserPolicy struct { + pulumi.CustomResourceState + + // The name of the policy. If omitted, the provider will assign a random, unique name. + Name pulumi.StringOutput `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringOutput `pulumi:"namePrefix"` + // The policy document. This is a JSON formatted string. + Policy pulumi.StringOutput `pulumi:"policy"` + // IAM user to which to attach this policy. + User pulumi.StringOutput `pulumi:"user"` +} + +// NewUserPolicy registers a new resource with the given unique name, arguments, and options. +func NewUserPolicy(ctx *pulumi.Context, + name string, args *UserPolicyArgs, opts ...pulumi.ResourceOption) (*UserPolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Policy == nil { + return nil, errors.New("invalid value for required argument 'Policy'") + } + if args.User == nil { + return nil, errors.New("invalid value for required argument 'User'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource UserPolicy + err := ctx.RegisterResource("aws:iam/userPolicy:UserPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetUserPolicy gets an existing UserPolicy 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 GetUserPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *UserPolicyState, opts ...pulumi.ResourceOption) (*UserPolicy, error) { + var resource UserPolicy + err := ctx.ReadResource("aws:iam/userPolicy:UserPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering UserPolicy resources. +type userPolicyState struct { + // The name of the policy. If omitted, the provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The policy document. This is a JSON formatted string. + Policy interface{} `pulumi:"policy"` + // IAM user to which to attach this policy. + User *string `pulumi:"user"` +} + +type UserPolicyState struct { + // The name of the policy. If omitted, the provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The policy document. This is a JSON formatted string. + Policy pulumi.Input + // IAM user to which to attach this policy. + User pulumi.StringPtrInput +} + +func (UserPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*userPolicyState)(nil)).Elem() +} + +type userPolicyArgs struct { + // The name of the policy. If omitted, the provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // The policy document. This is a JSON formatted string. + Policy interface{} `pulumi:"policy"` + // IAM user to which to attach this policy. + User string `pulumi:"user"` +} + +// The set of arguments for constructing a UserPolicy resource. +type UserPolicyArgs struct { + // The name of the policy. If omitted, the provider will assign a random, unique name. + Name pulumi.StringPtrInput + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput + // The policy document. This is a JSON formatted string. + Policy pulumi.Input + // IAM user to which to attach this policy. + User pulumi.StringInput +} + +func (UserPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*userPolicyArgs)(nil)).Elem() +} + +type UserPolicyInput interface { + pulumi.Input + + ToUserPolicyOutput() UserPolicyOutput + ToUserPolicyOutputWithContext(ctx context.Context) UserPolicyOutput +} + +func (*UserPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**UserPolicy)(nil)).Elem() +} + +func (i *UserPolicy) ToUserPolicyOutput() UserPolicyOutput { + return i.ToUserPolicyOutputWithContext(context.Background()) +} + +func (i *UserPolicy) ToUserPolicyOutputWithContext(ctx context.Context) UserPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyOutput) +} + +// UserPolicyArrayInput is an input type that accepts UserPolicyArray and UserPolicyArrayOutput values. +// You can construct a concrete instance of `UserPolicyArrayInput` via: +// +// UserPolicyArray{ UserPolicyArgs{...} } +type UserPolicyArrayInput interface { + pulumi.Input + + ToUserPolicyArrayOutput() UserPolicyArrayOutput + ToUserPolicyArrayOutputWithContext(context.Context) UserPolicyArrayOutput +} + +type UserPolicyArray []UserPolicyInput + +func (UserPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPolicy)(nil)).Elem() +} + +func (i UserPolicyArray) ToUserPolicyArrayOutput() UserPolicyArrayOutput { + return i.ToUserPolicyArrayOutputWithContext(context.Background()) +} + +func (i UserPolicyArray) ToUserPolicyArrayOutputWithContext(ctx context.Context) UserPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyArrayOutput) +} + +// UserPolicyMapInput is an input type that accepts UserPolicyMap and UserPolicyMapOutput values. +// You can construct a concrete instance of `UserPolicyMapInput` via: +// +// UserPolicyMap{ "key": UserPolicyArgs{...} } +type UserPolicyMapInput interface { + pulumi.Input + + ToUserPolicyMapOutput() UserPolicyMapOutput + ToUserPolicyMapOutputWithContext(context.Context) UserPolicyMapOutput +} + +type UserPolicyMap map[string]UserPolicyInput + +func (UserPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPolicy)(nil)).Elem() +} + +func (i UserPolicyMap) ToUserPolicyMapOutput() UserPolicyMapOutput { + return i.ToUserPolicyMapOutputWithContext(context.Background()) +} + +func (i UserPolicyMap) ToUserPolicyMapOutputWithContext(ctx context.Context) UserPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyMapOutput) +} + +type UserPolicyOutput struct{ *pulumi.OutputState } + +func (UserPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UserPolicy)(nil)).Elem() +} + +func (o UserPolicyOutput) ToUserPolicyOutput() UserPolicyOutput { + return o +} + +func (o UserPolicyOutput) ToUserPolicyOutputWithContext(ctx context.Context) UserPolicyOutput { + return o +} + +// The name of the policy. If omitted, the provider will assign a random, unique name. +func (o UserPolicyOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *UserPolicy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o UserPolicyOutput) NamePrefix() pulumi.StringOutput { + return o.ApplyT(func(v *UserPolicy) pulumi.StringOutput { return v.NamePrefix }).(pulumi.StringOutput) +} + +// The policy document. This is a JSON formatted string. +func (o UserPolicyOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *UserPolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +// IAM user to which to attach this policy. +func (o UserPolicyOutput) User() pulumi.StringOutput { + return o.ApplyT(func(v *UserPolicy) pulumi.StringOutput { return v.User }).(pulumi.StringOutput) +} + +type UserPolicyArrayOutput struct{ *pulumi.OutputState } + +func (UserPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPolicy)(nil)).Elem() +} + +func (o UserPolicyArrayOutput) ToUserPolicyArrayOutput() UserPolicyArrayOutput { + return o +} + +func (o UserPolicyArrayOutput) ToUserPolicyArrayOutputWithContext(ctx context.Context) UserPolicyArrayOutput { + return o +} + +func (o UserPolicyArrayOutput) Index(i pulumi.IntInput) UserPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *UserPolicy { + return vs[0].([]*UserPolicy)[vs[1].(int)] + }).(UserPolicyOutput) +} + +type UserPolicyMapOutput struct{ *pulumi.OutputState } + +func (UserPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPolicy)(nil)).Elem() +} + +func (o UserPolicyMapOutput) ToUserPolicyMapOutput() UserPolicyMapOutput { + return o +} + +func (o UserPolicyMapOutput) ToUserPolicyMapOutputWithContext(ctx context.Context) UserPolicyMapOutput { + return o +} + +func (o UserPolicyMapOutput) MapIndex(k pulumi.StringInput) UserPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *UserPolicy { + return vs[0].(map[string]*UserPolicy)[vs[1].(string)] + }).(UserPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyInput)(nil)).Elem(), &UserPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyArrayInput)(nil)).Elem(), UserPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyMapInput)(nil)).Elem(), UserPolicyMap{}) + pulumi.RegisterOutputType(UserPolicyOutput{}) + pulumi.RegisterOutputType(UserPolicyArrayOutput{}) + pulumi.RegisterOutputType(UserPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachment.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachment.go new file mode 100644 index 000000000..1fd2934a0 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachment.go @@ -0,0 +1,288 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Attaches a Managed IAM Policy to an IAM user +// +// > **NOTE:** The usage of this resource conflicts with the `iam.PolicyAttachment` resource and will permanently show a difference if both are defined. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// user, err := iam.NewUser(ctx, "user", &iam.UserArgs{ +// Name: pulumi.String("test-user"), +// }) +// if err != nil { +// return err +// } +// policy, err := iam.NewPolicy(ctx, "policy", &iam.PolicyArgs{ +// Name: pulumi.String("test-policy"), +// Description: pulumi.String("A test policy"), +// Policy: pulumi.Any("{ ... policy JSON ... }"), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewUserPolicyAttachment(ctx, "test-attach", &iam.UserPolicyAttachmentArgs{ +// User: user.Name, +// PolicyArn: policy.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM user policy attachments using the user name and policy arn separated by `/`. For example: +// +// ```sh +// $ pulumi import aws:iam/userPolicyAttachment:UserPolicyAttachment test-attach test-user/arn:aws:iam::xxxxxxxxxxxx:policy/test-policy +// ``` +type UserPolicyAttachment struct { + pulumi.CustomResourceState + + // The ARN of the policy you want to apply + PolicyArn pulumi.StringOutput `pulumi:"policyArn"` + // The user the policy should be applied to + User pulumi.StringOutput `pulumi:"user"` +} + +// NewUserPolicyAttachment registers a new resource with the given unique name, arguments, and options. +func NewUserPolicyAttachment(ctx *pulumi.Context, + name string, args *UserPolicyAttachmentArgs, opts ...pulumi.ResourceOption) (*UserPolicyAttachment, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyArn == nil { + return nil, errors.New("invalid value for required argument 'PolicyArn'") + } + if args.User == nil { + return nil, errors.New("invalid value for required argument 'User'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource UserPolicyAttachment + err := ctx.RegisterResource("aws:iam/userPolicyAttachment:UserPolicyAttachment", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetUserPolicyAttachment gets an existing UserPolicyAttachment 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 GetUserPolicyAttachment(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *UserPolicyAttachmentState, opts ...pulumi.ResourceOption) (*UserPolicyAttachment, error) { + var resource UserPolicyAttachment + err := ctx.ReadResource("aws:iam/userPolicyAttachment:UserPolicyAttachment", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering UserPolicyAttachment resources. +type userPolicyAttachmentState struct { + // The ARN of the policy you want to apply + PolicyArn *string `pulumi:"policyArn"` + // The user the policy should be applied to + User interface{} `pulumi:"user"` +} + +type UserPolicyAttachmentState struct { + // The ARN of the policy you want to apply + PolicyArn pulumi.StringPtrInput + // The user the policy should be applied to + User pulumi.Input +} + +func (UserPolicyAttachmentState) ElementType() reflect.Type { + return reflect.TypeOf((*userPolicyAttachmentState)(nil)).Elem() +} + +type userPolicyAttachmentArgs struct { + // The ARN of the policy you want to apply + PolicyArn string `pulumi:"policyArn"` + // The user the policy should be applied to + User interface{} `pulumi:"user"` +} + +// The set of arguments for constructing a UserPolicyAttachment resource. +type UserPolicyAttachmentArgs struct { + // The ARN of the policy you want to apply + PolicyArn pulumi.StringInput + // The user the policy should be applied to + User pulumi.Input +} + +func (UserPolicyAttachmentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*userPolicyAttachmentArgs)(nil)).Elem() +} + +type UserPolicyAttachmentInput interface { + pulumi.Input + + ToUserPolicyAttachmentOutput() UserPolicyAttachmentOutput + ToUserPolicyAttachmentOutputWithContext(ctx context.Context) UserPolicyAttachmentOutput +} + +func (*UserPolicyAttachment) ElementType() reflect.Type { + return reflect.TypeOf((**UserPolicyAttachment)(nil)).Elem() +} + +func (i *UserPolicyAttachment) ToUserPolicyAttachmentOutput() UserPolicyAttachmentOutput { + return i.ToUserPolicyAttachmentOutputWithContext(context.Background()) +} + +func (i *UserPolicyAttachment) ToUserPolicyAttachmentOutputWithContext(ctx context.Context) UserPolicyAttachmentOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyAttachmentOutput) +} + +// UserPolicyAttachmentArrayInput is an input type that accepts UserPolicyAttachmentArray and UserPolicyAttachmentArrayOutput values. +// You can construct a concrete instance of `UserPolicyAttachmentArrayInput` via: +// +// UserPolicyAttachmentArray{ UserPolicyAttachmentArgs{...} } +type UserPolicyAttachmentArrayInput interface { + pulumi.Input + + ToUserPolicyAttachmentArrayOutput() UserPolicyAttachmentArrayOutput + ToUserPolicyAttachmentArrayOutputWithContext(context.Context) UserPolicyAttachmentArrayOutput +} + +type UserPolicyAttachmentArray []UserPolicyAttachmentInput + +func (UserPolicyAttachmentArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPolicyAttachment)(nil)).Elem() +} + +func (i UserPolicyAttachmentArray) ToUserPolicyAttachmentArrayOutput() UserPolicyAttachmentArrayOutput { + return i.ToUserPolicyAttachmentArrayOutputWithContext(context.Background()) +} + +func (i UserPolicyAttachmentArray) ToUserPolicyAttachmentArrayOutputWithContext(ctx context.Context) UserPolicyAttachmentArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyAttachmentArrayOutput) +} + +// UserPolicyAttachmentMapInput is an input type that accepts UserPolicyAttachmentMap and UserPolicyAttachmentMapOutput values. +// You can construct a concrete instance of `UserPolicyAttachmentMapInput` via: +// +// UserPolicyAttachmentMap{ "key": UserPolicyAttachmentArgs{...} } +type UserPolicyAttachmentMapInput interface { + pulumi.Input + + ToUserPolicyAttachmentMapOutput() UserPolicyAttachmentMapOutput + ToUserPolicyAttachmentMapOutputWithContext(context.Context) UserPolicyAttachmentMapOutput +} + +type UserPolicyAttachmentMap map[string]UserPolicyAttachmentInput + +func (UserPolicyAttachmentMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPolicyAttachment)(nil)).Elem() +} + +func (i UserPolicyAttachmentMap) ToUserPolicyAttachmentMapOutput() UserPolicyAttachmentMapOutput { + return i.ToUserPolicyAttachmentMapOutputWithContext(context.Background()) +} + +func (i UserPolicyAttachmentMap) ToUserPolicyAttachmentMapOutputWithContext(ctx context.Context) UserPolicyAttachmentMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyAttachmentMapOutput) +} + +type UserPolicyAttachmentOutput struct{ *pulumi.OutputState } + +func (UserPolicyAttachmentOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UserPolicyAttachment)(nil)).Elem() +} + +func (o UserPolicyAttachmentOutput) ToUserPolicyAttachmentOutput() UserPolicyAttachmentOutput { + return o +} + +func (o UserPolicyAttachmentOutput) ToUserPolicyAttachmentOutputWithContext(ctx context.Context) UserPolicyAttachmentOutput { + return o +} + +// The ARN of the policy you want to apply +func (o UserPolicyAttachmentOutput) PolicyArn() pulumi.StringOutput { + return o.ApplyT(func(v *UserPolicyAttachment) pulumi.StringOutput { return v.PolicyArn }).(pulumi.StringOutput) +} + +// The user the policy should be applied to +func (o UserPolicyAttachmentOutput) User() pulumi.StringOutput { + return o.ApplyT(func(v *UserPolicyAttachment) pulumi.StringOutput { return v.User }).(pulumi.StringOutput) +} + +type UserPolicyAttachmentArrayOutput struct{ *pulumi.OutputState } + +func (UserPolicyAttachmentArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPolicyAttachment)(nil)).Elem() +} + +func (o UserPolicyAttachmentArrayOutput) ToUserPolicyAttachmentArrayOutput() UserPolicyAttachmentArrayOutput { + return o +} + +func (o UserPolicyAttachmentArrayOutput) ToUserPolicyAttachmentArrayOutputWithContext(ctx context.Context) UserPolicyAttachmentArrayOutput { + return o +} + +func (o UserPolicyAttachmentArrayOutput) Index(i pulumi.IntInput) UserPolicyAttachmentOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *UserPolicyAttachment { + return vs[0].([]*UserPolicyAttachment)[vs[1].(int)] + }).(UserPolicyAttachmentOutput) +} + +type UserPolicyAttachmentMapOutput struct{ *pulumi.OutputState } + +func (UserPolicyAttachmentMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPolicyAttachment)(nil)).Elem() +} + +func (o UserPolicyAttachmentMapOutput) ToUserPolicyAttachmentMapOutput() UserPolicyAttachmentMapOutput { + return o +} + +func (o UserPolicyAttachmentMapOutput) ToUserPolicyAttachmentMapOutputWithContext(ctx context.Context) UserPolicyAttachmentMapOutput { + return o +} + +func (o UserPolicyAttachmentMapOutput) MapIndex(k pulumi.StringInput) UserPolicyAttachmentOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *UserPolicyAttachment { + return vs[0].(map[string]*UserPolicyAttachment)[vs[1].(string)] + }).(UserPolicyAttachmentOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyAttachmentInput)(nil)).Elem(), &UserPolicyAttachment{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyAttachmentArrayInput)(nil)).Elem(), UserPolicyAttachmentArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyAttachmentMapInput)(nil)).Elem(), UserPolicyAttachmentMap{}) + pulumi.RegisterOutputType(UserPolicyAttachmentOutput{}) + pulumi.RegisterOutputType(UserPolicyAttachmentArrayOutput{}) + pulumi.RegisterOutputType(UserPolicyAttachmentMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachmentsExclusive.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachmentsExclusive.go new file mode 100644 index 000000000..9a71b5ddd --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/userPolicyAttachmentsExclusive.go @@ -0,0 +1,243 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// ## Import +// +// Using `pulumi import`, import exclusive management of managed IAM policy assignments using the `user_name`. For example: +// +// ```sh +// $ pulumi import aws:iam/userPolicyAttachmentsExclusive:UserPolicyAttachmentsExclusive example MyUser +// ``` +type UserPolicyAttachmentsExclusive struct { + pulumi.CustomResourceState + + // A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayOutput `pulumi:"policyArns"` + // IAM user name. + UserName pulumi.StringOutput `pulumi:"userName"` +} + +// NewUserPolicyAttachmentsExclusive registers a new resource with the given unique name, arguments, and options. +func NewUserPolicyAttachmentsExclusive(ctx *pulumi.Context, + name string, args *UserPolicyAttachmentsExclusiveArgs, opts ...pulumi.ResourceOption) (*UserPolicyAttachmentsExclusive, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.PolicyArns == nil { + return nil, errors.New("invalid value for required argument 'PolicyArns'") + } + if args.UserName == nil { + return nil, errors.New("invalid value for required argument 'UserName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource UserPolicyAttachmentsExclusive + err := ctx.RegisterResource("aws:iam/userPolicyAttachmentsExclusive:UserPolicyAttachmentsExclusive", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetUserPolicyAttachmentsExclusive gets an existing UserPolicyAttachmentsExclusive 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 GetUserPolicyAttachmentsExclusive(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *UserPolicyAttachmentsExclusiveState, opts ...pulumi.ResourceOption) (*UserPolicyAttachmentsExclusive, error) { + var resource UserPolicyAttachmentsExclusive + err := ctx.ReadResource("aws:iam/userPolicyAttachmentsExclusive:UserPolicyAttachmentsExclusive", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering UserPolicyAttachmentsExclusive resources. +type userPolicyAttachmentsExclusiveState struct { + // A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyArns []string `pulumi:"policyArns"` + // IAM user name. + UserName *string `pulumi:"userName"` +} + +type UserPolicyAttachmentsExclusiveState struct { + // A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayInput + // IAM user name. + UserName pulumi.StringPtrInput +} + +func (UserPolicyAttachmentsExclusiveState) ElementType() reflect.Type { + return reflect.TypeOf((*userPolicyAttachmentsExclusiveState)(nil)).Elem() +} + +type userPolicyAttachmentsExclusiveArgs struct { + // A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyArns []string `pulumi:"policyArns"` + // IAM user name. + UserName string `pulumi:"userName"` +} + +// The set of arguments for constructing a UserPolicyAttachmentsExclusive resource. +type UserPolicyAttachmentsExclusiveArgs struct { + // A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. + PolicyArns pulumi.StringArrayInput + // IAM user name. + UserName pulumi.StringInput +} + +func (UserPolicyAttachmentsExclusiveArgs) ElementType() reflect.Type { + return reflect.TypeOf((*userPolicyAttachmentsExclusiveArgs)(nil)).Elem() +} + +type UserPolicyAttachmentsExclusiveInput interface { + pulumi.Input + + ToUserPolicyAttachmentsExclusiveOutput() UserPolicyAttachmentsExclusiveOutput + ToUserPolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) UserPolicyAttachmentsExclusiveOutput +} + +func (*UserPolicyAttachmentsExclusive) ElementType() reflect.Type { + return reflect.TypeOf((**UserPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i *UserPolicyAttachmentsExclusive) ToUserPolicyAttachmentsExclusiveOutput() UserPolicyAttachmentsExclusiveOutput { + return i.ToUserPolicyAttachmentsExclusiveOutputWithContext(context.Background()) +} + +func (i *UserPolicyAttachmentsExclusive) ToUserPolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) UserPolicyAttachmentsExclusiveOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyAttachmentsExclusiveOutput) +} + +// UserPolicyAttachmentsExclusiveArrayInput is an input type that accepts UserPolicyAttachmentsExclusiveArray and UserPolicyAttachmentsExclusiveArrayOutput values. +// You can construct a concrete instance of `UserPolicyAttachmentsExclusiveArrayInput` via: +// +// UserPolicyAttachmentsExclusiveArray{ UserPolicyAttachmentsExclusiveArgs{...} } +type UserPolicyAttachmentsExclusiveArrayInput interface { + pulumi.Input + + ToUserPolicyAttachmentsExclusiveArrayOutput() UserPolicyAttachmentsExclusiveArrayOutput + ToUserPolicyAttachmentsExclusiveArrayOutputWithContext(context.Context) UserPolicyAttachmentsExclusiveArrayOutput +} + +type UserPolicyAttachmentsExclusiveArray []UserPolicyAttachmentsExclusiveInput + +func (UserPolicyAttachmentsExclusiveArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i UserPolicyAttachmentsExclusiveArray) ToUserPolicyAttachmentsExclusiveArrayOutput() UserPolicyAttachmentsExclusiveArrayOutput { + return i.ToUserPolicyAttachmentsExclusiveArrayOutputWithContext(context.Background()) +} + +func (i UserPolicyAttachmentsExclusiveArray) ToUserPolicyAttachmentsExclusiveArrayOutputWithContext(ctx context.Context) UserPolicyAttachmentsExclusiveArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyAttachmentsExclusiveArrayOutput) +} + +// UserPolicyAttachmentsExclusiveMapInput is an input type that accepts UserPolicyAttachmentsExclusiveMap and UserPolicyAttachmentsExclusiveMapOutput values. +// You can construct a concrete instance of `UserPolicyAttachmentsExclusiveMapInput` via: +// +// UserPolicyAttachmentsExclusiveMap{ "key": UserPolicyAttachmentsExclusiveArgs{...} } +type UserPolicyAttachmentsExclusiveMapInput interface { + pulumi.Input + + ToUserPolicyAttachmentsExclusiveMapOutput() UserPolicyAttachmentsExclusiveMapOutput + ToUserPolicyAttachmentsExclusiveMapOutputWithContext(context.Context) UserPolicyAttachmentsExclusiveMapOutput +} + +type UserPolicyAttachmentsExclusiveMap map[string]UserPolicyAttachmentsExclusiveInput + +func (UserPolicyAttachmentsExclusiveMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (i UserPolicyAttachmentsExclusiveMap) ToUserPolicyAttachmentsExclusiveMapOutput() UserPolicyAttachmentsExclusiveMapOutput { + return i.ToUserPolicyAttachmentsExclusiveMapOutputWithContext(context.Background()) +} + +func (i UserPolicyAttachmentsExclusiveMap) ToUserPolicyAttachmentsExclusiveMapOutputWithContext(ctx context.Context) UserPolicyAttachmentsExclusiveMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(UserPolicyAttachmentsExclusiveMapOutput) +} + +type UserPolicyAttachmentsExclusiveOutput struct{ *pulumi.OutputState } + +func (UserPolicyAttachmentsExclusiveOutput) ElementType() reflect.Type { + return reflect.TypeOf((**UserPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o UserPolicyAttachmentsExclusiveOutput) ToUserPolicyAttachmentsExclusiveOutput() UserPolicyAttachmentsExclusiveOutput { + return o +} + +func (o UserPolicyAttachmentsExclusiveOutput) ToUserPolicyAttachmentsExclusiveOutputWithContext(ctx context.Context) UserPolicyAttachmentsExclusiveOutput { + return o +} + +// A list of managed IAM policy ARNs to be attached to the user. Policies attached to this user but not configured in this argument will be removed. +func (o UserPolicyAttachmentsExclusiveOutput) PolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *UserPolicyAttachmentsExclusive) pulumi.StringArrayOutput { return v.PolicyArns }).(pulumi.StringArrayOutput) +} + +// IAM user name. +func (o UserPolicyAttachmentsExclusiveOutput) UserName() pulumi.StringOutput { + return o.ApplyT(func(v *UserPolicyAttachmentsExclusive) pulumi.StringOutput { return v.UserName }).(pulumi.StringOutput) +} + +type UserPolicyAttachmentsExclusiveArrayOutput struct{ *pulumi.OutputState } + +func (UserPolicyAttachmentsExclusiveArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*UserPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o UserPolicyAttachmentsExclusiveArrayOutput) ToUserPolicyAttachmentsExclusiveArrayOutput() UserPolicyAttachmentsExclusiveArrayOutput { + return o +} + +func (o UserPolicyAttachmentsExclusiveArrayOutput) ToUserPolicyAttachmentsExclusiveArrayOutputWithContext(ctx context.Context) UserPolicyAttachmentsExclusiveArrayOutput { + return o +} + +func (o UserPolicyAttachmentsExclusiveArrayOutput) Index(i pulumi.IntInput) UserPolicyAttachmentsExclusiveOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *UserPolicyAttachmentsExclusive { + return vs[0].([]*UserPolicyAttachmentsExclusive)[vs[1].(int)] + }).(UserPolicyAttachmentsExclusiveOutput) +} + +type UserPolicyAttachmentsExclusiveMapOutput struct{ *pulumi.OutputState } + +func (UserPolicyAttachmentsExclusiveMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*UserPolicyAttachmentsExclusive)(nil)).Elem() +} + +func (o UserPolicyAttachmentsExclusiveMapOutput) ToUserPolicyAttachmentsExclusiveMapOutput() UserPolicyAttachmentsExclusiveMapOutput { + return o +} + +func (o UserPolicyAttachmentsExclusiveMapOutput) ToUserPolicyAttachmentsExclusiveMapOutputWithContext(ctx context.Context) UserPolicyAttachmentsExclusiveMapOutput { + return o +} + +func (o UserPolicyAttachmentsExclusiveMapOutput) MapIndex(k pulumi.StringInput) UserPolicyAttachmentsExclusiveOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *UserPolicyAttachmentsExclusive { + return vs[0].(map[string]*UserPolicyAttachmentsExclusive)[vs[1].(string)] + }).(UserPolicyAttachmentsExclusiveOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyAttachmentsExclusiveInput)(nil)).Elem(), &UserPolicyAttachmentsExclusive{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyAttachmentsExclusiveArrayInput)(nil)).Elem(), UserPolicyAttachmentsExclusiveArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*UserPolicyAttachmentsExclusiveMapInput)(nil)).Elem(), UserPolicyAttachmentsExclusiveMap{}) + pulumi.RegisterOutputType(UserPolicyAttachmentsExclusiveOutput{}) + pulumi.RegisterOutputType(UserPolicyAttachmentsExclusiveArrayOutput{}) + pulumi.RegisterOutputType(UserPolicyAttachmentsExclusiveMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/virtualMfaDevice.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/virtualMfaDevice.go new file mode 100644 index 000000000..02408b572 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam/virtualMfaDevice.go @@ -0,0 +1,365 @@ +// 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 iam + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an IAM Virtual MFA Device. +// +// > **Note:** All attributes will be stored in the raw state as plain-text. +// **Note:** A virtual MFA device cannot be directly associated with an IAM User from the provider. +// +// To associate the virtual MFA device with a user and enable it, use the code returned in either `base32StringSeed` or `qrCodePng` to generate TOTP authentication codes. +// The authentication codes can then be used with the AWS CLI command [`aws iam enable-mfa-device`](https://docs.aws.amazon.com/cli/latest/reference/iam/enable-mfa-device.html) or the AWS API call [`EnableMFADevice`](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableMFADevice.html). +// +// ## Example Usage +// +// **Using certs on file:** +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := iam.NewVirtualMfaDevice(ctx, "example", &iam.VirtualMfaDeviceArgs{ +// VirtualMfaDeviceName: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import IAM Virtual MFA Devices using the `arn`. For example: +// +// ```sh +// $ pulumi import aws:iam/virtualMfaDevice:VirtualMfaDevice example arn:aws:iam::123456789012:mfa/example +// ``` +type VirtualMfaDevice struct { + pulumi.CustomResourceState + + // The Amazon Resource Name (ARN) specifying the virtual mfa device. + Arn pulumi.StringOutput `pulumi:"arn"` + // The base32 seed defined as specified in [RFC3548](https://tools.ietf.org/html/rfc3548.txt). The `base32StringSeed` is base64-encoded. + Base32StringSeed pulumi.StringOutput `pulumi:"base32StringSeed"` + // The date and time when the virtual MFA device was enabled. + EnableDate pulumi.StringOutput `pulumi:"enableDate"` + // The path for the virtual MFA device. + Path pulumi.StringPtrOutput `pulumi:"path"` + // A QR code PNG image that encodes `otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String` where `$virtualMFADeviceName` is one of the create call arguments. AccountName is the user name if set (otherwise, the account ID), and Base32String is the seed in base32 format. + QrCodePng pulumi.StringOutput `pulumi:"qrCodePng"` + // Map of resource tags for the virtual mfa device. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // The associated IAM User name if the virtual MFA device is enabled. + UserName pulumi.StringOutput `pulumi:"userName"` + // The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device. + VirtualMfaDeviceName pulumi.StringOutput `pulumi:"virtualMfaDeviceName"` +} + +// NewVirtualMfaDevice registers a new resource with the given unique name, arguments, and options. +func NewVirtualMfaDevice(ctx *pulumi.Context, + name string, args *VirtualMfaDeviceArgs, opts ...pulumi.ResourceOption) (*VirtualMfaDevice, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.VirtualMfaDeviceName == nil { + return nil, errors.New("invalid value for required argument 'VirtualMfaDeviceName'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource VirtualMfaDevice + err := ctx.RegisterResource("aws:iam/virtualMfaDevice:VirtualMfaDevice", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetVirtualMfaDevice gets an existing VirtualMfaDevice 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 GetVirtualMfaDevice(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *VirtualMfaDeviceState, opts ...pulumi.ResourceOption) (*VirtualMfaDevice, error) { + var resource VirtualMfaDevice + err := ctx.ReadResource("aws:iam/virtualMfaDevice:VirtualMfaDevice", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering VirtualMfaDevice resources. +type virtualMfaDeviceState struct { + // The Amazon Resource Name (ARN) specifying the virtual mfa device. + Arn *string `pulumi:"arn"` + // The base32 seed defined as specified in [RFC3548](https://tools.ietf.org/html/rfc3548.txt). The `base32StringSeed` is base64-encoded. + Base32StringSeed *string `pulumi:"base32StringSeed"` + // The date and time when the virtual MFA device was enabled. + EnableDate *string `pulumi:"enableDate"` + // The path for the virtual MFA device. + Path *string `pulumi:"path"` + // A QR code PNG image that encodes `otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String` where `$virtualMFADeviceName` is one of the create call arguments. AccountName is the user name if set (otherwise, the account ID), and Base32String is the seed in base32 format. + QrCodePng *string `pulumi:"qrCodePng"` + // Map of resource tags for the virtual mfa device. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // The associated IAM User name if the virtual MFA device is enabled. + UserName *string `pulumi:"userName"` + // The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device. + VirtualMfaDeviceName *string `pulumi:"virtualMfaDeviceName"` +} + +type VirtualMfaDeviceState struct { + // The Amazon Resource Name (ARN) specifying the virtual mfa device. + Arn pulumi.StringPtrInput + // The base32 seed defined as specified in [RFC3548](https://tools.ietf.org/html/rfc3548.txt). The `base32StringSeed` is base64-encoded. + Base32StringSeed pulumi.StringPtrInput + // The date and time when the virtual MFA device was enabled. + EnableDate pulumi.StringPtrInput + // The path for the virtual MFA device. + Path pulumi.StringPtrInput + // A QR code PNG image that encodes `otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String` where `$virtualMFADeviceName` is one of the create call arguments. AccountName is the user name if set (otherwise, the account ID), and Base32String is the seed in base32 format. + QrCodePng pulumi.StringPtrInput + // Map of resource tags for the virtual mfa device. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // The associated IAM User name if the virtual MFA device is enabled. + UserName pulumi.StringPtrInput + // The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device. + VirtualMfaDeviceName pulumi.StringPtrInput +} + +func (VirtualMfaDeviceState) ElementType() reflect.Type { + return reflect.TypeOf((*virtualMfaDeviceState)(nil)).Elem() +} + +type virtualMfaDeviceArgs struct { + // The path for the virtual MFA device. + Path *string `pulumi:"path"` + // Map of resource tags for the virtual mfa device. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device. + VirtualMfaDeviceName string `pulumi:"virtualMfaDeviceName"` +} + +// The set of arguments for constructing a VirtualMfaDevice resource. +type VirtualMfaDeviceArgs struct { + // The path for the virtual MFA device. + Path pulumi.StringPtrInput + // Map of resource tags for the virtual mfa device. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device. + VirtualMfaDeviceName pulumi.StringInput +} + +func (VirtualMfaDeviceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*virtualMfaDeviceArgs)(nil)).Elem() +} + +type VirtualMfaDeviceInput interface { + pulumi.Input + + ToVirtualMfaDeviceOutput() VirtualMfaDeviceOutput + ToVirtualMfaDeviceOutputWithContext(ctx context.Context) VirtualMfaDeviceOutput +} + +func (*VirtualMfaDevice) ElementType() reflect.Type { + return reflect.TypeOf((**VirtualMfaDevice)(nil)).Elem() +} + +func (i *VirtualMfaDevice) ToVirtualMfaDeviceOutput() VirtualMfaDeviceOutput { + return i.ToVirtualMfaDeviceOutputWithContext(context.Background()) +} + +func (i *VirtualMfaDevice) ToVirtualMfaDeviceOutputWithContext(ctx context.Context) VirtualMfaDeviceOutput { + return pulumi.ToOutputWithContext(ctx, i).(VirtualMfaDeviceOutput) +} + +// VirtualMfaDeviceArrayInput is an input type that accepts VirtualMfaDeviceArray and VirtualMfaDeviceArrayOutput values. +// You can construct a concrete instance of `VirtualMfaDeviceArrayInput` via: +// +// VirtualMfaDeviceArray{ VirtualMfaDeviceArgs{...} } +type VirtualMfaDeviceArrayInput interface { + pulumi.Input + + ToVirtualMfaDeviceArrayOutput() VirtualMfaDeviceArrayOutput + ToVirtualMfaDeviceArrayOutputWithContext(context.Context) VirtualMfaDeviceArrayOutput +} + +type VirtualMfaDeviceArray []VirtualMfaDeviceInput + +func (VirtualMfaDeviceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VirtualMfaDevice)(nil)).Elem() +} + +func (i VirtualMfaDeviceArray) ToVirtualMfaDeviceArrayOutput() VirtualMfaDeviceArrayOutput { + return i.ToVirtualMfaDeviceArrayOutputWithContext(context.Background()) +} + +func (i VirtualMfaDeviceArray) ToVirtualMfaDeviceArrayOutputWithContext(ctx context.Context) VirtualMfaDeviceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VirtualMfaDeviceArrayOutput) +} + +// VirtualMfaDeviceMapInput is an input type that accepts VirtualMfaDeviceMap and VirtualMfaDeviceMapOutput values. +// You can construct a concrete instance of `VirtualMfaDeviceMapInput` via: +// +// VirtualMfaDeviceMap{ "key": VirtualMfaDeviceArgs{...} } +type VirtualMfaDeviceMapInput interface { + pulumi.Input + + ToVirtualMfaDeviceMapOutput() VirtualMfaDeviceMapOutput + ToVirtualMfaDeviceMapOutputWithContext(context.Context) VirtualMfaDeviceMapOutput +} + +type VirtualMfaDeviceMap map[string]VirtualMfaDeviceInput + +func (VirtualMfaDeviceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VirtualMfaDevice)(nil)).Elem() +} + +func (i VirtualMfaDeviceMap) ToVirtualMfaDeviceMapOutput() VirtualMfaDeviceMapOutput { + return i.ToVirtualMfaDeviceMapOutputWithContext(context.Background()) +} + +func (i VirtualMfaDeviceMap) ToVirtualMfaDeviceMapOutputWithContext(ctx context.Context) VirtualMfaDeviceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(VirtualMfaDeviceMapOutput) +} + +type VirtualMfaDeviceOutput struct{ *pulumi.OutputState } + +func (VirtualMfaDeviceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**VirtualMfaDevice)(nil)).Elem() +} + +func (o VirtualMfaDeviceOutput) ToVirtualMfaDeviceOutput() VirtualMfaDeviceOutput { + return o +} + +func (o VirtualMfaDeviceOutput) ToVirtualMfaDeviceOutputWithContext(ctx context.Context) VirtualMfaDeviceOutput { + return o +} + +// The Amazon Resource Name (ARN) specifying the virtual mfa device. +func (o VirtualMfaDeviceOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The base32 seed defined as specified in [RFC3548](https://tools.ietf.org/html/rfc3548.txt). The `base32StringSeed` is base64-encoded. +func (o VirtualMfaDeviceOutput) Base32StringSeed() pulumi.StringOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringOutput { return v.Base32StringSeed }).(pulumi.StringOutput) +} + +// The date and time when the virtual MFA device was enabled. +func (o VirtualMfaDeviceOutput) EnableDate() pulumi.StringOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringOutput { return v.EnableDate }).(pulumi.StringOutput) +} + +// The path for the virtual MFA device. +func (o VirtualMfaDeviceOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringPtrOutput { return v.Path }).(pulumi.StringPtrOutput) +} + +// A QR code PNG image that encodes `otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String` where `$virtualMFADeviceName` is one of the create call arguments. AccountName is the user name if set (otherwise, the account ID), and Base32String is the seed in base32 format. +func (o VirtualMfaDeviceOutput) QrCodePng() pulumi.StringOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringOutput { return v.QrCodePng }).(pulumi.StringOutput) +} + +// Map of resource tags for the virtual mfa device. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o VirtualMfaDeviceOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o VirtualMfaDeviceOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// The associated IAM User name if the virtual MFA device is enabled. +func (o VirtualMfaDeviceOutput) UserName() pulumi.StringOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringOutput { return v.UserName }).(pulumi.StringOutput) +} + +// The name of the virtual MFA device. Use with path to uniquely identify a virtual MFA device. +func (o VirtualMfaDeviceOutput) VirtualMfaDeviceName() pulumi.StringOutput { + return o.ApplyT(func(v *VirtualMfaDevice) pulumi.StringOutput { return v.VirtualMfaDeviceName }).(pulumi.StringOutput) +} + +type VirtualMfaDeviceArrayOutput struct{ *pulumi.OutputState } + +func (VirtualMfaDeviceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*VirtualMfaDevice)(nil)).Elem() +} + +func (o VirtualMfaDeviceArrayOutput) ToVirtualMfaDeviceArrayOutput() VirtualMfaDeviceArrayOutput { + return o +} + +func (o VirtualMfaDeviceArrayOutput) ToVirtualMfaDeviceArrayOutputWithContext(ctx context.Context) VirtualMfaDeviceArrayOutput { + return o +} + +func (o VirtualMfaDeviceArrayOutput) Index(i pulumi.IntInput) VirtualMfaDeviceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VirtualMfaDevice { + return vs[0].([]*VirtualMfaDevice)[vs[1].(int)] + }).(VirtualMfaDeviceOutput) +} + +type VirtualMfaDeviceMapOutput struct{ *pulumi.OutputState } + +func (VirtualMfaDeviceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*VirtualMfaDevice)(nil)).Elem() +} + +func (o VirtualMfaDeviceMapOutput) ToVirtualMfaDeviceMapOutput() VirtualMfaDeviceMapOutput { + return o +} + +func (o VirtualMfaDeviceMapOutput) ToVirtualMfaDeviceMapOutputWithContext(ctx context.Context) VirtualMfaDeviceMapOutput { + return o +} + +func (o VirtualMfaDeviceMapOutput) MapIndex(k pulumi.StringInput) VirtualMfaDeviceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VirtualMfaDevice { + return vs[0].(map[string]*VirtualMfaDevice)[vs[1].(string)] + }).(VirtualMfaDeviceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*VirtualMfaDeviceInput)(nil)).Elem(), &VirtualMfaDevice{}) + pulumi.RegisterInputType(reflect.TypeOf((*VirtualMfaDeviceArrayInput)(nil)).Elem(), VirtualMfaDeviceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VirtualMfaDeviceMapInput)(nil)).Elem(), VirtualMfaDeviceMap{}) + pulumi.RegisterOutputType(VirtualMfaDeviceOutput{}) + pulumi.RegisterOutputType(VirtualMfaDeviceArrayOutput{}) + pulumi.RegisterOutputType(VirtualMfaDeviceMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accessPoint.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accessPoint.go new file mode 100644 index 000000000..0897a039c --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accessPoint.go @@ -0,0 +1,495 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource to manage an S3 Access Point. +// +// > **NOTE on Access Points and Access Point Policies:** This provider provides both a standalone Access Point Policy resource and an Access Point resource with a resource policy defined in-line. You cannot use an Access Point with in-line resource policy in conjunction with an Access Point Policy resource. Doing so will cause a conflict of policies and will overwrite the access point's resource policy. +// +// > Advanced usage: To use a custom API endpoint for this resource, use the `s3control` endpoint provider configuration), not the `s3` endpoint provider configuration. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### AWS Partition General Purpose Bucket +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewAccessPoint(ctx, "example", &s3.AccessPointArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### S3 on Outposts Bucket +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3control" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3control.NewBucket(ctx, "example", &s3control.BucketArgs{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// exampleVpc, err := ec2.NewVpc(ctx, "example", &ec2.VpcArgs{ +// CidrBlock: pulumi.String("10.0.0.0/16"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewAccessPoint(ctx, "example", &s3.AccessPointArgs{ +// Bucket: example.Arn, +// Name: pulumi.String("example"), +// VpcConfiguration: &s3.AccessPointVpcConfigurationArgs{ +// VpcId: exampleVpc.ID(), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Import using the ARN for Access Points associated with an S3 on Outposts Bucket: +// +// __Using `pulumi import` to import.__ For example: +// +// Import using the `account_id` and `name` separated by a colon (`:`) for Access Points associated with an AWS Partition S3 Bucket: +// +// ```sh +// $ pulumi import aws:s3/accessPoint:AccessPoint example 123456789012:example +// ``` +// Import using the ARN for Access Points associated with an S3 on Outposts Bucket: +// +// ```sh +// $ pulumi import aws:s3/accessPoint:AccessPoint example arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-1234567890123456/accesspoint/example +// ``` +type AccessPoint struct { + pulumi.CustomResourceState + + // AWS account ID for the owner of the bucket for which you want to create an access point. Defaults to automatically determined account ID of the AWS provider. + AccountId pulumi.StringOutput `pulumi:"accountId"` + // Alias of the S3 Access Point. + Alias pulumi.StringOutput `pulumi:"alias"` + // ARN of the S3 Access Point. + Arn pulumi.StringOutput `pulumi:"arn"` + // Name of an AWS Partition S3 General Purpose Bucket or the ARN of S3 on Outposts Bucket that you want to associate this access point with. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // AWS account ID associated with the S3 bucket associated with this access point. + BucketAccountId pulumi.StringOutput `pulumi:"bucketAccountId"` + // DNS domain name of the S3 Access Point in the format _`name`_-_`accountId`_.s3-accesspoint._region_.amazonaws.com. + // Note: S3 access points only support secure access by HTTPS. HTTP isn't supported. + DomainName pulumi.StringOutput `pulumi:"domainName"` + // VPC endpoints for the S3 Access Point. + Endpoints pulumi.StringMapOutput `pulumi:"endpoints"` + // Indicates whether this access point currently has a policy that allows public access. + HasPublicAccessPolicy pulumi.BoolOutput `pulumi:"hasPublicAccessPolicy"` + // Name you want to assign to this access point. See the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-access-points.html?icmpid=docs_amazons3_console#access-points-names) for naming conditions. + // + // The following arguments are optional: + Name pulumi.StringOutput `pulumi:"name"` + // Indicates whether this access point allows access from the public Internet. Values are `VPC` (the access point doesn't allow access from the public Internet) and `Internet` (the access point allows access from the public Internet, subject to the access point and bucket access policies). + NetworkOrigin pulumi.StringOutput `pulumi:"networkOrigin"` + // Valid JSON document that specifies the policy that you want to apply to this access point. Removing `policy` from your configuration or setting `policy` to null or an empty string (i.e., `policy = ""`) _will not_ delete the policy since it could have been set by `s3control.AccessPointPolicy`. To remove the `policy`, set it to `"{}"` (an empty JSON document). + Policy pulumi.StringOutput `pulumi:"policy"` + // Configuration block to manage the `PublicAccessBlock` configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. Detailed below. + PublicAccessBlockConfiguration AccessPointPublicAccessBlockConfigurationPtrOutput `pulumi:"publicAccessBlockConfiguration"` + // Configuration block to restrict access to this access point to requests from the specified Virtual Private Cloud (VPC). Required for S3 on Outposts. Detailed below. + VpcConfiguration AccessPointVpcConfigurationPtrOutput `pulumi:"vpcConfiguration"` +} + +// NewAccessPoint registers a new resource with the given unique name, arguments, and options. +func NewAccessPoint(ctx *pulumi.Context, + name string, args *AccessPointArgs, opts ...pulumi.ResourceOption) (*AccessPoint, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource AccessPoint + err := ctx.RegisterResource("aws:s3/accessPoint:AccessPoint", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAccessPoint gets an existing AccessPoint 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 GetAccessPoint(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AccessPointState, opts ...pulumi.ResourceOption) (*AccessPoint, error) { + var resource AccessPoint + err := ctx.ReadResource("aws:s3/accessPoint:AccessPoint", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AccessPoint resources. +type accessPointState struct { + // AWS account ID for the owner of the bucket for which you want to create an access point. Defaults to automatically determined account ID of the AWS provider. + AccountId *string `pulumi:"accountId"` + // Alias of the S3 Access Point. + Alias *string `pulumi:"alias"` + // ARN of the S3 Access Point. + Arn *string `pulumi:"arn"` + // Name of an AWS Partition S3 General Purpose Bucket or the ARN of S3 on Outposts Bucket that you want to associate this access point with. + Bucket *string `pulumi:"bucket"` + // AWS account ID associated with the S3 bucket associated with this access point. + BucketAccountId *string `pulumi:"bucketAccountId"` + // DNS domain name of the S3 Access Point in the format _`name`_-_`accountId`_.s3-accesspoint._region_.amazonaws.com. + // Note: S3 access points only support secure access by HTTPS. HTTP isn't supported. + DomainName *string `pulumi:"domainName"` + // VPC endpoints for the S3 Access Point. + Endpoints map[string]string `pulumi:"endpoints"` + // Indicates whether this access point currently has a policy that allows public access. + HasPublicAccessPolicy *bool `pulumi:"hasPublicAccessPolicy"` + // Name you want to assign to this access point. See the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-access-points.html?icmpid=docs_amazons3_console#access-points-names) for naming conditions. + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Indicates whether this access point allows access from the public Internet. Values are `VPC` (the access point doesn't allow access from the public Internet) and `Internet` (the access point allows access from the public Internet, subject to the access point and bucket access policies). + NetworkOrigin *string `pulumi:"networkOrigin"` + // Valid JSON document that specifies the policy that you want to apply to this access point. Removing `policy` from your configuration or setting `policy` to null or an empty string (i.e., `policy = ""`) _will not_ delete the policy since it could have been set by `s3control.AccessPointPolicy`. To remove the `policy`, set it to `"{}"` (an empty JSON document). + Policy *string `pulumi:"policy"` + // Configuration block to manage the `PublicAccessBlock` configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. Detailed below. + PublicAccessBlockConfiguration *AccessPointPublicAccessBlockConfiguration `pulumi:"publicAccessBlockConfiguration"` + // Configuration block to restrict access to this access point to requests from the specified Virtual Private Cloud (VPC). Required for S3 on Outposts. Detailed below. + VpcConfiguration *AccessPointVpcConfiguration `pulumi:"vpcConfiguration"` +} + +type AccessPointState struct { + // AWS account ID for the owner of the bucket for which you want to create an access point. Defaults to automatically determined account ID of the AWS provider. + AccountId pulumi.StringPtrInput + // Alias of the S3 Access Point. + Alias pulumi.StringPtrInput + // ARN of the S3 Access Point. + Arn pulumi.StringPtrInput + // Name of an AWS Partition S3 General Purpose Bucket or the ARN of S3 on Outposts Bucket that you want to associate this access point with. + Bucket pulumi.StringPtrInput + // AWS account ID associated with the S3 bucket associated with this access point. + BucketAccountId pulumi.StringPtrInput + // DNS domain name of the S3 Access Point in the format _`name`_-_`accountId`_.s3-accesspoint._region_.amazonaws.com. + // Note: S3 access points only support secure access by HTTPS. HTTP isn't supported. + DomainName pulumi.StringPtrInput + // VPC endpoints for the S3 Access Point. + Endpoints pulumi.StringMapInput + // Indicates whether this access point currently has a policy that allows public access. + HasPublicAccessPolicy pulumi.BoolPtrInput + // Name you want to assign to this access point. See the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-access-points.html?icmpid=docs_amazons3_console#access-points-names) for naming conditions. + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Indicates whether this access point allows access from the public Internet. Values are `VPC` (the access point doesn't allow access from the public Internet) and `Internet` (the access point allows access from the public Internet, subject to the access point and bucket access policies). + NetworkOrigin pulumi.StringPtrInput + // Valid JSON document that specifies the policy that you want to apply to this access point. Removing `policy` from your configuration or setting `policy` to null or an empty string (i.e., `policy = ""`) _will not_ delete the policy since it could have been set by `s3control.AccessPointPolicy`. To remove the `policy`, set it to `"{}"` (an empty JSON document). + Policy pulumi.StringPtrInput + // Configuration block to manage the `PublicAccessBlock` configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. Detailed below. + PublicAccessBlockConfiguration AccessPointPublicAccessBlockConfigurationPtrInput + // Configuration block to restrict access to this access point to requests from the specified Virtual Private Cloud (VPC). Required for S3 on Outposts. Detailed below. + VpcConfiguration AccessPointVpcConfigurationPtrInput +} + +func (AccessPointState) ElementType() reflect.Type { + return reflect.TypeOf((*accessPointState)(nil)).Elem() +} + +type accessPointArgs struct { + // AWS account ID for the owner of the bucket for which you want to create an access point. Defaults to automatically determined account ID of the AWS provider. + AccountId *string `pulumi:"accountId"` + // Name of an AWS Partition S3 General Purpose Bucket or the ARN of S3 on Outposts Bucket that you want to associate this access point with. + Bucket string `pulumi:"bucket"` + // AWS account ID associated with the S3 bucket associated with this access point. + BucketAccountId *string `pulumi:"bucketAccountId"` + // Name you want to assign to this access point. See the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-access-points.html?icmpid=docs_amazons3_console#access-points-names) for naming conditions. + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Valid JSON document that specifies the policy that you want to apply to this access point. Removing `policy` from your configuration or setting `policy` to null or an empty string (i.e., `policy = ""`) _will not_ delete the policy since it could have been set by `s3control.AccessPointPolicy`. To remove the `policy`, set it to `"{}"` (an empty JSON document). + Policy *string `pulumi:"policy"` + // Configuration block to manage the `PublicAccessBlock` configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. Detailed below. + PublicAccessBlockConfiguration *AccessPointPublicAccessBlockConfiguration `pulumi:"publicAccessBlockConfiguration"` + // Configuration block to restrict access to this access point to requests from the specified Virtual Private Cloud (VPC). Required for S3 on Outposts. Detailed below. + VpcConfiguration *AccessPointVpcConfiguration `pulumi:"vpcConfiguration"` +} + +// The set of arguments for constructing a AccessPoint resource. +type AccessPointArgs struct { + // AWS account ID for the owner of the bucket for which you want to create an access point. Defaults to automatically determined account ID of the AWS provider. + AccountId pulumi.StringPtrInput + // Name of an AWS Partition S3 General Purpose Bucket or the ARN of S3 on Outposts Bucket that you want to associate this access point with. + Bucket pulumi.StringInput + // AWS account ID associated with the S3 bucket associated with this access point. + BucketAccountId pulumi.StringPtrInput + // Name you want to assign to this access point. See the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-access-points.html?icmpid=docs_amazons3_console#access-points-names) for naming conditions. + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Valid JSON document that specifies the policy that you want to apply to this access point. Removing `policy` from your configuration or setting `policy` to null or an empty string (i.e., `policy = ""`) _will not_ delete the policy since it could have been set by `s3control.AccessPointPolicy`. To remove the `policy`, set it to `"{}"` (an empty JSON document). + Policy pulumi.StringPtrInput + // Configuration block to manage the `PublicAccessBlock` configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. Detailed below. + PublicAccessBlockConfiguration AccessPointPublicAccessBlockConfigurationPtrInput + // Configuration block to restrict access to this access point to requests from the specified Virtual Private Cloud (VPC). Required for S3 on Outposts. Detailed below. + VpcConfiguration AccessPointVpcConfigurationPtrInput +} + +func (AccessPointArgs) ElementType() reflect.Type { + return reflect.TypeOf((*accessPointArgs)(nil)).Elem() +} + +type AccessPointInput interface { + pulumi.Input + + ToAccessPointOutput() AccessPointOutput + ToAccessPointOutputWithContext(ctx context.Context) AccessPointOutput +} + +func (*AccessPoint) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPoint)(nil)).Elem() +} + +func (i *AccessPoint) ToAccessPointOutput() AccessPointOutput { + return i.ToAccessPointOutputWithContext(context.Background()) +} + +func (i *AccessPoint) ToAccessPointOutputWithContext(ctx context.Context) AccessPointOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointOutput) +} + +// AccessPointArrayInput is an input type that accepts AccessPointArray and AccessPointArrayOutput values. +// You can construct a concrete instance of `AccessPointArrayInput` via: +// +// AccessPointArray{ AccessPointArgs{...} } +type AccessPointArrayInput interface { + pulumi.Input + + ToAccessPointArrayOutput() AccessPointArrayOutput + ToAccessPointArrayOutputWithContext(context.Context) AccessPointArrayOutput +} + +type AccessPointArray []AccessPointInput + +func (AccessPointArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccessPoint)(nil)).Elem() +} + +func (i AccessPointArray) ToAccessPointArrayOutput() AccessPointArrayOutput { + return i.ToAccessPointArrayOutputWithContext(context.Background()) +} + +func (i AccessPointArray) ToAccessPointArrayOutputWithContext(ctx context.Context) AccessPointArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointArrayOutput) +} + +// AccessPointMapInput is an input type that accepts AccessPointMap and AccessPointMapOutput values. +// You can construct a concrete instance of `AccessPointMapInput` via: +// +// AccessPointMap{ "key": AccessPointArgs{...} } +type AccessPointMapInput interface { + pulumi.Input + + ToAccessPointMapOutput() AccessPointMapOutput + ToAccessPointMapOutputWithContext(context.Context) AccessPointMapOutput +} + +type AccessPointMap map[string]AccessPointInput + +func (AccessPointMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccessPoint)(nil)).Elem() +} + +func (i AccessPointMap) ToAccessPointMapOutput() AccessPointMapOutput { + return i.ToAccessPointMapOutputWithContext(context.Background()) +} + +func (i AccessPointMap) ToAccessPointMapOutputWithContext(ctx context.Context) AccessPointMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointMapOutput) +} + +type AccessPointOutput struct{ *pulumi.OutputState } + +func (AccessPointOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPoint)(nil)).Elem() +} + +func (o AccessPointOutput) ToAccessPointOutput() AccessPointOutput { + return o +} + +func (o AccessPointOutput) ToAccessPointOutputWithContext(ctx context.Context) AccessPointOutput { + return o +} + +// AWS account ID for the owner of the bucket for which you want to create an access point. Defaults to automatically determined account ID of the AWS provider. +func (o AccessPointOutput) AccountId() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.AccountId }).(pulumi.StringOutput) +} + +// Alias of the S3 Access Point. +func (o AccessPointOutput) Alias() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.Alias }).(pulumi.StringOutput) +} + +// ARN of the S3 Access Point. +func (o AccessPointOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Name of an AWS Partition S3 General Purpose Bucket or the ARN of S3 on Outposts Bucket that you want to associate this access point with. +func (o AccessPointOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// AWS account ID associated with the S3 bucket associated with this access point. +func (o AccessPointOutput) BucketAccountId() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.BucketAccountId }).(pulumi.StringOutput) +} + +// DNS domain name of the S3 Access Point in the format _`name`_-_`accountId`_.s3-accesspoint._region_.amazonaws.com. +// Note: S3 access points only support secure access by HTTPS. HTTP isn't supported. +func (o AccessPointOutput) DomainName() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.DomainName }).(pulumi.StringOutput) +} + +// VPC endpoints for the S3 Access Point. +func (o AccessPointOutput) Endpoints() pulumi.StringMapOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringMapOutput { return v.Endpoints }).(pulumi.StringMapOutput) +} + +// Indicates whether this access point currently has a policy that allows public access. +func (o AccessPointOutput) HasPublicAccessPolicy() pulumi.BoolOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.BoolOutput { return v.HasPublicAccessPolicy }).(pulumi.BoolOutput) +} + +// Name you want to assign to this access point. See the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-access-points.html?icmpid=docs_amazons3_console#access-points-names) for naming conditions. +// +// The following arguments are optional: +func (o AccessPointOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Indicates whether this access point allows access from the public Internet. Values are `VPC` (the access point doesn't allow access from the public Internet) and `Internet` (the access point allows access from the public Internet, subject to the access point and bucket access policies). +func (o AccessPointOutput) NetworkOrigin() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.NetworkOrigin }).(pulumi.StringOutput) +} + +// Valid JSON document that specifies the policy that you want to apply to this access point. Removing `policy` from your configuration or setting `policy` to null or an empty string (i.e., `policy = ""`) _will not_ delete the policy since it could have been set by `s3control.AccessPointPolicy`. To remove the `policy`, set it to `"{}"` (an empty JSON document). +func (o AccessPointOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *AccessPoint) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +// Configuration block to manage the `PublicAccessBlock` configuration that you want to apply to this Amazon S3 bucket. You can enable the configuration options in any combination. Detailed below. +func (o AccessPointOutput) PublicAccessBlockConfiguration() AccessPointPublicAccessBlockConfigurationPtrOutput { + return o.ApplyT(func(v *AccessPoint) AccessPointPublicAccessBlockConfigurationPtrOutput { + return v.PublicAccessBlockConfiguration + }).(AccessPointPublicAccessBlockConfigurationPtrOutput) +} + +// Configuration block to restrict access to this access point to requests from the specified Virtual Private Cloud (VPC). Required for S3 on Outposts. Detailed below. +func (o AccessPointOutput) VpcConfiguration() AccessPointVpcConfigurationPtrOutput { + return o.ApplyT(func(v *AccessPoint) AccessPointVpcConfigurationPtrOutput { return v.VpcConfiguration }).(AccessPointVpcConfigurationPtrOutput) +} + +type AccessPointArrayOutput struct{ *pulumi.OutputState } + +func (AccessPointArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccessPoint)(nil)).Elem() +} + +func (o AccessPointArrayOutput) ToAccessPointArrayOutput() AccessPointArrayOutput { + return o +} + +func (o AccessPointArrayOutput) ToAccessPointArrayOutputWithContext(ctx context.Context) AccessPointArrayOutput { + return o +} + +func (o AccessPointArrayOutput) Index(i pulumi.IntInput) AccessPointOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AccessPoint { + return vs[0].([]*AccessPoint)[vs[1].(int)] + }).(AccessPointOutput) +} + +type AccessPointMapOutput struct{ *pulumi.OutputState } + +func (AccessPointMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccessPoint)(nil)).Elem() +} + +func (o AccessPointMapOutput) ToAccessPointMapOutput() AccessPointMapOutput { + return o +} + +func (o AccessPointMapOutput) ToAccessPointMapOutputWithContext(ctx context.Context) AccessPointMapOutput { + return o +} + +func (o AccessPointMapOutput) MapIndex(k pulumi.StringInput) AccessPointOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AccessPoint { + return vs[0].(map[string]*AccessPoint)[vs[1].(string)] + }).(AccessPointOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AccessPointInput)(nil)).Elem(), &AccessPoint{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPointArrayInput)(nil)).Elem(), AccessPointArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPointMapInput)(nil)).Elem(), AccessPointMap{}) + pulumi.RegisterOutputType(AccessPointOutput{}) + pulumi.RegisterOutputType(AccessPointArrayOutput{}) + pulumi.RegisterOutputType(AccessPointMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accountPublicAccessBlock.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accountPublicAccessBlock.go new file mode 100644 index 000000000..826d2725d --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/accountPublicAccessBlock.go @@ -0,0 +1,344 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages S3 account-level Public Access Block configuration. For more information about these settings, see the [AWS S3 Block Public Access documentation](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html). +// +// > **NOTE:** Each AWS account may only have one S3 Public Access Block configuration. Multiple configurations of the resource against the same AWS account will cause a perpetual difference. +// +// > Advanced usage: To use a custom API endpoint for this resource, use the `s3control` endpoint provider configuration, not the `s3` endpoint provider configuration. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewAccountPublicAccessBlock(ctx, "example", &s3.AccountPublicAccessBlockArgs{ +// BlockPublicAcls: pulumi.Bool(true), +// BlockPublicPolicy: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import `aws_s3_account_public_access_block` using the AWS account ID. For example: +// +// ```sh +// $ pulumi import aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock example 123456789012 +// ``` +type AccountPublicAccessBlock struct { + pulumi.CustomResourceState + + // AWS account ID to configure. Defaults to automatically determined account ID of the this provider AWS provider. + AccountId pulumi.StringOutput `pulumi:"accountId"` + // Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls fail if the request includes a public ACL. + BlockPublicAcls pulumi.BoolPtrOutput `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy pulumi.BoolPtrOutput `pulumi:"blockPublicPolicy"` + // Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore all public ACLs on buckets in this account and any objects that they contain. + IgnorePublicAcls pulumi.BoolPtrOutput `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access buckets with public policies. + RestrictPublicBuckets pulumi.BoolPtrOutput `pulumi:"restrictPublicBuckets"` +} + +// NewAccountPublicAccessBlock registers a new resource with the given unique name, arguments, and options. +func NewAccountPublicAccessBlock(ctx *pulumi.Context, + name string, args *AccountPublicAccessBlockArgs, opts ...pulumi.ResourceOption) (*AccountPublicAccessBlock, error) { + if args == nil { + args = &AccountPublicAccessBlockArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource AccountPublicAccessBlock + err := ctx.RegisterResource("aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAccountPublicAccessBlock gets an existing AccountPublicAccessBlock 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 GetAccountPublicAccessBlock(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AccountPublicAccessBlockState, opts ...pulumi.ResourceOption) (*AccountPublicAccessBlock, error) { + var resource AccountPublicAccessBlock + err := ctx.ReadResource("aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AccountPublicAccessBlock resources. +type accountPublicAccessBlockState struct { + // AWS account ID to configure. Defaults to automatically determined account ID of the this provider AWS provider. + AccountId *string `pulumi:"accountId"` + // Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls fail if the request includes a public ACL. + BlockPublicAcls *bool `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy *bool `pulumi:"blockPublicPolicy"` + // Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore all public ACLs on buckets in this account and any objects that they contain. + IgnorePublicAcls *bool `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access buckets with public policies. + RestrictPublicBuckets *bool `pulumi:"restrictPublicBuckets"` +} + +type AccountPublicAccessBlockState struct { + // AWS account ID to configure. Defaults to automatically determined account ID of the this provider AWS provider. + AccountId pulumi.StringPtrInput + // Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls fail if the request includes a public ACL. + BlockPublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy pulumi.BoolPtrInput + // Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore all public ACLs on buckets in this account and any objects that they contain. + IgnorePublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access buckets with public policies. + RestrictPublicBuckets pulumi.BoolPtrInput +} + +func (AccountPublicAccessBlockState) ElementType() reflect.Type { + return reflect.TypeOf((*accountPublicAccessBlockState)(nil)).Elem() +} + +type accountPublicAccessBlockArgs struct { + // AWS account ID to configure. Defaults to automatically determined account ID of the this provider AWS provider. + AccountId *string `pulumi:"accountId"` + // Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls fail if the request includes a public ACL. + BlockPublicAcls *bool `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy *bool `pulumi:"blockPublicPolicy"` + // Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore all public ACLs on buckets in this account and any objects that they contain. + IgnorePublicAcls *bool `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access buckets with public policies. + RestrictPublicBuckets *bool `pulumi:"restrictPublicBuckets"` +} + +// The set of arguments for constructing a AccountPublicAccessBlock resource. +type AccountPublicAccessBlockArgs struct { + // AWS account ID to configure. Defaults to automatically determined account ID of the this provider AWS provider. + AccountId pulumi.StringPtrInput + // Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls fail if the request includes a public ACL. + BlockPublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy pulumi.BoolPtrInput + // Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore all public ACLs on buckets in this account and any objects that they contain. + IgnorePublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access buckets with public policies. + RestrictPublicBuckets pulumi.BoolPtrInput +} + +func (AccountPublicAccessBlockArgs) ElementType() reflect.Type { + return reflect.TypeOf((*accountPublicAccessBlockArgs)(nil)).Elem() +} + +type AccountPublicAccessBlockInput interface { + pulumi.Input + + ToAccountPublicAccessBlockOutput() AccountPublicAccessBlockOutput + ToAccountPublicAccessBlockOutputWithContext(ctx context.Context) AccountPublicAccessBlockOutput +} + +func (*AccountPublicAccessBlock) ElementType() reflect.Type { + return reflect.TypeOf((**AccountPublicAccessBlock)(nil)).Elem() +} + +func (i *AccountPublicAccessBlock) ToAccountPublicAccessBlockOutput() AccountPublicAccessBlockOutput { + return i.ToAccountPublicAccessBlockOutputWithContext(context.Background()) +} + +func (i *AccountPublicAccessBlock) ToAccountPublicAccessBlockOutputWithContext(ctx context.Context) AccountPublicAccessBlockOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountPublicAccessBlockOutput) +} + +// AccountPublicAccessBlockArrayInput is an input type that accepts AccountPublicAccessBlockArray and AccountPublicAccessBlockArrayOutput values. +// You can construct a concrete instance of `AccountPublicAccessBlockArrayInput` via: +// +// AccountPublicAccessBlockArray{ AccountPublicAccessBlockArgs{...} } +type AccountPublicAccessBlockArrayInput interface { + pulumi.Input + + ToAccountPublicAccessBlockArrayOutput() AccountPublicAccessBlockArrayOutput + ToAccountPublicAccessBlockArrayOutputWithContext(context.Context) AccountPublicAccessBlockArrayOutput +} + +type AccountPublicAccessBlockArray []AccountPublicAccessBlockInput + +func (AccountPublicAccessBlockArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountPublicAccessBlock)(nil)).Elem() +} + +func (i AccountPublicAccessBlockArray) ToAccountPublicAccessBlockArrayOutput() AccountPublicAccessBlockArrayOutput { + return i.ToAccountPublicAccessBlockArrayOutputWithContext(context.Background()) +} + +func (i AccountPublicAccessBlockArray) ToAccountPublicAccessBlockArrayOutputWithContext(ctx context.Context) AccountPublicAccessBlockArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountPublicAccessBlockArrayOutput) +} + +// AccountPublicAccessBlockMapInput is an input type that accepts AccountPublicAccessBlockMap and AccountPublicAccessBlockMapOutput values. +// You can construct a concrete instance of `AccountPublicAccessBlockMapInput` via: +// +// AccountPublicAccessBlockMap{ "key": AccountPublicAccessBlockArgs{...} } +type AccountPublicAccessBlockMapInput interface { + pulumi.Input + + ToAccountPublicAccessBlockMapOutput() AccountPublicAccessBlockMapOutput + ToAccountPublicAccessBlockMapOutputWithContext(context.Context) AccountPublicAccessBlockMapOutput +} + +type AccountPublicAccessBlockMap map[string]AccountPublicAccessBlockInput + +func (AccountPublicAccessBlockMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountPublicAccessBlock)(nil)).Elem() +} + +func (i AccountPublicAccessBlockMap) ToAccountPublicAccessBlockMapOutput() AccountPublicAccessBlockMapOutput { + return i.ToAccountPublicAccessBlockMapOutputWithContext(context.Background()) +} + +func (i AccountPublicAccessBlockMap) ToAccountPublicAccessBlockMapOutputWithContext(ctx context.Context) AccountPublicAccessBlockMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccountPublicAccessBlockMapOutput) +} + +type AccountPublicAccessBlockOutput struct{ *pulumi.OutputState } + +func (AccountPublicAccessBlockOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccountPublicAccessBlock)(nil)).Elem() +} + +func (o AccountPublicAccessBlockOutput) ToAccountPublicAccessBlockOutput() AccountPublicAccessBlockOutput { + return o +} + +func (o AccountPublicAccessBlockOutput) ToAccountPublicAccessBlockOutputWithContext(ctx context.Context) AccountPublicAccessBlockOutput { + return o +} + +// AWS account ID to configure. Defaults to automatically determined account ID of the this provider AWS provider. +func (o AccountPublicAccessBlockOutput) AccountId() pulumi.StringOutput { + return o.ApplyT(func(v *AccountPublicAccessBlock) pulumi.StringOutput { return v.AccountId }).(pulumi.StringOutput) +} + +// Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: +// * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. +// * PUT Object calls fail if the request includes a public ACL. +func (o AccountPublicAccessBlockOutput) BlockPublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccountPublicAccessBlock) pulumi.BoolPtrOutput { return v.BlockPublicAcls }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: +// * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. +func (o AccountPublicAccessBlockOutput) BlockPublicPolicy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccountPublicAccessBlock) pulumi.BoolPtrOutput { return v.BlockPublicPolicy }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: +// * Ignore all public ACLs on buckets in this account and any objects that they contain. +func (o AccountPublicAccessBlockOutput) IgnorePublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccountPublicAccessBlock) pulumi.BoolPtrOutput { return v.IgnorePublicAcls }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `false`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: +// * Only the bucket owner and AWS Services can access buckets with public policies. +func (o AccountPublicAccessBlockOutput) RestrictPublicBuckets() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccountPublicAccessBlock) pulumi.BoolPtrOutput { return v.RestrictPublicBuckets }).(pulumi.BoolPtrOutput) +} + +type AccountPublicAccessBlockArrayOutput struct{ *pulumi.OutputState } + +func (AccountPublicAccessBlockArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AccountPublicAccessBlock)(nil)).Elem() +} + +func (o AccountPublicAccessBlockArrayOutput) ToAccountPublicAccessBlockArrayOutput() AccountPublicAccessBlockArrayOutput { + return o +} + +func (o AccountPublicAccessBlockArrayOutput) ToAccountPublicAccessBlockArrayOutputWithContext(ctx context.Context) AccountPublicAccessBlockArrayOutput { + return o +} + +func (o AccountPublicAccessBlockArrayOutput) Index(i pulumi.IntInput) AccountPublicAccessBlockOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AccountPublicAccessBlock { + return vs[0].([]*AccountPublicAccessBlock)[vs[1].(int)] + }).(AccountPublicAccessBlockOutput) +} + +type AccountPublicAccessBlockMapOutput struct{ *pulumi.OutputState } + +func (AccountPublicAccessBlockMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AccountPublicAccessBlock)(nil)).Elem() +} + +func (o AccountPublicAccessBlockMapOutput) ToAccountPublicAccessBlockMapOutput() AccountPublicAccessBlockMapOutput { + return o +} + +func (o AccountPublicAccessBlockMapOutput) ToAccountPublicAccessBlockMapOutputWithContext(ctx context.Context) AccountPublicAccessBlockMapOutput { + return o +} + +func (o AccountPublicAccessBlockMapOutput) MapIndex(k pulumi.StringInput) AccountPublicAccessBlockOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AccountPublicAccessBlock { + return vs[0].(map[string]*AccountPublicAccessBlock)[vs[1].(string)] + }).(AccountPublicAccessBlockOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AccountPublicAccessBlockInput)(nil)).Elem(), &AccountPublicAccessBlock{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountPublicAccessBlockArrayInput)(nil)).Elem(), AccountPublicAccessBlockArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccountPublicAccessBlockMapInput)(nil)).Elem(), AccountPublicAccessBlockMap{}) + pulumi.RegisterOutputType(AccountPublicAccessBlockOutput{}) + pulumi.RegisterOutputType(AccountPublicAccessBlockArrayOutput{}) + pulumi.RegisterOutputType(AccountPublicAccessBlockMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/analyticsConfiguration.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/analyticsConfiguration.go new file mode 100644 index 000000000..06c6aaadf --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/analyticsConfiguration.go @@ -0,0 +1,366 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a S3 bucket [analytics configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-storage-class.html) resource. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### Add analytics configuration for entire S3 bucket and export results to a second S3 bucket +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// analytics, err := s3.NewBucketV2(ctx, "analytics", &s3.BucketV2Args{ +// Bucket: pulumi.String("analytics-destination"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewAnalyticsConfiguration(ctx, "example-entire-bucket", &s3.AnalyticsConfigurationArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("EntireBucket"), +// StorageClassAnalysis: &s3.AnalyticsConfigurationStorageClassAnalysisArgs{ +// DataExport: &s3.AnalyticsConfigurationStorageClassAnalysisDataExportArgs{ +// Destination: &s3.AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs{ +// S3BucketDestination: &s3.AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs{ +// BucketArn: analytics.Arn, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add analytics configuration with S3 object filter +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewAnalyticsConfiguration(ctx, "example-filtered", &s3.AnalyticsConfigurationArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("ImportantBlueDocuments"), +// Filter: &s3.AnalyticsConfigurationFilterArgs{ +// Prefix: pulumi.String("documents/"), +// Tags: pulumi.StringMap{ +// "priority": pulumi.String("high"), +// "class": pulumi.String("blue"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket analytics configurations using `bucket:analytics`. For example: +// +// ```sh +// $ pulumi import aws:s3/analyticsConfiguration:AnalyticsConfiguration my-bucket-entire-bucket my-bucket:EntireBucket +// ``` +type AnalyticsConfiguration struct { + pulumi.CustomResourceState + + // Name of the bucket this analytics configuration is associated with. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter AnalyticsConfigurationFilterPtrOutput `pulumi:"filter"` + // Unique identifier of the analytics configuration for the bucket. + Name pulumi.StringOutput `pulumi:"name"` + // Configuration for the analytics data export (documented below). + StorageClassAnalysis AnalyticsConfigurationStorageClassAnalysisPtrOutput `pulumi:"storageClassAnalysis"` +} + +// NewAnalyticsConfiguration registers a new resource with the given unique name, arguments, and options. +func NewAnalyticsConfiguration(ctx *pulumi.Context, + name string, args *AnalyticsConfigurationArgs, opts ...pulumi.ResourceOption) (*AnalyticsConfiguration, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource AnalyticsConfiguration + err := ctx.RegisterResource("aws:s3/analyticsConfiguration:AnalyticsConfiguration", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetAnalyticsConfiguration gets an existing AnalyticsConfiguration 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 GetAnalyticsConfiguration(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *AnalyticsConfigurationState, opts ...pulumi.ResourceOption) (*AnalyticsConfiguration, error) { + var resource AnalyticsConfiguration + err := ctx.ReadResource("aws:s3/analyticsConfiguration:AnalyticsConfiguration", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering AnalyticsConfiguration resources. +type analyticsConfigurationState struct { + // Name of the bucket this analytics configuration is associated with. + Bucket *string `pulumi:"bucket"` + // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter *AnalyticsConfigurationFilter `pulumi:"filter"` + // Unique identifier of the analytics configuration for the bucket. + Name *string `pulumi:"name"` + // Configuration for the analytics data export (documented below). + StorageClassAnalysis *AnalyticsConfigurationStorageClassAnalysis `pulumi:"storageClassAnalysis"` +} + +type AnalyticsConfigurationState struct { + // Name of the bucket this analytics configuration is associated with. + Bucket pulumi.StringPtrInput + // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter AnalyticsConfigurationFilterPtrInput + // Unique identifier of the analytics configuration for the bucket. + Name pulumi.StringPtrInput + // Configuration for the analytics data export (documented below). + StorageClassAnalysis AnalyticsConfigurationStorageClassAnalysisPtrInput +} + +func (AnalyticsConfigurationState) ElementType() reflect.Type { + return reflect.TypeOf((*analyticsConfigurationState)(nil)).Elem() +} + +type analyticsConfigurationArgs struct { + // Name of the bucket this analytics configuration is associated with. + Bucket string `pulumi:"bucket"` + // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter *AnalyticsConfigurationFilter `pulumi:"filter"` + // Unique identifier of the analytics configuration for the bucket. + Name *string `pulumi:"name"` + // Configuration for the analytics data export (documented below). + StorageClassAnalysis *AnalyticsConfigurationStorageClassAnalysis `pulumi:"storageClassAnalysis"` +} + +// The set of arguments for constructing a AnalyticsConfiguration resource. +type AnalyticsConfigurationArgs struct { + // Name of the bucket this analytics configuration is associated with. + Bucket pulumi.StringInput + // Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter AnalyticsConfigurationFilterPtrInput + // Unique identifier of the analytics configuration for the bucket. + Name pulumi.StringPtrInput + // Configuration for the analytics data export (documented below). + StorageClassAnalysis AnalyticsConfigurationStorageClassAnalysisPtrInput +} + +func (AnalyticsConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*analyticsConfigurationArgs)(nil)).Elem() +} + +type AnalyticsConfigurationInput interface { + pulumi.Input + + ToAnalyticsConfigurationOutput() AnalyticsConfigurationOutput + ToAnalyticsConfigurationOutputWithContext(ctx context.Context) AnalyticsConfigurationOutput +} + +func (*AnalyticsConfiguration) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfiguration)(nil)).Elem() +} + +func (i *AnalyticsConfiguration) ToAnalyticsConfigurationOutput() AnalyticsConfigurationOutput { + return i.ToAnalyticsConfigurationOutputWithContext(context.Background()) +} + +func (i *AnalyticsConfiguration) ToAnalyticsConfigurationOutputWithContext(ctx context.Context) AnalyticsConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationOutput) +} + +// AnalyticsConfigurationArrayInput is an input type that accepts AnalyticsConfigurationArray and AnalyticsConfigurationArrayOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationArrayInput` via: +// +// AnalyticsConfigurationArray{ AnalyticsConfigurationArgs{...} } +type AnalyticsConfigurationArrayInput interface { + pulumi.Input + + ToAnalyticsConfigurationArrayOutput() AnalyticsConfigurationArrayOutput + ToAnalyticsConfigurationArrayOutputWithContext(context.Context) AnalyticsConfigurationArrayOutput +} + +type AnalyticsConfigurationArray []AnalyticsConfigurationInput + +func (AnalyticsConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AnalyticsConfiguration)(nil)).Elem() +} + +func (i AnalyticsConfigurationArray) ToAnalyticsConfigurationArrayOutput() AnalyticsConfigurationArrayOutput { + return i.ToAnalyticsConfigurationArrayOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationArray) ToAnalyticsConfigurationArrayOutputWithContext(ctx context.Context) AnalyticsConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationArrayOutput) +} + +// AnalyticsConfigurationMapInput is an input type that accepts AnalyticsConfigurationMap and AnalyticsConfigurationMapOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationMapInput` via: +// +// AnalyticsConfigurationMap{ "key": AnalyticsConfigurationArgs{...} } +type AnalyticsConfigurationMapInput interface { + pulumi.Input + + ToAnalyticsConfigurationMapOutput() AnalyticsConfigurationMapOutput + ToAnalyticsConfigurationMapOutputWithContext(context.Context) AnalyticsConfigurationMapOutput +} + +type AnalyticsConfigurationMap map[string]AnalyticsConfigurationInput + +func (AnalyticsConfigurationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AnalyticsConfiguration)(nil)).Elem() +} + +func (i AnalyticsConfigurationMap) ToAnalyticsConfigurationMapOutput() AnalyticsConfigurationMapOutput { + return i.ToAnalyticsConfigurationMapOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationMap) ToAnalyticsConfigurationMapOutputWithContext(ctx context.Context) AnalyticsConfigurationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationMapOutput) +} + +type AnalyticsConfigurationOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfiguration)(nil)).Elem() +} + +func (o AnalyticsConfigurationOutput) ToAnalyticsConfigurationOutput() AnalyticsConfigurationOutput { + return o +} + +func (o AnalyticsConfigurationOutput) ToAnalyticsConfigurationOutputWithContext(ctx context.Context) AnalyticsConfigurationOutput { + return o +} + +// Name of the bucket this analytics configuration is associated with. +func (o AnalyticsConfigurationOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *AnalyticsConfiguration) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Object filtering that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). +func (o AnalyticsConfigurationOutput) Filter() AnalyticsConfigurationFilterPtrOutput { + return o.ApplyT(func(v *AnalyticsConfiguration) AnalyticsConfigurationFilterPtrOutput { return v.Filter }).(AnalyticsConfigurationFilterPtrOutput) +} + +// Unique identifier of the analytics configuration for the bucket. +func (o AnalyticsConfigurationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *AnalyticsConfiguration) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Configuration for the analytics data export (documented below). +func (o AnalyticsConfigurationOutput) StorageClassAnalysis() AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return o.ApplyT(func(v *AnalyticsConfiguration) AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return v.StorageClassAnalysis + }).(AnalyticsConfigurationStorageClassAnalysisPtrOutput) +} + +type AnalyticsConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*AnalyticsConfiguration)(nil)).Elem() +} + +func (o AnalyticsConfigurationArrayOutput) ToAnalyticsConfigurationArrayOutput() AnalyticsConfigurationArrayOutput { + return o +} + +func (o AnalyticsConfigurationArrayOutput) ToAnalyticsConfigurationArrayOutputWithContext(ctx context.Context) AnalyticsConfigurationArrayOutput { + return o +} + +func (o AnalyticsConfigurationArrayOutput) Index(i pulumi.IntInput) AnalyticsConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *AnalyticsConfiguration { + return vs[0].([]*AnalyticsConfiguration)[vs[1].(int)] + }).(AnalyticsConfigurationOutput) +} + +type AnalyticsConfigurationMapOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*AnalyticsConfiguration)(nil)).Elem() +} + +func (o AnalyticsConfigurationMapOutput) ToAnalyticsConfigurationMapOutput() AnalyticsConfigurationMapOutput { + return o +} + +func (o AnalyticsConfigurationMapOutput) ToAnalyticsConfigurationMapOutputWithContext(ctx context.Context) AnalyticsConfigurationMapOutput { + return o +} + +func (o AnalyticsConfigurationMapOutput) MapIndex(k pulumi.StringInput) AnalyticsConfigurationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *AnalyticsConfiguration { + return vs[0].(map[string]*AnalyticsConfiguration)[vs[1].(string)] + }).(AnalyticsConfigurationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationInput)(nil)).Elem(), &AnalyticsConfiguration{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationArrayInput)(nil)).Elem(), AnalyticsConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationMapInput)(nil)).Elem(), AnalyticsConfigurationMap{}) + pulumi.RegisterOutputType(AnalyticsConfigurationOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationArrayOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucket.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucket.go new file mode 100644 index 000000000..d52a760aa --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucket.go @@ -0,0 +1,1135 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a S3 bucket resource. +// +// > **NOTE:** Please use [aws.s3.BucketV2](https://www.pulumi.com/registry/packages/aws/api-docs/s3/bucketv2) instead. +// This resource is maintained for backwards compatibility only. Please see [BucketV2 Migration +// Guide](https://www.pulumi.com/registry/packages/aws/how-to-guides/bucketv2-migration/) for instructions on migrating +// existing Bucket resources to BucketV2. +// +// ## Example Usage +// +// ### Private Bucket w/ Tags +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucket(ctx, "b", &s3.BucketArgs{ +// Bucket: pulumi.String("my-tf-test-bucket"), +// Acl: pulumi.String(s3.CannedAclPrivate), +// Tags: pulumi.StringMap{ +// "Name": pulumi.String("My bucket"), +// "Environment": pulumi.String("Dev"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Static Website Hosting +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFile, err := std.File(ctx, &std.FileArgs{ +// Input: "policy.json", +// }, nil) +// if err != nil { +// return err +// } +// _, err = s3.NewBucket(ctx, "b", &s3.BucketArgs{ +// Bucket: pulumi.String("s3-website-test.mydomain.com"), +// Acl: pulumi.String(s3.CannedAclPublicRead), +// Policy: pulumi.String(invokeFile.Result), +// Website: &s3.BucketWebsiteArgs{ +// IndexDocument: pulumi.String("index.html"), +// ErrorDocument: pulumi.String("error.html"), +// RoutingRules: pulumi.Any(`[{ +// "Condition": { +// "KeyPrefixEquals": "docs/" +// }, +// "Redirect": { +// "ReplaceKeyPrefixWith": "documents/" +// } +// }] +// +// `), +// +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Using CORS +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucket(ctx, "b", &s3.BucketArgs{ +// Bucket: pulumi.String("s3-website-test.mydomain.com"), +// Acl: pulumi.String(s3.CannedAclPublicRead), +// CorsRules: s3.BucketCorsRuleArray{ +// &s3.BucketCorsRuleArgs{ +// AllowedHeaders: pulumi.StringArray{ +// pulumi.String("*"), +// }, +// AllowedMethods: pulumi.StringArray{ +// pulumi.String("PUT"), +// pulumi.String("POST"), +// }, +// AllowedOrigins: pulumi.StringArray{ +// pulumi.String("https://s3-website-test.mydomain.com"), +// }, +// ExposeHeaders: pulumi.StringArray{ +// pulumi.String("ETag"), +// }, +// MaxAgeSeconds: pulumi.Int(3000), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Using versioning +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucket(ctx, "b", &s3.BucketArgs{ +// Bucket: pulumi.String("my-tf-test-bucket"), +// Acl: pulumi.String(s3.CannedAclPrivate), +// Versioning: &s3.BucketVersioningArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Enable Logging +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// logBucket, err := s3.NewBucket(ctx, "log_bucket", &s3.BucketArgs{ +// Bucket: pulumi.String("my-tf-log-bucket"), +// Acl: pulumi.String(s3.CannedAclLogDeliveryWrite), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucket(ctx, "b", &s3.BucketArgs{ +// Bucket: pulumi.String("my-tf-test-bucket"), +// Acl: pulumi.String(s3.CannedAclPrivate), +// Loggings: s3.BucketLoggingArray{ +// &s3.BucketLoggingArgs{ +// TargetBucket: logBucket.ID(), +// TargetPrefix: pulumi.String("log/"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Using object lifecycle +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucket(ctx, "bucket", &s3.BucketArgs{ +// Bucket: pulumi.String("my-bucket"), +// Acl: pulumi.String(s3.CannedAclPrivate), +// LifecycleRules: s3.BucketLifecycleRuleArray{ +// &s3.BucketLifecycleRuleArgs{ +// Id: pulumi.String("log"), +// Enabled: pulumi.Bool(true), +// Prefix: pulumi.String("log/"), +// Tags: pulumi.StringMap{ +// "rule": pulumi.String("log"), +// "autoclean": pulumi.String("true"), +// }, +// Transitions: s3.BucketLifecycleRuleTransitionArray{ +// &s3.BucketLifecycleRuleTransitionArgs{ +// Days: pulumi.Int(30), +// StorageClass: pulumi.String("STANDARD_IA"), +// }, +// &s3.BucketLifecycleRuleTransitionArgs{ +// Days: pulumi.Int(60), +// StorageClass: pulumi.String("GLACIER"), +// }, +// }, +// Expiration: &s3.BucketLifecycleRuleExpirationArgs{ +// Days: pulumi.Int(90), +// }, +// }, +// &s3.BucketLifecycleRuleArgs{ +// Id: pulumi.String("tmp"), +// Prefix: pulumi.String("tmp/"), +// Enabled: pulumi.Bool(true), +// Expiration: &s3.BucketLifecycleRuleExpirationArgs{ +// Date: pulumi.String("2016-01-12"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucket(ctx, "versioning_bucket", &s3.BucketArgs{ +// Bucket: pulumi.String("my-versioning-bucket"), +// Acl: pulumi.String(s3.CannedAclPrivate), +// Versioning: &s3.BucketVersioningArgs{ +// Enabled: pulumi.Bool(true), +// }, +// LifecycleRules: s3.BucketLifecycleRuleArray{ +// &s3.BucketLifecycleRuleArgs{ +// Prefix: pulumi.String("config/"), +// Enabled: pulumi.Bool(true), +// NoncurrentVersionTransitions: s3.BucketLifecycleRuleNoncurrentVersionTransitionArray{ +// &s3.BucketLifecycleRuleNoncurrentVersionTransitionArgs{ +// Days: pulumi.Int(30), +// StorageClass: pulumi.String("STANDARD_IA"), +// }, +// &s3.BucketLifecycleRuleNoncurrentVersionTransitionArgs{ +// Days: pulumi.Int(60), +// StorageClass: pulumi.String("GLACIER"), +// }, +// }, +// NoncurrentVersionExpiration: &s3.BucketLifecycleRuleNoncurrentVersionExpirationArgs{ +// Days: pulumi.Int(90), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Using replication configuration +// +// > **NOTE:** See the `s3.BucketReplicationConfig` resource to support bi-directional replication configuration and additional features. +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// replication, err := iam.NewRole(ctx, "replication", &iam.RoleArgs{ +// Name: pulumi.String("tf-iam-role-replication-12345"), +// AssumeRolePolicy: pulumi.Any(`{ +// "Version": "2012-10-17", +// "Statement": [ +// { +// "Action": "sts:AssumeRole", +// "Principal": { +// "Service": "s3.amazonaws.com" +// }, +// "Effect": "Allow", +// "Sid": "" +// } +// ] +// } +// +// `), +// +// }) +// if err != nil { +// return err +// } +// destination, err := s3.NewBucket(ctx, "destination", &s3.BucketArgs{ +// Bucket: pulumi.String("tf-test-bucket-destination-12345"), +// Versioning: &s3.BucketVersioningArgs{ +// Enabled: pulumi.Bool(true), +// }, +// }) +// if err != nil { +// return err +// } +// source, err := s3.NewBucket(ctx, "source", &s3.BucketArgs{ +// Bucket: pulumi.String("tf-test-bucket-source-12345"), +// Acl: pulumi.String(s3.CannedAclPrivate), +// Versioning: &s3.BucketVersioningArgs{ +// Enabled: pulumi.Bool(true), +// }, +// ReplicationConfiguration: &s3.BucketReplicationConfigurationArgs{ +// Role: replication.Arn, +// Rules: s3.BucketReplicationConfigurationRuleArray{ +// &s3.BucketReplicationConfigurationRuleArgs{ +// Id: pulumi.String("foobar"), +// Status: pulumi.String("Enabled"), +// Filter: &s3.BucketReplicationConfigurationRuleFilterArgs{ +// Tags: pulumi.StringMap{}, +// }, +// Destination: &s3.BucketReplicationConfigurationRuleDestinationArgs{ +// Bucket: destination.Arn, +// StorageClass: pulumi.String("STANDARD"), +// ReplicationTime: &s3.BucketReplicationConfigurationRuleDestinationReplicationTimeArgs{ +// Status: pulumi.String("Enabled"), +// Minutes: pulumi.Int(15), +// }, +// Metrics: &s3.BucketReplicationConfigurationRuleDestinationMetricsArgs{ +// Status: pulumi.String("Enabled"), +// Minutes: pulumi.Int(15), +// }, +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// replicationPolicy, err := iam.NewPolicy(ctx, "replication", &iam.PolicyArgs{ +// Name: pulumi.String("tf-iam-role-policy-replication-12345"), +// Policy: pulumi.All(source.Arn, source.Arn, destination.Arn).ApplyT(func(_args []interface{}) (string, error) { +// sourceArn := _args[0].(string) +// sourceArn1 := _args[1].(string) +// destinationArn := _args[2].(string) +// return fmt.Sprintf(`{ +// "Version": "2012-10-17", +// "Statement": [ +// { +// "Action": [ +// "s3:GetReplicationConfiguration", +// "s3:ListBucket" +// ], +// "Effect": "Allow", +// "Resource": [ +// "%v" +// ] +// }, +// { +// "Action": [ +// "s3:GetObjectVersionForReplication", +// "s3:GetObjectVersionAcl", +// "s3:GetObjectVersionTagging" +// ], +// "Effect": "Allow", +// "Resource": [ +// "%v/*" +// ] +// }, +// { +// "Action": [ +// "s3:ReplicateObject", +// "s3:ReplicateDelete", +// "s3:ReplicateTags" +// ], +// "Effect": "Allow", +// "Resource": "%v/*" +// } +// ] +// } +// +// `, sourceArn, sourceArn1, destinationArn), nil +// +// }).(pulumi.StringOutput), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewRolePolicyAttachment(ctx, "replication", &iam.RolePolicyAttachmentArgs{ +// Role: replication.Name, +// PolicyArn: replicationPolicy.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Enable Default Server Side Encryption +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// mykey, err := kms.NewKey(ctx, "mykey", &kms.KeyArgs{ +// Description: pulumi.String("This key is used to encrypt bucket objects"), +// DeletionWindowInDays: pulumi.Int(10), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucket(ctx, "mybucket", &s3.BucketArgs{ +// Bucket: pulumi.String("mybucket"), +// ServerSideEncryptionConfiguration: &s3.BucketServerSideEncryptionConfigurationArgs{ +// Rule: &s3.BucketServerSideEncryptionConfigurationRuleArgs{ +// ApplyServerSideEncryptionByDefault: &s3.BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{ +// KmsMasterKeyId: mykey.Arn, +// SseAlgorithm: pulumi.String("aws:kms"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Using ACL policy grants +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// currentUser, err := s3.GetCanonicalUserId(ctx, map[string]interface{}{}, nil) +// if err != nil { +// return err +// } +// _, err = s3.NewBucket(ctx, "bucket", &s3.BucketArgs{ +// Bucket: pulumi.String("mybucket"), +// Grants: s3.BucketGrantArray{ +// &s3.BucketGrantArgs{ +// Id: pulumi.String(currentUser.Id), +// Type: pulumi.String("CanonicalUser"), +// Permissions: pulumi.StringArray{ +// pulumi.String("FULL_CONTROL"), +// }, +// }, +// &s3.BucketGrantArgs{ +// Type: pulumi.String("Group"), +// Permissions: pulumi.StringArray{ +// pulumi.String("READ_ACP"), +// pulumi.String("WRITE"), +// }, +// Uri: pulumi.String("http://acs.amazonaws.com/groups/s3/LogDelivery"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// S3 bucket can be imported using the `bucket`, e.g., +// +// ```sh +// $ pulumi import aws:s3/bucket:Bucket bucket bucket-name +// ``` +// The `policy` argument is not imported and will be deprecated in a future version of the provider. Use the `aws_s3_bucket_policy` resource to manage the S3 Bucket Policy instead. +type Bucket struct { + pulumi.CustomResourceState + + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. + AccelerationStatus pulumi.StringOutput `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. + Acl pulumi.StringPtrOutput `pulumi:"acl"` + // The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn pulumi.StringOutput `pulumi:"arn"` + // The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + Bucket pulumi.StringOutput `pulumi:"bucket"` + // The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. + BucketDomainName pulumi.StringOutput `pulumi:"bucketDomainName"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix pulumi.StringPtrOutput `pulumi:"bucketPrefix"` + // The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL. + BucketRegionalDomainName pulumi.StringOutput `pulumi:"bucketRegionalDomainName"` + // A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). + CorsRules BucketCorsRuleArrayOutput `pulumi:"corsRules"` + // A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. + Grants BucketGrantArrayOutput `pulumi:"grants"` + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId pulumi.StringOutput `pulumi:"hostedZoneId"` + // A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). + LifecycleRules BucketLifecycleRuleArrayOutput `pulumi:"lifecycleRules"` + // A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). + Loggings BucketLoggingArrayOutput `pulumi:"loggings"` + // A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) + // + // > **NOTE:** You cannot use `accelerationStatus` in `cn-north-1` or `us-gov-west-1` + ObjectLockConfiguration BucketObjectLockConfigurationPtrOutput `pulumi:"objectLockConfiguration"` + // A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. + Policy pulumi.StringPtrOutput `pulumi:"policy"` + // The AWS region this bucket resides in. + Region pulumi.StringOutput `pulumi:"region"` + // A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). + ReplicationConfiguration BucketReplicationConfigurationPtrOutput `pulumi:"replicationConfiguration"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur + // the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) + // developer guide for more information. + RequestPayer pulumi.StringOutput `pulumi:"requestPayer"` + // A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) + ServerSideEncryptionConfiguration BucketServerSideEncryptionConfigurationOutput `pulumi:"serverSideEncryptionConfiguration"` + // A map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) + Versioning BucketVersioningOutput `pulumi:"versioning"` + // A website object (documented below). + Website BucketWebsitePtrOutput `pulumi:"website"` + // The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain pulumi.StringOutput `pulumi:"websiteDomain"` + // The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint pulumi.StringOutput `pulumi:"websiteEndpoint"` +} + +// NewBucket registers a new resource with the given unique name, arguments, and options. +func NewBucket(ctx *pulumi.Context, + name string, args *BucketArgs, opts ...pulumi.ResourceOption) (*Bucket, error) { + if args == nil { + args = &BucketArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Bucket + err := ctx.RegisterResource("aws:s3/bucket:Bucket", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucket gets an existing Bucket 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 GetBucket(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketState, opts ...pulumi.ResourceOption) (*Bucket, error) { + var resource Bucket + err := ctx.ReadResource("aws:s3/bucket:Bucket", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Bucket resources. +type bucketState struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. + AccelerationStatus *string `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. + Acl *string `pulumi:"acl"` + // The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn *string `pulumi:"arn"` + // The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + Bucket *string `pulumi:"bucket"` + // The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. + BucketDomainName *string `pulumi:"bucketDomainName"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix *string `pulumi:"bucketPrefix"` + // The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL. + BucketRegionalDomainName *string `pulumi:"bucketRegionalDomainName"` + // A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). + CorsRules []BucketCorsRule `pulumi:"corsRules"` + // A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. + ForceDestroy *bool `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. + Grants []BucketGrant `pulumi:"grants"` + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId *string `pulumi:"hostedZoneId"` + // A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). + LifecycleRules []BucketLifecycleRule `pulumi:"lifecycleRules"` + // A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). + Loggings []BucketLogging `pulumi:"loggings"` + // A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) + // + // > **NOTE:** You cannot use `accelerationStatus` in `cn-north-1` or `us-gov-west-1` + ObjectLockConfiguration *BucketObjectLockConfiguration `pulumi:"objectLockConfiguration"` + // A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. + Policy interface{} `pulumi:"policy"` + // The AWS region this bucket resides in. + Region *string `pulumi:"region"` + // A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). + ReplicationConfiguration *BucketReplicationConfiguration `pulumi:"replicationConfiguration"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur + // the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) + // developer guide for more information. + RequestPayer *string `pulumi:"requestPayer"` + // A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) + ServerSideEncryptionConfiguration *BucketServerSideEncryptionConfiguration `pulumi:"serverSideEncryptionConfiguration"` + // A map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) + Versioning *BucketVersioning `pulumi:"versioning"` + // A website object (documented below). + Website *BucketWebsite `pulumi:"website"` + // The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain *string `pulumi:"websiteDomain"` + // The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint *string `pulumi:"websiteEndpoint"` +} + +type BucketState struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. + AccelerationStatus pulumi.StringPtrInput + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. + Acl pulumi.StringPtrInput + // The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn pulumi.StringPtrInput + // The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + Bucket pulumi.StringPtrInput + // The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. + BucketDomainName pulumi.StringPtrInput + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix pulumi.StringPtrInput + // The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL. + BucketRegionalDomainName pulumi.StringPtrInput + // A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). + CorsRules BucketCorsRuleArrayInput + // A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. + ForceDestroy pulumi.BoolPtrInput + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. + Grants BucketGrantArrayInput + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId pulumi.StringPtrInput + // A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). + LifecycleRules BucketLifecycleRuleArrayInput + // A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). + Loggings BucketLoggingArrayInput + // A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) + // + // > **NOTE:** You cannot use `accelerationStatus` in `cn-north-1` or `us-gov-west-1` + ObjectLockConfiguration BucketObjectLockConfigurationPtrInput + // A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. + Policy pulumi.Input + // The AWS region this bucket resides in. + Region pulumi.StringPtrInput + // A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). + ReplicationConfiguration BucketReplicationConfigurationPtrInput + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur + // the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) + // developer guide for more information. + RequestPayer pulumi.StringPtrInput + // A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) + ServerSideEncryptionConfiguration BucketServerSideEncryptionConfigurationPtrInput + // A map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) + Versioning BucketVersioningPtrInput + // A website object (documented below). + Website BucketWebsitePtrInput + // The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain pulumi.StringPtrInput + // The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint pulumi.StringPtrInput +} + +func (BucketState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketState)(nil)).Elem() +} + +type bucketArgs struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. + AccelerationStatus *string `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. + Acl *string `pulumi:"acl"` + // The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn *string `pulumi:"arn"` + // The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + Bucket *string `pulumi:"bucket"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix *string `pulumi:"bucketPrefix"` + // A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). + CorsRules []BucketCorsRule `pulumi:"corsRules"` + // A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. + ForceDestroy *bool `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. + Grants []BucketGrant `pulumi:"grants"` + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId *string `pulumi:"hostedZoneId"` + // A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). + LifecycleRules []BucketLifecycleRule `pulumi:"lifecycleRules"` + // A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). + Loggings []BucketLogging `pulumi:"loggings"` + // A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) + // + // > **NOTE:** You cannot use `accelerationStatus` in `cn-north-1` or `us-gov-west-1` + ObjectLockConfiguration *BucketObjectLockConfiguration `pulumi:"objectLockConfiguration"` + // A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. + Policy interface{} `pulumi:"policy"` + // A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). + ReplicationConfiguration *BucketReplicationConfiguration `pulumi:"replicationConfiguration"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur + // the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) + // developer guide for more information. + RequestPayer *string `pulumi:"requestPayer"` + // A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) + ServerSideEncryptionConfiguration *BucketServerSideEncryptionConfiguration `pulumi:"serverSideEncryptionConfiguration"` + // A map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) + Versioning *BucketVersioning `pulumi:"versioning"` + // A website object (documented below). + Website *BucketWebsite `pulumi:"website"` + // The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain *string `pulumi:"websiteDomain"` + // The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint *string `pulumi:"websiteEndpoint"` +} + +// The set of arguments for constructing a Bucket resource. +type BucketArgs struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. + AccelerationStatus pulumi.StringPtrInput + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. + Acl pulumi.StringPtrInput + // The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn pulumi.StringPtrInput + // The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + Bucket pulumi.StringPtrInput + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix pulumi.StringPtrInput + // A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). + CorsRules BucketCorsRuleArrayInput + // A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. + ForceDestroy pulumi.BoolPtrInput + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. + Grants BucketGrantArrayInput + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId pulumi.StringPtrInput + // A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). + LifecycleRules BucketLifecycleRuleArrayInput + // A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). + Loggings BucketLoggingArrayInput + // A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) + // + // > **NOTE:** You cannot use `accelerationStatus` in `cn-north-1` or `us-gov-west-1` + ObjectLockConfiguration BucketObjectLockConfigurationPtrInput + // A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. + Policy pulumi.Input + // A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). + ReplicationConfiguration BucketReplicationConfigurationPtrInput + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur + // the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) + // developer guide for more information. + RequestPayer pulumi.StringPtrInput + // A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) + ServerSideEncryptionConfiguration BucketServerSideEncryptionConfigurationPtrInput + // A map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) + Versioning BucketVersioningPtrInput + // A website object (documented below). + Website BucketWebsitePtrInput + // The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain pulumi.StringPtrInput + // The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint pulumi.StringPtrInput +} + +func (BucketArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketArgs)(nil)).Elem() +} + +type BucketInput interface { + pulumi.Input + + ToBucketOutput() BucketOutput + ToBucketOutputWithContext(ctx context.Context) BucketOutput +} + +func (*Bucket) ElementType() reflect.Type { + return reflect.TypeOf((**Bucket)(nil)).Elem() +} + +func (i *Bucket) ToBucketOutput() BucketOutput { + return i.ToBucketOutputWithContext(context.Background()) +} + +func (i *Bucket) ToBucketOutputWithContext(ctx context.Context) BucketOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOutput) +} + +// BucketArrayInput is an input type that accepts BucketArray and BucketArrayOutput values. +// You can construct a concrete instance of `BucketArrayInput` via: +// +// BucketArray{ BucketArgs{...} } +type BucketArrayInput interface { + pulumi.Input + + ToBucketArrayOutput() BucketArrayOutput + ToBucketArrayOutputWithContext(context.Context) BucketArrayOutput +} + +type BucketArray []BucketInput + +func (BucketArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Bucket)(nil)).Elem() +} + +func (i BucketArray) ToBucketArrayOutput() BucketArrayOutput { + return i.ToBucketArrayOutputWithContext(context.Background()) +} + +func (i BucketArray) ToBucketArrayOutputWithContext(ctx context.Context) BucketArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketArrayOutput) +} + +// BucketMapInput is an input type that accepts BucketMap and BucketMapOutput values. +// You can construct a concrete instance of `BucketMapInput` via: +// +// BucketMap{ "key": BucketArgs{...} } +type BucketMapInput interface { + pulumi.Input + + ToBucketMapOutput() BucketMapOutput + ToBucketMapOutputWithContext(context.Context) BucketMapOutput +} + +type BucketMap map[string]BucketInput + +func (BucketMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Bucket)(nil)).Elem() +} + +func (i BucketMap) ToBucketMapOutput() BucketMapOutput { + return i.ToBucketMapOutputWithContext(context.Background()) +} + +func (i BucketMap) ToBucketMapOutputWithContext(ctx context.Context) BucketMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketMapOutput) +} + +type BucketOutput struct{ *pulumi.OutputState } + +func (BucketOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Bucket)(nil)).Elem() +} + +func (o BucketOutput) ToBucketOutput() BucketOutput { + return o +} + +func (o BucketOutput) ToBucketOutputWithContext(ctx context.Context) BucketOutput { + return o +} + +// Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. +func (o BucketOutput) AccelerationStatus() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.AccelerationStatus }).(pulumi.StringOutput) +} + +// The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. +func (o BucketOutput) Acl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringPtrOutput { return v.Acl }).(pulumi.StringPtrOutput) +} + +// The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. +func (o BucketOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). +func (o BucketOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// The bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. +func (o BucketOutput) BucketDomainName() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.BucketDomainName }).(pulumi.StringOutput) +} + +// Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). +func (o BucketOutput) BucketPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringPtrOutput { return v.BucketPrefix }).(pulumi.StringPtrOutput) +} + +// The bucket region-specific domain name. The bucket domain name including the region name, please refer [here](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for format. Note: The AWS CloudFront allows specifying S3 region-specific endpoint when creating S3 origin, it will prevent [redirect issues](https://forums.aws.amazon.com/thread.jspa?threadID=216814) from CloudFront to S3 Origin URL. +func (o BucketOutput) BucketRegionalDomainName() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.BucketRegionalDomainName }).(pulumi.StringOutput) +} + +// A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). +func (o BucketOutput) CorsRules() BucketCorsRuleArrayOutput { + return o.ApplyT(func(v *Bucket) BucketCorsRuleArrayOutput { return v.CorsRules }).(BucketCorsRuleArrayOutput) +} + +// A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. +func (o BucketOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Bucket) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. +func (o BucketOutput) Grants() BucketGrantArrayOutput { + return o.ApplyT(func(v *Bucket) BucketGrantArrayOutput { return v.Grants }).(BucketGrantArrayOutput) +} + +// The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. +func (o BucketOutput) HostedZoneId() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.HostedZoneId }).(pulumi.StringOutput) +} + +// A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). +func (o BucketOutput) LifecycleRules() BucketLifecycleRuleArrayOutput { + return o.ApplyT(func(v *Bucket) BucketLifecycleRuleArrayOutput { return v.LifecycleRules }).(BucketLifecycleRuleArrayOutput) +} + +// A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). +func (o BucketOutput) Loggings() BucketLoggingArrayOutput { + return o.ApplyT(func(v *Bucket) BucketLoggingArrayOutput { return v.Loggings }).(BucketLoggingArrayOutput) +} + +// A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) +// +// > **NOTE:** You cannot use `accelerationStatus` in `cn-north-1` or `us-gov-west-1` +func (o BucketOutput) ObjectLockConfiguration() BucketObjectLockConfigurationPtrOutput { + return o.ApplyT(func(v *Bucket) BucketObjectLockConfigurationPtrOutput { return v.ObjectLockConfiguration }).(BucketObjectLockConfigurationPtrOutput) +} + +// A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. +func (o BucketOutput) Policy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringPtrOutput { return v.Policy }).(pulumi.StringPtrOutput) +} + +// The AWS region this bucket resides in. +func (o BucketOutput) Region() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.Region }).(pulumi.StringOutput) +} + +// A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). +func (o BucketOutput) ReplicationConfiguration() BucketReplicationConfigurationPtrOutput { + return o.ApplyT(func(v *Bucket) BucketReplicationConfigurationPtrOutput { return v.ReplicationConfiguration }).(BucketReplicationConfigurationPtrOutput) +} + +// Specifies who should bear the cost of Amazon S3 data transfer. +// Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur +// the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) +// developer guide for more information. +func (o BucketOutput) RequestPayer() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.RequestPayer }).(pulumi.StringOutput) +} + +// A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) +func (o BucketOutput) ServerSideEncryptionConfiguration() BucketServerSideEncryptionConfigurationOutput { + return o.ApplyT(func(v *Bucket) BucketServerSideEncryptionConfigurationOutput { + return v.ServerSideEncryptionConfiguration + }).(BucketServerSideEncryptionConfigurationOutput) +} + +// A map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o BucketOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o BucketOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) +func (o BucketOutput) Versioning() BucketVersioningOutput { + return o.ApplyT(func(v *Bucket) BucketVersioningOutput { return v.Versioning }).(BucketVersioningOutput) +} + +// A website object (documented below). +func (o BucketOutput) Website() BucketWebsitePtrOutput { + return o.ApplyT(func(v *Bucket) BucketWebsitePtrOutput { return v.Website }).(BucketWebsitePtrOutput) +} + +// The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. +func (o BucketOutput) WebsiteDomain() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.WebsiteDomain }).(pulumi.StringOutput) +} + +// The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. +func (o BucketOutput) WebsiteEndpoint() pulumi.StringOutput { + return o.ApplyT(func(v *Bucket) pulumi.StringOutput { return v.WebsiteEndpoint }).(pulumi.StringOutput) +} + +type BucketArrayOutput struct{ *pulumi.OutputState } + +func (BucketArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Bucket)(nil)).Elem() +} + +func (o BucketArrayOutput) ToBucketArrayOutput() BucketArrayOutput { + return o +} + +func (o BucketArrayOutput) ToBucketArrayOutputWithContext(ctx context.Context) BucketArrayOutput { + return o +} + +func (o BucketArrayOutput) Index(i pulumi.IntInput) BucketOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Bucket { + return vs[0].([]*Bucket)[vs[1].(int)] + }).(BucketOutput) +} + +type BucketMapOutput struct{ *pulumi.OutputState } + +func (BucketMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Bucket)(nil)).Elem() +} + +func (o BucketMapOutput) ToBucketMapOutput() BucketMapOutput { + return o +} + +func (o BucketMapOutput) ToBucketMapOutputWithContext(ctx context.Context) BucketMapOutput { + return o +} + +func (o BucketMapOutput) MapIndex(k pulumi.StringInput) BucketOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Bucket { + return vs[0].(map[string]*Bucket)[vs[1].(string)] + }).(BucketOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketInput)(nil)).Elem(), &Bucket{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketArrayInput)(nil)).Elem(), BucketArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketMapInput)(nil)).Elem(), BucketMap{}) + pulumi.RegisterOutputType(BucketOutput{}) + pulumi.RegisterOutputType(BucketArrayOutput{}) + pulumi.RegisterOutputType(BucketMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAccelerateConfigurationV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAccelerateConfigurationV2.go new file mode 100644 index 000000000..ae22ee32d --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAccelerateConfigurationV2.go @@ -0,0 +1,304 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 bucket accelerate configuration resource. See the [Requirements for using Transfer Acceleration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/transfer-acceleration.html#transfer-acceleration-requirements) for more details. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// mybucket, err := s3.NewBucketV2(ctx, "mybucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("mybucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAccelerateConfigurationV2(ctx, "example", &s3.BucketAccelerateConfigurationV2Args{ +// Bucket: mybucket.ID(), +// Status: pulumi.String("Enabled"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// __Using `pulumi import` to import.__ For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2 example bucket-name,123456789012 +// ``` +type BucketAccelerateConfigurationV2 struct { + pulumi.CustomResourceState + + // Name of the bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Transfer acceleration state of the bucket. Valid values: `Enabled`, `Suspended`. + Status pulumi.StringOutput `pulumi:"status"` +} + +// NewBucketAccelerateConfigurationV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketAccelerateConfigurationV2(ctx *pulumi.Context, + name string, args *BucketAccelerateConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketAccelerateConfigurationV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Status == nil { + return nil, errors.New("invalid value for required argument 'Status'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketAccelerateConfigurationV2 + err := ctx.RegisterResource("aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketAccelerateConfigurationV2 gets an existing BucketAccelerateConfigurationV2 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 GetBucketAccelerateConfigurationV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketAccelerateConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketAccelerateConfigurationV2, error) { + var resource BucketAccelerateConfigurationV2 + err := ctx.ReadResource("aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketAccelerateConfigurationV2 resources. +type bucketAccelerateConfigurationV2State struct { + // Name of the bucket. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Transfer acceleration state of the bucket. Valid values: `Enabled`, `Suspended`. + Status *string `pulumi:"status"` +} + +type BucketAccelerateConfigurationV2State struct { + // Name of the bucket. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Transfer acceleration state of the bucket. Valid values: `Enabled`, `Suspended`. + Status pulumi.StringPtrInput +} + +func (BucketAccelerateConfigurationV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketAccelerateConfigurationV2State)(nil)).Elem() +} + +type bucketAccelerateConfigurationV2Args struct { + // Name of the bucket. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Transfer acceleration state of the bucket. Valid values: `Enabled`, `Suspended`. + Status string `pulumi:"status"` +} + +// The set of arguments for constructing a BucketAccelerateConfigurationV2 resource. +type BucketAccelerateConfigurationV2Args struct { + // Name of the bucket. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Transfer acceleration state of the bucket. Valid values: `Enabled`, `Suspended`. + Status pulumi.StringInput +} + +func (BucketAccelerateConfigurationV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketAccelerateConfigurationV2Args)(nil)).Elem() +} + +type BucketAccelerateConfigurationV2Input interface { + pulumi.Input + + ToBucketAccelerateConfigurationV2Output() BucketAccelerateConfigurationV2Output + ToBucketAccelerateConfigurationV2OutputWithContext(ctx context.Context) BucketAccelerateConfigurationV2Output +} + +func (*BucketAccelerateConfigurationV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAccelerateConfigurationV2)(nil)).Elem() +} + +func (i *BucketAccelerateConfigurationV2) ToBucketAccelerateConfigurationV2Output() BucketAccelerateConfigurationV2Output { + return i.ToBucketAccelerateConfigurationV2OutputWithContext(context.Background()) +} + +func (i *BucketAccelerateConfigurationV2) ToBucketAccelerateConfigurationV2OutputWithContext(ctx context.Context) BucketAccelerateConfigurationV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketAccelerateConfigurationV2Output) +} + +// BucketAccelerateConfigurationV2ArrayInput is an input type that accepts BucketAccelerateConfigurationV2Array and BucketAccelerateConfigurationV2ArrayOutput values. +// You can construct a concrete instance of `BucketAccelerateConfigurationV2ArrayInput` via: +// +// BucketAccelerateConfigurationV2Array{ BucketAccelerateConfigurationV2Args{...} } +type BucketAccelerateConfigurationV2ArrayInput interface { + pulumi.Input + + ToBucketAccelerateConfigurationV2ArrayOutput() BucketAccelerateConfigurationV2ArrayOutput + ToBucketAccelerateConfigurationV2ArrayOutputWithContext(context.Context) BucketAccelerateConfigurationV2ArrayOutput +} + +type BucketAccelerateConfigurationV2Array []BucketAccelerateConfigurationV2Input + +func (BucketAccelerateConfigurationV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketAccelerateConfigurationV2)(nil)).Elem() +} + +func (i BucketAccelerateConfigurationV2Array) ToBucketAccelerateConfigurationV2ArrayOutput() BucketAccelerateConfigurationV2ArrayOutput { + return i.ToBucketAccelerateConfigurationV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketAccelerateConfigurationV2Array) ToBucketAccelerateConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketAccelerateConfigurationV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAccelerateConfigurationV2ArrayOutput) +} + +// BucketAccelerateConfigurationV2MapInput is an input type that accepts BucketAccelerateConfigurationV2Map and BucketAccelerateConfigurationV2MapOutput values. +// You can construct a concrete instance of `BucketAccelerateConfigurationV2MapInput` via: +// +// BucketAccelerateConfigurationV2Map{ "key": BucketAccelerateConfigurationV2Args{...} } +type BucketAccelerateConfigurationV2MapInput interface { + pulumi.Input + + ToBucketAccelerateConfigurationV2MapOutput() BucketAccelerateConfigurationV2MapOutput + ToBucketAccelerateConfigurationV2MapOutputWithContext(context.Context) BucketAccelerateConfigurationV2MapOutput +} + +type BucketAccelerateConfigurationV2Map map[string]BucketAccelerateConfigurationV2Input + +func (BucketAccelerateConfigurationV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketAccelerateConfigurationV2)(nil)).Elem() +} + +func (i BucketAccelerateConfigurationV2Map) ToBucketAccelerateConfigurationV2MapOutput() BucketAccelerateConfigurationV2MapOutput { + return i.ToBucketAccelerateConfigurationV2MapOutputWithContext(context.Background()) +} + +func (i BucketAccelerateConfigurationV2Map) ToBucketAccelerateConfigurationV2MapOutputWithContext(ctx context.Context) BucketAccelerateConfigurationV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAccelerateConfigurationV2MapOutput) +} + +type BucketAccelerateConfigurationV2Output struct{ *pulumi.OutputState } + +func (BucketAccelerateConfigurationV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAccelerateConfigurationV2)(nil)).Elem() +} + +func (o BucketAccelerateConfigurationV2Output) ToBucketAccelerateConfigurationV2Output() BucketAccelerateConfigurationV2Output { + return o +} + +func (o BucketAccelerateConfigurationV2Output) ToBucketAccelerateConfigurationV2OutputWithContext(ctx context.Context) BucketAccelerateConfigurationV2Output { + return o +} + +// Name of the bucket. +func (o BucketAccelerateConfigurationV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketAccelerateConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketAccelerateConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAccelerateConfigurationV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// Transfer acceleration state of the bucket. Valid values: `Enabled`, `Suspended`. +func (o BucketAccelerateConfigurationV2Output) Status() pulumi.StringOutput { + return o.ApplyT(func(v *BucketAccelerateConfigurationV2) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput) +} + +type BucketAccelerateConfigurationV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketAccelerateConfigurationV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketAccelerateConfigurationV2)(nil)).Elem() +} + +func (o BucketAccelerateConfigurationV2ArrayOutput) ToBucketAccelerateConfigurationV2ArrayOutput() BucketAccelerateConfigurationV2ArrayOutput { + return o +} + +func (o BucketAccelerateConfigurationV2ArrayOutput) ToBucketAccelerateConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketAccelerateConfigurationV2ArrayOutput { + return o +} + +func (o BucketAccelerateConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketAccelerateConfigurationV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketAccelerateConfigurationV2 { + return vs[0].([]*BucketAccelerateConfigurationV2)[vs[1].(int)] + }).(BucketAccelerateConfigurationV2Output) +} + +type BucketAccelerateConfigurationV2MapOutput struct{ *pulumi.OutputState } + +func (BucketAccelerateConfigurationV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketAccelerateConfigurationV2)(nil)).Elem() +} + +func (o BucketAccelerateConfigurationV2MapOutput) ToBucketAccelerateConfigurationV2MapOutput() BucketAccelerateConfigurationV2MapOutput { + return o +} + +func (o BucketAccelerateConfigurationV2MapOutput) ToBucketAccelerateConfigurationV2MapOutputWithContext(ctx context.Context) BucketAccelerateConfigurationV2MapOutput { + return o +} + +func (o BucketAccelerateConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketAccelerateConfigurationV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketAccelerateConfigurationV2 { + return vs[0].(map[string]*BucketAccelerateConfigurationV2)[vs[1].(string)] + }).(BucketAccelerateConfigurationV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketAccelerateConfigurationV2Input)(nil)).Elem(), &BucketAccelerateConfigurationV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAccelerateConfigurationV2ArrayInput)(nil)).Elem(), BucketAccelerateConfigurationV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAccelerateConfigurationV2MapInput)(nil)).Elem(), BucketAccelerateConfigurationV2Map{}) + pulumi.RegisterOutputType(BucketAccelerateConfigurationV2Output{}) + pulumi.RegisterOutputType(BucketAccelerateConfigurationV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketAccelerateConfigurationV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAclV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAclV2.go new file mode 100644 index 000000000..282bda135 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketAclV2.go @@ -0,0 +1,474 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 bucket ACL resource. +// +// > **Note:** destroy does not delete the S3 Bucket ACL but does remove the resource from state. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### With `private` ACL +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-example-bucket"), +// }) +// if err != nil { +// return err +// } +// exampleBucketOwnershipControls, err := s3.NewBucketOwnershipControls(ctx, "example", &s3.BucketOwnershipControlsArgs{ +// Bucket: example.ID(), +// Rule: &s3.BucketOwnershipControlsRuleArgs{ +// ObjectOwnership: pulumi.String("BucketOwnerPreferred"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: example.ID(), +// Acl: pulumi.String("private"), +// }, pulumi.DependsOn([]pulumi.Resource{ +// exampleBucketOwnershipControls, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### With `public-read` ACL +// +// > This example explicitly disables the default S3 bucket security settings. This +// should be done with caution, as all bucket objects become publicly exposed. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-example-bucket"), +// }) +// if err != nil { +// return err +// } +// exampleBucketOwnershipControls, err := s3.NewBucketOwnershipControls(ctx, "example", &s3.BucketOwnershipControlsArgs{ +// Bucket: example.ID(), +// Rule: &s3.BucketOwnershipControlsRuleArgs{ +// ObjectOwnership: pulumi.String("BucketOwnerPreferred"), +// }, +// }) +// if err != nil { +// return err +// } +// exampleBucketPublicAccessBlock, err := s3.NewBucketPublicAccessBlock(ctx, "example", &s3.BucketPublicAccessBlockArgs{ +// Bucket: example.ID(), +// BlockPublicAcls: pulumi.Bool(false), +// BlockPublicPolicy: pulumi.Bool(false), +// IgnorePublicAcls: pulumi.Bool(false), +// RestrictPublicBuckets: pulumi.Bool(false), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: example.ID(), +// Acl: pulumi.String("public-read"), +// }, pulumi.DependsOn([]pulumi.Resource{ +// exampleBucketOwnershipControls, +// exampleBucketPublicAccessBlock, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### With Grants +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := s3.GetCanonicalUserId(ctx, map[string]interface{}{}, nil) +// if err != nil { +// return err +// } +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-example-bucket"), +// }) +// if err != nil { +// return err +// } +// exampleBucketOwnershipControls, err := s3.NewBucketOwnershipControls(ctx, "example", &s3.BucketOwnershipControlsArgs{ +// Bucket: example.ID(), +// Rule: &s3.BucketOwnershipControlsRuleArgs{ +// ObjectOwnership: pulumi.String("BucketOwnerPreferred"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: example.ID(), +// AccessControlPolicy: &s3.BucketAclV2AccessControlPolicyArgs{ +// Grants: s3.BucketAclV2AccessControlPolicyGrantArray{ +// &s3.BucketAclV2AccessControlPolicyGrantArgs{ +// Grantee: &s3.BucketAclV2AccessControlPolicyGrantGranteeArgs{ +// Id: pulumi.String(current.Id), +// Type: pulumi.String("CanonicalUser"), +// }, +// Permission: pulumi.String("READ"), +// }, +// &s3.BucketAclV2AccessControlPolicyGrantArgs{ +// Grantee: &s3.BucketAclV2AccessControlPolicyGrantGranteeArgs{ +// Type: pulumi.String("Group"), +// Uri: pulumi.String("http://acs.amazonaws.com/groups/s3/LogDelivery"), +// }, +// Permission: pulumi.String("READ_ACP"), +// }, +// }, +// Owner: &s3.BucketAclV2AccessControlPolicyOwnerArgs{ +// Id: pulumi.String(current.Id), +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// exampleBucketOwnershipControls, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket is the _same_ account used to configure the AWS Provider, and the source bucket is __configured__ with a +// [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) (i.e. predefined grant), import using the `bucket` and `acl` separated by a comma (`,`): +// +// If the owner (account ID) of the source bucket _differs_ from the account used to configure the AWS Provider, and the source bucket is __not configured__ with a [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) (i.e. predefined grant), imported using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// If the owner (account ID) of the source bucket _differs_ from the account used to configure the AWS Provider, and the source bucket is __configured__ with a +// [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) (i.e. predefined grant), imported using the `bucket`, `expected_bucket_owner`, and `acl` separated by commas (`,`): +// +// __Using `pulumi import` to import__ using `bucket`, `expected_bucket_owner`, and/or `acl`, depending on your situation. For example: +// +// If the owner (account ID) of the source bucket is the _same_ account used to configure the AWS Provider, and the source bucket is __not configured__ with a +// [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) (i.e. predefined grant), import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketAclV2:BucketAclV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket is the _same_ account used to configure the AWS Provider, and the source bucket is __configured__ with a [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) (i.e. predefined grant), import using the `bucket` and `acl` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketAclV2:BucketAclV2 example bucket-name,private +// ``` +// If the owner (account ID) of the source bucket _differs_ from the account used to configure the AWS Provider, and the source bucket is __not configured__ with a [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) (i.e. predefined grant), imported using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketAclV2:BucketAclV2 example bucket-name,123456789012 +// ``` +// If the owner (account ID) of the source bucket _differs_ from the account used to configure the AWS Provider, and the source bucket is __configured__ with a [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) (i.e. predefined grant), imported using the `bucket`, `expected_bucket_owner`, and `acl` separated by commas (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketAclV2:BucketAclV2 example bucket-name,123456789012,private +// ``` +type BucketAclV2 struct { + pulumi.CustomResourceState + + // Configuration block that sets the ACL permissions for an object per grantee. See below. + AccessControlPolicy BucketAclV2AccessControlPolicyOutput `pulumi:"accessControlPolicy"` + // Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). + Acl pulumi.StringPtrOutput `pulumi:"acl"` + // Bucket to which to apply the ACL. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` +} + +// NewBucketAclV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketAclV2(ctx *pulumi.Context, + name string, args *BucketAclV2Args, opts ...pulumi.ResourceOption) (*BucketAclV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketAclV2 + err := ctx.RegisterResource("aws:s3/bucketAclV2:BucketAclV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketAclV2 gets an existing BucketAclV2 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 GetBucketAclV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketAclV2State, opts ...pulumi.ResourceOption) (*BucketAclV2, error) { + var resource BucketAclV2 + err := ctx.ReadResource("aws:s3/bucketAclV2:BucketAclV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketAclV2 resources. +type bucketAclV2State struct { + // Configuration block that sets the ACL permissions for an object per grantee. See below. + AccessControlPolicy *BucketAclV2AccessControlPolicy `pulumi:"accessControlPolicy"` + // Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). + Acl *string `pulumi:"acl"` + // Bucket to which to apply the ACL. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` +} + +type BucketAclV2State struct { + // Configuration block that sets the ACL permissions for an object per grantee. See below. + AccessControlPolicy BucketAclV2AccessControlPolicyPtrInput + // Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). + Acl pulumi.StringPtrInput + // Bucket to which to apply the ACL. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput +} + +func (BucketAclV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketAclV2State)(nil)).Elem() +} + +type bucketAclV2Args struct { + // Configuration block that sets the ACL permissions for an object per grantee. See below. + AccessControlPolicy *BucketAclV2AccessControlPolicy `pulumi:"accessControlPolicy"` + // Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). + Acl *string `pulumi:"acl"` + // Bucket to which to apply the ACL. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` +} + +// The set of arguments for constructing a BucketAclV2 resource. +type BucketAclV2Args struct { + // Configuration block that sets the ACL permissions for an object per grantee. See below. + AccessControlPolicy BucketAclV2AccessControlPolicyPtrInput + // Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). + Acl pulumi.StringPtrInput + // Bucket to which to apply the ACL. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput +} + +func (BucketAclV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketAclV2Args)(nil)).Elem() +} + +type BucketAclV2Input interface { + pulumi.Input + + ToBucketAclV2Output() BucketAclV2Output + ToBucketAclV2OutputWithContext(ctx context.Context) BucketAclV2Output +} + +func (*BucketAclV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2)(nil)).Elem() +} + +func (i *BucketAclV2) ToBucketAclV2Output() BucketAclV2Output { + return i.ToBucketAclV2OutputWithContext(context.Background()) +} + +func (i *BucketAclV2) ToBucketAclV2OutputWithContext(ctx context.Context) BucketAclV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2Output) +} + +// BucketAclV2ArrayInput is an input type that accepts BucketAclV2Array and BucketAclV2ArrayOutput values. +// You can construct a concrete instance of `BucketAclV2ArrayInput` via: +// +// BucketAclV2Array{ BucketAclV2Args{...} } +type BucketAclV2ArrayInput interface { + pulumi.Input + + ToBucketAclV2ArrayOutput() BucketAclV2ArrayOutput + ToBucketAclV2ArrayOutputWithContext(context.Context) BucketAclV2ArrayOutput +} + +type BucketAclV2Array []BucketAclV2Input + +func (BucketAclV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketAclV2)(nil)).Elem() +} + +func (i BucketAclV2Array) ToBucketAclV2ArrayOutput() BucketAclV2ArrayOutput { + return i.ToBucketAclV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketAclV2Array) ToBucketAclV2ArrayOutputWithContext(ctx context.Context) BucketAclV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2ArrayOutput) +} + +// BucketAclV2MapInput is an input type that accepts BucketAclV2Map and BucketAclV2MapOutput values. +// You can construct a concrete instance of `BucketAclV2MapInput` via: +// +// BucketAclV2Map{ "key": BucketAclV2Args{...} } +type BucketAclV2MapInput interface { + pulumi.Input + + ToBucketAclV2MapOutput() BucketAclV2MapOutput + ToBucketAclV2MapOutputWithContext(context.Context) BucketAclV2MapOutput +} + +type BucketAclV2Map map[string]BucketAclV2Input + +func (BucketAclV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketAclV2)(nil)).Elem() +} + +func (i BucketAclV2Map) ToBucketAclV2MapOutput() BucketAclV2MapOutput { + return i.ToBucketAclV2MapOutputWithContext(context.Background()) +} + +func (i BucketAclV2Map) ToBucketAclV2MapOutputWithContext(ctx context.Context) BucketAclV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2MapOutput) +} + +type BucketAclV2Output struct{ *pulumi.OutputState } + +func (BucketAclV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2)(nil)).Elem() +} + +func (o BucketAclV2Output) ToBucketAclV2Output() BucketAclV2Output { + return o +} + +func (o BucketAclV2Output) ToBucketAclV2OutputWithContext(ctx context.Context) BucketAclV2Output { + return o +} + +// Configuration block that sets the ACL permissions for an object per grantee. See below. +func (o BucketAclV2Output) AccessControlPolicy() BucketAclV2AccessControlPolicyOutput { + return o.ApplyT(func(v *BucketAclV2) BucketAclV2AccessControlPolicyOutput { return v.AccessControlPolicy }).(BucketAclV2AccessControlPolicyOutput) +} + +// Specifies the Canned ACL to apply to the bucket. Valid values: `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, `bucket-owner-full-control`, `log-delivery-write`. Full details are available on the [AWS documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl). +func (o BucketAclV2Output) Acl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2) pulumi.StringPtrOutput { return v.Acl }).(pulumi.StringPtrOutput) +} + +// Bucket to which to apply the ACL. +func (o BucketAclV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketAclV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketAclV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +type BucketAclV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketAclV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketAclV2)(nil)).Elem() +} + +func (o BucketAclV2ArrayOutput) ToBucketAclV2ArrayOutput() BucketAclV2ArrayOutput { + return o +} + +func (o BucketAclV2ArrayOutput) ToBucketAclV2ArrayOutputWithContext(ctx context.Context) BucketAclV2ArrayOutput { + return o +} + +func (o BucketAclV2ArrayOutput) Index(i pulumi.IntInput) BucketAclV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketAclV2 { + return vs[0].([]*BucketAclV2)[vs[1].(int)] + }).(BucketAclV2Output) +} + +type BucketAclV2MapOutput struct{ *pulumi.OutputState } + +func (BucketAclV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketAclV2)(nil)).Elem() +} + +func (o BucketAclV2MapOutput) ToBucketAclV2MapOutput() BucketAclV2MapOutput { + return o +} + +func (o BucketAclV2MapOutput) ToBucketAclV2MapOutputWithContext(ctx context.Context) BucketAclV2MapOutput { + return o +} + +func (o BucketAclV2MapOutput) MapIndex(k pulumi.StringInput) BucketAclV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketAclV2 { + return vs[0].(map[string]*BucketAclV2)[vs[1].(string)] + }).(BucketAclV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2Input)(nil)).Elem(), &BucketAclV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2ArrayInput)(nil)).Elem(), BucketAclV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2MapInput)(nil)).Elem(), BucketAclV2Map{}) + pulumi.RegisterOutputType(BucketAclV2Output{}) + pulumi.RegisterOutputType(BucketAclV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketAclV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketCorsConfigurationV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketCorsConfigurationV2.go new file mode 100644 index 000000000..b4e5f2a83 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketCorsConfigurationV2.go @@ -0,0 +1,331 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 bucket CORS configuration resource. For more information about CORS, go to [Enabling Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cors.html) in the Amazon S3 User Guide. +// +// > **NOTE:** S3 Buckets only support a single CORS configuration. Declaring multiple `s3.BucketCorsConfigurationV2` resources to the same S3 Bucket will cause a perpetual difference in configuration. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("mybucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketCorsConfigurationV2(ctx, "example", &s3.BucketCorsConfigurationV2Args{ +// Bucket: example.ID(), +// CorsRules: s3.BucketCorsConfigurationV2CorsRuleArray{ +// &s3.BucketCorsConfigurationV2CorsRuleArgs{ +// AllowedHeaders: pulumi.StringArray{ +// pulumi.String("*"), +// }, +// AllowedMethods: pulumi.StringArray{ +// pulumi.String("PUT"), +// pulumi.String("POST"), +// }, +// AllowedOrigins: pulumi.StringArray{ +// pulumi.String("https://s3-website-test.domain.example"), +// }, +// ExposeHeaders: pulumi.StringArray{ +// pulumi.String("ETag"), +// }, +// MaxAgeSeconds: pulumi.Int(3000), +// }, +// &s3.BucketCorsConfigurationV2CorsRuleArgs{ +// AllowedMethods: pulumi.StringArray{ +// pulumi.String("GET"), +// }, +// AllowedOrigins: pulumi.StringArray{ +// pulumi.String("*"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// __Using `pulumi import` to import__ S3 bucket CORS configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2 example bucket-name,123456789012 +// ``` +type BucketCorsConfigurationV2 struct { + pulumi.CustomResourceState + + // Name of the bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules. + CorsRules BucketCorsConfigurationV2CorsRuleArrayOutput `pulumi:"corsRules"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` +} + +// NewBucketCorsConfigurationV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketCorsConfigurationV2(ctx *pulumi.Context, + name string, args *BucketCorsConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketCorsConfigurationV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.CorsRules == nil { + return nil, errors.New("invalid value for required argument 'CorsRules'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketCorsConfigurationV2 + err := ctx.RegisterResource("aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketCorsConfigurationV2 gets an existing BucketCorsConfigurationV2 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 GetBucketCorsConfigurationV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketCorsConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketCorsConfigurationV2, error) { + var resource BucketCorsConfigurationV2 + err := ctx.ReadResource("aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketCorsConfigurationV2 resources. +type bucketCorsConfigurationV2State struct { + // Name of the bucket. + Bucket *string `pulumi:"bucket"` + // Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules. + CorsRules []BucketCorsConfigurationV2CorsRule `pulumi:"corsRules"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` +} + +type BucketCorsConfigurationV2State struct { + // Name of the bucket. + Bucket pulumi.StringPtrInput + // Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules. + CorsRules BucketCorsConfigurationV2CorsRuleArrayInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput +} + +func (BucketCorsConfigurationV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketCorsConfigurationV2State)(nil)).Elem() +} + +type bucketCorsConfigurationV2Args struct { + // Name of the bucket. + Bucket string `pulumi:"bucket"` + // Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules. + CorsRules []BucketCorsConfigurationV2CorsRule `pulumi:"corsRules"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` +} + +// The set of arguments for constructing a BucketCorsConfigurationV2 resource. +type BucketCorsConfigurationV2Args struct { + // Name of the bucket. + Bucket pulumi.StringInput + // Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules. + CorsRules BucketCorsConfigurationV2CorsRuleArrayInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput +} + +func (BucketCorsConfigurationV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketCorsConfigurationV2Args)(nil)).Elem() +} + +type BucketCorsConfigurationV2Input interface { + pulumi.Input + + ToBucketCorsConfigurationV2Output() BucketCorsConfigurationV2Output + ToBucketCorsConfigurationV2OutputWithContext(ctx context.Context) BucketCorsConfigurationV2Output +} + +func (*BucketCorsConfigurationV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketCorsConfigurationV2)(nil)).Elem() +} + +func (i *BucketCorsConfigurationV2) ToBucketCorsConfigurationV2Output() BucketCorsConfigurationV2Output { + return i.ToBucketCorsConfigurationV2OutputWithContext(context.Background()) +} + +func (i *BucketCorsConfigurationV2) ToBucketCorsConfigurationV2OutputWithContext(ctx context.Context) BucketCorsConfigurationV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketCorsConfigurationV2Output) +} + +// BucketCorsConfigurationV2ArrayInput is an input type that accepts BucketCorsConfigurationV2Array and BucketCorsConfigurationV2ArrayOutput values. +// You can construct a concrete instance of `BucketCorsConfigurationV2ArrayInput` via: +// +// BucketCorsConfigurationV2Array{ BucketCorsConfigurationV2Args{...} } +type BucketCorsConfigurationV2ArrayInput interface { + pulumi.Input + + ToBucketCorsConfigurationV2ArrayOutput() BucketCorsConfigurationV2ArrayOutput + ToBucketCorsConfigurationV2ArrayOutputWithContext(context.Context) BucketCorsConfigurationV2ArrayOutput +} + +type BucketCorsConfigurationV2Array []BucketCorsConfigurationV2Input + +func (BucketCorsConfigurationV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketCorsConfigurationV2)(nil)).Elem() +} + +func (i BucketCorsConfigurationV2Array) ToBucketCorsConfigurationV2ArrayOutput() BucketCorsConfigurationV2ArrayOutput { + return i.ToBucketCorsConfigurationV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketCorsConfigurationV2Array) ToBucketCorsConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketCorsConfigurationV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketCorsConfigurationV2ArrayOutput) +} + +// BucketCorsConfigurationV2MapInput is an input type that accepts BucketCorsConfigurationV2Map and BucketCorsConfigurationV2MapOutput values. +// You can construct a concrete instance of `BucketCorsConfigurationV2MapInput` via: +// +// BucketCorsConfigurationV2Map{ "key": BucketCorsConfigurationV2Args{...} } +type BucketCorsConfigurationV2MapInput interface { + pulumi.Input + + ToBucketCorsConfigurationV2MapOutput() BucketCorsConfigurationV2MapOutput + ToBucketCorsConfigurationV2MapOutputWithContext(context.Context) BucketCorsConfigurationV2MapOutput +} + +type BucketCorsConfigurationV2Map map[string]BucketCorsConfigurationV2Input + +func (BucketCorsConfigurationV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketCorsConfigurationV2)(nil)).Elem() +} + +func (i BucketCorsConfigurationV2Map) ToBucketCorsConfigurationV2MapOutput() BucketCorsConfigurationV2MapOutput { + return i.ToBucketCorsConfigurationV2MapOutputWithContext(context.Background()) +} + +func (i BucketCorsConfigurationV2Map) ToBucketCorsConfigurationV2MapOutputWithContext(ctx context.Context) BucketCorsConfigurationV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketCorsConfigurationV2MapOutput) +} + +type BucketCorsConfigurationV2Output struct{ *pulumi.OutputState } + +func (BucketCorsConfigurationV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketCorsConfigurationV2)(nil)).Elem() +} + +func (o BucketCorsConfigurationV2Output) ToBucketCorsConfigurationV2Output() BucketCorsConfigurationV2Output { + return o +} + +func (o BucketCorsConfigurationV2Output) ToBucketCorsConfigurationV2OutputWithContext(ctx context.Context) BucketCorsConfigurationV2Output { + return o +} + +// Name of the bucket. +func (o BucketCorsConfigurationV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketCorsConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Set of origins and methods (cross-origin access that you want to allow). See below. You can configure up to 100 rules. +func (o BucketCorsConfigurationV2Output) CorsRules() BucketCorsConfigurationV2CorsRuleArrayOutput { + return o.ApplyT(func(v *BucketCorsConfigurationV2) BucketCorsConfigurationV2CorsRuleArrayOutput { return v.CorsRules }).(BucketCorsConfigurationV2CorsRuleArrayOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketCorsConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketCorsConfigurationV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +type BucketCorsConfigurationV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketCorsConfigurationV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketCorsConfigurationV2)(nil)).Elem() +} + +func (o BucketCorsConfigurationV2ArrayOutput) ToBucketCorsConfigurationV2ArrayOutput() BucketCorsConfigurationV2ArrayOutput { + return o +} + +func (o BucketCorsConfigurationV2ArrayOutput) ToBucketCorsConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketCorsConfigurationV2ArrayOutput { + return o +} + +func (o BucketCorsConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketCorsConfigurationV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketCorsConfigurationV2 { + return vs[0].([]*BucketCorsConfigurationV2)[vs[1].(int)] + }).(BucketCorsConfigurationV2Output) +} + +type BucketCorsConfigurationV2MapOutput struct{ *pulumi.OutputState } + +func (BucketCorsConfigurationV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketCorsConfigurationV2)(nil)).Elem() +} + +func (o BucketCorsConfigurationV2MapOutput) ToBucketCorsConfigurationV2MapOutput() BucketCorsConfigurationV2MapOutput { + return o +} + +func (o BucketCorsConfigurationV2MapOutput) ToBucketCorsConfigurationV2MapOutputWithContext(ctx context.Context) BucketCorsConfigurationV2MapOutput { + return o +} + +func (o BucketCorsConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketCorsConfigurationV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketCorsConfigurationV2 { + return vs[0].(map[string]*BucketCorsConfigurationV2)[vs[1].(string)] + }).(BucketCorsConfigurationV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketCorsConfigurationV2Input)(nil)).Elem(), &BucketCorsConfigurationV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketCorsConfigurationV2ArrayInput)(nil)).Elem(), BucketCorsConfigurationV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketCorsConfigurationV2MapInput)(nil)).Elem(), BucketCorsConfigurationV2Map{}) + pulumi.RegisterOutputType(BucketCorsConfigurationV2Output{}) + pulumi.RegisterOutputType(BucketCorsConfigurationV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketCorsConfigurationV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketIntelligentTieringConfiguration.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketIntelligentTieringConfiguration.go new file mode 100644 index 000000000..7b1d66fc1 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketIntelligentTieringConfiguration.go @@ -0,0 +1,388 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an [S3 Intelligent-Tiering](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering.html) configuration resource. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### Add intelligent tiering configuration for entire S3 bucket +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketIntelligentTieringConfiguration(ctx, "example-entire-bucket", &s3.BucketIntelligentTieringConfigurationArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("EntireBucket"), +// Tierings: s3.BucketIntelligentTieringConfigurationTieringArray{ +// &s3.BucketIntelligentTieringConfigurationTieringArgs{ +// AccessTier: pulumi.String("DEEP_ARCHIVE_ACCESS"), +// Days: pulumi.Int(180), +// }, +// &s3.BucketIntelligentTieringConfigurationTieringArgs{ +// AccessTier: pulumi.String("ARCHIVE_ACCESS"), +// Days: pulumi.Int(125), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add intelligent tiering configuration with S3 object filter +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketIntelligentTieringConfiguration(ctx, "example-filtered", &s3.BucketIntelligentTieringConfigurationArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("ImportantBlueDocuments"), +// Status: pulumi.String("Disabled"), +// Filter: &s3.BucketIntelligentTieringConfigurationFilterArgs{ +// Prefix: pulumi.String("documents/"), +// Tags: pulumi.StringMap{ +// "priority": pulumi.String("high"), +// "class": pulumi.String("blue"), +// }, +// }, +// Tierings: s3.BucketIntelligentTieringConfigurationTieringArray{ +// &s3.BucketIntelligentTieringConfigurationTieringArgs{ +// AccessTier: pulumi.String("ARCHIVE_ACCESS"), +// Days: pulumi.Int(125), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket intelligent tiering configurations using `bucket:name`. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration my-bucket-entire-bucket my-bucket:EntireBucket +// ``` +type BucketIntelligentTieringConfiguration struct { + pulumi.CustomResourceState + + // Name of the bucket this intelligent tiering configuration is associated with. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below). + Filter BucketIntelligentTieringConfigurationFilterPtrOutput `pulumi:"filter"` + // Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket. + Name pulumi.StringOutput `pulumi:"name"` + // Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`. + Status pulumi.StringPtrOutput `pulumi:"status"` + // S3 Intelligent-Tiering storage class tiers of the configuration (documented below). + Tierings BucketIntelligentTieringConfigurationTieringArrayOutput `pulumi:"tierings"` +} + +// NewBucketIntelligentTieringConfiguration registers a new resource with the given unique name, arguments, and options. +func NewBucketIntelligentTieringConfiguration(ctx *pulumi.Context, + name string, args *BucketIntelligentTieringConfigurationArgs, opts ...pulumi.ResourceOption) (*BucketIntelligentTieringConfiguration, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Tierings == nil { + return nil, errors.New("invalid value for required argument 'Tierings'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketIntelligentTieringConfiguration + err := ctx.RegisterResource("aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketIntelligentTieringConfiguration gets an existing BucketIntelligentTieringConfiguration 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 GetBucketIntelligentTieringConfiguration(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketIntelligentTieringConfigurationState, opts ...pulumi.ResourceOption) (*BucketIntelligentTieringConfiguration, error) { + var resource BucketIntelligentTieringConfiguration + err := ctx.ReadResource("aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketIntelligentTieringConfiguration resources. +type bucketIntelligentTieringConfigurationState struct { + // Name of the bucket this intelligent tiering configuration is associated with. + Bucket *string `pulumi:"bucket"` + // Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below). + Filter *BucketIntelligentTieringConfigurationFilter `pulumi:"filter"` + // Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket. + Name *string `pulumi:"name"` + // Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`. + Status *string `pulumi:"status"` + // S3 Intelligent-Tiering storage class tiers of the configuration (documented below). + Tierings []BucketIntelligentTieringConfigurationTiering `pulumi:"tierings"` +} + +type BucketIntelligentTieringConfigurationState struct { + // Name of the bucket this intelligent tiering configuration is associated with. + Bucket pulumi.StringPtrInput + // Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below). + Filter BucketIntelligentTieringConfigurationFilterPtrInput + // Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket. + Name pulumi.StringPtrInput + // Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`. + Status pulumi.StringPtrInput + // S3 Intelligent-Tiering storage class tiers of the configuration (documented below). + Tierings BucketIntelligentTieringConfigurationTieringArrayInput +} + +func (BucketIntelligentTieringConfigurationState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketIntelligentTieringConfigurationState)(nil)).Elem() +} + +type bucketIntelligentTieringConfigurationArgs struct { + // Name of the bucket this intelligent tiering configuration is associated with. + Bucket string `pulumi:"bucket"` + // Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below). + Filter *BucketIntelligentTieringConfigurationFilter `pulumi:"filter"` + // Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket. + Name *string `pulumi:"name"` + // Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`. + Status *string `pulumi:"status"` + // S3 Intelligent-Tiering storage class tiers of the configuration (documented below). + Tierings []BucketIntelligentTieringConfigurationTiering `pulumi:"tierings"` +} + +// The set of arguments for constructing a BucketIntelligentTieringConfiguration resource. +type BucketIntelligentTieringConfigurationArgs struct { + // Name of the bucket this intelligent tiering configuration is associated with. + Bucket pulumi.StringInput + // Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below). + Filter BucketIntelligentTieringConfigurationFilterPtrInput + // Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket. + Name pulumi.StringPtrInput + // Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`. + Status pulumi.StringPtrInput + // S3 Intelligent-Tiering storage class tiers of the configuration (documented below). + Tierings BucketIntelligentTieringConfigurationTieringArrayInput +} + +func (BucketIntelligentTieringConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketIntelligentTieringConfigurationArgs)(nil)).Elem() +} + +type BucketIntelligentTieringConfigurationInput interface { + pulumi.Input + + ToBucketIntelligentTieringConfigurationOutput() BucketIntelligentTieringConfigurationOutput + ToBucketIntelligentTieringConfigurationOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationOutput +} + +func (*BucketIntelligentTieringConfiguration) ElementType() reflect.Type { + return reflect.TypeOf((**BucketIntelligentTieringConfiguration)(nil)).Elem() +} + +func (i *BucketIntelligentTieringConfiguration) ToBucketIntelligentTieringConfigurationOutput() BucketIntelligentTieringConfigurationOutput { + return i.ToBucketIntelligentTieringConfigurationOutputWithContext(context.Background()) +} + +func (i *BucketIntelligentTieringConfiguration) ToBucketIntelligentTieringConfigurationOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationOutput) +} + +// BucketIntelligentTieringConfigurationArrayInput is an input type that accepts BucketIntelligentTieringConfigurationArray and BucketIntelligentTieringConfigurationArrayOutput values. +// You can construct a concrete instance of `BucketIntelligentTieringConfigurationArrayInput` via: +// +// BucketIntelligentTieringConfigurationArray{ BucketIntelligentTieringConfigurationArgs{...} } +type BucketIntelligentTieringConfigurationArrayInput interface { + pulumi.Input + + ToBucketIntelligentTieringConfigurationArrayOutput() BucketIntelligentTieringConfigurationArrayOutput + ToBucketIntelligentTieringConfigurationArrayOutputWithContext(context.Context) BucketIntelligentTieringConfigurationArrayOutput +} + +type BucketIntelligentTieringConfigurationArray []BucketIntelligentTieringConfigurationInput + +func (BucketIntelligentTieringConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketIntelligentTieringConfiguration)(nil)).Elem() +} + +func (i BucketIntelligentTieringConfigurationArray) ToBucketIntelligentTieringConfigurationArrayOutput() BucketIntelligentTieringConfigurationArrayOutput { + return i.ToBucketIntelligentTieringConfigurationArrayOutputWithContext(context.Background()) +} + +func (i BucketIntelligentTieringConfigurationArray) ToBucketIntelligentTieringConfigurationArrayOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationArrayOutput) +} + +// BucketIntelligentTieringConfigurationMapInput is an input type that accepts BucketIntelligentTieringConfigurationMap and BucketIntelligentTieringConfigurationMapOutput values. +// You can construct a concrete instance of `BucketIntelligentTieringConfigurationMapInput` via: +// +// BucketIntelligentTieringConfigurationMap{ "key": BucketIntelligentTieringConfigurationArgs{...} } +type BucketIntelligentTieringConfigurationMapInput interface { + pulumi.Input + + ToBucketIntelligentTieringConfigurationMapOutput() BucketIntelligentTieringConfigurationMapOutput + ToBucketIntelligentTieringConfigurationMapOutputWithContext(context.Context) BucketIntelligentTieringConfigurationMapOutput +} + +type BucketIntelligentTieringConfigurationMap map[string]BucketIntelligentTieringConfigurationInput + +func (BucketIntelligentTieringConfigurationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketIntelligentTieringConfiguration)(nil)).Elem() +} + +func (i BucketIntelligentTieringConfigurationMap) ToBucketIntelligentTieringConfigurationMapOutput() BucketIntelligentTieringConfigurationMapOutput { + return i.ToBucketIntelligentTieringConfigurationMapOutputWithContext(context.Background()) +} + +func (i BucketIntelligentTieringConfigurationMap) ToBucketIntelligentTieringConfigurationMapOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationMapOutput) +} + +type BucketIntelligentTieringConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketIntelligentTieringConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketIntelligentTieringConfiguration)(nil)).Elem() +} + +func (o BucketIntelligentTieringConfigurationOutput) ToBucketIntelligentTieringConfigurationOutput() BucketIntelligentTieringConfigurationOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationOutput) ToBucketIntelligentTieringConfigurationOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationOutput { + return o +} + +// Name of the bucket this intelligent tiering configuration is associated with. +func (o BucketIntelligentTieringConfigurationOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Bucket filter. The configuration only includes objects that meet the filter's criteria (documented below). +func (o BucketIntelligentTieringConfigurationOutput) Filter() BucketIntelligentTieringConfigurationFilterPtrOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) BucketIntelligentTieringConfigurationFilterPtrOutput { + return v.Filter + }).(BucketIntelligentTieringConfigurationFilterPtrOutput) +} + +// Unique name used to identify the S3 Intelligent-Tiering configuration for the bucket. +func (o BucketIntelligentTieringConfigurationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Specifies the status of the configuration. Valid values: `Enabled`, `Disabled`. +func (o BucketIntelligentTieringConfigurationOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) pulumi.StringPtrOutput { return v.Status }).(pulumi.StringPtrOutput) +} + +// S3 Intelligent-Tiering storage class tiers of the configuration (documented below). +func (o BucketIntelligentTieringConfigurationOutput) Tierings() BucketIntelligentTieringConfigurationTieringArrayOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfiguration) BucketIntelligentTieringConfigurationTieringArrayOutput { + return v.Tierings + }).(BucketIntelligentTieringConfigurationTieringArrayOutput) +} + +type BucketIntelligentTieringConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (BucketIntelligentTieringConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketIntelligentTieringConfiguration)(nil)).Elem() +} + +func (o BucketIntelligentTieringConfigurationArrayOutput) ToBucketIntelligentTieringConfigurationArrayOutput() BucketIntelligentTieringConfigurationArrayOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationArrayOutput) ToBucketIntelligentTieringConfigurationArrayOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationArrayOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationArrayOutput) Index(i pulumi.IntInput) BucketIntelligentTieringConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketIntelligentTieringConfiguration { + return vs[0].([]*BucketIntelligentTieringConfiguration)[vs[1].(int)] + }).(BucketIntelligentTieringConfigurationOutput) +} + +type BucketIntelligentTieringConfigurationMapOutput struct{ *pulumi.OutputState } + +func (BucketIntelligentTieringConfigurationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketIntelligentTieringConfiguration)(nil)).Elem() +} + +func (o BucketIntelligentTieringConfigurationMapOutput) ToBucketIntelligentTieringConfigurationMapOutput() BucketIntelligentTieringConfigurationMapOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationMapOutput) ToBucketIntelligentTieringConfigurationMapOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationMapOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationMapOutput) MapIndex(k pulumi.StringInput) BucketIntelligentTieringConfigurationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketIntelligentTieringConfiguration { + return vs[0].(map[string]*BucketIntelligentTieringConfiguration)[vs[1].(string)] + }).(BucketIntelligentTieringConfigurationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationInput)(nil)).Elem(), &BucketIntelligentTieringConfiguration{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationArrayInput)(nil)).Elem(), BucketIntelligentTieringConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationMapInput)(nil)).Elem(), BucketIntelligentTieringConfigurationMap{}) + pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationOutput{}) + pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationArrayOutput{}) + pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLifecycleConfigurationV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLifecycleConfigurationV2.go new file mode 100644 index 000000000..54afdf836 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLifecycleConfigurationV2.go @@ -0,0 +1,791 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an independent configuration resource for S3 bucket [lifecycle configuration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). +// +// An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule consists of the following: +// +// * Rule metadata (`id` and `status`) +// * Filter identifying objects to which the rule applies +// * One or more transition or expiration actions +// +// For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). +// +// > S3 Buckets only support a single lifecycle configuration. Declaring multiple `s3.BucketLifecycleConfigurationV2` resources to the same S3 Bucket will cause a perpetual difference in configuration. +// +// > Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. +// Running Pulumi operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. +// See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). +// +// ## Example Usage +// +// ### With neither a filter nor prefix specified +// +// The Lifecycle rule applies to a subset of objects based on the key name prefix (`""`). +// +// This configuration is intended to replicate the default behavior of the `lifecycleRule` +// parameter in the AWS Provider `s3.BucketV2` resource prior to `v4.0`. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Specifying an empty filter +// +// The Lifecycle rule applies to all objects in the bucket. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{}, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Specifying a filter using key prefixes +// +// The Lifecycle rule applies to a subset of objects based on the key name prefix (`logs/`). +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// Prefix: pulumi.String("logs/"), +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// If you want to apply a Lifecycle action to a subset of objects based on different key name prefixes, specify separate rules. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// Prefix: pulumi.String("logs/"), +// }, +// Status: pulumi.String("Enabled"), +// }, +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-2"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// Prefix: pulumi.String("tmp/"), +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Specifying a filter based on an object tag +// +// The Lifecycle rule specifies a filter based on a tag key and value. The rule then applies only to a subset of objects with the specific tag. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// Tag: &s3.BucketLifecycleConfigurationV2RuleFilterTagArgs{ +// Key: pulumi.String("Name"), +// Value: pulumi.String("Staging"), +// }, +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Specifying a filter based on multiple tags +// +// The Lifecycle rule directs Amazon S3 to perform lifecycle actions on objects with two tags (with the specific tag keys and values). Notice `tags` is wrapped in the `and` configuration block. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ +// Tags: pulumi.StringMap{ +// "Key1": pulumi.String("Value1"), +// "Key2": pulumi.String("Value2"), +// }, +// }, +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Specifying a filter based on both prefix and one or more tags +// +// The Lifecycle rule directs Amazon S3 to perform lifecycle actions on objects with the specified prefix and two tags (with the specific tag keys and values). Notice both `prefix` and `tags` are wrapped in the `and` configuration block. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ +// Prefix: pulumi.String("logs/"), +// Tags: pulumi.StringMap{ +// "Key1": pulumi.String("Value1"), +// "Key2": pulumi.String("Value2"), +// }, +// }, +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Specifying a filter based on object size +// +// Object size values are in bytes. Maximum filter size is 5TB. Amazon S3 applies a default behavior to your Lifecycle configuration that prevents objects smaller than 128 KB from being transitioned to any storage class. You can allow smaller objects to transition by adding a minimum size (`objectSizeGreaterThan`) or a maximum size (`objectSizeLessThan`) filter that specifies a smaller size to the configuration. This example allows any object smaller than 128 KB to transition to the S3 Glacier Instant Retrieval storage class: +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("Allow small object transitions"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// ObjectSizeGreaterThan: pulumi.String("1"), +// }, +// Status: pulumi.String("Enabled"), +// Transitions: s3.BucketLifecycleConfigurationV2RuleTransitionArray{ +// &s3.BucketLifecycleConfigurationV2RuleTransitionArgs{ +// Days: pulumi.Int(365), +// StorageClass: pulumi.String("GLACIER_IR"), +// }, +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Specifying a filter based on object size range and prefix +// +// The `objectSizeGreaterThan` must be less than the `objectSizeLessThan`. Notice both the object size range and prefix are wrapped in the `and` configuration block. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: pulumi.Any(bucket.Id), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("rule-1"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ +// Prefix: pulumi.String("logs/"), +// ObjectSizeGreaterThan: pulumi.Int(500), +// ObjectSizeLessThan: pulumi.Int(64000), +// }, +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Creating a Lifecycle Configuration for a bucket with versioning +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "bucket_acl", &s3.BucketAclV2Args{ +// Bucket: bucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketLifecycleConfigurationV2(ctx, "bucket-config", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: bucket.ID(), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("log"), +// Expiration: &s3.BucketLifecycleConfigurationV2RuleExpirationArgs{ +// Days: pulumi.Int(90), +// }, +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ +// Prefix: pulumi.String("log/"), +// Tags: pulumi.StringMap{ +// "rule": pulumi.String("log"), +// "autoclean": pulumi.String("true"), +// }, +// }, +// }, +// Status: pulumi.String("Enabled"), +// Transitions: s3.BucketLifecycleConfigurationV2RuleTransitionArray{ +// &s3.BucketLifecycleConfigurationV2RuleTransitionArgs{ +// Days: pulumi.Int(30), +// StorageClass: pulumi.String("STANDARD_IA"), +// }, +// &s3.BucketLifecycleConfigurationV2RuleTransitionArgs{ +// Days: pulumi.Int(60), +// StorageClass: pulumi.String("GLACIER"), +// }, +// }, +// }, +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("tmp"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// Prefix: pulumi.String("tmp/"), +// }, +// Expiration: &s3.BucketLifecycleConfigurationV2RuleExpirationArgs{ +// Date: pulumi.String("2023-01-13T00:00:00Z"), +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// versioningBucket, err := s3.NewBucketV2(ctx, "versioning_bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-versioning-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "versioning_bucket_acl", &s3.BucketAclV2Args{ +// Bucket: versioningBucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// versioning, err := s3.NewBucketVersioningV2(ctx, "versioning", &s3.BucketVersioningV2Args{ +// Bucket: versioningBucket.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketLifecycleConfigurationV2(ctx, "versioning-bucket-config", &s3.BucketLifecycleConfigurationV2Args{ +// Bucket: versioningBucket.ID(), +// Rules: s3.BucketLifecycleConfigurationV2RuleArray{ +// &s3.BucketLifecycleConfigurationV2RuleArgs{ +// Id: pulumi.String("config"), +// Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ +// Prefix: pulumi.String("config/"), +// }, +// NoncurrentVersionExpiration: &s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs{ +// NoncurrentDays: pulumi.Int(90), +// }, +// NoncurrentVersionTransitions: s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray{ +// &s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs{ +// NoncurrentDays: pulumi.Int(30), +// StorageClass: pulumi.String("STANDARD_IA"), +// }, +// &s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs{ +// NoncurrentDays: pulumi.Int(60), +// StorageClass: pulumi.String("GLACIER"), +// }, +// }, +// Status: pulumi.String("Enabled"), +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// versioning, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// Using `pulumi import`, import an S3 bucket lifecycle configuration using the `bucket` or the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2 example bucket-name,123456789012 +// ``` +type BucketLifecycleConfigurationV2 struct { + pulumi.CustomResourceState + + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // List of configuration blocks describing the rules managing the replication. See below. + Rules BucketLifecycleConfigurationV2RuleArrayOutput `pulumi:"rules"` + // The default minimum object size behavior applied to the lifecycle configuration. Valid values: `all_storage_classes_128K` (default), `variesByStorageClass`. To customize the minimum object size for any transition you can add a `filter` that specifies a custom `objectSizeGreaterThan` or `objectSizeLessThan` value. Custom filters always take precedence over the default transition behavior. + TransitionDefaultMinimumObjectSize pulumi.StringOutput `pulumi:"transitionDefaultMinimumObjectSize"` +} + +// NewBucketLifecycleConfigurationV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketLifecycleConfigurationV2(ctx *pulumi.Context, + name string, args *BucketLifecycleConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketLifecycleConfigurationV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Rules == nil { + return nil, errors.New("invalid value for required argument 'Rules'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketLifecycleConfigurationV2 + err := ctx.RegisterResource("aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketLifecycleConfigurationV2 gets an existing BucketLifecycleConfigurationV2 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 GetBucketLifecycleConfigurationV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketLifecycleConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketLifecycleConfigurationV2, error) { + var resource BucketLifecycleConfigurationV2 + err := ctx.ReadResource("aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketLifecycleConfigurationV2 resources. +type bucketLifecycleConfigurationV2State struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // List of configuration blocks describing the rules managing the replication. See below. + Rules []BucketLifecycleConfigurationV2Rule `pulumi:"rules"` + // The default minimum object size behavior applied to the lifecycle configuration. Valid values: `all_storage_classes_128K` (default), `variesByStorageClass`. To customize the minimum object size for any transition you can add a `filter` that specifies a custom `objectSizeGreaterThan` or `objectSizeLessThan` value. Custom filters always take precedence over the default transition behavior. + TransitionDefaultMinimumObjectSize *string `pulumi:"transitionDefaultMinimumObjectSize"` +} + +type BucketLifecycleConfigurationV2State struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner pulumi.StringPtrInput + // List of configuration blocks describing the rules managing the replication. See below. + Rules BucketLifecycleConfigurationV2RuleArrayInput + // The default minimum object size behavior applied to the lifecycle configuration. Valid values: `all_storage_classes_128K` (default), `variesByStorageClass`. To customize the minimum object size for any transition you can add a `filter` that specifies a custom `objectSizeGreaterThan` or `objectSizeLessThan` value. Custom filters always take precedence over the default transition behavior. + TransitionDefaultMinimumObjectSize pulumi.StringPtrInput +} + +func (BucketLifecycleConfigurationV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketLifecycleConfigurationV2State)(nil)).Elem() +} + +type bucketLifecycleConfigurationV2Args struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // List of configuration blocks describing the rules managing the replication. See below. + Rules []BucketLifecycleConfigurationV2Rule `pulumi:"rules"` + // The default minimum object size behavior applied to the lifecycle configuration. Valid values: `all_storage_classes_128K` (default), `variesByStorageClass`. To customize the minimum object size for any transition you can add a `filter` that specifies a custom `objectSizeGreaterThan` or `objectSizeLessThan` value. Custom filters always take precedence over the default transition behavior. + TransitionDefaultMinimumObjectSize *string `pulumi:"transitionDefaultMinimumObjectSize"` +} + +// The set of arguments for constructing a BucketLifecycleConfigurationV2 resource. +type BucketLifecycleConfigurationV2Args struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner pulumi.StringPtrInput + // List of configuration blocks describing the rules managing the replication. See below. + Rules BucketLifecycleConfigurationV2RuleArrayInput + // The default minimum object size behavior applied to the lifecycle configuration. Valid values: `all_storage_classes_128K` (default), `variesByStorageClass`. To customize the minimum object size for any transition you can add a `filter` that specifies a custom `objectSizeGreaterThan` or `objectSizeLessThan` value. Custom filters always take precedence over the default transition behavior. + TransitionDefaultMinimumObjectSize pulumi.StringPtrInput +} + +func (BucketLifecycleConfigurationV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketLifecycleConfigurationV2Args)(nil)).Elem() +} + +type BucketLifecycleConfigurationV2Input interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2Output() BucketLifecycleConfigurationV2Output + ToBucketLifecycleConfigurationV2OutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2Output +} + +func (*BucketLifecycleConfigurationV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2)(nil)).Elem() +} + +func (i *BucketLifecycleConfigurationV2) ToBucketLifecycleConfigurationV2Output() BucketLifecycleConfigurationV2Output { + return i.ToBucketLifecycleConfigurationV2OutputWithContext(context.Background()) +} + +func (i *BucketLifecycleConfigurationV2) ToBucketLifecycleConfigurationV2OutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2Output) +} + +// BucketLifecycleConfigurationV2ArrayInput is an input type that accepts BucketLifecycleConfigurationV2Array and BucketLifecycleConfigurationV2ArrayOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2ArrayInput` via: +// +// BucketLifecycleConfigurationV2Array{ BucketLifecycleConfigurationV2Args{...} } +type BucketLifecycleConfigurationV2ArrayInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2ArrayOutput() BucketLifecycleConfigurationV2ArrayOutput + ToBucketLifecycleConfigurationV2ArrayOutputWithContext(context.Context) BucketLifecycleConfigurationV2ArrayOutput +} + +type BucketLifecycleConfigurationV2Array []BucketLifecycleConfigurationV2Input + +func (BucketLifecycleConfigurationV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketLifecycleConfigurationV2)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2Array) ToBucketLifecycleConfigurationV2ArrayOutput() BucketLifecycleConfigurationV2ArrayOutput { + return i.ToBucketLifecycleConfigurationV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2Array) ToBucketLifecycleConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2ArrayOutput) +} + +// BucketLifecycleConfigurationV2MapInput is an input type that accepts BucketLifecycleConfigurationV2Map and BucketLifecycleConfigurationV2MapOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2MapInput` via: +// +// BucketLifecycleConfigurationV2Map{ "key": BucketLifecycleConfigurationV2Args{...} } +type BucketLifecycleConfigurationV2MapInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2MapOutput() BucketLifecycleConfigurationV2MapOutput + ToBucketLifecycleConfigurationV2MapOutputWithContext(context.Context) BucketLifecycleConfigurationV2MapOutput +} + +type BucketLifecycleConfigurationV2Map map[string]BucketLifecycleConfigurationV2Input + +func (BucketLifecycleConfigurationV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketLifecycleConfigurationV2)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2Map) ToBucketLifecycleConfigurationV2MapOutput() BucketLifecycleConfigurationV2MapOutput { + return i.ToBucketLifecycleConfigurationV2MapOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2Map) ToBucketLifecycleConfigurationV2MapOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2MapOutput) +} + +type BucketLifecycleConfigurationV2Output struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2Output) ToBucketLifecycleConfigurationV2Output() BucketLifecycleConfigurationV2Output { + return o +} + +func (o BucketLifecycleConfigurationV2Output) ToBucketLifecycleConfigurationV2OutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2Output { + return o +} + +// Name of the source S3 bucket you want Amazon S3 to monitor. +func (o BucketLifecycleConfigurationV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. +func (o BucketLifecycleConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// List of configuration blocks describing the rules managing the replication. See below. +func (o BucketLifecycleConfigurationV2Output) Rules() BucketLifecycleConfigurationV2RuleArrayOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2) BucketLifecycleConfigurationV2RuleArrayOutput { return v.Rules }).(BucketLifecycleConfigurationV2RuleArrayOutput) +} + +// The default minimum object size behavior applied to the lifecycle configuration. Valid values: `all_storage_classes_128K` (default), `variesByStorageClass`. To customize the minimum object size for any transition you can add a `filter` that specifies a custom `objectSizeGreaterThan` or `objectSizeLessThan` value. Custom filters always take precedence over the default transition behavior. +func (o BucketLifecycleConfigurationV2Output) TransitionDefaultMinimumObjectSize() pulumi.StringOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2) pulumi.StringOutput { + return v.TransitionDefaultMinimumObjectSize + }).(pulumi.StringOutput) +} + +type BucketLifecycleConfigurationV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketLifecycleConfigurationV2)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2ArrayOutput) ToBucketLifecycleConfigurationV2ArrayOutput() BucketLifecycleConfigurationV2ArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2ArrayOutput) ToBucketLifecycleConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2ArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketLifecycleConfigurationV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketLifecycleConfigurationV2 { + return vs[0].([]*BucketLifecycleConfigurationV2)[vs[1].(int)] + }).(BucketLifecycleConfigurationV2Output) +} + +type BucketLifecycleConfigurationV2MapOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketLifecycleConfigurationV2)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2MapOutput) ToBucketLifecycleConfigurationV2MapOutput() BucketLifecycleConfigurationV2MapOutput { + return o +} + +func (o BucketLifecycleConfigurationV2MapOutput) ToBucketLifecycleConfigurationV2MapOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2MapOutput { + return o +} + +func (o BucketLifecycleConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketLifecycleConfigurationV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketLifecycleConfigurationV2 { + return vs[0].(map[string]*BucketLifecycleConfigurationV2)[vs[1].(string)] + }).(BucketLifecycleConfigurationV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2Input)(nil)).Elem(), &BucketLifecycleConfigurationV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2ArrayInput)(nil)).Elem(), BucketLifecycleConfigurationV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2MapInput)(nil)).Elem(), BucketLifecycleConfigurationV2Map{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2Output{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLoggingV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLoggingV2.go new file mode 100644 index 000000000..44c8f2b4f --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketLoggingV2.go @@ -0,0 +1,377 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 bucket (server access) logging resource. For more information, see [Logging requests using server access logging](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html) +// in the AWS S3 User Guide. +// +// > **Note:** Amazon S3 supports server access logging, AWS CloudTrail, or a combination of both. Refer to the [Logging options for Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/logging-with-S3.html) +// to decide which method meets your requirements. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-example-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: example.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// logBucket, err := s3.NewBucketV2(ctx, "log_bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-log-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "log_bucket_acl", &s3.BucketAclV2Args{ +// Bucket: logBucket.ID(), +// Acl: pulumi.String("log-delivery-write"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketLoggingV2(ctx, "example", &s3.BucketLoggingV2Args{ +// Bucket: example.ID(), +// TargetBucket: logBucket.ID(), +// TargetPrefix: pulumi.String("log/"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// __Using `pulumi import` to import__ S3 bucket logging using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketLoggingV2:BucketLoggingV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketLoggingV2:BucketLoggingV2 example bucket-name,123456789012 +// ``` +type BucketLoggingV2 struct { + pulumi.CustomResourceState + + // Name of the bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Name of the bucket where you want Amazon S3 to store server access logs. + TargetBucket pulumi.StringOutput `pulumi:"targetBucket"` + // Set of configuration blocks with information for granting permissions. See below. + TargetGrants BucketLoggingV2TargetGrantArrayOutput `pulumi:"targetGrants"` + // Amazon S3 key format for log objects. See below. + TargetObjectKeyFormat BucketLoggingV2TargetObjectKeyFormatPtrOutput `pulumi:"targetObjectKeyFormat"` + // Prefix for all log object keys. + TargetPrefix pulumi.StringOutput `pulumi:"targetPrefix"` +} + +// NewBucketLoggingV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketLoggingV2(ctx *pulumi.Context, + name string, args *BucketLoggingV2Args, opts ...pulumi.ResourceOption) (*BucketLoggingV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.TargetBucket == nil { + return nil, errors.New("invalid value for required argument 'TargetBucket'") + } + if args.TargetPrefix == nil { + return nil, errors.New("invalid value for required argument 'TargetPrefix'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketLoggingV2 + err := ctx.RegisterResource("aws:s3/bucketLoggingV2:BucketLoggingV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketLoggingV2 gets an existing BucketLoggingV2 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 GetBucketLoggingV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketLoggingV2State, opts ...pulumi.ResourceOption) (*BucketLoggingV2, error) { + var resource BucketLoggingV2 + err := ctx.ReadResource("aws:s3/bucketLoggingV2:BucketLoggingV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketLoggingV2 resources. +type bucketLoggingV2State struct { + // Name of the bucket. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Name of the bucket where you want Amazon S3 to store server access logs. + TargetBucket *string `pulumi:"targetBucket"` + // Set of configuration blocks with information for granting permissions. See below. + TargetGrants []BucketLoggingV2TargetGrant `pulumi:"targetGrants"` + // Amazon S3 key format for log objects. See below. + TargetObjectKeyFormat *BucketLoggingV2TargetObjectKeyFormat `pulumi:"targetObjectKeyFormat"` + // Prefix for all log object keys. + TargetPrefix *string `pulumi:"targetPrefix"` +} + +type BucketLoggingV2State struct { + // Name of the bucket. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Name of the bucket where you want Amazon S3 to store server access logs. + TargetBucket pulumi.StringPtrInput + // Set of configuration blocks with information for granting permissions. See below. + TargetGrants BucketLoggingV2TargetGrantArrayInput + // Amazon S3 key format for log objects. See below. + TargetObjectKeyFormat BucketLoggingV2TargetObjectKeyFormatPtrInput + // Prefix for all log object keys. + TargetPrefix pulumi.StringPtrInput +} + +func (BucketLoggingV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketLoggingV2State)(nil)).Elem() +} + +type bucketLoggingV2Args struct { + // Name of the bucket. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Name of the bucket where you want Amazon S3 to store server access logs. + TargetBucket string `pulumi:"targetBucket"` + // Set of configuration blocks with information for granting permissions. See below. + TargetGrants []BucketLoggingV2TargetGrant `pulumi:"targetGrants"` + // Amazon S3 key format for log objects. See below. + TargetObjectKeyFormat *BucketLoggingV2TargetObjectKeyFormat `pulumi:"targetObjectKeyFormat"` + // Prefix for all log object keys. + TargetPrefix string `pulumi:"targetPrefix"` +} + +// The set of arguments for constructing a BucketLoggingV2 resource. +type BucketLoggingV2Args struct { + // Name of the bucket. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Name of the bucket where you want Amazon S3 to store server access logs. + TargetBucket pulumi.StringInput + // Set of configuration blocks with information for granting permissions. See below. + TargetGrants BucketLoggingV2TargetGrantArrayInput + // Amazon S3 key format for log objects. See below. + TargetObjectKeyFormat BucketLoggingV2TargetObjectKeyFormatPtrInput + // Prefix for all log object keys. + TargetPrefix pulumi.StringInput +} + +func (BucketLoggingV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketLoggingV2Args)(nil)).Elem() +} + +type BucketLoggingV2Input interface { + pulumi.Input + + ToBucketLoggingV2Output() BucketLoggingV2Output + ToBucketLoggingV2OutputWithContext(ctx context.Context) BucketLoggingV2Output +} + +func (*BucketLoggingV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2)(nil)).Elem() +} + +func (i *BucketLoggingV2) ToBucketLoggingV2Output() BucketLoggingV2Output { + return i.ToBucketLoggingV2OutputWithContext(context.Background()) +} + +func (i *BucketLoggingV2) ToBucketLoggingV2OutputWithContext(ctx context.Context) BucketLoggingV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2Output) +} + +// BucketLoggingV2ArrayInput is an input type that accepts BucketLoggingV2Array and BucketLoggingV2ArrayOutput values. +// You can construct a concrete instance of `BucketLoggingV2ArrayInput` via: +// +// BucketLoggingV2Array{ BucketLoggingV2Args{...} } +type BucketLoggingV2ArrayInput interface { + pulumi.Input + + ToBucketLoggingV2ArrayOutput() BucketLoggingV2ArrayOutput + ToBucketLoggingV2ArrayOutputWithContext(context.Context) BucketLoggingV2ArrayOutput +} + +type BucketLoggingV2Array []BucketLoggingV2Input + +func (BucketLoggingV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketLoggingV2)(nil)).Elem() +} + +func (i BucketLoggingV2Array) ToBucketLoggingV2ArrayOutput() BucketLoggingV2ArrayOutput { + return i.ToBucketLoggingV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2Array) ToBucketLoggingV2ArrayOutputWithContext(ctx context.Context) BucketLoggingV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2ArrayOutput) +} + +// BucketLoggingV2MapInput is an input type that accepts BucketLoggingV2Map and BucketLoggingV2MapOutput values. +// You can construct a concrete instance of `BucketLoggingV2MapInput` via: +// +// BucketLoggingV2Map{ "key": BucketLoggingV2Args{...} } +type BucketLoggingV2MapInput interface { + pulumi.Input + + ToBucketLoggingV2MapOutput() BucketLoggingV2MapOutput + ToBucketLoggingV2MapOutputWithContext(context.Context) BucketLoggingV2MapOutput +} + +type BucketLoggingV2Map map[string]BucketLoggingV2Input + +func (BucketLoggingV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketLoggingV2)(nil)).Elem() +} + +func (i BucketLoggingV2Map) ToBucketLoggingV2MapOutput() BucketLoggingV2MapOutput { + return i.ToBucketLoggingV2MapOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2Map) ToBucketLoggingV2MapOutputWithContext(ctx context.Context) BucketLoggingV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2MapOutput) +} + +type BucketLoggingV2Output struct{ *pulumi.OutputState } + +func (BucketLoggingV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2)(nil)).Elem() +} + +func (o BucketLoggingV2Output) ToBucketLoggingV2Output() BucketLoggingV2Output { + return o +} + +func (o BucketLoggingV2Output) ToBucketLoggingV2OutputWithContext(ctx context.Context) BucketLoggingV2Output { + return o +} + +// Name of the bucket. +func (o BucketLoggingV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketLoggingV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketLoggingV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLoggingV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// Name of the bucket where you want Amazon S3 to store server access logs. +func (o BucketLoggingV2Output) TargetBucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketLoggingV2) pulumi.StringOutput { return v.TargetBucket }).(pulumi.StringOutput) +} + +// Set of configuration blocks with information for granting permissions. See below. +func (o BucketLoggingV2Output) TargetGrants() BucketLoggingV2TargetGrantArrayOutput { + return o.ApplyT(func(v *BucketLoggingV2) BucketLoggingV2TargetGrantArrayOutput { return v.TargetGrants }).(BucketLoggingV2TargetGrantArrayOutput) +} + +// Amazon S3 key format for log objects. See below. +func (o BucketLoggingV2Output) TargetObjectKeyFormat() BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return o.ApplyT(func(v *BucketLoggingV2) BucketLoggingV2TargetObjectKeyFormatPtrOutput { return v.TargetObjectKeyFormat }).(BucketLoggingV2TargetObjectKeyFormatPtrOutput) +} + +// Prefix for all log object keys. +func (o BucketLoggingV2Output) TargetPrefix() pulumi.StringOutput { + return o.ApplyT(func(v *BucketLoggingV2) pulumi.StringOutput { return v.TargetPrefix }).(pulumi.StringOutput) +} + +type BucketLoggingV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketLoggingV2)(nil)).Elem() +} + +func (o BucketLoggingV2ArrayOutput) ToBucketLoggingV2ArrayOutput() BucketLoggingV2ArrayOutput { + return o +} + +func (o BucketLoggingV2ArrayOutput) ToBucketLoggingV2ArrayOutputWithContext(ctx context.Context) BucketLoggingV2ArrayOutput { + return o +} + +func (o BucketLoggingV2ArrayOutput) Index(i pulumi.IntInput) BucketLoggingV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketLoggingV2 { + return vs[0].([]*BucketLoggingV2)[vs[1].(int)] + }).(BucketLoggingV2Output) +} + +type BucketLoggingV2MapOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketLoggingV2)(nil)).Elem() +} + +func (o BucketLoggingV2MapOutput) ToBucketLoggingV2MapOutput() BucketLoggingV2MapOutput { + return o +} + +func (o BucketLoggingV2MapOutput) ToBucketLoggingV2MapOutputWithContext(ctx context.Context) BucketLoggingV2MapOutput { + return o +} + +func (o BucketLoggingV2MapOutput) MapIndex(k pulumi.StringInput) BucketLoggingV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketLoggingV2 { + return vs[0].(map[string]*BucketLoggingV2)[vs[1].(string)] + }).(BucketLoggingV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2Input)(nil)).Elem(), &BucketLoggingV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2ArrayInput)(nil)).Elem(), BucketLoggingV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2MapInput)(nil)).Elem(), BucketLoggingV2Map{}) + pulumi.RegisterOutputType(BucketLoggingV2Output{}) + pulumi.RegisterOutputType(BucketLoggingV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketMetric.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketMetric.go new file mode 100644 index 000000000..2c785ba5d --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketMetric.go @@ -0,0 +1,381 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a S3 bucket [metrics configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/metrics-configurations.html) resource. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### Add metrics configuration for entire S3 bucket +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketMetric(ctx, "example-entire-bucket", &s3.BucketMetricArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("EntireBucket"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add metrics configuration with S3 object filter +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketMetric(ctx, "example-filtered", &s3.BucketMetricArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("ImportantBlueDocuments"), +// Filter: &s3.BucketMetricFilterArgs{ +// Prefix: pulumi.String("documents/"), +// Tags: pulumi.StringMap{ +// "priority": pulumi.String("high"), +// "class": pulumi.String("blue"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add metrics configuration with S3 object filter for S3 Access Point +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewAccessPoint(ctx, "example-access-point", &s3.AccessPointArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("example-access-point"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketMetric(ctx, "example-filtered", &s3.BucketMetricArgs{ +// Bucket: example.ID(), +// Name: pulumi.String("ImportantBlueDocuments"), +// Filter: &s3.BucketMetricFilterArgs{ +// AccessPoint: example_access_point.Arn, +// Tags: pulumi.StringMap{ +// "priority": pulumi.String("high"), +// "class": pulumi.String("blue"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket metric configurations using `bucket:metric`. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketMetric:BucketMetric my-bucket-entire-bucket my-bucket:EntireBucket +// ``` +type BucketMetric struct { + pulumi.CustomResourceState + + // Name of the bucket to put metric configuration. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // [Object filtering](http://docs.aws.amazon.com/AmazonS3/latest/dev/metrics-configurations.html#metrics-configurations-filter) that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter BucketMetricFilterPtrOutput `pulumi:"filter"` + // Unique identifier of the metrics configuration for the bucket. Must be less than or equal to 64 characters in length. + Name pulumi.StringOutput `pulumi:"name"` +} + +// NewBucketMetric registers a new resource with the given unique name, arguments, and options. +func NewBucketMetric(ctx *pulumi.Context, + name string, args *BucketMetricArgs, opts ...pulumi.ResourceOption) (*BucketMetric, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketMetric + err := ctx.RegisterResource("aws:s3/bucketMetric:BucketMetric", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketMetric gets an existing BucketMetric 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 GetBucketMetric(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketMetricState, opts ...pulumi.ResourceOption) (*BucketMetric, error) { + var resource BucketMetric + err := ctx.ReadResource("aws:s3/bucketMetric:BucketMetric", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketMetric resources. +type bucketMetricState struct { + // Name of the bucket to put metric configuration. + Bucket *string `pulumi:"bucket"` + // [Object filtering](http://docs.aws.amazon.com/AmazonS3/latest/dev/metrics-configurations.html#metrics-configurations-filter) that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter *BucketMetricFilter `pulumi:"filter"` + // Unique identifier of the metrics configuration for the bucket. Must be less than or equal to 64 characters in length. + Name *string `pulumi:"name"` +} + +type BucketMetricState struct { + // Name of the bucket to put metric configuration. + Bucket pulumi.StringPtrInput + // [Object filtering](http://docs.aws.amazon.com/AmazonS3/latest/dev/metrics-configurations.html#metrics-configurations-filter) that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter BucketMetricFilterPtrInput + // Unique identifier of the metrics configuration for the bucket. Must be less than or equal to 64 characters in length. + Name pulumi.StringPtrInput +} + +func (BucketMetricState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketMetricState)(nil)).Elem() +} + +type bucketMetricArgs struct { + // Name of the bucket to put metric configuration. + Bucket string `pulumi:"bucket"` + // [Object filtering](http://docs.aws.amazon.com/AmazonS3/latest/dev/metrics-configurations.html#metrics-configurations-filter) that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter *BucketMetricFilter `pulumi:"filter"` + // Unique identifier of the metrics configuration for the bucket. Must be less than or equal to 64 characters in length. + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a BucketMetric resource. +type BucketMetricArgs struct { + // Name of the bucket to put metric configuration. + Bucket pulumi.StringInput + // [Object filtering](http://docs.aws.amazon.com/AmazonS3/latest/dev/metrics-configurations.html#metrics-configurations-filter) that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). + Filter BucketMetricFilterPtrInput + // Unique identifier of the metrics configuration for the bucket. Must be less than or equal to 64 characters in length. + Name pulumi.StringPtrInput +} + +func (BucketMetricArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketMetricArgs)(nil)).Elem() +} + +type BucketMetricInput interface { + pulumi.Input + + ToBucketMetricOutput() BucketMetricOutput + ToBucketMetricOutputWithContext(ctx context.Context) BucketMetricOutput +} + +func (*BucketMetric) ElementType() reflect.Type { + return reflect.TypeOf((**BucketMetric)(nil)).Elem() +} + +func (i *BucketMetric) ToBucketMetricOutput() BucketMetricOutput { + return i.ToBucketMetricOutputWithContext(context.Background()) +} + +func (i *BucketMetric) ToBucketMetricOutputWithContext(ctx context.Context) BucketMetricOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketMetricOutput) +} + +// BucketMetricArrayInput is an input type that accepts BucketMetricArray and BucketMetricArrayOutput values. +// You can construct a concrete instance of `BucketMetricArrayInput` via: +// +// BucketMetricArray{ BucketMetricArgs{...} } +type BucketMetricArrayInput interface { + pulumi.Input + + ToBucketMetricArrayOutput() BucketMetricArrayOutput + ToBucketMetricArrayOutputWithContext(context.Context) BucketMetricArrayOutput +} + +type BucketMetricArray []BucketMetricInput + +func (BucketMetricArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketMetric)(nil)).Elem() +} + +func (i BucketMetricArray) ToBucketMetricArrayOutput() BucketMetricArrayOutput { + return i.ToBucketMetricArrayOutputWithContext(context.Background()) +} + +func (i BucketMetricArray) ToBucketMetricArrayOutputWithContext(ctx context.Context) BucketMetricArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketMetricArrayOutput) +} + +// BucketMetricMapInput is an input type that accepts BucketMetricMap and BucketMetricMapOutput values. +// You can construct a concrete instance of `BucketMetricMapInput` via: +// +// BucketMetricMap{ "key": BucketMetricArgs{...} } +type BucketMetricMapInput interface { + pulumi.Input + + ToBucketMetricMapOutput() BucketMetricMapOutput + ToBucketMetricMapOutputWithContext(context.Context) BucketMetricMapOutput +} + +type BucketMetricMap map[string]BucketMetricInput + +func (BucketMetricMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketMetric)(nil)).Elem() +} + +func (i BucketMetricMap) ToBucketMetricMapOutput() BucketMetricMapOutput { + return i.ToBucketMetricMapOutputWithContext(context.Background()) +} + +func (i BucketMetricMap) ToBucketMetricMapOutputWithContext(ctx context.Context) BucketMetricMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketMetricMapOutput) +} + +type BucketMetricOutput struct{ *pulumi.OutputState } + +func (BucketMetricOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketMetric)(nil)).Elem() +} + +func (o BucketMetricOutput) ToBucketMetricOutput() BucketMetricOutput { + return o +} + +func (o BucketMetricOutput) ToBucketMetricOutputWithContext(ctx context.Context) BucketMetricOutput { + return o +} + +// Name of the bucket to put metric configuration. +func (o BucketMetricOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketMetric) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// [Object filtering](http://docs.aws.amazon.com/AmazonS3/latest/dev/metrics-configurations.html#metrics-configurations-filter) that accepts a prefix, tags, or a logical AND of prefix and tags (documented below). +func (o BucketMetricOutput) Filter() BucketMetricFilterPtrOutput { + return o.ApplyT(func(v *BucketMetric) BucketMetricFilterPtrOutput { return v.Filter }).(BucketMetricFilterPtrOutput) +} + +// Unique identifier of the metrics configuration for the bucket. Must be less than or equal to 64 characters in length. +func (o BucketMetricOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *BucketMetric) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +type BucketMetricArrayOutput struct{ *pulumi.OutputState } + +func (BucketMetricArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketMetric)(nil)).Elem() +} + +func (o BucketMetricArrayOutput) ToBucketMetricArrayOutput() BucketMetricArrayOutput { + return o +} + +func (o BucketMetricArrayOutput) ToBucketMetricArrayOutputWithContext(ctx context.Context) BucketMetricArrayOutput { + return o +} + +func (o BucketMetricArrayOutput) Index(i pulumi.IntInput) BucketMetricOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketMetric { + return vs[0].([]*BucketMetric)[vs[1].(int)] + }).(BucketMetricOutput) +} + +type BucketMetricMapOutput struct{ *pulumi.OutputState } + +func (BucketMetricMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketMetric)(nil)).Elem() +} + +func (o BucketMetricMapOutput) ToBucketMetricMapOutput() BucketMetricMapOutput { + return o +} + +func (o BucketMetricMapOutput) ToBucketMetricMapOutputWithContext(ctx context.Context) BucketMetricMapOutput { + return o +} + +func (o BucketMetricMapOutput) MapIndex(k pulumi.StringInput) BucketMetricOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketMetric { + return vs[0].(map[string]*BucketMetric)[vs[1].(string)] + }).(BucketMetricOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketMetricInput)(nil)).Elem(), &BucketMetric{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketMetricArrayInput)(nil)).Elem(), BucketMetricArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketMetricMapInput)(nil)).Elem(), BucketMetricMap{}) + pulumi.RegisterOutputType(BucketMetricOutput{}) + pulumi.RegisterOutputType(BucketMetricArrayOutput{}) + pulumi.RegisterOutputType(BucketMetricMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketNotification.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketNotification.go new file mode 100644 index 000000000..64f99f229 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketNotification.go @@ -0,0 +1,811 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages a S3 Bucket Notification Configuration. For additional information, see the [Configuring S3 Event Notifications section in the Amazon S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html). +// +// > **NOTE:** S3 Buckets only support a single notification configuration resource. Declaring multiple `s3.BucketNotification` resources to the same S3 Bucket will cause a perpetual difference in configuration. This resource will overwrite any existing event notifications configured for the S3 bucket it's associated with. See the example "Trigger multiple Lambda functions" for an option of how to configure multiple triggers within this resource. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### Add notification configuration to SNS Topic +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("your-bucket-name"), +// }) +// if err != nil { +// return err +// } +// topic := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("Service"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("s3.amazonaws.com"), +// }, +// }, +// }, +// Actions: pulumi.StringArray{ +// pulumi.String("SNS:Publish"), +// }, +// Resources: pulumi.StringArray{ +// pulumi.String("arn:aws:sns:*:*:s3-event-notification-topic"), +// }, +// Conditions: iam.GetPolicyDocumentStatementConditionArray{ +// &iam.GetPolicyDocumentStatementConditionArgs{ +// Test: pulumi.String("ArnLike"), +// Variable: pulumi.String("aws:SourceArn"), +// Values: pulumi.StringArray{ +// bucket.Arn, +// }, +// }, +// }, +// }, +// }, +// }, nil) +// topicTopic, err := sns.NewTopic(ctx, "topic", &sns.TopicArgs{ +// Name: pulumi.String("s3-event-notification-topic"), +// Policy: pulumi.String(topic.ApplyT(func(topic iam.GetPolicyDocumentResult) (*string, error) { +// return &topic.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketNotification(ctx, "bucket_notification", &s3.BucketNotificationArgs{ +// Bucket: bucket.ID(), +// Topics: s3.BucketNotificationTopicArray{ +// &s3.BucketNotificationTopicArgs{ +// TopicArn: topicTopic.Arn, +// Events: pulumi.StringArray{ +// pulumi.String("s3:ObjectCreated:*"), +// }, +// FilterSuffix: pulumi.String(".log"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add notification configuration to SQS Queue +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sqs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("your-bucket-name"), +// }) +// if err != nil { +// return err +// } +// queue := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("*"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("*"), +// }, +// }, +// }, +// Actions: pulumi.StringArray{ +// pulumi.String("sqs:SendMessage"), +// }, +// Resources: pulumi.StringArray{ +// pulumi.String("arn:aws:sqs:*:*:s3-event-notification-queue"), +// }, +// Conditions: iam.GetPolicyDocumentStatementConditionArray{ +// &iam.GetPolicyDocumentStatementConditionArgs{ +// Test: pulumi.String("ArnEquals"), +// Variable: pulumi.String("aws:SourceArn"), +// Values: pulumi.StringArray{ +// bucket.Arn, +// }, +// }, +// }, +// }, +// }, +// }, nil) +// queueQueue, err := sqs.NewQueue(ctx, "queue", &sqs.QueueArgs{ +// Name: pulumi.String("s3-event-notification-queue"), +// Policy: pulumi.String(queue.ApplyT(func(queue iam.GetPolicyDocumentResult) (*string, error) { +// return &queue.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketNotification(ctx, "bucket_notification", &s3.BucketNotificationArgs{ +// Bucket: bucket.ID(), +// Queues: s3.BucketNotificationQueueArray{ +// &s3.BucketNotificationQueueArgs{ +// QueueArn: queueQueue.Arn, +// Events: pulumi.StringArray{ +// pulumi.String("s3:ObjectCreated:*"), +// }, +// FilterSuffix: pulumi.String(".log"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add notification configuration to Lambda Function +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "lambda.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// iamForLambda, err := iam.NewRole(ctx, "iam_for_lambda", &iam.RoleArgs{ +// Name: pulumi.String("iam_for_lambda"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// _, err = lambda.NewFunction(ctx, "func", &lambda.FunctionArgs{ +// Code: pulumi.NewFileArchive("your-function.zip"), +// Name: pulumi.String("example_lambda_name"), +// Role: iamForLambda.Arn, +// Handler: pulumi.String("exports.example"), +// Runtime: pulumi.String(lambda.RuntimeNodeJS20dX), +// }) +// if err != nil { +// return err +// } +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("your-bucket-name"), +// }) +// if err != nil { +// return err +// } +// allowBucket, err := lambda.NewPermission(ctx, "allow_bucket", &lambda.PermissionArgs{ +// StatementId: pulumi.String("AllowExecutionFromS3Bucket"), +// Action: pulumi.String("lambda:InvokeFunction"), +// Function: _func.Arn, +// Principal: pulumi.String("s3.amazonaws.com"), +// SourceArn: bucket.Arn, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketNotification(ctx, "bucket_notification", &s3.BucketNotificationArgs{ +// Bucket: bucket.ID(), +// LambdaFunctions: s3.BucketNotificationLambdaFunctionArray{ +// &s3.BucketNotificationLambdaFunctionArgs{ +// LambdaFunctionArn: _func.Arn, +// Events: pulumi.StringArray{ +// pulumi.String("s3:ObjectCreated:*"), +// }, +// FilterPrefix: pulumi.String("AWSLogs/"), +// FilterSuffix: pulumi.String(".log"), +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// allowBucket, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Trigger multiple Lambda functions +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "lambda.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// iamForLambda, err := iam.NewRole(ctx, "iam_for_lambda", &iam.RoleArgs{ +// Name: pulumi.String("iam_for_lambda"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// func1, err := lambda.NewFunction(ctx, "func1", &lambda.FunctionArgs{ +// Code: pulumi.NewFileArchive("your-function1.zip"), +// Name: pulumi.String("example_lambda_name1"), +// Role: iamForLambda.Arn, +// Handler: pulumi.String("exports.example"), +// Runtime: pulumi.String(lambda.RuntimeNodeJS20dX), +// }) +// if err != nil { +// return err +// } +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("your-bucket-name"), +// }) +// if err != nil { +// return err +// } +// allowBucket1, err := lambda.NewPermission(ctx, "allow_bucket1", &lambda.PermissionArgs{ +// StatementId: pulumi.String("AllowExecutionFromS3Bucket1"), +// Action: pulumi.String("lambda:InvokeFunction"), +// Function: func1.Arn, +// Principal: pulumi.String("s3.amazonaws.com"), +// SourceArn: bucket.Arn, +// }) +// if err != nil { +// return err +// } +// func2, err := lambda.NewFunction(ctx, "func2", &lambda.FunctionArgs{ +// Code: pulumi.NewFileArchive("your-function2.zip"), +// Name: pulumi.String("example_lambda_name2"), +// Role: iamForLambda.Arn, +// Handler: pulumi.String("exports.example"), +// }) +// if err != nil { +// return err +// } +// allowBucket2, err := lambda.NewPermission(ctx, "allow_bucket2", &lambda.PermissionArgs{ +// StatementId: pulumi.String("AllowExecutionFromS3Bucket2"), +// Action: pulumi.String("lambda:InvokeFunction"), +// Function: func2.Arn, +// Principal: pulumi.String("s3.amazonaws.com"), +// SourceArn: bucket.Arn, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketNotification(ctx, "bucket_notification", &s3.BucketNotificationArgs{ +// Bucket: bucket.ID(), +// LambdaFunctions: s3.BucketNotificationLambdaFunctionArray{ +// &s3.BucketNotificationLambdaFunctionArgs{ +// LambdaFunctionArn: func1.Arn, +// Events: pulumi.StringArray{ +// pulumi.String("s3:ObjectCreated:*"), +// }, +// FilterPrefix: pulumi.String("AWSLogs/"), +// FilterSuffix: pulumi.String(".log"), +// }, +// &s3.BucketNotificationLambdaFunctionArgs{ +// LambdaFunctionArn: func2.Arn, +// Events: pulumi.StringArray{ +// pulumi.String("s3:ObjectCreated:*"), +// }, +// FilterPrefix: pulumi.String("OtherLogs/"), +// FilterSuffix: pulumi.String(".log"), +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// allowBucket1, +// allowBucket2, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add multiple notification configurations to SQS Queue +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sqs" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("your-bucket-name"), +// }) +// if err != nil { +// return err +// } +// queue := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("*"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("*"), +// }, +// }, +// }, +// Actions: pulumi.StringArray{ +// pulumi.String("sqs:SendMessage"), +// }, +// Resources: pulumi.StringArray{ +// pulumi.String("arn:aws:sqs:*:*:s3-event-notification-queue"), +// }, +// Conditions: iam.GetPolicyDocumentStatementConditionArray{ +// &iam.GetPolicyDocumentStatementConditionArgs{ +// Test: pulumi.String("ArnEquals"), +// Variable: pulumi.String("aws:SourceArn"), +// Values: pulumi.StringArray{ +// bucket.Arn, +// }, +// }, +// }, +// }, +// }, +// }, nil) +// queueQueue, err := sqs.NewQueue(ctx, "queue", &sqs.QueueArgs{ +// Name: pulumi.String("s3-event-notification-queue"), +// Policy: pulumi.String(queue.ApplyT(func(queue iam.GetPolicyDocumentResult) (*string, error) { +// return &queue.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketNotification(ctx, "bucket_notification", &s3.BucketNotificationArgs{ +// Bucket: bucket.ID(), +// Queues: s3.BucketNotificationQueueArray{ +// &s3.BucketNotificationQueueArgs{ +// Id: pulumi.String("image-upload-event"), +// QueueArn: queueQueue.Arn, +// Events: pulumi.StringArray{ +// pulumi.String("s3:ObjectCreated:*"), +// }, +// FilterPrefix: pulumi.String("images/"), +// }, +// &s3.BucketNotificationQueueArgs{ +// Id: pulumi.String("video-upload-event"), +// QueueArn: queueQueue.Arn, +// Events: pulumi.StringArray{ +// pulumi.String("s3:ObjectCreated:*"), +// }, +// FilterPrefix: pulumi.String("videos/"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// For JSON syntax, use an array instead of defining the `queue` key twice. +// +// ### Emit events to EventBridge +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("your-bucket-name"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketNotification(ctx, "bucket_notification", &s3.BucketNotificationArgs{ +// Bucket: bucket.ID(), +// Eventbridge: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket notification using the `bucket`. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketNotification:BucketNotification bucket_notification bucket-name +// ``` +type BucketNotification struct { + pulumi.CustomResourceState + + // Name of the bucket for notification configuration. + // + // The following arguments are optional: + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Whether to enable Amazon EventBridge notifications. Defaults to `false`. + Eventbridge pulumi.BoolPtrOutput `pulumi:"eventbridge"` + // Used to configure notifications to a Lambda Function. See below. + LambdaFunctions BucketNotificationLambdaFunctionArrayOutput `pulumi:"lambdaFunctions"` + // Notification configuration to SQS Queue. See below. + Queues BucketNotificationQueueArrayOutput `pulumi:"queues"` + // Notification configuration to SNS Topic. See below. + Topics BucketNotificationTopicArrayOutput `pulumi:"topics"` +} + +// NewBucketNotification registers a new resource with the given unique name, arguments, and options. +func NewBucketNotification(ctx *pulumi.Context, + name string, args *BucketNotificationArgs, opts ...pulumi.ResourceOption) (*BucketNotification, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketNotification + err := ctx.RegisterResource("aws:s3/bucketNotification:BucketNotification", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketNotification gets an existing BucketNotification 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 GetBucketNotification(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketNotificationState, opts ...pulumi.ResourceOption) (*BucketNotification, error) { + var resource BucketNotification + err := ctx.ReadResource("aws:s3/bucketNotification:BucketNotification", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketNotification resources. +type bucketNotificationState struct { + // Name of the bucket for notification configuration. + // + // The following arguments are optional: + Bucket *string `pulumi:"bucket"` + // Whether to enable Amazon EventBridge notifications. Defaults to `false`. + Eventbridge *bool `pulumi:"eventbridge"` + // Used to configure notifications to a Lambda Function. See below. + LambdaFunctions []BucketNotificationLambdaFunction `pulumi:"lambdaFunctions"` + // Notification configuration to SQS Queue. See below. + Queues []BucketNotificationQueue `pulumi:"queues"` + // Notification configuration to SNS Topic. See below. + Topics []BucketNotificationTopic `pulumi:"topics"` +} + +type BucketNotificationState struct { + // Name of the bucket for notification configuration. + // + // The following arguments are optional: + Bucket pulumi.StringPtrInput + // Whether to enable Amazon EventBridge notifications. Defaults to `false`. + Eventbridge pulumi.BoolPtrInput + // Used to configure notifications to a Lambda Function. See below. + LambdaFunctions BucketNotificationLambdaFunctionArrayInput + // Notification configuration to SQS Queue. See below. + Queues BucketNotificationQueueArrayInput + // Notification configuration to SNS Topic. See below. + Topics BucketNotificationTopicArrayInput +} + +func (BucketNotificationState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketNotificationState)(nil)).Elem() +} + +type bucketNotificationArgs struct { + // Name of the bucket for notification configuration. + // + // The following arguments are optional: + Bucket string `pulumi:"bucket"` + // Whether to enable Amazon EventBridge notifications. Defaults to `false`. + Eventbridge *bool `pulumi:"eventbridge"` + // Used to configure notifications to a Lambda Function. See below. + LambdaFunctions []BucketNotificationLambdaFunction `pulumi:"lambdaFunctions"` + // Notification configuration to SQS Queue. See below. + Queues []BucketNotificationQueue `pulumi:"queues"` + // Notification configuration to SNS Topic. See below. + Topics []BucketNotificationTopic `pulumi:"topics"` +} + +// The set of arguments for constructing a BucketNotification resource. +type BucketNotificationArgs struct { + // Name of the bucket for notification configuration. + // + // The following arguments are optional: + Bucket pulumi.StringInput + // Whether to enable Amazon EventBridge notifications. Defaults to `false`. + Eventbridge pulumi.BoolPtrInput + // Used to configure notifications to a Lambda Function. See below. + LambdaFunctions BucketNotificationLambdaFunctionArrayInput + // Notification configuration to SQS Queue. See below. + Queues BucketNotificationQueueArrayInput + // Notification configuration to SNS Topic. See below. + Topics BucketNotificationTopicArrayInput +} + +func (BucketNotificationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketNotificationArgs)(nil)).Elem() +} + +type BucketNotificationInput interface { + pulumi.Input + + ToBucketNotificationOutput() BucketNotificationOutput + ToBucketNotificationOutputWithContext(ctx context.Context) BucketNotificationOutput +} + +func (*BucketNotification) ElementType() reflect.Type { + return reflect.TypeOf((**BucketNotification)(nil)).Elem() +} + +func (i *BucketNotification) ToBucketNotificationOutput() BucketNotificationOutput { + return i.ToBucketNotificationOutputWithContext(context.Background()) +} + +func (i *BucketNotification) ToBucketNotificationOutputWithContext(ctx context.Context) BucketNotificationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationOutput) +} + +// BucketNotificationArrayInput is an input type that accepts BucketNotificationArray and BucketNotificationArrayOutput values. +// You can construct a concrete instance of `BucketNotificationArrayInput` via: +// +// BucketNotificationArray{ BucketNotificationArgs{...} } +type BucketNotificationArrayInput interface { + pulumi.Input + + ToBucketNotificationArrayOutput() BucketNotificationArrayOutput + ToBucketNotificationArrayOutputWithContext(context.Context) BucketNotificationArrayOutput +} + +type BucketNotificationArray []BucketNotificationInput + +func (BucketNotificationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketNotification)(nil)).Elem() +} + +func (i BucketNotificationArray) ToBucketNotificationArrayOutput() BucketNotificationArrayOutput { + return i.ToBucketNotificationArrayOutputWithContext(context.Background()) +} + +func (i BucketNotificationArray) ToBucketNotificationArrayOutputWithContext(ctx context.Context) BucketNotificationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationArrayOutput) +} + +// BucketNotificationMapInput is an input type that accepts BucketNotificationMap and BucketNotificationMapOutput values. +// You can construct a concrete instance of `BucketNotificationMapInput` via: +// +// BucketNotificationMap{ "key": BucketNotificationArgs{...} } +type BucketNotificationMapInput interface { + pulumi.Input + + ToBucketNotificationMapOutput() BucketNotificationMapOutput + ToBucketNotificationMapOutputWithContext(context.Context) BucketNotificationMapOutput +} + +type BucketNotificationMap map[string]BucketNotificationInput + +func (BucketNotificationMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketNotification)(nil)).Elem() +} + +func (i BucketNotificationMap) ToBucketNotificationMapOutput() BucketNotificationMapOutput { + return i.ToBucketNotificationMapOutputWithContext(context.Background()) +} + +func (i BucketNotificationMap) ToBucketNotificationMapOutputWithContext(ctx context.Context) BucketNotificationMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationMapOutput) +} + +type BucketNotificationOutput struct{ *pulumi.OutputState } + +func (BucketNotificationOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketNotification)(nil)).Elem() +} + +func (o BucketNotificationOutput) ToBucketNotificationOutput() BucketNotificationOutput { + return o +} + +func (o BucketNotificationOutput) ToBucketNotificationOutputWithContext(ctx context.Context) BucketNotificationOutput { + return o +} + +// Name of the bucket for notification configuration. +// +// The following arguments are optional: +func (o BucketNotificationOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketNotification) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Whether to enable Amazon EventBridge notifications. Defaults to `false`. +func (o BucketNotificationOutput) Eventbridge() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketNotification) pulumi.BoolPtrOutput { return v.Eventbridge }).(pulumi.BoolPtrOutput) +} + +// Used to configure notifications to a Lambda Function. See below. +func (o BucketNotificationOutput) LambdaFunctions() BucketNotificationLambdaFunctionArrayOutput { + return o.ApplyT(func(v *BucketNotification) BucketNotificationLambdaFunctionArrayOutput { return v.LambdaFunctions }).(BucketNotificationLambdaFunctionArrayOutput) +} + +// Notification configuration to SQS Queue. See below. +func (o BucketNotificationOutput) Queues() BucketNotificationQueueArrayOutput { + return o.ApplyT(func(v *BucketNotification) BucketNotificationQueueArrayOutput { return v.Queues }).(BucketNotificationQueueArrayOutput) +} + +// Notification configuration to SNS Topic. See below. +func (o BucketNotificationOutput) Topics() BucketNotificationTopicArrayOutput { + return o.ApplyT(func(v *BucketNotification) BucketNotificationTopicArrayOutput { return v.Topics }).(BucketNotificationTopicArrayOutput) +} + +type BucketNotificationArrayOutput struct{ *pulumi.OutputState } + +func (BucketNotificationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketNotification)(nil)).Elem() +} + +func (o BucketNotificationArrayOutput) ToBucketNotificationArrayOutput() BucketNotificationArrayOutput { + return o +} + +func (o BucketNotificationArrayOutput) ToBucketNotificationArrayOutputWithContext(ctx context.Context) BucketNotificationArrayOutput { + return o +} + +func (o BucketNotificationArrayOutput) Index(i pulumi.IntInput) BucketNotificationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketNotification { + return vs[0].([]*BucketNotification)[vs[1].(int)] + }).(BucketNotificationOutput) +} + +type BucketNotificationMapOutput struct{ *pulumi.OutputState } + +func (BucketNotificationMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketNotification)(nil)).Elem() +} + +func (o BucketNotificationMapOutput) ToBucketNotificationMapOutput() BucketNotificationMapOutput { + return o +} + +func (o BucketNotificationMapOutput) ToBucketNotificationMapOutputWithContext(ctx context.Context) BucketNotificationMapOutput { + return o +} + +func (o BucketNotificationMapOutput) MapIndex(k pulumi.StringInput) BucketNotificationOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketNotification { + return vs[0].(map[string]*BucketNotification)[vs[1].(string)] + }).(BucketNotificationOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationInput)(nil)).Elem(), &BucketNotification{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationArrayInput)(nil)).Elem(), BucketNotificationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationMapInput)(nil)).Elem(), BucketNotificationMap{}) + pulumi.RegisterOutputType(BucketNotificationOutput{}) + pulumi.RegisterOutputType(BucketNotificationArrayOutput{}) + pulumi.RegisterOutputType(BucketNotificationMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObject.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObject.go new file mode 100644 index 000000000..30d043e48 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObject.go @@ -0,0 +1,875 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 object resource. +// +// ## Example Usage +// +// ### Uploading a file to a bucket +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFilemd5, err := std.Filemd5(ctx, &std.Filemd5Args{ +// Input: "path/to/file", +// }, nil) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObject(ctx, "object", &s3.BucketObjectArgs{ +// Bucket: pulumi.Any("your_bucket_name"), +// Key: pulumi.String("new_object_key"), +// Source: pulumi.NewFileAsset("path/to/file"), +// Etag: pulumi.String(invokeFilemd5.Result), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Encrypting with KMS Key +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplekms, err := kms.NewKey(ctx, "examplekms", &kms.KeyArgs{ +// Description: pulumi.String("KMS key 1"), +// DeletionWindowInDays: pulumi.Int(7), +// }) +// if err != nil { +// return err +// } +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObject(ctx, "example", &s3.BucketObjectArgs{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("index.html"), +// KmsKeyId: examplekms.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Server Side Encryption with S3 Default Master Key +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObject(ctx, "example", &s3.BucketObjectArgs{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("index.html"), +// ServerSideEncryption: pulumi.String("aws:kms"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Server Side Encryption with AWS-Managed Key +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObject(ctx, "example", &s3.BucketObjectArgs{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("index.html"), +// ServerSideEncryption: pulumi.String("AES256"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### S3 Object Lock +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// ObjectLockEnabled: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// exampleBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "example", &s3.BucketVersioningV2Args{ +// Bucket: examplebucket.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObject(ctx, "example", &s3.BucketObjectArgs{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("important.txt"), +// ObjectLockLegalHoldStatus: pulumi.String("ON"), +// ObjectLockMode: pulumi.String("GOVERNANCE"), +// ObjectLockRetainUntilDate: pulumi.String("2021-12-31T23:59:60Z"), +// ForceDestroy: pulumi.Bool(true), +// }, pulumi.DependsOn([]pulumi.Resource{ +// exampleBucketVersioningV2, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Import using S3 URL syntax: +// +// __Using `pulumi import` to import__ objects using the `id` or S3 URL. For example: +// +// Import using the `id`, which is the bucket name and the key together: +// +// ```sh +// $ pulumi import aws:s3/bucketObject:BucketObject example some-bucket-name/some/key.txt +// ``` +// Import using S3 URL syntax: +// +// ```sh +// $ pulumi import aws:s3/bucketObject:BucketObject example s3://some-bucket-name/some/key.txt +// ``` +type BucketObject struct { + pulumi.CustomResourceState + + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Defaults to `private`. + Acl pulumi.StringPtrOutput `pulumi:"acl"` + // ARN of the object. + Arn pulumi.StringOutput `pulumi:"arn"` + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolOutput `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrOutput `pulumi:"cacheControl"` + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content pulumi.StringPtrOutput `pulumi:"content"` + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 pulumi.StringPtrOutput `pulumi:"contentBase64"` + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrOutput `pulumi:"contentDisposition"` + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrOutput `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrOutput `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType pulumi.StringOutput `pulumi:"contentType"` + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"` (see `sourceHash` instead). + Etag pulumi.StringOutput `pulumi:"etag"` + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key pulumi.StringOutput `pulumi:"key"` + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId pulumi.StringOutput `pulumi:"kmsKeyId"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapOutput `pulumi:"metadata"` + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrOutput `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrOutput `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrOutput `pulumi:"objectLockRetainUntilDate"` + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption pulumi.StringOutput `pulumi:"serverSideEncryption"` + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchiveOutput `pulumi:"source"` + // Triggers updates like `etag` but useful to address `etag` encryption limitations. + SourceHash pulumi.StringPtrOutput `pulumi:"sourceHash"` + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass pulumi.StringOutput `pulumi:"storageClass"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Unique version ID value for the object, if bucket versioning is enabled. + VersionId pulumi.StringOutput `pulumi:"versionId"` + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + WebsiteRedirect pulumi.StringPtrOutput `pulumi:"websiteRedirect"` +} + +// NewBucketObject registers a new resource with the given unique name, arguments, and options. +func NewBucketObject(ctx *pulumi.Context, + name string, args *BucketObjectArgs, opts ...pulumi.ResourceOption) (*BucketObject, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketObject + err := ctx.RegisterResource("aws:s3/bucketObject:BucketObject", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketObject gets an existing BucketObject 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 GetBucketObject(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketObjectState, opts ...pulumi.ResourceOption) (*BucketObject, error) { + var resource BucketObject + err := ctx.ReadResource("aws:s3/bucketObject:BucketObject", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketObject resources. +type bucketObjectState struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Defaults to `private`. + Acl *string `pulumi:"acl"` + // ARN of the object. + Arn *string `pulumi:"arn"` + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket interface{} `pulumi:"bucket"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl *string `pulumi:"cacheControl"` + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content *string `pulumi:"content"` + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 *string `pulumi:"contentBase64"` + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition *string `pulumi:"contentDisposition"` + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding *string `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage *string `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType *string `pulumi:"contentType"` + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"` (see `sourceHash` instead). + Etag *string `pulumi:"etag"` + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key *string `pulumi:"key"` + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata map[string]string `pulumi:"metadata"` + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode *string `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"` + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption *string `pulumi:"serverSideEncryption"` + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchive `pulumi:"source"` + // Triggers updates like `etag` but useful to address `etag` encryption limitations. + SourceHash *string `pulumi:"sourceHash"` + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass *string `pulumi:"storageClass"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // Unique version ID value for the object, if bucket versioning is enabled. + VersionId *string `pulumi:"versionId"` + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + WebsiteRedirect *string `pulumi:"websiteRedirect"` +} + +type BucketObjectState struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Defaults to `private`. + Acl pulumi.StringPtrInput + // ARN of the object. + Arn pulumi.StringPtrInput + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket pulumi.Input + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolPtrInput + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrInput + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content pulumi.StringPtrInput + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 pulumi.StringPtrInput + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrInput + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrInput + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrInput + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType pulumi.StringPtrInput + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"` (see `sourceHash` instead). + Etag pulumi.StringPtrInput + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrInput + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key pulumi.StringPtrInput + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId pulumi.StringPtrInput + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapInput + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrInput + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrInput + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrInput + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption pulumi.StringPtrInput + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchiveInput + // Triggers updates like `etag` but useful to address `etag` encryption limitations. + SourceHash pulumi.StringPtrInput + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass pulumi.StringPtrInput + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // Unique version ID value for the object, if bucket versioning is enabled. + VersionId pulumi.StringPtrInput + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + WebsiteRedirect pulumi.StringPtrInput +} + +func (BucketObjectState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketObjectState)(nil)).Elem() +} + +type bucketObjectArgs struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Defaults to `private`. + Acl *string `pulumi:"acl"` + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket interface{} `pulumi:"bucket"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl *string `pulumi:"cacheControl"` + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content *string `pulumi:"content"` + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 *string `pulumi:"contentBase64"` + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition *string `pulumi:"contentDisposition"` + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding *string `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage *string `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType *string `pulumi:"contentType"` + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"` (see `sourceHash` instead). + Etag *string `pulumi:"etag"` + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key *string `pulumi:"key"` + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata map[string]string `pulumi:"metadata"` + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode *string `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"` + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption *string `pulumi:"serverSideEncryption"` + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchive `pulumi:"source"` + // Triggers updates like `etag` but useful to address `etag` encryption limitations. + SourceHash *string `pulumi:"sourceHash"` + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass *string `pulumi:"storageClass"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + WebsiteRedirect *string `pulumi:"websiteRedirect"` +} + +// The set of arguments for constructing a BucketObject resource. +type BucketObjectArgs struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Defaults to `private`. + Acl pulumi.StringPtrInput + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket pulumi.Input + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolPtrInput + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrInput + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content pulumi.StringPtrInput + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 pulumi.StringPtrInput + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrInput + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrInput + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrInput + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType pulumi.StringPtrInput + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"` (see `sourceHash` instead). + Etag pulumi.StringPtrInput + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrInput + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key pulumi.StringPtrInput + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId pulumi.StringPtrInput + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapInput + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrInput + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrInput + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrInput + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption pulumi.StringPtrInput + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchiveInput + // Triggers updates like `etag` but useful to address `etag` encryption limitations. + SourceHash pulumi.StringPtrInput + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass pulumi.StringPtrInput + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + WebsiteRedirect pulumi.StringPtrInput +} + +func (BucketObjectArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketObjectArgs)(nil)).Elem() +} + +type BucketObjectInput interface { + pulumi.Input + + ToBucketObjectOutput() BucketObjectOutput + ToBucketObjectOutputWithContext(ctx context.Context) BucketObjectOutput +} + +func (*BucketObject) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObject)(nil)).Elem() +} + +func (i *BucketObject) ToBucketObjectOutput() BucketObjectOutput { + return i.ToBucketObjectOutputWithContext(context.Background()) +} + +func (i *BucketObject) ToBucketObjectOutputWithContext(ctx context.Context) BucketObjectOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectOutput) +} + +// BucketObjectArrayInput is an input type that accepts BucketObjectArray and BucketObjectArrayOutput values. +// You can construct a concrete instance of `BucketObjectArrayInput` via: +// +// BucketObjectArray{ BucketObjectArgs{...} } +type BucketObjectArrayInput interface { + pulumi.Input + + ToBucketObjectArrayOutput() BucketObjectArrayOutput + ToBucketObjectArrayOutputWithContext(context.Context) BucketObjectArrayOutput +} + +type BucketObjectArray []BucketObjectInput + +func (BucketObjectArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketObject)(nil)).Elem() +} + +func (i BucketObjectArray) ToBucketObjectArrayOutput() BucketObjectArrayOutput { + return i.ToBucketObjectArrayOutputWithContext(context.Background()) +} + +func (i BucketObjectArray) ToBucketObjectArrayOutputWithContext(ctx context.Context) BucketObjectArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectArrayOutput) +} + +// BucketObjectMapInput is an input type that accepts BucketObjectMap and BucketObjectMapOutput values. +// You can construct a concrete instance of `BucketObjectMapInput` via: +// +// BucketObjectMap{ "key": BucketObjectArgs{...} } +type BucketObjectMapInput interface { + pulumi.Input + + ToBucketObjectMapOutput() BucketObjectMapOutput + ToBucketObjectMapOutputWithContext(context.Context) BucketObjectMapOutput +} + +type BucketObjectMap map[string]BucketObjectInput + +func (BucketObjectMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketObject)(nil)).Elem() +} + +func (i BucketObjectMap) ToBucketObjectMapOutput() BucketObjectMapOutput { + return i.ToBucketObjectMapOutputWithContext(context.Background()) +} + +func (i BucketObjectMap) ToBucketObjectMapOutputWithContext(ctx context.Context) BucketObjectMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectMapOutput) +} + +type BucketObjectOutput struct{ *pulumi.OutputState } + +func (BucketObjectOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObject)(nil)).Elem() +} + +func (o BucketObjectOutput) ToBucketObjectOutput() BucketObjectOutput { + return o +} + +func (o BucketObjectOutput) ToBucketObjectOutputWithContext(ctx context.Context) BucketObjectOutput { + return o +} + +// [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Defaults to `private`. +func (o BucketObjectOutput) Acl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.Acl }).(pulumi.StringPtrOutput) +} + +// ARN of the object. +func (o BucketObjectOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. +func (o BucketObjectOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o BucketObjectOutput) BucketKeyEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v *BucketObject) pulumi.BoolOutput { return v.BucketKeyEnabled }).(pulumi.BoolOutput) +} + +// Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. +func (o BucketObjectOutput) CacheControl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.CacheControl }).(pulumi.StringPtrOutput) +} + +// Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. +func (o BucketObjectOutput) Content() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.Content }).(pulumi.StringPtrOutput) +} + +// Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. +func (o BucketObjectOutput) ContentBase64() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.ContentBase64 }).(pulumi.StringPtrOutput) +} + +// Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. +func (o BucketObjectOutput) ContentDisposition() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.ContentDisposition }).(pulumi.StringPtrOutput) +} + +// Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. +func (o BucketObjectOutput) ContentEncoding() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.ContentEncoding }).(pulumi.StringPtrOutput) +} + +// Language the content is in e.g., en-US or en-GB. +func (o BucketObjectOutput) ContentLanguage() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.ContentLanguage }).(pulumi.StringPtrOutput) +} + +// Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. +func (o BucketObjectOutput) ContentType() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.ContentType }).(pulumi.StringOutput) +} + +// Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"` (see `sourceHash` instead). +func (o BucketObjectOutput) Etag() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput) +} + +// Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. +func (o BucketObjectOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// Name of the object once it is in the bucket. +// +// The following arguments are optional: +func (o BucketObjectOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.Key }).(pulumi.StringOutput) +} + +// ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. +func (o BucketObjectOutput) KmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.KmsKeyId }).(pulumi.StringOutput) +} + +// Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). +func (o BucketObjectOutput) Metadata() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringMapOutput { return v.Metadata }).(pulumi.StringMapOutput) +} + +// [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. +func (o BucketObjectOutput) ObjectLockLegalHoldStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.ObjectLockLegalHoldStatus }).(pulumi.StringPtrOutput) +} + +// Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. +func (o BucketObjectOutput) ObjectLockMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.ObjectLockMode }).(pulumi.StringPtrOutput) +} + +// Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). +func (o BucketObjectOutput) ObjectLockRetainUntilDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.ObjectLockRetainUntilDate }).(pulumi.StringPtrOutput) +} + +// Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". +func (o BucketObjectOutput) ServerSideEncryption() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.ServerSideEncryption }).(pulumi.StringOutput) +} + +// Path to a file that will be read and uploaded as raw bytes for the object content. +func (o BucketObjectOutput) Source() pulumi.AssetOrArchiveOutput { + return o.ApplyT(func(v *BucketObject) pulumi.AssetOrArchiveOutput { return v.Source }).(pulumi.AssetOrArchiveOutput) +} + +// Triggers updates like `etag` but useful to address `etag` encryption limitations. +func (o BucketObjectOutput) SourceHash() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.SourceHash }).(pulumi.StringPtrOutput) +} + +// [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". +func (o BucketObjectOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.StorageClass }).(pulumi.StringOutput) +} + +// Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o BucketObjectOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o BucketObjectOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// Unique version ID value for the object, if bucket versioning is enabled. +func (o BucketObjectOutput) VersionId() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringOutput { return v.VersionId }).(pulumi.StringOutput) +} + +// Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). +// +// If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. +func (o BucketObjectOutput) WebsiteRedirect() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObject) pulumi.StringPtrOutput { return v.WebsiteRedirect }).(pulumi.StringPtrOutput) +} + +type BucketObjectArrayOutput struct{ *pulumi.OutputState } + +func (BucketObjectArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketObject)(nil)).Elem() +} + +func (o BucketObjectArrayOutput) ToBucketObjectArrayOutput() BucketObjectArrayOutput { + return o +} + +func (o BucketObjectArrayOutput) ToBucketObjectArrayOutputWithContext(ctx context.Context) BucketObjectArrayOutput { + return o +} + +func (o BucketObjectArrayOutput) Index(i pulumi.IntInput) BucketObjectOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketObject { + return vs[0].([]*BucketObject)[vs[1].(int)] + }).(BucketObjectOutput) +} + +type BucketObjectMapOutput struct{ *pulumi.OutputState } + +func (BucketObjectMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketObject)(nil)).Elem() +} + +func (o BucketObjectMapOutput) ToBucketObjectMapOutput() BucketObjectMapOutput { + return o +} + +func (o BucketObjectMapOutput) ToBucketObjectMapOutputWithContext(ctx context.Context) BucketObjectMapOutput { + return o +} + +func (o BucketObjectMapOutput) MapIndex(k pulumi.StringInput) BucketObjectOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketObject { + return vs[0].(map[string]*BucketObject)[vs[1].(string)] + }).(BucketObjectOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectInput)(nil)).Elem(), &BucketObject{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectArrayInput)(nil)).Elem(), BucketObjectArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectMapInput)(nil)).Elem(), BucketObjectMap{}) + pulumi.RegisterOutputType(BucketObjectOutput{}) + pulumi.RegisterOutputType(BucketObjectArrayOutput{}) + pulumi.RegisterOutputType(BucketObjectMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectLockConfigurationV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectLockConfigurationV2.go new file mode 100644 index 000000000..4baafe916 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectLockConfigurationV2.go @@ -0,0 +1,360 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 bucket Object Lock configuration resource. For more information about Object Locking, go to [Using S3 Object Lock](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html) in the Amazon S3 User Guide. +// +// > This resource can be used enable Object Lock for **new** and **existing** buckets. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### Object Lock configuration for new or existing buckets +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("mybucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketVersioningV2(ctx, "example", &s3.BucketVersioningV2Args{ +// Bucket: example.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectLockConfigurationV2(ctx, "example", &s3.BucketObjectLockConfigurationV2Args{ +// Bucket: example.ID(), +// Rule: &s3.BucketObjectLockConfigurationV2RuleArgs{ +// DefaultRetention: &s3.BucketObjectLockConfigurationV2RuleDefaultRetentionArgs{ +// Mode: pulumi.String("COMPLIANCE"), +// Days: pulumi.Int(5), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner`, separated by a comma (`,`). For example: +// +// __Using `pulumi import`__, import an S3 bucket Object Lock Configuration using one of two forms. If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner`, separated by a comma (`,`). For example: +// +// ```sh +// $ pulumi import aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2 example bucket-name,123456789012 +// ``` +type BucketObjectLockConfigurationV2 struct { + pulumi.CustomResourceState + + // Name of the bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Indicates whether this bucket has an Object Lock configuration enabled. Defaults to `Enabled`. Valid values: `Enabled`. + ObjectLockEnabled pulumi.StringPtrOutput `pulumi:"objectLockEnabled"` + // Configuration block for specifying the Object Lock rule for the specified object. See below. + Rule BucketObjectLockConfigurationV2RulePtrOutput `pulumi:"rule"` + // This argument is deprecated and no longer needed to enable Object Lock. + // To enable Object Lock for an existing bucket, you must first enable versioning on the bucket and then enable Object Lock. For more details on versioning, see the `s3.BucketVersioningV2` resource. + Token pulumi.StringPtrOutput `pulumi:"token"` +} + +// NewBucketObjectLockConfigurationV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketObjectLockConfigurationV2(ctx *pulumi.Context, + name string, args *BucketObjectLockConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketObjectLockConfigurationV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Token != nil { + args.Token = pulumi.ToSecret(args.Token).(pulumi.StringPtrInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "token", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketObjectLockConfigurationV2 + err := ctx.RegisterResource("aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketObjectLockConfigurationV2 gets an existing BucketObjectLockConfigurationV2 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 GetBucketObjectLockConfigurationV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketObjectLockConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketObjectLockConfigurationV2, error) { + var resource BucketObjectLockConfigurationV2 + err := ctx.ReadResource("aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketObjectLockConfigurationV2 resources. +type bucketObjectLockConfigurationV2State struct { + // Name of the bucket. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Indicates whether this bucket has an Object Lock configuration enabled. Defaults to `Enabled`. Valid values: `Enabled`. + ObjectLockEnabled *string `pulumi:"objectLockEnabled"` + // Configuration block for specifying the Object Lock rule for the specified object. See below. + Rule *BucketObjectLockConfigurationV2Rule `pulumi:"rule"` + // This argument is deprecated and no longer needed to enable Object Lock. + // To enable Object Lock for an existing bucket, you must first enable versioning on the bucket and then enable Object Lock. For more details on versioning, see the `s3.BucketVersioningV2` resource. + Token *string `pulumi:"token"` +} + +type BucketObjectLockConfigurationV2State struct { + // Name of the bucket. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Indicates whether this bucket has an Object Lock configuration enabled. Defaults to `Enabled`. Valid values: `Enabled`. + ObjectLockEnabled pulumi.StringPtrInput + // Configuration block for specifying the Object Lock rule for the specified object. See below. + Rule BucketObjectLockConfigurationV2RulePtrInput + // This argument is deprecated and no longer needed to enable Object Lock. + // To enable Object Lock for an existing bucket, you must first enable versioning on the bucket and then enable Object Lock. For more details on versioning, see the `s3.BucketVersioningV2` resource. + Token pulumi.StringPtrInput +} + +func (BucketObjectLockConfigurationV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketObjectLockConfigurationV2State)(nil)).Elem() +} + +type bucketObjectLockConfigurationV2Args struct { + // Name of the bucket. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Indicates whether this bucket has an Object Lock configuration enabled. Defaults to `Enabled`. Valid values: `Enabled`. + ObjectLockEnabled *string `pulumi:"objectLockEnabled"` + // Configuration block for specifying the Object Lock rule for the specified object. See below. + Rule *BucketObjectLockConfigurationV2Rule `pulumi:"rule"` + // This argument is deprecated and no longer needed to enable Object Lock. + // To enable Object Lock for an existing bucket, you must first enable versioning on the bucket and then enable Object Lock. For more details on versioning, see the `s3.BucketVersioningV2` resource. + Token *string `pulumi:"token"` +} + +// The set of arguments for constructing a BucketObjectLockConfigurationV2 resource. +type BucketObjectLockConfigurationV2Args struct { + // Name of the bucket. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Indicates whether this bucket has an Object Lock configuration enabled. Defaults to `Enabled`. Valid values: `Enabled`. + ObjectLockEnabled pulumi.StringPtrInput + // Configuration block for specifying the Object Lock rule for the specified object. See below. + Rule BucketObjectLockConfigurationV2RulePtrInput + // This argument is deprecated and no longer needed to enable Object Lock. + // To enable Object Lock for an existing bucket, you must first enable versioning on the bucket and then enable Object Lock. For more details on versioning, see the `s3.BucketVersioningV2` resource. + Token pulumi.StringPtrInput +} + +func (BucketObjectLockConfigurationV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketObjectLockConfigurationV2Args)(nil)).Elem() +} + +type BucketObjectLockConfigurationV2Input interface { + pulumi.Input + + ToBucketObjectLockConfigurationV2Output() BucketObjectLockConfigurationV2Output + ToBucketObjectLockConfigurationV2OutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2Output +} + +func (*BucketObjectLockConfigurationV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationV2)(nil)).Elem() +} + +func (i *BucketObjectLockConfigurationV2) ToBucketObjectLockConfigurationV2Output() BucketObjectLockConfigurationV2Output { + return i.ToBucketObjectLockConfigurationV2OutputWithContext(context.Background()) +} + +func (i *BucketObjectLockConfigurationV2) ToBucketObjectLockConfigurationV2OutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2Output) +} + +// BucketObjectLockConfigurationV2ArrayInput is an input type that accepts BucketObjectLockConfigurationV2Array and BucketObjectLockConfigurationV2ArrayOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationV2ArrayInput` via: +// +// BucketObjectLockConfigurationV2Array{ BucketObjectLockConfigurationV2Args{...} } +type BucketObjectLockConfigurationV2ArrayInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationV2ArrayOutput() BucketObjectLockConfigurationV2ArrayOutput + ToBucketObjectLockConfigurationV2ArrayOutputWithContext(context.Context) BucketObjectLockConfigurationV2ArrayOutput +} + +type BucketObjectLockConfigurationV2Array []BucketObjectLockConfigurationV2Input + +func (BucketObjectLockConfigurationV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketObjectLockConfigurationV2)(nil)).Elem() +} + +func (i BucketObjectLockConfigurationV2Array) ToBucketObjectLockConfigurationV2ArrayOutput() BucketObjectLockConfigurationV2ArrayOutput { + return i.ToBucketObjectLockConfigurationV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationV2Array) ToBucketObjectLockConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2ArrayOutput) +} + +// BucketObjectLockConfigurationV2MapInput is an input type that accepts BucketObjectLockConfigurationV2Map and BucketObjectLockConfigurationV2MapOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationV2MapInput` via: +// +// BucketObjectLockConfigurationV2Map{ "key": BucketObjectLockConfigurationV2Args{...} } +type BucketObjectLockConfigurationV2MapInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationV2MapOutput() BucketObjectLockConfigurationV2MapOutput + ToBucketObjectLockConfigurationV2MapOutputWithContext(context.Context) BucketObjectLockConfigurationV2MapOutput +} + +type BucketObjectLockConfigurationV2Map map[string]BucketObjectLockConfigurationV2Input + +func (BucketObjectLockConfigurationV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketObjectLockConfigurationV2)(nil)).Elem() +} + +func (i BucketObjectLockConfigurationV2Map) ToBucketObjectLockConfigurationV2MapOutput() BucketObjectLockConfigurationV2MapOutput { + return i.ToBucketObjectLockConfigurationV2MapOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationV2Map) ToBucketObjectLockConfigurationV2MapOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2MapOutput) +} + +type BucketObjectLockConfigurationV2Output struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationV2)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationV2Output) ToBucketObjectLockConfigurationV2Output() BucketObjectLockConfigurationV2Output { + return o +} + +func (o BucketObjectLockConfigurationV2Output) ToBucketObjectLockConfigurationV2OutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2Output { + return o +} + +// Name of the bucket. +func (o BucketObjectLockConfigurationV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketObjectLockConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// Indicates whether this bucket has an Object Lock configuration enabled. Defaults to `Enabled`. Valid values: `Enabled`. +func (o BucketObjectLockConfigurationV2Output) ObjectLockEnabled() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2) pulumi.StringPtrOutput { return v.ObjectLockEnabled }).(pulumi.StringPtrOutput) +} + +// Configuration block for specifying the Object Lock rule for the specified object. See below. +func (o BucketObjectLockConfigurationV2Output) Rule() BucketObjectLockConfigurationV2RulePtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2) BucketObjectLockConfigurationV2RulePtrOutput { return v.Rule }).(BucketObjectLockConfigurationV2RulePtrOutput) +} + +// This argument is deprecated and no longer needed to enable Object Lock. +// To enable Object Lock for an existing bucket, you must first enable versioning on the bucket and then enable Object Lock. For more details on versioning, see the `s3.BucketVersioningV2` resource. +func (o BucketObjectLockConfigurationV2Output) Token() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2) pulumi.StringPtrOutput { return v.Token }).(pulumi.StringPtrOutput) +} + +type BucketObjectLockConfigurationV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketObjectLockConfigurationV2)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationV2ArrayOutput) ToBucketObjectLockConfigurationV2ArrayOutput() BucketObjectLockConfigurationV2ArrayOutput { + return o +} + +func (o BucketObjectLockConfigurationV2ArrayOutput) ToBucketObjectLockConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2ArrayOutput { + return o +} + +func (o BucketObjectLockConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketObjectLockConfigurationV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketObjectLockConfigurationV2 { + return vs[0].([]*BucketObjectLockConfigurationV2)[vs[1].(int)] + }).(BucketObjectLockConfigurationV2Output) +} + +type BucketObjectLockConfigurationV2MapOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketObjectLockConfigurationV2)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationV2MapOutput) ToBucketObjectLockConfigurationV2MapOutput() BucketObjectLockConfigurationV2MapOutput { + return o +} + +func (o BucketObjectLockConfigurationV2MapOutput) ToBucketObjectLockConfigurationV2MapOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2MapOutput { + return o +} + +func (o BucketObjectLockConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketObjectLockConfigurationV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketObjectLockConfigurationV2 { + return vs[0].(map[string]*BucketObjectLockConfigurationV2)[vs[1].(string)] + }).(BucketObjectLockConfigurationV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationV2Input)(nil)).Elem(), &BucketObjectLockConfigurationV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationV2ArrayInput)(nil)).Elem(), BucketObjectLockConfigurationV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationV2MapInput)(nil)).Elem(), BucketObjectLockConfigurationV2Map{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationV2Output{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectv2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectv2.go new file mode 100644 index 000000000..059238904 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketObjectv2.go @@ -0,0 +1,1014 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 object resource. +// +// ## Example Usage +// +// ### Uploading a file to a bucket +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi-std/sdk/go/std" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// invokeFilemd5, err := std.Filemd5(ctx, &std.Filemd5Args{ +// Input: "path/to/file", +// }, nil) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectv2(ctx, "object", &s3.BucketObjectv2Args{ +// Bucket: pulumi.Any("your_bucket_name"), +// Key: pulumi.String("new_object_key"), +// Source: pulumi.NewFileAsset("path/to/file"), +// Etag: pulumi.String(invokeFilemd5.Result), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Encrypting with KMS Key +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplekms, err := kms.NewKey(ctx, "examplekms", &kms.KeyArgs{ +// Description: pulumi.String("KMS key 1"), +// DeletionWindowInDays: pulumi.Int(7), +// }) +// if err != nil { +// return err +// } +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectv2(ctx, "example", &s3.BucketObjectv2Args{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("index.html"), +// KmsKeyId: examplekms.Arn, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Server Side Encryption with S3 Default Master Key +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectv2(ctx, "example", &s3.BucketObjectv2Args{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("index.html"), +// ServerSideEncryption: pulumi.String("aws:kms"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Server Side Encryption with AWS-Managed Key +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectv2(ctx, "example", &s3.BucketObjectv2Args{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("index.html"), +// ServerSideEncryption: pulumi.String("AES256"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### S3 Object Lock +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// ObjectLockEnabled: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: examplebucket.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// exampleBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "example", &s3.BucketVersioningV2Args{ +// Bucket: examplebucket.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectv2(ctx, "examplebucket_object", &s3.BucketObjectv2Args{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("important.txt"), +// ObjectLockLegalHoldStatus: pulumi.String("ON"), +// ObjectLockMode: pulumi.String("GOVERNANCE"), +// ObjectLockRetainUntilDate: pulumi.String("2021-12-31T23:59:60Z"), +// ForceDestroy: pulumi.Bool(true), +// }, pulumi.DependsOn([]pulumi.Resource{ +// exampleBucketVersioningV2, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Ignoring Provider `defaultTags` +// +// S3 objects support a [maximum of 10 tags](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-tagging.html). +// If the resource's own `tags` and the provider-level `defaultTags` would together lead to more than 10 tags on an S3 object, use the `overrideProvider` configuration block to suppress any provider-level `defaultTags`. +// +// > S3 objects stored in Amazon S3 Express directory buckets do not support tags, so any provider-level `defaultTags` must be suppressed. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// examplebucket, err := s3.NewBucketV2(ctx, "examplebucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("examplebuckettftest"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectv2(ctx, "examplebucket_object", &s3.BucketObjectv2Args{ +// Key: pulumi.String("someobject"), +// Bucket: examplebucket.ID(), +// Source: pulumi.NewFileAsset("important.txt"), +// Tags: pulumi.StringMap{ +// "Env": pulumi.String("test"), +// }, +// OverrideProvider: &s3.BucketObjectv2OverrideProviderArgs{ +// DefaultTags: &s3.BucketObjectv2OverrideProviderDefaultTagsArgs{ +// Tags: pulumi.StringMap{}, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Import using S3 URL syntax: +// +// __Using `pulumi import` to import__ objects using the `id` or S3 URL. For example: +// +// Import using the `id`, which is the bucket name and the key together: +// +// ```sh +// $ pulumi import aws:s3/bucketObjectv2:BucketObjectv2 example some-bucket-name/some/key.txt +// ``` +// Import using S3 URL syntax: +// +// ```sh +// $ pulumi import aws:s3/bucketObjectv2:BucketObjectv2 example s3://some-bucket-name/some/key.txt +// ``` +type BucketObjectv2 struct { + pulumi.CustomResourceState + + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. + Acl pulumi.StringOutput `pulumi:"acl"` + // ARN of the object. + Arn pulumi.StringOutput `pulumi:"arn"` + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolOutput `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrOutput `pulumi:"cacheControl"` + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm pulumi.StringPtrOutput `pulumi:"checksumAlgorithm"` + // The base64-encoded, 32-bit CRC32 checksum of the object. + ChecksumCrc32 pulumi.StringOutput `pulumi:"checksumCrc32"` + // The base64-encoded, 32-bit CRC32C checksum of the object. + ChecksumCrc32c pulumi.StringOutput `pulumi:"checksumCrc32c"` + // The base64-encoded, 160-bit SHA-1 digest of the object. + ChecksumSha1 pulumi.StringOutput `pulumi:"checksumSha1"` + // The base64-encoded, 256-bit SHA-256 digest of the object. + ChecksumSha256 pulumi.StringOutput `pulumi:"checksumSha256"` + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content pulumi.StringPtrOutput `pulumi:"content"` + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 pulumi.StringPtrOutput `pulumi:"contentBase64"` + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrOutput `pulumi:"contentDisposition"` + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrOutput `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrOutput `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType pulumi.StringOutput `pulumi:"contentType"` + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"`, also if an object is larger than 16 MB, the AWS Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest (see `sourceHash` instead). + Etag pulumi.StringOutput `pulumi:"etag"` + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key pulumi.StringOutput `pulumi:"key"` + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId pulumi.StringOutput `pulumi:"kmsKeyId"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapOutput `pulumi:"metadata"` + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrOutput `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrOutput `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrOutput `pulumi:"objectLockRetainUntilDate"` + // Override provider-level configuration options. See Override Provider below for more details. + OverrideProvider BucketObjectv2OverrideProviderPtrOutput `pulumi:"overrideProvider"` + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption pulumi.StringOutput `pulumi:"serverSideEncryption"` + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchiveOutput `pulumi:"source"` + // Triggers updates like `etag` but useful to address `etag` encryption limitations. (The value is only stored in state and not saved by AWS.) + SourceHash pulumi.StringPtrOutput `pulumi:"sourceHash"` + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass pulumi.StringOutput `pulumi:"storageClass"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Unique version ID value for the object, if bucket versioning is enabled. + VersionId pulumi.StringOutput `pulumi:"versionId"` + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + // + // > **Note:** The provider ignores all leading `/`s in the object's `key` and treats multiple `/`s in the rest of the object's `key` as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`. + WebsiteRedirect pulumi.StringPtrOutput `pulumi:"websiteRedirect"` +} + +// NewBucketObjectv2 registers a new resource with the given unique name, arguments, and options. +func NewBucketObjectv2(ctx *pulumi.Context, + name string, args *BucketObjectv2Args, opts ...pulumi.ResourceOption) (*BucketObjectv2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + aliases := pulumi.Aliases([]pulumi.Alias{ + { + Type: pulumi.String("aws:s3/BucketObject:BucketObject"), + }, + }) + opts = append(opts, aliases) + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketObjectv2 + err := ctx.RegisterResource("aws:s3/bucketObjectv2:BucketObjectv2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketObjectv2 gets an existing BucketObjectv2 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 GetBucketObjectv2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketObjectv2State, opts ...pulumi.ResourceOption) (*BucketObjectv2, error) { + var resource BucketObjectv2 + err := ctx.ReadResource("aws:s3/bucketObjectv2:BucketObjectv2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketObjectv2 resources. +type bucketObjectv2State struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. + Acl *string `pulumi:"acl"` + // ARN of the object. + Arn *string `pulumi:"arn"` + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket interface{} `pulumi:"bucket"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl *string `pulumi:"cacheControl"` + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm *string `pulumi:"checksumAlgorithm"` + // The base64-encoded, 32-bit CRC32 checksum of the object. + ChecksumCrc32 *string `pulumi:"checksumCrc32"` + // The base64-encoded, 32-bit CRC32C checksum of the object. + ChecksumCrc32c *string `pulumi:"checksumCrc32c"` + // The base64-encoded, 160-bit SHA-1 digest of the object. + ChecksumSha1 *string `pulumi:"checksumSha1"` + // The base64-encoded, 256-bit SHA-256 digest of the object. + ChecksumSha256 *string `pulumi:"checksumSha256"` + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content *string `pulumi:"content"` + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 *string `pulumi:"contentBase64"` + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition *string `pulumi:"contentDisposition"` + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding *string `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage *string `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType *string `pulumi:"contentType"` + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"`, also if an object is larger than 16 MB, the AWS Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest (see `sourceHash` instead). + Etag *string `pulumi:"etag"` + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key *string `pulumi:"key"` + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata map[string]string `pulumi:"metadata"` + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode *string `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"` + // Override provider-level configuration options. See Override Provider below for more details. + OverrideProvider *BucketObjectv2OverrideProvider `pulumi:"overrideProvider"` + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption *string `pulumi:"serverSideEncryption"` + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchive `pulumi:"source"` + // Triggers updates like `etag` but useful to address `etag` encryption limitations. (The value is only stored in state and not saved by AWS.) + SourceHash *string `pulumi:"sourceHash"` + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass *string `pulumi:"storageClass"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // Unique version ID value for the object, if bucket versioning is enabled. + VersionId *string `pulumi:"versionId"` + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + // + // > **Note:** The provider ignores all leading `/`s in the object's `key` and treats multiple `/`s in the rest of the object's `key` as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`. + WebsiteRedirect *string `pulumi:"websiteRedirect"` +} + +type BucketObjectv2State struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. + Acl pulumi.StringPtrInput + // ARN of the object. + Arn pulumi.StringPtrInput + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket pulumi.Input + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolPtrInput + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrInput + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm pulumi.StringPtrInput + // The base64-encoded, 32-bit CRC32 checksum of the object. + ChecksumCrc32 pulumi.StringPtrInput + // The base64-encoded, 32-bit CRC32C checksum of the object. + ChecksumCrc32c pulumi.StringPtrInput + // The base64-encoded, 160-bit SHA-1 digest of the object. + ChecksumSha1 pulumi.StringPtrInput + // The base64-encoded, 256-bit SHA-256 digest of the object. + ChecksumSha256 pulumi.StringPtrInput + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content pulumi.StringPtrInput + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 pulumi.StringPtrInput + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrInput + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrInput + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrInput + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType pulumi.StringPtrInput + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"`, also if an object is larger than 16 MB, the AWS Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest (see `sourceHash` instead). + Etag pulumi.StringPtrInput + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrInput + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key pulumi.StringPtrInput + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId pulumi.StringPtrInput + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapInput + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrInput + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrInput + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrInput + // Override provider-level configuration options. See Override Provider below for more details. + OverrideProvider BucketObjectv2OverrideProviderPtrInput + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption pulumi.StringPtrInput + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchiveInput + // Triggers updates like `etag` but useful to address `etag` encryption limitations. (The value is only stored in state and not saved by AWS.) + SourceHash pulumi.StringPtrInput + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass pulumi.StringPtrInput + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // Unique version ID value for the object, if bucket versioning is enabled. + VersionId pulumi.StringPtrInput + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + // + // > **Note:** The provider ignores all leading `/`s in the object's `key` and treats multiple `/`s in the rest of the object's `key` as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`. + WebsiteRedirect pulumi.StringPtrInput +} + +func (BucketObjectv2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketObjectv2State)(nil)).Elem() +} + +type bucketObjectv2Args struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. + Acl *string `pulumi:"acl"` + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket interface{} `pulumi:"bucket"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl *string `pulumi:"cacheControl"` + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm *string `pulumi:"checksumAlgorithm"` + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content *string `pulumi:"content"` + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 *string `pulumi:"contentBase64"` + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition *string `pulumi:"contentDisposition"` + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding *string `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage *string `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType *string `pulumi:"contentType"` + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"`, also if an object is larger than 16 MB, the AWS Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest (see `sourceHash` instead). + Etag *string `pulumi:"etag"` + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key *string `pulumi:"key"` + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata map[string]string `pulumi:"metadata"` + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode *string `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"` + // Override provider-level configuration options. See Override Provider below for more details. + OverrideProvider *BucketObjectv2OverrideProvider `pulumi:"overrideProvider"` + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption *string `pulumi:"serverSideEncryption"` + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchive `pulumi:"source"` + // Triggers updates like `etag` but useful to address `etag` encryption limitations. (The value is only stored in state and not saved by AWS.) + SourceHash *string `pulumi:"sourceHash"` + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass *string `pulumi:"storageClass"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + // + // > **Note:** The provider ignores all leading `/`s in the object's `key` and treats multiple `/`s in the rest of the object's `key` as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`. + WebsiteRedirect *string `pulumi:"websiteRedirect"` +} + +// The set of arguments for constructing a BucketObjectv2 resource. +type BucketObjectv2Args struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. + Acl pulumi.StringPtrInput + // Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. + Bucket pulumi.Input + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolPtrInput + // Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrInput + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm pulumi.StringPtrInput + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. + Content pulumi.StringPtrInput + // Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. + ContentBase64 pulumi.StringPtrInput + // Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrInput + // Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrInput + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrInput + // Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. + ContentType pulumi.StringPtrInput + // Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"`, also if an object is larger than 16 MB, the AWS Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest (see `sourceHash` instead). + Etag pulumi.StringPtrInput + // Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrInput + // Name of the object once it is in the bucket. + // + // The following arguments are optional: + Key pulumi.StringPtrInput + // ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. + KmsKeyId pulumi.StringPtrInput + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapInput + // [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrInput + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrInput + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrInput + // Override provider-level configuration options. See Override Provider below for more details. + OverrideProvider BucketObjectv2OverrideProviderPtrInput + // Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". + ServerSideEncryption pulumi.StringPtrInput + // Path to a file that will be read and uploaded as raw bytes for the object content. + Source pulumi.AssetOrArchiveInput + // Triggers updates like `etag` but useful to address `etag` encryption limitations. (The value is only stored in state and not saved by AWS.) + SourceHash pulumi.StringPtrInput + // [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". + StorageClass pulumi.StringPtrInput + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + // + // If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. + // + // > **Note:** The provider ignores all leading `/`s in the object's `key` and treats multiple `/`s in the rest of the object's `key` as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`. + WebsiteRedirect pulumi.StringPtrInput +} + +func (BucketObjectv2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketObjectv2Args)(nil)).Elem() +} + +type BucketObjectv2Input interface { + pulumi.Input + + ToBucketObjectv2Output() BucketObjectv2Output + ToBucketObjectv2OutputWithContext(ctx context.Context) BucketObjectv2Output +} + +func (*BucketObjectv2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectv2)(nil)).Elem() +} + +func (i *BucketObjectv2) ToBucketObjectv2Output() BucketObjectv2Output { + return i.ToBucketObjectv2OutputWithContext(context.Background()) +} + +func (i *BucketObjectv2) ToBucketObjectv2OutputWithContext(ctx context.Context) BucketObjectv2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2Output) +} + +// BucketObjectv2ArrayInput is an input type that accepts BucketObjectv2Array and BucketObjectv2ArrayOutput values. +// You can construct a concrete instance of `BucketObjectv2ArrayInput` via: +// +// BucketObjectv2Array{ BucketObjectv2Args{...} } +type BucketObjectv2ArrayInput interface { + pulumi.Input + + ToBucketObjectv2ArrayOutput() BucketObjectv2ArrayOutput + ToBucketObjectv2ArrayOutputWithContext(context.Context) BucketObjectv2ArrayOutput +} + +type BucketObjectv2Array []BucketObjectv2Input + +func (BucketObjectv2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketObjectv2)(nil)).Elem() +} + +func (i BucketObjectv2Array) ToBucketObjectv2ArrayOutput() BucketObjectv2ArrayOutput { + return i.ToBucketObjectv2ArrayOutputWithContext(context.Background()) +} + +func (i BucketObjectv2Array) ToBucketObjectv2ArrayOutputWithContext(ctx context.Context) BucketObjectv2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2ArrayOutput) +} + +// BucketObjectv2MapInput is an input type that accepts BucketObjectv2Map and BucketObjectv2MapOutput values. +// You can construct a concrete instance of `BucketObjectv2MapInput` via: +// +// BucketObjectv2Map{ "key": BucketObjectv2Args{...} } +type BucketObjectv2MapInput interface { + pulumi.Input + + ToBucketObjectv2MapOutput() BucketObjectv2MapOutput + ToBucketObjectv2MapOutputWithContext(context.Context) BucketObjectv2MapOutput +} + +type BucketObjectv2Map map[string]BucketObjectv2Input + +func (BucketObjectv2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketObjectv2)(nil)).Elem() +} + +func (i BucketObjectv2Map) ToBucketObjectv2MapOutput() BucketObjectv2MapOutput { + return i.ToBucketObjectv2MapOutputWithContext(context.Background()) +} + +func (i BucketObjectv2Map) ToBucketObjectv2MapOutputWithContext(ctx context.Context) BucketObjectv2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2MapOutput) +} + +type BucketObjectv2Output struct{ *pulumi.OutputState } + +func (BucketObjectv2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectv2)(nil)).Elem() +} + +func (o BucketObjectv2Output) ToBucketObjectv2Output() BucketObjectv2Output { + return o +} + +func (o BucketObjectv2Output) ToBucketObjectv2OutputWithContext(ctx context.Context) BucketObjectv2Output { + return o +} + +// [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, `bucket-owner-read`, and `bucket-owner-full-control`. +func (o BucketObjectv2Output) Acl() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.Acl }).(pulumi.StringOutput) +} + +// ARN of the object. +func (o BucketObjectv2Output) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Name of the bucket to put the file in. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified. +func (o BucketObjectv2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o BucketObjectv2Output) BucketKeyEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.BoolOutput { return v.BucketKeyEnabled }).(pulumi.BoolOutput) +} + +// Caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. +func (o BucketObjectv2Output) CacheControl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.CacheControl }).(pulumi.StringPtrOutput) +} + +// Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. +func (o BucketObjectv2Output) ChecksumAlgorithm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ChecksumAlgorithm }).(pulumi.StringPtrOutput) +} + +// The base64-encoded, 32-bit CRC32 checksum of the object. +func (o BucketObjectv2Output) ChecksumCrc32() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.ChecksumCrc32 }).(pulumi.StringOutput) +} + +// The base64-encoded, 32-bit CRC32C checksum of the object. +func (o BucketObjectv2Output) ChecksumCrc32c() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.ChecksumCrc32c }).(pulumi.StringOutput) +} + +// The base64-encoded, 160-bit SHA-1 digest of the object. +func (o BucketObjectv2Output) ChecksumSha1() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.ChecksumSha1 }).(pulumi.StringOutput) +} + +// The base64-encoded, 256-bit SHA-256 digest of the object. +func (o BucketObjectv2Output) ChecksumSha256() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.ChecksumSha256 }).(pulumi.StringOutput) +} + +// Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. +func (o BucketObjectv2Output) Content() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.Content }).(pulumi.StringPtrOutput) +} + +// Base64-encoded data that will be decoded and uploaded as raw bytes for the object content. This allows safely uploading non-UTF8 binary data, but is recommended only for small content such as the result of the `gzipbase64` function with small text strings. For larger objects, use `source` to stream the content from a disk file. +func (o BucketObjectv2Output) ContentBase64() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ContentBase64 }).(pulumi.StringPtrOutput) +} + +// Presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. +func (o BucketObjectv2Output) ContentDisposition() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ContentDisposition }).(pulumi.StringPtrOutput) +} + +// Content encodings that have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. +func (o BucketObjectv2Output) ContentEncoding() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ContentEncoding }).(pulumi.StringPtrOutput) +} + +// Language the content is in e.g., en-US or en-GB. +func (o BucketObjectv2Output) ContentLanguage() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ContentLanguage }).(pulumi.StringPtrOutput) +} + +// Standard MIME type describing the format of the object data, e.g., application/octet-stream. All Valid MIME Types are valid for this input. +func (o BucketObjectv2Output) ContentType() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.ContentType }).(pulumi.StringOutput) +} + +// Triggers updates when the value changes. This attribute is not compatible with KMS encryption, `kmsKeyId` or `serverSideEncryption = "aws:kms"`, also if an object is larger than 16 MB, the AWS Management Console will upload or copy that object as a Multipart Upload, and therefore the ETag will not be an MD5 digest (see `sourceHash` instead). +func (o BucketObjectv2Output) Etag() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput) +} + +// Whether to allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. +func (o BucketObjectv2Output) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// Name of the object once it is in the bucket. +// +// The following arguments are optional: +func (o BucketObjectv2Output) Key() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.Key }).(pulumi.StringOutput) +} + +// ARN of the KMS Key to use for object encryption. If the S3 Bucket has server-side encryption enabled, that value will automatically be used. If referencing the `kms.Key` resource, use the `arn` attribute. If referencing the `kms.Alias` data source or resource, use the `targetKeyArn` attribute. The provider will only perform drift detection if a configuration value is provided. +func (o BucketObjectv2Output) KmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.KmsKeyId }).(pulumi.StringOutput) +} + +// Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). +func (o BucketObjectv2Output) Metadata() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringMapOutput { return v.Metadata }).(pulumi.StringMapOutput) +} + +// [Legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. +func (o BucketObjectv2Output) ObjectLockLegalHoldStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ObjectLockLegalHoldStatus }).(pulumi.StringPtrOutput) +} + +// Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. +func (o BucketObjectv2Output) ObjectLockMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ObjectLockMode }).(pulumi.StringPtrOutput) +} + +// Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). +func (o BucketObjectv2Output) ObjectLockRetainUntilDate() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.ObjectLockRetainUntilDate }).(pulumi.StringPtrOutput) +} + +// Override provider-level configuration options. See Override Provider below for more details. +func (o BucketObjectv2Output) OverrideProvider() BucketObjectv2OverrideProviderPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) BucketObjectv2OverrideProviderPtrOutput { return v.OverrideProvider }).(BucketObjectv2OverrideProviderPtrOutput) +} + +// Server-side encryption of the object in S3. Valid values are "`AES256`" and "`aws:kms`". +func (o BucketObjectv2Output) ServerSideEncryption() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.ServerSideEncryption }).(pulumi.StringOutput) +} + +// Path to a file that will be read and uploaded as raw bytes for the object content. +func (o BucketObjectv2Output) Source() pulumi.AssetOrArchiveOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.AssetOrArchiveOutput { return v.Source }).(pulumi.AssetOrArchiveOutput) +} + +// Triggers updates like `etag` but useful to address `etag` encryption limitations. (The value is only stored in state and not saved by AWS.) +func (o BucketObjectv2Output) SourceHash() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.SourceHash }).(pulumi.StringPtrOutput) +} + +// [Storage Class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html#AmazonS3-PutObject-request-header-StorageClass) for the object. Defaults to "`STANDARD`". +func (o BucketObjectv2Output) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.StorageClass }).(pulumi.StringOutput) +} + +// Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o BucketObjectv2Output) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o BucketObjectv2Output) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// Unique version ID value for the object, if bucket versioning is enabled. +func (o BucketObjectv2Output) VersionId() pulumi.StringOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringOutput { return v.VersionId }).(pulumi.StringOutput) +} + +// Target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). +// +// If no content is provided through `source`, `content` or `contentBase64`, then the object will be empty. +// +// > **Note:** The provider ignores all leading `/`s in the object's `key` and treats multiple `/`s in the rest of the object's `key` as a single `/`, so values of `/index.html` and `index.html` correspond to the same S3 object as do `first//second///third//` and `first/second/third/`. +func (o BucketObjectv2Output) WebsiteRedirect() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectv2) pulumi.StringPtrOutput { return v.WebsiteRedirect }).(pulumi.StringPtrOutput) +} + +type BucketObjectv2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketObjectv2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketObjectv2)(nil)).Elem() +} + +func (o BucketObjectv2ArrayOutput) ToBucketObjectv2ArrayOutput() BucketObjectv2ArrayOutput { + return o +} + +func (o BucketObjectv2ArrayOutput) ToBucketObjectv2ArrayOutputWithContext(ctx context.Context) BucketObjectv2ArrayOutput { + return o +} + +func (o BucketObjectv2ArrayOutput) Index(i pulumi.IntInput) BucketObjectv2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketObjectv2 { + return vs[0].([]*BucketObjectv2)[vs[1].(int)] + }).(BucketObjectv2Output) +} + +type BucketObjectv2MapOutput struct{ *pulumi.OutputState } + +func (BucketObjectv2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketObjectv2)(nil)).Elem() +} + +func (o BucketObjectv2MapOutput) ToBucketObjectv2MapOutput() BucketObjectv2MapOutput { + return o +} + +func (o BucketObjectv2MapOutput) ToBucketObjectv2MapOutputWithContext(ctx context.Context) BucketObjectv2MapOutput { + return o +} + +func (o BucketObjectv2MapOutput) MapIndex(k pulumi.StringInput) BucketObjectv2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketObjectv2 { + return vs[0].(map[string]*BucketObjectv2)[vs[1].(string)] + }).(BucketObjectv2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectv2Input)(nil)).Elem(), &BucketObjectv2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectv2ArrayInput)(nil)).Elem(), BucketObjectv2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectv2MapInput)(nil)).Elem(), BucketObjectv2Map{}) + pulumi.RegisterOutputType(BucketObjectv2Output{}) + pulumi.RegisterOutputType(BucketObjectv2ArrayOutput{}) + pulumi.RegisterOutputType(BucketObjectv2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketOwnershipControls.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketOwnershipControls.go new file mode 100644 index 000000000..b4a695f3e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketOwnershipControls.go @@ -0,0 +1,282 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource to manage S3 Bucket Ownership Controls. For more information, see the [S3 Developer Guide](https://docs.aws.amazon.com/AmazonS3/latest/dev/about-object-ownership.html). +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketOwnershipControls(ctx, "example", &s3.BucketOwnershipControlsArgs{ +// Bucket: example.ID(), +// Rule: &s3.BucketOwnershipControlsRuleArgs{ +// ObjectOwnership: pulumi.String("BucketOwnerPreferred"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 Bucket Ownership Controls using S3 Bucket name. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketOwnershipControls:BucketOwnershipControls example my-bucket +// ``` +type BucketOwnershipControls struct { + pulumi.CustomResourceState + + // Name of the bucket that you want to associate this access point with. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Configuration block(s) with Ownership Controls rules. Detailed below. + Rule BucketOwnershipControlsRuleOutput `pulumi:"rule"` +} + +// NewBucketOwnershipControls registers a new resource with the given unique name, arguments, and options. +func NewBucketOwnershipControls(ctx *pulumi.Context, + name string, args *BucketOwnershipControlsArgs, opts ...pulumi.ResourceOption) (*BucketOwnershipControls, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Rule == nil { + return nil, errors.New("invalid value for required argument 'Rule'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketOwnershipControls + err := ctx.RegisterResource("aws:s3/bucketOwnershipControls:BucketOwnershipControls", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketOwnershipControls gets an existing BucketOwnershipControls 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 GetBucketOwnershipControls(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketOwnershipControlsState, opts ...pulumi.ResourceOption) (*BucketOwnershipControls, error) { + var resource BucketOwnershipControls + err := ctx.ReadResource("aws:s3/bucketOwnershipControls:BucketOwnershipControls", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketOwnershipControls resources. +type bucketOwnershipControlsState struct { + // Name of the bucket that you want to associate this access point with. + Bucket *string `pulumi:"bucket"` + // Configuration block(s) with Ownership Controls rules. Detailed below. + Rule *BucketOwnershipControlsRule `pulumi:"rule"` +} + +type BucketOwnershipControlsState struct { + // Name of the bucket that you want to associate this access point with. + Bucket pulumi.StringPtrInput + // Configuration block(s) with Ownership Controls rules. Detailed below. + Rule BucketOwnershipControlsRulePtrInput +} + +func (BucketOwnershipControlsState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketOwnershipControlsState)(nil)).Elem() +} + +type bucketOwnershipControlsArgs struct { + // Name of the bucket that you want to associate this access point with. + Bucket string `pulumi:"bucket"` + // Configuration block(s) with Ownership Controls rules. Detailed below. + Rule BucketOwnershipControlsRule `pulumi:"rule"` +} + +// The set of arguments for constructing a BucketOwnershipControls resource. +type BucketOwnershipControlsArgs struct { + // Name of the bucket that you want to associate this access point with. + Bucket pulumi.StringInput + // Configuration block(s) with Ownership Controls rules. Detailed below. + Rule BucketOwnershipControlsRuleInput +} + +func (BucketOwnershipControlsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketOwnershipControlsArgs)(nil)).Elem() +} + +type BucketOwnershipControlsInput interface { + pulumi.Input + + ToBucketOwnershipControlsOutput() BucketOwnershipControlsOutput + ToBucketOwnershipControlsOutputWithContext(ctx context.Context) BucketOwnershipControlsOutput +} + +func (*BucketOwnershipControls) ElementType() reflect.Type { + return reflect.TypeOf((**BucketOwnershipControls)(nil)).Elem() +} + +func (i *BucketOwnershipControls) ToBucketOwnershipControlsOutput() BucketOwnershipControlsOutput { + return i.ToBucketOwnershipControlsOutputWithContext(context.Background()) +} + +func (i *BucketOwnershipControls) ToBucketOwnershipControlsOutputWithContext(ctx context.Context) BucketOwnershipControlsOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOwnershipControlsOutput) +} + +// BucketOwnershipControlsArrayInput is an input type that accepts BucketOwnershipControlsArray and BucketOwnershipControlsArrayOutput values. +// You can construct a concrete instance of `BucketOwnershipControlsArrayInput` via: +// +// BucketOwnershipControlsArray{ BucketOwnershipControlsArgs{...} } +type BucketOwnershipControlsArrayInput interface { + pulumi.Input + + ToBucketOwnershipControlsArrayOutput() BucketOwnershipControlsArrayOutput + ToBucketOwnershipControlsArrayOutputWithContext(context.Context) BucketOwnershipControlsArrayOutput +} + +type BucketOwnershipControlsArray []BucketOwnershipControlsInput + +func (BucketOwnershipControlsArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketOwnershipControls)(nil)).Elem() +} + +func (i BucketOwnershipControlsArray) ToBucketOwnershipControlsArrayOutput() BucketOwnershipControlsArrayOutput { + return i.ToBucketOwnershipControlsArrayOutputWithContext(context.Background()) +} + +func (i BucketOwnershipControlsArray) ToBucketOwnershipControlsArrayOutputWithContext(ctx context.Context) BucketOwnershipControlsArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOwnershipControlsArrayOutput) +} + +// BucketOwnershipControlsMapInput is an input type that accepts BucketOwnershipControlsMap and BucketOwnershipControlsMapOutput values. +// You can construct a concrete instance of `BucketOwnershipControlsMapInput` via: +// +// BucketOwnershipControlsMap{ "key": BucketOwnershipControlsArgs{...} } +type BucketOwnershipControlsMapInput interface { + pulumi.Input + + ToBucketOwnershipControlsMapOutput() BucketOwnershipControlsMapOutput + ToBucketOwnershipControlsMapOutputWithContext(context.Context) BucketOwnershipControlsMapOutput +} + +type BucketOwnershipControlsMap map[string]BucketOwnershipControlsInput + +func (BucketOwnershipControlsMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketOwnershipControls)(nil)).Elem() +} + +func (i BucketOwnershipControlsMap) ToBucketOwnershipControlsMapOutput() BucketOwnershipControlsMapOutput { + return i.ToBucketOwnershipControlsMapOutputWithContext(context.Background()) +} + +func (i BucketOwnershipControlsMap) ToBucketOwnershipControlsMapOutputWithContext(ctx context.Context) BucketOwnershipControlsMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOwnershipControlsMapOutput) +} + +type BucketOwnershipControlsOutput struct{ *pulumi.OutputState } + +func (BucketOwnershipControlsOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketOwnershipControls)(nil)).Elem() +} + +func (o BucketOwnershipControlsOutput) ToBucketOwnershipControlsOutput() BucketOwnershipControlsOutput { + return o +} + +func (o BucketOwnershipControlsOutput) ToBucketOwnershipControlsOutputWithContext(ctx context.Context) BucketOwnershipControlsOutput { + return o +} + +// Name of the bucket that you want to associate this access point with. +func (o BucketOwnershipControlsOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketOwnershipControls) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Configuration block(s) with Ownership Controls rules. Detailed below. +func (o BucketOwnershipControlsOutput) Rule() BucketOwnershipControlsRuleOutput { + return o.ApplyT(func(v *BucketOwnershipControls) BucketOwnershipControlsRuleOutput { return v.Rule }).(BucketOwnershipControlsRuleOutput) +} + +type BucketOwnershipControlsArrayOutput struct{ *pulumi.OutputState } + +func (BucketOwnershipControlsArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketOwnershipControls)(nil)).Elem() +} + +func (o BucketOwnershipControlsArrayOutput) ToBucketOwnershipControlsArrayOutput() BucketOwnershipControlsArrayOutput { + return o +} + +func (o BucketOwnershipControlsArrayOutput) ToBucketOwnershipControlsArrayOutputWithContext(ctx context.Context) BucketOwnershipControlsArrayOutput { + return o +} + +func (o BucketOwnershipControlsArrayOutput) Index(i pulumi.IntInput) BucketOwnershipControlsOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketOwnershipControls { + return vs[0].([]*BucketOwnershipControls)[vs[1].(int)] + }).(BucketOwnershipControlsOutput) +} + +type BucketOwnershipControlsMapOutput struct{ *pulumi.OutputState } + +func (BucketOwnershipControlsMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketOwnershipControls)(nil)).Elem() +} + +func (o BucketOwnershipControlsMapOutput) ToBucketOwnershipControlsMapOutput() BucketOwnershipControlsMapOutput { + return o +} + +func (o BucketOwnershipControlsMapOutput) ToBucketOwnershipControlsMapOutputWithContext(ctx context.Context) BucketOwnershipControlsMapOutput { + return o +} + +func (o BucketOwnershipControlsMapOutput) MapIndex(k pulumi.StringInput) BucketOwnershipControlsOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketOwnershipControls { + return vs[0].(map[string]*BucketOwnershipControls)[vs[1].(string)] + }).(BucketOwnershipControlsOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketOwnershipControlsInput)(nil)).Elem(), &BucketOwnershipControls{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketOwnershipControlsArrayInput)(nil)).Elem(), BucketOwnershipControlsArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketOwnershipControlsMapInput)(nil)).Elem(), BucketOwnershipControlsMap{}) + pulumi.RegisterOutputType(BucketOwnershipControlsOutput{}) + pulumi.RegisterOutputType(BucketOwnershipControlsArrayOutput{}) + pulumi.RegisterOutputType(BucketOwnershipControlsMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPolicy.go new file mode 100644 index 000000000..679188daf --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPolicy.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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Attaches a policy to an S3 bucket resource. +// +// > Policies can be attached to both S3 general purpose buckets and S3 directory buckets. +// +// ## Example Usage +// +// ### Basic Usage +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-test-bucket"), +// }) +// if err != nil { +// return err +// } +// allowAccessFromAnotherAccount := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Principals: iam.GetPolicyDocumentStatementPrincipalArray{ +// &iam.GetPolicyDocumentStatementPrincipalArgs{ +// Type: pulumi.String("AWS"), +// Identifiers: pulumi.StringArray{ +// pulumi.String("123456789012"), +// }, +// }, +// }, +// Actions: pulumi.StringArray{ +// pulumi.String("s3:GetObject"), +// pulumi.String("s3:ListBucket"), +// }, +// Resources: pulumi.StringArray{ +// example.Arn, +// example.Arn.ApplyT(func(arn string) (string, error) { +// return fmt.Sprintf("%v/*", arn), nil +// }).(pulumi.StringOutput), +// }, +// }, +// }, +// }, nil) +// _, err = s3.NewBucketPolicy(ctx, "allow_access_from_another_account", &s3.BucketPolicyArgs{ +// Bucket: example.ID(), +// Policy: pulumi.String(allowAccessFromAnotherAccount.ApplyT(func(allowAccessFromAnotherAccount iam.GetPolicyDocumentResult) (*string, error) { +// return &allowAccessFromAnotherAccount.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket policies using the bucket name. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketPolicy:BucketPolicy allow_access_from_another_account my-tf-test-bucket +// ``` +type BucketPolicy struct { + pulumi.CustomResourceState + + // Name of the bucket to which to apply the policy. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Text of the policy. Although this is a bucket policy rather than an IAM policy, the `iam.getPolicyDocument` data source may be used, so long as it specifies a principal. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide. Note: Bucket policies are limited to 20 KB in size. + Policy pulumi.StringOutput `pulumi:"policy"` +} + +// NewBucketPolicy registers a new resource with the given unique name, arguments, and options. +func NewBucketPolicy(ctx *pulumi.Context, + name string, args *BucketPolicyArgs, opts ...pulumi.ResourceOption) (*BucketPolicy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Policy == nil { + return nil, errors.New("invalid value for required argument 'Policy'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketPolicy + err := ctx.RegisterResource("aws:s3/bucketPolicy:BucketPolicy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketPolicy gets an existing BucketPolicy 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 GetBucketPolicy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketPolicyState, opts ...pulumi.ResourceOption) (*BucketPolicy, error) { + var resource BucketPolicy + err := ctx.ReadResource("aws:s3/bucketPolicy:BucketPolicy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketPolicy resources. +type bucketPolicyState struct { + // Name of the bucket to which to apply the policy. + Bucket *string `pulumi:"bucket"` + // Text of the policy. Although this is a bucket policy rather than an IAM policy, the `iam.getPolicyDocument` data source may be used, so long as it specifies a principal. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide. Note: Bucket policies are limited to 20 KB in size. + Policy interface{} `pulumi:"policy"` +} + +type BucketPolicyState struct { + // Name of the bucket to which to apply the policy. + Bucket pulumi.StringPtrInput + // Text of the policy. Although this is a bucket policy rather than an IAM policy, the `iam.getPolicyDocument` data source may be used, so long as it specifies a principal. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide. Note: Bucket policies are limited to 20 KB in size. + Policy pulumi.Input +} + +func (BucketPolicyState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketPolicyState)(nil)).Elem() +} + +type bucketPolicyArgs struct { + // Name of the bucket to which to apply the policy. + Bucket string `pulumi:"bucket"` + // Text of the policy. Although this is a bucket policy rather than an IAM policy, the `iam.getPolicyDocument` data source may be used, so long as it specifies a principal. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide. Note: Bucket policies are limited to 20 KB in size. + Policy interface{} `pulumi:"policy"` +} + +// The set of arguments for constructing a BucketPolicy resource. +type BucketPolicyArgs struct { + // Name of the bucket to which to apply the policy. + Bucket pulumi.StringInput + // Text of the policy. Although this is a bucket policy rather than an IAM policy, the `iam.getPolicyDocument` data source may be used, so long as it specifies a principal. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide. Note: Bucket policies are limited to 20 KB in size. + Policy pulumi.Input +} + +func (BucketPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketPolicyArgs)(nil)).Elem() +} + +type BucketPolicyInput interface { + pulumi.Input + + ToBucketPolicyOutput() BucketPolicyOutput + ToBucketPolicyOutputWithContext(ctx context.Context) BucketPolicyOutput +} + +func (*BucketPolicy) ElementType() reflect.Type { + return reflect.TypeOf((**BucketPolicy)(nil)).Elem() +} + +func (i *BucketPolicy) ToBucketPolicyOutput() BucketPolicyOutput { + return i.ToBucketPolicyOutputWithContext(context.Background()) +} + +func (i *BucketPolicy) ToBucketPolicyOutputWithContext(ctx context.Context) BucketPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketPolicyOutput) +} + +// BucketPolicyArrayInput is an input type that accepts BucketPolicyArray and BucketPolicyArrayOutput values. +// You can construct a concrete instance of `BucketPolicyArrayInput` via: +// +// BucketPolicyArray{ BucketPolicyArgs{...} } +type BucketPolicyArrayInput interface { + pulumi.Input + + ToBucketPolicyArrayOutput() BucketPolicyArrayOutput + ToBucketPolicyArrayOutputWithContext(context.Context) BucketPolicyArrayOutput +} + +type BucketPolicyArray []BucketPolicyInput + +func (BucketPolicyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketPolicy)(nil)).Elem() +} + +func (i BucketPolicyArray) ToBucketPolicyArrayOutput() BucketPolicyArrayOutput { + return i.ToBucketPolicyArrayOutputWithContext(context.Background()) +} + +func (i BucketPolicyArray) ToBucketPolicyArrayOutputWithContext(ctx context.Context) BucketPolicyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketPolicyArrayOutput) +} + +// BucketPolicyMapInput is an input type that accepts BucketPolicyMap and BucketPolicyMapOutput values. +// You can construct a concrete instance of `BucketPolicyMapInput` via: +// +// BucketPolicyMap{ "key": BucketPolicyArgs{...} } +type BucketPolicyMapInput interface { + pulumi.Input + + ToBucketPolicyMapOutput() BucketPolicyMapOutput + ToBucketPolicyMapOutputWithContext(context.Context) BucketPolicyMapOutput +} + +type BucketPolicyMap map[string]BucketPolicyInput + +func (BucketPolicyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketPolicy)(nil)).Elem() +} + +func (i BucketPolicyMap) ToBucketPolicyMapOutput() BucketPolicyMapOutput { + return i.ToBucketPolicyMapOutputWithContext(context.Background()) +} + +func (i BucketPolicyMap) ToBucketPolicyMapOutputWithContext(ctx context.Context) BucketPolicyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketPolicyMapOutput) +} + +type BucketPolicyOutput struct{ *pulumi.OutputState } + +func (BucketPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketPolicy)(nil)).Elem() +} + +func (o BucketPolicyOutput) ToBucketPolicyOutput() BucketPolicyOutput { + return o +} + +func (o BucketPolicyOutput) ToBucketPolicyOutputWithContext(ctx context.Context) BucketPolicyOutput { + return o +} + +// Name of the bucket to which to apply the policy. +func (o BucketPolicyOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketPolicy) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Text of the policy. Although this is a bucket policy rather than an IAM policy, the `iam.getPolicyDocument` data source may be used, so long as it specifies a principal. For more information about building AWS IAM policy documents, see the AWS IAM Policy Document Guide. Note: Bucket policies are limited to 20 KB in size. +func (o BucketPolicyOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *BucketPolicy) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +type BucketPolicyArrayOutput struct{ *pulumi.OutputState } + +func (BucketPolicyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketPolicy)(nil)).Elem() +} + +func (o BucketPolicyArrayOutput) ToBucketPolicyArrayOutput() BucketPolicyArrayOutput { + return o +} + +func (o BucketPolicyArrayOutput) ToBucketPolicyArrayOutputWithContext(ctx context.Context) BucketPolicyArrayOutput { + return o +} + +func (o BucketPolicyArrayOutput) Index(i pulumi.IntInput) BucketPolicyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketPolicy { + return vs[0].([]*BucketPolicy)[vs[1].(int)] + }).(BucketPolicyOutput) +} + +type BucketPolicyMapOutput struct{ *pulumi.OutputState } + +func (BucketPolicyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketPolicy)(nil)).Elem() +} + +func (o BucketPolicyMapOutput) ToBucketPolicyMapOutput() BucketPolicyMapOutput { + return o +} + +func (o BucketPolicyMapOutput) ToBucketPolicyMapOutputWithContext(ctx context.Context) BucketPolicyMapOutput { + return o +} + +func (o BucketPolicyMapOutput) MapIndex(k pulumi.StringInput) BucketPolicyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketPolicy { + return vs[0].(map[string]*BucketPolicy)[vs[1].(string)] + }).(BucketPolicyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketPolicyInput)(nil)).Elem(), &BucketPolicy{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketPolicyArrayInput)(nil)).Elem(), BucketPolicyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketPolicyMapInput)(nil)).Elem(), BucketPolicyMap{}) + pulumi.RegisterOutputType(BucketPolicyOutput{}) + pulumi.RegisterOutputType(BucketPolicyArrayOutput{}) + pulumi.RegisterOutputType(BucketPolicyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPublicAccessBlock.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPublicAccessBlock.go new file mode 100644 index 000000000..b56000c21 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketPublicAccessBlock.go @@ -0,0 +1,355 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Manages S3 bucket-level Public Access Block configuration. For more information about these settings, see the [AWS S3 Block Public Access documentation](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html). +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketPublicAccessBlock(ctx, "example", &s3.BucketPublicAccessBlockArgs{ +// Bucket: example.ID(), +// BlockPublicAcls: pulumi.Bool(true), +// BlockPublicPolicy: pulumi.Bool(true), +// IgnorePublicAcls: pulumi.Bool(true), +// RestrictPublicBuckets: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import `aws_s3_bucket_public_access_block` using the bucket name. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock example my-bucket +// ``` +type BucketPublicAccessBlock struct { + pulumi.CustomResourceState + + // Whether Amazon S3 should block public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls will fail if the request includes an object ACL. + BlockPublicAcls pulumi.BoolPtrOutput `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the existing bucket policy. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy pulumi.BoolPtrOutput `pulumi:"blockPublicPolicy"` + // S3 Bucket to which this Public Access Block configuration should be applied. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Whether Amazon S3 should ignore public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore public ACLs on this bucket and any objects that it contains. + IgnorePublicAcls pulumi.BoolPtrOutput `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the previously stored bucket policy, except that public and cross-account access within the public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access this buckets if it has a public policy. + RestrictPublicBuckets pulumi.BoolPtrOutput `pulumi:"restrictPublicBuckets"` +} + +// NewBucketPublicAccessBlock registers a new resource with the given unique name, arguments, and options. +func NewBucketPublicAccessBlock(ctx *pulumi.Context, + name string, args *BucketPublicAccessBlockArgs, opts ...pulumi.ResourceOption) (*BucketPublicAccessBlock, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketPublicAccessBlock + err := ctx.RegisterResource("aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketPublicAccessBlock gets an existing BucketPublicAccessBlock 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 GetBucketPublicAccessBlock(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketPublicAccessBlockState, opts ...pulumi.ResourceOption) (*BucketPublicAccessBlock, error) { + var resource BucketPublicAccessBlock + err := ctx.ReadResource("aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketPublicAccessBlock resources. +type bucketPublicAccessBlockState struct { + // Whether Amazon S3 should block public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls will fail if the request includes an object ACL. + BlockPublicAcls *bool `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the existing bucket policy. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy *bool `pulumi:"blockPublicPolicy"` + // S3 Bucket to which this Public Access Block configuration should be applied. + Bucket *string `pulumi:"bucket"` + // Whether Amazon S3 should ignore public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore public ACLs on this bucket and any objects that it contains. + IgnorePublicAcls *bool `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the previously stored bucket policy, except that public and cross-account access within the public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access this buckets if it has a public policy. + RestrictPublicBuckets *bool `pulumi:"restrictPublicBuckets"` +} + +type BucketPublicAccessBlockState struct { + // Whether Amazon S3 should block public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls will fail if the request includes an object ACL. + BlockPublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should block public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the existing bucket policy. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy pulumi.BoolPtrInput + // S3 Bucket to which this Public Access Block configuration should be applied. + Bucket pulumi.StringPtrInput + // Whether Amazon S3 should ignore public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore public ACLs on this bucket and any objects that it contains. + IgnorePublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should restrict public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the previously stored bucket policy, except that public and cross-account access within the public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access this buckets if it has a public policy. + RestrictPublicBuckets pulumi.BoolPtrInput +} + +func (BucketPublicAccessBlockState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketPublicAccessBlockState)(nil)).Elem() +} + +type bucketPublicAccessBlockArgs struct { + // Whether Amazon S3 should block public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls will fail if the request includes an object ACL. + BlockPublicAcls *bool `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the existing bucket policy. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy *bool `pulumi:"blockPublicPolicy"` + // S3 Bucket to which this Public Access Block configuration should be applied. + Bucket string `pulumi:"bucket"` + // Whether Amazon S3 should ignore public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore public ACLs on this bucket and any objects that it contains. + IgnorePublicAcls *bool `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the previously stored bucket policy, except that public and cross-account access within the public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access this buckets if it has a public policy. + RestrictPublicBuckets *bool `pulumi:"restrictPublicBuckets"` +} + +// The set of arguments for constructing a BucketPublicAccessBlock resource. +type BucketPublicAccessBlockArgs struct { + // Whether Amazon S3 should block public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. + // * PUT Object calls will fail if the request includes an object ACL. + BlockPublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should block public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the existing bucket policy. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy pulumi.BoolPtrInput + // S3 Bucket to which this Public Access Block configuration should be applied. + Bucket pulumi.StringInput + // Whether Amazon S3 should ignore public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore public ACLs on this bucket and any objects that it contains. + IgnorePublicAcls pulumi.BoolPtrInput + // Whether Amazon S3 should restrict public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the previously stored bucket policy, except that public and cross-account access within the public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access this buckets if it has a public policy. + RestrictPublicBuckets pulumi.BoolPtrInput +} + +func (BucketPublicAccessBlockArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketPublicAccessBlockArgs)(nil)).Elem() +} + +type BucketPublicAccessBlockInput interface { + pulumi.Input + + ToBucketPublicAccessBlockOutput() BucketPublicAccessBlockOutput + ToBucketPublicAccessBlockOutputWithContext(ctx context.Context) BucketPublicAccessBlockOutput +} + +func (*BucketPublicAccessBlock) ElementType() reflect.Type { + return reflect.TypeOf((**BucketPublicAccessBlock)(nil)).Elem() +} + +func (i *BucketPublicAccessBlock) ToBucketPublicAccessBlockOutput() BucketPublicAccessBlockOutput { + return i.ToBucketPublicAccessBlockOutputWithContext(context.Background()) +} + +func (i *BucketPublicAccessBlock) ToBucketPublicAccessBlockOutputWithContext(ctx context.Context) BucketPublicAccessBlockOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketPublicAccessBlockOutput) +} + +// BucketPublicAccessBlockArrayInput is an input type that accepts BucketPublicAccessBlockArray and BucketPublicAccessBlockArrayOutput values. +// You can construct a concrete instance of `BucketPublicAccessBlockArrayInput` via: +// +// BucketPublicAccessBlockArray{ BucketPublicAccessBlockArgs{...} } +type BucketPublicAccessBlockArrayInput interface { + pulumi.Input + + ToBucketPublicAccessBlockArrayOutput() BucketPublicAccessBlockArrayOutput + ToBucketPublicAccessBlockArrayOutputWithContext(context.Context) BucketPublicAccessBlockArrayOutput +} + +type BucketPublicAccessBlockArray []BucketPublicAccessBlockInput + +func (BucketPublicAccessBlockArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketPublicAccessBlock)(nil)).Elem() +} + +func (i BucketPublicAccessBlockArray) ToBucketPublicAccessBlockArrayOutput() BucketPublicAccessBlockArrayOutput { + return i.ToBucketPublicAccessBlockArrayOutputWithContext(context.Background()) +} + +func (i BucketPublicAccessBlockArray) ToBucketPublicAccessBlockArrayOutputWithContext(ctx context.Context) BucketPublicAccessBlockArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketPublicAccessBlockArrayOutput) +} + +// BucketPublicAccessBlockMapInput is an input type that accepts BucketPublicAccessBlockMap and BucketPublicAccessBlockMapOutput values. +// You can construct a concrete instance of `BucketPublicAccessBlockMapInput` via: +// +// BucketPublicAccessBlockMap{ "key": BucketPublicAccessBlockArgs{...} } +type BucketPublicAccessBlockMapInput interface { + pulumi.Input + + ToBucketPublicAccessBlockMapOutput() BucketPublicAccessBlockMapOutput + ToBucketPublicAccessBlockMapOutputWithContext(context.Context) BucketPublicAccessBlockMapOutput +} + +type BucketPublicAccessBlockMap map[string]BucketPublicAccessBlockInput + +func (BucketPublicAccessBlockMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketPublicAccessBlock)(nil)).Elem() +} + +func (i BucketPublicAccessBlockMap) ToBucketPublicAccessBlockMapOutput() BucketPublicAccessBlockMapOutput { + return i.ToBucketPublicAccessBlockMapOutputWithContext(context.Background()) +} + +func (i BucketPublicAccessBlockMap) ToBucketPublicAccessBlockMapOutputWithContext(ctx context.Context) BucketPublicAccessBlockMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketPublicAccessBlockMapOutput) +} + +type BucketPublicAccessBlockOutput struct{ *pulumi.OutputState } + +func (BucketPublicAccessBlockOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketPublicAccessBlock)(nil)).Elem() +} + +func (o BucketPublicAccessBlockOutput) ToBucketPublicAccessBlockOutput() BucketPublicAccessBlockOutput { + return o +} + +func (o BucketPublicAccessBlockOutput) ToBucketPublicAccessBlockOutputWithContext(ctx context.Context) BucketPublicAccessBlockOutput { + return o +} + +// Whether Amazon S3 should block public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: +// * PUT Bucket acl and PUT Object acl calls will fail if the specified ACL allows public access. +// * PUT Object calls will fail if the request includes an object ACL. +func (o BucketPublicAccessBlockOutput) BlockPublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketPublicAccessBlock) pulumi.BoolPtrOutput { return v.BlockPublicAcls }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should block public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the existing bucket policy. When set to `true` causes Amazon S3 to: +// * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. +func (o BucketPublicAccessBlockOutput) BlockPublicPolicy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketPublicAccessBlock) pulumi.BoolPtrOutput { return v.BlockPublicPolicy }).(pulumi.BoolPtrOutput) +} + +// S3 Bucket to which this Public Access Block configuration should be applied. +func (o BucketPublicAccessBlockOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketPublicAccessBlock) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Whether Amazon S3 should ignore public ACLs for this bucket. Defaults to `false`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: +// * Ignore public ACLs on this bucket and any objects that it contains. +func (o BucketPublicAccessBlockOutput) IgnorePublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketPublicAccessBlock) pulumi.BoolPtrOutput { return v.IgnorePublicAcls }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should restrict public bucket policies for this bucket. Defaults to `false`. Enabling this setting does not affect the previously stored bucket policy, except that public and cross-account access within the public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: +// * Only the bucket owner and AWS Services can access this buckets if it has a public policy. +func (o BucketPublicAccessBlockOutput) RestrictPublicBuckets() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketPublicAccessBlock) pulumi.BoolPtrOutput { return v.RestrictPublicBuckets }).(pulumi.BoolPtrOutput) +} + +type BucketPublicAccessBlockArrayOutput struct{ *pulumi.OutputState } + +func (BucketPublicAccessBlockArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketPublicAccessBlock)(nil)).Elem() +} + +func (o BucketPublicAccessBlockArrayOutput) ToBucketPublicAccessBlockArrayOutput() BucketPublicAccessBlockArrayOutput { + return o +} + +func (o BucketPublicAccessBlockArrayOutput) ToBucketPublicAccessBlockArrayOutputWithContext(ctx context.Context) BucketPublicAccessBlockArrayOutput { + return o +} + +func (o BucketPublicAccessBlockArrayOutput) Index(i pulumi.IntInput) BucketPublicAccessBlockOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketPublicAccessBlock { + return vs[0].([]*BucketPublicAccessBlock)[vs[1].(int)] + }).(BucketPublicAccessBlockOutput) +} + +type BucketPublicAccessBlockMapOutput struct{ *pulumi.OutputState } + +func (BucketPublicAccessBlockMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketPublicAccessBlock)(nil)).Elem() +} + +func (o BucketPublicAccessBlockMapOutput) ToBucketPublicAccessBlockMapOutput() BucketPublicAccessBlockMapOutput { + return o +} + +func (o BucketPublicAccessBlockMapOutput) ToBucketPublicAccessBlockMapOutputWithContext(ctx context.Context) BucketPublicAccessBlockMapOutput { + return o +} + +func (o BucketPublicAccessBlockMapOutput) MapIndex(k pulumi.StringInput) BucketPublicAccessBlockOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketPublicAccessBlock { + return vs[0].(map[string]*BucketPublicAccessBlock)[vs[1].(string)] + }).(BucketPublicAccessBlockOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketPublicAccessBlockInput)(nil)).Elem(), &BucketPublicAccessBlock{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketPublicAccessBlockArrayInput)(nil)).Elem(), BucketPublicAccessBlockArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketPublicAccessBlockMapInput)(nil)).Elem(), BucketPublicAccessBlockMap{}) + pulumi.RegisterOutputType(BucketPublicAccessBlockOutput{}) + pulumi.RegisterOutputType(BucketPublicAccessBlockArrayOutput{}) + pulumi.RegisterOutputType(BucketPublicAccessBlockMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketReplicationConfig.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketReplicationConfig.go new file mode 100644 index 000000000..e76c6aa73 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketReplicationConfig.go @@ -0,0 +1,558 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an independent configuration resource for S3 bucket [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). +// +// > **NOTE:** S3 Buckets only support a single replication configuration. Declaring multiple `s3.BucketReplicationConfig` resources to the same S3 Bucket will cause a perpetual difference in configuration. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### Using replication configuration +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ +// Statements: []iam.GetPolicyDocumentStatement{ +// { +// Effect: pulumi.StringRef("Allow"), +// Principals: []iam.GetPolicyDocumentStatementPrincipal{ +// { +// Type: "Service", +// Identifiers: []string{ +// "s3.amazonaws.com", +// }, +// }, +// }, +// Actions: []string{ +// "sts:AssumeRole", +// }, +// }, +// }, +// }, nil) +// if err != nil { +// return err +// } +// replicationRole, err := iam.NewRole(ctx, "replication", &iam.RoleArgs{ +// Name: pulumi.String("tf-iam-role-replication-12345"), +// AssumeRolePolicy: pulumi.String(assumeRole.Json), +// }) +// if err != nil { +// return err +// } +// destination, err := s3.NewBucketV2(ctx, "destination", &s3.BucketV2Args{ +// Bucket: pulumi.String("tf-test-bucket-destination-12345"), +// }) +// if err != nil { +// return err +// } +// source, err := s3.NewBucketV2(ctx, "source", &s3.BucketV2Args{ +// Bucket: pulumi.String("tf-test-bucket-source-12345"), +// }) +// if err != nil { +// return err +// } +// replication := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ +// Statements: iam.GetPolicyDocumentStatementArray{ +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("s3:GetReplicationConfiguration"), +// pulumi.String("s3:ListBucket"), +// }, +// Resources: pulumi.StringArray{ +// source.Arn, +// }, +// }, +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("s3:GetObjectVersionForReplication"), +// pulumi.String("s3:GetObjectVersionAcl"), +// pulumi.String("s3:GetObjectVersionTagging"), +// }, +// Resources: pulumi.StringArray{ +// source.Arn.ApplyT(func(arn string) (string, error) { +// return fmt.Sprintf("%v/*", arn), nil +// }).(pulumi.StringOutput), +// }, +// }, +// &iam.GetPolicyDocumentStatementArgs{ +// Effect: pulumi.String("Allow"), +// Actions: pulumi.StringArray{ +// pulumi.String("s3:ReplicateObject"), +// pulumi.String("s3:ReplicateDelete"), +// pulumi.String("s3:ReplicateTags"), +// }, +// Resources: pulumi.StringArray{ +// destination.Arn.ApplyT(func(arn string) (string, error) { +// return fmt.Sprintf("%v/*", arn), nil +// }).(pulumi.StringOutput), +// }, +// }, +// }, +// }, nil) +// replicationPolicy, err := iam.NewPolicy(ctx, "replication", &iam.PolicyArgs{ +// Name: pulumi.String("tf-iam-role-policy-replication-12345"), +// Policy: pulumi.String(replication.ApplyT(func(replication iam.GetPolicyDocumentResult) (*string, error) { +// return &replication.Json, nil +// }).(pulumi.StringPtrOutput)), +// }) +// if err != nil { +// return err +// } +// _, err = iam.NewRolePolicyAttachment(ctx, "replication", &iam.RolePolicyAttachmentArgs{ +// Role: replicationRole.Name, +// PolicyArn: replicationPolicy.Arn, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketVersioningV2(ctx, "destination", &s3.BucketVersioningV2Args{ +// Bucket: destination.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "source_bucket_acl", &s3.BucketAclV2Args{ +// Bucket: source.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// sourceBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "source", &s3.BucketVersioningV2Args{ +// Bucket: source.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketReplicationConfig(ctx, "replication", &s3.BucketReplicationConfigArgs{ +// Role: replicationRole.Arn, +// Bucket: source.ID(), +// Rules: s3.BucketReplicationConfigRuleArray{ +// &s3.BucketReplicationConfigRuleArgs{ +// Id: pulumi.String("foobar"), +// Filter: &s3.BucketReplicationConfigRuleFilterArgs{ +// Prefix: pulumi.String("foo"), +// }, +// Status: pulumi.String("Enabled"), +// Destination: &s3.BucketReplicationConfigRuleDestinationArgs{ +// Bucket: destination.Arn, +// StorageClass: pulumi.String("STANDARD"), +// }, +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// sourceBucketVersioningV2, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Bi-Directional Replication +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// // ... other configuration ... +// east, err := s3.NewBucketV2(ctx, "east", &s3.BucketV2Args{ +// Bucket: pulumi.String("tf-test-bucket-east-12345"), +// }) +// if err != nil { +// return err +// } +// eastBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "east", &s3.BucketVersioningV2Args{ +// Bucket: east.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// west, err := s3.NewBucketV2(ctx, "west", &s3.BucketV2Args{ +// Bucket: pulumi.String("tf-test-bucket-west-12345"), +// }) +// if err != nil { +// return err +// } +// westBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "west", &s3.BucketVersioningV2Args{ +// Bucket: west.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketReplicationConfig(ctx, "east_to_west", &s3.BucketReplicationConfigArgs{ +// Role: pulumi.Any(eastReplication.Arn), +// Bucket: east.ID(), +// Rules: s3.BucketReplicationConfigRuleArray{ +// &s3.BucketReplicationConfigRuleArgs{ +// Id: pulumi.String("foobar"), +// Filter: &s3.BucketReplicationConfigRuleFilterArgs{ +// Prefix: pulumi.String("foo"), +// }, +// Status: pulumi.String("Enabled"), +// Destination: &s3.BucketReplicationConfigRuleDestinationArgs{ +// Bucket: west.Arn, +// StorageClass: pulumi.String("STANDARD"), +// }, +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// eastBucketVersioningV2, +// })) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketReplicationConfig(ctx, "west_to_east", &s3.BucketReplicationConfigArgs{ +// Role: pulumi.Any(westReplication.Arn), +// Bucket: west.ID(), +// Rules: s3.BucketReplicationConfigRuleArray{ +// &s3.BucketReplicationConfigRuleArgs{ +// Id: pulumi.String("foobar"), +// Filter: &s3.BucketReplicationConfigRuleFilterArgs{ +// Prefix: pulumi.String("foo"), +// }, +// Status: pulumi.String("Enabled"), +// Destination: &s3.BucketReplicationConfigRuleDestinationArgs{ +// Bucket: east.Arn, +// StorageClass: pulumi.String("STANDARD"), +// }, +// }, +// }, +// }, pulumi.DependsOn([]pulumi.Resource{ +// westBucketVersioningV2, +// })) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket replication configuration using the `bucket`. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketReplicationConfig:BucketReplicationConfig replication bucket-name +// ``` +type BucketReplicationConfig struct { + pulumi.CustomResourceState + + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role pulumi.StringOutput `pulumi:"role"` + // List of configuration blocks describing the rules managing the replication. See below. + Rules BucketReplicationConfigRuleArrayOutput `pulumi:"rules"` + // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". + // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). + Token pulumi.StringPtrOutput `pulumi:"token"` +} + +// NewBucketReplicationConfig registers a new resource with the given unique name, arguments, and options. +func NewBucketReplicationConfig(ctx *pulumi.Context, + name string, args *BucketReplicationConfigArgs, opts ...pulumi.ResourceOption) (*BucketReplicationConfig, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Role == nil { + return nil, errors.New("invalid value for required argument 'Role'") + } + if args.Rules == nil { + return nil, errors.New("invalid value for required argument 'Rules'") + } + if args.Token != nil { + args.Token = pulumi.ToSecret(args.Token).(pulumi.StringPtrInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "token", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketReplicationConfig + err := ctx.RegisterResource("aws:s3/bucketReplicationConfig:BucketReplicationConfig", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketReplicationConfig gets an existing BucketReplicationConfig 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 GetBucketReplicationConfig(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketReplicationConfigState, opts ...pulumi.ResourceOption) (*BucketReplicationConfig, error) { + var resource BucketReplicationConfig + err := ctx.ReadResource("aws:s3/bucketReplicationConfig:BucketReplicationConfig", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketReplicationConfig resources. +type bucketReplicationConfigState struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket *string `pulumi:"bucket"` + // ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role *string `pulumi:"role"` + // List of configuration blocks describing the rules managing the replication. See below. + Rules []BucketReplicationConfigRule `pulumi:"rules"` + // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". + // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). + Token *string `pulumi:"token"` +} + +type BucketReplicationConfigState struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket pulumi.StringPtrInput + // ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role pulumi.StringPtrInput + // List of configuration blocks describing the rules managing the replication. See below. + Rules BucketReplicationConfigRuleArrayInput + // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". + // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). + Token pulumi.StringPtrInput +} + +func (BucketReplicationConfigState) ElementType() reflect.Type { + return reflect.TypeOf((*bucketReplicationConfigState)(nil)).Elem() +} + +type bucketReplicationConfigArgs struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket string `pulumi:"bucket"` + // ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role string `pulumi:"role"` + // List of configuration blocks describing the rules managing the replication. See below. + Rules []BucketReplicationConfigRule `pulumi:"rules"` + // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". + // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). + Token *string `pulumi:"token"` +} + +// The set of arguments for constructing a BucketReplicationConfig resource. +type BucketReplicationConfigArgs struct { + // Name of the source S3 bucket you want Amazon S3 to monitor. + Bucket pulumi.StringInput + // ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role pulumi.StringInput + // List of configuration blocks describing the rules managing the replication. See below. + Rules BucketReplicationConfigRuleArrayInput + // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". + // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). + Token pulumi.StringPtrInput +} + +func (BucketReplicationConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*bucketReplicationConfigArgs)(nil)).Elem() +} + +type BucketReplicationConfigInput interface { + pulumi.Input + + ToBucketReplicationConfigOutput() BucketReplicationConfigOutput + ToBucketReplicationConfigOutputWithContext(ctx context.Context) BucketReplicationConfigOutput +} + +func (*BucketReplicationConfig) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfig)(nil)).Elem() +} + +func (i *BucketReplicationConfig) ToBucketReplicationConfigOutput() BucketReplicationConfigOutput { + return i.ToBucketReplicationConfigOutputWithContext(context.Background()) +} + +func (i *BucketReplicationConfig) ToBucketReplicationConfigOutputWithContext(ctx context.Context) BucketReplicationConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigOutput) +} + +// BucketReplicationConfigArrayInput is an input type that accepts BucketReplicationConfigArray and BucketReplicationConfigArrayOutput values. +// You can construct a concrete instance of `BucketReplicationConfigArrayInput` via: +// +// BucketReplicationConfigArray{ BucketReplicationConfigArgs{...} } +type BucketReplicationConfigArrayInput interface { + pulumi.Input + + ToBucketReplicationConfigArrayOutput() BucketReplicationConfigArrayOutput + ToBucketReplicationConfigArrayOutputWithContext(context.Context) BucketReplicationConfigArrayOutput +} + +type BucketReplicationConfigArray []BucketReplicationConfigInput + +func (BucketReplicationConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketReplicationConfig)(nil)).Elem() +} + +func (i BucketReplicationConfigArray) ToBucketReplicationConfigArrayOutput() BucketReplicationConfigArrayOutput { + return i.ToBucketReplicationConfigArrayOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigArray) ToBucketReplicationConfigArrayOutputWithContext(ctx context.Context) BucketReplicationConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigArrayOutput) +} + +// BucketReplicationConfigMapInput is an input type that accepts BucketReplicationConfigMap and BucketReplicationConfigMapOutput values. +// You can construct a concrete instance of `BucketReplicationConfigMapInput` via: +// +// BucketReplicationConfigMap{ "key": BucketReplicationConfigArgs{...} } +type BucketReplicationConfigMapInput interface { + pulumi.Input + + ToBucketReplicationConfigMapOutput() BucketReplicationConfigMapOutput + ToBucketReplicationConfigMapOutputWithContext(context.Context) BucketReplicationConfigMapOutput +} + +type BucketReplicationConfigMap map[string]BucketReplicationConfigInput + +func (BucketReplicationConfigMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketReplicationConfig)(nil)).Elem() +} + +func (i BucketReplicationConfigMap) ToBucketReplicationConfigMapOutput() BucketReplicationConfigMapOutput { + return i.ToBucketReplicationConfigMapOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigMap) ToBucketReplicationConfigMapOutputWithContext(ctx context.Context) BucketReplicationConfigMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigMapOutput) +} + +type BucketReplicationConfigOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfig)(nil)).Elem() +} + +func (o BucketReplicationConfigOutput) ToBucketReplicationConfigOutput() BucketReplicationConfigOutput { + return o +} + +func (o BucketReplicationConfigOutput) ToBucketReplicationConfigOutputWithContext(ctx context.Context) BucketReplicationConfigOutput { + return o +} + +// Name of the source S3 bucket you want Amazon S3 to monitor. +func (o BucketReplicationConfigOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketReplicationConfig) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// ARN of the IAM role for Amazon S3 to assume when replicating the objects. +func (o BucketReplicationConfigOutput) Role() pulumi.StringOutput { + return o.ApplyT(func(v *BucketReplicationConfig) pulumi.StringOutput { return v.Role }).(pulumi.StringOutput) +} + +// List of configuration blocks describing the rules managing the replication. See below. +func (o BucketReplicationConfigOutput) Rules() BucketReplicationConfigRuleArrayOutput { + return o.ApplyT(func(v *BucketReplicationConfig) BucketReplicationConfigRuleArrayOutput { return v.Rules }).(BucketReplicationConfigRuleArrayOutput) +} + +// Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". +// For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). +func (o BucketReplicationConfigOutput) Token() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfig) pulumi.StringPtrOutput { return v.Token }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigArrayOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketReplicationConfig)(nil)).Elem() +} + +func (o BucketReplicationConfigArrayOutput) ToBucketReplicationConfigArrayOutput() BucketReplicationConfigArrayOutput { + return o +} + +func (o BucketReplicationConfigArrayOutput) ToBucketReplicationConfigArrayOutputWithContext(ctx context.Context) BucketReplicationConfigArrayOutput { + return o +} + +func (o BucketReplicationConfigArrayOutput) Index(i pulumi.IntInput) BucketReplicationConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketReplicationConfig { + return vs[0].([]*BucketReplicationConfig)[vs[1].(int)] + }).(BucketReplicationConfigOutput) +} + +type BucketReplicationConfigMapOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketReplicationConfig)(nil)).Elem() +} + +func (o BucketReplicationConfigMapOutput) ToBucketReplicationConfigMapOutput() BucketReplicationConfigMapOutput { + return o +} + +func (o BucketReplicationConfigMapOutput) ToBucketReplicationConfigMapOutputWithContext(ctx context.Context) BucketReplicationConfigMapOutput { + return o +} + +func (o BucketReplicationConfigMapOutput) MapIndex(k pulumi.StringInput) BucketReplicationConfigOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketReplicationConfig { + return vs[0].(map[string]*BucketReplicationConfig)[vs[1].(string)] + }).(BucketReplicationConfigOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigInput)(nil)).Elem(), &BucketReplicationConfig{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigArrayInput)(nil)).Elem(), BucketReplicationConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigMapInput)(nil)).Elem(), BucketReplicationConfigMap{}) + pulumi.RegisterOutputType(BucketReplicationConfigOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigArrayOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketRequestPaymentConfigurationV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketRequestPaymentConfigurationV2.go new file mode 100644 index 000000000..2bd270026 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketRequestPaymentConfigurationV2.go @@ -0,0 +1,300 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 bucket request payment configuration resource. For more information, see [Requester Pays Buckets](https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html). +// +// > **NOTE:** Destroying an `s3.BucketRequestPaymentConfigurationV2` resource resets the bucket's `payer` to the S3 default: the bucket owner. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketRequestPaymentConfigurationV2(ctx, "example", &s3.BucketRequestPaymentConfigurationV2Args{ +// Bucket: pulumi.Any(exampleAwsS3Bucket.Id), +// Payer: pulumi.String("Requester"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// __Using `pulumi import` to import__ S3 bucket request payment configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2 example bucket-name,123456789012 +// ``` +type BucketRequestPaymentConfigurationV2 struct { + pulumi.CustomResourceState + + // Name of the bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Specifies who pays for the download and request fees. Valid values: `BucketOwner`, `Requester`. + Payer pulumi.StringOutput `pulumi:"payer"` +} + +// NewBucketRequestPaymentConfigurationV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketRequestPaymentConfigurationV2(ctx *pulumi.Context, + name string, args *BucketRequestPaymentConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketRequestPaymentConfigurationV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Payer == nil { + return nil, errors.New("invalid value for required argument 'Payer'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketRequestPaymentConfigurationV2 + err := ctx.RegisterResource("aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketRequestPaymentConfigurationV2 gets an existing BucketRequestPaymentConfigurationV2 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 GetBucketRequestPaymentConfigurationV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketRequestPaymentConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketRequestPaymentConfigurationV2, error) { + var resource BucketRequestPaymentConfigurationV2 + err := ctx.ReadResource("aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketRequestPaymentConfigurationV2 resources. +type bucketRequestPaymentConfigurationV2State struct { + // Name of the bucket. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Specifies who pays for the download and request fees. Valid values: `BucketOwner`, `Requester`. + Payer *string `pulumi:"payer"` +} + +type BucketRequestPaymentConfigurationV2State struct { + // Name of the bucket. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Specifies who pays for the download and request fees. Valid values: `BucketOwner`, `Requester`. + Payer pulumi.StringPtrInput +} + +func (BucketRequestPaymentConfigurationV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketRequestPaymentConfigurationV2State)(nil)).Elem() +} + +type bucketRequestPaymentConfigurationV2Args struct { + // Name of the bucket. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Specifies who pays for the download and request fees. Valid values: `BucketOwner`, `Requester`. + Payer string `pulumi:"payer"` +} + +// The set of arguments for constructing a BucketRequestPaymentConfigurationV2 resource. +type BucketRequestPaymentConfigurationV2Args struct { + // Name of the bucket. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Specifies who pays for the download and request fees. Valid values: `BucketOwner`, `Requester`. + Payer pulumi.StringInput +} + +func (BucketRequestPaymentConfigurationV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketRequestPaymentConfigurationV2Args)(nil)).Elem() +} + +type BucketRequestPaymentConfigurationV2Input interface { + pulumi.Input + + ToBucketRequestPaymentConfigurationV2Output() BucketRequestPaymentConfigurationV2Output + ToBucketRequestPaymentConfigurationV2OutputWithContext(ctx context.Context) BucketRequestPaymentConfigurationV2Output +} + +func (*BucketRequestPaymentConfigurationV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketRequestPaymentConfigurationV2)(nil)).Elem() +} + +func (i *BucketRequestPaymentConfigurationV2) ToBucketRequestPaymentConfigurationV2Output() BucketRequestPaymentConfigurationV2Output { + return i.ToBucketRequestPaymentConfigurationV2OutputWithContext(context.Background()) +} + +func (i *BucketRequestPaymentConfigurationV2) ToBucketRequestPaymentConfigurationV2OutputWithContext(ctx context.Context) BucketRequestPaymentConfigurationV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketRequestPaymentConfigurationV2Output) +} + +// BucketRequestPaymentConfigurationV2ArrayInput is an input type that accepts BucketRequestPaymentConfigurationV2Array and BucketRequestPaymentConfigurationV2ArrayOutput values. +// You can construct a concrete instance of `BucketRequestPaymentConfigurationV2ArrayInput` via: +// +// BucketRequestPaymentConfigurationV2Array{ BucketRequestPaymentConfigurationV2Args{...} } +type BucketRequestPaymentConfigurationV2ArrayInput interface { + pulumi.Input + + ToBucketRequestPaymentConfigurationV2ArrayOutput() BucketRequestPaymentConfigurationV2ArrayOutput + ToBucketRequestPaymentConfigurationV2ArrayOutputWithContext(context.Context) BucketRequestPaymentConfigurationV2ArrayOutput +} + +type BucketRequestPaymentConfigurationV2Array []BucketRequestPaymentConfigurationV2Input + +func (BucketRequestPaymentConfigurationV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketRequestPaymentConfigurationV2)(nil)).Elem() +} + +func (i BucketRequestPaymentConfigurationV2Array) ToBucketRequestPaymentConfigurationV2ArrayOutput() BucketRequestPaymentConfigurationV2ArrayOutput { + return i.ToBucketRequestPaymentConfigurationV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketRequestPaymentConfigurationV2Array) ToBucketRequestPaymentConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketRequestPaymentConfigurationV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketRequestPaymentConfigurationV2ArrayOutput) +} + +// BucketRequestPaymentConfigurationV2MapInput is an input type that accepts BucketRequestPaymentConfigurationV2Map and BucketRequestPaymentConfigurationV2MapOutput values. +// You can construct a concrete instance of `BucketRequestPaymentConfigurationV2MapInput` via: +// +// BucketRequestPaymentConfigurationV2Map{ "key": BucketRequestPaymentConfigurationV2Args{...} } +type BucketRequestPaymentConfigurationV2MapInput interface { + pulumi.Input + + ToBucketRequestPaymentConfigurationV2MapOutput() BucketRequestPaymentConfigurationV2MapOutput + ToBucketRequestPaymentConfigurationV2MapOutputWithContext(context.Context) BucketRequestPaymentConfigurationV2MapOutput +} + +type BucketRequestPaymentConfigurationV2Map map[string]BucketRequestPaymentConfigurationV2Input + +func (BucketRequestPaymentConfigurationV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketRequestPaymentConfigurationV2)(nil)).Elem() +} + +func (i BucketRequestPaymentConfigurationV2Map) ToBucketRequestPaymentConfigurationV2MapOutput() BucketRequestPaymentConfigurationV2MapOutput { + return i.ToBucketRequestPaymentConfigurationV2MapOutputWithContext(context.Background()) +} + +func (i BucketRequestPaymentConfigurationV2Map) ToBucketRequestPaymentConfigurationV2MapOutputWithContext(ctx context.Context) BucketRequestPaymentConfigurationV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketRequestPaymentConfigurationV2MapOutput) +} + +type BucketRequestPaymentConfigurationV2Output struct{ *pulumi.OutputState } + +func (BucketRequestPaymentConfigurationV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketRequestPaymentConfigurationV2)(nil)).Elem() +} + +func (o BucketRequestPaymentConfigurationV2Output) ToBucketRequestPaymentConfigurationV2Output() BucketRequestPaymentConfigurationV2Output { + return o +} + +func (o BucketRequestPaymentConfigurationV2Output) ToBucketRequestPaymentConfigurationV2OutputWithContext(ctx context.Context) BucketRequestPaymentConfigurationV2Output { + return o +} + +// Name of the bucket. +func (o BucketRequestPaymentConfigurationV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketRequestPaymentConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketRequestPaymentConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketRequestPaymentConfigurationV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// Specifies who pays for the download and request fees. Valid values: `BucketOwner`, `Requester`. +func (o BucketRequestPaymentConfigurationV2Output) Payer() pulumi.StringOutput { + return o.ApplyT(func(v *BucketRequestPaymentConfigurationV2) pulumi.StringOutput { return v.Payer }).(pulumi.StringOutput) +} + +type BucketRequestPaymentConfigurationV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketRequestPaymentConfigurationV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketRequestPaymentConfigurationV2)(nil)).Elem() +} + +func (o BucketRequestPaymentConfigurationV2ArrayOutput) ToBucketRequestPaymentConfigurationV2ArrayOutput() BucketRequestPaymentConfigurationV2ArrayOutput { + return o +} + +func (o BucketRequestPaymentConfigurationV2ArrayOutput) ToBucketRequestPaymentConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketRequestPaymentConfigurationV2ArrayOutput { + return o +} + +func (o BucketRequestPaymentConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketRequestPaymentConfigurationV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketRequestPaymentConfigurationV2 { + return vs[0].([]*BucketRequestPaymentConfigurationV2)[vs[1].(int)] + }).(BucketRequestPaymentConfigurationV2Output) +} + +type BucketRequestPaymentConfigurationV2MapOutput struct{ *pulumi.OutputState } + +func (BucketRequestPaymentConfigurationV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketRequestPaymentConfigurationV2)(nil)).Elem() +} + +func (o BucketRequestPaymentConfigurationV2MapOutput) ToBucketRequestPaymentConfigurationV2MapOutput() BucketRequestPaymentConfigurationV2MapOutput { + return o +} + +func (o BucketRequestPaymentConfigurationV2MapOutput) ToBucketRequestPaymentConfigurationV2MapOutputWithContext(ctx context.Context) BucketRequestPaymentConfigurationV2MapOutput { + return o +} + +func (o BucketRequestPaymentConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketRequestPaymentConfigurationV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketRequestPaymentConfigurationV2 { + return vs[0].(map[string]*BucketRequestPaymentConfigurationV2)[vs[1].(string)] + }).(BucketRequestPaymentConfigurationV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketRequestPaymentConfigurationV2Input)(nil)).Elem(), &BucketRequestPaymentConfigurationV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketRequestPaymentConfigurationV2ArrayInput)(nil)).Elem(), BucketRequestPaymentConfigurationV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketRequestPaymentConfigurationV2MapInput)(nil)).Elem(), BucketRequestPaymentConfigurationV2Map{}) + pulumi.RegisterOutputType(BucketRequestPaymentConfigurationV2Output{}) + pulumi.RegisterOutputType(BucketRequestPaymentConfigurationV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketRequestPaymentConfigurationV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketServerSideEncryptionConfigurationV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketServerSideEncryptionConfigurationV2.go new file mode 100644 index 000000000..eb270da37 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketServerSideEncryptionConfigurationV2.go @@ -0,0 +1,323 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a S3 bucket server-side encryption configuration resource. +// +// > **NOTE:** Destroying an `s3.BucketServerSideEncryptionConfigurationV2` resource resets the bucket to [Amazon S3 bucket default encryption](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html). +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/kms" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// mykey, err := kms.NewKey(ctx, "mykey", &kms.KeyArgs{ +// Description: pulumi.String("This key is used to encrypt bucket objects"), +// DeletionWindowInDays: pulumi.Int(10), +// }) +// if err != nil { +// return err +// } +// mybucket, err := s3.NewBucketV2(ctx, "mybucket", &s3.BucketV2Args{ +// Bucket: pulumi.String("mybucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketServerSideEncryptionConfigurationV2(ctx, "example", &s3.BucketServerSideEncryptionConfigurationV2Args{ +// Bucket: mybucket.ID(), +// Rules: s3.BucketServerSideEncryptionConfigurationV2RuleArray{ +// &s3.BucketServerSideEncryptionConfigurationV2RuleArgs{ +// ApplyServerSideEncryptionByDefault: &s3.BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs{ +// KmsMasterKeyId: mykey.Arn, +// SseAlgorithm: pulumi.String("aws:kms"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// __Using `pulumi import` to import__ S3 bucket server-side encryption configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2 example bucket-name,123456789012 +// ``` +type BucketServerSideEncryptionConfigurationV2 struct { + pulumi.CustomResourceState + + // ID (name) of the bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported. + Rules BucketServerSideEncryptionConfigurationV2RuleArrayOutput `pulumi:"rules"` +} + +// NewBucketServerSideEncryptionConfigurationV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketServerSideEncryptionConfigurationV2(ctx *pulumi.Context, + name string, args *BucketServerSideEncryptionConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketServerSideEncryptionConfigurationV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Rules == nil { + return nil, errors.New("invalid value for required argument 'Rules'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketServerSideEncryptionConfigurationV2 + err := ctx.RegisterResource("aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketServerSideEncryptionConfigurationV2 gets an existing BucketServerSideEncryptionConfigurationV2 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 GetBucketServerSideEncryptionConfigurationV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketServerSideEncryptionConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketServerSideEncryptionConfigurationV2, error) { + var resource BucketServerSideEncryptionConfigurationV2 + err := ctx.ReadResource("aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketServerSideEncryptionConfigurationV2 resources. +type bucketServerSideEncryptionConfigurationV2State struct { + // ID (name) of the bucket. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported. + Rules []BucketServerSideEncryptionConfigurationV2Rule `pulumi:"rules"` +} + +type BucketServerSideEncryptionConfigurationV2State struct { + // ID (name) of the bucket. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported. + Rules BucketServerSideEncryptionConfigurationV2RuleArrayInput +} + +func (BucketServerSideEncryptionConfigurationV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketServerSideEncryptionConfigurationV2State)(nil)).Elem() +} + +type bucketServerSideEncryptionConfigurationV2Args struct { + // ID (name) of the bucket. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported. + Rules []BucketServerSideEncryptionConfigurationV2Rule `pulumi:"rules"` +} + +// The set of arguments for constructing a BucketServerSideEncryptionConfigurationV2 resource. +type BucketServerSideEncryptionConfigurationV2Args struct { + // ID (name) of the bucket. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported. + Rules BucketServerSideEncryptionConfigurationV2RuleArrayInput +} + +func (BucketServerSideEncryptionConfigurationV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketServerSideEncryptionConfigurationV2Args)(nil)).Elem() +} + +type BucketServerSideEncryptionConfigurationV2Input interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationV2Output() BucketServerSideEncryptionConfigurationV2Output + ToBucketServerSideEncryptionConfigurationV2OutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2Output +} + +func (*BucketServerSideEncryptionConfigurationV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationV2)(nil)).Elem() +} + +func (i *BucketServerSideEncryptionConfigurationV2) ToBucketServerSideEncryptionConfigurationV2Output() BucketServerSideEncryptionConfigurationV2Output { + return i.ToBucketServerSideEncryptionConfigurationV2OutputWithContext(context.Background()) +} + +func (i *BucketServerSideEncryptionConfigurationV2) ToBucketServerSideEncryptionConfigurationV2OutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2Output) +} + +// BucketServerSideEncryptionConfigurationV2ArrayInput is an input type that accepts BucketServerSideEncryptionConfigurationV2Array and BucketServerSideEncryptionConfigurationV2ArrayOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2ArrayInput` via: +// +// BucketServerSideEncryptionConfigurationV2Array{ BucketServerSideEncryptionConfigurationV2Args{...} } +type BucketServerSideEncryptionConfigurationV2ArrayInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationV2ArrayOutput() BucketServerSideEncryptionConfigurationV2ArrayOutput + ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2ArrayOutput +} + +type BucketServerSideEncryptionConfigurationV2Array []BucketServerSideEncryptionConfigurationV2Input + +func (BucketServerSideEncryptionConfigurationV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationV2Array) ToBucketServerSideEncryptionConfigurationV2ArrayOutput() BucketServerSideEncryptionConfigurationV2ArrayOutput { + return i.ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationV2Array) ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2ArrayOutput) +} + +// BucketServerSideEncryptionConfigurationV2MapInput is an input type that accepts BucketServerSideEncryptionConfigurationV2Map and BucketServerSideEncryptionConfigurationV2MapOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2MapInput` via: +// +// BucketServerSideEncryptionConfigurationV2Map{ "key": BucketServerSideEncryptionConfigurationV2Args{...} } +type BucketServerSideEncryptionConfigurationV2MapInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationV2MapOutput() BucketServerSideEncryptionConfigurationV2MapOutput + ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2MapOutput +} + +type BucketServerSideEncryptionConfigurationV2Map map[string]BucketServerSideEncryptionConfigurationV2Input + +func (BucketServerSideEncryptionConfigurationV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationV2Map) ToBucketServerSideEncryptionConfigurationV2MapOutput() BucketServerSideEncryptionConfigurationV2MapOutput { + return i.ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationV2Map) ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2MapOutput) +} + +type BucketServerSideEncryptionConfigurationV2Output struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationV2)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationV2Output) ToBucketServerSideEncryptionConfigurationV2Output() BucketServerSideEncryptionConfigurationV2Output { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2Output) ToBucketServerSideEncryptionConfigurationV2OutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2Output { + return o +} + +// ID (name) of the bucket. +func (o BucketServerSideEncryptionConfigurationV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketServerSideEncryptionConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2) pulumi.StringPtrOutput { + return v.ExpectedBucketOwner + }).(pulumi.StringPtrOutput) +} + +// Set of server-side encryption configuration rules. See below. Currently, only a single rule is supported. +func (o BucketServerSideEncryptionConfigurationV2Output) Rules() BucketServerSideEncryptionConfigurationV2RuleArrayOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2) BucketServerSideEncryptionConfigurationV2RuleArrayOutput { + return v.Rules + }).(BucketServerSideEncryptionConfigurationV2RuleArrayOutput) +} + +type BucketServerSideEncryptionConfigurationV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationV2ArrayOutput) ToBucketServerSideEncryptionConfigurationV2ArrayOutput() BucketServerSideEncryptionConfigurationV2ArrayOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2ArrayOutput) ToBucketServerSideEncryptionConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2ArrayOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketServerSideEncryptionConfigurationV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketServerSideEncryptionConfigurationV2 { + return vs[0].([]*BucketServerSideEncryptionConfigurationV2)[vs[1].(int)] + }).(BucketServerSideEncryptionConfigurationV2Output) +} + +type BucketServerSideEncryptionConfigurationV2MapOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketServerSideEncryptionConfigurationV2)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationV2MapOutput) ToBucketServerSideEncryptionConfigurationV2MapOutput() BucketServerSideEncryptionConfigurationV2MapOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2MapOutput) ToBucketServerSideEncryptionConfigurationV2MapOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2MapOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketServerSideEncryptionConfigurationV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketServerSideEncryptionConfigurationV2 { + return vs[0].(map[string]*BucketServerSideEncryptionConfigurationV2)[vs[1].(string)] + }).(BucketServerSideEncryptionConfigurationV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2Input)(nil)).Elem(), &BucketServerSideEncryptionConfigurationV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2ArrayInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2MapInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2Map{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2Output{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketV2.go new file mode 100644 index 000000000..5b853dfc7 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketV2.go @@ -0,0 +1,892 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a S3 bucket resource. +// +// > This resource provides functionality for managing S3 general purpose buckets in an AWS Partition. To manage Amazon S3 Express directory buckets, use the `awsDirectoryBucket` resource. To manage [S3 on Outposts](https://docs.aws.amazon.com/AmazonS3/latest/dev/S3onOutposts.html), use the `s3control.Bucket` resource. +// +// > Object Lock can be enabled by using the `objectLockEnable` attribute or by using the `s3.BucketObjectLockConfigurationV2` resource. Please note, that by using the resource, Object Lock can be enabled/disabled without destroying and recreating the bucket. +// +// ## Example Usage +// +// ### Private Bucket With Tags +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-test-bucket"), +// Tags: pulumi.StringMap{ +// "Name": pulumi.String("My bucket"), +// "Environment": pulumi.String("Dev"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket using the `bucket`. For example: +// +// ```sh +// $ pulumi import aws:s3/bucketV2:BucketV2 bucket bucket-name +// ``` +type BucketV2 struct { + pulumi.CustomResourceState + + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketAccelerateConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketAccelerateConfigurationV2 resource instead + AccelerationStatus pulumi.StringOutput `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Acl pulumi.StringOutput `pulumi:"acl"` + // ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn pulumi.StringOutput `pulumi:"arn"` + // Name of the bucket. If omitted, the provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The name must not be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.DirectoryBucket` resource to manage S3 Express buckets. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. + BucketDomainName pulumi.StringOutput `pulumi:"bucketDomainName"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix pulumi.StringOutput `pulumi:"bucketPrefix"` + // The bucket region-specific domain name. The bucket domain name including the region name. Please refer to the [S3 endpoints reference](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) for format. Note: AWS CloudFront allows specifying an S3 region-specific endpoint when creating an S3 origin. This will prevent redirect issues from CloudFront to the S3 Origin URL. For more information, see the [Virtual Hosted-Style Requests for Other Regions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint) section in the AWS S3 User Guide. + BucketRegionalDomainName pulumi.StringOutput `pulumi:"bucketRegionalDomainName"` + // Rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketCorsConfigurationV2 resource instead + CorsRules BucketV2CorsRuleArrayOutput `pulumi:"corsRules"` + // Boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Grants BucketV2GrantArrayOutput `pulumi:"grants"` + // [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId pulumi.StringOutput `pulumi:"hostedZoneId"` + // Configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLifecycleConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketLifecycleConfigurationV2 resource instead + LifecycleRules BucketV2LifecycleRuleArrayOutput `pulumi:"lifecycleRules"` + // Configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLoggingV2` instead. + // + // Deprecated: Use the s3.BucketLoggingV2 resource instead + Loggings BucketV2LoggingArrayOutput `pulumi:"loggings"` + // Configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details. + // The provider wil only perform drift detection if a configuration value is provided. + // Use the `objectLockEnabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead. + // + // Deprecated: Use the top-level parameter objectLockEnabled and the s3.BucketObjectLockConfigurationV2 resource instead + ObjectLockConfiguration BucketV2ObjectLockConfigurationOutput `pulumi:"objectLockConfiguration"` + // Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. + ObjectLockEnabled pulumi.BoolOutput `pulumi:"objectLockEnabled"` + // Valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with this provider, see the AWS IAM Policy Document Guide. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketPolicy` instead. + // + // Deprecated: Use the s3.BucketPolicy resource instead + Policy pulumi.StringOutput `pulumi:"policy"` + // AWS region this bucket resides in. + Region pulumi.StringOutput `pulumi:"region"` + // Configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketReplicationConfig` instead. + // + // Deprecated: Use the s3.BucketReplicationConfig resource instead + ReplicationConfigurations BucketV2ReplicationConfigurationArrayOutput `pulumi:"replicationConfigurations"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer. + // See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketRequestPaymentConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketRequestPaymentConfigurationV2 resource instead + RequestPayer pulumi.StringOutput `pulumi:"requestPayer"` + // Configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketServerSideEncryptionConfigurationV2 resource instead + ServerSideEncryptionConfigurations BucketV2ServerSideEncryptionConfigurationArrayOutput `pulumi:"serverSideEncryptionConfigurations"` + // Map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // The following arguments are deprecated, and will be removed in a future major version: + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead. + // + // Deprecated: Use the s3.BucketVersioningV2 resource instead + Versionings BucketV2VersioningArrayOutput `pulumi:"versionings"` + // (**Deprecated**) Domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource + WebsiteDomain pulumi.StringOutput `pulumi:"websiteDomain"` + // (**Deprecated**) Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource + WebsiteEndpoint pulumi.StringOutput `pulumi:"websiteEndpoint"` + // Configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource instead + Websites BucketV2WebsiteArrayOutput `pulumi:"websites"` +} + +// NewBucketV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketV2(ctx *pulumi.Context, + name string, args *BucketV2Args, opts ...pulumi.ResourceOption) (*BucketV2, error) { + if args == nil { + args = &BucketV2Args{} + } + + aliases := pulumi.Aliases([]pulumi.Alias{ + { + Type: pulumi.String("aws:s3/bucket:Bucket"), + }, + }) + opts = append(opts, aliases) + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketV2 + err := ctx.RegisterResource("aws:s3/bucketV2:BucketV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketV2 gets an existing BucketV2 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 GetBucketV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketV2State, opts ...pulumi.ResourceOption) (*BucketV2, error) { + var resource BucketV2 + err := ctx.ReadResource("aws:s3/bucketV2:BucketV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketV2 resources. +type bucketV2State struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketAccelerateConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketAccelerateConfigurationV2 resource instead + AccelerationStatus *string `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Acl *string `pulumi:"acl"` + // ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn *string `pulumi:"arn"` + // Name of the bucket. If omitted, the provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The name must not be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.DirectoryBucket` resource to manage S3 Express buckets. + Bucket *string `pulumi:"bucket"` + // Bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. + BucketDomainName *string `pulumi:"bucketDomainName"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix *string `pulumi:"bucketPrefix"` + // The bucket region-specific domain name. The bucket domain name including the region name. Please refer to the [S3 endpoints reference](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) for format. Note: AWS CloudFront allows specifying an S3 region-specific endpoint when creating an S3 origin. This will prevent redirect issues from CloudFront to the S3 Origin URL. For more information, see the [Virtual Hosted-Style Requests for Other Regions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint) section in the AWS S3 User Guide. + BucketRegionalDomainName *string `pulumi:"bucketRegionalDomainName"` + // Rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketCorsConfigurationV2 resource instead + CorsRules []BucketV2CorsRule `pulumi:"corsRules"` + // Boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy *bool `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Grants []BucketV2Grant `pulumi:"grants"` + // [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId *string `pulumi:"hostedZoneId"` + // Configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLifecycleConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketLifecycleConfigurationV2 resource instead + LifecycleRules []BucketV2LifecycleRule `pulumi:"lifecycleRules"` + // Configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLoggingV2` instead. + // + // Deprecated: Use the s3.BucketLoggingV2 resource instead + Loggings []BucketV2Logging `pulumi:"loggings"` + // Configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details. + // The provider wil only perform drift detection if a configuration value is provided. + // Use the `objectLockEnabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead. + // + // Deprecated: Use the top-level parameter objectLockEnabled and the s3.BucketObjectLockConfigurationV2 resource instead + ObjectLockConfiguration *BucketV2ObjectLockConfiguration `pulumi:"objectLockConfiguration"` + // Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. + ObjectLockEnabled *bool `pulumi:"objectLockEnabled"` + // Valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with this provider, see the AWS IAM Policy Document Guide. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketPolicy` instead. + // + // Deprecated: Use the s3.BucketPolicy resource instead + Policy *string `pulumi:"policy"` + // AWS region this bucket resides in. + Region *string `pulumi:"region"` + // Configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketReplicationConfig` instead. + // + // Deprecated: Use the s3.BucketReplicationConfig resource instead + ReplicationConfigurations []BucketV2ReplicationConfiguration `pulumi:"replicationConfigurations"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer. + // See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketRequestPaymentConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketRequestPaymentConfigurationV2 resource instead + RequestPayer *string `pulumi:"requestPayer"` + // Configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketServerSideEncryptionConfigurationV2 resource instead + ServerSideEncryptionConfigurations []BucketV2ServerSideEncryptionConfiguration `pulumi:"serverSideEncryptionConfigurations"` + // Map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // The following arguments are deprecated, and will be removed in a future major version: + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // Configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead. + // + // Deprecated: Use the s3.BucketVersioningV2 resource instead + Versionings []BucketV2Versioning `pulumi:"versionings"` + // (**Deprecated**) Domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource + WebsiteDomain *string `pulumi:"websiteDomain"` + // (**Deprecated**) Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource + WebsiteEndpoint *string `pulumi:"websiteEndpoint"` + // Configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource instead + Websites []BucketV2Website `pulumi:"websites"` +} + +type BucketV2State struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketAccelerateConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketAccelerateConfigurationV2 resource instead + AccelerationStatus pulumi.StringPtrInput + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Acl pulumi.StringPtrInput + // ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn pulumi.StringPtrInput + // Name of the bucket. If omitted, the provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The name must not be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.DirectoryBucket` resource to manage S3 Express buckets. + Bucket pulumi.StringPtrInput + // Bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. + BucketDomainName pulumi.StringPtrInput + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix pulumi.StringPtrInput + // The bucket region-specific domain name. The bucket domain name including the region name. Please refer to the [S3 endpoints reference](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) for format. Note: AWS CloudFront allows specifying an S3 region-specific endpoint when creating an S3 origin. This will prevent redirect issues from CloudFront to the S3 Origin URL. For more information, see the [Virtual Hosted-Style Requests for Other Regions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint) section in the AWS S3 User Guide. + BucketRegionalDomainName pulumi.StringPtrInput + // Rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketCorsConfigurationV2 resource instead + CorsRules BucketV2CorsRuleArrayInput + // Boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy pulumi.BoolPtrInput + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Grants BucketV2GrantArrayInput + // [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId pulumi.StringPtrInput + // Configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLifecycleConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketLifecycleConfigurationV2 resource instead + LifecycleRules BucketV2LifecycleRuleArrayInput + // Configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLoggingV2` instead. + // + // Deprecated: Use the s3.BucketLoggingV2 resource instead + Loggings BucketV2LoggingArrayInput + // Configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details. + // The provider wil only perform drift detection if a configuration value is provided. + // Use the `objectLockEnabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead. + // + // Deprecated: Use the top-level parameter objectLockEnabled and the s3.BucketObjectLockConfigurationV2 resource instead + ObjectLockConfiguration BucketV2ObjectLockConfigurationPtrInput + // Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. + ObjectLockEnabled pulumi.BoolPtrInput + // Valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with this provider, see the AWS IAM Policy Document Guide. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketPolicy` instead. + // + // Deprecated: Use the s3.BucketPolicy resource instead + Policy pulumi.StringPtrInput + // AWS region this bucket resides in. + Region pulumi.StringPtrInput + // Configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketReplicationConfig` instead. + // + // Deprecated: Use the s3.BucketReplicationConfig resource instead + ReplicationConfigurations BucketV2ReplicationConfigurationArrayInput + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer. + // See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketRequestPaymentConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketRequestPaymentConfigurationV2 resource instead + RequestPayer pulumi.StringPtrInput + // Configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketServerSideEncryptionConfigurationV2 resource instead + ServerSideEncryptionConfigurations BucketV2ServerSideEncryptionConfigurationArrayInput + // Map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // The following arguments are deprecated, and will be removed in a future major version: + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // Configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead. + // + // Deprecated: Use the s3.BucketVersioningV2 resource instead + Versionings BucketV2VersioningArrayInput + // (**Deprecated**) Domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource + WebsiteDomain pulumi.StringPtrInput + // (**Deprecated**) Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource + WebsiteEndpoint pulumi.StringPtrInput + // Configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource instead + Websites BucketV2WebsiteArrayInput +} + +func (BucketV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketV2State)(nil)).Elem() +} + +type bucketV2Args struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketAccelerateConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketAccelerateConfigurationV2 resource instead + AccelerationStatus *string `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Acl *string `pulumi:"acl"` + // Name of the bucket. If omitted, the provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The name must not be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.DirectoryBucket` resource to manage S3 Express buckets. + Bucket *string `pulumi:"bucket"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix *string `pulumi:"bucketPrefix"` + // Rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketCorsConfigurationV2 resource instead + CorsRules []BucketV2CorsRule `pulumi:"corsRules"` + // Boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy *bool `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Grants []BucketV2Grant `pulumi:"grants"` + // Configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLifecycleConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketLifecycleConfigurationV2 resource instead + LifecycleRules []BucketV2LifecycleRule `pulumi:"lifecycleRules"` + // Configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLoggingV2` instead. + // + // Deprecated: Use the s3.BucketLoggingV2 resource instead + Loggings []BucketV2Logging `pulumi:"loggings"` + // Configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details. + // The provider wil only perform drift detection if a configuration value is provided. + // Use the `objectLockEnabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead. + // + // Deprecated: Use the top-level parameter objectLockEnabled and the s3.BucketObjectLockConfigurationV2 resource instead + ObjectLockConfiguration *BucketV2ObjectLockConfiguration `pulumi:"objectLockConfiguration"` + // Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. + ObjectLockEnabled *bool `pulumi:"objectLockEnabled"` + // Valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with this provider, see the AWS IAM Policy Document Guide. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketPolicy` instead. + // + // Deprecated: Use the s3.BucketPolicy resource instead + Policy *string `pulumi:"policy"` + // Configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketReplicationConfig` instead. + // + // Deprecated: Use the s3.BucketReplicationConfig resource instead + ReplicationConfigurations []BucketV2ReplicationConfiguration `pulumi:"replicationConfigurations"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer. + // See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketRequestPaymentConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketRequestPaymentConfigurationV2 resource instead + RequestPayer *string `pulumi:"requestPayer"` + // Configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketServerSideEncryptionConfigurationV2 resource instead + ServerSideEncryptionConfigurations []BucketV2ServerSideEncryptionConfiguration `pulumi:"serverSideEncryptionConfigurations"` + // Map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // The following arguments are deprecated, and will be removed in a future major version: + Tags map[string]string `pulumi:"tags"` + // Configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead. + // + // Deprecated: Use the s3.BucketVersioningV2 resource instead + Versionings []BucketV2Versioning `pulumi:"versionings"` + // Configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource instead + Websites []BucketV2Website `pulumi:"websites"` +} + +// The set of arguments for constructing a BucketV2 resource. +type BucketV2Args struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketAccelerateConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketAccelerateConfigurationV2 resource instead + AccelerationStatus pulumi.StringPtrInput + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Acl pulumi.StringPtrInput + // Name of the bucket. If omitted, the provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The name must not be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.DirectoryBucket` resource to manage S3 Express buckets. + Bucket pulumi.StringPtrInput + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix pulumi.StringPtrInput + // Rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketCorsConfigurationV2 resource instead + CorsRules BucketV2CorsRuleArrayInput + // Boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy pulumi.BoolPtrInput + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. + // + // Deprecated: Use the s3.BucketAclV2 resource instead + Grants BucketV2GrantArrayInput + // Configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLifecycleConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketLifecycleConfigurationV2 resource instead + LifecycleRules BucketV2LifecycleRuleArrayInput + // Configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketLoggingV2` instead. + // + // Deprecated: Use the s3.BucketLoggingV2 resource instead + Loggings BucketV2LoggingArrayInput + // Configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details. + // The provider wil only perform drift detection if a configuration value is provided. + // Use the `objectLockEnabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead. + // + // Deprecated: Use the top-level parameter objectLockEnabled and the s3.BucketObjectLockConfigurationV2 resource instead + ObjectLockConfiguration BucketV2ObjectLockConfigurationPtrInput + // Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. + ObjectLockEnabled pulumi.BoolPtrInput + // Valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with this provider, see the AWS IAM Policy Document Guide. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketPolicy` instead. + // + // Deprecated: Use the s3.BucketPolicy resource instead + Policy pulumi.StringPtrInput + // Configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketReplicationConfig` instead. + // + // Deprecated: Use the s3.BucketReplicationConfig resource instead + ReplicationConfigurations BucketV2ReplicationConfigurationArrayInput + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer. + // See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketRequestPaymentConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketRequestPaymentConfigurationV2 resource instead + RequestPayer pulumi.StringPtrInput + // Configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details. + // The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketServerSideEncryptionConfigurationV2 resource instead + ServerSideEncryptionConfigurations BucketV2ServerSideEncryptionConfigurationArrayInput + // Map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + // + // The following arguments are deprecated, and will be removed in a future major version: + Tags pulumi.StringMapInput + // Configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead. + // + // Deprecated: Use the s3.BucketVersioningV2 resource instead + Versionings BucketV2VersioningArrayInput + // Configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. The provider will only perform drift detection if a configuration value is provided. + // Use the resource `s3.BucketWebsiteConfigurationV2` instead. + // + // Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource instead + Websites BucketV2WebsiteArrayInput +} + +func (BucketV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketV2Args)(nil)).Elem() +} + +type BucketV2Input interface { + pulumi.Input + + ToBucketV2Output() BucketV2Output + ToBucketV2OutputWithContext(ctx context.Context) BucketV2Output +} + +func (*BucketV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketV2)(nil)).Elem() +} + +func (i *BucketV2) ToBucketV2Output() BucketV2Output { + return i.ToBucketV2OutputWithContext(context.Background()) +} + +func (i *BucketV2) ToBucketV2OutputWithContext(ctx context.Context) BucketV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2Output) +} + +// BucketV2ArrayInput is an input type that accepts BucketV2Array and BucketV2ArrayOutput values. +// You can construct a concrete instance of `BucketV2ArrayInput` via: +// +// BucketV2Array{ BucketV2Args{...} } +type BucketV2ArrayInput interface { + pulumi.Input + + ToBucketV2ArrayOutput() BucketV2ArrayOutput + ToBucketV2ArrayOutputWithContext(context.Context) BucketV2ArrayOutput +} + +type BucketV2Array []BucketV2Input + +func (BucketV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketV2)(nil)).Elem() +} + +func (i BucketV2Array) ToBucketV2ArrayOutput() BucketV2ArrayOutput { + return i.ToBucketV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketV2Array) ToBucketV2ArrayOutputWithContext(ctx context.Context) BucketV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ArrayOutput) +} + +// BucketV2MapInput is an input type that accepts BucketV2Map and BucketV2MapOutput values. +// You can construct a concrete instance of `BucketV2MapInput` via: +// +// BucketV2Map{ "key": BucketV2Args{...} } +type BucketV2MapInput interface { + pulumi.Input + + ToBucketV2MapOutput() BucketV2MapOutput + ToBucketV2MapOutputWithContext(context.Context) BucketV2MapOutput +} + +type BucketV2Map map[string]BucketV2Input + +func (BucketV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketV2)(nil)).Elem() +} + +func (i BucketV2Map) ToBucketV2MapOutput() BucketV2MapOutput { + return i.ToBucketV2MapOutputWithContext(context.Background()) +} + +func (i BucketV2Map) ToBucketV2MapOutputWithContext(ctx context.Context) BucketV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2MapOutput) +} + +type BucketV2Output struct{ *pulumi.OutputState } + +func (BucketV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketV2)(nil)).Elem() +} + +func (o BucketV2Output) ToBucketV2Output() BucketV2Output { + return o +} + +func (o BucketV2Output) ToBucketV2OutputWithContext(ctx context.Context) BucketV2Output { + return o +} + +// Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. Cannot be used in `cn-north-1` or `us-gov-west-1`. This provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketAccelerateConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketAccelerateConfigurationV2 resource instead +func (o BucketV2Output) AccelerationStatus() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.AccelerationStatus }).(pulumi.StringOutput) +} + +// The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. +// +// Deprecated: Use the s3.BucketAclV2 resource instead +func (o BucketV2Output) Acl() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.Acl }).(pulumi.StringOutput) +} + +// ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. +func (o BucketV2Output) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Name of the bucket. If omitted, the provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). The name must not be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.DirectoryBucket` resource to manage S3 Express buckets. +func (o BucketV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. +func (o BucketV2Output) BucketDomainName() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.BucketDomainName }).(pulumi.StringOutput) +} + +// Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). +func (o BucketV2Output) BucketPrefix() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.BucketPrefix }).(pulumi.StringOutput) +} + +// The bucket region-specific domain name. The bucket domain name including the region name. Please refer to the [S3 endpoints reference](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) for format. Note: AWS CloudFront allows specifying an S3 region-specific endpoint when creating an S3 origin. This will prevent redirect issues from CloudFront to the S3 Origin URL. For more information, see the [Virtual Hosted-Style Requests for Other Regions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint) section in the AWS S3 User Guide. +func (o BucketV2Output) BucketRegionalDomainName() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.BucketRegionalDomainName }).(pulumi.StringOutput) +} + +// Rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html). See CORS rule below for details. This provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketCorsConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketCorsConfigurationV2 resource instead +func (o BucketV2Output) CorsRules() BucketV2CorsRuleArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2CorsRuleArrayOutput { return v.CorsRules }).(BucketV2CorsRuleArrayOutput) +} + +// Boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. +func (o BucketV2Output) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketV2) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl). See Grant below for details. Conflicts with `acl`. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketAclV2` instead. +// +// Deprecated: Use the s3.BucketAclV2 resource instead +func (o BucketV2Output) Grants() BucketV2GrantArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2GrantArrayOutput { return v.Grants }).(BucketV2GrantArrayOutput) +} + +// [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. +func (o BucketV2Output) HostedZoneId() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.HostedZoneId }).(pulumi.StringOutput) +} + +// Configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html). See Lifecycle Rule below for details. The provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketLifecycleConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketLifecycleConfigurationV2 resource instead +func (o BucketV2Output) LifecycleRules() BucketV2LifecycleRuleArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2LifecycleRuleArrayOutput { return v.LifecycleRules }).(BucketV2LifecycleRuleArrayOutput) +} + +// Configuration of [S3 bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) parameters. See Logging below for details. The provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketLoggingV2` instead. +// +// Deprecated: Use the s3.BucketLoggingV2 resource instead +func (o BucketV2Output) Loggings() BucketV2LoggingArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2LoggingArrayOutput { return v.Loggings }).(BucketV2LoggingArrayOutput) +} + +// Configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html). See Object Lock Configuration below for details. +// The provider wil only perform drift detection if a configuration value is provided. +// Use the `objectLockEnabled` parameter and the resource `s3.BucketObjectLockConfigurationV2` instead. +// +// Deprecated: Use the top-level parameter objectLockEnabled and the s3.BucketObjectLockConfigurationV2 resource instead +func (o BucketV2Output) ObjectLockConfiguration() BucketV2ObjectLockConfigurationOutput { + return o.ApplyT(func(v *BucketV2) BucketV2ObjectLockConfigurationOutput { return v.ObjectLockConfiguration }).(BucketV2ObjectLockConfigurationOutput) +} + +// Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. +func (o BucketV2Output) ObjectLockEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v *BucketV2) pulumi.BoolOutput { return v.ObjectLockEnabled }).(pulumi.BoolOutput) +} + +// Valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing. In this case, please make sure you use the verbose/specific version of the policy. For more information about building AWS IAM policy documents with this provider, see the AWS IAM Policy Document Guide. +// The provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketPolicy` instead. +// +// Deprecated: Use the s3.BucketPolicy resource instead +func (o BucketV2Output) Policy() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.Policy }).(pulumi.StringOutput) +} + +// AWS region this bucket resides in. +func (o BucketV2Output) Region() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.Region }).(pulumi.StringOutput) +} + +// Configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). See Replication Configuration below for details. The provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketReplicationConfig` instead. +// +// Deprecated: Use the s3.BucketReplicationConfig resource instead +func (o BucketV2Output) ReplicationConfigurations() BucketV2ReplicationConfigurationArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2ReplicationConfigurationArrayOutput { return v.ReplicationConfigurations }).(BucketV2ReplicationConfigurationArrayOutput) +} + +// Specifies who should bear the cost of Amazon S3 data transfer. +// Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur the costs of any data transfer. +// See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) developer guide for more information. +// The provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketRequestPaymentConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketRequestPaymentConfigurationV2 resource instead +func (o BucketV2Output) RequestPayer() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.RequestPayer }).(pulumi.StringOutput) +} + +// Configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html). See Server Side Encryption Configuration below for details. +// The provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketServerSideEncryptionConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketServerSideEncryptionConfigurationV2 resource instead +func (o BucketV2Output) ServerSideEncryptionConfigurations() BucketV2ServerSideEncryptionConfigurationArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2ServerSideEncryptionConfigurationArrayOutput { + return v.ServerSideEncryptionConfigurations + }).(BucketV2ServerSideEncryptionConfigurationArrayOutput) +} + +// Map of tags to assign to the bucket. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +// +// The following arguments are deprecated, and will be removed in a future major version: +func (o BucketV2Output) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o BucketV2Output) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// Configuration of the [S3 bucket versioning state](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html). See Versioning below for details. The provider will only perform drift detection if a configuration value is provided. Use the resource `s3.BucketVersioningV2` instead. +// +// Deprecated: Use the s3.BucketVersioningV2 resource instead +func (o BucketV2Output) Versionings() BucketV2VersioningArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2VersioningArrayOutput { return v.Versionings }).(BucketV2VersioningArrayOutput) +} + +// (**Deprecated**) Domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. Use the resource `s3.BucketWebsiteConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource +func (o BucketV2Output) WebsiteDomain() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.WebsiteDomain }).(pulumi.StringOutput) +} + +// (**Deprecated**) Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. Use the resource `s3.BucketWebsiteConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource +func (o BucketV2Output) WebsiteEndpoint() pulumi.StringOutput { + return o.ApplyT(func(v *BucketV2) pulumi.StringOutput { return v.WebsiteEndpoint }).(pulumi.StringOutput) +} + +// Configuration of the [S3 bucket website](https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteHosting.html). See Website below for details. The provider will only perform drift detection if a configuration value is provided. +// Use the resource `s3.BucketWebsiteConfigurationV2` instead. +// +// Deprecated: Use the s3.BucketWebsiteConfigurationV2 resource instead +func (o BucketV2Output) Websites() BucketV2WebsiteArrayOutput { + return o.ApplyT(func(v *BucketV2) BucketV2WebsiteArrayOutput { return v.Websites }).(BucketV2WebsiteArrayOutput) +} + +type BucketV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketV2)(nil)).Elem() +} + +func (o BucketV2ArrayOutput) ToBucketV2ArrayOutput() BucketV2ArrayOutput { + return o +} + +func (o BucketV2ArrayOutput) ToBucketV2ArrayOutputWithContext(ctx context.Context) BucketV2ArrayOutput { + return o +} + +func (o BucketV2ArrayOutput) Index(i pulumi.IntInput) BucketV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketV2 { + return vs[0].([]*BucketV2)[vs[1].(int)] + }).(BucketV2Output) +} + +type BucketV2MapOutput struct{ *pulumi.OutputState } + +func (BucketV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketV2)(nil)).Elem() +} + +func (o BucketV2MapOutput) ToBucketV2MapOutput() BucketV2MapOutput { + return o +} + +func (o BucketV2MapOutput) ToBucketV2MapOutputWithContext(ctx context.Context) BucketV2MapOutput { + return o +} + +func (o BucketV2MapOutput) MapIndex(k pulumi.StringInput) BucketV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketV2 { + return vs[0].(map[string]*BucketV2)[vs[1].(string)] + }).(BucketV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2Input)(nil)).Elem(), &BucketV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ArrayInput)(nil)).Elem(), BucketV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2MapInput)(nil)).Elem(), BucketV2Map{}) + pulumi.RegisterOutputType(BucketV2Output{}) + pulumi.RegisterOutputType(BucketV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketVersioningV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketVersioningV2.go new file mode 100644 index 000000000..46b53fa92 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketVersioningV2.go @@ -0,0 +1,429 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource for controlling versioning on an S3 bucket. +// Deleting this resource will either suspend versioning on the associated S3 bucket or +// simply remove the resource from state if the associated S3 bucket is unversioned. +// +// For more information, see [How S3 versioning works](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html). +// +// > **NOTE:** If you are enabling versioning on the bucket for the first time, AWS recommends that you wait for 15 minutes after enabling versioning before issuing write operations (PUT or DELETE) on objects in the bucket. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### With Versioning Enabled +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: example.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketVersioningV2(ctx, "versioning_example", &s3.BucketVersioningV2Args{ +// Bucket: example.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### With Versioning Disabled +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("example-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ +// Bucket: example.ID(), +// Acl: pulumi.String("private"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketVersioningV2(ctx, "versioning_example", &s3.BucketVersioningV2Args{ +// Bucket: example.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Disabled"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Object Dependency On Versioning +// +// When you create an object whose `versionId` you need and an `s3.BucketVersioningV2` resource in the same configuration, you are more likely to have success by ensuring the `s3Object` depends either implicitly (see below) or explicitly (i.e., using `dependsOn = [aws_s3_bucket_versioning.example]`) on the `s3.BucketVersioningV2` resource. +// +// > **NOTE:** For critical and/or production S3 objects, do not create a bucket, enable versioning, and create an object in the bucket within the same configuration. Doing so will not allow the AWS-recommended 15 minutes between enabling versioning and writing to the bucket. +// +// This example shows the `aws_s3_object.example` depending implicitly on the versioning resource through the reference to `aws_s3_bucket_versioning.example.bucket` to define `bucket`: +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ +// Bucket: pulumi.String("yotto"), +// }) +// if err != nil { +// return err +// } +// exampleBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "example", &s3.BucketVersioningV2Args{ +// Bucket: example.ID(), +// VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ +// Status: pulumi.String("Enabled"), +// }, +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewBucketObjectv2(ctx, "example", &s3.BucketObjectv2Args{ +// Bucket: exampleBucketVersioningV2.ID(), +// Key: pulumi.String("droeloe"), +// Source: pulumi.NewFileAsset("example.txt"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// __Using `pulumi import` to import__ S3 bucket versioning using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketVersioningV2:BucketVersioningV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketVersioningV2:BucketVersioningV2 example bucket-name,123456789012 +// ``` +type BucketVersioningV2 struct { + pulumi.CustomResourceState + + // Name of the S3 bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. + Mfa pulumi.StringPtrOutput `pulumi:"mfa"` + // Configuration block for the versioning parameters. See below. + VersioningConfiguration BucketVersioningV2VersioningConfigurationOutput `pulumi:"versioningConfiguration"` +} + +// NewBucketVersioningV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketVersioningV2(ctx *pulumi.Context, + name string, args *BucketVersioningV2Args, opts ...pulumi.ResourceOption) (*BucketVersioningV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.VersioningConfiguration == nil { + return nil, errors.New("invalid value for required argument 'VersioningConfiguration'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketVersioningV2 + err := ctx.RegisterResource("aws:s3/bucketVersioningV2:BucketVersioningV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketVersioningV2 gets an existing BucketVersioningV2 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 GetBucketVersioningV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketVersioningV2State, opts ...pulumi.ResourceOption) (*BucketVersioningV2, error) { + var resource BucketVersioningV2 + err := ctx.ReadResource("aws:s3/bucketVersioningV2:BucketVersioningV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketVersioningV2 resources. +type bucketVersioningV2State struct { + // Name of the S3 bucket. + Bucket *string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. + Mfa *string `pulumi:"mfa"` + // Configuration block for the versioning parameters. See below. + VersioningConfiguration *BucketVersioningV2VersioningConfiguration `pulumi:"versioningConfiguration"` +} + +type BucketVersioningV2State struct { + // Name of the S3 bucket. + Bucket pulumi.StringPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. + Mfa pulumi.StringPtrInput + // Configuration block for the versioning parameters. See below. + VersioningConfiguration BucketVersioningV2VersioningConfigurationPtrInput +} + +func (BucketVersioningV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketVersioningV2State)(nil)).Elem() +} + +type bucketVersioningV2Args struct { + // Name of the S3 bucket. + Bucket string `pulumi:"bucket"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. + Mfa *string `pulumi:"mfa"` + // Configuration block for the versioning parameters. See below. + VersioningConfiguration BucketVersioningV2VersioningConfiguration `pulumi:"versioningConfiguration"` +} + +// The set of arguments for constructing a BucketVersioningV2 resource. +type BucketVersioningV2Args struct { + // Name of the S3 bucket. + Bucket pulumi.StringInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. + Mfa pulumi.StringPtrInput + // Configuration block for the versioning parameters. See below. + VersioningConfiguration BucketVersioningV2VersioningConfigurationInput +} + +func (BucketVersioningV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketVersioningV2Args)(nil)).Elem() +} + +type BucketVersioningV2Input interface { + pulumi.Input + + ToBucketVersioningV2Output() BucketVersioningV2Output + ToBucketVersioningV2OutputWithContext(ctx context.Context) BucketVersioningV2Output +} + +func (*BucketVersioningV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketVersioningV2)(nil)).Elem() +} + +func (i *BucketVersioningV2) ToBucketVersioningV2Output() BucketVersioningV2Output { + return i.ToBucketVersioningV2OutputWithContext(context.Background()) +} + +func (i *BucketVersioningV2) ToBucketVersioningV2OutputWithContext(ctx context.Context) BucketVersioningV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2Output) +} + +// BucketVersioningV2ArrayInput is an input type that accepts BucketVersioningV2Array and BucketVersioningV2ArrayOutput values. +// You can construct a concrete instance of `BucketVersioningV2ArrayInput` via: +// +// BucketVersioningV2Array{ BucketVersioningV2Args{...} } +type BucketVersioningV2ArrayInput interface { + pulumi.Input + + ToBucketVersioningV2ArrayOutput() BucketVersioningV2ArrayOutput + ToBucketVersioningV2ArrayOutputWithContext(context.Context) BucketVersioningV2ArrayOutput +} + +type BucketVersioningV2Array []BucketVersioningV2Input + +func (BucketVersioningV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketVersioningV2)(nil)).Elem() +} + +func (i BucketVersioningV2Array) ToBucketVersioningV2ArrayOutput() BucketVersioningV2ArrayOutput { + return i.ToBucketVersioningV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketVersioningV2Array) ToBucketVersioningV2ArrayOutputWithContext(ctx context.Context) BucketVersioningV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2ArrayOutput) +} + +// BucketVersioningV2MapInput is an input type that accepts BucketVersioningV2Map and BucketVersioningV2MapOutput values. +// You can construct a concrete instance of `BucketVersioningV2MapInput` via: +// +// BucketVersioningV2Map{ "key": BucketVersioningV2Args{...} } +type BucketVersioningV2MapInput interface { + pulumi.Input + + ToBucketVersioningV2MapOutput() BucketVersioningV2MapOutput + ToBucketVersioningV2MapOutputWithContext(context.Context) BucketVersioningV2MapOutput +} + +type BucketVersioningV2Map map[string]BucketVersioningV2Input + +func (BucketVersioningV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketVersioningV2)(nil)).Elem() +} + +func (i BucketVersioningV2Map) ToBucketVersioningV2MapOutput() BucketVersioningV2MapOutput { + return i.ToBucketVersioningV2MapOutputWithContext(context.Background()) +} + +func (i BucketVersioningV2Map) ToBucketVersioningV2MapOutputWithContext(ctx context.Context) BucketVersioningV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2MapOutput) +} + +type BucketVersioningV2Output struct{ *pulumi.OutputState } + +func (BucketVersioningV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketVersioningV2)(nil)).Elem() +} + +func (o BucketVersioningV2Output) ToBucketVersioningV2Output() BucketVersioningV2Output { + return o +} + +func (o BucketVersioningV2Output) ToBucketVersioningV2OutputWithContext(ctx context.Context) BucketVersioningV2Output { + return o +} + +// Name of the S3 bucket. +func (o BucketVersioningV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketVersioningV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketVersioningV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketVersioningV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. +func (o BucketVersioningV2Output) Mfa() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketVersioningV2) pulumi.StringPtrOutput { return v.Mfa }).(pulumi.StringPtrOutput) +} + +// Configuration block for the versioning parameters. See below. +func (o BucketVersioningV2Output) VersioningConfiguration() BucketVersioningV2VersioningConfigurationOutput { + return o.ApplyT(func(v *BucketVersioningV2) BucketVersioningV2VersioningConfigurationOutput { + return v.VersioningConfiguration + }).(BucketVersioningV2VersioningConfigurationOutput) +} + +type BucketVersioningV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketVersioningV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketVersioningV2)(nil)).Elem() +} + +func (o BucketVersioningV2ArrayOutput) ToBucketVersioningV2ArrayOutput() BucketVersioningV2ArrayOutput { + return o +} + +func (o BucketVersioningV2ArrayOutput) ToBucketVersioningV2ArrayOutputWithContext(ctx context.Context) BucketVersioningV2ArrayOutput { + return o +} + +func (o BucketVersioningV2ArrayOutput) Index(i pulumi.IntInput) BucketVersioningV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketVersioningV2 { + return vs[0].([]*BucketVersioningV2)[vs[1].(int)] + }).(BucketVersioningV2Output) +} + +type BucketVersioningV2MapOutput struct{ *pulumi.OutputState } + +func (BucketVersioningV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketVersioningV2)(nil)).Elem() +} + +func (o BucketVersioningV2MapOutput) ToBucketVersioningV2MapOutput() BucketVersioningV2MapOutput { + return o +} + +func (o BucketVersioningV2MapOutput) ToBucketVersioningV2MapOutputWithContext(ctx context.Context) BucketVersioningV2MapOutput { + return o +} + +func (o BucketVersioningV2MapOutput) MapIndex(k pulumi.StringInput) BucketVersioningV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketVersioningV2 { + return vs[0].(map[string]*BucketVersioningV2)[vs[1].(string)] + }).(BucketVersioningV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2Input)(nil)).Elem(), &BucketVersioningV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2ArrayInput)(nil)).Elem(), BucketVersioningV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2MapInput)(nil)).Elem(), BucketVersioningV2Map{}) + pulumi.RegisterOutputType(BucketVersioningV2Output{}) + pulumi.RegisterOutputType(BucketVersioningV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketVersioningV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketWebsiteConfigurationV2.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketWebsiteConfigurationV2.go new file mode 100644 index 000000000..3b4e13248 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/bucketWebsiteConfigurationV2.go @@ -0,0 +1,451 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an S3 bucket website configuration resource. For more information, see [Hosting Websites on S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html). +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### With `routingRule` configured +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketWebsiteConfigurationV2(ctx, "example", &s3.BucketWebsiteConfigurationV2Args{ +// Bucket: pulumi.Any(exampleAwsS3Bucket.Id), +// IndexDocument: &s3.BucketWebsiteConfigurationV2IndexDocumentArgs{ +// Suffix: pulumi.String("index.html"), +// }, +// ErrorDocument: &s3.BucketWebsiteConfigurationV2ErrorDocumentArgs{ +// Key: pulumi.String("error.html"), +// }, +// RoutingRules: s3.BucketWebsiteConfigurationV2RoutingRuleArray{ +// &s3.BucketWebsiteConfigurationV2RoutingRuleArgs{ +// Condition: &s3.BucketWebsiteConfigurationV2RoutingRuleConditionArgs{ +// KeyPrefixEquals: pulumi.String("docs/"), +// }, +// Redirect: &s3.BucketWebsiteConfigurationV2RoutingRuleRedirectArgs{ +// ReplaceKeyPrefixWith: pulumi.String("documents/"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### With `routingRules` configured +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewBucketWebsiteConfigurationV2(ctx, "example", &s3.BucketWebsiteConfigurationV2Args{ +// Bucket: pulumi.Any(exampleAwsS3Bucket.Id), +// IndexDocument: &s3.BucketWebsiteConfigurationV2IndexDocumentArgs{ +// Suffix: pulumi.String("index.html"), +// }, +// ErrorDocument: &s3.BucketWebsiteConfigurationV2ErrorDocumentArgs{ +// Key: pulumi.String("error.html"), +// }, +// RoutingRuleDetails: pulumi.String(`[{ +// "Condition": { +// "KeyPrefixEquals": "docs/" +// }, +// "Redirect": { +// "ReplaceKeyPrefixWith": "" +// } +// }] +// +// `), +// +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// __Using `pulumi import` to import__ S3 bucket website configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: +// +// If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: +// +// ```sh +// $ pulumi import aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2 example bucket-name +// ``` +// If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): +// +// ```sh +// $ pulumi import aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2 example bucket-name,123456789012 +// ``` +type BucketWebsiteConfigurationV2 struct { + pulumi.CustomResourceState + + // Name of the bucket. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Name of the error document for the website. See below. + ErrorDocument BucketWebsiteConfigurationV2ErrorDocumentPtrOutput `pulumi:"errorDocument"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Name of the index document for the website. See below. + IndexDocument BucketWebsiteConfigurationV2IndexDocumentPtrOutput `pulumi:"indexDocument"` + // Redirect behavior for every request to this bucket's website endpoint. See below. Conflicts with `errorDocument`, `indexDocument`, and `routingRule`. + RedirectAllRequestsTo BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput `pulumi:"redirectAllRequestsTo"` + // JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. Use this parameter when your routing rules contain empty String values (`""`) as seen in the example above. + RoutingRuleDetails pulumi.StringOutput `pulumi:"routingRuleDetails"` + // List of rules that define when a redirect is applied and the redirect behavior. See below. + RoutingRules BucketWebsiteConfigurationV2RoutingRuleArrayOutput `pulumi:"routingRules"` + // Domain of the website endpoint. This is used to create Route 53 alias records. + WebsiteDomain pulumi.StringOutput `pulumi:"websiteDomain"` + // Website endpoint. + WebsiteEndpoint pulumi.StringOutput `pulumi:"websiteEndpoint"` +} + +// NewBucketWebsiteConfigurationV2 registers a new resource with the given unique name, arguments, and options. +func NewBucketWebsiteConfigurationV2(ctx *pulumi.Context, + name string, args *BucketWebsiteConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketWebsiteConfigurationV2, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource BucketWebsiteConfigurationV2 + err := ctx.RegisterResource("aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetBucketWebsiteConfigurationV2 gets an existing BucketWebsiteConfigurationV2 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 GetBucketWebsiteConfigurationV2(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *BucketWebsiteConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketWebsiteConfigurationV2, error) { + var resource BucketWebsiteConfigurationV2 + err := ctx.ReadResource("aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering BucketWebsiteConfigurationV2 resources. +type bucketWebsiteConfigurationV2State struct { + // Name of the bucket. + Bucket *string `pulumi:"bucket"` + // Name of the error document for the website. See below. + ErrorDocument *BucketWebsiteConfigurationV2ErrorDocument `pulumi:"errorDocument"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Name of the index document for the website. See below. + IndexDocument *BucketWebsiteConfigurationV2IndexDocument `pulumi:"indexDocument"` + // Redirect behavior for every request to this bucket's website endpoint. See below. Conflicts with `errorDocument`, `indexDocument`, and `routingRule`. + RedirectAllRequestsTo *BucketWebsiteConfigurationV2RedirectAllRequestsTo `pulumi:"redirectAllRequestsTo"` + // JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. Use this parameter when your routing rules contain empty String values (`""`) as seen in the example above. + RoutingRuleDetails *string `pulumi:"routingRuleDetails"` + // List of rules that define when a redirect is applied and the redirect behavior. See below. + RoutingRules []BucketWebsiteConfigurationV2RoutingRule `pulumi:"routingRules"` + // Domain of the website endpoint. This is used to create Route 53 alias records. + WebsiteDomain *string `pulumi:"websiteDomain"` + // Website endpoint. + WebsiteEndpoint *string `pulumi:"websiteEndpoint"` +} + +type BucketWebsiteConfigurationV2State struct { + // Name of the bucket. + Bucket pulumi.StringPtrInput + // Name of the error document for the website. See below. + ErrorDocument BucketWebsiteConfigurationV2ErrorDocumentPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Name of the index document for the website. See below. + IndexDocument BucketWebsiteConfigurationV2IndexDocumentPtrInput + // Redirect behavior for every request to this bucket's website endpoint. See below. Conflicts with `errorDocument`, `indexDocument`, and `routingRule`. + RedirectAllRequestsTo BucketWebsiteConfigurationV2RedirectAllRequestsToPtrInput + // JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. Use this parameter when your routing rules contain empty String values (`""`) as seen in the example above. + RoutingRuleDetails pulumi.StringPtrInput + // List of rules that define when a redirect is applied and the redirect behavior. See below. + RoutingRules BucketWebsiteConfigurationV2RoutingRuleArrayInput + // Domain of the website endpoint. This is used to create Route 53 alias records. + WebsiteDomain pulumi.StringPtrInput + // Website endpoint. + WebsiteEndpoint pulumi.StringPtrInput +} + +func (BucketWebsiteConfigurationV2State) ElementType() reflect.Type { + return reflect.TypeOf((*bucketWebsiteConfigurationV2State)(nil)).Elem() +} + +type bucketWebsiteConfigurationV2Args struct { + // Name of the bucket. + Bucket string `pulumi:"bucket"` + // Name of the error document for the website. See below. + ErrorDocument *BucketWebsiteConfigurationV2ErrorDocument `pulumi:"errorDocument"` + // Account ID of the expected bucket owner. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Name of the index document for the website. See below. + IndexDocument *BucketWebsiteConfigurationV2IndexDocument `pulumi:"indexDocument"` + // Redirect behavior for every request to this bucket's website endpoint. See below. Conflicts with `errorDocument`, `indexDocument`, and `routingRule`. + RedirectAllRequestsTo *BucketWebsiteConfigurationV2RedirectAllRequestsTo `pulumi:"redirectAllRequestsTo"` + // JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. Use this parameter when your routing rules contain empty String values (`""`) as seen in the example above. + RoutingRuleDetails *string `pulumi:"routingRuleDetails"` + // List of rules that define when a redirect is applied and the redirect behavior. See below. + RoutingRules []BucketWebsiteConfigurationV2RoutingRule `pulumi:"routingRules"` +} + +// The set of arguments for constructing a BucketWebsiteConfigurationV2 resource. +type BucketWebsiteConfigurationV2Args struct { + // Name of the bucket. + Bucket pulumi.StringInput + // Name of the error document for the website. See below. + ErrorDocument BucketWebsiteConfigurationV2ErrorDocumentPtrInput + // Account ID of the expected bucket owner. + ExpectedBucketOwner pulumi.StringPtrInput + // Name of the index document for the website. See below. + IndexDocument BucketWebsiteConfigurationV2IndexDocumentPtrInput + // Redirect behavior for every request to this bucket's website endpoint. See below. Conflicts with `errorDocument`, `indexDocument`, and `routingRule`. + RedirectAllRequestsTo BucketWebsiteConfigurationV2RedirectAllRequestsToPtrInput + // JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. Use this parameter when your routing rules contain empty String values (`""`) as seen in the example above. + RoutingRuleDetails pulumi.StringPtrInput + // List of rules that define when a redirect is applied and the redirect behavior. See below. + RoutingRules BucketWebsiteConfigurationV2RoutingRuleArrayInput +} + +func (BucketWebsiteConfigurationV2Args) ElementType() reflect.Type { + return reflect.TypeOf((*bucketWebsiteConfigurationV2Args)(nil)).Elem() +} + +type BucketWebsiteConfigurationV2Input interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2Output() BucketWebsiteConfigurationV2Output + ToBucketWebsiteConfigurationV2OutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2Output +} + +func (*BucketWebsiteConfigurationV2) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2)(nil)).Elem() +} + +func (i *BucketWebsiteConfigurationV2) ToBucketWebsiteConfigurationV2Output() BucketWebsiteConfigurationV2Output { + return i.ToBucketWebsiteConfigurationV2OutputWithContext(context.Background()) +} + +func (i *BucketWebsiteConfigurationV2) ToBucketWebsiteConfigurationV2OutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2Output { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2Output) +} + +// BucketWebsiteConfigurationV2ArrayInput is an input type that accepts BucketWebsiteConfigurationV2Array and BucketWebsiteConfigurationV2ArrayOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2ArrayInput` via: +// +// BucketWebsiteConfigurationV2Array{ BucketWebsiteConfigurationV2Args{...} } +type BucketWebsiteConfigurationV2ArrayInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2ArrayOutput() BucketWebsiteConfigurationV2ArrayOutput + ToBucketWebsiteConfigurationV2ArrayOutputWithContext(context.Context) BucketWebsiteConfigurationV2ArrayOutput +} + +type BucketWebsiteConfigurationV2Array []BucketWebsiteConfigurationV2Input + +func (BucketWebsiteConfigurationV2Array) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketWebsiteConfigurationV2)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2Array) ToBucketWebsiteConfigurationV2ArrayOutput() BucketWebsiteConfigurationV2ArrayOutput { + return i.ToBucketWebsiteConfigurationV2ArrayOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2Array) ToBucketWebsiteConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2ArrayOutput) +} + +// BucketWebsiteConfigurationV2MapInput is an input type that accepts BucketWebsiteConfigurationV2Map and BucketWebsiteConfigurationV2MapOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2MapInput` via: +// +// BucketWebsiteConfigurationV2Map{ "key": BucketWebsiteConfigurationV2Args{...} } +type BucketWebsiteConfigurationV2MapInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2MapOutput() BucketWebsiteConfigurationV2MapOutput + ToBucketWebsiteConfigurationV2MapOutputWithContext(context.Context) BucketWebsiteConfigurationV2MapOutput +} + +type BucketWebsiteConfigurationV2Map map[string]BucketWebsiteConfigurationV2Input + +func (BucketWebsiteConfigurationV2Map) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketWebsiteConfigurationV2)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2Map) ToBucketWebsiteConfigurationV2MapOutput() BucketWebsiteConfigurationV2MapOutput { + return i.ToBucketWebsiteConfigurationV2MapOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2Map) ToBucketWebsiteConfigurationV2MapOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2MapOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2MapOutput) +} + +type BucketWebsiteConfigurationV2Output struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2Output) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2Output) ToBucketWebsiteConfigurationV2Output() BucketWebsiteConfigurationV2Output { + return o +} + +func (o BucketWebsiteConfigurationV2Output) ToBucketWebsiteConfigurationV2OutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2Output { + return o +} + +// Name of the bucket. +func (o BucketWebsiteConfigurationV2Output) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Name of the error document for the website. See below. +func (o BucketWebsiteConfigurationV2Output) ErrorDocument() BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return v.ErrorDocument + }).(BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) +} + +// Account ID of the expected bucket owner. +func (o BucketWebsiteConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// Name of the index document for the website. See below. +func (o BucketWebsiteConfigurationV2Output) IndexDocument() BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return v.IndexDocument + }).(BucketWebsiteConfigurationV2IndexDocumentPtrOutput) +} + +// Redirect behavior for every request to this bucket's website endpoint. See below. Conflicts with `errorDocument`, `indexDocument`, and `routingRule`. +func (o BucketWebsiteConfigurationV2Output) RedirectAllRequestsTo() BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return v.RedirectAllRequestsTo + }).(BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) +} + +// JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) +// describing redirect behavior and when redirects are applied. Use this parameter when your routing rules contain empty String values (`""`) as seen in the example above. +func (o BucketWebsiteConfigurationV2Output) RoutingRuleDetails() pulumi.StringOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) pulumi.StringOutput { return v.RoutingRuleDetails }).(pulumi.StringOutput) +} + +// List of rules that define when a redirect is applied and the redirect behavior. See below. +func (o BucketWebsiteConfigurationV2Output) RoutingRules() BucketWebsiteConfigurationV2RoutingRuleArrayOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) BucketWebsiteConfigurationV2RoutingRuleArrayOutput { + return v.RoutingRules + }).(BucketWebsiteConfigurationV2RoutingRuleArrayOutput) +} + +// Domain of the website endpoint. This is used to create Route 53 alias records. +func (o BucketWebsiteConfigurationV2Output) WebsiteDomain() pulumi.StringOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) pulumi.StringOutput { return v.WebsiteDomain }).(pulumi.StringOutput) +} + +// Website endpoint. +func (o BucketWebsiteConfigurationV2Output) WebsiteEndpoint() pulumi.StringOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2) pulumi.StringOutput { return v.WebsiteEndpoint }).(pulumi.StringOutput) +} + +type BucketWebsiteConfigurationV2ArrayOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2ArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*BucketWebsiteConfigurationV2)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2ArrayOutput) ToBucketWebsiteConfigurationV2ArrayOutput() BucketWebsiteConfigurationV2ArrayOutput { + return o +} + +func (o BucketWebsiteConfigurationV2ArrayOutput) ToBucketWebsiteConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ArrayOutput { + return o +} + +func (o BucketWebsiteConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketWebsiteConfigurationV2Output { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketWebsiteConfigurationV2 { + return vs[0].([]*BucketWebsiteConfigurationV2)[vs[1].(int)] + }).(BucketWebsiteConfigurationV2Output) +} + +type BucketWebsiteConfigurationV2MapOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2MapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*BucketWebsiteConfigurationV2)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2MapOutput) ToBucketWebsiteConfigurationV2MapOutput() BucketWebsiteConfigurationV2MapOutput { + return o +} + +func (o BucketWebsiteConfigurationV2MapOutput) ToBucketWebsiteConfigurationV2MapOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2MapOutput { + return o +} + +func (o BucketWebsiteConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketWebsiteConfigurationV2Output { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketWebsiteConfigurationV2 { + return vs[0].(map[string]*BucketWebsiteConfigurationV2)[vs[1].(string)] + }).(BucketWebsiteConfigurationV2Output) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2Input)(nil)).Elem(), &BucketWebsiteConfigurationV2{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2ArrayInput)(nil)).Elem(), BucketWebsiteConfigurationV2Array{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2MapInput)(nil)).Elem(), BucketWebsiteConfigurationV2Map{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2Output{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2ArrayOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2MapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/directoryBucket.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/directoryBucket.go new file mode 100644 index 000000000..a596602fc --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/directoryBucket.go @@ -0,0 +1,327 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides an Amazon S3 Express directory bucket resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewDirectoryBucket(ctx, "example", &s3.DirectoryBucketArgs{ +// Bucket: pulumi.String("example--usw2-az1--x-s3"), +// Location: &s3.DirectoryBucketLocationArgs{ +// Name: pulumi.String("usw2-az1"), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket using `bucket`. For example: +// +// ```sh +// $ pulumi import aws:s3/directoryBucket:DirectoryBucket example example--usw2-az1--x-s3 +// ``` +type DirectoryBucket struct { + pulumi.CustomResourceState + + // ARN of the bucket. + Arn pulumi.StringOutput `pulumi:"arn"` + // Name of the bucket. The name must be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.BucketV2` resource to manage general purpose buckets. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Data redundancy. Valid values: `SingleAvailabilityZone`. + DataRedundancy pulumi.StringOutput `pulumi:"dataRedundancy"` + // Boolean that indicates all objects should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy pulumi.BoolOutput `pulumi:"forceDestroy"` + // Bucket location. See Location below for more details. + Location DirectoryBucketLocationPtrOutput `pulumi:"location"` + // Bucket type. Valid values: `Directory`. + Type pulumi.StringOutput `pulumi:"type"` +} + +// NewDirectoryBucket registers a new resource with the given unique name, arguments, and options. +func NewDirectoryBucket(ctx *pulumi.Context, + name string, args *DirectoryBucketArgs, opts ...pulumi.ResourceOption) (*DirectoryBucket, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource DirectoryBucket + err := ctx.RegisterResource("aws:s3/directoryBucket:DirectoryBucket", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetDirectoryBucket gets an existing DirectoryBucket 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 GetDirectoryBucket(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *DirectoryBucketState, opts ...pulumi.ResourceOption) (*DirectoryBucket, error) { + var resource DirectoryBucket + err := ctx.ReadResource("aws:s3/directoryBucket:DirectoryBucket", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering DirectoryBucket resources. +type directoryBucketState struct { + // ARN of the bucket. + Arn *string `pulumi:"arn"` + // Name of the bucket. The name must be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.BucketV2` resource to manage general purpose buckets. + Bucket *string `pulumi:"bucket"` + // Data redundancy. Valid values: `SingleAvailabilityZone`. + DataRedundancy *string `pulumi:"dataRedundancy"` + // Boolean that indicates all objects should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Bucket location. See Location below for more details. + Location *DirectoryBucketLocation `pulumi:"location"` + // Bucket type. Valid values: `Directory`. + Type *string `pulumi:"type"` +} + +type DirectoryBucketState struct { + // ARN of the bucket. + Arn pulumi.StringPtrInput + // Name of the bucket. The name must be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.BucketV2` resource to manage general purpose buckets. + Bucket pulumi.StringPtrInput + // Data redundancy. Valid values: `SingleAvailabilityZone`. + DataRedundancy pulumi.StringPtrInput + // Boolean that indicates all objects should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy pulumi.BoolPtrInput + // Bucket location. See Location below for more details. + Location DirectoryBucketLocationPtrInput + // Bucket type. Valid values: `Directory`. + Type pulumi.StringPtrInput +} + +func (DirectoryBucketState) ElementType() reflect.Type { + return reflect.TypeOf((*directoryBucketState)(nil)).Elem() +} + +type directoryBucketArgs struct { + // Name of the bucket. The name must be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.BucketV2` resource to manage general purpose buckets. + Bucket string `pulumi:"bucket"` + // Data redundancy. Valid values: `SingleAvailabilityZone`. + DataRedundancy *string `pulumi:"dataRedundancy"` + // Boolean that indicates all objects should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Bucket location. See Location below for more details. + Location *DirectoryBucketLocation `pulumi:"location"` + // Bucket type. Valid values: `Directory`. + Type *string `pulumi:"type"` +} + +// The set of arguments for constructing a DirectoryBucket resource. +type DirectoryBucketArgs struct { + // Name of the bucket. The name must be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.BucketV2` resource to manage general purpose buckets. + Bucket pulumi.StringInput + // Data redundancy. Valid values: `SingleAvailabilityZone`. + DataRedundancy pulumi.StringPtrInput + // Boolean that indicates all objects should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. + ForceDestroy pulumi.BoolPtrInput + // Bucket location. See Location below for more details. + Location DirectoryBucketLocationPtrInput + // Bucket type. Valid values: `Directory`. + Type pulumi.StringPtrInput +} + +func (DirectoryBucketArgs) ElementType() reflect.Type { + return reflect.TypeOf((*directoryBucketArgs)(nil)).Elem() +} + +type DirectoryBucketInput interface { + pulumi.Input + + ToDirectoryBucketOutput() DirectoryBucketOutput + ToDirectoryBucketOutputWithContext(ctx context.Context) DirectoryBucketOutput +} + +func (*DirectoryBucket) ElementType() reflect.Type { + return reflect.TypeOf((**DirectoryBucket)(nil)).Elem() +} + +func (i *DirectoryBucket) ToDirectoryBucketOutput() DirectoryBucketOutput { + return i.ToDirectoryBucketOutputWithContext(context.Background()) +} + +func (i *DirectoryBucket) ToDirectoryBucketOutputWithContext(ctx context.Context) DirectoryBucketOutput { + return pulumi.ToOutputWithContext(ctx, i).(DirectoryBucketOutput) +} + +// DirectoryBucketArrayInput is an input type that accepts DirectoryBucketArray and DirectoryBucketArrayOutput values. +// You can construct a concrete instance of `DirectoryBucketArrayInput` via: +// +// DirectoryBucketArray{ DirectoryBucketArgs{...} } +type DirectoryBucketArrayInput interface { + pulumi.Input + + ToDirectoryBucketArrayOutput() DirectoryBucketArrayOutput + ToDirectoryBucketArrayOutputWithContext(context.Context) DirectoryBucketArrayOutput +} + +type DirectoryBucketArray []DirectoryBucketInput + +func (DirectoryBucketArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DirectoryBucket)(nil)).Elem() +} + +func (i DirectoryBucketArray) ToDirectoryBucketArrayOutput() DirectoryBucketArrayOutput { + return i.ToDirectoryBucketArrayOutputWithContext(context.Background()) +} + +func (i DirectoryBucketArray) ToDirectoryBucketArrayOutputWithContext(ctx context.Context) DirectoryBucketArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(DirectoryBucketArrayOutput) +} + +// DirectoryBucketMapInput is an input type that accepts DirectoryBucketMap and DirectoryBucketMapOutput values. +// You can construct a concrete instance of `DirectoryBucketMapInput` via: +// +// DirectoryBucketMap{ "key": DirectoryBucketArgs{...} } +type DirectoryBucketMapInput interface { + pulumi.Input + + ToDirectoryBucketMapOutput() DirectoryBucketMapOutput + ToDirectoryBucketMapOutputWithContext(context.Context) DirectoryBucketMapOutput +} + +type DirectoryBucketMap map[string]DirectoryBucketInput + +func (DirectoryBucketMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DirectoryBucket)(nil)).Elem() +} + +func (i DirectoryBucketMap) ToDirectoryBucketMapOutput() DirectoryBucketMapOutput { + return i.ToDirectoryBucketMapOutputWithContext(context.Background()) +} + +func (i DirectoryBucketMap) ToDirectoryBucketMapOutputWithContext(ctx context.Context) DirectoryBucketMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(DirectoryBucketMapOutput) +} + +type DirectoryBucketOutput struct{ *pulumi.OutputState } + +func (DirectoryBucketOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DirectoryBucket)(nil)).Elem() +} + +func (o DirectoryBucketOutput) ToDirectoryBucketOutput() DirectoryBucketOutput { + return o +} + +func (o DirectoryBucketOutput) ToDirectoryBucketOutputWithContext(ctx context.Context) DirectoryBucketOutput { + return o +} + +// ARN of the bucket. +func (o DirectoryBucketOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *DirectoryBucket) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Name of the bucket. The name must be in the format `[bucketName]--[azid]--x-s3`. Use the `s3.BucketV2` resource to manage general purpose buckets. +func (o DirectoryBucketOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *DirectoryBucket) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Data redundancy. Valid values: `SingleAvailabilityZone`. +func (o DirectoryBucketOutput) DataRedundancy() pulumi.StringOutput { + return o.ApplyT(func(v *DirectoryBucket) pulumi.StringOutput { return v.DataRedundancy }).(pulumi.StringOutput) +} + +// Boolean that indicates all objects should be deleted from the bucket *when the bucket is destroyed* so that the bucket can be destroyed without error. These objects are *not* recoverable. This only deletes objects when the bucket is destroyed, *not* when setting this parameter to `true`. Once this parameter is set to `true`, there must be a successful `pulumi up` run before a destroy is required to update this value in the resource state. Without a successful `pulumi up` after this parameter is set, this flag will have no effect. If setting this field in the same operation that would require replacing the bucket or destroying the bucket, this flag will not work. Additionally when importing a bucket, a successful `pulumi up` is required to set this value in state before it will take effect on a destroy operation. +func (o DirectoryBucketOutput) ForceDestroy() pulumi.BoolOutput { + return o.ApplyT(func(v *DirectoryBucket) pulumi.BoolOutput { return v.ForceDestroy }).(pulumi.BoolOutput) +} + +// Bucket location. See Location below for more details. +func (o DirectoryBucketOutput) Location() DirectoryBucketLocationPtrOutput { + return o.ApplyT(func(v *DirectoryBucket) DirectoryBucketLocationPtrOutput { return v.Location }).(DirectoryBucketLocationPtrOutput) +} + +// Bucket type. Valid values: `Directory`. +func (o DirectoryBucketOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v *DirectoryBucket) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput) +} + +type DirectoryBucketArrayOutput struct{ *pulumi.OutputState } + +func (DirectoryBucketArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*DirectoryBucket)(nil)).Elem() +} + +func (o DirectoryBucketArrayOutput) ToDirectoryBucketArrayOutput() DirectoryBucketArrayOutput { + return o +} + +func (o DirectoryBucketArrayOutput) ToDirectoryBucketArrayOutputWithContext(ctx context.Context) DirectoryBucketArrayOutput { + return o +} + +func (o DirectoryBucketArrayOutput) Index(i pulumi.IntInput) DirectoryBucketOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DirectoryBucket { + return vs[0].([]*DirectoryBucket)[vs[1].(int)] + }).(DirectoryBucketOutput) +} + +type DirectoryBucketMapOutput struct{ *pulumi.OutputState } + +func (DirectoryBucketMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*DirectoryBucket)(nil)).Elem() +} + +func (o DirectoryBucketMapOutput) ToDirectoryBucketMapOutput() DirectoryBucketMapOutput { + return o +} + +func (o DirectoryBucketMapOutput) ToDirectoryBucketMapOutputWithContext(ctx context.Context) DirectoryBucketMapOutput { + return o +} + +func (o DirectoryBucketMapOutput) MapIndex(k pulumi.StringInput) DirectoryBucketOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DirectoryBucket { + return vs[0].(map[string]*DirectoryBucket)[vs[1].(string)] + }).(DirectoryBucketOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*DirectoryBucketInput)(nil)).Elem(), &DirectoryBucket{}) + pulumi.RegisterInputType(reflect.TypeOf((*DirectoryBucketArrayInput)(nil)).Elem(), DirectoryBucketArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*DirectoryBucketMapInput)(nil)).Elem(), DirectoryBucketMap{}) + pulumi.RegisterOutputType(DirectoryBucketOutput{}) + pulumi.RegisterOutputType(DirectoryBucketArrayOutput{}) + pulumi.RegisterOutputType(DirectoryBucketMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getAccountPublicAccessBlock.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getAccountPublicAccessBlock.go new file mode 100644 index 000000000..c9cad8656 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getAccountPublicAccessBlock.go @@ -0,0 +1,145 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The S3 account public access block data source returns account-level public access block configuration. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.LookupAccountPublicAccessBlock(ctx, &s3.LookupAccountPublicAccessBlockArgs{}, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupAccountPublicAccessBlock(ctx *pulumi.Context, args *LookupAccountPublicAccessBlockArgs, opts ...pulumi.InvokeOption) (*LookupAccountPublicAccessBlockResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupAccountPublicAccessBlockResult + err := ctx.Invoke("aws:s3/getAccountPublicAccessBlock:getAccountPublicAccessBlock", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getAccountPublicAccessBlock. +type LookupAccountPublicAccessBlockArgs struct { + // AWS account ID to configure. Defaults to automatically determined account ID of the AWS provider. + AccountId *string `pulumi:"accountId"` +} + +// A collection of values returned by getAccountPublicAccessBlock. +type LookupAccountPublicAccessBlockResult struct { + AccountId *string `pulumi:"accountId"` + // Whether or not Amazon S3 should block public ACLs for buckets in this account is enabled. Returns as `true` or `false`. + BlockPublicAcls bool `pulumi:"blockPublicAcls"` + // Whether or not Amazon S3 should block public bucket policies for buckets in this account is enabled. Returns as `true` or `false`. + BlockPublicPolicy bool `pulumi:"blockPublicPolicy"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // Whether or not Amazon S3 should ignore public ACLs for buckets in this account is enabled. Returns as `true` or `false`. + IgnorePublicAcls bool `pulumi:"ignorePublicAcls"` + // Whether or not Amazon S3 should restrict public bucket policies for buckets in this account is enabled. Returns as `true` or `false`. + RestrictPublicBuckets bool `pulumi:"restrictPublicBuckets"` +} + +func LookupAccountPublicAccessBlockOutput(ctx *pulumi.Context, args LookupAccountPublicAccessBlockOutputArgs, opts ...pulumi.InvokeOption) LookupAccountPublicAccessBlockResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupAccountPublicAccessBlockResultOutput, error) { + args := v.(LookupAccountPublicAccessBlockArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupAccountPublicAccessBlockResult + secret, err := ctx.InvokePackageRaw("aws:s3/getAccountPublicAccessBlock:getAccountPublicAccessBlock", args, &rv, "", opts...) + if err != nil { + return LookupAccountPublicAccessBlockResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupAccountPublicAccessBlockResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupAccountPublicAccessBlockResultOutput), nil + } + return output, nil + }).(LookupAccountPublicAccessBlockResultOutput) +} + +// A collection of arguments for invoking getAccountPublicAccessBlock. +type LookupAccountPublicAccessBlockOutputArgs struct { + // AWS account ID to configure. Defaults to automatically determined account ID of the AWS provider. + AccountId pulumi.StringPtrInput `pulumi:"accountId"` +} + +func (LookupAccountPublicAccessBlockOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupAccountPublicAccessBlockArgs)(nil)).Elem() +} + +// A collection of values returned by getAccountPublicAccessBlock. +type LookupAccountPublicAccessBlockResultOutput struct{ *pulumi.OutputState } + +func (LookupAccountPublicAccessBlockResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupAccountPublicAccessBlockResult)(nil)).Elem() +} + +func (o LookupAccountPublicAccessBlockResultOutput) ToLookupAccountPublicAccessBlockResultOutput() LookupAccountPublicAccessBlockResultOutput { + return o +} + +func (o LookupAccountPublicAccessBlockResultOutput) ToLookupAccountPublicAccessBlockResultOutputWithContext(ctx context.Context) LookupAccountPublicAccessBlockResultOutput { + return o +} + +func (o LookupAccountPublicAccessBlockResultOutput) AccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupAccountPublicAccessBlockResult) *string { return v.AccountId }).(pulumi.StringPtrOutput) +} + +// Whether or not Amazon S3 should block public ACLs for buckets in this account is enabled. Returns as `true` or `false`. +func (o LookupAccountPublicAccessBlockResultOutput) BlockPublicAcls() pulumi.BoolOutput { + return o.ApplyT(func(v LookupAccountPublicAccessBlockResult) bool { return v.BlockPublicAcls }).(pulumi.BoolOutput) +} + +// Whether or not Amazon S3 should block public bucket policies for buckets in this account is enabled. Returns as `true` or `false`. +func (o LookupAccountPublicAccessBlockResultOutput) BlockPublicPolicy() pulumi.BoolOutput { + return o.ApplyT(func(v LookupAccountPublicAccessBlockResult) bool { return v.BlockPublicPolicy }).(pulumi.BoolOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupAccountPublicAccessBlockResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupAccountPublicAccessBlockResult) string { return v.Id }).(pulumi.StringOutput) +} + +// Whether or not Amazon S3 should ignore public ACLs for buckets in this account is enabled. Returns as `true` or `false`. +func (o LookupAccountPublicAccessBlockResultOutput) IgnorePublicAcls() pulumi.BoolOutput { + return o.ApplyT(func(v LookupAccountPublicAccessBlockResult) bool { return v.IgnorePublicAcls }).(pulumi.BoolOutput) +} + +// Whether or not Amazon S3 should restrict public bucket policies for buckets in this account is enabled. Returns as `true` or `false`. +func (o LookupAccountPublicAccessBlockResultOutput) RestrictPublicBuckets() pulumi.BoolOutput { + return o.ApplyT(func(v LookupAccountPublicAccessBlockResult) bool { return v.RestrictPublicBuckets }).(pulumi.BoolOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupAccountPublicAccessBlockResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucket.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucket.go new file mode 100644 index 000000000..13f843243 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucket.go @@ -0,0 +1,232 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides details about a specific S3 bucket. +// +// This resource may prove useful when setting up a Route53 record, or an origin for a CloudFront +// Distribution. +// +// ## Example Usage +// +// ### Route53 Record +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// selected, err := s3.LookupBucket(ctx, &s3.LookupBucketArgs{ +// Bucket: "bucket.test.com", +// }, nil) +// if err != nil { +// return err +// } +// testZone, err := route53.LookupZone(ctx, &route53.LookupZoneArgs{ +// Name: pulumi.StringRef("test.com."), +// }, nil) +// if err != nil { +// return err +// } +// _, err = route53.NewRecord(ctx, "example", &route53.RecordArgs{ +// ZoneId: pulumi.String(testZone.Id), +// Name: pulumi.String("bucket"), +// Type: pulumi.String(route53.RecordTypeA), +// Aliases: route53.RecordAliasArray{ +// &route53.RecordAliasArgs{ +// Name: pulumi.String(selected.WebsiteDomain), +// ZoneId: pulumi.String(selected.HostedZoneId), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### CloudFront Origin +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudfront" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// selected, err := s3.LookupBucket(ctx, &s3.LookupBucketArgs{ +// Bucket: "a-test-bucket", +// }, nil) +// if err != nil { +// return err +// } +// _, err = cloudfront.NewDistribution(ctx, "test", &cloudfront.DistributionArgs{ +// Origins: cloudfront.DistributionOriginArray{ +// &cloudfront.DistributionOriginArgs{ +// DomainName: pulumi.String(selected.BucketDomainName), +// OriginId: pulumi.String("s3-selected-bucket"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupBucket(ctx *pulumi.Context, args *LookupBucketArgs, opts ...pulumi.InvokeOption) (*LookupBucketResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupBucketResult + err := ctx.Invoke("aws:s3/getBucket:getBucket", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getBucket. +type LookupBucketArgs struct { + // Name of the bucket + Bucket string `pulumi:"bucket"` +} + +// A collection of values returned by getBucket. +type LookupBucketResult struct { + // ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn string `pulumi:"arn"` + Bucket string `pulumi:"bucket"` + // Bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. + BucketDomainName string `pulumi:"bucketDomainName"` + // The bucket region-specific domain name. The bucket domain name including the region name. Please refer to the [S3 endpoints reference](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) for format. Note: AWS CloudFront allows specifying an S3 region-specific endpoint when creating an S3 origin. This will prevent redirect issues from CloudFront to the S3 Origin URL. For more information, see the [Virtual Hosted-Style Requests for Other Regions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint) section in the AWS S3 User Guide. + BucketRegionalDomainName string `pulumi:"bucketRegionalDomainName"` + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId string `pulumi:"hostedZoneId"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // AWS region this bucket resides in. + Region string `pulumi:"region"` + // Domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain string `pulumi:"websiteDomain"` + // Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint string `pulumi:"websiteEndpoint"` +} + +func LookupBucketOutput(ctx *pulumi.Context, args LookupBucketOutputArgs, opts ...pulumi.InvokeOption) LookupBucketResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupBucketResultOutput, error) { + args := v.(LookupBucketArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupBucketResult + secret, err := ctx.InvokePackageRaw("aws:s3/getBucket:getBucket", args, &rv, "", opts...) + if err != nil { + return LookupBucketResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupBucketResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupBucketResultOutput), nil + } + return output, nil + }).(LookupBucketResultOutput) +} + +// A collection of arguments for invoking getBucket. +type LookupBucketOutputArgs struct { + // Name of the bucket + Bucket pulumi.StringInput `pulumi:"bucket"` +} + +func (LookupBucketOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupBucketArgs)(nil)).Elem() +} + +// A collection of values returned by getBucket. +type LookupBucketResultOutput struct{ *pulumi.OutputState } + +func (LookupBucketResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupBucketResult)(nil)).Elem() +} + +func (o LookupBucketResultOutput) ToLookupBucketResultOutput() LookupBucketResultOutput { + return o +} + +func (o LookupBucketResultOutput) ToLookupBucketResultOutputWithContext(ctx context.Context) LookupBucketResultOutput { + return o +} + +// ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. +func (o LookupBucketResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.Arn }).(pulumi.StringOutput) +} + +func (o LookupBucketResultOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.Bucket }).(pulumi.StringOutput) +} + +// Bucket domain name. Will be of format `bucketname.s3.amazonaws.com`. +func (o LookupBucketResultOutput) BucketDomainName() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.BucketDomainName }).(pulumi.StringOutput) +} + +// The bucket region-specific domain name. The bucket domain name including the region name. Please refer to the [S3 endpoints reference](https://docs.aws.amazon.com/general/latest/gr/s3.html#s3_region) for format. Note: AWS CloudFront allows specifying an S3 region-specific endpoint when creating an S3 origin. This will prevent redirect issues from CloudFront to the S3 Origin URL. For more information, see the [Virtual Hosted-Style Requests for Other Regions](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#deprecated-global-endpoint) section in the AWS S3 User Guide. +func (o LookupBucketResultOutput) BucketRegionalDomainName() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.BucketRegionalDomainName }).(pulumi.StringOutput) +} + +// The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. +func (o LookupBucketResultOutput) HostedZoneId() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.HostedZoneId }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupBucketResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.Id }).(pulumi.StringOutput) +} + +// AWS region this bucket resides in. +func (o LookupBucketResultOutput) Region() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.Region }).(pulumi.StringOutput) +} + +// Domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. +func (o LookupBucketResultOutput) WebsiteDomain() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.WebsiteDomain }).(pulumi.StringOutput) +} + +// Website endpoint, if the bucket is configured with a website. If not, this will be an empty string. +func (o LookupBucketResultOutput) WebsiteEndpoint() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketResult) string { return v.WebsiteEndpoint }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupBucketResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObject.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObject.go new file mode 100644 index 000000000..664e77c73 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObject.go @@ -0,0 +1,383 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **NOTE:** The `s3.BucketObject` data source is DEPRECATED and will be removed in a future version! Use `s3.BucketObjectv2` instead, where new features and fixes will be added. +// +// The S3 object data source allows access to the metadata and +// _optionally_ (see below) content of an object stored inside S3 bucket. +// +// > **Note:** The content of an object (`body` field) is available only for objects which have a human-readable `Content-Type`: +// +// * `text/*` +// * `application/json` +// * `application/ld+json` +// * `application/x-httpd-php` +// * `application/xhtml+xml` +// * `application/x-csh` +// * `application/x-sh` +// * `application/xml` +// * `application/atom+xml` +// * `application/x-sql` +// +// This is to prevent printing unsafe characters and potentially downloading large amount of data which would be thrown away in favor of metadata. +// +// ## Example Usage +// +// The following example retrieves a text object (which must have a `Content-Type` +// value starting with `text/`) and uses it as the `userData` for an EC2 instance: +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bootstrapScript, err := s3.LookupBucketObject(ctx, &s3.LookupBucketObjectArgs{ +// Bucket: "ourcorp-deploy-config", +// Key: "ec2-bootstrap-script.sh", +// }, nil) +// if err != nil { +// return err +// } +// _, err = ec2.NewInstance(ctx, "example", &ec2.InstanceArgs{ +// InstanceType: pulumi.String(ec2.InstanceType_T2_Micro), +// Ami: pulumi.String("ami-2757f631"), +// UserData: pulumi.String(bootstrapScript.Body), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// The following, more-complex example retrieves only the metadata for a zip +// file stored in S3, which is then used to pass the most recent `versionId` +// to AWS Lambda for use as a function implementation. More information about +// Lambda functions is available in the documentation for +// `lambda.Function`. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// lambda, err := s3.LookupBucketObject(ctx, &s3.LookupBucketObjectArgs{ +// Bucket: "ourcorp-lambda-functions", +// Key: "hello-world.zip", +// }, nil) +// if err != nil { +// return err +// } +// _, err = lambda.NewFunction(ctx, "test_lambda", &lambda.FunctionArgs{ +// S3Bucket: pulumi.String(lambda.Id), +// S3Key: pulumi.String(lambda.Key), +// S3ObjectVersion: pulumi.String(lambda.VersionId), +// Name: pulumi.String("lambda_function_name"), +// Role: pulumi.Any(iamForLambda.Arn), +// Handler: pulumi.String("exports.test"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupBucketObject(ctx *pulumi.Context, args *LookupBucketObjectArgs, opts ...pulumi.InvokeOption) (*LookupBucketObjectResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupBucketObjectResult + err := ctx.Invoke("aws:s3/getBucketObject:getBucketObject", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getBucketObject. +type LookupBucketObjectArgs struct { + // Name of the bucket to read the object from. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + // + // Deprecated: Use the s3.BucketObjectv2 data source instead + Bucket string `pulumi:"bucket"` + // Full path to the object inside the bucket + Key string `pulumi:"key"` + Range *string `pulumi:"range"` + // Map of tags assigned to the object. + Tags map[string]string `pulumi:"tags"` + // Specific version ID of the object returned (defaults to latest version) + VersionId *string `pulumi:"versionId"` +} + +// A collection of values returned by getBucketObject. +type LookupBucketObjectResult struct { + Arn string `pulumi:"arn"` + // Object data (see **limitations above** to understand cases in which this field is actually available) + Body string `pulumi:"body"` + // Deprecated: Use the s3.BucketObjectv2 data source instead + Bucket string `pulumi:"bucket"` + // (Optional) Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled bool `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain. + CacheControl string `pulumi:"cacheControl"` + // Presentational information for the object. + ContentDisposition string `pulumi:"contentDisposition"` + // What content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. + ContentEncoding string `pulumi:"contentEncoding"` + // Language the content is in. + ContentLanguage string `pulumi:"contentLanguage"` + // Size of the body in bytes. + ContentLength int `pulumi:"contentLength"` + // Standard MIME type describing the format of the object data. + ContentType string `pulumi:"contentType"` + // [ETag](https://en.wikipedia.org/wiki/HTTP_ETag) generated for the object (an MD5 sum of the object content in case it's not encrypted) + Etag string `pulumi:"etag"` + // If the object expiration is configured (see [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)), the field includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded. + Expiration string `pulumi:"expiration"` + // Date and time at which the object is no longer cacheable. + Expires string `pulumi:"expires"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Key string `pulumi:"key"` + // Last modified date of the object in RFC1123 format (e.g., `Mon, 02 Jan 2006 15:04:05 MST`) + LastModified string `pulumi:"lastModified"` + // Map of metadata stored with the object in S3. Keys are always returned in lowercase. + Metadata map[string]string `pulumi:"metadata"` + // Indicates whether this object has an active [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds). This field is only returned if you have permission to view an object's legal hold status. + ObjectLockLegalHoldStatus string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) currently in place for this object. + ObjectLockMode string `pulumi:"objectLockMode"` + // The date and time when this object's object lock will expire. + ObjectLockRetainUntilDate string `pulumi:"objectLockRetainUntilDate"` + Range *string `pulumi:"range"` + // If the object is stored using server-side encryption (KMS or Amazon S3-managed encryption key), this field includes the chosen encryption and algorithm used. + ServerSideEncryption string `pulumi:"serverSideEncryption"` + // If present, specifies the ID of the Key Management Service (KMS) master encryption key that was used for the object. + SseKmsKeyId string `pulumi:"sseKmsKeyId"` + // [Storage class](http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) information of the object. Available for all objects except for `Standard` storage class objects. + StorageClass string `pulumi:"storageClass"` + // Map of tags assigned to the object. + Tags map[string]string `pulumi:"tags"` + // Latest version ID of the object returned. + VersionId string `pulumi:"versionId"` + // If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. + WebsiteRedirectLocation string `pulumi:"websiteRedirectLocation"` +} + +func LookupBucketObjectOutput(ctx *pulumi.Context, args LookupBucketObjectOutputArgs, opts ...pulumi.InvokeOption) LookupBucketObjectResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupBucketObjectResultOutput, error) { + args := v.(LookupBucketObjectArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupBucketObjectResult + secret, err := ctx.InvokePackageRaw("aws:s3/getBucketObject:getBucketObject", args, &rv, "", opts...) + if err != nil { + return LookupBucketObjectResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupBucketObjectResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupBucketObjectResultOutput), nil + } + return output, nil + }).(LookupBucketObjectResultOutput) +} + +// A collection of arguments for invoking getBucketObject. +type LookupBucketObjectOutputArgs struct { + // Name of the bucket to read the object from. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + // + // Deprecated: Use the s3.BucketObjectv2 data source instead + Bucket pulumi.StringInput `pulumi:"bucket"` + // Full path to the object inside the bucket + Key pulumi.StringInput `pulumi:"key"` + Range pulumi.StringPtrInput `pulumi:"range"` + // Map of tags assigned to the object. + Tags pulumi.StringMapInput `pulumi:"tags"` + // Specific version ID of the object returned (defaults to latest version) + VersionId pulumi.StringPtrInput `pulumi:"versionId"` +} + +func (LookupBucketObjectOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupBucketObjectArgs)(nil)).Elem() +} + +// A collection of values returned by getBucketObject. +type LookupBucketObjectResultOutput struct{ *pulumi.OutputState } + +func (LookupBucketObjectResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupBucketObjectResult)(nil)).Elem() +} + +func (o LookupBucketObjectResultOutput) ToLookupBucketObjectResultOutput() LookupBucketObjectResultOutput { + return o +} + +func (o LookupBucketObjectResultOutput) ToLookupBucketObjectResultOutputWithContext(ctx context.Context) LookupBucketObjectResultOutput { + return o +} + +func (o LookupBucketObjectResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Object data (see **limitations above** to understand cases in which this field is actually available) +func (o LookupBucketObjectResultOutput) Body() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Body }).(pulumi.StringOutput) +} + +// Deprecated: Use the s3.BucketObjectv2 data source instead +func (o LookupBucketObjectResultOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Bucket }).(pulumi.StringOutput) +} + +// (Optional) Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o LookupBucketObjectResultOutput) BucketKeyEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v LookupBucketObjectResult) bool { return v.BucketKeyEnabled }).(pulumi.BoolOutput) +} + +// Caching behavior along the request/reply chain. +func (o LookupBucketObjectResultOutput) CacheControl() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.CacheControl }).(pulumi.StringOutput) +} + +// Presentational information for the object. +func (o LookupBucketObjectResultOutput) ContentDisposition() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ContentDisposition }).(pulumi.StringOutput) +} + +// What content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. +func (o LookupBucketObjectResultOutput) ContentEncoding() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ContentEncoding }).(pulumi.StringOutput) +} + +// Language the content is in. +func (o LookupBucketObjectResultOutput) ContentLanguage() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ContentLanguage }).(pulumi.StringOutput) +} + +// Size of the body in bytes. +func (o LookupBucketObjectResultOutput) ContentLength() pulumi.IntOutput { + return o.ApplyT(func(v LookupBucketObjectResult) int { return v.ContentLength }).(pulumi.IntOutput) +} + +// Standard MIME type describing the format of the object data. +func (o LookupBucketObjectResultOutput) ContentType() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ContentType }).(pulumi.StringOutput) +} + +// [ETag](https://en.wikipedia.org/wiki/HTTP_ETag) generated for the object (an MD5 sum of the object content in case it's not encrypted) +func (o LookupBucketObjectResultOutput) Etag() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Etag }).(pulumi.StringOutput) +} + +// If the object expiration is configured (see [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)), the field includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded. +func (o LookupBucketObjectResultOutput) Expiration() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Expiration }).(pulumi.StringOutput) +} + +// Date and time at which the object is no longer cacheable. +func (o LookupBucketObjectResultOutput) Expires() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Expires }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupBucketObjectResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o LookupBucketObjectResultOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.Key }).(pulumi.StringOutput) +} + +// Last modified date of the object in RFC1123 format (e.g., `Mon, 02 Jan 2006 15:04:05 MST`) +func (o LookupBucketObjectResultOutput) LastModified() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.LastModified }).(pulumi.StringOutput) +} + +// Map of metadata stored with the object in S3. Keys are always returned in lowercase. +func (o LookupBucketObjectResultOutput) Metadata() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupBucketObjectResult) map[string]string { return v.Metadata }).(pulumi.StringMapOutput) +} + +// Indicates whether this object has an active [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds). This field is only returned if you have permission to view an object's legal hold status. +func (o LookupBucketObjectResultOutput) ObjectLockLegalHoldStatus() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ObjectLockLegalHoldStatus }).(pulumi.StringOutput) +} + +// Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) currently in place for this object. +func (o LookupBucketObjectResultOutput) ObjectLockMode() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ObjectLockMode }).(pulumi.StringOutput) +} + +// The date and time when this object's object lock will expire. +func (o LookupBucketObjectResultOutput) ObjectLockRetainUntilDate() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ObjectLockRetainUntilDate }).(pulumi.StringOutput) +} + +func (o LookupBucketObjectResultOutput) Range() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupBucketObjectResult) *string { return v.Range }).(pulumi.StringPtrOutput) +} + +// If the object is stored using server-side encryption (KMS or Amazon S3-managed encryption key), this field includes the chosen encryption and algorithm used. +func (o LookupBucketObjectResultOutput) ServerSideEncryption() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.ServerSideEncryption }).(pulumi.StringOutput) +} + +// If present, specifies the ID of the Key Management Service (KMS) master encryption key that was used for the object. +func (o LookupBucketObjectResultOutput) SseKmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.SseKmsKeyId }).(pulumi.StringOutput) +} + +// [Storage class](http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) information of the object. Available for all objects except for `Standard` storage class objects. +func (o LookupBucketObjectResultOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.StorageClass }).(pulumi.StringOutput) +} + +// Map of tags assigned to the object. +func (o LookupBucketObjectResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LookupBucketObjectResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Latest version ID of the object returned. +func (o LookupBucketObjectResultOutput) VersionId() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.VersionId }).(pulumi.StringOutput) +} + +// If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. +func (o LookupBucketObjectResultOutput) WebsiteRedirectLocation() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketObjectResult) string { return v.WebsiteRedirectLocation }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupBucketObjectResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObjects.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObjects.go new file mode 100644 index 000000000..b94ec6a2e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketObjects.go @@ -0,0 +1,178 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **NOTE:** The `s3.getBucketObjects` data source is DEPRECATED and will be removed in a future version! Use `s3.getObjects` instead, where new features and fixes will be added. +// +// > **NOTE on `maxKeys`:** Retrieving very large numbers of keys can adversely affect this provider's performance. +// +// The objects data source returns keys (i.e., file names) and other metadata about objects in an S3 bucket. +func GetBucketObjects(ctx *pulumi.Context, args *GetBucketObjectsArgs, opts ...pulumi.InvokeOption) (*GetBucketObjectsResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetBucketObjectsResult + err := ctx.Invoke("aws:s3/getBucketObjects:getBucketObjects", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getBucketObjects. +type GetBucketObjectsArgs struct { + // Lists object keys in this S3 bucket. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + // + // Deprecated: Use the s3.getObjects data source instead + Bucket string `pulumi:"bucket"` + // Character used to group keys (Default: none) + Delimiter *string `pulumi:"delimiter"` + // Encodes keys using this method (Default: none; besides none, only "url" can be used) + EncodingType *string `pulumi:"encodingType"` + // Boolean specifying whether to populate the owner list (Default: false) + FetchOwner *bool `pulumi:"fetchOwner"` + // Maximum object keys to return (Default: 1000) + MaxKeys *int `pulumi:"maxKeys"` + // Limits results to object keys with this prefix (Default: none) + Prefix *string `pulumi:"prefix"` + // Returns key names lexicographically after a specific object key in your bucket (Default: none; S3 lists object keys in UTF-8 character encoding in lexicographical order) + StartAfter *string `pulumi:"startAfter"` +} + +// A collection of values returned by getBucketObjects. +type GetBucketObjectsResult struct { + // Deprecated: Use the s3.getObjects data source instead + Bucket string `pulumi:"bucket"` + // List of any keys between `prefix` and the next occurrence of `delimiter` (i.e., similar to subdirectories of the `prefix` "directory"); the list is only returned when you specify `delimiter` + CommonPrefixes []string `pulumi:"commonPrefixes"` + Delimiter *string `pulumi:"delimiter"` + EncodingType *string `pulumi:"encodingType"` + FetchOwner *bool `pulumi:"fetchOwner"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // List of strings representing object keys + Keys []string `pulumi:"keys"` + MaxKeys *int `pulumi:"maxKeys"` + // List of strings representing object owner IDs (see `fetchOwner` above) + Owners []string `pulumi:"owners"` + Prefix *string `pulumi:"prefix"` + StartAfter *string `pulumi:"startAfter"` +} + +func GetBucketObjectsOutput(ctx *pulumi.Context, args GetBucketObjectsOutputArgs, opts ...pulumi.InvokeOption) GetBucketObjectsResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetBucketObjectsResultOutput, error) { + args := v.(GetBucketObjectsArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetBucketObjectsResult + secret, err := ctx.InvokePackageRaw("aws:s3/getBucketObjects:getBucketObjects", args, &rv, "", opts...) + if err != nil { + return GetBucketObjectsResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetBucketObjectsResultOutput) + if secret { + return pulumi.ToSecret(output).(GetBucketObjectsResultOutput), nil + } + return output, nil + }).(GetBucketObjectsResultOutput) +} + +// A collection of arguments for invoking getBucketObjects. +type GetBucketObjectsOutputArgs struct { + // Lists object keys in this S3 bucket. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + // + // Deprecated: Use the s3.getObjects data source instead + Bucket pulumi.StringInput `pulumi:"bucket"` + // Character used to group keys (Default: none) + Delimiter pulumi.StringPtrInput `pulumi:"delimiter"` + // Encodes keys using this method (Default: none; besides none, only "url" can be used) + EncodingType pulumi.StringPtrInput `pulumi:"encodingType"` + // Boolean specifying whether to populate the owner list (Default: false) + FetchOwner pulumi.BoolPtrInput `pulumi:"fetchOwner"` + // Maximum object keys to return (Default: 1000) + MaxKeys pulumi.IntPtrInput `pulumi:"maxKeys"` + // Limits results to object keys with this prefix (Default: none) + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Returns key names lexicographically after a specific object key in your bucket (Default: none; S3 lists object keys in UTF-8 character encoding in lexicographical order) + StartAfter pulumi.StringPtrInput `pulumi:"startAfter"` +} + +func (GetBucketObjectsOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetBucketObjectsArgs)(nil)).Elem() +} + +// A collection of values returned by getBucketObjects. +type GetBucketObjectsResultOutput struct{ *pulumi.OutputState } + +func (GetBucketObjectsResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetBucketObjectsResult)(nil)).Elem() +} + +func (o GetBucketObjectsResultOutput) ToGetBucketObjectsResultOutput() GetBucketObjectsResultOutput { + return o +} + +func (o GetBucketObjectsResultOutput) ToGetBucketObjectsResultOutputWithContext(ctx context.Context) GetBucketObjectsResultOutput { + return o +} + +// Deprecated: Use the s3.getObjects data source instead +func (o GetBucketObjectsResultOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v GetBucketObjectsResult) string { return v.Bucket }).(pulumi.StringOutput) +} + +// List of any keys between `prefix` and the next occurrence of `delimiter` (i.e., similar to subdirectories of the `prefix` "directory"); the list is only returned when you specify `delimiter` +func (o GetBucketObjectsResultOutput) CommonPrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetBucketObjectsResult) []string { return v.CommonPrefixes }).(pulumi.StringArrayOutput) +} + +func (o GetBucketObjectsResultOutput) Delimiter() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetBucketObjectsResult) *string { return v.Delimiter }).(pulumi.StringPtrOutput) +} + +func (o GetBucketObjectsResultOutput) EncodingType() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetBucketObjectsResult) *string { return v.EncodingType }).(pulumi.StringPtrOutput) +} + +func (o GetBucketObjectsResultOutput) FetchOwner() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetBucketObjectsResult) *bool { return v.FetchOwner }).(pulumi.BoolPtrOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetBucketObjectsResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetBucketObjectsResult) string { return v.Id }).(pulumi.StringOutput) +} + +// List of strings representing object keys +func (o GetBucketObjectsResultOutput) Keys() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetBucketObjectsResult) []string { return v.Keys }).(pulumi.StringArrayOutput) +} + +func (o GetBucketObjectsResultOutput) MaxKeys() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetBucketObjectsResult) *int { return v.MaxKeys }).(pulumi.IntPtrOutput) +} + +// List of strings representing object owner IDs (see `fetchOwner` above) +func (o GetBucketObjectsResultOutput) Owners() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetBucketObjectsResult) []string { return v.Owners }).(pulumi.StringArrayOutput) +} + +func (o GetBucketObjectsResultOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetBucketObjectsResult) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +func (o GetBucketObjectsResultOutput) StartAfter() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetBucketObjectsResult) *string { return v.StartAfter }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(GetBucketObjectsResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketPolicy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketPolicy.go new file mode 100644 index 000000000..17b84d258 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getBucketPolicy.go @@ -0,0 +1,129 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The bucket policy data source returns IAM policy of an S3 bucket. +// +// ## Example Usage +// +// The following example retrieves IAM policy of a specified S3 bucket. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// example, err := s3.LookupBucketPolicy(ctx, &s3.LookupBucketPolicyArgs{ +// Bucket: "example-bucket-name", +// }, nil) +// if err != nil { +// return err +// } +// ctx.Export("foo", example.Policy) +// return nil +// }) +// } +// +// ``` +func LookupBucketPolicy(ctx *pulumi.Context, args *LookupBucketPolicyArgs, opts ...pulumi.InvokeOption) (*LookupBucketPolicyResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupBucketPolicyResult + err := ctx.Invoke("aws:s3/getBucketPolicy:getBucketPolicy", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getBucketPolicy. +type LookupBucketPolicyArgs struct { + // Bucket name. + Bucket string `pulumi:"bucket"` +} + +// A collection of values returned by getBucketPolicy. +type LookupBucketPolicyResult struct { + Bucket string `pulumi:"bucket"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // IAM bucket policy. + Policy string `pulumi:"policy"` +} + +func LookupBucketPolicyOutput(ctx *pulumi.Context, args LookupBucketPolicyOutputArgs, opts ...pulumi.InvokeOption) LookupBucketPolicyResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupBucketPolicyResultOutput, error) { + args := v.(LookupBucketPolicyArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupBucketPolicyResult + secret, err := ctx.InvokePackageRaw("aws:s3/getBucketPolicy:getBucketPolicy", args, &rv, "", opts...) + if err != nil { + return LookupBucketPolicyResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(LookupBucketPolicyResultOutput) + if secret { + return pulumi.ToSecret(output).(LookupBucketPolicyResultOutput), nil + } + return output, nil + }).(LookupBucketPolicyResultOutput) +} + +// A collection of arguments for invoking getBucketPolicy. +type LookupBucketPolicyOutputArgs struct { + // Bucket name. + Bucket pulumi.StringInput `pulumi:"bucket"` +} + +func (LookupBucketPolicyOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupBucketPolicyArgs)(nil)).Elem() +} + +// A collection of values returned by getBucketPolicy. +type LookupBucketPolicyResultOutput struct{ *pulumi.OutputState } + +func (LookupBucketPolicyResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupBucketPolicyResult)(nil)).Elem() +} + +func (o LookupBucketPolicyResultOutput) ToLookupBucketPolicyResultOutput() LookupBucketPolicyResultOutput { + return o +} + +func (o LookupBucketPolicyResultOutput) ToLookupBucketPolicyResultOutputWithContext(ctx context.Context) LookupBucketPolicyResultOutput { + return o +} + +func (o LookupBucketPolicyResultOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketPolicyResult) string { return v.Bucket }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupBucketPolicyResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketPolicyResult) string { return v.Id }).(pulumi.StringOutput) +} + +// IAM bucket policy. +func (o LookupBucketPolicyResultOutput) Policy() pulumi.StringOutput { + return o.ApplyT(func(v LookupBucketPolicyResult) string { return v.Policy }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupBucketPolicyResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getCanonicalUserId.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getCanonicalUserId.go new file mode 100644 index 000000000..c72d5feb1 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getCanonicalUserId.go @@ -0,0 +1,105 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The Canonical User ID data source allows access to the [canonical user ID](http://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html) +// for the effective account in which this provider is working. +// +// > **NOTE:** To use this data source, you must have the `s3:ListAllMyBuckets` permission. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// current, err := s3.GetCanonicalUserId(ctx, map[string]interface{}{}, nil) +// if err != nil { +// return err +// } +// ctx.Export("canonicalUserId", current.Id) +// return nil +// }) +// } +// +// ``` +func GetCanonicalUserId(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetCanonicalUserIdResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetCanonicalUserIdResult + err := ctx.Invoke("aws:s3/getCanonicalUserId:getCanonicalUserId", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of values returned by getCanonicalUserId. +type GetCanonicalUserIdResult struct { + // Human-friendly name linked to the canonical user ID. The bucket owner's display name. **NOTE:** [This value](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html) is only included in the response in the US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), EU (Ireland), and South America (São Paulo) regions. + DisplayName string `pulumi:"displayName"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` +} + +func GetCanonicalUserIdOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetCanonicalUserIdResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (GetCanonicalUserIdResultOutput, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetCanonicalUserIdResult + secret, err := ctx.InvokePackageRaw("aws:s3/getCanonicalUserId:getCanonicalUserId", nil, &rv, "", opts...) + if err != nil { + return GetCanonicalUserIdResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetCanonicalUserIdResultOutput) + if secret { + return pulumi.ToSecret(output).(GetCanonicalUserIdResultOutput), nil + } + return output, nil + }).(GetCanonicalUserIdResultOutput) +} + +// A collection of values returned by getCanonicalUserId. +type GetCanonicalUserIdResultOutput struct{ *pulumi.OutputState } + +func (GetCanonicalUserIdResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetCanonicalUserIdResult)(nil)).Elem() +} + +func (o GetCanonicalUserIdResultOutput) ToGetCanonicalUserIdResultOutput() GetCanonicalUserIdResultOutput { + return o +} + +func (o GetCanonicalUserIdResultOutput) ToGetCanonicalUserIdResultOutputWithContext(ctx context.Context) GetCanonicalUserIdResultOutput { + return o +} + +// Human-friendly name linked to the canonical user ID. The bucket owner's display name. **NOTE:** [This value](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTServiceGET.html) is only included in the response in the US East (N. Virginia), US West (N. California), US West (Oregon), Asia Pacific (Singapore), Asia Pacific (Sydney), Asia Pacific (Tokyo), EU (Ireland), and South America (São Paulo) regions. +func (o GetCanonicalUserIdResultOutput) DisplayName() pulumi.StringOutput { + return o.ApplyT(func(v GetCanonicalUserIdResult) string { return v.DisplayName }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetCanonicalUserIdResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetCanonicalUserIdResult) string { return v.Id }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetCanonicalUserIdResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getDirectoryBuckets.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getDirectoryBuckets.go new file mode 100644 index 000000000..2f2f7ebae --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getDirectoryBuckets.go @@ -0,0 +1,106 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Lists Amazon S3 Express directory buckets. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.GetDirectoryBuckets(ctx, map[string]interface{}{}, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetDirectoryBuckets(ctx *pulumi.Context, opts ...pulumi.InvokeOption) (*GetDirectoryBucketsResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetDirectoryBucketsResult + err := ctx.Invoke("aws:s3/getDirectoryBuckets:getDirectoryBuckets", nil, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of values returned by getDirectoryBuckets. +type GetDirectoryBucketsResult struct { + // Bucket ARNs. + Arns []string `pulumi:"arns"` + // Buckets names. + Buckets []string `pulumi:"buckets"` + Id string `pulumi:"id"` +} + +func GetDirectoryBucketsOutput(ctx *pulumi.Context, opts ...pulumi.InvokeOption) GetDirectoryBucketsResultOutput { + return pulumi.ToOutput(0).ApplyT(func(int) (GetDirectoryBucketsResultOutput, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetDirectoryBucketsResult + secret, err := ctx.InvokePackageRaw("aws:s3/getDirectoryBuckets:getDirectoryBuckets", nil, &rv, "", opts...) + if err != nil { + return GetDirectoryBucketsResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetDirectoryBucketsResultOutput) + if secret { + return pulumi.ToSecret(output).(GetDirectoryBucketsResultOutput), nil + } + return output, nil + }).(GetDirectoryBucketsResultOutput) +} + +// A collection of values returned by getDirectoryBuckets. +type GetDirectoryBucketsResultOutput struct{ *pulumi.OutputState } + +func (GetDirectoryBucketsResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetDirectoryBucketsResult)(nil)).Elem() +} + +func (o GetDirectoryBucketsResultOutput) ToGetDirectoryBucketsResultOutput() GetDirectoryBucketsResultOutput { + return o +} + +func (o GetDirectoryBucketsResultOutput) ToGetDirectoryBucketsResultOutputWithContext(ctx context.Context) GetDirectoryBucketsResultOutput { + return o +} + +// Bucket ARNs. +func (o GetDirectoryBucketsResultOutput) Arns() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetDirectoryBucketsResult) []string { return v.Arns }).(pulumi.StringArrayOutput) +} + +// Buckets names. +func (o GetDirectoryBucketsResultOutput) Buckets() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetDirectoryBucketsResult) []string { return v.Buckets }).(pulumi.StringArrayOutput) +} + +func (o GetDirectoryBucketsResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetDirectoryBucketsResult) string { return v.Id }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetDirectoryBucketsResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObject.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObject.go new file mode 100644 index 000000000..05d8b46c5 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObject.go @@ -0,0 +1,414 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// The S3 object data source allows access to the metadata and +// _optionally_ (see below) content of an object stored inside S3 bucket. +// +// > **Note:** The content of an object (`body` field) is available only for objects which have a human-readable `Content-Type`: +// +// * `text/*` +// * `application/json` +// * `application/ld+json` +// * `application/x-httpd-php` +// * `application/xhtml+xml` +// * `application/x-csh` +// * `application/x-sh` +// * `application/xml` +// * `application/atom+xml` +// * `application/x-sql` +// +// This is to prevent printing unsafe characters and potentially downloading large amount of data which would be thrown away in favor of metadata. +// +// ## Example Usage +// +// The following example retrieves a text object (which must have a `Content-Type` +// value starting with `text/`) and uses it as the `userData` for an EC2 instance: +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// bootstrapScript, err := s3.GetObject(ctx, &s3.GetObjectArgs{ +// Bucket: "ourcorp-deploy-config", +// Key: "ec2-bootstrap-script.sh", +// }, nil) +// if err != nil { +// return err +// } +// _, err = ec2.NewInstance(ctx, "example", &ec2.InstanceArgs{ +// InstanceType: pulumi.String(ec2.InstanceType_T2_Micro), +// Ami: pulumi.String("ami-2757f631"), +// UserData: pulumi.String(bootstrapScript.Body), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// The following, more-complex example retrieves only the metadata for a zip +// file stored in S3, which is then used to pass the most recent `versionId` +// to AWS Lambda for use as a function implementation. More information about +// Lambda functions is available in the documentation for +// `lambda.Function`. +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lambda" +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// lambda, err := s3.GetObject(ctx, &s3.GetObjectArgs{ +// Bucket: "ourcorp-lambda-functions", +// Key: "hello-world.zip", +// }, nil) +// if err != nil { +// return err +// } +// _, err = lambda.NewFunction(ctx, "test_lambda", &lambda.FunctionArgs{ +// S3Bucket: pulumi.String(lambda.Bucket), +// S3Key: pulumi.String(lambda.Key), +// S3ObjectVersion: pulumi.String(lambda.VersionId), +// Name: pulumi.String("lambda_function_name"), +// Role: pulumi.Any(iamForLambda.Arn), +// Handler: pulumi.String("exports.test"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func GetObject(ctx *pulumi.Context, args *GetObjectArgs, opts ...pulumi.InvokeOption) (*GetObjectResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetObjectResult + err := ctx.Invoke("aws:s3/getObject:getObject", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getObject. +type GetObjectArgs struct { + // Name of the bucket to read the object from. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + Bucket string `pulumi:"bucket"` + // To retrieve the object's checksum, this argument must be `ENABLED`. If you enable `checksumMode` and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `ENABLED` + ChecksumMode *string `pulumi:"checksumMode"` + // Full path to the object inside the bucket + Key string `pulumi:"key"` + Range *string `pulumi:"range"` + // Map of tags assigned to the object. + Tags map[string]string `pulumi:"tags"` + // Specific version ID of the object returned (defaults to latest version) + VersionId *string `pulumi:"versionId"` +} + +// A collection of values returned by getObject. +type GetObjectResult struct { + // ARN of the object. + Arn string `pulumi:"arn"` + // Object data (see **limitations above** to understand cases in which this field is actually available) + Body string `pulumi:"body"` + Bucket string `pulumi:"bucket"` + // (Optional) Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled bool `pulumi:"bucketKeyEnabled"` + // Caching behavior along the request/reply chain. + CacheControl string `pulumi:"cacheControl"` + // The base64-encoded, 32-bit CRC32 checksum of the object. + ChecksumCrc32 string `pulumi:"checksumCrc32"` + // The base64-encoded, 32-bit CRC32C checksum of the object. + ChecksumCrc32c string `pulumi:"checksumCrc32c"` + ChecksumMode *string `pulumi:"checksumMode"` + // The base64-encoded, 160-bit SHA-1 digest of the object. + ChecksumSha1 string `pulumi:"checksumSha1"` + // The base64-encoded, 256-bit SHA-256 digest of the object. + ChecksumSha256 string `pulumi:"checksumSha256"` + // Presentational information for the object. + ContentDisposition string `pulumi:"contentDisposition"` + // What content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. + ContentEncoding string `pulumi:"contentEncoding"` + // Language the content is in. + ContentLanguage string `pulumi:"contentLanguage"` + // Size of the body in bytes. + ContentLength int `pulumi:"contentLength"` + // Standard MIME type describing the format of the object data. + ContentType string `pulumi:"contentType"` + // [ETag](https://en.wikipedia.org/wiki/HTTP_ETag) generated for the object (an MD5 sum of the object content in case it's not encrypted) + Etag string `pulumi:"etag"` + // If the object expiration is configured (see [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)), the field includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded. + Expiration string `pulumi:"expiration"` + // Date and time at which the object is no longer cacheable. + Expires string `pulumi:"expires"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + Key string `pulumi:"key"` + // Last modified date of the object in RFC1123 format (e.g., `Mon, 02 Jan 2006 15:04:05 MST`) + LastModified string `pulumi:"lastModified"` + // Map of metadata stored with the object in S3. Keys are always returned in lowercase. + Metadata map[string]string `pulumi:"metadata"` + // Indicates whether this object has an active [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds). This field is only returned if you have permission to view an object's legal hold status. + ObjectLockLegalHoldStatus string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) currently in place for this object. + ObjectLockMode string `pulumi:"objectLockMode"` + // The date and time when this object's object lock will expire. + ObjectLockRetainUntilDate string `pulumi:"objectLockRetainUntilDate"` + Range *string `pulumi:"range"` + // If the object is stored using server-side encryption (KMS or Amazon S3-managed encryption key), this field includes the chosen encryption and algorithm used. + ServerSideEncryption string `pulumi:"serverSideEncryption"` + // If present, specifies the ID of the Key Management Service (KMS) master encryption key that was used for the object. + SseKmsKeyId string `pulumi:"sseKmsKeyId"` + // [Storage class](http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) information of the object. Available for all objects except for `Standard` storage class objects. + StorageClass string `pulumi:"storageClass"` + // Map of tags assigned to the object. + Tags map[string]string `pulumi:"tags"` + // Latest version ID of the object returned. + VersionId string `pulumi:"versionId"` + // If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. + WebsiteRedirectLocation string `pulumi:"websiteRedirectLocation"` +} + +func GetObjectOutput(ctx *pulumi.Context, args GetObjectOutputArgs, opts ...pulumi.InvokeOption) GetObjectResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetObjectResultOutput, error) { + args := v.(GetObjectArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetObjectResult + secret, err := ctx.InvokePackageRaw("aws:s3/getObject:getObject", args, &rv, "", opts...) + if err != nil { + return GetObjectResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetObjectResultOutput) + if secret { + return pulumi.ToSecret(output).(GetObjectResultOutput), nil + } + return output, nil + }).(GetObjectResultOutput) +} + +// A collection of arguments for invoking getObject. +type GetObjectOutputArgs struct { + // Name of the bucket to read the object from. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + Bucket pulumi.StringInput `pulumi:"bucket"` + // To retrieve the object's checksum, this argument must be `ENABLED`. If you enable `checksumMode` and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `ENABLED` + ChecksumMode pulumi.StringPtrInput `pulumi:"checksumMode"` + // Full path to the object inside the bucket + Key pulumi.StringInput `pulumi:"key"` + Range pulumi.StringPtrInput `pulumi:"range"` + // Map of tags assigned to the object. + Tags pulumi.StringMapInput `pulumi:"tags"` + // Specific version ID of the object returned (defaults to latest version) + VersionId pulumi.StringPtrInput `pulumi:"versionId"` +} + +func (GetObjectOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetObjectArgs)(nil)).Elem() +} + +// A collection of values returned by getObject. +type GetObjectResultOutput struct{ *pulumi.OutputState } + +func (GetObjectResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetObjectResult)(nil)).Elem() +} + +func (o GetObjectResultOutput) ToGetObjectResultOutput() GetObjectResultOutput { + return o +} + +func (o GetObjectResultOutput) ToGetObjectResultOutputWithContext(ctx context.Context) GetObjectResultOutput { + return o +} + +// ARN of the object. +func (o GetObjectResultOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Arn }).(pulumi.StringOutput) +} + +// Object data (see **limitations above** to understand cases in which this field is actually available) +func (o GetObjectResultOutput) Body() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Body }).(pulumi.StringOutput) +} + +func (o GetObjectResultOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Bucket }).(pulumi.StringOutput) +} + +// (Optional) Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o GetObjectResultOutput) BucketKeyEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v GetObjectResult) bool { return v.BucketKeyEnabled }).(pulumi.BoolOutput) +} + +// Caching behavior along the request/reply chain. +func (o GetObjectResultOutput) CacheControl() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.CacheControl }).(pulumi.StringOutput) +} + +// The base64-encoded, 32-bit CRC32 checksum of the object. +func (o GetObjectResultOutput) ChecksumCrc32() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ChecksumCrc32 }).(pulumi.StringOutput) +} + +// The base64-encoded, 32-bit CRC32C checksum of the object. +func (o GetObjectResultOutput) ChecksumCrc32c() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ChecksumCrc32c }).(pulumi.StringOutput) +} + +func (o GetObjectResultOutput) ChecksumMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetObjectResult) *string { return v.ChecksumMode }).(pulumi.StringPtrOutput) +} + +// The base64-encoded, 160-bit SHA-1 digest of the object. +func (o GetObjectResultOutput) ChecksumSha1() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ChecksumSha1 }).(pulumi.StringOutput) +} + +// The base64-encoded, 256-bit SHA-256 digest of the object. +func (o GetObjectResultOutput) ChecksumSha256() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ChecksumSha256 }).(pulumi.StringOutput) +} + +// Presentational information for the object. +func (o GetObjectResultOutput) ContentDisposition() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ContentDisposition }).(pulumi.StringOutput) +} + +// What content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. +func (o GetObjectResultOutput) ContentEncoding() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ContentEncoding }).(pulumi.StringOutput) +} + +// Language the content is in. +func (o GetObjectResultOutput) ContentLanguage() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ContentLanguage }).(pulumi.StringOutput) +} + +// Size of the body in bytes. +func (o GetObjectResultOutput) ContentLength() pulumi.IntOutput { + return o.ApplyT(func(v GetObjectResult) int { return v.ContentLength }).(pulumi.IntOutput) +} + +// Standard MIME type describing the format of the object data. +func (o GetObjectResultOutput) ContentType() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ContentType }).(pulumi.StringOutput) +} + +// [ETag](https://en.wikipedia.org/wiki/HTTP_ETag) generated for the object (an MD5 sum of the object content in case it's not encrypted) +func (o GetObjectResultOutput) Etag() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Etag }).(pulumi.StringOutput) +} + +// If the object expiration is configured (see [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html)), the field includes this header. It includes the expiry-date and rule-id key value pairs providing object expiration information. The value of the rule-id is URL encoded. +func (o GetObjectResultOutput) Expiration() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Expiration }).(pulumi.StringOutput) +} + +// Date and time at which the object is no longer cacheable. +func (o GetObjectResultOutput) Expires() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Expires }).(pulumi.StringOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetObjectResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Id }).(pulumi.StringOutput) +} + +func (o GetObjectResultOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.Key }).(pulumi.StringOutput) +} + +// Last modified date of the object in RFC1123 format (e.g., `Mon, 02 Jan 2006 15:04:05 MST`) +func (o GetObjectResultOutput) LastModified() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.LastModified }).(pulumi.StringOutput) +} + +// Map of metadata stored with the object in S3. Keys are always returned in lowercase. +func (o GetObjectResultOutput) Metadata() pulumi.StringMapOutput { + return o.ApplyT(func(v GetObjectResult) map[string]string { return v.Metadata }).(pulumi.StringMapOutput) +} + +// Indicates whether this object has an active [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds). This field is only returned if you have permission to view an object's legal hold status. +func (o GetObjectResultOutput) ObjectLockLegalHoldStatus() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ObjectLockLegalHoldStatus }).(pulumi.StringOutput) +} + +// Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) currently in place for this object. +func (o GetObjectResultOutput) ObjectLockMode() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ObjectLockMode }).(pulumi.StringOutput) +} + +// The date and time when this object's object lock will expire. +func (o GetObjectResultOutput) ObjectLockRetainUntilDate() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ObjectLockRetainUntilDate }).(pulumi.StringOutput) +} + +func (o GetObjectResultOutput) Range() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetObjectResult) *string { return v.Range }).(pulumi.StringPtrOutput) +} + +// If the object is stored using server-side encryption (KMS or Amazon S3-managed encryption key), this field includes the chosen encryption and algorithm used. +func (o GetObjectResultOutput) ServerSideEncryption() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.ServerSideEncryption }).(pulumi.StringOutput) +} + +// If present, specifies the ID of the Key Management Service (KMS) master encryption key that was used for the object. +func (o GetObjectResultOutput) SseKmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.SseKmsKeyId }).(pulumi.StringOutput) +} + +// [Storage class](http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html) information of the object. Available for all objects except for `Standard` storage class objects. +func (o GetObjectResultOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.StorageClass }).(pulumi.StringOutput) +} + +// Map of tags assigned to the object. +func (o GetObjectResultOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v GetObjectResult) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Latest version ID of the object returned. +func (o GetObjectResultOutput) VersionId() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.VersionId }).(pulumi.StringOutput) +} + +// If the bucket is configured as a website, redirects requests for this object to another object in the same bucket or to an external URL. Amazon S3 stores the value of this header in the object metadata. +func (o GetObjectResultOutput) WebsiteRedirectLocation() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectResult) string { return v.WebsiteRedirectLocation }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(GetObjectResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObjects.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObjects.go new file mode 100644 index 000000000..d190dde23 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/getObjects.go @@ -0,0 +1,186 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// > **NOTE on `maxKeys`:** Retrieving very large numbers of keys can adversely affect the provider's performance. +// +// The objects data source returns keys (i.e., file names) and other metadata about objects in an S3 bucket. +func GetObjects(ctx *pulumi.Context, args *GetObjectsArgs, opts ...pulumi.InvokeOption) (*GetObjectsResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetObjectsResult + err := ctx.Invoke("aws:s3/getObjects:getObjects", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getObjects. +type GetObjectsArgs struct { + // Lists object keys in this S3 bucket. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + Bucket string `pulumi:"bucket"` + // Character used to group keys (Default: none) + Delimiter *string `pulumi:"delimiter"` + // Encodes keys using this method (Default: none; besides none, only "url" can be used) + EncodingType *string `pulumi:"encodingType"` + // Boolean specifying whether to populate the owner list (Default: false) + FetchOwner *bool `pulumi:"fetchOwner"` + // Maximum object keys to return (Default: 1000) + MaxKeys *int `pulumi:"maxKeys"` + // Limits results to object keys with this prefix (Default: none) + Prefix *string `pulumi:"prefix"` + // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If included, the only valid value is `requester`. + RequestPayer *string `pulumi:"requestPayer"` + // Returns key names lexicographically after a specific object key in your bucket (Default: none; S3 lists object keys in UTF-8 character encoding in lexicographical order) + StartAfter *string `pulumi:"startAfter"` +} + +// A collection of values returned by getObjects. +type GetObjectsResult struct { + Bucket string `pulumi:"bucket"` + // List of any keys between `prefix` and the next occurrence of `delimiter` (i.e., similar to subdirectories of the `prefix` "directory"); the list is only returned when you specify `delimiter` + CommonPrefixes []string `pulumi:"commonPrefixes"` + Delimiter *string `pulumi:"delimiter"` + EncodingType *string `pulumi:"encodingType"` + FetchOwner *bool `pulumi:"fetchOwner"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // List of strings representing object keys + Keys []string `pulumi:"keys"` + MaxKeys *int `pulumi:"maxKeys"` + // List of strings representing object owner IDs (see `fetchOwner` above) + Owners []string `pulumi:"owners"` + Prefix *string `pulumi:"prefix"` + // If present, indicates that the requester was successfully charged for the request. + RequestCharged string `pulumi:"requestCharged"` + RequestPayer *string `pulumi:"requestPayer"` + StartAfter *string `pulumi:"startAfter"` +} + +func GetObjectsOutput(ctx *pulumi.Context, args GetObjectsOutputArgs, opts ...pulumi.InvokeOption) GetObjectsResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetObjectsResultOutput, error) { + args := v.(GetObjectsArgs) + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetObjectsResult + secret, err := ctx.InvokePackageRaw("aws:s3/getObjects:getObjects", args, &rv, "", opts...) + if err != nil { + return GetObjectsResultOutput{}, err + } + + output := pulumi.ToOutput(rv).(GetObjectsResultOutput) + if secret { + return pulumi.ToSecret(output).(GetObjectsResultOutput), nil + } + return output, nil + }).(GetObjectsResultOutput) +} + +// A collection of arguments for invoking getObjects. +type GetObjectsOutputArgs struct { + // Lists object keys in this S3 bucket. Alternatively, an [S3 access point](https://docs.aws.amazon.com/AmazonS3/latest/dev/using-access-points.html) ARN can be specified + Bucket pulumi.StringInput `pulumi:"bucket"` + // Character used to group keys (Default: none) + Delimiter pulumi.StringPtrInput `pulumi:"delimiter"` + // Encodes keys using this method (Default: none; besides none, only "url" can be used) + EncodingType pulumi.StringPtrInput `pulumi:"encodingType"` + // Boolean specifying whether to populate the owner list (Default: false) + FetchOwner pulumi.BoolPtrInput `pulumi:"fetchOwner"` + // Maximum object keys to return (Default: 1000) + MaxKeys pulumi.IntPtrInput `pulumi:"maxKeys"` + // Limits results to object keys with this prefix (Default: none) + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. If included, the only valid value is `requester`. + RequestPayer pulumi.StringPtrInput `pulumi:"requestPayer"` + // Returns key names lexicographically after a specific object key in your bucket (Default: none; S3 lists object keys in UTF-8 character encoding in lexicographical order) + StartAfter pulumi.StringPtrInput `pulumi:"startAfter"` +} + +func (GetObjectsOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetObjectsArgs)(nil)).Elem() +} + +// A collection of values returned by getObjects. +type GetObjectsResultOutput struct{ *pulumi.OutputState } + +func (GetObjectsResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetObjectsResult)(nil)).Elem() +} + +func (o GetObjectsResultOutput) ToGetObjectsResultOutput() GetObjectsResultOutput { + return o +} + +func (o GetObjectsResultOutput) ToGetObjectsResultOutputWithContext(ctx context.Context) GetObjectsResultOutput { + return o +} + +func (o GetObjectsResultOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectsResult) string { return v.Bucket }).(pulumi.StringOutput) +} + +// List of any keys between `prefix` and the next occurrence of `delimiter` (i.e., similar to subdirectories of the `prefix` "directory"); the list is only returned when you specify `delimiter` +func (o GetObjectsResultOutput) CommonPrefixes() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetObjectsResult) []string { return v.CommonPrefixes }).(pulumi.StringArrayOutput) +} + +func (o GetObjectsResultOutput) Delimiter() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetObjectsResult) *string { return v.Delimiter }).(pulumi.StringPtrOutput) +} + +func (o GetObjectsResultOutput) EncodingType() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetObjectsResult) *string { return v.EncodingType }).(pulumi.StringPtrOutput) +} + +func (o GetObjectsResultOutput) FetchOwner() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetObjectsResult) *bool { return v.FetchOwner }).(pulumi.BoolPtrOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetObjectsResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectsResult) string { return v.Id }).(pulumi.StringOutput) +} + +// List of strings representing object keys +func (o GetObjectsResultOutput) Keys() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetObjectsResult) []string { return v.Keys }).(pulumi.StringArrayOutput) +} + +func (o GetObjectsResultOutput) MaxKeys() pulumi.IntPtrOutput { + return o.ApplyT(func(v GetObjectsResult) *int { return v.MaxKeys }).(pulumi.IntPtrOutput) +} + +// List of strings representing object owner IDs (see `fetchOwner` above) +func (o GetObjectsResultOutput) Owners() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetObjectsResult) []string { return v.Owners }).(pulumi.StringArrayOutput) +} + +func (o GetObjectsResultOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetObjectsResult) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// If present, indicates that the requester was successfully charged for the request. +func (o GetObjectsResultOutput) RequestCharged() pulumi.StringOutput { + return o.ApplyT(func(v GetObjectsResult) string { return v.RequestCharged }).(pulumi.StringOutput) +} + +func (o GetObjectsResultOutput) RequestPayer() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetObjectsResult) *string { return v.RequestPayer }).(pulumi.StringPtrOutput) +} + +func (o GetObjectsResultOutput) StartAfter() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetObjectsResult) *string { return v.StartAfter }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(GetObjectsResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/init.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/init.go new file mode 100644 index 000000000..2eb093daa --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/init.go @@ -0,0 +1,226 @@ +// 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 s3 + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "aws:s3/accessPoint:AccessPoint": + r = &AccessPoint{} + case "aws:s3/accountPublicAccessBlock:AccountPublicAccessBlock": + r = &AccountPublicAccessBlock{} + case "aws:s3/analyticsConfiguration:AnalyticsConfiguration": + r = &AnalyticsConfiguration{} + case "aws:s3/bucket:Bucket": + r = &Bucket{} + case "aws:s3/bucketAccelerateConfigurationV2:BucketAccelerateConfigurationV2": + r = &BucketAccelerateConfigurationV2{} + case "aws:s3/bucketAclV2:BucketAclV2": + r = &BucketAclV2{} + case "aws:s3/bucketCorsConfigurationV2:BucketCorsConfigurationV2": + r = &BucketCorsConfigurationV2{} + case "aws:s3/bucketIntelligentTieringConfiguration:BucketIntelligentTieringConfiguration": + r = &BucketIntelligentTieringConfiguration{} + case "aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2": + r = &BucketLifecycleConfigurationV2{} + case "aws:s3/bucketLoggingV2:BucketLoggingV2": + r = &BucketLoggingV2{} + case "aws:s3/bucketMetric:BucketMetric": + r = &BucketMetric{} + case "aws:s3/bucketNotification:BucketNotification": + r = &BucketNotification{} + case "aws:s3/bucketObject:BucketObject": + r = &BucketObject{} + case "aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2": + r = &BucketObjectLockConfigurationV2{} + case "aws:s3/bucketObjectv2:BucketObjectv2": + r = &BucketObjectv2{} + case "aws:s3/bucketOwnershipControls:BucketOwnershipControls": + r = &BucketOwnershipControls{} + case "aws:s3/bucketPolicy:BucketPolicy": + r = &BucketPolicy{} + case "aws:s3/bucketPublicAccessBlock:BucketPublicAccessBlock": + r = &BucketPublicAccessBlock{} + case "aws:s3/bucketReplicationConfig:BucketReplicationConfig": + r = &BucketReplicationConfig{} + case "aws:s3/bucketRequestPaymentConfigurationV2:BucketRequestPaymentConfigurationV2": + r = &BucketRequestPaymentConfigurationV2{} + case "aws:s3/bucketServerSideEncryptionConfigurationV2:BucketServerSideEncryptionConfigurationV2": + r = &BucketServerSideEncryptionConfigurationV2{} + case "aws:s3/bucketV2:BucketV2": + r = &BucketV2{} + case "aws:s3/bucketVersioningV2:BucketVersioningV2": + r = &BucketVersioningV2{} + case "aws:s3/bucketWebsiteConfigurationV2:BucketWebsiteConfigurationV2": + r = &BucketWebsiteConfigurationV2{} + case "aws:s3/directoryBucket:DirectoryBucket": + r = &DirectoryBucket{} + case "aws:s3/inventory:Inventory": + r = &Inventory{} + case "aws:s3/objectCopy:ObjectCopy": + r = &ObjectCopy{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "aws", + "s3/accessPoint", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/accountPublicAccessBlock", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/analyticsConfiguration", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucket", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketAccelerateConfigurationV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketAclV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketCorsConfigurationV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketIntelligentTieringConfiguration", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketLifecycleConfigurationV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketLoggingV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketMetric", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketNotification", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketObject", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketObjectLockConfigurationV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketObjectv2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketOwnershipControls", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketPolicy", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketPublicAccessBlock", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketReplicationConfig", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketRequestPaymentConfigurationV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketServerSideEncryptionConfigurationV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketVersioningV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/bucketWebsiteConfigurationV2", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/directoryBucket", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/inventory", + &module{version}, + ) + pulumi.RegisterResourceModule( + "aws", + "s3/objectCopy", + &module{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/inventory.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/inventory.go new file mode 100644 index 000000000..06adcbdfd --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/inventory.go @@ -0,0 +1,447 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a S3 bucket [inventory configuration](https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-inventory.html) resource. +// +// > This resource cannot be used with S3 directory buckets. +// +// ## Example Usage +// +// ### Add inventory configuration +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// test, err := s3.NewBucketV2(ctx, "test", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-test-bucket"), +// }) +// if err != nil { +// return err +// } +// inventory, err := s3.NewBucketV2(ctx, "inventory", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-inventory-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewInventory(ctx, "test", &s3.InventoryArgs{ +// Bucket: test.ID(), +// Name: pulumi.String("EntireBucketDaily"), +// IncludedObjectVersions: pulumi.String("All"), +// Schedule: &s3.InventoryScheduleArgs{ +// Frequency: pulumi.String("Daily"), +// }, +// Destination: &s3.InventoryDestinationArgs{ +// Bucket: &s3.InventoryDestinationBucketArgs{ +// Format: pulumi.String("ORC"), +// BucketArn: inventory.Arn, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ### Add inventory configuration with S3 object prefix +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// test, err := s3.NewBucketV2(ctx, "test", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-test-bucket"), +// }) +// if err != nil { +// return err +// } +// inventory, err := s3.NewBucketV2(ctx, "inventory", &s3.BucketV2Args{ +// Bucket: pulumi.String("my-tf-inventory-bucket"), +// }) +// if err != nil { +// return err +// } +// _, err = s3.NewInventory(ctx, "test-prefix", &s3.InventoryArgs{ +// Bucket: test.ID(), +// Name: pulumi.String("DocumentsWeekly"), +// IncludedObjectVersions: pulumi.String("All"), +// Schedule: &s3.InventoryScheduleArgs{ +// Frequency: pulumi.String("Daily"), +// }, +// Filter: &s3.InventoryFilterArgs{ +// Prefix: pulumi.String("documents/"), +// }, +// Destination: &s3.InventoryDestinationArgs{ +// Bucket: &s3.InventoryDestinationBucketArgs{ +// Format: pulumi.String("ORC"), +// BucketArn: inventory.Arn, +// Prefix: pulumi.String("inventory"), +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// Using `pulumi import`, import S3 bucket inventory configurations using `bucket:inventory`. For example: +// +// ```sh +// $ pulumi import aws:s3/inventory:Inventory my-bucket-entire-bucket my-bucket:EntireBucket +// ``` +type Inventory struct { + pulumi.CustomResourceState + + // Name of the source bucket that inventory lists the objects for. + Bucket pulumi.StringOutput `pulumi:"bucket"` + // Contains information about where to publish the inventory results (documented below). + Destination InventoryDestinationOutput `pulumi:"destination"` + // Specifies whether the inventory is enabled or disabled. + Enabled pulumi.BoolPtrOutput `pulumi:"enabled"` + // Specifies an inventory filter. The inventory only includes objects that meet the filter's criteria (documented below). + Filter InventoryFilterPtrOutput `pulumi:"filter"` + // Object versions to include in the inventory list. Valid values: `All`, `Current`. + IncludedObjectVersions pulumi.StringOutput `pulumi:"includedObjectVersions"` + // Unique identifier of the inventory configuration for the bucket. + Name pulumi.StringOutput `pulumi:"name"` + // List of optional fields that are included in the inventory results. Please refer to the S3 [documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_InventoryConfiguration.html#AmazonS3-Type-InventoryConfiguration-OptionalFields) for more details. + OptionalFields pulumi.StringArrayOutput `pulumi:"optionalFields"` + // Specifies the schedule for generating inventory results (documented below). + Schedule InventoryScheduleOutput `pulumi:"schedule"` +} + +// NewInventory registers a new resource with the given unique name, arguments, and options. +func NewInventory(ctx *pulumi.Context, + name string, args *InventoryArgs, opts ...pulumi.ResourceOption) (*Inventory, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Destination == nil { + return nil, errors.New("invalid value for required argument 'Destination'") + } + if args.IncludedObjectVersions == nil { + return nil, errors.New("invalid value for required argument 'IncludedObjectVersions'") + } + if args.Schedule == nil { + return nil, errors.New("invalid value for required argument 'Schedule'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Inventory + err := ctx.RegisterResource("aws:s3/inventory:Inventory", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetInventory gets an existing Inventory 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 GetInventory(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *InventoryState, opts ...pulumi.ResourceOption) (*Inventory, error) { + var resource Inventory + err := ctx.ReadResource("aws:s3/inventory:Inventory", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Inventory resources. +type inventoryState struct { + // Name of the source bucket that inventory lists the objects for. + Bucket *string `pulumi:"bucket"` + // Contains information about where to publish the inventory results (documented below). + Destination *InventoryDestination `pulumi:"destination"` + // Specifies whether the inventory is enabled or disabled. + Enabled *bool `pulumi:"enabled"` + // Specifies an inventory filter. The inventory only includes objects that meet the filter's criteria (documented below). + Filter *InventoryFilter `pulumi:"filter"` + // Object versions to include in the inventory list. Valid values: `All`, `Current`. + IncludedObjectVersions *string `pulumi:"includedObjectVersions"` + // Unique identifier of the inventory configuration for the bucket. + Name *string `pulumi:"name"` + // List of optional fields that are included in the inventory results. Please refer to the S3 [documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_InventoryConfiguration.html#AmazonS3-Type-InventoryConfiguration-OptionalFields) for more details. + OptionalFields []string `pulumi:"optionalFields"` + // Specifies the schedule for generating inventory results (documented below). + Schedule *InventorySchedule `pulumi:"schedule"` +} + +type InventoryState struct { + // Name of the source bucket that inventory lists the objects for. + Bucket pulumi.StringPtrInput + // Contains information about where to publish the inventory results (documented below). + Destination InventoryDestinationPtrInput + // Specifies whether the inventory is enabled or disabled. + Enabled pulumi.BoolPtrInput + // Specifies an inventory filter. The inventory only includes objects that meet the filter's criteria (documented below). + Filter InventoryFilterPtrInput + // Object versions to include in the inventory list. Valid values: `All`, `Current`. + IncludedObjectVersions pulumi.StringPtrInput + // Unique identifier of the inventory configuration for the bucket. + Name pulumi.StringPtrInput + // List of optional fields that are included in the inventory results. Please refer to the S3 [documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_InventoryConfiguration.html#AmazonS3-Type-InventoryConfiguration-OptionalFields) for more details. + OptionalFields pulumi.StringArrayInput + // Specifies the schedule for generating inventory results (documented below). + Schedule InventorySchedulePtrInput +} + +func (InventoryState) ElementType() reflect.Type { + return reflect.TypeOf((*inventoryState)(nil)).Elem() +} + +type inventoryArgs struct { + // Name of the source bucket that inventory lists the objects for. + Bucket string `pulumi:"bucket"` + // Contains information about where to publish the inventory results (documented below). + Destination InventoryDestination `pulumi:"destination"` + // Specifies whether the inventory is enabled or disabled. + Enabled *bool `pulumi:"enabled"` + // Specifies an inventory filter. The inventory only includes objects that meet the filter's criteria (documented below). + Filter *InventoryFilter `pulumi:"filter"` + // Object versions to include in the inventory list. Valid values: `All`, `Current`. + IncludedObjectVersions string `pulumi:"includedObjectVersions"` + // Unique identifier of the inventory configuration for the bucket. + Name *string `pulumi:"name"` + // List of optional fields that are included in the inventory results. Please refer to the S3 [documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_InventoryConfiguration.html#AmazonS3-Type-InventoryConfiguration-OptionalFields) for more details. + OptionalFields []string `pulumi:"optionalFields"` + // Specifies the schedule for generating inventory results (documented below). + Schedule InventorySchedule `pulumi:"schedule"` +} + +// The set of arguments for constructing a Inventory resource. +type InventoryArgs struct { + // Name of the source bucket that inventory lists the objects for. + Bucket pulumi.StringInput + // Contains information about where to publish the inventory results (documented below). + Destination InventoryDestinationInput + // Specifies whether the inventory is enabled or disabled. + Enabled pulumi.BoolPtrInput + // Specifies an inventory filter. The inventory only includes objects that meet the filter's criteria (documented below). + Filter InventoryFilterPtrInput + // Object versions to include in the inventory list. Valid values: `All`, `Current`. + IncludedObjectVersions pulumi.StringInput + // Unique identifier of the inventory configuration for the bucket. + Name pulumi.StringPtrInput + // List of optional fields that are included in the inventory results. Please refer to the S3 [documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_InventoryConfiguration.html#AmazonS3-Type-InventoryConfiguration-OptionalFields) for more details. + OptionalFields pulumi.StringArrayInput + // Specifies the schedule for generating inventory results (documented below). + Schedule InventoryScheduleInput +} + +func (InventoryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*inventoryArgs)(nil)).Elem() +} + +type InventoryInput interface { + pulumi.Input + + ToInventoryOutput() InventoryOutput + ToInventoryOutputWithContext(ctx context.Context) InventoryOutput +} + +func (*Inventory) ElementType() reflect.Type { + return reflect.TypeOf((**Inventory)(nil)).Elem() +} + +func (i *Inventory) ToInventoryOutput() InventoryOutput { + return i.ToInventoryOutputWithContext(context.Background()) +} + +func (i *Inventory) ToInventoryOutputWithContext(ctx context.Context) InventoryOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryOutput) +} + +// InventoryArrayInput is an input type that accepts InventoryArray and InventoryArrayOutput values. +// You can construct a concrete instance of `InventoryArrayInput` via: +// +// InventoryArray{ InventoryArgs{...} } +type InventoryArrayInput interface { + pulumi.Input + + ToInventoryArrayOutput() InventoryArrayOutput + ToInventoryArrayOutputWithContext(context.Context) InventoryArrayOutput +} + +type InventoryArray []InventoryInput + +func (InventoryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Inventory)(nil)).Elem() +} + +func (i InventoryArray) ToInventoryArrayOutput() InventoryArrayOutput { + return i.ToInventoryArrayOutputWithContext(context.Background()) +} + +func (i InventoryArray) ToInventoryArrayOutputWithContext(ctx context.Context) InventoryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryArrayOutput) +} + +// InventoryMapInput is an input type that accepts InventoryMap and InventoryMapOutput values. +// You can construct a concrete instance of `InventoryMapInput` via: +// +// InventoryMap{ "key": InventoryArgs{...} } +type InventoryMapInput interface { + pulumi.Input + + ToInventoryMapOutput() InventoryMapOutput + ToInventoryMapOutputWithContext(context.Context) InventoryMapOutput +} + +type InventoryMap map[string]InventoryInput + +func (InventoryMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Inventory)(nil)).Elem() +} + +func (i InventoryMap) ToInventoryMapOutput() InventoryMapOutput { + return i.ToInventoryMapOutputWithContext(context.Background()) +} + +func (i InventoryMap) ToInventoryMapOutputWithContext(ctx context.Context) InventoryMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryMapOutput) +} + +type InventoryOutput struct{ *pulumi.OutputState } + +func (InventoryOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Inventory)(nil)).Elem() +} + +func (o InventoryOutput) ToInventoryOutput() InventoryOutput { + return o +} + +func (o InventoryOutput) ToInventoryOutputWithContext(ctx context.Context) InventoryOutput { + return o +} + +// Name of the source bucket that inventory lists the objects for. +func (o InventoryOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *Inventory) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +// Contains information about where to publish the inventory results (documented below). +func (o InventoryOutput) Destination() InventoryDestinationOutput { + return o.ApplyT(func(v *Inventory) InventoryDestinationOutput { return v.Destination }).(InventoryDestinationOutput) +} + +// Specifies whether the inventory is enabled or disabled. +func (o InventoryOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Inventory) pulumi.BoolPtrOutput { return v.Enabled }).(pulumi.BoolPtrOutput) +} + +// Specifies an inventory filter. The inventory only includes objects that meet the filter's criteria (documented below). +func (o InventoryOutput) Filter() InventoryFilterPtrOutput { + return o.ApplyT(func(v *Inventory) InventoryFilterPtrOutput { return v.Filter }).(InventoryFilterPtrOutput) +} + +// Object versions to include in the inventory list. Valid values: `All`, `Current`. +func (o InventoryOutput) IncludedObjectVersions() pulumi.StringOutput { + return o.ApplyT(func(v *Inventory) pulumi.StringOutput { return v.IncludedObjectVersions }).(pulumi.StringOutput) +} + +// Unique identifier of the inventory configuration for the bucket. +func (o InventoryOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Inventory) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// List of optional fields that are included in the inventory results. Please refer to the S3 [documentation](https://docs.aws.amazon.com/AmazonS3/latest/API/API_InventoryConfiguration.html#AmazonS3-Type-InventoryConfiguration-OptionalFields) for more details. +func (o InventoryOutput) OptionalFields() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Inventory) pulumi.StringArrayOutput { return v.OptionalFields }).(pulumi.StringArrayOutput) +} + +// Specifies the schedule for generating inventory results (documented below). +func (o InventoryOutput) Schedule() InventoryScheduleOutput { + return o.ApplyT(func(v *Inventory) InventoryScheduleOutput { return v.Schedule }).(InventoryScheduleOutput) +} + +type InventoryArrayOutput struct{ *pulumi.OutputState } + +func (InventoryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Inventory)(nil)).Elem() +} + +func (o InventoryArrayOutput) ToInventoryArrayOutput() InventoryArrayOutput { + return o +} + +func (o InventoryArrayOutput) ToInventoryArrayOutputWithContext(ctx context.Context) InventoryArrayOutput { + return o +} + +func (o InventoryArrayOutput) Index(i pulumi.IntInput) InventoryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Inventory { + return vs[0].([]*Inventory)[vs[1].(int)] + }).(InventoryOutput) +} + +type InventoryMapOutput struct{ *pulumi.OutputState } + +func (InventoryMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Inventory)(nil)).Elem() +} + +func (o InventoryMapOutput) ToInventoryMapOutput() InventoryMapOutput { + return o +} + +func (o InventoryMapOutput) ToInventoryMapOutputWithContext(ctx context.Context) InventoryMapOutput { + return o +} + +func (o InventoryMapOutput) MapIndex(k pulumi.StringInput) InventoryOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Inventory { + return vs[0].(map[string]*Inventory)[vs[1].(string)] + }).(InventoryOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*InventoryInput)(nil)).Elem(), &Inventory{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryArrayInput)(nil)).Elem(), InventoryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryMapInput)(nil)).Elem(), InventoryMap{}) + pulumi.RegisterOutputType(InventoryOutput{}) + pulumi.RegisterOutputType(InventoryArrayOutput{}) + pulumi.RegisterOutputType(InventoryMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/objectCopy.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/objectCopy.go new file mode 100644 index 000000000..78aefba6b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/objectCopy.go @@ -0,0 +1,997 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Provides a resource for copying an S3 object. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := s3.NewObjectCopy(ctx, "test", &s3.ObjectCopyArgs{ +// Bucket: pulumi.String("destination_bucket"), +// Key: pulumi.String("destination_key"), +// Source: pulumi.String("source_bucket/source_key"), +// Grants: s3.ObjectCopyGrantArray{ +// &s3.ObjectCopyGrantArgs{ +// Uri: pulumi.String("http://acs.amazonaws.com/groups/global/AllUsers"), +// Type: pulumi.String("Group"), +// Permissions: pulumi.StringArray{ +// pulumi.String("READ"), +// }, +// }, +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type ObjectCopy struct { + pulumi.CustomResourceState + + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`. + Acl pulumi.StringOutput `pulumi:"acl"` + // ARN of the object. + Arn pulumi.StringOutput `pulumi:"arn"` + // Name of the bucket to put the file in. + Bucket pulumi.StringOutput `pulumi:"bucket"` + BucketKeyEnabled pulumi.BoolOutput `pulumi:"bucketKeyEnabled"` + // Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringOutput `pulumi:"cacheControl"` + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm pulumi.StringPtrOutput `pulumi:"checksumAlgorithm"` + // The base64-encoded, 32-bit CRC32 checksum of the object. + ChecksumCrc32 pulumi.StringOutput `pulumi:"checksumCrc32"` + // The base64-encoded, 32-bit CRC32C checksum of the object. + ChecksumCrc32c pulumi.StringOutput `pulumi:"checksumCrc32c"` + // The base64-encoded, 160-bit SHA-1 digest of the object. + ChecksumSha1 pulumi.StringOutput `pulumi:"checksumSha1"` + // The base64-encoded, 256-bit SHA-256 digest of the object. + ChecksumSha256 pulumi.StringOutput `pulumi:"checksumSha256"` + // Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringOutput `pulumi:"contentDisposition"` + // Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringOutput `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringOutput `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input. + ContentType pulumi.StringOutput `pulumi:"contentType"` + // Copies the object if its entity tag (ETag) matches the specified tag. + CopyIfMatch pulumi.StringPtrOutput `pulumi:"copyIfMatch"` + // Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfModifiedSince pulumi.StringPtrOutput `pulumi:"copyIfModifiedSince"` + // Copies the object if its entity tag (ETag) is different than the specified ETag. + CopyIfNoneMatch pulumi.StringPtrOutput `pulumi:"copyIfNoneMatch"` + // Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfUnmodifiedSince pulumi.StringPtrOutput `pulumi:"copyIfUnmodifiedSince"` + // Specifies the algorithm to use to when encrypting the object (for example, AES256). + CustomerAlgorithm pulumi.StringOutput `pulumi:"customerAlgorithm"` + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header. + CustomerKey pulumi.StringPtrOutput `pulumi:"customerKey"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + CustomerKeyMd5 pulumi.StringOutput `pulumi:"customerKeyMd5"` + // ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). + Etag pulumi.StringOutput `pulumi:"etag"` + // Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` + // Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedSourceBucketOwner pulumi.StringPtrOutput `pulumi:"expectedSourceBucketOwner"` + // If the object expiration is configured, this attribute will be set. + Expiration pulumi.StringOutput `pulumi:"expiration"` + // Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + Expires pulumi.StringPtrOutput `pulumi:"expires"` + // Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // Configuration block for header grants. Documented below. Conflicts with `acl`. + Grants ObjectCopyGrantArrayOutput `pulumi:"grants"` + // Name of the object once it is in the bucket. + Key pulumi.StringOutput `pulumi:"key"` + // Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. + KmsEncryptionContext pulumi.StringOutput `pulumi:"kmsEncryptionContext"` + // Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn` + KmsKeyId pulumi.StringOutput `pulumi:"kmsKeyId"` + // Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + LastModified pulumi.StringOutput `pulumi:"lastModified"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapOutput `pulumi:"metadata"` + // Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`. + MetadataDirective pulumi.StringPtrOutput `pulumi:"metadataDirective"` + // The [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringOutput `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringOutput `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringOutput `pulumi:"objectLockRetainUntilDate"` + // If present, indicates that the requester was successfully charged for the request. + RequestCharged pulumi.BoolOutput `pulumi:"requestCharged"` + // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`. + RequestPayer pulumi.StringPtrOutput `pulumi:"requestPayer"` + // Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`. + ServerSideEncryption pulumi.StringOutput `pulumi:"serverSideEncryption"` + // Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:::accesspoint//object/`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`. + // + // The following arguments are optional: + Source pulumi.StringOutput `pulumi:"source"` + // Specifies the algorithm to use when decrypting the source object (for example, AES256). + SourceCustomerAlgorithm pulumi.StringPtrOutput `pulumi:"sourceCustomerAlgorithm"` + // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. + SourceCustomerKey pulumi.StringPtrOutput `pulumi:"sourceCustomerKey"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + SourceCustomerKeyMd5 pulumi.StringPtrOutput `pulumi:"sourceCustomerKeyMd5"` + // Version of the copied object in the source bucket. + SourceVersionId pulumi.StringOutput `pulumi:"sourceVersionId"` + // Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`. + StorageClass pulumi.StringOutput `pulumi:"storageClass"` + // Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`. + TaggingDirective pulumi.StringPtrOutput `pulumi:"taggingDirective"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapOutput `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` + // Version ID of the newly created copy. + VersionId pulumi.StringOutput `pulumi:"versionId"` + // Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + WebsiteRedirect pulumi.StringOutput `pulumi:"websiteRedirect"` +} + +// NewObjectCopy registers a new resource with the given unique name, arguments, and options. +func NewObjectCopy(ctx *pulumi.Context, + name string, args *ObjectCopyArgs, opts ...pulumi.ResourceOption) (*ObjectCopy, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Bucket == nil { + return nil, errors.New("invalid value for required argument 'Bucket'") + } + if args.Key == nil { + return nil, errors.New("invalid value for required argument 'Key'") + } + if args.Source == nil { + return nil, errors.New("invalid value for required argument 'Source'") + } + if args.CustomerKey != nil { + args.CustomerKey = pulumi.ToSecret(args.CustomerKey).(pulumi.StringPtrInput) + } + if args.KmsEncryptionContext != nil { + args.KmsEncryptionContext = pulumi.ToSecret(args.KmsEncryptionContext).(pulumi.StringPtrInput) + } + if args.KmsKeyId != nil { + args.KmsKeyId = pulumi.ToSecret(args.KmsKeyId).(pulumi.StringPtrInput) + } + if args.SourceCustomerKey != nil { + args.SourceCustomerKey = pulumi.ToSecret(args.SourceCustomerKey).(pulumi.StringPtrInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "customerKey", + "kmsEncryptionContext", + "kmsKeyId", + "sourceCustomerKey", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource ObjectCopy + err := ctx.RegisterResource("aws:s3/objectCopy:ObjectCopy", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetObjectCopy gets an existing ObjectCopy 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 GetObjectCopy(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ObjectCopyState, opts ...pulumi.ResourceOption) (*ObjectCopy, error) { + var resource ObjectCopy + err := ctx.ReadResource("aws:s3/objectCopy:ObjectCopy", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ObjectCopy resources. +type objectCopyState struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`. + Acl *string `pulumi:"acl"` + // ARN of the object. + Arn *string `pulumi:"arn"` + // Name of the bucket to put the file in. + Bucket *string `pulumi:"bucket"` + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` + // Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl *string `pulumi:"cacheControl"` + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm *string `pulumi:"checksumAlgorithm"` + // The base64-encoded, 32-bit CRC32 checksum of the object. + ChecksumCrc32 *string `pulumi:"checksumCrc32"` + // The base64-encoded, 32-bit CRC32C checksum of the object. + ChecksumCrc32c *string `pulumi:"checksumCrc32c"` + // The base64-encoded, 160-bit SHA-1 digest of the object. + ChecksumSha1 *string `pulumi:"checksumSha1"` + // The base64-encoded, 256-bit SHA-256 digest of the object. + ChecksumSha256 *string `pulumi:"checksumSha256"` + // Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition *string `pulumi:"contentDisposition"` + // Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding *string `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage *string `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input. + ContentType *string `pulumi:"contentType"` + // Copies the object if its entity tag (ETag) matches the specified tag. + CopyIfMatch *string `pulumi:"copyIfMatch"` + // Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfModifiedSince *string `pulumi:"copyIfModifiedSince"` + // Copies the object if its entity tag (ETag) is different than the specified ETag. + CopyIfNoneMatch *string `pulumi:"copyIfNoneMatch"` + // Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfUnmodifiedSince *string `pulumi:"copyIfUnmodifiedSince"` + // Specifies the algorithm to use to when encrypting the object (for example, AES256). + CustomerAlgorithm *string `pulumi:"customerAlgorithm"` + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header. + CustomerKey *string `pulumi:"customerKey"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + CustomerKeyMd5 *string `pulumi:"customerKeyMd5"` + // ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). + Etag *string `pulumi:"etag"` + // Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedSourceBucketOwner *string `pulumi:"expectedSourceBucketOwner"` + // If the object expiration is configured, this attribute will be set. + Expiration *string `pulumi:"expiration"` + // Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + Expires *string `pulumi:"expires"` + // Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Configuration block for header grants. Documented below. Conflicts with `acl`. + Grants []ObjectCopyGrant `pulumi:"grants"` + // Name of the object once it is in the bucket. + Key *string `pulumi:"key"` + // Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. + KmsEncryptionContext *string `pulumi:"kmsEncryptionContext"` + // Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn` + KmsKeyId *string `pulumi:"kmsKeyId"` + // Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + LastModified *string `pulumi:"lastModified"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata map[string]string `pulumi:"metadata"` + // Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`. + MetadataDirective *string `pulumi:"metadataDirective"` + // The [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode *string `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"` + // If present, indicates that the requester was successfully charged for the request. + RequestCharged *bool `pulumi:"requestCharged"` + // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`. + RequestPayer *string `pulumi:"requestPayer"` + // Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`. + ServerSideEncryption *string `pulumi:"serverSideEncryption"` + // Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:::accesspoint//object/`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`. + // + // The following arguments are optional: + Source *string `pulumi:"source"` + // Specifies the algorithm to use when decrypting the source object (for example, AES256). + SourceCustomerAlgorithm *string `pulumi:"sourceCustomerAlgorithm"` + // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. + SourceCustomerKey *string `pulumi:"sourceCustomerKey"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + SourceCustomerKeyMd5 *string `pulumi:"sourceCustomerKeyMd5"` + // Version of the copied object in the source bucket. + SourceVersionId *string `pulumi:"sourceVersionId"` + // Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`. + StorageClass *string `pulumi:"storageClass"` + // Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`. + TaggingDirective *string `pulumi:"taggingDirective"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll map[string]string `pulumi:"tagsAll"` + // Version ID of the newly created copy. + VersionId *string `pulumi:"versionId"` + // Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + WebsiteRedirect *string `pulumi:"websiteRedirect"` +} + +type ObjectCopyState struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`. + Acl pulumi.StringPtrInput + // ARN of the object. + Arn pulumi.StringPtrInput + // Name of the bucket to put the file in. + Bucket pulumi.StringPtrInput + BucketKeyEnabled pulumi.BoolPtrInput + // Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrInput + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm pulumi.StringPtrInput + // The base64-encoded, 32-bit CRC32 checksum of the object. + ChecksumCrc32 pulumi.StringPtrInput + // The base64-encoded, 32-bit CRC32C checksum of the object. + ChecksumCrc32c pulumi.StringPtrInput + // The base64-encoded, 160-bit SHA-1 digest of the object. + ChecksumSha1 pulumi.StringPtrInput + // The base64-encoded, 256-bit SHA-256 digest of the object. + ChecksumSha256 pulumi.StringPtrInput + // Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrInput + // Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrInput + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrInput + // Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input. + ContentType pulumi.StringPtrInput + // Copies the object if its entity tag (ETag) matches the specified tag. + CopyIfMatch pulumi.StringPtrInput + // Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfModifiedSince pulumi.StringPtrInput + // Copies the object if its entity tag (ETag) is different than the specified ETag. + CopyIfNoneMatch pulumi.StringPtrInput + // Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfUnmodifiedSince pulumi.StringPtrInput + // Specifies the algorithm to use to when encrypting the object (for example, AES256). + CustomerAlgorithm pulumi.StringPtrInput + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header. + CustomerKey pulumi.StringPtrInput + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + CustomerKeyMd5 pulumi.StringPtrInput + // ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). + Etag pulumi.StringPtrInput + // Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner pulumi.StringPtrInput + // Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedSourceBucketOwner pulumi.StringPtrInput + // If the object expiration is configured, this attribute will be set. + Expiration pulumi.StringPtrInput + // Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + Expires pulumi.StringPtrInput + // Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrInput + // Configuration block for header grants. Documented below. Conflicts with `acl`. + Grants ObjectCopyGrantArrayInput + // Name of the object once it is in the bucket. + Key pulumi.StringPtrInput + // Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. + KmsEncryptionContext pulumi.StringPtrInput + // Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn` + KmsKeyId pulumi.StringPtrInput + // Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + LastModified pulumi.StringPtrInput + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapInput + // Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`. + MetadataDirective pulumi.StringPtrInput + // The [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrInput + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrInput + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrInput + // If present, indicates that the requester was successfully charged for the request. + RequestCharged pulumi.BoolPtrInput + // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`. + RequestPayer pulumi.StringPtrInput + // Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`. + ServerSideEncryption pulumi.StringPtrInput + // Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:::accesspoint//object/`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`. + // + // The following arguments are optional: + Source pulumi.StringPtrInput + // Specifies the algorithm to use when decrypting the source object (for example, AES256). + SourceCustomerAlgorithm pulumi.StringPtrInput + // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. + SourceCustomerKey pulumi.StringPtrInput + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + SourceCustomerKeyMd5 pulumi.StringPtrInput + // Version of the copied object in the source bucket. + SourceVersionId pulumi.StringPtrInput + // Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`. + StorageClass pulumi.StringPtrInput + // Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`. + TaggingDirective pulumi.StringPtrInput + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. + // + // Deprecated: Please use `tags` instead. + TagsAll pulumi.StringMapInput + // Version ID of the newly created copy. + VersionId pulumi.StringPtrInput + // Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + WebsiteRedirect pulumi.StringPtrInput +} + +func (ObjectCopyState) ElementType() reflect.Type { + return reflect.TypeOf((*objectCopyState)(nil)).Elem() +} + +type objectCopyArgs struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`. + Acl *string `pulumi:"acl"` + // Name of the bucket to put the file in. + Bucket string `pulumi:"bucket"` + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` + // Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl *string `pulumi:"cacheControl"` + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm *string `pulumi:"checksumAlgorithm"` + // Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition *string `pulumi:"contentDisposition"` + // Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding *string `pulumi:"contentEncoding"` + // Language the content is in e.g., en-US or en-GB. + ContentLanguage *string `pulumi:"contentLanguage"` + // Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input. + ContentType *string `pulumi:"contentType"` + // Copies the object if its entity tag (ETag) matches the specified tag. + CopyIfMatch *string `pulumi:"copyIfMatch"` + // Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfModifiedSince *string `pulumi:"copyIfModifiedSince"` + // Copies the object if its entity tag (ETag) is different than the specified ETag. + CopyIfNoneMatch *string `pulumi:"copyIfNoneMatch"` + // Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfUnmodifiedSince *string `pulumi:"copyIfUnmodifiedSince"` + // Specifies the algorithm to use to when encrypting the object (for example, AES256). + CustomerAlgorithm *string `pulumi:"customerAlgorithm"` + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header. + CustomerKey *string `pulumi:"customerKey"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + CustomerKeyMd5 *string `pulumi:"customerKeyMd5"` + // Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` + // Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedSourceBucketOwner *string `pulumi:"expectedSourceBucketOwner"` + // Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + Expires *string `pulumi:"expires"` + // Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy *bool `pulumi:"forceDestroy"` + // Configuration block for header grants. Documented below. Conflicts with `acl`. + Grants []ObjectCopyGrant `pulumi:"grants"` + // Name of the object once it is in the bucket. + Key string `pulumi:"key"` + // Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. + KmsEncryptionContext *string `pulumi:"kmsEncryptionContext"` + // Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn` + KmsKeyId *string `pulumi:"kmsKeyId"` + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata map[string]string `pulumi:"metadata"` + // Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`. + MetadataDirective *string `pulumi:"metadataDirective"` + // The [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus *string `pulumi:"objectLockLegalHoldStatus"` + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode *string `pulumi:"objectLockMode"` + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate *string `pulumi:"objectLockRetainUntilDate"` + // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`. + RequestPayer *string `pulumi:"requestPayer"` + // Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`. + ServerSideEncryption *string `pulumi:"serverSideEncryption"` + // Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:::accesspoint//object/`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`. + // + // The following arguments are optional: + Source string `pulumi:"source"` + // Specifies the algorithm to use when decrypting the source object (for example, AES256). + SourceCustomerAlgorithm *string `pulumi:"sourceCustomerAlgorithm"` + // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. + SourceCustomerKey *string `pulumi:"sourceCustomerKey"` + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + SourceCustomerKeyMd5 *string `pulumi:"sourceCustomerKeyMd5"` + // Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`. + StorageClass *string `pulumi:"storageClass"` + // Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`. + TaggingDirective *string `pulumi:"taggingDirective"` + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + WebsiteRedirect *string `pulumi:"websiteRedirect"` +} + +// The set of arguments for constructing a ObjectCopy resource. +type ObjectCopyArgs struct { + // [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`. + Acl pulumi.StringPtrInput + // Name of the bucket to put the file in. + Bucket pulumi.StringInput + BucketKeyEnabled pulumi.BoolPtrInput + // Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. + CacheControl pulumi.StringPtrInput + // Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. + ChecksumAlgorithm pulumi.StringPtrInput + // Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. + ContentDisposition pulumi.StringPtrInput + // Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. + ContentEncoding pulumi.StringPtrInput + // Language the content is in e.g., en-US or en-GB. + ContentLanguage pulumi.StringPtrInput + // Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input. + ContentType pulumi.StringPtrInput + // Copies the object if its entity tag (ETag) matches the specified tag. + CopyIfMatch pulumi.StringPtrInput + // Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfModifiedSince pulumi.StringPtrInput + // Copies the object if its entity tag (ETag) is different than the specified ETag. + CopyIfNoneMatch pulumi.StringPtrInput + // Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + CopyIfUnmodifiedSince pulumi.StringPtrInput + // Specifies the algorithm to use to when encrypting the object (for example, AES256). + CustomerAlgorithm pulumi.StringPtrInput + // Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header. + CustomerKey pulumi.StringPtrInput + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + CustomerKeyMd5 pulumi.StringPtrInput + // Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedBucketOwner pulumi.StringPtrInput + // Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. + ExpectedSourceBucketOwner pulumi.StringPtrInput + // Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). + Expires pulumi.StringPtrInput + // Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. + ForceDestroy pulumi.BoolPtrInput + // Configuration block for header grants. Documented below. Conflicts with `acl`. + Grants ObjectCopyGrantArrayInput + // Name of the object once it is in the bucket. + Key pulumi.StringInput + // Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. + KmsEncryptionContext pulumi.StringPtrInput + // Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn` + KmsKeyId pulumi.StringPtrInput + // Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). + Metadata pulumi.StringMapInput + // Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`. + MetadataDirective pulumi.StringPtrInput + // The [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. + ObjectLockLegalHoldStatus pulumi.StringPtrInput + // Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. + ObjectLockMode pulumi.StringPtrInput + // Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). + ObjectLockRetainUntilDate pulumi.StringPtrInput + // Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`. + RequestPayer pulumi.StringPtrInput + // Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`. + ServerSideEncryption pulumi.StringPtrInput + // Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:::accesspoint//object/`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`. + // + // The following arguments are optional: + Source pulumi.StringInput + // Specifies the algorithm to use when decrypting the source object (for example, AES256). + SourceCustomerAlgorithm pulumi.StringPtrInput + // Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. + SourceCustomerKey pulumi.StringPtrInput + // Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. + SourceCustomerKeyMd5 pulumi.StringPtrInput + // Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`. + StorageClass pulumi.StringPtrInput + // Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`. + TaggingDirective pulumi.StringPtrInput + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). + WebsiteRedirect pulumi.StringPtrInput +} + +func (ObjectCopyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*objectCopyArgs)(nil)).Elem() +} + +type ObjectCopyInput interface { + pulumi.Input + + ToObjectCopyOutput() ObjectCopyOutput + ToObjectCopyOutputWithContext(ctx context.Context) ObjectCopyOutput +} + +func (*ObjectCopy) ElementType() reflect.Type { + return reflect.TypeOf((**ObjectCopy)(nil)).Elem() +} + +func (i *ObjectCopy) ToObjectCopyOutput() ObjectCopyOutput { + return i.ToObjectCopyOutputWithContext(context.Background()) +} + +func (i *ObjectCopy) ToObjectCopyOutputWithContext(ctx context.Context) ObjectCopyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyOutput) +} + +// ObjectCopyArrayInput is an input type that accepts ObjectCopyArray and ObjectCopyArrayOutput values. +// You can construct a concrete instance of `ObjectCopyArrayInput` via: +// +// ObjectCopyArray{ ObjectCopyArgs{...} } +type ObjectCopyArrayInput interface { + pulumi.Input + + ToObjectCopyArrayOutput() ObjectCopyArrayOutput + ToObjectCopyArrayOutputWithContext(context.Context) ObjectCopyArrayOutput +} + +type ObjectCopyArray []ObjectCopyInput + +func (ObjectCopyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ObjectCopy)(nil)).Elem() +} + +func (i ObjectCopyArray) ToObjectCopyArrayOutput() ObjectCopyArrayOutput { + return i.ToObjectCopyArrayOutputWithContext(context.Background()) +} + +func (i ObjectCopyArray) ToObjectCopyArrayOutputWithContext(ctx context.Context) ObjectCopyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyArrayOutput) +} + +// ObjectCopyMapInput is an input type that accepts ObjectCopyMap and ObjectCopyMapOutput values. +// You can construct a concrete instance of `ObjectCopyMapInput` via: +// +// ObjectCopyMap{ "key": ObjectCopyArgs{...} } +type ObjectCopyMapInput interface { + pulumi.Input + + ToObjectCopyMapOutput() ObjectCopyMapOutput + ToObjectCopyMapOutputWithContext(context.Context) ObjectCopyMapOutput +} + +type ObjectCopyMap map[string]ObjectCopyInput + +func (ObjectCopyMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ObjectCopy)(nil)).Elem() +} + +func (i ObjectCopyMap) ToObjectCopyMapOutput() ObjectCopyMapOutput { + return i.ToObjectCopyMapOutputWithContext(context.Background()) +} + +func (i ObjectCopyMap) ToObjectCopyMapOutputWithContext(ctx context.Context) ObjectCopyMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyMapOutput) +} + +type ObjectCopyOutput struct{ *pulumi.OutputState } + +func (ObjectCopyOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ObjectCopy)(nil)).Elem() +} + +func (o ObjectCopyOutput) ToObjectCopyOutput() ObjectCopyOutput { + return o +} + +func (o ObjectCopyOutput) ToObjectCopyOutputWithContext(ctx context.Context) ObjectCopyOutput { + return o +} + +// [Canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `authenticated-read`, `aws-exec-read`, `bucket-owner-read`, and `bucket-owner-full-control`. Conflicts with `grant`. +func (o ObjectCopyOutput) Acl() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Acl }).(pulumi.StringOutput) +} + +// ARN of the object. +func (o ObjectCopyOutput) Arn() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) +} + +// Name of the bucket to put the file in. +func (o ObjectCopyOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) +} + +func (o ObjectCopyOutput) BucketKeyEnabled() pulumi.BoolOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.BoolOutput { return v.BucketKeyEnabled }).(pulumi.BoolOutput) +} + +// Specifies caching behavior along the request/reply chain Read [w3c cacheControl](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9) for further details. +func (o ObjectCopyOutput) CacheControl() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.CacheControl }).(pulumi.StringOutput) +} + +// Indicates the algorithm used to create the checksum for the object. If a value is specified and the object is encrypted with KMS, you must have permission to use the `kms:Decrypt` action. Valid values: `CRC32`, `CRC32C`, `SHA1`, `SHA256`. +func (o ObjectCopyOutput) ChecksumAlgorithm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.ChecksumAlgorithm }).(pulumi.StringPtrOutput) +} + +// The base64-encoded, 32-bit CRC32 checksum of the object. +func (o ObjectCopyOutput) ChecksumCrc32() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumCrc32 }).(pulumi.StringOutput) +} + +// The base64-encoded, 32-bit CRC32C checksum of the object. +func (o ObjectCopyOutput) ChecksumCrc32c() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumCrc32c }).(pulumi.StringOutput) +} + +// The base64-encoded, 160-bit SHA-1 digest of the object. +func (o ObjectCopyOutput) ChecksumSha1() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumSha1 }).(pulumi.StringOutput) +} + +// The base64-encoded, 256-bit SHA-256 digest of the object. +func (o ObjectCopyOutput) ChecksumSha256() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ChecksumSha256 }).(pulumi.StringOutput) +} + +// Specifies presentational information for the object. Read [w3c contentDisposition](http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1) for further information. +func (o ObjectCopyOutput) ContentDisposition() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentDisposition }).(pulumi.StringOutput) +} + +// Specifies what content encodings have been applied to the object and thus what decoding mechanisms must be applied to obtain the media-type referenced by the Content-Type header field. Read [w3c content encoding](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11) for further information. +func (o ObjectCopyOutput) ContentEncoding() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentEncoding }).(pulumi.StringOutput) +} + +// Language the content is in e.g., en-US or en-GB. +func (o ObjectCopyOutput) ContentLanguage() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentLanguage }).(pulumi.StringOutput) +} + +// Standard MIME type describing the format of the object data, e.g., `application/octet-stream`. All Valid MIME Types are valid for this input. +func (o ObjectCopyOutput) ContentType() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ContentType }).(pulumi.StringOutput) +} + +// Copies the object if its entity tag (ETag) matches the specified tag. +func (o ObjectCopyOutput) CopyIfMatch() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfMatch }).(pulumi.StringPtrOutput) +} + +// Copies the object if it has been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). +func (o ObjectCopyOutput) CopyIfModifiedSince() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfModifiedSince }).(pulumi.StringPtrOutput) +} + +// Copies the object if its entity tag (ETag) is different than the specified ETag. +func (o ObjectCopyOutput) CopyIfNoneMatch() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfNoneMatch }).(pulumi.StringPtrOutput) +} + +// Copies the object if it hasn't been modified since the specified time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). +func (o ObjectCopyOutput) CopyIfUnmodifiedSince() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CopyIfUnmodifiedSince }).(pulumi.StringPtrOutput) +} + +// Specifies the algorithm to use to when encrypting the object (for example, AES256). +func (o ObjectCopyOutput) CustomerAlgorithm() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.CustomerAlgorithm }).(pulumi.StringOutput) +} + +// Specifies the customer-provided encryption key for Amazon S3 to use in encrypting data. This value is used to store the object and then it is discarded; Amazon S3 does not store the encryption key. The key must be appropriate for use with the algorithm specified in the x-amz-server-side-encryption-customer-algorithm header. +func (o ObjectCopyOutput) CustomerKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.CustomerKey }).(pulumi.StringPtrOutput) +} + +// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. +func (o ObjectCopyOutput) CustomerKeyMd5() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.CustomerKeyMd5 }).(pulumi.StringOutput) +} + +// ETag generated for the object (an MD5 sum of the object content). For plaintext objects or objects encrypted with an AWS-managed key, the hash is an MD5 digest of the object data. For objects encrypted with a KMS key or objects created by either the Multipart Upload or Part Copy operation, the hash is not an MD5 digest, regardless of the method of encryption. More information on possible values can be found on [Common Response Headers](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonResponseHeaders.html). +func (o ObjectCopyOutput) Etag() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Etag }).(pulumi.StringOutput) +} + +// Account id of the expected destination bucket owner. If the destination bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. +func (o ObjectCopyOutput) ExpectedBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) +} + +// Account id of the expected source bucket owner. If the source bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. +func (o ObjectCopyOutput) ExpectedSourceBucketOwner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.ExpectedSourceBucketOwner }).(pulumi.StringPtrOutput) +} + +// If the object expiration is configured, this attribute will be set. +func (o ObjectCopyOutput) Expiration() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Expiration }).(pulumi.StringOutput) +} + +// Date and time at which the object is no longer cacheable, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). +func (o ObjectCopyOutput) Expires() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.Expires }).(pulumi.StringPtrOutput) +} + +// Allow the object to be deleted by removing any legal hold on any object version. Default is `false`. This value should be set to `true` only if the bucket has S3 object lock enabled. +func (o ObjectCopyOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// Configuration block for header grants. Documented below. Conflicts with `acl`. +func (o ObjectCopyOutput) Grants() ObjectCopyGrantArrayOutput { + return o.ApplyT(func(v *ObjectCopy) ObjectCopyGrantArrayOutput { return v.Grants }).(ObjectCopyGrantArrayOutput) +} + +// Name of the object once it is in the bucket. +func (o ObjectCopyOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Key }).(pulumi.StringOutput) +} + +// Specifies the AWS KMS Encryption Context to use for object encryption. The value is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. +func (o ObjectCopyOutput) KmsEncryptionContext() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.KmsEncryptionContext }).(pulumi.StringOutput) +} + +// Specifies the AWS KMS Key ARN to use for object encryption. This value is a fully qualified **ARN** of the KMS Key. If using `kms.Key`, use the exported `arn` attribute: `kmsKeyId = aws_kms_key.foo.arn` +func (o ObjectCopyOutput) KmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.KmsKeyId }).(pulumi.StringOutput) +} + +// Returns the date that the object was last modified, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8). +func (o ObjectCopyOutput) LastModified() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.LastModified }).(pulumi.StringOutput) +} + +// Map of keys/values to provision metadata (will be automatically prefixed by `x-amz-meta-`, note that only lowercase label are currently supported by the AWS Go API). +func (o ObjectCopyOutput) Metadata() pulumi.StringMapOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringMapOutput { return v.Metadata }).(pulumi.StringMapOutput) +} + +// Specifies whether the metadata is copied from the source object or replaced with metadata provided in the request. Valid values are `COPY` and `REPLACE`. +func (o ObjectCopyOutput) MetadataDirective() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.MetadataDirective }).(pulumi.StringPtrOutput) +} + +// The [legal hold](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-legal-holds) status that you want to apply to the specified object. Valid values are `ON` and `OFF`. +func (o ObjectCopyOutput) ObjectLockLegalHoldStatus() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ObjectLockLegalHoldStatus }).(pulumi.StringOutput) +} + +// Object lock [retention mode](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-modes) that you want to apply to this object. Valid values are `GOVERNANCE` and `COMPLIANCE`. +func (o ObjectCopyOutput) ObjectLockMode() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ObjectLockMode }).(pulumi.StringOutput) +} + +// Date and time, in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8), when this object's object lock will [expire](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html#object-lock-retention-periods). +func (o ObjectCopyOutput) ObjectLockRetainUntilDate() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ObjectLockRetainUntilDate }).(pulumi.StringOutput) +} + +// If present, indicates that the requester was successfully charged for the request. +func (o ObjectCopyOutput) RequestCharged() pulumi.BoolOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.BoolOutput { return v.RequestCharged }).(pulumi.BoolOutput) +} + +// Confirms that the requester knows that they will be charged for the request. Bucket owners need not specify this parameter in their requests. For information about downloading objects from requester pays buckets, see Downloading Objects in Requestor Pays Buckets (https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html) in the Amazon S3 Developer Guide. If included, the only valid value is `requester`. +func (o ObjectCopyOutput) RequestPayer() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.RequestPayer }).(pulumi.StringPtrOutput) +} + +// Specifies server-side encryption of the object in S3. Valid values are `AES256` and `aws:kms`. +func (o ObjectCopyOutput) ServerSideEncryption() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.ServerSideEncryption }).(pulumi.StringOutput) +} + +// Specifies the source object for the copy operation. You specify the value in one of two formats. For objects not accessed through an access point, specify the name of the source bucket and the key of the source object, separated by a slash (`/`). For example, `testbucket/test1.json`. For objects accessed through access points, specify the ARN of the object as accessed through the access point, in the format `arn:aws:s3:::accesspoint//object/`. For example, `arn:aws:s3:us-west-2:9999912999:accesspoint/my-access-point/object/testbucket/test1.json`. +// +// The following arguments are optional: +func (o ObjectCopyOutput) Source() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.Source }).(pulumi.StringOutput) +} + +// Specifies the algorithm to use when decrypting the source object (for example, AES256). +func (o ObjectCopyOutput) SourceCustomerAlgorithm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.SourceCustomerAlgorithm }).(pulumi.StringPtrOutput) +} + +// Specifies the customer-provided encryption key for Amazon S3 to use to decrypt the source object. The encryption key provided in this header must be one that was used when the source object was created. +func (o ObjectCopyOutput) SourceCustomerKey() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.SourceCustomerKey }).(pulumi.StringPtrOutput) +} + +// Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321. Amazon S3 uses this header for a message integrity check to ensure that the encryption key was transmitted without error. +func (o ObjectCopyOutput) SourceCustomerKeyMd5() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.SourceCustomerKeyMd5 }).(pulumi.StringPtrOutput) +} + +// Version of the copied object in the source bucket. +func (o ObjectCopyOutput) SourceVersionId() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.SourceVersionId }).(pulumi.StringOutput) +} + +// Specifies the desired [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html#AmazonS3-CopyObject-request-header-StorageClass) for the object. Defaults to `STANDARD`. +func (o ObjectCopyOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.StorageClass }).(pulumi.StringOutput) +} + +// Specifies whether the object tag-set are copied from the source object or replaced with tag-set provided in the request. Valid values are `COPY` and `REPLACE`. +func (o ObjectCopyOutput) TaggingDirective() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringPtrOutput { return v.TaggingDirective }).(pulumi.StringPtrOutput) +} + +// Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o ObjectCopyOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) +} + +// Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. +// +// Deprecated: Please use `tags` instead. +func (o ObjectCopyOutput) TagsAll() pulumi.StringMapOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) +} + +// Version ID of the newly created copy. +func (o ObjectCopyOutput) VersionId() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.VersionId }).(pulumi.StringOutput) +} + +// Specifies a target URL for [website redirect](http://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html). +func (o ObjectCopyOutput) WebsiteRedirect() pulumi.StringOutput { + return o.ApplyT(func(v *ObjectCopy) pulumi.StringOutput { return v.WebsiteRedirect }).(pulumi.StringOutput) +} + +type ObjectCopyArrayOutput struct{ *pulumi.OutputState } + +func (ObjectCopyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ObjectCopy)(nil)).Elem() +} + +func (o ObjectCopyArrayOutput) ToObjectCopyArrayOutput() ObjectCopyArrayOutput { + return o +} + +func (o ObjectCopyArrayOutput) ToObjectCopyArrayOutputWithContext(ctx context.Context) ObjectCopyArrayOutput { + return o +} + +func (o ObjectCopyArrayOutput) Index(i pulumi.IntInput) ObjectCopyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ObjectCopy { + return vs[0].([]*ObjectCopy)[vs[1].(int)] + }).(ObjectCopyOutput) +} + +type ObjectCopyMapOutput struct{ *pulumi.OutputState } + +func (ObjectCopyMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ObjectCopy)(nil)).Elem() +} + +func (o ObjectCopyMapOutput) ToObjectCopyMapOutput() ObjectCopyMapOutput { + return o +} + +func (o ObjectCopyMapOutput) ToObjectCopyMapOutputWithContext(ctx context.Context) ObjectCopyMapOutput { + return o +} + +func (o ObjectCopyMapOutput) MapIndex(k pulumi.StringInput) ObjectCopyOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ObjectCopy { + return vs[0].(map[string]*ObjectCopy)[vs[1].(string)] + }).(ObjectCopyOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyInput)(nil)).Elem(), &ObjectCopy{}) + pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyArrayInput)(nil)).Elem(), ObjectCopyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyMapInput)(nil)).Elem(), ObjectCopyMap{}) + pulumi.RegisterOutputType(ObjectCopyOutput{}) + pulumi.RegisterOutputType(ObjectCopyArrayOutput{}) + pulumi.RegisterOutputType(ObjectCopyMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiEnums.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiEnums.go new file mode 100644 index 000000000..517aa3ab7 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiEnums.go @@ -0,0 +1,196 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// See https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl +type CannedAcl string + +const ( + CannedAclPrivate = CannedAcl("private") + CannedAclPublicRead = CannedAcl("public-read") + CannedAclPublicReadWrite = CannedAcl("public-read-write") + CannedAclAwsExecRead = CannedAcl("aws-exec-read") + CannedAclAuthenticatedRead = CannedAcl("authenticated-read") + CannedAclBucketOwnerRead = CannedAcl("bucket-owner-read") + CannedAclBucketOwnerFullControl = CannedAcl("bucket-owner-full-control") + CannedAclLogDeliveryWrite = CannedAcl("log-delivery-write") +) + +func (CannedAcl) ElementType() reflect.Type { + return reflect.TypeOf((*CannedAcl)(nil)).Elem() +} + +func (e CannedAcl) ToCannedAclOutput() CannedAclOutput { + return pulumi.ToOutput(e).(CannedAclOutput) +} + +func (e CannedAcl) ToCannedAclOutputWithContext(ctx context.Context) CannedAclOutput { + return pulumi.ToOutputWithContext(ctx, e).(CannedAclOutput) +} + +func (e CannedAcl) ToCannedAclPtrOutput() CannedAclPtrOutput { + return e.ToCannedAclPtrOutputWithContext(context.Background()) +} + +func (e CannedAcl) ToCannedAclPtrOutputWithContext(ctx context.Context) CannedAclPtrOutput { + return CannedAcl(e).ToCannedAclOutputWithContext(ctx).ToCannedAclPtrOutputWithContext(ctx) +} + +func (e CannedAcl) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e CannedAcl) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e CannedAcl) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e CannedAcl) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type CannedAclOutput struct{ *pulumi.OutputState } + +func (CannedAclOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CannedAcl)(nil)).Elem() +} + +func (o CannedAclOutput) ToCannedAclOutput() CannedAclOutput { + return o +} + +func (o CannedAclOutput) ToCannedAclOutputWithContext(ctx context.Context) CannedAclOutput { + return o +} + +func (o CannedAclOutput) ToCannedAclPtrOutput() CannedAclPtrOutput { + return o.ToCannedAclPtrOutputWithContext(context.Background()) +} + +func (o CannedAclOutput) ToCannedAclPtrOutputWithContext(ctx context.Context) CannedAclPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v CannedAcl) *CannedAcl { + return &v + }).(CannedAclPtrOutput) +} + +func (o CannedAclOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o CannedAclOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e CannedAcl) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o CannedAclOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o CannedAclOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e CannedAcl) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type CannedAclPtrOutput struct{ *pulumi.OutputState } + +func (CannedAclPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CannedAcl)(nil)).Elem() +} + +func (o CannedAclPtrOutput) ToCannedAclPtrOutput() CannedAclPtrOutput { + return o +} + +func (o CannedAclPtrOutput) ToCannedAclPtrOutputWithContext(ctx context.Context) CannedAclPtrOutput { + return o +} + +func (o CannedAclPtrOutput) Elem() CannedAclOutput { + return o.ApplyT(func(v *CannedAcl) CannedAcl { + if v != nil { + return *v + } + var ret CannedAcl + return ret + }).(CannedAclOutput) +} + +func (o CannedAclPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o CannedAclPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *CannedAcl) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// CannedAclInput is an input type that accepts values of the CannedAcl enum +// A concrete instance of `CannedAclInput` can be one of the following: +// +// CannedAclPrivate +// CannedAclPublicRead +// CannedAclPublicReadWrite +// CannedAclAwsExecRead +// CannedAclAuthenticatedRead +// CannedAclBucketOwnerRead +// CannedAclBucketOwnerFullControl +// CannedAclLogDeliveryWrite +type CannedAclInput interface { + pulumi.Input + + ToCannedAclOutput() CannedAclOutput + ToCannedAclOutputWithContext(context.Context) CannedAclOutput +} + +var cannedAclPtrType = reflect.TypeOf((**CannedAcl)(nil)).Elem() + +type CannedAclPtrInput interface { + pulumi.Input + + ToCannedAclPtrOutput() CannedAclPtrOutput + ToCannedAclPtrOutputWithContext(context.Context) CannedAclPtrOutput +} + +type cannedAclPtr string + +func CannedAclPtr(v string) CannedAclPtrInput { + return (*cannedAclPtr)(&v) +} + +func (*cannedAclPtr) ElementType() reflect.Type { + return cannedAclPtrType +} + +func (in *cannedAclPtr) ToCannedAclPtrOutput() CannedAclPtrOutput { + return pulumi.ToOutput(in).(CannedAclPtrOutput) +} + +func (in *cannedAclPtr) ToCannedAclPtrOutputWithContext(ctx context.Context) CannedAclPtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(CannedAclPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*CannedAclInput)(nil)).Elem(), CannedAcl("private")) + pulumi.RegisterInputType(reflect.TypeOf((*CannedAclPtrInput)(nil)).Elem(), CannedAcl("private")) + pulumi.RegisterOutputType(CannedAclOutput{}) + pulumi.RegisterOutputType(CannedAclPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiTypes.go new file mode 100644 index 000000000..ec6052c09 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3/pulumiTypes.go @@ -0,0 +1,17636 @@ +// 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 s3 + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +type AccessPointPublicAccessBlockConfiguration struct { + // Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public. + // * PUT Object calls fail if the request includes a public ACL. + // * PUT Bucket calls fail if the request includes a public ACL. + BlockPublicAcls *bool `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy *bool `pulumi:"blockPublicPolicy"` + // Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore all public ACLs on buckets in this account and any objects that they contain. + IgnorePublicAcls *bool `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access buckets with public policies. + RestrictPublicBuckets *bool `pulumi:"restrictPublicBuckets"` +} + +// AccessPointPublicAccessBlockConfigurationInput is an input type that accepts AccessPointPublicAccessBlockConfigurationArgs and AccessPointPublicAccessBlockConfigurationOutput values. +// You can construct a concrete instance of `AccessPointPublicAccessBlockConfigurationInput` via: +// +// AccessPointPublicAccessBlockConfigurationArgs{...} +type AccessPointPublicAccessBlockConfigurationInput interface { + pulumi.Input + + ToAccessPointPublicAccessBlockConfigurationOutput() AccessPointPublicAccessBlockConfigurationOutput + ToAccessPointPublicAccessBlockConfigurationOutputWithContext(context.Context) AccessPointPublicAccessBlockConfigurationOutput +} + +type AccessPointPublicAccessBlockConfigurationArgs struct { + // Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: + // * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public. + // * PUT Object calls fail if the request includes a public ACL. + // * PUT Bucket calls fail if the request includes a public ACL. + BlockPublicAcls pulumi.BoolPtrInput `pulumi:"blockPublicAcls"` + // Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: + // * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. + BlockPublicPolicy pulumi.BoolPtrInput `pulumi:"blockPublicPolicy"` + // Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: + // * Ignore all public ACLs on buckets in this account and any objects that they contain. + IgnorePublicAcls pulumi.BoolPtrInput `pulumi:"ignorePublicAcls"` + // Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: + // * Only the bucket owner and AWS Services can access buckets with public policies. + RestrictPublicBuckets pulumi.BoolPtrInput `pulumi:"restrictPublicBuckets"` +} + +func (AccessPointPublicAccessBlockConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPointPublicAccessBlockConfiguration)(nil)).Elem() +} + +func (i AccessPointPublicAccessBlockConfigurationArgs) ToAccessPointPublicAccessBlockConfigurationOutput() AccessPointPublicAccessBlockConfigurationOutput { + return i.ToAccessPointPublicAccessBlockConfigurationOutputWithContext(context.Background()) +} + +func (i AccessPointPublicAccessBlockConfigurationArgs) ToAccessPointPublicAccessBlockConfigurationOutputWithContext(ctx context.Context) AccessPointPublicAccessBlockConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointPublicAccessBlockConfigurationOutput) +} + +func (i AccessPointPublicAccessBlockConfigurationArgs) ToAccessPointPublicAccessBlockConfigurationPtrOutput() AccessPointPublicAccessBlockConfigurationPtrOutput { + return i.ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(context.Background()) +} + +func (i AccessPointPublicAccessBlockConfigurationArgs) ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(ctx context.Context) AccessPointPublicAccessBlockConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointPublicAccessBlockConfigurationOutput).ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(ctx) +} + +// AccessPointPublicAccessBlockConfigurationPtrInput is an input type that accepts AccessPointPublicAccessBlockConfigurationArgs, AccessPointPublicAccessBlockConfigurationPtr and AccessPointPublicAccessBlockConfigurationPtrOutput values. +// You can construct a concrete instance of `AccessPointPublicAccessBlockConfigurationPtrInput` via: +// +// AccessPointPublicAccessBlockConfigurationArgs{...} +// +// or: +// +// nil +type AccessPointPublicAccessBlockConfigurationPtrInput interface { + pulumi.Input + + ToAccessPointPublicAccessBlockConfigurationPtrOutput() AccessPointPublicAccessBlockConfigurationPtrOutput + ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(context.Context) AccessPointPublicAccessBlockConfigurationPtrOutput +} + +type accessPointPublicAccessBlockConfigurationPtrType AccessPointPublicAccessBlockConfigurationArgs + +func AccessPointPublicAccessBlockConfigurationPtr(v *AccessPointPublicAccessBlockConfigurationArgs) AccessPointPublicAccessBlockConfigurationPtrInput { + return (*accessPointPublicAccessBlockConfigurationPtrType)(v) +} + +func (*accessPointPublicAccessBlockConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPointPublicAccessBlockConfiguration)(nil)).Elem() +} + +func (i *accessPointPublicAccessBlockConfigurationPtrType) ToAccessPointPublicAccessBlockConfigurationPtrOutput() AccessPointPublicAccessBlockConfigurationPtrOutput { + return i.ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *accessPointPublicAccessBlockConfigurationPtrType) ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(ctx context.Context) AccessPointPublicAccessBlockConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointPublicAccessBlockConfigurationPtrOutput) +} + +type AccessPointPublicAccessBlockConfigurationOutput struct{ *pulumi.OutputState } + +func (AccessPointPublicAccessBlockConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPointPublicAccessBlockConfiguration)(nil)).Elem() +} + +func (o AccessPointPublicAccessBlockConfigurationOutput) ToAccessPointPublicAccessBlockConfigurationOutput() AccessPointPublicAccessBlockConfigurationOutput { + return o +} + +func (o AccessPointPublicAccessBlockConfigurationOutput) ToAccessPointPublicAccessBlockConfigurationOutputWithContext(ctx context.Context) AccessPointPublicAccessBlockConfigurationOutput { + return o +} + +func (o AccessPointPublicAccessBlockConfigurationOutput) ToAccessPointPublicAccessBlockConfigurationPtrOutput() AccessPointPublicAccessBlockConfigurationPtrOutput { + return o.ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(context.Background()) +} + +func (o AccessPointPublicAccessBlockConfigurationOutput) ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(ctx context.Context) AccessPointPublicAccessBlockConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessPointPublicAccessBlockConfiguration) *AccessPointPublicAccessBlockConfiguration { + return &v + }).(AccessPointPublicAccessBlockConfigurationPtrOutput) +} + +// Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: +// * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public. +// * PUT Object calls fail if the request includes a public ACL. +// * PUT Bucket calls fail if the request includes a public ACL. +func (o AccessPointPublicAccessBlockConfigurationOutput) BlockPublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v AccessPointPublicAccessBlockConfiguration) *bool { return v.BlockPublicAcls }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: +// * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. +func (o AccessPointPublicAccessBlockConfigurationOutput) BlockPublicPolicy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v AccessPointPublicAccessBlockConfiguration) *bool { return v.BlockPublicPolicy }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: +// * Ignore all public ACLs on buckets in this account and any objects that they contain. +func (o AccessPointPublicAccessBlockConfigurationOutput) IgnorePublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v AccessPointPublicAccessBlockConfiguration) *bool { return v.IgnorePublicAcls }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: +// * Only the bucket owner and AWS Services can access buckets with public policies. +func (o AccessPointPublicAccessBlockConfigurationOutput) RestrictPublicBuckets() pulumi.BoolPtrOutput { + return o.ApplyT(func(v AccessPointPublicAccessBlockConfiguration) *bool { return v.RestrictPublicBuckets }).(pulumi.BoolPtrOutput) +} + +type AccessPointPublicAccessBlockConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (AccessPointPublicAccessBlockConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPointPublicAccessBlockConfiguration)(nil)).Elem() +} + +func (o AccessPointPublicAccessBlockConfigurationPtrOutput) ToAccessPointPublicAccessBlockConfigurationPtrOutput() AccessPointPublicAccessBlockConfigurationPtrOutput { + return o +} + +func (o AccessPointPublicAccessBlockConfigurationPtrOutput) ToAccessPointPublicAccessBlockConfigurationPtrOutputWithContext(ctx context.Context) AccessPointPublicAccessBlockConfigurationPtrOutput { + return o +} + +func (o AccessPointPublicAccessBlockConfigurationPtrOutput) Elem() AccessPointPublicAccessBlockConfigurationOutput { + return o.ApplyT(func(v *AccessPointPublicAccessBlockConfiguration) AccessPointPublicAccessBlockConfiguration { + if v != nil { + return *v + } + var ret AccessPointPublicAccessBlockConfiguration + return ret + }).(AccessPointPublicAccessBlockConfigurationOutput) +} + +// Whether Amazon S3 should block public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing policies or ACLs. When set to `true` causes the following behavior: +// * PUT Bucket acl and PUT Object acl calls fail if the specified ACL is public. +// * PUT Object calls fail if the request includes a public ACL. +// * PUT Bucket calls fail if the request includes a public ACL. +func (o AccessPointPublicAccessBlockConfigurationPtrOutput) BlockPublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccessPointPublicAccessBlockConfiguration) *bool { + if v == nil { + return nil + } + return v.BlockPublicAcls + }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should block public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect existing bucket policies. When set to `true` causes Amazon S3 to: +// * Reject calls to PUT Bucket policy if the specified bucket policy allows public access. +func (o AccessPointPublicAccessBlockConfigurationPtrOutput) BlockPublicPolicy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccessPointPublicAccessBlockConfiguration) *bool { + if v == nil { + return nil + } + return v.BlockPublicPolicy + }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should ignore public ACLs for buckets in this account. Defaults to `true`. Enabling this setting does not affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. When set to `true` causes Amazon S3 to: +// * Ignore all public ACLs on buckets in this account and any objects that they contain. +func (o AccessPointPublicAccessBlockConfigurationPtrOutput) IgnorePublicAcls() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccessPointPublicAccessBlockConfiguration) *bool { + if v == nil { + return nil + } + return v.IgnorePublicAcls + }).(pulumi.BoolPtrOutput) +} + +// Whether Amazon S3 should restrict public bucket policies for buckets in this account. Defaults to `true`. Enabling this setting does not affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. When set to `true`: +// * Only the bucket owner and AWS Services can access buckets with public policies. +func (o AccessPointPublicAccessBlockConfigurationPtrOutput) RestrictPublicBuckets() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *AccessPointPublicAccessBlockConfiguration) *bool { + if v == nil { + return nil + } + return v.RestrictPublicBuckets + }).(pulumi.BoolPtrOutput) +} + +type AccessPointVpcConfiguration struct { + // This access point will only allow connections from the specified VPC ID. + VpcId string `pulumi:"vpcId"` +} + +// AccessPointVpcConfigurationInput is an input type that accepts AccessPointVpcConfigurationArgs and AccessPointVpcConfigurationOutput values. +// You can construct a concrete instance of `AccessPointVpcConfigurationInput` via: +// +// AccessPointVpcConfigurationArgs{...} +type AccessPointVpcConfigurationInput interface { + pulumi.Input + + ToAccessPointVpcConfigurationOutput() AccessPointVpcConfigurationOutput + ToAccessPointVpcConfigurationOutputWithContext(context.Context) AccessPointVpcConfigurationOutput +} + +type AccessPointVpcConfigurationArgs struct { + // This access point will only allow connections from the specified VPC ID. + VpcId pulumi.StringInput `pulumi:"vpcId"` +} + +func (AccessPointVpcConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPointVpcConfiguration)(nil)).Elem() +} + +func (i AccessPointVpcConfigurationArgs) ToAccessPointVpcConfigurationOutput() AccessPointVpcConfigurationOutput { + return i.ToAccessPointVpcConfigurationOutputWithContext(context.Background()) +} + +func (i AccessPointVpcConfigurationArgs) ToAccessPointVpcConfigurationOutputWithContext(ctx context.Context) AccessPointVpcConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointVpcConfigurationOutput) +} + +func (i AccessPointVpcConfigurationArgs) ToAccessPointVpcConfigurationPtrOutput() AccessPointVpcConfigurationPtrOutput { + return i.ToAccessPointVpcConfigurationPtrOutputWithContext(context.Background()) +} + +func (i AccessPointVpcConfigurationArgs) ToAccessPointVpcConfigurationPtrOutputWithContext(ctx context.Context) AccessPointVpcConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointVpcConfigurationOutput).ToAccessPointVpcConfigurationPtrOutputWithContext(ctx) +} + +// AccessPointVpcConfigurationPtrInput is an input type that accepts AccessPointVpcConfigurationArgs, AccessPointVpcConfigurationPtr and AccessPointVpcConfigurationPtrOutput values. +// You can construct a concrete instance of `AccessPointVpcConfigurationPtrInput` via: +// +// AccessPointVpcConfigurationArgs{...} +// +// or: +// +// nil +type AccessPointVpcConfigurationPtrInput interface { + pulumi.Input + + ToAccessPointVpcConfigurationPtrOutput() AccessPointVpcConfigurationPtrOutput + ToAccessPointVpcConfigurationPtrOutputWithContext(context.Context) AccessPointVpcConfigurationPtrOutput +} + +type accessPointVpcConfigurationPtrType AccessPointVpcConfigurationArgs + +func AccessPointVpcConfigurationPtr(v *AccessPointVpcConfigurationArgs) AccessPointVpcConfigurationPtrInput { + return (*accessPointVpcConfigurationPtrType)(v) +} + +func (*accessPointVpcConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPointVpcConfiguration)(nil)).Elem() +} + +func (i *accessPointVpcConfigurationPtrType) ToAccessPointVpcConfigurationPtrOutput() AccessPointVpcConfigurationPtrOutput { + return i.ToAccessPointVpcConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *accessPointVpcConfigurationPtrType) ToAccessPointVpcConfigurationPtrOutputWithContext(ctx context.Context) AccessPointVpcConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AccessPointVpcConfigurationPtrOutput) +} + +type AccessPointVpcConfigurationOutput struct{ *pulumi.OutputState } + +func (AccessPointVpcConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AccessPointVpcConfiguration)(nil)).Elem() +} + +func (o AccessPointVpcConfigurationOutput) ToAccessPointVpcConfigurationOutput() AccessPointVpcConfigurationOutput { + return o +} + +func (o AccessPointVpcConfigurationOutput) ToAccessPointVpcConfigurationOutputWithContext(ctx context.Context) AccessPointVpcConfigurationOutput { + return o +} + +func (o AccessPointVpcConfigurationOutput) ToAccessPointVpcConfigurationPtrOutput() AccessPointVpcConfigurationPtrOutput { + return o.ToAccessPointVpcConfigurationPtrOutputWithContext(context.Background()) +} + +func (o AccessPointVpcConfigurationOutput) ToAccessPointVpcConfigurationPtrOutputWithContext(ctx context.Context) AccessPointVpcConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AccessPointVpcConfiguration) *AccessPointVpcConfiguration { + return &v + }).(AccessPointVpcConfigurationPtrOutput) +} + +// This access point will only allow connections from the specified VPC ID. +func (o AccessPointVpcConfigurationOutput) VpcId() pulumi.StringOutput { + return o.ApplyT(func(v AccessPointVpcConfiguration) string { return v.VpcId }).(pulumi.StringOutput) +} + +type AccessPointVpcConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (AccessPointVpcConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AccessPointVpcConfiguration)(nil)).Elem() +} + +func (o AccessPointVpcConfigurationPtrOutput) ToAccessPointVpcConfigurationPtrOutput() AccessPointVpcConfigurationPtrOutput { + return o +} + +func (o AccessPointVpcConfigurationPtrOutput) ToAccessPointVpcConfigurationPtrOutputWithContext(ctx context.Context) AccessPointVpcConfigurationPtrOutput { + return o +} + +func (o AccessPointVpcConfigurationPtrOutput) Elem() AccessPointVpcConfigurationOutput { + return o.ApplyT(func(v *AccessPointVpcConfiguration) AccessPointVpcConfiguration { + if v != nil { + return *v + } + var ret AccessPointVpcConfiguration + return ret + }).(AccessPointVpcConfigurationOutput) +} + +// This access point will only allow connections from the specified VPC ID. +func (o AccessPointVpcConfigurationPtrOutput) VpcId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AccessPointVpcConfiguration) *string { + if v == nil { + return nil + } + return &v.VpcId + }).(pulumi.StringPtrOutput) +} + +type AnalyticsConfigurationFilter struct { + // Object prefix for filtering. + Prefix *string `pulumi:"prefix"` + // Set of object tags for filtering. + Tags map[string]string `pulumi:"tags"` +} + +// AnalyticsConfigurationFilterInput is an input type that accepts AnalyticsConfigurationFilterArgs and AnalyticsConfigurationFilterOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationFilterInput` via: +// +// AnalyticsConfigurationFilterArgs{...} +type AnalyticsConfigurationFilterInput interface { + pulumi.Input + + ToAnalyticsConfigurationFilterOutput() AnalyticsConfigurationFilterOutput + ToAnalyticsConfigurationFilterOutputWithContext(context.Context) AnalyticsConfigurationFilterOutput +} + +type AnalyticsConfigurationFilterArgs struct { + // Object prefix for filtering. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Set of object tags for filtering. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (AnalyticsConfigurationFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationFilter)(nil)).Elem() +} + +func (i AnalyticsConfigurationFilterArgs) ToAnalyticsConfigurationFilterOutput() AnalyticsConfigurationFilterOutput { + return i.ToAnalyticsConfigurationFilterOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationFilterArgs) ToAnalyticsConfigurationFilterOutputWithContext(ctx context.Context) AnalyticsConfigurationFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationFilterOutput) +} + +func (i AnalyticsConfigurationFilterArgs) ToAnalyticsConfigurationFilterPtrOutput() AnalyticsConfigurationFilterPtrOutput { + return i.ToAnalyticsConfigurationFilterPtrOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationFilterArgs) ToAnalyticsConfigurationFilterPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationFilterOutput).ToAnalyticsConfigurationFilterPtrOutputWithContext(ctx) +} + +// AnalyticsConfigurationFilterPtrInput is an input type that accepts AnalyticsConfigurationFilterArgs, AnalyticsConfigurationFilterPtr and AnalyticsConfigurationFilterPtrOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationFilterPtrInput` via: +// +// AnalyticsConfigurationFilterArgs{...} +// +// or: +// +// nil +type AnalyticsConfigurationFilterPtrInput interface { + pulumi.Input + + ToAnalyticsConfigurationFilterPtrOutput() AnalyticsConfigurationFilterPtrOutput + ToAnalyticsConfigurationFilterPtrOutputWithContext(context.Context) AnalyticsConfigurationFilterPtrOutput +} + +type analyticsConfigurationFilterPtrType AnalyticsConfigurationFilterArgs + +func AnalyticsConfigurationFilterPtr(v *AnalyticsConfigurationFilterArgs) AnalyticsConfigurationFilterPtrInput { + return (*analyticsConfigurationFilterPtrType)(v) +} + +func (*analyticsConfigurationFilterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationFilter)(nil)).Elem() +} + +func (i *analyticsConfigurationFilterPtrType) ToAnalyticsConfigurationFilterPtrOutput() AnalyticsConfigurationFilterPtrOutput { + return i.ToAnalyticsConfigurationFilterPtrOutputWithContext(context.Background()) +} + +func (i *analyticsConfigurationFilterPtrType) ToAnalyticsConfigurationFilterPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationFilterPtrOutput) +} + +type AnalyticsConfigurationFilterOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationFilter)(nil)).Elem() +} + +func (o AnalyticsConfigurationFilterOutput) ToAnalyticsConfigurationFilterOutput() AnalyticsConfigurationFilterOutput { + return o +} + +func (o AnalyticsConfigurationFilterOutput) ToAnalyticsConfigurationFilterOutputWithContext(ctx context.Context) AnalyticsConfigurationFilterOutput { + return o +} + +func (o AnalyticsConfigurationFilterOutput) ToAnalyticsConfigurationFilterPtrOutput() AnalyticsConfigurationFilterPtrOutput { + return o.ToAnalyticsConfigurationFilterPtrOutputWithContext(context.Background()) +} + +func (o AnalyticsConfigurationFilterOutput) ToAnalyticsConfigurationFilterPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationFilterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AnalyticsConfigurationFilter) *AnalyticsConfigurationFilter { + return &v + }).(AnalyticsConfigurationFilterPtrOutput) +} + +// Object prefix for filtering. +func (o AnalyticsConfigurationFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v AnalyticsConfigurationFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Set of object tags for filtering. +func (o AnalyticsConfigurationFilterOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v AnalyticsConfigurationFilter) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type AnalyticsConfigurationFilterPtrOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationFilterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationFilter)(nil)).Elem() +} + +func (o AnalyticsConfigurationFilterPtrOutput) ToAnalyticsConfigurationFilterPtrOutput() AnalyticsConfigurationFilterPtrOutput { + return o +} + +func (o AnalyticsConfigurationFilterPtrOutput) ToAnalyticsConfigurationFilterPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationFilterPtrOutput { + return o +} + +func (o AnalyticsConfigurationFilterPtrOutput) Elem() AnalyticsConfigurationFilterOutput { + return o.ApplyT(func(v *AnalyticsConfigurationFilter) AnalyticsConfigurationFilter { + if v != nil { + return *v + } + var ret AnalyticsConfigurationFilter + return ret + }).(AnalyticsConfigurationFilterOutput) +} + +// Object prefix for filtering. +func (o AnalyticsConfigurationFilterPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationFilter) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// Set of object tags for filtering. +func (o AnalyticsConfigurationFilterPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *AnalyticsConfigurationFilter) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +type AnalyticsConfigurationStorageClassAnalysis struct { + // Data export configuration (documented below). + DataExport AnalyticsConfigurationStorageClassAnalysisDataExport `pulumi:"dataExport"` +} + +// AnalyticsConfigurationStorageClassAnalysisInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisArgs and AnalyticsConfigurationStorageClassAnalysisOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisArgs{...} +type AnalyticsConfigurationStorageClassAnalysisInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisOutput() AnalyticsConfigurationStorageClassAnalysisOutput + ToAnalyticsConfigurationStorageClassAnalysisOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisOutput +} + +type AnalyticsConfigurationStorageClassAnalysisArgs struct { + // Data export configuration (documented below). + DataExport AnalyticsConfigurationStorageClassAnalysisDataExportInput `pulumi:"dataExport"` +} + +func (AnalyticsConfigurationStorageClassAnalysisArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysis)(nil)).Elem() +} + +func (i AnalyticsConfigurationStorageClassAnalysisArgs) ToAnalyticsConfigurationStorageClassAnalysisOutput() AnalyticsConfigurationStorageClassAnalysisOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisArgs) ToAnalyticsConfigurationStorageClassAnalysisOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisOutput) +} + +func (i AnalyticsConfigurationStorageClassAnalysisArgs) ToAnalyticsConfigurationStorageClassAnalysisPtrOutput() AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisArgs) ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisOutput).ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(ctx) +} + +// AnalyticsConfigurationStorageClassAnalysisPtrInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisArgs, AnalyticsConfigurationStorageClassAnalysisPtr and AnalyticsConfigurationStorageClassAnalysisPtrOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisPtrInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisArgs{...} +// +// or: +// +// nil +type AnalyticsConfigurationStorageClassAnalysisPtrInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisPtrOutput() AnalyticsConfigurationStorageClassAnalysisPtrOutput + ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisPtrOutput +} + +type analyticsConfigurationStorageClassAnalysisPtrType AnalyticsConfigurationStorageClassAnalysisArgs + +func AnalyticsConfigurationStorageClassAnalysisPtr(v *AnalyticsConfigurationStorageClassAnalysisArgs) AnalyticsConfigurationStorageClassAnalysisPtrInput { + return (*analyticsConfigurationStorageClassAnalysisPtrType)(v) +} + +func (*analyticsConfigurationStorageClassAnalysisPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysis)(nil)).Elem() +} + +func (i *analyticsConfigurationStorageClassAnalysisPtrType) ToAnalyticsConfigurationStorageClassAnalysisPtrOutput() AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(context.Background()) +} + +func (i *analyticsConfigurationStorageClassAnalysisPtrType) ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysis)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisOutput) ToAnalyticsConfigurationStorageClassAnalysisOutput() AnalyticsConfigurationStorageClassAnalysisOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisOutput) ToAnalyticsConfigurationStorageClassAnalysisOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisOutput) ToAnalyticsConfigurationStorageClassAnalysisPtrOutput() AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return o.ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(context.Background()) +} + +func (o AnalyticsConfigurationStorageClassAnalysisOutput) ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AnalyticsConfigurationStorageClassAnalysis) *AnalyticsConfigurationStorageClassAnalysis { + return &v + }).(AnalyticsConfigurationStorageClassAnalysisPtrOutput) +} + +// Data export configuration (documented below). +func (o AnalyticsConfigurationStorageClassAnalysisOutput) DataExport() AnalyticsConfigurationStorageClassAnalysisDataExportOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysis) AnalyticsConfigurationStorageClassAnalysisDataExport { + return v.DataExport + }).(AnalyticsConfigurationStorageClassAnalysisDataExportOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisPtrOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysis)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisPtrOutput() AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisPtrOutput) Elem() AnalyticsConfigurationStorageClassAnalysisOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysis) AnalyticsConfigurationStorageClassAnalysis { + if v != nil { + return *v + } + var ret AnalyticsConfigurationStorageClassAnalysis + return ret + }).(AnalyticsConfigurationStorageClassAnalysisOutput) +} + +// Data export configuration (documented below). +func (o AnalyticsConfigurationStorageClassAnalysisPtrOutput) DataExport() AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysis) *AnalyticsConfigurationStorageClassAnalysisDataExport { + if v == nil { + return nil + } + return &v.DataExport + }).(AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExport struct { + // Specifies the destination for the exported analytics data (documented below). + Destination AnalyticsConfigurationStorageClassAnalysisDataExportDestination `pulumi:"destination"` + // Schema version of exported analytics data. Allowed values: `V_1`. Default value: `V_1`. + OutputSchemaVersion *string `pulumi:"outputSchemaVersion"` +} + +// AnalyticsConfigurationStorageClassAnalysisDataExportInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisDataExportArgs and AnalyticsConfigurationStorageClassAnalysisDataExportOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisDataExportInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisDataExportArgs{...} +type AnalyticsConfigurationStorageClassAnalysisDataExportInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisDataExportOutput() AnalyticsConfigurationStorageClassAnalysisDataExportOutput + ToAnalyticsConfigurationStorageClassAnalysisDataExportOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportOutput +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportArgs struct { + // Specifies the destination for the exported analytics data (documented below). + Destination AnalyticsConfigurationStorageClassAnalysisDataExportDestinationInput `pulumi:"destination"` + // Schema version of exported analytics data. Allowed values: `V_1`. Default value: `V_1`. + OutputSchemaVersion pulumi.StringPtrInput `pulumi:"outputSchemaVersion"` +} + +func (AnalyticsConfigurationStorageClassAnalysisDataExportArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExport)(nil)).Elem() +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportOutput() AnalyticsConfigurationStorageClassAnalysisDataExportOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportOutput) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportOutput).ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(ctx) +} + +// AnalyticsConfigurationStorageClassAnalysisDataExportPtrInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisDataExportArgs, AnalyticsConfigurationStorageClassAnalysisDataExportPtr and AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisDataExportPtrInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisDataExportArgs{...} +// +// or: +// +// nil +type AnalyticsConfigurationStorageClassAnalysisDataExportPtrInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput + ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput +} + +type analyticsConfigurationStorageClassAnalysisDataExportPtrType AnalyticsConfigurationStorageClassAnalysisDataExportArgs + +func AnalyticsConfigurationStorageClassAnalysisDataExportPtr(v *AnalyticsConfigurationStorageClassAnalysisDataExportArgs) AnalyticsConfigurationStorageClassAnalysisDataExportPtrInput { + return (*analyticsConfigurationStorageClassAnalysisDataExportPtrType)(v) +} + +func (*analyticsConfigurationStorageClassAnalysisDataExportPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysisDataExport)(nil)).Elem() +} + +func (i *analyticsConfigurationStorageClassAnalysisDataExportPtrType) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(context.Background()) +} + +func (i *analyticsConfigurationStorageClassAnalysisDataExportPtrType) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisDataExportOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExport)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportOutput() AnalyticsConfigurationStorageClassAnalysisDataExportOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return o.ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(context.Background()) +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AnalyticsConfigurationStorageClassAnalysisDataExport) *AnalyticsConfigurationStorageClassAnalysisDataExport { + return &v + }).(AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) +} + +// Specifies the destination for the exported analytics data (documented below). +func (o AnalyticsConfigurationStorageClassAnalysisDataExportOutput) Destination() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysisDataExport) AnalyticsConfigurationStorageClassAnalysisDataExportDestination { + return v.Destination + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) +} + +// Schema version of exported analytics data. Allowed values: `V_1`. Default value: `V_1`. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportOutput) OutputSchemaVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysisDataExport) *string { return v.OutputSchemaVersion }).(pulumi.StringPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysisDataExport)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) Elem() AnalyticsConfigurationStorageClassAnalysisDataExportOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExport) AnalyticsConfigurationStorageClassAnalysisDataExport { + if v != nil { + return *v + } + var ret AnalyticsConfigurationStorageClassAnalysisDataExport + return ret + }).(AnalyticsConfigurationStorageClassAnalysisDataExportOutput) +} + +// Specifies the destination for the exported analytics data (documented below). +func (o AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) Destination() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExport) *AnalyticsConfigurationStorageClassAnalysisDataExportDestination { + if v == nil { + return nil + } + return &v.Destination + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) +} + +// Schema version of exported analytics data. Allowed values: `V_1`. Default value: `V_1`. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput) OutputSchemaVersion() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExport) *string { + if v == nil { + return nil + } + return v.OutputSchemaVersion + }).(pulumi.StringPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestination struct { + // Analytics data export currently only supports an S3 bucket destination (documented below). + S3BucketDestination AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination `pulumi:"s3BucketDestination"` +} + +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs and AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisDataExportDestinationInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs{...} +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs struct { + // Analytics data export currently only supports an S3 bucket destination (documented below). + S3BucketDestination AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationInput `pulumi:"s3BucketDestination"` +} + +func (AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestination)(nil)).Elem() +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput).ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(ctx) +} + +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs, AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtr and AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs{...} +// +// or: +// +// nil +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput +} + +type analyticsConfigurationStorageClassAnalysisDataExportDestinationPtrType AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs + +func AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtr(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrInput { + return (*analyticsConfigurationStorageClassAnalysisDataExportDestinationPtrType)(v) +} + +func (*analyticsConfigurationStorageClassAnalysisDataExportDestinationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysisDataExportDestination)(nil)).Elem() +} + +func (i *analyticsConfigurationStorageClassAnalysisDataExportDestinationPtrType) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(context.Background()) +} + +func (i *analyticsConfigurationStorageClassAnalysisDataExportDestinationPtrType) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestination)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return o.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(context.Background()) +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AnalyticsConfigurationStorageClassAnalysisDataExportDestination) *AnalyticsConfigurationStorageClassAnalysisDataExportDestination { + return &v + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) +} + +// Analytics data export currently only supports an S3 bucket destination (documented below). +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) S3BucketDestination() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysisDataExportDestination) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination { + return v.S3BucketDestination + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysisDataExportDestination)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) Elem() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestination) AnalyticsConfigurationStorageClassAnalysisDataExportDestination { + if v != nil { + return *v + } + var ret AnalyticsConfigurationStorageClassAnalysisDataExportDestination + return ret + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput) +} + +// Analytics data export currently only supports an S3 bucket destination (documented below). +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput) S3BucketDestination() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestination) *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination { + if v == nil { + return nil + } + return &v.S3BucketDestination + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination struct { + // Account ID that owns the destination bucket. + BucketAccountId *string `pulumi:"bucketAccountId"` + // ARN of the destination bucket. + BucketArn string `pulumi:"bucketArn"` + // Output format of exported analytics data. Allowed values: `CSV`. Default value: `CSV`. + Format *string `pulumi:"format"` + // Prefix to append to exported analytics data. + Prefix *string `pulumi:"prefix"` +} + +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs and AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs{...} +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs struct { + // Account ID that owns the destination bucket. + BucketAccountId pulumi.StringPtrInput `pulumi:"bucketAccountId"` + // ARN of the destination bucket. + BucketArn pulumi.StringInput `pulumi:"bucketArn"` + // Output format of exported analytics data. Allowed values: `CSV`. Default value: `CSV`. + Format pulumi.StringPtrInput `pulumi:"format"` + // Prefix to append to exported analytics data. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` +} + +func (AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination)(nil)).Elem() +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(context.Background()) +} + +func (i AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput).ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(ctx) +} + +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrInput is an input type that accepts AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs, AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtr and AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput values. +// You can construct a concrete instance of `AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrInput` via: +// +// AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs{...} +// +// or: +// +// nil +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrInput interface { + pulumi.Input + + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput + ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput +} + +type analyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrType AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs + +func AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtr(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrInput { + return (*analyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrType)(v) +} + +func (*analyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination)(nil)).Elem() +} + +func (i *analyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrType) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return i.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(context.Background()) +} + +func (i *analyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrType) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return o.ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(context.Background()) +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination { + return &v + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) +} + +// Account ID that owns the destination bucket. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) BucketAccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *string { + return v.BucketAccountId + }).(pulumi.StringPtrOutput) +} + +// ARN of the destination bucket. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) BucketArn() pulumi.StringOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) string { + return v.BucketArn + }).(pulumi.StringOutput) +} + +// Output format of exported analytics data. Allowed values: `CSV`. Default value: `CSV`. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) Format() pulumi.StringPtrOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *string { + return v.Format + }).(pulumi.StringPtrOutput) +} + +// Prefix to append to exported analytics data. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *string { + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +type AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput struct{ *pulumi.OutputState } + +func (AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination)(nil)).Elem() +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) ToAnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutputWithContext(ctx context.Context) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput { + return o +} + +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) Elem() AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination { + if v != nil { + return *v + } + var ret AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination + return ret + }).(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput) +} + +// Account ID that owns the destination bucket. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) BucketAccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *string { + if v == nil { + return nil + } + return v.BucketAccountId + }).(pulumi.StringPtrOutput) +} + +// ARN of the destination bucket. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) BucketArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *string { + if v == nil { + return nil + } + return &v.BucketArn + }).(pulumi.StringPtrOutput) +} + +// Output format of exported analytics data. Allowed values: `CSV`. Default value: `CSV`. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) Format() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *string { + if v == nil { + return nil + } + return v.Format + }).(pulumi.StringPtrOutput) +} + +// Prefix to append to exported analytics data. +func (o AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestination) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +type BucketAclV2AccessControlPolicy struct { + // Set of `grant` configuration blocks. See below. + Grants []BucketAclV2AccessControlPolicyGrant `pulumi:"grants"` + // Configuration block for the bucket owner's display name and ID. See below. + Owner BucketAclV2AccessControlPolicyOwner `pulumi:"owner"` +} + +// BucketAclV2AccessControlPolicyInput is an input type that accepts BucketAclV2AccessControlPolicyArgs and BucketAclV2AccessControlPolicyOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyInput` via: +// +// BucketAclV2AccessControlPolicyArgs{...} +type BucketAclV2AccessControlPolicyInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyOutput() BucketAclV2AccessControlPolicyOutput + ToBucketAclV2AccessControlPolicyOutputWithContext(context.Context) BucketAclV2AccessControlPolicyOutput +} + +type BucketAclV2AccessControlPolicyArgs struct { + // Set of `grant` configuration blocks. See below. + Grants BucketAclV2AccessControlPolicyGrantArrayInput `pulumi:"grants"` + // Configuration block for the bucket owner's display name and ID. See below. + Owner BucketAclV2AccessControlPolicyOwnerInput `pulumi:"owner"` +} + +func (BucketAclV2AccessControlPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicy)(nil)).Elem() +} + +func (i BucketAclV2AccessControlPolicyArgs) ToBucketAclV2AccessControlPolicyOutput() BucketAclV2AccessControlPolicyOutput { + return i.ToBucketAclV2AccessControlPolicyOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyArgs) ToBucketAclV2AccessControlPolicyOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyOutput) +} + +func (i BucketAclV2AccessControlPolicyArgs) ToBucketAclV2AccessControlPolicyPtrOutput() BucketAclV2AccessControlPolicyPtrOutput { + return i.ToBucketAclV2AccessControlPolicyPtrOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyArgs) ToBucketAclV2AccessControlPolicyPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyOutput).ToBucketAclV2AccessControlPolicyPtrOutputWithContext(ctx) +} + +// BucketAclV2AccessControlPolicyPtrInput is an input type that accepts BucketAclV2AccessControlPolicyArgs, BucketAclV2AccessControlPolicyPtr and BucketAclV2AccessControlPolicyPtrOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyPtrInput` via: +// +// BucketAclV2AccessControlPolicyArgs{...} +// +// or: +// +// nil +type BucketAclV2AccessControlPolicyPtrInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyPtrOutput() BucketAclV2AccessControlPolicyPtrOutput + ToBucketAclV2AccessControlPolicyPtrOutputWithContext(context.Context) BucketAclV2AccessControlPolicyPtrOutput +} + +type bucketAclV2AccessControlPolicyPtrType BucketAclV2AccessControlPolicyArgs + +func BucketAclV2AccessControlPolicyPtr(v *BucketAclV2AccessControlPolicyArgs) BucketAclV2AccessControlPolicyPtrInput { + return (*bucketAclV2AccessControlPolicyPtrType)(v) +} + +func (*bucketAclV2AccessControlPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2AccessControlPolicy)(nil)).Elem() +} + +func (i *bucketAclV2AccessControlPolicyPtrType) ToBucketAclV2AccessControlPolicyPtrOutput() BucketAclV2AccessControlPolicyPtrOutput { + return i.ToBucketAclV2AccessControlPolicyPtrOutputWithContext(context.Background()) +} + +func (i *bucketAclV2AccessControlPolicyPtrType) ToBucketAclV2AccessControlPolicyPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyPtrOutput) +} + +type BucketAclV2AccessControlPolicyOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicy)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyOutput) ToBucketAclV2AccessControlPolicyOutput() BucketAclV2AccessControlPolicyOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyOutput) ToBucketAclV2AccessControlPolicyOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyOutput) ToBucketAclV2AccessControlPolicyPtrOutput() BucketAclV2AccessControlPolicyPtrOutput { + return o.ToBucketAclV2AccessControlPolicyPtrOutputWithContext(context.Background()) +} + +func (o BucketAclV2AccessControlPolicyOutput) ToBucketAclV2AccessControlPolicyPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketAclV2AccessControlPolicy) *BucketAclV2AccessControlPolicy { + return &v + }).(BucketAclV2AccessControlPolicyPtrOutput) +} + +// Set of `grant` configuration blocks. See below. +func (o BucketAclV2AccessControlPolicyOutput) Grants() BucketAclV2AccessControlPolicyGrantArrayOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicy) []BucketAclV2AccessControlPolicyGrant { return v.Grants }).(BucketAclV2AccessControlPolicyGrantArrayOutput) +} + +// Configuration block for the bucket owner's display name and ID. See below. +func (o BucketAclV2AccessControlPolicyOutput) Owner() BucketAclV2AccessControlPolicyOwnerOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicy) BucketAclV2AccessControlPolicyOwner { return v.Owner }).(BucketAclV2AccessControlPolicyOwnerOutput) +} + +type BucketAclV2AccessControlPolicyPtrOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2AccessControlPolicy)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyPtrOutput) ToBucketAclV2AccessControlPolicyPtrOutput() BucketAclV2AccessControlPolicyPtrOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyPtrOutput) ToBucketAclV2AccessControlPolicyPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyPtrOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyPtrOutput) Elem() BucketAclV2AccessControlPolicyOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicy) BucketAclV2AccessControlPolicy { + if v != nil { + return *v + } + var ret BucketAclV2AccessControlPolicy + return ret + }).(BucketAclV2AccessControlPolicyOutput) +} + +// Set of `grant` configuration blocks. See below. +func (o BucketAclV2AccessControlPolicyPtrOutput) Grants() BucketAclV2AccessControlPolicyGrantArrayOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicy) []BucketAclV2AccessControlPolicyGrant { + if v == nil { + return nil + } + return v.Grants + }).(BucketAclV2AccessControlPolicyGrantArrayOutput) +} + +// Configuration block for the bucket owner's display name and ID. See below. +func (o BucketAclV2AccessControlPolicyPtrOutput) Owner() BucketAclV2AccessControlPolicyOwnerPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicy) *BucketAclV2AccessControlPolicyOwner { + if v == nil { + return nil + } + return &v.Owner + }).(BucketAclV2AccessControlPolicyOwnerPtrOutput) +} + +type BucketAclV2AccessControlPolicyGrant struct { + // Configuration block for the person being granted permissions. See below. + Grantee *BucketAclV2AccessControlPolicyGrantGrantee `pulumi:"grantee"` + // Logging permissions assigned to the grantee for the bucket. Valid values: `FULL_CONTROL`, `WRITE`, `WRITE_ACP`, `READ`, `READ_ACP`. See [What permissions can I grant?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#permissions) for more details about what each permission means in the context of buckets. + Permission string `pulumi:"permission"` +} + +// BucketAclV2AccessControlPolicyGrantInput is an input type that accepts BucketAclV2AccessControlPolicyGrantArgs and BucketAclV2AccessControlPolicyGrantOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyGrantInput` via: +// +// BucketAclV2AccessControlPolicyGrantArgs{...} +type BucketAclV2AccessControlPolicyGrantInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyGrantOutput() BucketAclV2AccessControlPolicyGrantOutput + ToBucketAclV2AccessControlPolicyGrantOutputWithContext(context.Context) BucketAclV2AccessControlPolicyGrantOutput +} + +type BucketAclV2AccessControlPolicyGrantArgs struct { + // Configuration block for the person being granted permissions. See below. + Grantee BucketAclV2AccessControlPolicyGrantGranteePtrInput `pulumi:"grantee"` + // Logging permissions assigned to the grantee for the bucket. Valid values: `FULL_CONTROL`, `WRITE`, `WRITE_ACP`, `READ`, `READ_ACP`. See [What permissions can I grant?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#permissions) for more details about what each permission means in the context of buckets. + Permission pulumi.StringInput `pulumi:"permission"` +} + +func (BucketAclV2AccessControlPolicyGrantArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicyGrant)(nil)).Elem() +} + +func (i BucketAclV2AccessControlPolicyGrantArgs) ToBucketAclV2AccessControlPolicyGrantOutput() BucketAclV2AccessControlPolicyGrantOutput { + return i.ToBucketAclV2AccessControlPolicyGrantOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyGrantArgs) ToBucketAclV2AccessControlPolicyGrantOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyGrantOutput) +} + +// BucketAclV2AccessControlPolicyGrantArrayInput is an input type that accepts BucketAclV2AccessControlPolicyGrantArray and BucketAclV2AccessControlPolicyGrantArrayOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyGrantArrayInput` via: +// +// BucketAclV2AccessControlPolicyGrantArray{ BucketAclV2AccessControlPolicyGrantArgs{...} } +type BucketAclV2AccessControlPolicyGrantArrayInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyGrantArrayOutput() BucketAclV2AccessControlPolicyGrantArrayOutput + ToBucketAclV2AccessControlPolicyGrantArrayOutputWithContext(context.Context) BucketAclV2AccessControlPolicyGrantArrayOutput +} + +type BucketAclV2AccessControlPolicyGrantArray []BucketAclV2AccessControlPolicyGrantInput + +func (BucketAclV2AccessControlPolicyGrantArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketAclV2AccessControlPolicyGrant)(nil)).Elem() +} + +func (i BucketAclV2AccessControlPolicyGrantArray) ToBucketAclV2AccessControlPolicyGrantArrayOutput() BucketAclV2AccessControlPolicyGrantArrayOutput { + return i.ToBucketAclV2AccessControlPolicyGrantArrayOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyGrantArray) ToBucketAclV2AccessControlPolicyGrantArrayOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyGrantArrayOutput) +} + +type BucketAclV2AccessControlPolicyGrantOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyGrantOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicyGrant)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyGrantOutput) ToBucketAclV2AccessControlPolicyGrantOutput() BucketAclV2AccessControlPolicyGrantOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyGrantOutput) ToBucketAclV2AccessControlPolicyGrantOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantOutput { + return o +} + +// Configuration block for the person being granted permissions. See below. +func (o BucketAclV2AccessControlPolicyGrantOutput) Grantee() BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyGrant) *BucketAclV2AccessControlPolicyGrantGrantee { + return v.Grantee + }).(BucketAclV2AccessControlPolicyGrantGranteePtrOutput) +} + +// Logging permissions assigned to the grantee for the bucket. Valid values: `FULL_CONTROL`, `WRITE`, `WRITE_ACP`, `READ`, `READ_ACP`. See [What permissions can I grant?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#permissions) for more details about what each permission means in the context of buckets. +func (o BucketAclV2AccessControlPolicyGrantOutput) Permission() pulumi.StringOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyGrant) string { return v.Permission }).(pulumi.StringOutput) +} + +type BucketAclV2AccessControlPolicyGrantArrayOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyGrantArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketAclV2AccessControlPolicyGrant)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyGrantArrayOutput) ToBucketAclV2AccessControlPolicyGrantArrayOutput() BucketAclV2AccessControlPolicyGrantArrayOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyGrantArrayOutput) ToBucketAclV2AccessControlPolicyGrantArrayOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantArrayOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyGrantArrayOutput) Index(i pulumi.IntInput) BucketAclV2AccessControlPolicyGrantOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketAclV2AccessControlPolicyGrant { + return vs[0].([]BucketAclV2AccessControlPolicyGrant)[vs[1].(int)] + }).(BucketAclV2AccessControlPolicyGrantOutput) +} + +type BucketAclV2AccessControlPolicyGrantGrantee struct { + // Display name of the owner. + DisplayName *string `pulumi:"displayName"` + // Email address of the grantee. See [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for supported AWS regions where this argument can be specified. + EmailAddress *string `pulumi:"emailAddress"` + // Canonical user ID of the grantee. + Id *string `pulumi:"id"` + // Type of grantee. Valid values: `CanonicalUser`, `AmazonCustomerByEmail`, `Group`. + Type string `pulumi:"type"` + // URI of the grantee group. + Uri *string `pulumi:"uri"` +} + +// BucketAclV2AccessControlPolicyGrantGranteeInput is an input type that accepts BucketAclV2AccessControlPolicyGrantGranteeArgs and BucketAclV2AccessControlPolicyGrantGranteeOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyGrantGranteeInput` via: +// +// BucketAclV2AccessControlPolicyGrantGranteeArgs{...} +type BucketAclV2AccessControlPolicyGrantGranteeInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyGrantGranteeOutput() BucketAclV2AccessControlPolicyGrantGranteeOutput + ToBucketAclV2AccessControlPolicyGrantGranteeOutputWithContext(context.Context) BucketAclV2AccessControlPolicyGrantGranteeOutput +} + +type BucketAclV2AccessControlPolicyGrantGranteeArgs struct { + // Display name of the owner. + DisplayName pulumi.StringPtrInput `pulumi:"displayName"` + // Email address of the grantee. See [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for supported AWS regions where this argument can be specified. + EmailAddress pulumi.StringPtrInput `pulumi:"emailAddress"` + // Canonical user ID of the grantee. + Id pulumi.StringPtrInput `pulumi:"id"` + // Type of grantee. Valid values: `CanonicalUser`, `AmazonCustomerByEmail`, `Group`. + Type pulumi.StringInput `pulumi:"type"` + // URI of the grantee group. + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (BucketAclV2AccessControlPolicyGrantGranteeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicyGrantGrantee)(nil)).Elem() +} + +func (i BucketAclV2AccessControlPolicyGrantGranteeArgs) ToBucketAclV2AccessControlPolicyGrantGranteeOutput() BucketAclV2AccessControlPolicyGrantGranteeOutput { + return i.ToBucketAclV2AccessControlPolicyGrantGranteeOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyGrantGranteeArgs) ToBucketAclV2AccessControlPolicyGrantGranteeOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantGranteeOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyGrantGranteeOutput) +} + +func (i BucketAclV2AccessControlPolicyGrantGranteeArgs) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutput() BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return i.ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyGrantGranteeArgs) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyGrantGranteeOutput).ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(ctx) +} + +// BucketAclV2AccessControlPolicyGrantGranteePtrInput is an input type that accepts BucketAclV2AccessControlPolicyGrantGranteeArgs, BucketAclV2AccessControlPolicyGrantGranteePtr and BucketAclV2AccessControlPolicyGrantGranteePtrOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyGrantGranteePtrInput` via: +// +// BucketAclV2AccessControlPolicyGrantGranteeArgs{...} +// +// or: +// +// nil +type BucketAclV2AccessControlPolicyGrantGranteePtrInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyGrantGranteePtrOutput() BucketAclV2AccessControlPolicyGrantGranteePtrOutput + ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(context.Context) BucketAclV2AccessControlPolicyGrantGranteePtrOutput +} + +type bucketAclV2AccessControlPolicyGrantGranteePtrType BucketAclV2AccessControlPolicyGrantGranteeArgs + +func BucketAclV2AccessControlPolicyGrantGranteePtr(v *BucketAclV2AccessControlPolicyGrantGranteeArgs) BucketAclV2AccessControlPolicyGrantGranteePtrInput { + return (*bucketAclV2AccessControlPolicyGrantGranteePtrType)(v) +} + +func (*bucketAclV2AccessControlPolicyGrantGranteePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2AccessControlPolicyGrantGrantee)(nil)).Elem() +} + +func (i *bucketAclV2AccessControlPolicyGrantGranteePtrType) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutput() BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return i.ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(context.Background()) +} + +func (i *bucketAclV2AccessControlPolicyGrantGranteePtrType) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyGrantGranteePtrOutput) +} + +type BucketAclV2AccessControlPolicyGrantGranteeOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyGrantGranteeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicyGrantGrantee)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) ToBucketAclV2AccessControlPolicyGrantGranteeOutput() BucketAclV2AccessControlPolicyGrantGranteeOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) ToBucketAclV2AccessControlPolicyGrantGranteeOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantGranteeOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutput() BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return o.ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(context.Background()) +} + +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketAclV2AccessControlPolicyGrantGrantee) *BucketAclV2AccessControlPolicyGrantGrantee { + return &v + }).(BucketAclV2AccessControlPolicyGrantGranteePtrOutput) +} + +// Display name of the owner. +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyGrantGrantee) *string { return v.DisplayName }).(pulumi.StringPtrOutput) +} + +// Email address of the grantee. See [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for supported AWS regions where this argument can be specified. +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) EmailAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyGrantGrantee) *string { return v.EmailAddress }).(pulumi.StringPtrOutput) +} + +// Canonical user ID of the grantee. +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyGrantGrantee) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Type of grantee. Valid values: `CanonicalUser`, `AmazonCustomerByEmail`, `Group`. +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyGrantGrantee) string { return v.Type }).(pulumi.StringOutput) +} + +// URI of the grantee group. +func (o BucketAclV2AccessControlPolicyGrantGranteeOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyGrantGrantee) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type BucketAclV2AccessControlPolicyGrantGranteePtrOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyGrantGranteePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2AccessControlPolicyGrantGrantee)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutput() BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) ToBucketAclV2AccessControlPolicyGrantGranteePtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyGrantGranteePtrOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) Elem() BucketAclV2AccessControlPolicyGrantGranteeOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyGrantGrantee) BucketAclV2AccessControlPolicyGrantGrantee { + if v != nil { + return *v + } + var ret BucketAclV2AccessControlPolicyGrantGrantee + return ret + }).(BucketAclV2AccessControlPolicyGrantGranteeOutput) +} + +// Display name of the owner. +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyGrantGrantee) *string { + if v == nil { + return nil + } + return v.DisplayName + }).(pulumi.StringPtrOutput) +} + +// Email address of the grantee. See [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for supported AWS regions where this argument can be specified. +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) EmailAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyGrantGrantee) *string { + if v == nil { + return nil + } + return v.EmailAddress + }).(pulumi.StringPtrOutput) +} + +// Canonical user ID of the grantee. +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyGrantGrantee) *string { + if v == nil { + return nil + } + return v.Id + }).(pulumi.StringPtrOutput) +} + +// Type of grantee. Valid values: `CanonicalUser`, `AmazonCustomerByEmail`, `Group`. +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyGrantGrantee) *string { + if v == nil { + return nil + } + return &v.Type + }).(pulumi.StringPtrOutput) +} + +// URI of the grantee group. +func (o BucketAclV2AccessControlPolicyGrantGranteePtrOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyGrantGrantee) *string { + if v == nil { + return nil + } + return v.Uri + }).(pulumi.StringPtrOutput) +} + +type BucketAclV2AccessControlPolicyOwner struct { + // Display name of the owner. + DisplayName *string `pulumi:"displayName"` + // ID of the owner. + Id string `pulumi:"id"` +} + +// BucketAclV2AccessControlPolicyOwnerInput is an input type that accepts BucketAclV2AccessControlPolicyOwnerArgs and BucketAclV2AccessControlPolicyOwnerOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyOwnerInput` via: +// +// BucketAclV2AccessControlPolicyOwnerArgs{...} +type BucketAclV2AccessControlPolicyOwnerInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyOwnerOutput() BucketAclV2AccessControlPolicyOwnerOutput + ToBucketAclV2AccessControlPolicyOwnerOutputWithContext(context.Context) BucketAclV2AccessControlPolicyOwnerOutput +} + +type BucketAclV2AccessControlPolicyOwnerArgs struct { + // Display name of the owner. + DisplayName pulumi.StringPtrInput `pulumi:"displayName"` + // ID of the owner. + Id pulumi.StringInput `pulumi:"id"` +} + +func (BucketAclV2AccessControlPolicyOwnerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicyOwner)(nil)).Elem() +} + +func (i BucketAclV2AccessControlPolicyOwnerArgs) ToBucketAclV2AccessControlPolicyOwnerOutput() BucketAclV2AccessControlPolicyOwnerOutput { + return i.ToBucketAclV2AccessControlPolicyOwnerOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyOwnerArgs) ToBucketAclV2AccessControlPolicyOwnerOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOwnerOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyOwnerOutput) +} + +func (i BucketAclV2AccessControlPolicyOwnerArgs) ToBucketAclV2AccessControlPolicyOwnerPtrOutput() BucketAclV2AccessControlPolicyOwnerPtrOutput { + return i.ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(context.Background()) +} + +func (i BucketAclV2AccessControlPolicyOwnerArgs) ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOwnerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyOwnerOutput).ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(ctx) +} + +// BucketAclV2AccessControlPolicyOwnerPtrInput is an input type that accepts BucketAclV2AccessControlPolicyOwnerArgs, BucketAclV2AccessControlPolicyOwnerPtr and BucketAclV2AccessControlPolicyOwnerPtrOutput values. +// You can construct a concrete instance of `BucketAclV2AccessControlPolicyOwnerPtrInput` via: +// +// BucketAclV2AccessControlPolicyOwnerArgs{...} +// +// or: +// +// nil +type BucketAclV2AccessControlPolicyOwnerPtrInput interface { + pulumi.Input + + ToBucketAclV2AccessControlPolicyOwnerPtrOutput() BucketAclV2AccessControlPolicyOwnerPtrOutput + ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(context.Context) BucketAclV2AccessControlPolicyOwnerPtrOutput +} + +type bucketAclV2AccessControlPolicyOwnerPtrType BucketAclV2AccessControlPolicyOwnerArgs + +func BucketAclV2AccessControlPolicyOwnerPtr(v *BucketAclV2AccessControlPolicyOwnerArgs) BucketAclV2AccessControlPolicyOwnerPtrInput { + return (*bucketAclV2AccessControlPolicyOwnerPtrType)(v) +} + +func (*bucketAclV2AccessControlPolicyOwnerPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2AccessControlPolicyOwner)(nil)).Elem() +} + +func (i *bucketAclV2AccessControlPolicyOwnerPtrType) ToBucketAclV2AccessControlPolicyOwnerPtrOutput() BucketAclV2AccessControlPolicyOwnerPtrOutput { + return i.ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(context.Background()) +} + +func (i *bucketAclV2AccessControlPolicyOwnerPtrType) ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOwnerPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketAclV2AccessControlPolicyOwnerPtrOutput) +} + +type BucketAclV2AccessControlPolicyOwnerOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyOwnerOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketAclV2AccessControlPolicyOwner)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyOwnerOutput) ToBucketAclV2AccessControlPolicyOwnerOutput() BucketAclV2AccessControlPolicyOwnerOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyOwnerOutput) ToBucketAclV2AccessControlPolicyOwnerOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOwnerOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyOwnerOutput) ToBucketAclV2AccessControlPolicyOwnerPtrOutput() BucketAclV2AccessControlPolicyOwnerPtrOutput { + return o.ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(context.Background()) +} + +func (o BucketAclV2AccessControlPolicyOwnerOutput) ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOwnerPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketAclV2AccessControlPolicyOwner) *BucketAclV2AccessControlPolicyOwner { + return &v + }).(BucketAclV2AccessControlPolicyOwnerPtrOutput) +} + +// Display name of the owner. +func (o BucketAclV2AccessControlPolicyOwnerOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyOwner) *string { return v.DisplayName }).(pulumi.StringPtrOutput) +} + +// ID of the owner. +func (o BucketAclV2AccessControlPolicyOwnerOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v BucketAclV2AccessControlPolicyOwner) string { return v.Id }).(pulumi.StringOutput) +} + +type BucketAclV2AccessControlPolicyOwnerPtrOutput struct{ *pulumi.OutputState } + +func (BucketAclV2AccessControlPolicyOwnerPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketAclV2AccessControlPolicyOwner)(nil)).Elem() +} + +func (o BucketAclV2AccessControlPolicyOwnerPtrOutput) ToBucketAclV2AccessControlPolicyOwnerPtrOutput() BucketAclV2AccessControlPolicyOwnerPtrOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyOwnerPtrOutput) ToBucketAclV2AccessControlPolicyOwnerPtrOutputWithContext(ctx context.Context) BucketAclV2AccessControlPolicyOwnerPtrOutput { + return o +} + +func (o BucketAclV2AccessControlPolicyOwnerPtrOutput) Elem() BucketAclV2AccessControlPolicyOwnerOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyOwner) BucketAclV2AccessControlPolicyOwner { + if v != nil { + return *v + } + var ret BucketAclV2AccessControlPolicyOwner + return ret + }).(BucketAclV2AccessControlPolicyOwnerOutput) +} + +// Display name of the owner. +func (o BucketAclV2AccessControlPolicyOwnerPtrOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyOwner) *string { + if v == nil { + return nil + } + return v.DisplayName + }).(pulumi.StringPtrOutput) +} + +// ID of the owner. +func (o BucketAclV2AccessControlPolicyOwnerPtrOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketAclV2AccessControlPolicyOwner) *string { + if v == nil { + return nil + } + return &v.Id + }).(pulumi.StringPtrOutput) +} + +type BucketCorsConfigurationV2CorsRule struct { + // Set of Headers that are specified in the `Access-Control-Request-Headers` header. + AllowedHeaders []string `pulumi:"allowedHeaders"` + // Set of HTTP methods that you allow the origin to execute. Valid values are `GET`, `PUT`, `HEAD`, `POST`, and `DELETE`. + AllowedMethods []string `pulumi:"allowedMethods"` + // Set of origins you want customers to be able to access the bucket from. + AllowedOrigins []string `pulumi:"allowedOrigins"` + // Set of headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript `XMLHttpRequest` object). + ExposeHeaders []string `pulumi:"exposeHeaders"` + // Unique identifier for the rule. The value cannot be longer than 255 characters. + Id *string `pulumi:"id"` + // Time in seconds that your browser is to cache the preflight response for the specified resource. + MaxAgeSeconds *int `pulumi:"maxAgeSeconds"` +} + +// BucketCorsConfigurationV2CorsRuleInput is an input type that accepts BucketCorsConfigurationV2CorsRuleArgs and BucketCorsConfigurationV2CorsRuleOutput values. +// You can construct a concrete instance of `BucketCorsConfigurationV2CorsRuleInput` via: +// +// BucketCorsConfigurationV2CorsRuleArgs{...} +type BucketCorsConfigurationV2CorsRuleInput interface { + pulumi.Input + + ToBucketCorsConfigurationV2CorsRuleOutput() BucketCorsConfigurationV2CorsRuleOutput + ToBucketCorsConfigurationV2CorsRuleOutputWithContext(context.Context) BucketCorsConfigurationV2CorsRuleOutput +} + +type BucketCorsConfigurationV2CorsRuleArgs struct { + // Set of Headers that are specified in the `Access-Control-Request-Headers` header. + AllowedHeaders pulumi.StringArrayInput `pulumi:"allowedHeaders"` + // Set of HTTP methods that you allow the origin to execute. Valid values are `GET`, `PUT`, `HEAD`, `POST`, and `DELETE`. + AllowedMethods pulumi.StringArrayInput `pulumi:"allowedMethods"` + // Set of origins you want customers to be able to access the bucket from. + AllowedOrigins pulumi.StringArrayInput `pulumi:"allowedOrigins"` + // Set of headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript `XMLHttpRequest` object). + ExposeHeaders pulumi.StringArrayInput `pulumi:"exposeHeaders"` + // Unique identifier for the rule. The value cannot be longer than 255 characters. + Id pulumi.StringPtrInput `pulumi:"id"` + // Time in seconds that your browser is to cache the preflight response for the specified resource. + MaxAgeSeconds pulumi.IntPtrInput `pulumi:"maxAgeSeconds"` +} + +func (BucketCorsConfigurationV2CorsRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketCorsConfigurationV2CorsRule)(nil)).Elem() +} + +func (i BucketCorsConfigurationV2CorsRuleArgs) ToBucketCorsConfigurationV2CorsRuleOutput() BucketCorsConfigurationV2CorsRuleOutput { + return i.ToBucketCorsConfigurationV2CorsRuleOutputWithContext(context.Background()) +} + +func (i BucketCorsConfigurationV2CorsRuleArgs) ToBucketCorsConfigurationV2CorsRuleOutputWithContext(ctx context.Context) BucketCorsConfigurationV2CorsRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketCorsConfigurationV2CorsRuleOutput) +} + +// BucketCorsConfigurationV2CorsRuleArrayInput is an input type that accepts BucketCorsConfigurationV2CorsRuleArray and BucketCorsConfigurationV2CorsRuleArrayOutput values. +// You can construct a concrete instance of `BucketCorsConfigurationV2CorsRuleArrayInput` via: +// +// BucketCorsConfigurationV2CorsRuleArray{ BucketCorsConfigurationV2CorsRuleArgs{...} } +type BucketCorsConfigurationV2CorsRuleArrayInput interface { + pulumi.Input + + ToBucketCorsConfigurationV2CorsRuleArrayOutput() BucketCorsConfigurationV2CorsRuleArrayOutput + ToBucketCorsConfigurationV2CorsRuleArrayOutputWithContext(context.Context) BucketCorsConfigurationV2CorsRuleArrayOutput +} + +type BucketCorsConfigurationV2CorsRuleArray []BucketCorsConfigurationV2CorsRuleInput + +func (BucketCorsConfigurationV2CorsRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketCorsConfigurationV2CorsRule)(nil)).Elem() +} + +func (i BucketCorsConfigurationV2CorsRuleArray) ToBucketCorsConfigurationV2CorsRuleArrayOutput() BucketCorsConfigurationV2CorsRuleArrayOutput { + return i.ToBucketCorsConfigurationV2CorsRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketCorsConfigurationV2CorsRuleArray) ToBucketCorsConfigurationV2CorsRuleArrayOutputWithContext(ctx context.Context) BucketCorsConfigurationV2CorsRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketCorsConfigurationV2CorsRuleArrayOutput) +} + +type BucketCorsConfigurationV2CorsRuleOutput struct{ *pulumi.OutputState } + +func (BucketCorsConfigurationV2CorsRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketCorsConfigurationV2CorsRule)(nil)).Elem() +} + +func (o BucketCorsConfigurationV2CorsRuleOutput) ToBucketCorsConfigurationV2CorsRuleOutput() BucketCorsConfigurationV2CorsRuleOutput { + return o +} + +func (o BucketCorsConfigurationV2CorsRuleOutput) ToBucketCorsConfigurationV2CorsRuleOutputWithContext(ctx context.Context) BucketCorsConfigurationV2CorsRuleOutput { + return o +} + +// Set of Headers that are specified in the `Access-Control-Request-Headers` header. +func (o BucketCorsConfigurationV2CorsRuleOutput) AllowedHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsConfigurationV2CorsRule) []string { return v.AllowedHeaders }).(pulumi.StringArrayOutput) +} + +// Set of HTTP methods that you allow the origin to execute. Valid values are `GET`, `PUT`, `HEAD`, `POST`, and `DELETE`. +func (o BucketCorsConfigurationV2CorsRuleOutput) AllowedMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsConfigurationV2CorsRule) []string { return v.AllowedMethods }).(pulumi.StringArrayOutput) +} + +// Set of origins you want customers to be able to access the bucket from. +func (o BucketCorsConfigurationV2CorsRuleOutput) AllowedOrigins() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsConfigurationV2CorsRule) []string { return v.AllowedOrigins }).(pulumi.StringArrayOutput) +} + +// Set of headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript `XMLHttpRequest` object). +func (o BucketCorsConfigurationV2CorsRuleOutput) ExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsConfigurationV2CorsRule) []string { return v.ExposeHeaders }).(pulumi.StringArrayOutput) +} + +// Unique identifier for the rule. The value cannot be longer than 255 characters. +func (o BucketCorsConfigurationV2CorsRuleOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketCorsConfigurationV2CorsRule) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Time in seconds that your browser is to cache the preflight response for the specified resource. +func (o BucketCorsConfigurationV2CorsRuleOutput) MaxAgeSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketCorsConfigurationV2CorsRule) *int { return v.MaxAgeSeconds }).(pulumi.IntPtrOutput) +} + +type BucketCorsConfigurationV2CorsRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketCorsConfigurationV2CorsRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketCorsConfigurationV2CorsRule)(nil)).Elem() +} + +func (o BucketCorsConfigurationV2CorsRuleArrayOutput) ToBucketCorsConfigurationV2CorsRuleArrayOutput() BucketCorsConfigurationV2CorsRuleArrayOutput { + return o +} + +func (o BucketCorsConfigurationV2CorsRuleArrayOutput) ToBucketCorsConfigurationV2CorsRuleArrayOutputWithContext(ctx context.Context) BucketCorsConfigurationV2CorsRuleArrayOutput { + return o +} + +func (o BucketCorsConfigurationV2CorsRuleArrayOutput) Index(i pulumi.IntInput) BucketCorsConfigurationV2CorsRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketCorsConfigurationV2CorsRule { + return vs[0].([]BucketCorsConfigurationV2CorsRule)[vs[1].(int)] + }).(BucketCorsConfigurationV2CorsRuleOutput) +} + +type BucketCorsRule struct { + // Specifies which headers are allowed. + AllowedHeaders []string `pulumi:"allowedHeaders"` + // Specifies which methods are allowed. Can be `GET`, `PUT`, `POST`, `DELETE` or `HEAD`. + AllowedMethods []string `pulumi:"allowedMethods"` + // Specifies which origins are allowed. + AllowedOrigins []string `pulumi:"allowedOrigins"` + // Specifies expose header in the response. + ExposeHeaders []string `pulumi:"exposeHeaders"` + // Specifies time in seconds that browser can cache the response for a preflight request. + MaxAgeSeconds *int `pulumi:"maxAgeSeconds"` +} + +// BucketCorsRuleInput is an input type that accepts BucketCorsRuleArgs and BucketCorsRuleOutput values. +// You can construct a concrete instance of `BucketCorsRuleInput` via: +// +// BucketCorsRuleArgs{...} +type BucketCorsRuleInput interface { + pulumi.Input + + ToBucketCorsRuleOutput() BucketCorsRuleOutput + ToBucketCorsRuleOutputWithContext(context.Context) BucketCorsRuleOutput +} + +type BucketCorsRuleArgs struct { + // Specifies which headers are allowed. + AllowedHeaders pulumi.StringArrayInput `pulumi:"allowedHeaders"` + // Specifies which methods are allowed. Can be `GET`, `PUT`, `POST`, `DELETE` or `HEAD`. + AllowedMethods pulumi.StringArrayInput `pulumi:"allowedMethods"` + // Specifies which origins are allowed. + AllowedOrigins pulumi.StringArrayInput `pulumi:"allowedOrigins"` + // Specifies expose header in the response. + ExposeHeaders pulumi.StringArrayInput `pulumi:"exposeHeaders"` + // Specifies time in seconds that browser can cache the response for a preflight request. + MaxAgeSeconds pulumi.IntPtrInput `pulumi:"maxAgeSeconds"` +} + +func (BucketCorsRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketCorsRule)(nil)).Elem() +} + +func (i BucketCorsRuleArgs) ToBucketCorsRuleOutput() BucketCorsRuleOutput { + return i.ToBucketCorsRuleOutputWithContext(context.Background()) +} + +func (i BucketCorsRuleArgs) ToBucketCorsRuleOutputWithContext(ctx context.Context) BucketCorsRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketCorsRuleOutput) +} + +// BucketCorsRuleArrayInput is an input type that accepts BucketCorsRuleArray and BucketCorsRuleArrayOutput values. +// You can construct a concrete instance of `BucketCorsRuleArrayInput` via: +// +// BucketCorsRuleArray{ BucketCorsRuleArgs{...} } +type BucketCorsRuleArrayInput interface { + pulumi.Input + + ToBucketCorsRuleArrayOutput() BucketCorsRuleArrayOutput + ToBucketCorsRuleArrayOutputWithContext(context.Context) BucketCorsRuleArrayOutput +} + +type BucketCorsRuleArray []BucketCorsRuleInput + +func (BucketCorsRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketCorsRule)(nil)).Elem() +} + +func (i BucketCorsRuleArray) ToBucketCorsRuleArrayOutput() BucketCorsRuleArrayOutput { + return i.ToBucketCorsRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketCorsRuleArray) ToBucketCorsRuleArrayOutputWithContext(ctx context.Context) BucketCorsRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketCorsRuleArrayOutput) +} + +type BucketCorsRuleOutput struct{ *pulumi.OutputState } + +func (BucketCorsRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketCorsRule)(nil)).Elem() +} + +func (o BucketCorsRuleOutput) ToBucketCorsRuleOutput() BucketCorsRuleOutput { + return o +} + +func (o BucketCorsRuleOutput) ToBucketCorsRuleOutputWithContext(ctx context.Context) BucketCorsRuleOutput { + return o +} + +// Specifies which headers are allowed. +func (o BucketCorsRuleOutput) AllowedHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsRule) []string { return v.AllowedHeaders }).(pulumi.StringArrayOutput) +} + +// Specifies which methods are allowed. Can be `GET`, `PUT`, `POST`, `DELETE` or `HEAD`. +func (o BucketCorsRuleOutput) AllowedMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsRule) []string { return v.AllowedMethods }).(pulumi.StringArrayOutput) +} + +// Specifies which origins are allowed. +func (o BucketCorsRuleOutput) AllowedOrigins() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsRule) []string { return v.AllowedOrigins }).(pulumi.StringArrayOutput) +} + +// Specifies expose header in the response. +func (o BucketCorsRuleOutput) ExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketCorsRule) []string { return v.ExposeHeaders }).(pulumi.StringArrayOutput) +} + +// Specifies time in seconds that browser can cache the response for a preflight request. +func (o BucketCorsRuleOutput) MaxAgeSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketCorsRule) *int { return v.MaxAgeSeconds }).(pulumi.IntPtrOutput) +} + +type BucketCorsRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketCorsRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketCorsRule)(nil)).Elem() +} + +func (o BucketCorsRuleArrayOutput) ToBucketCorsRuleArrayOutput() BucketCorsRuleArrayOutput { + return o +} + +func (o BucketCorsRuleArrayOutput) ToBucketCorsRuleArrayOutputWithContext(ctx context.Context) BucketCorsRuleArrayOutput { + return o +} + +func (o BucketCorsRuleArrayOutput) Index(i pulumi.IntInput) BucketCorsRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketCorsRule { + return vs[0].([]BucketCorsRule)[vs[1].(int)] + }).(BucketCorsRuleOutput) +} + +type BucketGrant struct { + // Canonical user id to grant for. Used only when `type` is `CanonicalUser`. + Id *string `pulumi:"id"` + // List of permissions to apply for grantee. Valid values are `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. + Permissions []string `pulumi:"permissions"` + // Type of grantee to apply for. Valid values are `CanonicalUser` and `Group`. `AmazonCustomerByEmail` is not supported. + Type string `pulumi:"type"` + // Uri address to grant for. Used only when `type` is `Group`. + Uri *string `pulumi:"uri"` +} + +// BucketGrantInput is an input type that accepts BucketGrantArgs and BucketGrantOutput values. +// You can construct a concrete instance of `BucketGrantInput` via: +// +// BucketGrantArgs{...} +type BucketGrantInput interface { + pulumi.Input + + ToBucketGrantOutput() BucketGrantOutput + ToBucketGrantOutputWithContext(context.Context) BucketGrantOutput +} + +type BucketGrantArgs struct { + // Canonical user id to grant for. Used only when `type` is `CanonicalUser`. + Id pulumi.StringPtrInput `pulumi:"id"` + // List of permissions to apply for grantee. Valid values are `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. + Permissions pulumi.StringArrayInput `pulumi:"permissions"` + // Type of grantee to apply for. Valid values are `CanonicalUser` and `Group`. `AmazonCustomerByEmail` is not supported. + Type pulumi.StringInput `pulumi:"type"` + // Uri address to grant for. Used only when `type` is `Group`. + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (BucketGrantArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketGrant)(nil)).Elem() +} + +func (i BucketGrantArgs) ToBucketGrantOutput() BucketGrantOutput { + return i.ToBucketGrantOutputWithContext(context.Background()) +} + +func (i BucketGrantArgs) ToBucketGrantOutputWithContext(ctx context.Context) BucketGrantOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketGrantOutput) +} + +// BucketGrantArrayInput is an input type that accepts BucketGrantArray and BucketGrantArrayOutput values. +// You can construct a concrete instance of `BucketGrantArrayInput` via: +// +// BucketGrantArray{ BucketGrantArgs{...} } +type BucketGrantArrayInput interface { + pulumi.Input + + ToBucketGrantArrayOutput() BucketGrantArrayOutput + ToBucketGrantArrayOutputWithContext(context.Context) BucketGrantArrayOutput +} + +type BucketGrantArray []BucketGrantInput + +func (BucketGrantArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketGrant)(nil)).Elem() +} + +func (i BucketGrantArray) ToBucketGrantArrayOutput() BucketGrantArrayOutput { + return i.ToBucketGrantArrayOutputWithContext(context.Background()) +} + +func (i BucketGrantArray) ToBucketGrantArrayOutputWithContext(ctx context.Context) BucketGrantArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketGrantArrayOutput) +} + +type BucketGrantOutput struct{ *pulumi.OutputState } + +func (BucketGrantOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketGrant)(nil)).Elem() +} + +func (o BucketGrantOutput) ToBucketGrantOutput() BucketGrantOutput { + return o +} + +func (o BucketGrantOutput) ToBucketGrantOutputWithContext(ctx context.Context) BucketGrantOutput { + return o +} + +// Canonical user id to grant for. Used only when `type` is `CanonicalUser`. +func (o BucketGrantOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketGrant) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// List of permissions to apply for grantee. Valid values are `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. +func (o BucketGrantOutput) Permissions() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketGrant) []string { return v.Permissions }).(pulumi.StringArrayOutput) +} + +// Type of grantee to apply for. Valid values are `CanonicalUser` and `Group`. `AmazonCustomerByEmail` is not supported. +func (o BucketGrantOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v BucketGrant) string { return v.Type }).(pulumi.StringOutput) +} + +// Uri address to grant for. Used only when `type` is `Group`. +func (o BucketGrantOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketGrant) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type BucketGrantArrayOutput struct{ *pulumi.OutputState } + +func (BucketGrantArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketGrant)(nil)).Elem() +} + +func (o BucketGrantArrayOutput) ToBucketGrantArrayOutput() BucketGrantArrayOutput { + return o +} + +func (o BucketGrantArrayOutput) ToBucketGrantArrayOutputWithContext(ctx context.Context) BucketGrantArrayOutput { + return o +} + +func (o BucketGrantArrayOutput) Index(i pulumi.IntInput) BucketGrantOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketGrant { + return vs[0].([]BucketGrant)[vs[1].(int)] + }).(BucketGrantOutput) +} + +type BucketIntelligentTieringConfigurationFilter struct { + // Object key name prefix that identifies the subset of objects to which the configuration applies. + Prefix *string `pulumi:"prefix"` + // All of these tags must exist in the object's tag set in order for the configuration to apply. + Tags map[string]string `pulumi:"tags"` +} + +// BucketIntelligentTieringConfigurationFilterInput is an input type that accepts BucketIntelligentTieringConfigurationFilterArgs and BucketIntelligentTieringConfigurationFilterOutput values. +// You can construct a concrete instance of `BucketIntelligentTieringConfigurationFilterInput` via: +// +// BucketIntelligentTieringConfigurationFilterArgs{...} +type BucketIntelligentTieringConfigurationFilterInput interface { + pulumi.Input + + ToBucketIntelligentTieringConfigurationFilterOutput() BucketIntelligentTieringConfigurationFilterOutput + ToBucketIntelligentTieringConfigurationFilterOutputWithContext(context.Context) BucketIntelligentTieringConfigurationFilterOutput +} + +type BucketIntelligentTieringConfigurationFilterArgs struct { + // Object key name prefix that identifies the subset of objects to which the configuration applies. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // All of these tags must exist in the object's tag set in order for the configuration to apply. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (BucketIntelligentTieringConfigurationFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketIntelligentTieringConfigurationFilter)(nil)).Elem() +} + +func (i BucketIntelligentTieringConfigurationFilterArgs) ToBucketIntelligentTieringConfigurationFilterOutput() BucketIntelligentTieringConfigurationFilterOutput { + return i.ToBucketIntelligentTieringConfigurationFilterOutputWithContext(context.Background()) +} + +func (i BucketIntelligentTieringConfigurationFilterArgs) ToBucketIntelligentTieringConfigurationFilterOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationFilterOutput) +} + +func (i BucketIntelligentTieringConfigurationFilterArgs) ToBucketIntelligentTieringConfigurationFilterPtrOutput() BucketIntelligentTieringConfigurationFilterPtrOutput { + return i.ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(context.Background()) +} + +func (i BucketIntelligentTieringConfigurationFilterArgs) ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationFilterOutput).ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(ctx) +} + +// BucketIntelligentTieringConfigurationFilterPtrInput is an input type that accepts BucketIntelligentTieringConfigurationFilterArgs, BucketIntelligentTieringConfigurationFilterPtr and BucketIntelligentTieringConfigurationFilterPtrOutput values. +// You can construct a concrete instance of `BucketIntelligentTieringConfigurationFilterPtrInput` via: +// +// BucketIntelligentTieringConfigurationFilterArgs{...} +// +// or: +// +// nil +type BucketIntelligentTieringConfigurationFilterPtrInput interface { + pulumi.Input + + ToBucketIntelligentTieringConfigurationFilterPtrOutput() BucketIntelligentTieringConfigurationFilterPtrOutput + ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(context.Context) BucketIntelligentTieringConfigurationFilterPtrOutput +} + +type bucketIntelligentTieringConfigurationFilterPtrType BucketIntelligentTieringConfigurationFilterArgs + +func BucketIntelligentTieringConfigurationFilterPtr(v *BucketIntelligentTieringConfigurationFilterArgs) BucketIntelligentTieringConfigurationFilterPtrInput { + return (*bucketIntelligentTieringConfigurationFilterPtrType)(v) +} + +func (*bucketIntelligentTieringConfigurationFilterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketIntelligentTieringConfigurationFilter)(nil)).Elem() +} + +func (i *bucketIntelligentTieringConfigurationFilterPtrType) ToBucketIntelligentTieringConfigurationFilterPtrOutput() BucketIntelligentTieringConfigurationFilterPtrOutput { + return i.ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(context.Background()) +} + +func (i *bucketIntelligentTieringConfigurationFilterPtrType) ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationFilterPtrOutput) +} + +type BucketIntelligentTieringConfigurationFilterOutput struct{ *pulumi.OutputState } + +func (BucketIntelligentTieringConfigurationFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketIntelligentTieringConfigurationFilter)(nil)).Elem() +} + +func (o BucketIntelligentTieringConfigurationFilterOutput) ToBucketIntelligentTieringConfigurationFilterOutput() BucketIntelligentTieringConfigurationFilterOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationFilterOutput) ToBucketIntelligentTieringConfigurationFilterOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationFilterOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationFilterOutput) ToBucketIntelligentTieringConfigurationFilterPtrOutput() BucketIntelligentTieringConfigurationFilterPtrOutput { + return o.ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(context.Background()) +} + +func (o BucketIntelligentTieringConfigurationFilterOutput) ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationFilterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketIntelligentTieringConfigurationFilter) *BucketIntelligentTieringConfigurationFilter { + return &v + }).(BucketIntelligentTieringConfigurationFilterPtrOutput) +} + +// Object key name prefix that identifies the subset of objects to which the configuration applies. +func (o BucketIntelligentTieringConfigurationFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketIntelligentTieringConfigurationFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// All of these tags must exist in the object's tag set in order for the configuration to apply. +func (o BucketIntelligentTieringConfigurationFilterOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketIntelligentTieringConfigurationFilter) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type BucketIntelligentTieringConfigurationFilterPtrOutput struct{ *pulumi.OutputState } + +func (BucketIntelligentTieringConfigurationFilterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketIntelligentTieringConfigurationFilter)(nil)).Elem() +} + +func (o BucketIntelligentTieringConfigurationFilterPtrOutput) ToBucketIntelligentTieringConfigurationFilterPtrOutput() BucketIntelligentTieringConfigurationFilterPtrOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationFilterPtrOutput) ToBucketIntelligentTieringConfigurationFilterPtrOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationFilterPtrOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationFilterPtrOutput) Elem() BucketIntelligentTieringConfigurationFilterOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfigurationFilter) BucketIntelligentTieringConfigurationFilter { + if v != nil { + return *v + } + var ret BucketIntelligentTieringConfigurationFilter + return ret + }).(BucketIntelligentTieringConfigurationFilterOutput) +} + +// Object key name prefix that identifies the subset of objects to which the configuration applies. +func (o BucketIntelligentTieringConfigurationFilterPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfigurationFilter) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// All of these tags must exist in the object's tag set in order for the configuration to apply. +func (o BucketIntelligentTieringConfigurationFilterPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketIntelligentTieringConfigurationFilter) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +type BucketIntelligentTieringConfigurationTiering struct { + // S3 Intelligent-Tiering access tier. Valid values: `ARCHIVE_ACCESS`, `DEEP_ARCHIVE_ACCESS`. + AccessTier string `pulumi:"accessTier"` + // Number of consecutive days of no access after which an object will be eligible to be transitioned to the corresponding tier. + Days int `pulumi:"days"` +} + +// BucketIntelligentTieringConfigurationTieringInput is an input type that accepts BucketIntelligentTieringConfigurationTieringArgs and BucketIntelligentTieringConfigurationTieringOutput values. +// You can construct a concrete instance of `BucketIntelligentTieringConfigurationTieringInput` via: +// +// BucketIntelligentTieringConfigurationTieringArgs{...} +type BucketIntelligentTieringConfigurationTieringInput interface { + pulumi.Input + + ToBucketIntelligentTieringConfigurationTieringOutput() BucketIntelligentTieringConfigurationTieringOutput + ToBucketIntelligentTieringConfigurationTieringOutputWithContext(context.Context) BucketIntelligentTieringConfigurationTieringOutput +} + +type BucketIntelligentTieringConfigurationTieringArgs struct { + // S3 Intelligent-Tiering access tier. Valid values: `ARCHIVE_ACCESS`, `DEEP_ARCHIVE_ACCESS`. + AccessTier pulumi.StringInput `pulumi:"accessTier"` + // Number of consecutive days of no access after which an object will be eligible to be transitioned to the corresponding tier. + Days pulumi.IntInput `pulumi:"days"` +} + +func (BucketIntelligentTieringConfigurationTieringArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketIntelligentTieringConfigurationTiering)(nil)).Elem() +} + +func (i BucketIntelligentTieringConfigurationTieringArgs) ToBucketIntelligentTieringConfigurationTieringOutput() BucketIntelligentTieringConfigurationTieringOutput { + return i.ToBucketIntelligentTieringConfigurationTieringOutputWithContext(context.Background()) +} + +func (i BucketIntelligentTieringConfigurationTieringArgs) ToBucketIntelligentTieringConfigurationTieringOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationTieringOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationTieringOutput) +} + +// BucketIntelligentTieringConfigurationTieringArrayInput is an input type that accepts BucketIntelligentTieringConfigurationTieringArray and BucketIntelligentTieringConfigurationTieringArrayOutput values. +// You can construct a concrete instance of `BucketIntelligentTieringConfigurationTieringArrayInput` via: +// +// BucketIntelligentTieringConfigurationTieringArray{ BucketIntelligentTieringConfigurationTieringArgs{...} } +type BucketIntelligentTieringConfigurationTieringArrayInput interface { + pulumi.Input + + ToBucketIntelligentTieringConfigurationTieringArrayOutput() BucketIntelligentTieringConfigurationTieringArrayOutput + ToBucketIntelligentTieringConfigurationTieringArrayOutputWithContext(context.Context) BucketIntelligentTieringConfigurationTieringArrayOutput +} + +type BucketIntelligentTieringConfigurationTieringArray []BucketIntelligentTieringConfigurationTieringInput + +func (BucketIntelligentTieringConfigurationTieringArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketIntelligentTieringConfigurationTiering)(nil)).Elem() +} + +func (i BucketIntelligentTieringConfigurationTieringArray) ToBucketIntelligentTieringConfigurationTieringArrayOutput() BucketIntelligentTieringConfigurationTieringArrayOutput { + return i.ToBucketIntelligentTieringConfigurationTieringArrayOutputWithContext(context.Background()) +} + +func (i BucketIntelligentTieringConfigurationTieringArray) ToBucketIntelligentTieringConfigurationTieringArrayOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationTieringArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketIntelligentTieringConfigurationTieringArrayOutput) +} + +type BucketIntelligentTieringConfigurationTieringOutput struct{ *pulumi.OutputState } + +func (BucketIntelligentTieringConfigurationTieringOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketIntelligentTieringConfigurationTiering)(nil)).Elem() +} + +func (o BucketIntelligentTieringConfigurationTieringOutput) ToBucketIntelligentTieringConfigurationTieringOutput() BucketIntelligentTieringConfigurationTieringOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationTieringOutput) ToBucketIntelligentTieringConfigurationTieringOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationTieringOutput { + return o +} + +// S3 Intelligent-Tiering access tier. Valid values: `ARCHIVE_ACCESS`, `DEEP_ARCHIVE_ACCESS`. +func (o BucketIntelligentTieringConfigurationTieringOutput) AccessTier() pulumi.StringOutput { + return o.ApplyT(func(v BucketIntelligentTieringConfigurationTiering) string { return v.AccessTier }).(pulumi.StringOutput) +} + +// Number of consecutive days of no access after which an object will be eligible to be transitioned to the corresponding tier. +func (o BucketIntelligentTieringConfigurationTieringOutput) Days() pulumi.IntOutput { + return o.ApplyT(func(v BucketIntelligentTieringConfigurationTiering) int { return v.Days }).(pulumi.IntOutput) +} + +type BucketIntelligentTieringConfigurationTieringArrayOutput struct{ *pulumi.OutputState } + +func (BucketIntelligentTieringConfigurationTieringArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketIntelligentTieringConfigurationTiering)(nil)).Elem() +} + +func (o BucketIntelligentTieringConfigurationTieringArrayOutput) ToBucketIntelligentTieringConfigurationTieringArrayOutput() BucketIntelligentTieringConfigurationTieringArrayOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationTieringArrayOutput) ToBucketIntelligentTieringConfigurationTieringArrayOutputWithContext(ctx context.Context) BucketIntelligentTieringConfigurationTieringArrayOutput { + return o +} + +func (o BucketIntelligentTieringConfigurationTieringArrayOutput) Index(i pulumi.IntInput) BucketIntelligentTieringConfigurationTieringOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketIntelligentTieringConfigurationTiering { + return vs[0].([]BucketIntelligentTieringConfigurationTiering)[vs[1].(int)] + }).(BucketIntelligentTieringConfigurationTieringOutput) +} + +type BucketLifecycleConfigurationV2Rule struct { + // Configuration block that specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before permanently removing all parts of the upload. See below. + AbortIncompleteMultipartUpload *BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload `pulumi:"abortIncompleteMultipartUpload"` + // Configuration block that specifies the expiration for the lifecycle of the object in the form of date, days and, whether the object has a delete marker. See below. + Expiration *BucketLifecycleConfigurationV2RuleExpiration `pulumi:"expiration"` + // Configuration block used to identify objects that a Lifecycle Rule applies to. See below. If not specified, the `rule` will default to using `prefix`. + Filter *BucketLifecycleConfigurationV2RuleFilter `pulumi:"filter"` + // Unique identifier for the rule. The value cannot be longer than 255 characters. + Id string `pulumi:"id"` + // Configuration block that specifies when noncurrent object versions expire. See below. + NoncurrentVersionExpiration *BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration `pulumi:"noncurrentVersionExpiration"` + // Set of configuration blocks that specify the transition rule for the lifecycle rule that describes when noncurrent objects transition to a specific storage class. See below. + NoncurrentVersionTransitions []BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition `pulumi:"noncurrentVersionTransitions"` + // **DEPRECATED** Use `filter` instead. This has been deprecated by Amazon S3. Prefix identifying one or more objects to which the rule applies. Defaults to an empty string (`""`) if `filter` is not specified. + // + // Deprecated: Use filter instead + Prefix *string `pulumi:"prefix"` + // Whether the rule is currently being applied. Valid values: `Enabled` or `Disabled`. + Status string `pulumi:"status"` + // Set of configuration blocks that specify when an Amazon S3 object transitions to a specified storage class. See below. + Transitions []BucketLifecycleConfigurationV2RuleTransition `pulumi:"transitions"` +} + +// BucketLifecycleConfigurationV2RuleInput is an input type that accepts BucketLifecycleConfigurationV2RuleArgs and BucketLifecycleConfigurationV2RuleOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleInput` via: +// +// BucketLifecycleConfigurationV2RuleArgs{...} +type BucketLifecycleConfigurationV2RuleInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleOutput() BucketLifecycleConfigurationV2RuleOutput + ToBucketLifecycleConfigurationV2RuleOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleOutput +} + +type BucketLifecycleConfigurationV2RuleArgs struct { + // Configuration block that specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before permanently removing all parts of the upload. See below. + AbortIncompleteMultipartUpload BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrInput `pulumi:"abortIncompleteMultipartUpload"` + // Configuration block that specifies the expiration for the lifecycle of the object in the form of date, days and, whether the object has a delete marker. See below. + Expiration BucketLifecycleConfigurationV2RuleExpirationPtrInput `pulumi:"expiration"` + // Configuration block used to identify objects that a Lifecycle Rule applies to. See below. If not specified, the `rule` will default to using `prefix`. + Filter BucketLifecycleConfigurationV2RuleFilterPtrInput `pulumi:"filter"` + // Unique identifier for the rule. The value cannot be longer than 255 characters. + Id pulumi.StringInput `pulumi:"id"` + // Configuration block that specifies when noncurrent object versions expire. See below. + NoncurrentVersionExpiration BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrInput `pulumi:"noncurrentVersionExpiration"` + // Set of configuration blocks that specify the transition rule for the lifecycle rule that describes when noncurrent objects transition to a specific storage class. See below. + NoncurrentVersionTransitions BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayInput `pulumi:"noncurrentVersionTransitions"` + // **DEPRECATED** Use `filter` instead. This has been deprecated by Amazon S3. Prefix identifying one or more objects to which the rule applies. Defaults to an empty string (`""`) if `filter` is not specified. + // + // Deprecated: Use filter instead + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Whether the rule is currently being applied. Valid values: `Enabled` or `Disabled`. + Status pulumi.StringInput `pulumi:"status"` + // Set of configuration blocks that specify when an Amazon S3 object transitions to a specified storage class. See below. + Transitions BucketLifecycleConfigurationV2RuleTransitionArrayInput `pulumi:"transitions"` +} + +func (BucketLifecycleConfigurationV2RuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2Rule)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleArgs) ToBucketLifecycleConfigurationV2RuleOutput() BucketLifecycleConfigurationV2RuleOutput { + return i.ToBucketLifecycleConfigurationV2RuleOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleArgs) ToBucketLifecycleConfigurationV2RuleOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleOutput) +} + +// BucketLifecycleConfigurationV2RuleArrayInput is an input type that accepts BucketLifecycleConfigurationV2RuleArray and BucketLifecycleConfigurationV2RuleArrayOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleArrayInput` via: +// +// BucketLifecycleConfigurationV2RuleArray{ BucketLifecycleConfigurationV2RuleArgs{...} } +type BucketLifecycleConfigurationV2RuleArrayInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleArrayOutput() BucketLifecycleConfigurationV2RuleArrayOutput + ToBucketLifecycleConfigurationV2RuleArrayOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleArrayOutput +} + +type BucketLifecycleConfigurationV2RuleArray []BucketLifecycleConfigurationV2RuleInput + +func (BucketLifecycleConfigurationV2RuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleConfigurationV2Rule)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleArray) ToBucketLifecycleConfigurationV2RuleArrayOutput() BucketLifecycleConfigurationV2RuleArrayOutput { + return i.ToBucketLifecycleConfigurationV2RuleArrayOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleArray) ToBucketLifecycleConfigurationV2RuleArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleArrayOutput) +} + +type BucketLifecycleConfigurationV2RuleOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2Rule)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleOutput) ToBucketLifecycleConfigurationV2RuleOutput() BucketLifecycleConfigurationV2RuleOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleOutput) ToBucketLifecycleConfigurationV2RuleOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleOutput { + return o +} + +// Configuration block that specifies the days since the initiation of an incomplete multipart upload that Amazon S3 will wait before permanently removing all parts of the upload. See below. +func (o BucketLifecycleConfigurationV2RuleOutput) AbortIncompleteMultipartUpload() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) *BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload { + return v.AbortIncompleteMultipartUpload + }).(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) +} + +// Configuration block that specifies the expiration for the lifecycle of the object in the form of date, days and, whether the object has a delete marker. See below. +func (o BucketLifecycleConfigurationV2RuleOutput) Expiration() BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) *BucketLifecycleConfigurationV2RuleExpiration { + return v.Expiration + }).(BucketLifecycleConfigurationV2RuleExpirationPtrOutput) +} + +// Configuration block used to identify objects that a Lifecycle Rule applies to. See below. If not specified, the `rule` will default to using `prefix`. +func (o BucketLifecycleConfigurationV2RuleOutput) Filter() BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) *BucketLifecycleConfigurationV2RuleFilter { return v.Filter }).(BucketLifecycleConfigurationV2RuleFilterPtrOutput) +} + +// Unique identifier for the rule. The value cannot be longer than 255 characters. +func (o BucketLifecycleConfigurationV2RuleOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) string { return v.Id }).(pulumi.StringOutput) +} + +// Configuration block that specifies when noncurrent object versions expire. See below. +func (o BucketLifecycleConfigurationV2RuleOutput) NoncurrentVersionExpiration() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) *BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration { + return v.NoncurrentVersionExpiration + }).(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) +} + +// Set of configuration blocks that specify the transition rule for the lifecycle rule that describes when noncurrent objects transition to a specific storage class. See below. +func (o BucketLifecycleConfigurationV2RuleOutput) NoncurrentVersionTransitions() BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) []BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition { + return v.NoncurrentVersionTransitions + }).(BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput) +} + +// **DEPRECATED** Use `filter` instead. This has been deprecated by Amazon S3. Prefix identifying one or more objects to which the rule applies. Defaults to an empty string (`""`) if `filter` is not specified. +// +// Deprecated: Use filter instead +func (o BucketLifecycleConfigurationV2RuleOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Whether the rule is currently being applied. Valid values: `Enabled` or `Disabled`. +func (o BucketLifecycleConfigurationV2RuleOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) string { return v.Status }).(pulumi.StringOutput) +} + +// Set of configuration blocks that specify when an Amazon S3 object transitions to a specified storage class. See below. +func (o BucketLifecycleConfigurationV2RuleOutput) Transitions() BucketLifecycleConfigurationV2RuleTransitionArrayOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2Rule) []BucketLifecycleConfigurationV2RuleTransition { + return v.Transitions + }).(BucketLifecycleConfigurationV2RuleTransitionArrayOutput) +} + +type BucketLifecycleConfigurationV2RuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleConfigurationV2Rule)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleArrayOutput) ToBucketLifecycleConfigurationV2RuleArrayOutput() BucketLifecycleConfigurationV2RuleArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleArrayOutput) ToBucketLifecycleConfigurationV2RuleArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleArrayOutput) Index(i pulumi.IntInput) BucketLifecycleConfigurationV2RuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLifecycleConfigurationV2Rule { + return vs[0].([]BucketLifecycleConfigurationV2Rule)[vs[1].(int)] + }).(BucketLifecycleConfigurationV2RuleOutput) +} + +type BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload struct { + // Number of days after which Amazon S3 aborts an incomplete multipart upload. + DaysAfterInitiation *int `pulumi:"daysAfterInitiation"` +} + +// BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadInput is an input type that accepts BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs and BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadInput` via: +// +// BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs{...} +type BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput + ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput +} + +type BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs struct { + // Number of days after which Amazon S3 aborts an incomplete multipart upload. + DaysAfterInitiation pulumi.IntPtrInput `pulumi:"daysAfterInitiation"` +} + +func (BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput { + return i.ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) +} + +func (i BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput).ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(ctx) +} + +// BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrInput is an input type that accepts BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs, BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtr and BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrInput` via: +// +// BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs{...} +// +// or: +// +// nil +type BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput + ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput +} + +type bucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrType BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs + +func BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtr(v *BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrInput { + return (*bucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrType)(v) +} + +func (*bucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload)(nil)).Elem() +} + +func (i *bucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrType) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrType) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return o.ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload) *BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload { + return &v + }).(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) +} + +// Number of days after which Amazon S3 aborts an incomplete multipart upload. +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) DaysAfterInitiation() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload) *int { + return v.DaysAfterInitiation + }).(pulumi.IntPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) ToBucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) Elem() BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload) BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload { + if v != nil { + return *v + } + var ret BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload + return ret + }).(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput) +} + +// Number of days after which Amazon S3 aborts an incomplete multipart upload. +func (o BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput) DaysAfterInitiation() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUpload) *int { + if v == nil { + return nil + } + return v.DaysAfterInitiation + }).(pulumi.IntPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleExpiration struct { + // Date the object is to be moved or deleted. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. + Date *string `pulumi:"date"` + // Lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer. + Days *int `pulumi:"days"` + // Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set to `true`, the delete marker will be expired; if set to `false` the policy takes no action. + ExpiredObjectDeleteMarker *bool `pulumi:"expiredObjectDeleteMarker"` +} + +// BucketLifecycleConfigurationV2RuleExpirationInput is an input type that accepts BucketLifecycleConfigurationV2RuleExpirationArgs and BucketLifecycleConfigurationV2RuleExpirationOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleExpirationInput` via: +// +// BucketLifecycleConfigurationV2RuleExpirationArgs{...} +type BucketLifecycleConfigurationV2RuleExpirationInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleExpirationOutput() BucketLifecycleConfigurationV2RuleExpirationOutput + ToBucketLifecycleConfigurationV2RuleExpirationOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleExpirationOutput +} + +type BucketLifecycleConfigurationV2RuleExpirationArgs struct { + // Date the object is to be moved or deleted. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. + Date pulumi.StringPtrInput `pulumi:"date"` + // Lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer. + Days pulumi.IntPtrInput `pulumi:"days"` + // Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set to `true`, the delete marker will be expired; if set to `false` the policy takes no action. + ExpiredObjectDeleteMarker pulumi.BoolPtrInput `pulumi:"expiredObjectDeleteMarker"` +} + +func (BucketLifecycleConfigurationV2RuleExpirationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleExpiration)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleExpirationArgs) ToBucketLifecycleConfigurationV2RuleExpirationOutput() BucketLifecycleConfigurationV2RuleExpirationOutput { + return i.ToBucketLifecycleConfigurationV2RuleExpirationOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleExpirationArgs) ToBucketLifecycleConfigurationV2RuleExpirationOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleExpirationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleExpirationOutput) +} + +func (i BucketLifecycleConfigurationV2RuleExpirationArgs) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutput() BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleExpirationArgs) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleExpirationOutput).ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(ctx) +} + +// BucketLifecycleConfigurationV2RuleExpirationPtrInput is an input type that accepts BucketLifecycleConfigurationV2RuleExpirationArgs, BucketLifecycleConfigurationV2RuleExpirationPtr and BucketLifecycleConfigurationV2RuleExpirationPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleExpirationPtrInput` via: +// +// BucketLifecycleConfigurationV2RuleExpirationArgs{...} +// +// or: +// +// nil +type BucketLifecycleConfigurationV2RuleExpirationPtrInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleExpirationPtrOutput() BucketLifecycleConfigurationV2RuleExpirationPtrOutput + ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleExpirationPtrOutput +} + +type bucketLifecycleConfigurationV2RuleExpirationPtrType BucketLifecycleConfigurationV2RuleExpirationArgs + +func BucketLifecycleConfigurationV2RuleExpirationPtr(v *BucketLifecycleConfigurationV2RuleExpirationArgs) BucketLifecycleConfigurationV2RuleExpirationPtrInput { + return (*bucketLifecycleConfigurationV2RuleExpirationPtrType)(v) +} + +func (*bucketLifecycleConfigurationV2RuleExpirationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleExpiration)(nil)).Elem() +} + +func (i *bucketLifecycleConfigurationV2RuleExpirationPtrType) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutput() BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleConfigurationV2RuleExpirationPtrType) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleExpirationPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleExpirationOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleExpirationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleExpiration)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleExpirationOutput) ToBucketLifecycleConfigurationV2RuleExpirationOutput() BucketLifecycleConfigurationV2RuleExpirationOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleExpirationOutput) ToBucketLifecycleConfigurationV2RuleExpirationOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleExpirationOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleExpirationOutput) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutput() BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return o.ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleConfigurationV2RuleExpirationOutput) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleConfigurationV2RuleExpiration) *BucketLifecycleConfigurationV2RuleExpiration { + return &v + }).(BucketLifecycleConfigurationV2RuleExpirationPtrOutput) +} + +// Date the object is to be moved or deleted. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. +func (o BucketLifecycleConfigurationV2RuleExpirationOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleExpiration) *string { return v.Date }).(pulumi.StringPtrOutput) +} + +// Lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer. +func (o BucketLifecycleConfigurationV2RuleExpirationOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleExpiration) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set to `true`, the delete marker will be expired; if set to `false` the policy takes no action. +func (o BucketLifecycleConfigurationV2RuleExpirationOutput) ExpiredObjectDeleteMarker() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleExpiration) *bool { return v.ExpiredObjectDeleteMarker }).(pulumi.BoolPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleExpirationPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleExpirationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleExpiration)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleExpirationPtrOutput) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutput() BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleExpirationPtrOutput) ToBucketLifecycleConfigurationV2RuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleExpirationPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleExpirationPtrOutput) Elem() BucketLifecycleConfigurationV2RuleExpirationOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleExpiration) BucketLifecycleConfigurationV2RuleExpiration { + if v != nil { + return *v + } + var ret BucketLifecycleConfigurationV2RuleExpiration + return ret + }).(BucketLifecycleConfigurationV2RuleExpirationOutput) +} + +// Date the object is to be moved or deleted. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. +func (o BucketLifecycleConfigurationV2RuleExpirationPtrOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleExpiration) *string { + if v == nil { + return nil + } + return v.Date + }).(pulumi.StringPtrOutput) +} + +// Lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer. +func (o BucketLifecycleConfigurationV2RuleExpirationPtrOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleExpiration) *int { + if v == nil { + return nil + } + return v.Days + }).(pulumi.IntPtrOutput) +} + +// Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set to `true`, the delete marker will be expired; if set to `false` the policy takes no action. +func (o BucketLifecycleConfigurationV2RuleExpirationPtrOutput) ExpiredObjectDeleteMarker() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleExpiration) *bool { + if v == nil { + return nil + } + return v.ExpiredObjectDeleteMarker + }).(pulumi.BoolPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleFilter struct { + // Configuration block used to apply a logical `AND` to two or more predicates. See below. The Lifecycle Rule will apply to any object matching all the predicates configured inside the `and` block. + And *BucketLifecycleConfigurationV2RuleFilterAnd `pulumi:"and"` + // Minimum object size (in bytes) to which the rule applies. + ObjectSizeGreaterThan *string `pulumi:"objectSizeGreaterThan"` + // Maximum object size (in bytes) to which the rule applies. + ObjectSizeLessThan *string `pulumi:"objectSizeLessThan"` + // Prefix identifying one or more objects to which the rule applies. Defaults to an empty string (`""`) if not specified. + Prefix *string `pulumi:"prefix"` + // Configuration block for specifying a tag key and value. See below. + Tag *BucketLifecycleConfigurationV2RuleFilterTag `pulumi:"tag"` +} + +// BucketLifecycleConfigurationV2RuleFilterInput is an input type that accepts BucketLifecycleConfigurationV2RuleFilterArgs and BucketLifecycleConfigurationV2RuleFilterOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleFilterInput` via: +// +// BucketLifecycleConfigurationV2RuleFilterArgs{...} +type BucketLifecycleConfigurationV2RuleFilterInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleFilterOutput() BucketLifecycleConfigurationV2RuleFilterOutput + ToBucketLifecycleConfigurationV2RuleFilterOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleFilterOutput +} + +type BucketLifecycleConfigurationV2RuleFilterArgs struct { + // Configuration block used to apply a logical `AND` to two or more predicates. See below. The Lifecycle Rule will apply to any object matching all the predicates configured inside the `and` block. + And BucketLifecycleConfigurationV2RuleFilterAndPtrInput `pulumi:"and"` + // Minimum object size (in bytes) to which the rule applies. + ObjectSizeGreaterThan pulumi.StringPtrInput `pulumi:"objectSizeGreaterThan"` + // Maximum object size (in bytes) to which the rule applies. + ObjectSizeLessThan pulumi.StringPtrInput `pulumi:"objectSizeLessThan"` + // Prefix identifying one or more objects to which the rule applies. Defaults to an empty string (`""`) if not specified. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Configuration block for specifying a tag key and value. See below. + Tag BucketLifecycleConfigurationV2RuleFilterTagPtrInput `pulumi:"tag"` +} + +func (BucketLifecycleConfigurationV2RuleFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilter)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleFilterArgs) ToBucketLifecycleConfigurationV2RuleFilterOutput() BucketLifecycleConfigurationV2RuleFilterOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleFilterArgs) ToBucketLifecycleConfigurationV2RuleFilterOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterOutput) +} + +func (i BucketLifecycleConfigurationV2RuleFilterArgs) ToBucketLifecycleConfigurationV2RuleFilterPtrOutput() BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleFilterArgs) ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterOutput).ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(ctx) +} + +// BucketLifecycleConfigurationV2RuleFilterPtrInput is an input type that accepts BucketLifecycleConfigurationV2RuleFilterArgs, BucketLifecycleConfigurationV2RuleFilterPtr and BucketLifecycleConfigurationV2RuleFilterPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleFilterPtrInput` via: +// +// BucketLifecycleConfigurationV2RuleFilterArgs{...} +// +// or: +// +// nil +type BucketLifecycleConfigurationV2RuleFilterPtrInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleFilterPtrOutput() BucketLifecycleConfigurationV2RuleFilterPtrOutput + ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleFilterPtrOutput +} + +type bucketLifecycleConfigurationV2RuleFilterPtrType BucketLifecycleConfigurationV2RuleFilterArgs + +func BucketLifecycleConfigurationV2RuleFilterPtr(v *BucketLifecycleConfigurationV2RuleFilterArgs) BucketLifecycleConfigurationV2RuleFilterPtrInput { + return (*bucketLifecycleConfigurationV2RuleFilterPtrType)(v) +} + +func (*bucketLifecycleConfigurationV2RuleFilterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleFilter)(nil)).Elem() +} + +func (i *bucketLifecycleConfigurationV2RuleFilterPtrType) ToBucketLifecycleConfigurationV2RuleFilterPtrOutput() BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleConfigurationV2RuleFilterPtrType) ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilter)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleFilterOutput) ToBucketLifecycleConfigurationV2RuleFilterOutput() BucketLifecycleConfigurationV2RuleFilterOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterOutput) ToBucketLifecycleConfigurationV2RuleFilterOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterOutput) ToBucketLifecycleConfigurationV2RuleFilterPtrOutput() BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return o.ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleConfigurationV2RuleFilterOutput) ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleConfigurationV2RuleFilter) *BucketLifecycleConfigurationV2RuleFilter { + return &v + }).(BucketLifecycleConfigurationV2RuleFilterPtrOutput) +} + +// Configuration block used to apply a logical `AND` to two or more predicates. See below. The Lifecycle Rule will apply to any object matching all the predicates configured inside the `and` block. +func (o BucketLifecycleConfigurationV2RuleFilterOutput) And() BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilter) *BucketLifecycleConfigurationV2RuleFilterAnd { + return v.And + }).(BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) +} + +// Minimum object size (in bytes) to which the rule applies. +func (o BucketLifecycleConfigurationV2RuleFilterOutput) ObjectSizeGreaterThan() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilter) *string { return v.ObjectSizeGreaterThan }).(pulumi.StringPtrOutput) +} + +// Maximum object size (in bytes) to which the rule applies. +func (o BucketLifecycleConfigurationV2RuleFilterOutput) ObjectSizeLessThan() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilter) *string { return v.ObjectSizeLessThan }).(pulumi.StringPtrOutput) +} + +// Prefix identifying one or more objects to which the rule applies. Defaults to an empty string (`""`) if not specified. +func (o BucketLifecycleConfigurationV2RuleFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Configuration block for specifying a tag key and value. See below. +func (o BucketLifecycleConfigurationV2RuleFilterOutput) Tag() BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilter) *BucketLifecycleConfigurationV2RuleFilterTag { + return v.Tag + }).(BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleFilterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleFilter)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) ToBucketLifecycleConfigurationV2RuleFilterPtrOutput() BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) ToBucketLifecycleConfigurationV2RuleFilterPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) Elem() BucketLifecycleConfigurationV2RuleFilterOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilter) BucketLifecycleConfigurationV2RuleFilter { + if v != nil { + return *v + } + var ret BucketLifecycleConfigurationV2RuleFilter + return ret + }).(BucketLifecycleConfigurationV2RuleFilterOutput) +} + +// Configuration block used to apply a logical `AND` to two or more predicates. See below. The Lifecycle Rule will apply to any object matching all the predicates configured inside the `and` block. +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) And() BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilter) *BucketLifecycleConfigurationV2RuleFilterAnd { + if v == nil { + return nil + } + return v.And + }).(BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) +} + +// Minimum object size (in bytes) to which the rule applies. +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) ObjectSizeGreaterThan() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilter) *string { + if v == nil { + return nil + } + return v.ObjectSizeGreaterThan + }).(pulumi.StringPtrOutput) +} + +// Maximum object size (in bytes) to which the rule applies. +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) ObjectSizeLessThan() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilter) *string { + if v == nil { + return nil + } + return v.ObjectSizeLessThan + }).(pulumi.StringPtrOutput) +} + +// Prefix identifying one or more objects to which the rule applies. Defaults to an empty string (`""`) if not specified. +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilter) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// Configuration block for specifying a tag key and value. See below. +func (o BucketLifecycleConfigurationV2RuleFilterPtrOutput) Tag() BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilter) *BucketLifecycleConfigurationV2RuleFilterTag { + if v == nil { + return nil + } + return v.Tag + }).(BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterAnd struct { + // Minimum object size to which the rule applies. Value must be at least `0` if specified. Defaults to 128000 (128 KB) for all `storageClass` values unless `transitionDefaultMinimumObjectSize` specifies otherwise. + ObjectSizeGreaterThan *int `pulumi:"objectSizeGreaterThan"` + // Maximum object size to which the rule applies. Value must be at least `1` if specified. + ObjectSizeLessThan *int `pulumi:"objectSizeLessThan"` + // Prefix identifying one or more objects to which the rule applies. + Prefix *string `pulumi:"prefix"` + // Key-value map of resource tags. All of these tags must exist in the object's tag set in order for the rule to apply. + Tags map[string]string `pulumi:"tags"` +} + +// BucketLifecycleConfigurationV2RuleFilterAndInput is an input type that accepts BucketLifecycleConfigurationV2RuleFilterAndArgs and BucketLifecycleConfigurationV2RuleFilterAndOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleFilterAndInput` via: +// +// BucketLifecycleConfigurationV2RuleFilterAndArgs{...} +type BucketLifecycleConfigurationV2RuleFilterAndInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleFilterAndOutput() BucketLifecycleConfigurationV2RuleFilterAndOutput + ToBucketLifecycleConfigurationV2RuleFilterAndOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleFilterAndOutput +} + +type BucketLifecycleConfigurationV2RuleFilterAndArgs struct { + // Minimum object size to which the rule applies. Value must be at least `0` if specified. Defaults to 128000 (128 KB) for all `storageClass` values unless `transitionDefaultMinimumObjectSize` specifies otherwise. + ObjectSizeGreaterThan pulumi.IntPtrInput `pulumi:"objectSizeGreaterThan"` + // Maximum object size to which the rule applies. Value must be at least `1` if specified. + ObjectSizeLessThan pulumi.IntPtrInput `pulumi:"objectSizeLessThan"` + // Prefix identifying one or more objects to which the rule applies. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Key-value map of resource tags. All of these tags must exist in the object's tag set in order for the rule to apply. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (BucketLifecycleConfigurationV2RuleFilterAndArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterAnd)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleFilterAndArgs) ToBucketLifecycleConfigurationV2RuleFilterAndOutput() BucketLifecycleConfigurationV2RuleFilterAndOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterAndOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleFilterAndArgs) ToBucketLifecycleConfigurationV2RuleFilterAndOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterAndOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterAndOutput) +} + +func (i BucketLifecycleConfigurationV2RuleFilterAndArgs) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutput() BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleFilterAndArgs) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterAndOutput).ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(ctx) +} + +// BucketLifecycleConfigurationV2RuleFilterAndPtrInput is an input type that accepts BucketLifecycleConfigurationV2RuleFilterAndArgs, BucketLifecycleConfigurationV2RuleFilterAndPtr and BucketLifecycleConfigurationV2RuleFilterAndPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleFilterAndPtrInput` via: +// +// BucketLifecycleConfigurationV2RuleFilterAndArgs{...} +// +// or: +// +// nil +type BucketLifecycleConfigurationV2RuleFilterAndPtrInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutput() BucketLifecycleConfigurationV2RuleFilterAndPtrOutput + ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleFilterAndPtrOutput +} + +type bucketLifecycleConfigurationV2RuleFilterAndPtrType BucketLifecycleConfigurationV2RuleFilterAndArgs + +func BucketLifecycleConfigurationV2RuleFilterAndPtr(v *BucketLifecycleConfigurationV2RuleFilterAndArgs) BucketLifecycleConfigurationV2RuleFilterAndPtrInput { + return (*bucketLifecycleConfigurationV2RuleFilterAndPtrType)(v) +} + +func (*bucketLifecycleConfigurationV2RuleFilterAndPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleFilterAnd)(nil)).Elem() +} + +func (i *bucketLifecycleConfigurationV2RuleFilterAndPtrType) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutput() BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleConfigurationV2RuleFilterAndPtrType) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterAndOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleFilterAndOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterAnd)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) ToBucketLifecycleConfigurationV2RuleFilterAndOutput() BucketLifecycleConfigurationV2RuleFilterAndOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) ToBucketLifecycleConfigurationV2RuleFilterAndOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterAndOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutput() BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return o.ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleConfigurationV2RuleFilterAnd) *BucketLifecycleConfigurationV2RuleFilterAnd { + return &v + }).(BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) +} + +// Minimum object size to which the rule applies. Value must be at least `0` if specified. Defaults to 128000 (128 KB) for all `storageClass` values unless `transitionDefaultMinimumObjectSize` specifies otherwise. +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) ObjectSizeGreaterThan() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilterAnd) *int { return v.ObjectSizeGreaterThan }).(pulumi.IntPtrOutput) +} + +// Maximum object size to which the rule applies. Value must be at least `1` if specified. +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) ObjectSizeLessThan() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilterAnd) *int { return v.ObjectSizeLessThan }).(pulumi.IntPtrOutput) +} + +// Prefix identifying one or more objects to which the rule applies. +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilterAnd) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Key-value map of resource tags. All of these tags must exist in the object's tag set in order for the rule to apply. +func (o BucketLifecycleConfigurationV2RuleFilterAndOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilterAnd) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterAndPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleFilterAnd)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutput() BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) ToBucketLifecycleConfigurationV2RuleFilterAndPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterAndPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) Elem() BucketLifecycleConfigurationV2RuleFilterAndOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterAnd) BucketLifecycleConfigurationV2RuleFilterAnd { + if v != nil { + return *v + } + var ret BucketLifecycleConfigurationV2RuleFilterAnd + return ret + }).(BucketLifecycleConfigurationV2RuleFilterAndOutput) +} + +// Minimum object size to which the rule applies. Value must be at least `0` if specified. Defaults to 128000 (128 KB) for all `storageClass` values unless `transitionDefaultMinimumObjectSize` specifies otherwise. +func (o BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) ObjectSizeGreaterThan() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterAnd) *int { + if v == nil { + return nil + } + return v.ObjectSizeGreaterThan + }).(pulumi.IntPtrOutput) +} + +// Maximum object size to which the rule applies. Value must be at least `1` if specified. +func (o BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) ObjectSizeLessThan() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterAnd) *int { + if v == nil { + return nil + } + return v.ObjectSizeLessThan + }).(pulumi.IntPtrOutput) +} + +// Prefix identifying one or more objects to which the rule applies. +func (o BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterAnd) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// Key-value map of resource tags. All of these tags must exist in the object's tag set in order for the rule to apply. +func (o BucketLifecycleConfigurationV2RuleFilterAndPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterAnd) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterTag struct { + // Name of the object key. + Key string `pulumi:"key"` + // Value of the tag. + Value string `pulumi:"value"` +} + +// BucketLifecycleConfigurationV2RuleFilterTagInput is an input type that accepts BucketLifecycleConfigurationV2RuleFilterTagArgs and BucketLifecycleConfigurationV2RuleFilterTagOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleFilterTagInput` via: +// +// BucketLifecycleConfigurationV2RuleFilterTagArgs{...} +type BucketLifecycleConfigurationV2RuleFilterTagInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleFilterTagOutput() BucketLifecycleConfigurationV2RuleFilterTagOutput + ToBucketLifecycleConfigurationV2RuleFilterTagOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleFilterTagOutput +} + +type BucketLifecycleConfigurationV2RuleFilterTagArgs struct { + // Name of the object key. + Key pulumi.StringInput `pulumi:"key"` + // Value of the tag. + Value pulumi.StringInput `pulumi:"value"` +} + +func (BucketLifecycleConfigurationV2RuleFilterTagArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterTag)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleFilterTagArgs) ToBucketLifecycleConfigurationV2RuleFilterTagOutput() BucketLifecycleConfigurationV2RuleFilterTagOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterTagOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleFilterTagArgs) ToBucketLifecycleConfigurationV2RuleFilterTagOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterTagOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterTagOutput) +} + +func (i BucketLifecycleConfigurationV2RuleFilterTagArgs) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutput() BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleFilterTagArgs) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterTagOutput).ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(ctx) +} + +// BucketLifecycleConfigurationV2RuleFilterTagPtrInput is an input type that accepts BucketLifecycleConfigurationV2RuleFilterTagArgs, BucketLifecycleConfigurationV2RuleFilterTagPtr and BucketLifecycleConfigurationV2RuleFilterTagPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleFilterTagPtrInput` via: +// +// BucketLifecycleConfigurationV2RuleFilterTagArgs{...} +// +// or: +// +// nil +type BucketLifecycleConfigurationV2RuleFilterTagPtrInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutput() BucketLifecycleConfigurationV2RuleFilterTagPtrOutput + ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleFilterTagPtrOutput +} + +type bucketLifecycleConfigurationV2RuleFilterTagPtrType BucketLifecycleConfigurationV2RuleFilterTagArgs + +func BucketLifecycleConfigurationV2RuleFilterTagPtr(v *BucketLifecycleConfigurationV2RuleFilterTagArgs) BucketLifecycleConfigurationV2RuleFilterTagPtrInput { + return (*bucketLifecycleConfigurationV2RuleFilterTagPtrType)(v) +} + +func (*bucketLifecycleConfigurationV2RuleFilterTagPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleFilterTag)(nil)).Elem() +} + +func (i *bucketLifecycleConfigurationV2RuleFilterTagPtrType) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutput() BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleConfigurationV2RuleFilterTagPtrType) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterTagOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleFilterTagOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterTag)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleFilterTagOutput) ToBucketLifecycleConfigurationV2RuleFilterTagOutput() BucketLifecycleConfigurationV2RuleFilterTagOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterTagOutput) ToBucketLifecycleConfigurationV2RuleFilterTagOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterTagOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterTagOutput) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutput() BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return o.ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleConfigurationV2RuleFilterTagOutput) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleConfigurationV2RuleFilterTag) *BucketLifecycleConfigurationV2RuleFilterTag { + return &v + }).(BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) +} + +// Name of the object key. +func (o BucketLifecycleConfigurationV2RuleFilterTagOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilterTag) string { return v.Key }).(pulumi.StringOutput) +} + +// Value of the tag. +func (o BucketLifecycleConfigurationV2RuleFilterTagOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleFilterTag) string { return v.Value }).(pulumi.StringOutput) +} + +type BucketLifecycleConfigurationV2RuleFilterTagPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleFilterTag)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutput() BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) ToBucketLifecycleConfigurationV2RuleFilterTagPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleFilterTagPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) Elem() BucketLifecycleConfigurationV2RuleFilterTagOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterTag) BucketLifecycleConfigurationV2RuleFilterTag { + if v != nil { + return *v + } + var ret BucketLifecycleConfigurationV2RuleFilterTag + return ret + }).(BucketLifecycleConfigurationV2RuleFilterTagOutput) +} + +// Name of the object key. +func (o BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterTag) *string { + if v == nil { + return nil + } + return &v.Key + }).(pulumi.StringPtrOutput) +} + +// Value of the tag. +func (o BucketLifecycleConfigurationV2RuleFilterTagPtrOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleFilterTag) *string { + if v == nil { + return nil + } + return &v.Value + }).(pulumi.StringPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration struct { + // Number of noncurrent versions Amazon S3 will retain. Must be a non-zero positive integer. + NewerNoncurrentVersions *string `pulumi:"newerNoncurrentVersions"` + // Number of days an object is noncurrent before Amazon S3 can perform the associated action. Must be a positive integer. + NoncurrentDays *int `pulumi:"noncurrentDays"` +} + +// BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationInput is an input type that accepts BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs and BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationInput` via: +// +// BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs{...} +type BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs struct { + // Number of noncurrent versions Amazon S3 will retain. Must be a non-zero positive integer. + NewerNoncurrentVersions pulumi.StringPtrInput `pulumi:"newerNoncurrentVersions"` + // Number of days an object is noncurrent before Amazon S3 can perform the associated action. Must be a positive integer. + NoncurrentDays pulumi.IntPtrInput `pulumi:"noncurrentDays"` +} + +func (BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput { + return i.ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput).ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(ctx) +} + +// BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrInput is an input type that accepts BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs, BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtr and BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrInput` via: +// +// BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs{...} +// +// or: +// +// nil +type BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput +} + +type bucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrType BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs + +func BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtr(v *BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrInput { + return (*bucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrType)(v) +} + +func (*bucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (i *bucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrType) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return i.ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrType) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return o.ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration) *BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration { + return &v + }).(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) +} + +// Number of noncurrent versions Amazon S3 will retain. Must be a non-zero positive integer. +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) NewerNoncurrentVersions() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration) *string { + return v.NewerNoncurrentVersions + }).(pulumi.StringPtrOutput) +} + +// Number of days an object is noncurrent before Amazon S3 can perform the associated action. Must be a positive integer. +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) NoncurrentDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration) *int { return v.NoncurrentDays }).(pulumi.IntPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) Elem() BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration) BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration { + if v != nil { + return *v + } + var ret BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration + return ret + }).(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput) +} + +// Number of noncurrent versions Amazon S3 will retain. Must be a non-zero positive integer. +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) NewerNoncurrentVersions() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration) *string { + if v == nil { + return nil + } + return v.NewerNoncurrentVersions + }).(pulumi.StringPtrOutput) +} + +// Number of days an object is noncurrent before Amazon S3 can perform the associated action. Must be a positive integer. +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput) NoncurrentDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketLifecycleConfigurationV2RuleNoncurrentVersionExpiration) *int { + if v == nil { + return nil + } + return v.NoncurrentDays + }).(pulumi.IntPtrOutput) +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition struct { + // Number of noncurrent versions Amazon S3 will retain. Must be a non-zero positive integer. + NewerNoncurrentVersions *string `pulumi:"newerNoncurrentVersions"` + // Number of days an object is noncurrent before Amazon S3 can perform the associated action. + NoncurrentDays *int `pulumi:"noncurrentDays"` + // Class of storage used to store the object. Valid Values: `GLACIER`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `DEEP_ARCHIVE`, `GLACIER_IR`. + StorageClass string `pulumi:"storageClass"` +} + +// BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionInput is an input type that accepts BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs and BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionInput` via: +// +// BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs{...} +type BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs struct { + // Number of noncurrent versions Amazon S3 will retain. Must be a non-zero positive integer. + NewerNoncurrentVersions pulumi.StringPtrInput `pulumi:"newerNoncurrentVersions"` + // Number of days an object is noncurrent before Amazon S3 can perform the associated action. + NoncurrentDays pulumi.IntPtrInput `pulumi:"noncurrentDays"` + // Class of storage used to store the object. Valid Values: `GLACIER`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `DEEP_ARCHIVE`, `GLACIER_IR`. + StorageClass pulumi.StringInput `pulumi:"storageClass"` +} + +func (BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput { + return i.ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) +} + +// BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayInput is an input type that accepts BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray and BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayInput` via: +// +// BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray{ BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs{...} } +type BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput + ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray []BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionInput + +func (BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput { + return i.ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput) +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput { + return o +} + +// Number of noncurrent versions Amazon S3 will retain. Must be a non-zero positive integer. +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) NewerNoncurrentVersions() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition) *string { + return v.NewerNoncurrentVersions + }).(pulumi.StringPtrOutput) +} + +// Number of days an object is noncurrent before Amazon S3 can perform the associated action. +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) NoncurrentDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition) *int { return v.NoncurrentDays }).(pulumi.IntPtrOutput) +} + +// Class of storage used to store the object. Valid Values: `GLACIER`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `DEEP_ARCHIVE`, `GLACIER_IR`. +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition) string { return v.StorageClass }).(pulumi.StringOutput) +} + +type BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput() BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput) ToBucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput) Index(i pulumi.IntInput) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition { + return vs[0].([]BucketLifecycleConfigurationV2RuleNoncurrentVersionTransition)[vs[1].(int)] + }).(BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput) +} + +type BucketLifecycleConfigurationV2RuleTransition struct { + // Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. + Date *string `pulumi:"date"` + // Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storageClass`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. + Days *int `pulumi:"days"` + // Class of storage used to store the object. Valid Values: `GLACIER`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `DEEP_ARCHIVE`, `GLACIER_IR`. + StorageClass string `pulumi:"storageClass"` +} + +// BucketLifecycleConfigurationV2RuleTransitionInput is an input type that accepts BucketLifecycleConfigurationV2RuleTransitionArgs and BucketLifecycleConfigurationV2RuleTransitionOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleTransitionInput` via: +// +// BucketLifecycleConfigurationV2RuleTransitionArgs{...} +type BucketLifecycleConfigurationV2RuleTransitionInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleTransitionOutput() BucketLifecycleConfigurationV2RuleTransitionOutput + ToBucketLifecycleConfigurationV2RuleTransitionOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleTransitionOutput +} + +type BucketLifecycleConfigurationV2RuleTransitionArgs struct { + // Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. + Date pulumi.StringPtrInput `pulumi:"date"` + // Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storageClass`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. + Days pulumi.IntPtrInput `pulumi:"days"` + // Class of storage used to store the object. Valid Values: `GLACIER`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `DEEP_ARCHIVE`, `GLACIER_IR`. + StorageClass pulumi.StringInput `pulumi:"storageClass"` +} + +func (BucketLifecycleConfigurationV2RuleTransitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleTransition)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleTransitionArgs) ToBucketLifecycleConfigurationV2RuleTransitionOutput() BucketLifecycleConfigurationV2RuleTransitionOutput { + return i.ToBucketLifecycleConfigurationV2RuleTransitionOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleTransitionArgs) ToBucketLifecycleConfigurationV2RuleTransitionOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleTransitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleTransitionOutput) +} + +// BucketLifecycleConfigurationV2RuleTransitionArrayInput is an input type that accepts BucketLifecycleConfigurationV2RuleTransitionArray and BucketLifecycleConfigurationV2RuleTransitionArrayOutput values. +// You can construct a concrete instance of `BucketLifecycleConfigurationV2RuleTransitionArrayInput` via: +// +// BucketLifecycleConfigurationV2RuleTransitionArray{ BucketLifecycleConfigurationV2RuleTransitionArgs{...} } +type BucketLifecycleConfigurationV2RuleTransitionArrayInput interface { + pulumi.Input + + ToBucketLifecycleConfigurationV2RuleTransitionArrayOutput() BucketLifecycleConfigurationV2RuleTransitionArrayOutput + ToBucketLifecycleConfigurationV2RuleTransitionArrayOutputWithContext(context.Context) BucketLifecycleConfigurationV2RuleTransitionArrayOutput +} + +type BucketLifecycleConfigurationV2RuleTransitionArray []BucketLifecycleConfigurationV2RuleTransitionInput + +func (BucketLifecycleConfigurationV2RuleTransitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleConfigurationV2RuleTransition)(nil)).Elem() +} + +func (i BucketLifecycleConfigurationV2RuleTransitionArray) ToBucketLifecycleConfigurationV2RuleTransitionArrayOutput() BucketLifecycleConfigurationV2RuleTransitionArrayOutput { + return i.ToBucketLifecycleConfigurationV2RuleTransitionArrayOutputWithContext(context.Background()) +} + +func (i BucketLifecycleConfigurationV2RuleTransitionArray) ToBucketLifecycleConfigurationV2RuleTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleTransitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2RuleTransitionArrayOutput) +} + +type BucketLifecycleConfigurationV2RuleTransitionOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleTransitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleConfigurationV2RuleTransition)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleTransitionOutput) ToBucketLifecycleConfigurationV2RuleTransitionOutput() BucketLifecycleConfigurationV2RuleTransitionOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleTransitionOutput) ToBucketLifecycleConfigurationV2RuleTransitionOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleTransitionOutput { + return o +} + +// Date objects are transitioned to the specified storage class. The date value must be in [RFC3339 full-date format](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) e.g. `2023-08-22`. +func (o BucketLifecycleConfigurationV2RuleTransitionOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleTransition) *string { return v.Date }).(pulumi.StringPtrOutput) +} + +// Number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer. If both `days` and `date` are not specified, defaults to `0`. Valid values depend on `storageClass`, see [Transition objects using Amazon S3 Lifecycle](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html) for more details. +func (o BucketLifecycleConfigurationV2RuleTransitionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleTransition) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Class of storage used to store the object. Valid Values: `GLACIER`, `STANDARD_IA`, `ONEZONE_IA`, `INTELLIGENT_TIERING`, `DEEP_ARCHIVE`, `GLACIER_IR`. +func (o BucketLifecycleConfigurationV2RuleTransitionOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleConfigurationV2RuleTransition) string { return v.StorageClass }).(pulumi.StringOutput) +} + +type BucketLifecycleConfigurationV2RuleTransitionArrayOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleConfigurationV2RuleTransitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleConfigurationV2RuleTransition)(nil)).Elem() +} + +func (o BucketLifecycleConfigurationV2RuleTransitionArrayOutput) ToBucketLifecycleConfigurationV2RuleTransitionArrayOutput() BucketLifecycleConfigurationV2RuleTransitionArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleTransitionArrayOutput) ToBucketLifecycleConfigurationV2RuleTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2RuleTransitionArrayOutput { + return o +} + +func (o BucketLifecycleConfigurationV2RuleTransitionArrayOutput) Index(i pulumi.IntInput) BucketLifecycleConfigurationV2RuleTransitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLifecycleConfigurationV2RuleTransition { + return vs[0].([]BucketLifecycleConfigurationV2RuleTransition)[vs[1].(int)] + }).(BucketLifecycleConfigurationV2RuleTransitionOutput) +} + +type BucketLifecycleRule struct { + // Specifies the number of days after initiating a multipart upload when the multipart upload must be completed. + AbortIncompleteMultipartUploadDays *int `pulumi:"abortIncompleteMultipartUploadDays"` + // Specifies lifecycle rule status. + Enabled bool `pulumi:"enabled"` + // Specifies a period in the object's expire (documented below). + Expiration *BucketLifecycleRuleExpiration `pulumi:"expiration"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id *string `pulumi:"id"` + // Specifies when noncurrent object versions expire (documented below). + NoncurrentVersionExpiration *BucketLifecycleRuleNoncurrentVersionExpiration `pulumi:"noncurrentVersionExpiration"` + // Specifies when noncurrent object versions transitions (documented below). + // + // At least one of `abortIncompleteMultipartUploadDays`, `expiration`, `transition`, `noncurrentVersionExpiration`, `noncurrentVersionTransition` must be specified. + NoncurrentVersionTransitions []BucketLifecycleRuleNoncurrentVersionTransition `pulumi:"noncurrentVersionTransitions"` + // Object key prefix identifying one or more objects to which the rule applies. + Prefix *string `pulumi:"prefix"` + // Specifies object tags key and value. + Tags map[string]string `pulumi:"tags"` + // Specifies a period in the object's transitions (documented below). + Transitions []BucketLifecycleRuleTransition `pulumi:"transitions"` +} + +// BucketLifecycleRuleInput is an input type that accepts BucketLifecycleRuleArgs and BucketLifecycleRuleOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleInput` via: +// +// BucketLifecycleRuleArgs{...} +type BucketLifecycleRuleInput interface { + pulumi.Input + + ToBucketLifecycleRuleOutput() BucketLifecycleRuleOutput + ToBucketLifecycleRuleOutputWithContext(context.Context) BucketLifecycleRuleOutput +} + +type BucketLifecycleRuleArgs struct { + // Specifies the number of days after initiating a multipart upload when the multipart upload must be completed. + AbortIncompleteMultipartUploadDays pulumi.IntPtrInput `pulumi:"abortIncompleteMultipartUploadDays"` + // Specifies lifecycle rule status. + Enabled pulumi.BoolInput `pulumi:"enabled"` + // Specifies a period in the object's expire (documented below). + Expiration BucketLifecycleRuleExpirationPtrInput `pulumi:"expiration"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id pulumi.StringPtrInput `pulumi:"id"` + // Specifies when noncurrent object versions expire (documented below). + NoncurrentVersionExpiration BucketLifecycleRuleNoncurrentVersionExpirationPtrInput `pulumi:"noncurrentVersionExpiration"` + // Specifies when noncurrent object versions transitions (documented below). + // + // At least one of `abortIncompleteMultipartUploadDays`, `expiration`, `transition`, `noncurrentVersionExpiration`, `noncurrentVersionTransition` must be specified. + NoncurrentVersionTransitions BucketLifecycleRuleNoncurrentVersionTransitionArrayInput `pulumi:"noncurrentVersionTransitions"` + // Object key prefix identifying one or more objects to which the rule applies. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Specifies object tags key and value. + Tags pulumi.StringMapInput `pulumi:"tags"` + // Specifies a period in the object's transitions (documented below). + Transitions BucketLifecycleRuleTransitionArrayInput `pulumi:"transitions"` +} + +func (BucketLifecycleRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRule)(nil)).Elem() +} + +func (i BucketLifecycleRuleArgs) ToBucketLifecycleRuleOutput() BucketLifecycleRuleOutput { + return i.ToBucketLifecycleRuleOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleArgs) ToBucketLifecycleRuleOutputWithContext(ctx context.Context) BucketLifecycleRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleOutput) +} + +// BucketLifecycleRuleArrayInput is an input type that accepts BucketLifecycleRuleArray and BucketLifecycleRuleArrayOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleArrayInput` via: +// +// BucketLifecycleRuleArray{ BucketLifecycleRuleArgs{...} } +type BucketLifecycleRuleArrayInput interface { + pulumi.Input + + ToBucketLifecycleRuleArrayOutput() BucketLifecycleRuleArrayOutput + ToBucketLifecycleRuleArrayOutputWithContext(context.Context) BucketLifecycleRuleArrayOutput +} + +type BucketLifecycleRuleArray []BucketLifecycleRuleInput + +func (BucketLifecycleRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleRule)(nil)).Elem() +} + +func (i BucketLifecycleRuleArray) ToBucketLifecycleRuleArrayOutput() BucketLifecycleRuleArrayOutput { + return i.ToBucketLifecycleRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleArray) ToBucketLifecycleRuleArrayOutputWithContext(ctx context.Context) BucketLifecycleRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleArrayOutput) +} + +type BucketLifecycleRuleOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRule)(nil)).Elem() +} + +func (o BucketLifecycleRuleOutput) ToBucketLifecycleRuleOutput() BucketLifecycleRuleOutput { + return o +} + +func (o BucketLifecycleRuleOutput) ToBucketLifecycleRuleOutputWithContext(ctx context.Context) BucketLifecycleRuleOutput { + return o +} + +// Specifies the number of days after initiating a multipart upload when the multipart upload must be completed. +func (o BucketLifecycleRuleOutput) AbortIncompleteMultipartUploadDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleRule) *int { return v.AbortIncompleteMultipartUploadDays }).(pulumi.IntPtrOutput) +} + +// Specifies lifecycle rule status. +func (o BucketLifecycleRuleOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v BucketLifecycleRule) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +// Specifies a period in the object's expire (documented below). +func (o BucketLifecycleRuleOutput) Expiration() BucketLifecycleRuleExpirationPtrOutput { + return o.ApplyT(func(v BucketLifecycleRule) *BucketLifecycleRuleExpiration { return v.Expiration }).(BucketLifecycleRuleExpirationPtrOutput) +} + +// Unique identifier for the rule. Must be less than or equal to 255 characters in length. +func (o BucketLifecycleRuleOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleRule) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Specifies when noncurrent object versions expire (documented below). +func (o BucketLifecycleRuleOutput) NoncurrentVersionExpiration() BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return o.ApplyT(func(v BucketLifecycleRule) *BucketLifecycleRuleNoncurrentVersionExpiration { + return v.NoncurrentVersionExpiration + }).(BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) +} + +// Specifies when noncurrent object versions transitions (documented below). +// +// At least one of `abortIncompleteMultipartUploadDays`, `expiration`, `transition`, `noncurrentVersionExpiration`, `noncurrentVersionTransition` must be specified. +func (o BucketLifecycleRuleOutput) NoncurrentVersionTransitions() BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput { + return o.ApplyT(func(v BucketLifecycleRule) []BucketLifecycleRuleNoncurrentVersionTransition { + return v.NoncurrentVersionTransitions + }).(BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput) +} + +// Object key prefix identifying one or more objects to which the rule applies. +func (o BucketLifecycleRuleOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleRule) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Specifies object tags key and value. +func (o BucketLifecycleRuleOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketLifecycleRule) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Specifies a period in the object's transitions (documented below). +func (o BucketLifecycleRuleOutput) Transitions() BucketLifecycleRuleTransitionArrayOutput { + return o.ApplyT(func(v BucketLifecycleRule) []BucketLifecycleRuleTransition { return v.Transitions }).(BucketLifecycleRuleTransitionArrayOutput) +} + +type BucketLifecycleRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleRule)(nil)).Elem() +} + +func (o BucketLifecycleRuleArrayOutput) ToBucketLifecycleRuleArrayOutput() BucketLifecycleRuleArrayOutput { + return o +} + +func (o BucketLifecycleRuleArrayOutput) ToBucketLifecycleRuleArrayOutputWithContext(ctx context.Context) BucketLifecycleRuleArrayOutput { + return o +} + +func (o BucketLifecycleRuleArrayOutput) Index(i pulumi.IntInput) BucketLifecycleRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLifecycleRule { + return vs[0].([]BucketLifecycleRule)[vs[1].(int)] + }).(BucketLifecycleRuleOutput) +} + +type BucketLifecycleRuleExpiration struct { + // Specifies the date after which you want the corresponding action to take effect. + Date *string `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days *int `pulumi:"days"` + // On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Amazon S3 to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. + ExpiredObjectDeleteMarker *bool `pulumi:"expiredObjectDeleteMarker"` +} + +// BucketLifecycleRuleExpirationInput is an input type that accepts BucketLifecycleRuleExpirationArgs and BucketLifecycleRuleExpirationOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleExpirationInput` via: +// +// BucketLifecycleRuleExpirationArgs{...} +type BucketLifecycleRuleExpirationInput interface { + pulumi.Input + + ToBucketLifecycleRuleExpirationOutput() BucketLifecycleRuleExpirationOutput + ToBucketLifecycleRuleExpirationOutputWithContext(context.Context) BucketLifecycleRuleExpirationOutput +} + +type BucketLifecycleRuleExpirationArgs struct { + // Specifies the date after which you want the corresponding action to take effect. + Date pulumi.StringPtrInput `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days pulumi.IntPtrInput `pulumi:"days"` + // On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Amazon S3 to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. + ExpiredObjectDeleteMarker pulumi.BoolPtrInput `pulumi:"expiredObjectDeleteMarker"` +} + +func (BucketLifecycleRuleExpirationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleExpiration)(nil)).Elem() +} + +func (i BucketLifecycleRuleExpirationArgs) ToBucketLifecycleRuleExpirationOutput() BucketLifecycleRuleExpirationOutput { + return i.ToBucketLifecycleRuleExpirationOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleExpirationArgs) ToBucketLifecycleRuleExpirationOutputWithContext(ctx context.Context) BucketLifecycleRuleExpirationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleExpirationOutput) +} + +func (i BucketLifecycleRuleExpirationArgs) ToBucketLifecycleRuleExpirationPtrOutput() BucketLifecycleRuleExpirationPtrOutput { + return i.ToBucketLifecycleRuleExpirationPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleExpirationArgs) ToBucketLifecycleRuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleExpirationOutput).ToBucketLifecycleRuleExpirationPtrOutputWithContext(ctx) +} + +// BucketLifecycleRuleExpirationPtrInput is an input type that accepts BucketLifecycleRuleExpirationArgs, BucketLifecycleRuleExpirationPtr and BucketLifecycleRuleExpirationPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleExpirationPtrInput` via: +// +// BucketLifecycleRuleExpirationArgs{...} +// +// or: +// +// nil +type BucketLifecycleRuleExpirationPtrInput interface { + pulumi.Input + + ToBucketLifecycleRuleExpirationPtrOutput() BucketLifecycleRuleExpirationPtrOutput + ToBucketLifecycleRuleExpirationPtrOutputWithContext(context.Context) BucketLifecycleRuleExpirationPtrOutput +} + +type bucketLifecycleRuleExpirationPtrType BucketLifecycleRuleExpirationArgs + +func BucketLifecycleRuleExpirationPtr(v *BucketLifecycleRuleExpirationArgs) BucketLifecycleRuleExpirationPtrInput { + return (*bucketLifecycleRuleExpirationPtrType)(v) +} + +func (*bucketLifecycleRuleExpirationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleRuleExpiration)(nil)).Elem() +} + +func (i *bucketLifecycleRuleExpirationPtrType) ToBucketLifecycleRuleExpirationPtrOutput() BucketLifecycleRuleExpirationPtrOutput { + return i.ToBucketLifecycleRuleExpirationPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleRuleExpirationPtrType) ToBucketLifecycleRuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleExpirationPtrOutput) +} + +type BucketLifecycleRuleExpirationOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleExpirationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleExpiration)(nil)).Elem() +} + +func (o BucketLifecycleRuleExpirationOutput) ToBucketLifecycleRuleExpirationOutput() BucketLifecycleRuleExpirationOutput { + return o +} + +func (o BucketLifecycleRuleExpirationOutput) ToBucketLifecycleRuleExpirationOutputWithContext(ctx context.Context) BucketLifecycleRuleExpirationOutput { + return o +} + +func (o BucketLifecycleRuleExpirationOutput) ToBucketLifecycleRuleExpirationPtrOutput() BucketLifecycleRuleExpirationPtrOutput { + return o.ToBucketLifecycleRuleExpirationPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleRuleExpirationOutput) ToBucketLifecycleRuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleExpirationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleRuleExpiration) *BucketLifecycleRuleExpiration { + return &v + }).(BucketLifecycleRuleExpirationPtrOutput) +} + +// Specifies the date after which you want the corresponding action to take effect. +func (o BucketLifecycleRuleExpirationOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleRuleExpiration) *string { return v.Date }).(pulumi.StringPtrOutput) +} + +// Specifies the number of days after object creation when the specific rule action takes effect. +func (o BucketLifecycleRuleExpirationOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleRuleExpiration) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Amazon S3 to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. +func (o BucketLifecycleRuleExpirationOutput) ExpiredObjectDeleteMarker() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketLifecycleRuleExpiration) *bool { return v.ExpiredObjectDeleteMarker }).(pulumi.BoolPtrOutput) +} + +type BucketLifecycleRuleExpirationPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleExpirationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleRuleExpiration)(nil)).Elem() +} + +func (o BucketLifecycleRuleExpirationPtrOutput) ToBucketLifecycleRuleExpirationPtrOutput() BucketLifecycleRuleExpirationPtrOutput { + return o +} + +func (o BucketLifecycleRuleExpirationPtrOutput) ToBucketLifecycleRuleExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleExpirationPtrOutput { + return o +} + +func (o BucketLifecycleRuleExpirationPtrOutput) Elem() BucketLifecycleRuleExpirationOutput { + return o.ApplyT(func(v *BucketLifecycleRuleExpiration) BucketLifecycleRuleExpiration { + if v != nil { + return *v + } + var ret BucketLifecycleRuleExpiration + return ret + }).(BucketLifecycleRuleExpirationOutput) +} + +// Specifies the date after which you want the corresponding action to take effect. +func (o BucketLifecycleRuleExpirationPtrOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLifecycleRuleExpiration) *string { + if v == nil { + return nil + } + return v.Date + }).(pulumi.StringPtrOutput) +} + +// Specifies the number of days after object creation when the specific rule action takes effect. +func (o BucketLifecycleRuleExpirationPtrOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketLifecycleRuleExpiration) *int { + if v == nil { + return nil + } + return v.Days + }).(pulumi.IntPtrOutput) +} + +// On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Amazon S3 to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. +func (o BucketLifecycleRuleExpirationPtrOutput) ExpiredObjectDeleteMarker() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketLifecycleRuleExpiration) *bool { + if v == nil { + return nil + } + return v.ExpiredObjectDeleteMarker + }).(pulumi.BoolPtrOutput) +} + +type BucketLifecycleRuleNoncurrentVersionExpiration struct { + // Specifies the number of days noncurrent object versions expire. + Days *int `pulumi:"days"` +} + +// BucketLifecycleRuleNoncurrentVersionExpirationInput is an input type that accepts BucketLifecycleRuleNoncurrentVersionExpirationArgs and BucketLifecycleRuleNoncurrentVersionExpirationOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleNoncurrentVersionExpirationInput` via: +// +// BucketLifecycleRuleNoncurrentVersionExpirationArgs{...} +type BucketLifecycleRuleNoncurrentVersionExpirationInput interface { + pulumi.Input + + ToBucketLifecycleRuleNoncurrentVersionExpirationOutput() BucketLifecycleRuleNoncurrentVersionExpirationOutput + ToBucketLifecycleRuleNoncurrentVersionExpirationOutputWithContext(context.Context) BucketLifecycleRuleNoncurrentVersionExpirationOutput +} + +type BucketLifecycleRuleNoncurrentVersionExpirationArgs struct { + // Specifies the number of days noncurrent object versions expire. + Days pulumi.IntPtrInput `pulumi:"days"` +} + +func (BucketLifecycleRuleNoncurrentVersionExpirationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (i BucketLifecycleRuleNoncurrentVersionExpirationArgs) ToBucketLifecycleRuleNoncurrentVersionExpirationOutput() BucketLifecycleRuleNoncurrentVersionExpirationOutput { + return i.ToBucketLifecycleRuleNoncurrentVersionExpirationOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleNoncurrentVersionExpirationArgs) ToBucketLifecycleRuleNoncurrentVersionExpirationOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionExpirationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleNoncurrentVersionExpirationOutput) +} + +func (i BucketLifecycleRuleNoncurrentVersionExpirationArgs) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return i.ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleNoncurrentVersionExpirationArgs) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleNoncurrentVersionExpirationOutput).ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(ctx) +} + +// BucketLifecycleRuleNoncurrentVersionExpirationPtrInput is an input type that accepts BucketLifecycleRuleNoncurrentVersionExpirationArgs, BucketLifecycleRuleNoncurrentVersionExpirationPtr and BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleNoncurrentVersionExpirationPtrInput` via: +// +// BucketLifecycleRuleNoncurrentVersionExpirationArgs{...} +// +// or: +// +// nil +type BucketLifecycleRuleNoncurrentVersionExpirationPtrInput interface { + pulumi.Input + + ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput + ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(context.Context) BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput +} + +type bucketLifecycleRuleNoncurrentVersionExpirationPtrType BucketLifecycleRuleNoncurrentVersionExpirationArgs + +func BucketLifecycleRuleNoncurrentVersionExpirationPtr(v *BucketLifecycleRuleNoncurrentVersionExpirationArgs) BucketLifecycleRuleNoncurrentVersionExpirationPtrInput { + return (*bucketLifecycleRuleNoncurrentVersionExpirationPtrType)(v) +} + +func (*bucketLifecycleRuleNoncurrentVersionExpirationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (i *bucketLifecycleRuleNoncurrentVersionExpirationPtrType) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return i.ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(context.Background()) +} + +func (i *bucketLifecycleRuleNoncurrentVersionExpirationPtrType) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) +} + +type BucketLifecycleRuleNoncurrentVersionExpirationOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleNoncurrentVersionExpirationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (o BucketLifecycleRuleNoncurrentVersionExpirationOutput) ToBucketLifecycleRuleNoncurrentVersionExpirationOutput() BucketLifecycleRuleNoncurrentVersionExpirationOutput { + return o +} + +func (o BucketLifecycleRuleNoncurrentVersionExpirationOutput) ToBucketLifecycleRuleNoncurrentVersionExpirationOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionExpirationOutput { + return o +} + +func (o BucketLifecycleRuleNoncurrentVersionExpirationOutput) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return o.ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(context.Background()) +} + +func (o BucketLifecycleRuleNoncurrentVersionExpirationOutput) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLifecycleRuleNoncurrentVersionExpiration) *BucketLifecycleRuleNoncurrentVersionExpiration { + return &v + }).(BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) +} + +// Specifies the number of days noncurrent object versions expire. +func (o BucketLifecycleRuleNoncurrentVersionExpirationOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleRuleNoncurrentVersionExpiration) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +type BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (o BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutput() BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return o +} + +func (o BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) ToBucketLifecycleRuleNoncurrentVersionExpirationPtrOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput { + return o +} + +func (o BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) Elem() BucketLifecycleRuleNoncurrentVersionExpirationOutput { + return o.ApplyT(func(v *BucketLifecycleRuleNoncurrentVersionExpiration) BucketLifecycleRuleNoncurrentVersionExpiration { + if v != nil { + return *v + } + var ret BucketLifecycleRuleNoncurrentVersionExpiration + return ret + }).(BucketLifecycleRuleNoncurrentVersionExpirationOutput) +} + +// Specifies the number of days noncurrent object versions expire. +func (o BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketLifecycleRuleNoncurrentVersionExpiration) *int { + if v == nil { + return nil + } + return v.Days + }).(pulumi.IntPtrOutput) +} + +type BucketLifecycleRuleNoncurrentVersionTransition struct { + // Specifies the number of days noncurrent object versions transition. + Days *int `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass string `pulumi:"storageClass"` +} + +// BucketLifecycleRuleNoncurrentVersionTransitionInput is an input type that accepts BucketLifecycleRuleNoncurrentVersionTransitionArgs and BucketLifecycleRuleNoncurrentVersionTransitionOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleNoncurrentVersionTransitionInput` via: +// +// BucketLifecycleRuleNoncurrentVersionTransitionArgs{...} +type BucketLifecycleRuleNoncurrentVersionTransitionInput interface { + pulumi.Input + + ToBucketLifecycleRuleNoncurrentVersionTransitionOutput() BucketLifecycleRuleNoncurrentVersionTransitionOutput + ToBucketLifecycleRuleNoncurrentVersionTransitionOutputWithContext(context.Context) BucketLifecycleRuleNoncurrentVersionTransitionOutput +} + +type BucketLifecycleRuleNoncurrentVersionTransitionArgs struct { + // Specifies the number of days noncurrent object versions transition. + Days pulumi.IntPtrInput `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass pulumi.StringInput `pulumi:"storageClass"` +} + +func (BucketLifecycleRuleNoncurrentVersionTransitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (i BucketLifecycleRuleNoncurrentVersionTransitionArgs) ToBucketLifecycleRuleNoncurrentVersionTransitionOutput() BucketLifecycleRuleNoncurrentVersionTransitionOutput { + return i.ToBucketLifecycleRuleNoncurrentVersionTransitionOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleNoncurrentVersionTransitionArgs) ToBucketLifecycleRuleNoncurrentVersionTransitionOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionTransitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleNoncurrentVersionTransitionOutput) +} + +// BucketLifecycleRuleNoncurrentVersionTransitionArrayInput is an input type that accepts BucketLifecycleRuleNoncurrentVersionTransitionArray and BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleNoncurrentVersionTransitionArrayInput` via: +// +// BucketLifecycleRuleNoncurrentVersionTransitionArray{ BucketLifecycleRuleNoncurrentVersionTransitionArgs{...} } +type BucketLifecycleRuleNoncurrentVersionTransitionArrayInput interface { + pulumi.Input + + ToBucketLifecycleRuleNoncurrentVersionTransitionArrayOutput() BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput + ToBucketLifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(context.Context) BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput +} + +type BucketLifecycleRuleNoncurrentVersionTransitionArray []BucketLifecycleRuleNoncurrentVersionTransitionInput + +func (BucketLifecycleRuleNoncurrentVersionTransitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (i BucketLifecycleRuleNoncurrentVersionTransitionArray) ToBucketLifecycleRuleNoncurrentVersionTransitionArrayOutput() BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput { + return i.ToBucketLifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleNoncurrentVersionTransitionArray) ToBucketLifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput) +} + +type BucketLifecycleRuleNoncurrentVersionTransitionOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleNoncurrentVersionTransitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (o BucketLifecycleRuleNoncurrentVersionTransitionOutput) ToBucketLifecycleRuleNoncurrentVersionTransitionOutput() BucketLifecycleRuleNoncurrentVersionTransitionOutput { + return o +} + +func (o BucketLifecycleRuleNoncurrentVersionTransitionOutput) ToBucketLifecycleRuleNoncurrentVersionTransitionOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionTransitionOutput { + return o +} + +// Specifies the number of days noncurrent object versions transition. +func (o BucketLifecycleRuleNoncurrentVersionTransitionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleRuleNoncurrentVersionTransition) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. +func (o BucketLifecycleRuleNoncurrentVersionTransitionOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleRuleNoncurrentVersionTransition) string { return v.StorageClass }).(pulumi.StringOutput) +} + +type BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (o BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput) ToBucketLifecycleRuleNoncurrentVersionTransitionArrayOutput() BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput { + return o +} + +func (o BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput) ToBucketLifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput { + return o +} + +func (o BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput) Index(i pulumi.IntInput) BucketLifecycleRuleNoncurrentVersionTransitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLifecycleRuleNoncurrentVersionTransition { + return vs[0].([]BucketLifecycleRuleNoncurrentVersionTransition)[vs[1].(int)] + }).(BucketLifecycleRuleNoncurrentVersionTransitionOutput) +} + +type BucketLifecycleRuleTransition struct { + // Specifies the date after which you want the corresponding action to take effect. + Date *string `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days *int `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass string `pulumi:"storageClass"` +} + +// BucketLifecycleRuleTransitionInput is an input type that accepts BucketLifecycleRuleTransitionArgs and BucketLifecycleRuleTransitionOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleTransitionInput` via: +// +// BucketLifecycleRuleTransitionArgs{...} +type BucketLifecycleRuleTransitionInput interface { + pulumi.Input + + ToBucketLifecycleRuleTransitionOutput() BucketLifecycleRuleTransitionOutput + ToBucketLifecycleRuleTransitionOutputWithContext(context.Context) BucketLifecycleRuleTransitionOutput +} + +type BucketLifecycleRuleTransitionArgs struct { + // Specifies the date after which you want the corresponding action to take effect. + Date pulumi.StringPtrInput `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days pulumi.IntPtrInput `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass pulumi.StringInput `pulumi:"storageClass"` +} + +func (BucketLifecycleRuleTransitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleTransition)(nil)).Elem() +} + +func (i BucketLifecycleRuleTransitionArgs) ToBucketLifecycleRuleTransitionOutput() BucketLifecycleRuleTransitionOutput { + return i.ToBucketLifecycleRuleTransitionOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleTransitionArgs) ToBucketLifecycleRuleTransitionOutputWithContext(ctx context.Context) BucketLifecycleRuleTransitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleTransitionOutput) +} + +// BucketLifecycleRuleTransitionArrayInput is an input type that accepts BucketLifecycleRuleTransitionArray and BucketLifecycleRuleTransitionArrayOutput values. +// You can construct a concrete instance of `BucketLifecycleRuleTransitionArrayInput` via: +// +// BucketLifecycleRuleTransitionArray{ BucketLifecycleRuleTransitionArgs{...} } +type BucketLifecycleRuleTransitionArrayInput interface { + pulumi.Input + + ToBucketLifecycleRuleTransitionArrayOutput() BucketLifecycleRuleTransitionArrayOutput + ToBucketLifecycleRuleTransitionArrayOutputWithContext(context.Context) BucketLifecycleRuleTransitionArrayOutput +} + +type BucketLifecycleRuleTransitionArray []BucketLifecycleRuleTransitionInput + +func (BucketLifecycleRuleTransitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleRuleTransition)(nil)).Elem() +} + +func (i BucketLifecycleRuleTransitionArray) ToBucketLifecycleRuleTransitionArrayOutput() BucketLifecycleRuleTransitionArrayOutput { + return i.ToBucketLifecycleRuleTransitionArrayOutputWithContext(context.Background()) +} + +func (i BucketLifecycleRuleTransitionArray) ToBucketLifecycleRuleTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleRuleTransitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleRuleTransitionArrayOutput) +} + +type BucketLifecycleRuleTransitionOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleTransitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLifecycleRuleTransition)(nil)).Elem() +} + +func (o BucketLifecycleRuleTransitionOutput) ToBucketLifecycleRuleTransitionOutput() BucketLifecycleRuleTransitionOutput { + return o +} + +func (o BucketLifecycleRuleTransitionOutput) ToBucketLifecycleRuleTransitionOutputWithContext(ctx context.Context) BucketLifecycleRuleTransitionOutput { + return o +} + +// Specifies the date after which you want the corresponding action to take effect. +func (o BucketLifecycleRuleTransitionOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLifecycleRuleTransition) *string { return v.Date }).(pulumi.StringPtrOutput) +} + +// Specifies the number of days after object creation when the specific rule action takes effect. +func (o BucketLifecycleRuleTransitionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketLifecycleRuleTransition) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. +func (o BucketLifecycleRuleTransitionOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v BucketLifecycleRuleTransition) string { return v.StorageClass }).(pulumi.StringOutput) +} + +type BucketLifecycleRuleTransitionArrayOutput struct{ *pulumi.OutputState } + +func (BucketLifecycleRuleTransitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLifecycleRuleTransition)(nil)).Elem() +} + +func (o BucketLifecycleRuleTransitionArrayOutput) ToBucketLifecycleRuleTransitionArrayOutput() BucketLifecycleRuleTransitionArrayOutput { + return o +} + +func (o BucketLifecycleRuleTransitionArrayOutput) ToBucketLifecycleRuleTransitionArrayOutputWithContext(ctx context.Context) BucketLifecycleRuleTransitionArrayOutput { + return o +} + +func (o BucketLifecycleRuleTransitionArrayOutput) Index(i pulumi.IntInput) BucketLifecycleRuleTransitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLifecycleRuleTransition { + return vs[0].([]BucketLifecycleRuleTransition)[vs[1].(int)] + }).(BucketLifecycleRuleTransitionOutput) +} + +type BucketLogging struct { + // The name of the bucket that will receive the log objects. + TargetBucket string `pulumi:"targetBucket"` + // To specify a key prefix for log objects. + TargetPrefix *string `pulumi:"targetPrefix"` +} + +// BucketLoggingInput is an input type that accepts BucketLoggingArgs and BucketLoggingOutput values. +// You can construct a concrete instance of `BucketLoggingInput` via: +// +// BucketLoggingArgs{...} +type BucketLoggingInput interface { + pulumi.Input + + ToBucketLoggingOutput() BucketLoggingOutput + ToBucketLoggingOutputWithContext(context.Context) BucketLoggingOutput +} + +type BucketLoggingArgs struct { + // The name of the bucket that will receive the log objects. + TargetBucket pulumi.StringInput `pulumi:"targetBucket"` + // To specify a key prefix for log objects. + TargetPrefix pulumi.StringPtrInput `pulumi:"targetPrefix"` +} + +func (BucketLoggingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLogging)(nil)).Elem() +} + +func (i BucketLoggingArgs) ToBucketLoggingOutput() BucketLoggingOutput { + return i.ToBucketLoggingOutputWithContext(context.Background()) +} + +func (i BucketLoggingArgs) ToBucketLoggingOutputWithContext(ctx context.Context) BucketLoggingOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingOutput) +} + +// BucketLoggingArrayInput is an input type that accepts BucketLoggingArray and BucketLoggingArrayOutput values. +// You can construct a concrete instance of `BucketLoggingArrayInput` via: +// +// BucketLoggingArray{ BucketLoggingArgs{...} } +type BucketLoggingArrayInput interface { + pulumi.Input + + ToBucketLoggingArrayOutput() BucketLoggingArrayOutput + ToBucketLoggingArrayOutputWithContext(context.Context) BucketLoggingArrayOutput +} + +type BucketLoggingArray []BucketLoggingInput + +func (BucketLoggingArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLogging)(nil)).Elem() +} + +func (i BucketLoggingArray) ToBucketLoggingArrayOutput() BucketLoggingArrayOutput { + return i.ToBucketLoggingArrayOutputWithContext(context.Background()) +} + +func (i BucketLoggingArray) ToBucketLoggingArrayOutputWithContext(ctx context.Context) BucketLoggingArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingArrayOutput) +} + +type BucketLoggingOutput struct{ *pulumi.OutputState } + +func (BucketLoggingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLogging)(nil)).Elem() +} + +func (o BucketLoggingOutput) ToBucketLoggingOutput() BucketLoggingOutput { + return o +} + +func (o BucketLoggingOutput) ToBucketLoggingOutputWithContext(ctx context.Context) BucketLoggingOutput { + return o +} + +// The name of the bucket that will receive the log objects. +func (o BucketLoggingOutput) TargetBucket() pulumi.StringOutput { + return o.ApplyT(func(v BucketLogging) string { return v.TargetBucket }).(pulumi.StringOutput) +} + +// To specify a key prefix for log objects. +func (o BucketLoggingOutput) TargetPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLogging) *string { return v.TargetPrefix }).(pulumi.StringPtrOutput) +} + +type BucketLoggingArrayOutput struct{ *pulumi.OutputState } + +func (BucketLoggingArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLogging)(nil)).Elem() +} + +func (o BucketLoggingArrayOutput) ToBucketLoggingArrayOutput() BucketLoggingArrayOutput { + return o +} + +func (o BucketLoggingArrayOutput) ToBucketLoggingArrayOutputWithContext(ctx context.Context) BucketLoggingArrayOutput { + return o +} + +func (o BucketLoggingArrayOutput) Index(i pulumi.IntInput) BucketLoggingOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLogging { + return vs[0].([]BucketLogging)[vs[1].(int)] + }).(BucketLoggingOutput) +} + +type BucketLoggingV2TargetGrant struct { + // Configuration block for the person being granted permissions. See below. + Grantee BucketLoggingV2TargetGrantGrantee `pulumi:"grantee"` + // Logging permissions assigned to the grantee for the bucket. Valid values: `FULL_CONTROL`, `READ`, `WRITE`. + Permission string `pulumi:"permission"` +} + +// BucketLoggingV2TargetGrantInput is an input type that accepts BucketLoggingV2TargetGrantArgs and BucketLoggingV2TargetGrantOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetGrantInput` via: +// +// BucketLoggingV2TargetGrantArgs{...} +type BucketLoggingV2TargetGrantInput interface { + pulumi.Input + + ToBucketLoggingV2TargetGrantOutput() BucketLoggingV2TargetGrantOutput + ToBucketLoggingV2TargetGrantOutputWithContext(context.Context) BucketLoggingV2TargetGrantOutput +} + +type BucketLoggingV2TargetGrantArgs struct { + // Configuration block for the person being granted permissions. See below. + Grantee BucketLoggingV2TargetGrantGranteeInput `pulumi:"grantee"` + // Logging permissions assigned to the grantee for the bucket. Valid values: `FULL_CONTROL`, `READ`, `WRITE`. + Permission pulumi.StringInput `pulumi:"permission"` +} + +func (BucketLoggingV2TargetGrantArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetGrant)(nil)).Elem() +} + +func (i BucketLoggingV2TargetGrantArgs) ToBucketLoggingV2TargetGrantOutput() BucketLoggingV2TargetGrantOutput { + return i.ToBucketLoggingV2TargetGrantOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetGrantArgs) ToBucketLoggingV2TargetGrantOutputWithContext(ctx context.Context) BucketLoggingV2TargetGrantOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetGrantOutput) +} + +// BucketLoggingV2TargetGrantArrayInput is an input type that accepts BucketLoggingV2TargetGrantArray and BucketLoggingV2TargetGrantArrayOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetGrantArrayInput` via: +// +// BucketLoggingV2TargetGrantArray{ BucketLoggingV2TargetGrantArgs{...} } +type BucketLoggingV2TargetGrantArrayInput interface { + pulumi.Input + + ToBucketLoggingV2TargetGrantArrayOutput() BucketLoggingV2TargetGrantArrayOutput + ToBucketLoggingV2TargetGrantArrayOutputWithContext(context.Context) BucketLoggingV2TargetGrantArrayOutput +} + +type BucketLoggingV2TargetGrantArray []BucketLoggingV2TargetGrantInput + +func (BucketLoggingV2TargetGrantArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLoggingV2TargetGrant)(nil)).Elem() +} + +func (i BucketLoggingV2TargetGrantArray) ToBucketLoggingV2TargetGrantArrayOutput() BucketLoggingV2TargetGrantArrayOutput { + return i.ToBucketLoggingV2TargetGrantArrayOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetGrantArray) ToBucketLoggingV2TargetGrantArrayOutputWithContext(ctx context.Context) BucketLoggingV2TargetGrantArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetGrantArrayOutput) +} + +type BucketLoggingV2TargetGrantOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetGrantOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetGrant)(nil)).Elem() +} + +func (o BucketLoggingV2TargetGrantOutput) ToBucketLoggingV2TargetGrantOutput() BucketLoggingV2TargetGrantOutput { + return o +} + +func (o BucketLoggingV2TargetGrantOutput) ToBucketLoggingV2TargetGrantOutputWithContext(ctx context.Context) BucketLoggingV2TargetGrantOutput { + return o +} + +// Configuration block for the person being granted permissions. See below. +func (o BucketLoggingV2TargetGrantOutput) Grantee() BucketLoggingV2TargetGrantGranteeOutput { + return o.ApplyT(func(v BucketLoggingV2TargetGrant) BucketLoggingV2TargetGrantGrantee { return v.Grantee }).(BucketLoggingV2TargetGrantGranteeOutput) +} + +// Logging permissions assigned to the grantee for the bucket. Valid values: `FULL_CONTROL`, `READ`, `WRITE`. +func (o BucketLoggingV2TargetGrantOutput) Permission() pulumi.StringOutput { + return o.ApplyT(func(v BucketLoggingV2TargetGrant) string { return v.Permission }).(pulumi.StringOutput) +} + +type BucketLoggingV2TargetGrantArrayOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetGrantArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketLoggingV2TargetGrant)(nil)).Elem() +} + +func (o BucketLoggingV2TargetGrantArrayOutput) ToBucketLoggingV2TargetGrantArrayOutput() BucketLoggingV2TargetGrantArrayOutput { + return o +} + +func (o BucketLoggingV2TargetGrantArrayOutput) ToBucketLoggingV2TargetGrantArrayOutputWithContext(ctx context.Context) BucketLoggingV2TargetGrantArrayOutput { + return o +} + +func (o BucketLoggingV2TargetGrantArrayOutput) Index(i pulumi.IntInput) BucketLoggingV2TargetGrantOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketLoggingV2TargetGrant { + return vs[0].([]BucketLoggingV2TargetGrant)[vs[1].(int)] + }).(BucketLoggingV2TargetGrantOutput) +} + +type BucketLoggingV2TargetGrantGrantee struct { + DisplayName *string `pulumi:"displayName"` + // Email address of the grantee. See [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for supported AWS regions where this argument can be specified. + EmailAddress *string `pulumi:"emailAddress"` + // Canonical user ID of the grantee. + Id *string `pulumi:"id"` + // Type of grantee. Valid values: `CanonicalUser`, `AmazonCustomerByEmail`, `Group`. + Type string `pulumi:"type"` + // URI of the grantee group. + Uri *string `pulumi:"uri"` +} + +// BucketLoggingV2TargetGrantGranteeInput is an input type that accepts BucketLoggingV2TargetGrantGranteeArgs and BucketLoggingV2TargetGrantGranteeOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetGrantGranteeInput` via: +// +// BucketLoggingV2TargetGrantGranteeArgs{...} +type BucketLoggingV2TargetGrantGranteeInput interface { + pulumi.Input + + ToBucketLoggingV2TargetGrantGranteeOutput() BucketLoggingV2TargetGrantGranteeOutput + ToBucketLoggingV2TargetGrantGranteeOutputWithContext(context.Context) BucketLoggingV2TargetGrantGranteeOutput +} + +type BucketLoggingV2TargetGrantGranteeArgs struct { + DisplayName pulumi.StringPtrInput `pulumi:"displayName"` + // Email address of the grantee. See [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for supported AWS regions where this argument can be specified. + EmailAddress pulumi.StringPtrInput `pulumi:"emailAddress"` + // Canonical user ID of the grantee. + Id pulumi.StringPtrInput `pulumi:"id"` + // Type of grantee. Valid values: `CanonicalUser`, `AmazonCustomerByEmail`, `Group`. + Type pulumi.StringInput `pulumi:"type"` + // URI of the grantee group. + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (BucketLoggingV2TargetGrantGranteeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetGrantGrantee)(nil)).Elem() +} + +func (i BucketLoggingV2TargetGrantGranteeArgs) ToBucketLoggingV2TargetGrantGranteeOutput() BucketLoggingV2TargetGrantGranteeOutput { + return i.ToBucketLoggingV2TargetGrantGranteeOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetGrantGranteeArgs) ToBucketLoggingV2TargetGrantGranteeOutputWithContext(ctx context.Context) BucketLoggingV2TargetGrantGranteeOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetGrantGranteeOutput) +} + +type BucketLoggingV2TargetGrantGranteeOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetGrantGranteeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetGrantGrantee)(nil)).Elem() +} + +func (o BucketLoggingV2TargetGrantGranteeOutput) ToBucketLoggingV2TargetGrantGranteeOutput() BucketLoggingV2TargetGrantGranteeOutput { + return o +} + +func (o BucketLoggingV2TargetGrantGranteeOutput) ToBucketLoggingV2TargetGrantGranteeOutputWithContext(ctx context.Context) BucketLoggingV2TargetGrantGranteeOutput { + return o +} + +func (o BucketLoggingV2TargetGrantGranteeOutput) DisplayName() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLoggingV2TargetGrantGrantee) *string { return v.DisplayName }).(pulumi.StringPtrOutput) +} + +// Email address of the grantee. See [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) for supported AWS regions where this argument can be specified. +func (o BucketLoggingV2TargetGrantGranteeOutput) EmailAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLoggingV2TargetGrantGrantee) *string { return v.EmailAddress }).(pulumi.StringPtrOutput) +} + +// Canonical user ID of the grantee. +func (o BucketLoggingV2TargetGrantGranteeOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLoggingV2TargetGrantGrantee) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Type of grantee. Valid values: `CanonicalUser`, `AmazonCustomerByEmail`, `Group`. +func (o BucketLoggingV2TargetGrantGranteeOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v BucketLoggingV2TargetGrantGrantee) string { return v.Type }).(pulumi.StringOutput) +} + +// URI of the grantee group. +func (o BucketLoggingV2TargetGrantGranteeOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketLoggingV2TargetGrantGrantee) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormat struct { + // Partitioned S3 key for log objects. See below. + PartitionedPrefix *BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix `pulumi:"partitionedPrefix"` + // Use the simple format for S3 keys for log objects. To use, set `simplePrefix {}`. + SimplePrefix *BucketLoggingV2TargetObjectKeyFormatSimplePrefix `pulumi:"simplePrefix"` +} + +// BucketLoggingV2TargetObjectKeyFormatInput is an input type that accepts BucketLoggingV2TargetObjectKeyFormatArgs and BucketLoggingV2TargetObjectKeyFormatOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetObjectKeyFormatInput` via: +// +// BucketLoggingV2TargetObjectKeyFormatArgs{...} +type BucketLoggingV2TargetObjectKeyFormatInput interface { + pulumi.Input + + ToBucketLoggingV2TargetObjectKeyFormatOutput() BucketLoggingV2TargetObjectKeyFormatOutput + ToBucketLoggingV2TargetObjectKeyFormatOutputWithContext(context.Context) BucketLoggingV2TargetObjectKeyFormatOutput +} + +type BucketLoggingV2TargetObjectKeyFormatArgs struct { + // Partitioned S3 key for log objects. See below. + PartitionedPrefix BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrInput `pulumi:"partitionedPrefix"` + // Use the simple format for S3 keys for log objects. To use, set `simplePrefix {}`. + SimplePrefix BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrInput `pulumi:"simplePrefix"` +} + +func (BucketLoggingV2TargetObjectKeyFormatArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormat)(nil)).Elem() +} + +func (i BucketLoggingV2TargetObjectKeyFormatArgs) ToBucketLoggingV2TargetObjectKeyFormatOutput() BucketLoggingV2TargetObjectKeyFormatOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetObjectKeyFormatArgs) ToBucketLoggingV2TargetObjectKeyFormatOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatOutput) +} + +func (i BucketLoggingV2TargetObjectKeyFormatArgs) ToBucketLoggingV2TargetObjectKeyFormatPtrOutput() BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetObjectKeyFormatArgs) ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatOutput).ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(ctx) +} + +// BucketLoggingV2TargetObjectKeyFormatPtrInput is an input type that accepts BucketLoggingV2TargetObjectKeyFormatArgs, BucketLoggingV2TargetObjectKeyFormatPtr and BucketLoggingV2TargetObjectKeyFormatPtrOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetObjectKeyFormatPtrInput` via: +// +// BucketLoggingV2TargetObjectKeyFormatArgs{...} +// +// or: +// +// nil +type BucketLoggingV2TargetObjectKeyFormatPtrInput interface { + pulumi.Input + + ToBucketLoggingV2TargetObjectKeyFormatPtrOutput() BucketLoggingV2TargetObjectKeyFormatPtrOutput + ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(context.Context) BucketLoggingV2TargetObjectKeyFormatPtrOutput +} + +type bucketLoggingV2TargetObjectKeyFormatPtrType BucketLoggingV2TargetObjectKeyFormatArgs + +func BucketLoggingV2TargetObjectKeyFormatPtr(v *BucketLoggingV2TargetObjectKeyFormatArgs) BucketLoggingV2TargetObjectKeyFormatPtrInput { + return (*bucketLoggingV2TargetObjectKeyFormatPtrType)(v) +} + +func (*bucketLoggingV2TargetObjectKeyFormatPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2TargetObjectKeyFormat)(nil)).Elem() +} + +func (i *bucketLoggingV2TargetObjectKeyFormatPtrType) ToBucketLoggingV2TargetObjectKeyFormatPtrOutput() BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(context.Background()) +} + +func (i *bucketLoggingV2TargetObjectKeyFormatPtrType) ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetObjectKeyFormatOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormat)(nil)).Elem() +} + +func (o BucketLoggingV2TargetObjectKeyFormatOutput) ToBucketLoggingV2TargetObjectKeyFormatOutput() BucketLoggingV2TargetObjectKeyFormatOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatOutput) ToBucketLoggingV2TargetObjectKeyFormatOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatOutput) ToBucketLoggingV2TargetObjectKeyFormatPtrOutput() BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return o.ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(context.Background()) +} + +func (o BucketLoggingV2TargetObjectKeyFormatOutput) ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLoggingV2TargetObjectKeyFormat) *BucketLoggingV2TargetObjectKeyFormat { + return &v + }).(BucketLoggingV2TargetObjectKeyFormatPtrOutput) +} + +// Partitioned S3 key for log objects. See below. +func (o BucketLoggingV2TargetObjectKeyFormatOutput) PartitionedPrefix() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return o.ApplyT(func(v BucketLoggingV2TargetObjectKeyFormat) *BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix { + return v.PartitionedPrefix + }).(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) +} + +// Use the simple format for S3 keys for log objects. To use, set `simplePrefix {}`. +func (o BucketLoggingV2TargetObjectKeyFormatOutput) SimplePrefix() BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return o.ApplyT(func(v BucketLoggingV2TargetObjectKeyFormat) *BucketLoggingV2TargetObjectKeyFormatSimplePrefix { + return v.SimplePrefix + }).(BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatPtrOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetObjectKeyFormatPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2TargetObjectKeyFormat)(nil)).Elem() +} + +func (o BucketLoggingV2TargetObjectKeyFormatPtrOutput) ToBucketLoggingV2TargetObjectKeyFormatPtrOutput() BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatPtrOutput) ToBucketLoggingV2TargetObjectKeyFormatPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPtrOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatPtrOutput) Elem() BucketLoggingV2TargetObjectKeyFormatOutput { + return o.ApplyT(func(v *BucketLoggingV2TargetObjectKeyFormat) BucketLoggingV2TargetObjectKeyFormat { + if v != nil { + return *v + } + var ret BucketLoggingV2TargetObjectKeyFormat + return ret + }).(BucketLoggingV2TargetObjectKeyFormatOutput) +} + +// Partitioned S3 key for log objects. See below. +func (o BucketLoggingV2TargetObjectKeyFormatPtrOutput) PartitionedPrefix() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return o.ApplyT(func(v *BucketLoggingV2TargetObjectKeyFormat) *BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix { + if v == nil { + return nil + } + return v.PartitionedPrefix + }).(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) +} + +// Use the simple format for S3 keys for log objects. To use, set `simplePrefix {}`. +func (o BucketLoggingV2TargetObjectKeyFormatPtrOutput) SimplePrefix() BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return o.ApplyT(func(v *BucketLoggingV2TargetObjectKeyFormat) *BucketLoggingV2TargetObjectKeyFormatSimplePrefix { + if v == nil { + return nil + } + return v.SimplePrefix + }).(BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix struct { + // Specifies the partition date source for the partitioned prefix. Valid values: `EventTime`, `DeliveryTime`. + PartitionDateSource string `pulumi:"partitionDateSource"` +} + +// BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixInput is an input type that accepts BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs and BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixInput` via: +// +// BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs{...} +type BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixInput interface { + pulumi.Input + + ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput + ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutputWithContext(context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput +} + +type BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs struct { + // Specifies the partition date source for the partitioned prefix. Valid values: `EventTime`, `DeliveryTime`. + PartitionDateSource pulumi.StringInput `pulumi:"partitionDateSource"` +} + +func (BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix)(nil)).Elem() +} + +func (i BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) +} + +func (i BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput).ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(ctx) +} + +// BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrInput is an input type that accepts BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs, BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtr and BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrInput` via: +// +// BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs{...} +// +// or: +// +// nil +type BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrInput interface { + pulumi.Input + + ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput + ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput +} + +type bucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrType BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs + +func BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtr(v *BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrInput { + return (*bucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrType)(v) +} + +func (*bucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix)(nil)).Elem() +} + +func (i *bucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrType) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(context.Background()) +} + +func (i *bucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrType) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix)(nil)).Elem() +} + +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return o.ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(context.Background()) +} + +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix) *BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix { + return &v + }).(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) +} + +// Specifies the partition date source for the partitioned prefix. Valid values: `EventTime`, `DeliveryTime`. +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) PartitionDateSource() pulumi.StringOutput { + return o.ApplyT(func(v BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix) string { return v.PartitionDateSource }).(pulumi.StringOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix)(nil)).Elem() +} + +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) ToBucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) Elem() BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput { + return o.ApplyT(func(v *BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix) BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix { + if v != nil { + return *v + } + var ret BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix + return ret + }).(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput) +} + +// Specifies the partition date source for the partitioned prefix. Valid values: `EventTime`, `DeliveryTime`. +func (o BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput) PartitionDateSource() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketLoggingV2TargetObjectKeyFormatPartitionedPrefix) *string { + if v == nil { + return nil + } + return &v.PartitionDateSource + }).(pulumi.StringPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatSimplePrefix struct { +} + +// BucketLoggingV2TargetObjectKeyFormatSimplePrefixInput is an input type that accepts BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs and BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetObjectKeyFormatSimplePrefixInput` via: +// +// BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs{...} +type BucketLoggingV2TargetObjectKeyFormatSimplePrefixInput interface { + pulumi.Input + + ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput + ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixOutputWithContext(context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput +} + +type BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs struct { +} + +func (BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatSimplePrefix)(nil)).Elem() +} + +func (i BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput) +} + +func (i BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(context.Background()) +} + +func (i BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput).ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(ctx) +} + +// BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrInput is an input type that accepts BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs, BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtr and BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput values. +// You can construct a concrete instance of `BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrInput` via: +// +// BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs{...} +// +// or: +// +// nil +type BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrInput interface { + pulumi.Input + + ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput + ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput +} + +type bucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrType BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs + +func BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtr(v *BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs) BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrInput { + return (*bucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrType)(v) +} + +func (*bucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2TargetObjectKeyFormatSimplePrefix)(nil)).Elem() +} + +func (i *bucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrType) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return i.ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(context.Background()) +} + +func (i *bucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrType) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatSimplePrefix)(nil)).Elem() +} + +func (o BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return o.ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(context.Background()) +} + +func (o BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketLoggingV2TargetObjectKeyFormatSimplePrefix) *BucketLoggingV2TargetObjectKeyFormatSimplePrefix { + return &v + }).(BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) +} + +type BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput struct{ *pulumi.OutputState } + +func (BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketLoggingV2TargetObjectKeyFormatSimplePrefix)(nil)).Elem() +} + +func (o BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput() BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) ToBucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutputWithContext(ctx context.Context) BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput { + return o +} + +func (o BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput) Elem() BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput { + return o.ApplyT(func(v *BucketLoggingV2TargetObjectKeyFormatSimplePrefix) BucketLoggingV2TargetObjectKeyFormatSimplePrefix { + if v != nil { + return *v + } + var ret BucketLoggingV2TargetObjectKeyFormatSimplePrefix + return ret + }).(BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput) +} + +type BucketMetricFilter struct { + // S3 Access Point ARN for filtering (singular). + AccessPoint *string `pulumi:"accessPoint"` + // Object prefix for filtering (singular). + Prefix *string `pulumi:"prefix"` + // Object tags for filtering (up to 10). + Tags map[string]string `pulumi:"tags"` +} + +// BucketMetricFilterInput is an input type that accepts BucketMetricFilterArgs and BucketMetricFilterOutput values. +// You can construct a concrete instance of `BucketMetricFilterInput` via: +// +// BucketMetricFilterArgs{...} +type BucketMetricFilterInput interface { + pulumi.Input + + ToBucketMetricFilterOutput() BucketMetricFilterOutput + ToBucketMetricFilterOutputWithContext(context.Context) BucketMetricFilterOutput +} + +type BucketMetricFilterArgs struct { + // S3 Access Point ARN for filtering (singular). + AccessPoint pulumi.StringPtrInput `pulumi:"accessPoint"` + // Object prefix for filtering (singular). + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Object tags for filtering (up to 10). + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (BucketMetricFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketMetricFilter)(nil)).Elem() +} + +func (i BucketMetricFilterArgs) ToBucketMetricFilterOutput() BucketMetricFilterOutput { + return i.ToBucketMetricFilterOutputWithContext(context.Background()) +} + +func (i BucketMetricFilterArgs) ToBucketMetricFilterOutputWithContext(ctx context.Context) BucketMetricFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketMetricFilterOutput) +} + +func (i BucketMetricFilterArgs) ToBucketMetricFilterPtrOutput() BucketMetricFilterPtrOutput { + return i.ToBucketMetricFilterPtrOutputWithContext(context.Background()) +} + +func (i BucketMetricFilterArgs) ToBucketMetricFilterPtrOutputWithContext(ctx context.Context) BucketMetricFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketMetricFilterOutput).ToBucketMetricFilterPtrOutputWithContext(ctx) +} + +// BucketMetricFilterPtrInput is an input type that accepts BucketMetricFilterArgs, BucketMetricFilterPtr and BucketMetricFilterPtrOutput values. +// You can construct a concrete instance of `BucketMetricFilterPtrInput` via: +// +// BucketMetricFilterArgs{...} +// +// or: +// +// nil +type BucketMetricFilterPtrInput interface { + pulumi.Input + + ToBucketMetricFilterPtrOutput() BucketMetricFilterPtrOutput + ToBucketMetricFilterPtrOutputWithContext(context.Context) BucketMetricFilterPtrOutput +} + +type bucketMetricFilterPtrType BucketMetricFilterArgs + +func BucketMetricFilterPtr(v *BucketMetricFilterArgs) BucketMetricFilterPtrInput { + return (*bucketMetricFilterPtrType)(v) +} + +func (*bucketMetricFilterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketMetricFilter)(nil)).Elem() +} + +func (i *bucketMetricFilterPtrType) ToBucketMetricFilterPtrOutput() BucketMetricFilterPtrOutput { + return i.ToBucketMetricFilterPtrOutputWithContext(context.Background()) +} + +func (i *bucketMetricFilterPtrType) ToBucketMetricFilterPtrOutputWithContext(ctx context.Context) BucketMetricFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketMetricFilterPtrOutput) +} + +type BucketMetricFilterOutput struct{ *pulumi.OutputState } + +func (BucketMetricFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketMetricFilter)(nil)).Elem() +} + +func (o BucketMetricFilterOutput) ToBucketMetricFilterOutput() BucketMetricFilterOutput { + return o +} + +func (o BucketMetricFilterOutput) ToBucketMetricFilterOutputWithContext(ctx context.Context) BucketMetricFilterOutput { + return o +} + +func (o BucketMetricFilterOutput) ToBucketMetricFilterPtrOutput() BucketMetricFilterPtrOutput { + return o.ToBucketMetricFilterPtrOutputWithContext(context.Background()) +} + +func (o BucketMetricFilterOutput) ToBucketMetricFilterPtrOutputWithContext(ctx context.Context) BucketMetricFilterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketMetricFilter) *BucketMetricFilter { + return &v + }).(BucketMetricFilterPtrOutput) +} + +// S3 Access Point ARN for filtering (singular). +func (o BucketMetricFilterOutput) AccessPoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketMetricFilter) *string { return v.AccessPoint }).(pulumi.StringPtrOutput) +} + +// Object prefix for filtering (singular). +func (o BucketMetricFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketMetricFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Object tags for filtering (up to 10). +func (o BucketMetricFilterOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketMetricFilter) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type BucketMetricFilterPtrOutput struct{ *pulumi.OutputState } + +func (BucketMetricFilterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketMetricFilter)(nil)).Elem() +} + +func (o BucketMetricFilterPtrOutput) ToBucketMetricFilterPtrOutput() BucketMetricFilterPtrOutput { + return o +} + +func (o BucketMetricFilterPtrOutput) ToBucketMetricFilterPtrOutputWithContext(ctx context.Context) BucketMetricFilterPtrOutput { + return o +} + +func (o BucketMetricFilterPtrOutput) Elem() BucketMetricFilterOutput { + return o.ApplyT(func(v *BucketMetricFilter) BucketMetricFilter { + if v != nil { + return *v + } + var ret BucketMetricFilter + return ret + }).(BucketMetricFilterOutput) +} + +// S3 Access Point ARN for filtering (singular). +func (o BucketMetricFilterPtrOutput) AccessPoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketMetricFilter) *string { + if v == nil { + return nil + } + return v.AccessPoint + }).(pulumi.StringPtrOutput) +} + +// Object prefix for filtering (singular). +func (o BucketMetricFilterPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketMetricFilter) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// Object tags for filtering (up to 10). +func (o BucketMetricFilterPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketMetricFilter) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +type BucketNotificationLambdaFunction struct { + // [Event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. + Events []string `pulumi:"events"` + // Object key name prefix. + FilterPrefix *string `pulumi:"filterPrefix"` + // Object key name suffix. + FilterSuffix *string `pulumi:"filterSuffix"` + // Unique identifier for each of the notification configurations. + Id *string `pulumi:"id"` + // Lambda function ARN. + LambdaFunctionArn *string `pulumi:"lambdaFunctionArn"` +} + +// BucketNotificationLambdaFunctionInput is an input type that accepts BucketNotificationLambdaFunctionArgs and BucketNotificationLambdaFunctionOutput values. +// You can construct a concrete instance of `BucketNotificationLambdaFunctionInput` via: +// +// BucketNotificationLambdaFunctionArgs{...} +type BucketNotificationLambdaFunctionInput interface { + pulumi.Input + + ToBucketNotificationLambdaFunctionOutput() BucketNotificationLambdaFunctionOutput + ToBucketNotificationLambdaFunctionOutputWithContext(context.Context) BucketNotificationLambdaFunctionOutput +} + +type BucketNotificationLambdaFunctionArgs struct { + // [Event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. + Events pulumi.StringArrayInput `pulumi:"events"` + // Object key name prefix. + FilterPrefix pulumi.StringPtrInput `pulumi:"filterPrefix"` + // Object key name suffix. + FilterSuffix pulumi.StringPtrInput `pulumi:"filterSuffix"` + // Unique identifier for each of the notification configurations. + Id pulumi.StringPtrInput `pulumi:"id"` + // Lambda function ARN. + LambdaFunctionArn pulumi.StringPtrInput `pulumi:"lambdaFunctionArn"` +} + +func (BucketNotificationLambdaFunctionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketNotificationLambdaFunction)(nil)).Elem() +} + +func (i BucketNotificationLambdaFunctionArgs) ToBucketNotificationLambdaFunctionOutput() BucketNotificationLambdaFunctionOutput { + return i.ToBucketNotificationLambdaFunctionOutputWithContext(context.Background()) +} + +func (i BucketNotificationLambdaFunctionArgs) ToBucketNotificationLambdaFunctionOutputWithContext(ctx context.Context) BucketNotificationLambdaFunctionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationLambdaFunctionOutput) +} + +// BucketNotificationLambdaFunctionArrayInput is an input type that accepts BucketNotificationLambdaFunctionArray and BucketNotificationLambdaFunctionArrayOutput values. +// You can construct a concrete instance of `BucketNotificationLambdaFunctionArrayInput` via: +// +// BucketNotificationLambdaFunctionArray{ BucketNotificationLambdaFunctionArgs{...} } +type BucketNotificationLambdaFunctionArrayInput interface { + pulumi.Input + + ToBucketNotificationLambdaFunctionArrayOutput() BucketNotificationLambdaFunctionArrayOutput + ToBucketNotificationLambdaFunctionArrayOutputWithContext(context.Context) BucketNotificationLambdaFunctionArrayOutput +} + +type BucketNotificationLambdaFunctionArray []BucketNotificationLambdaFunctionInput + +func (BucketNotificationLambdaFunctionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketNotificationLambdaFunction)(nil)).Elem() +} + +func (i BucketNotificationLambdaFunctionArray) ToBucketNotificationLambdaFunctionArrayOutput() BucketNotificationLambdaFunctionArrayOutput { + return i.ToBucketNotificationLambdaFunctionArrayOutputWithContext(context.Background()) +} + +func (i BucketNotificationLambdaFunctionArray) ToBucketNotificationLambdaFunctionArrayOutputWithContext(ctx context.Context) BucketNotificationLambdaFunctionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationLambdaFunctionArrayOutput) +} + +type BucketNotificationLambdaFunctionOutput struct{ *pulumi.OutputState } + +func (BucketNotificationLambdaFunctionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketNotificationLambdaFunction)(nil)).Elem() +} + +func (o BucketNotificationLambdaFunctionOutput) ToBucketNotificationLambdaFunctionOutput() BucketNotificationLambdaFunctionOutput { + return o +} + +func (o BucketNotificationLambdaFunctionOutput) ToBucketNotificationLambdaFunctionOutputWithContext(ctx context.Context) BucketNotificationLambdaFunctionOutput { + return o +} + +// [Event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. +func (o BucketNotificationLambdaFunctionOutput) Events() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketNotificationLambdaFunction) []string { return v.Events }).(pulumi.StringArrayOutput) +} + +// Object key name prefix. +func (o BucketNotificationLambdaFunctionOutput) FilterPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationLambdaFunction) *string { return v.FilterPrefix }).(pulumi.StringPtrOutput) +} + +// Object key name suffix. +func (o BucketNotificationLambdaFunctionOutput) FilterSuffix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationLambdaFunction) *string { return v.FilterSuffix }).(pulumi.StringPtrOutput) +} + +// Unique identifier for each of the notification configurations. +func (o BucketNotificationLambdaFunctionOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationLambdaFunction) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Lambda function ARN. +func (o BucketNotificationLambdaFunctionOutput) LambdaFunctionArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationLambdaFunction) *string { return v.LambdaFunctionArn }).(pulumi.StringPtrOutput) +} + +type BucketNotificationLambdaFunctionArrayOutput struct{ *pulumi.OutputState } + +func (BucketNotificationLambdaFunctionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketNotificationLambdaFunction)(nil)).Elem() +} + +func (o BucketNotificationLambdaFunctionArrayOutput) ToBucketNotificationLambdaFunctionArrayOutput() BucketNotificationLambdaFunctionArrayOutput { + return o +} + +func (o BucketNotificationLambdaFunctionArrayOutput) ToBucketNotificationLambdaFunctionArrayOutputWithContext(ctx context.Context) BucketNotificationLambdaFunctionArrayOutput { + return o +} + +func (o BucketNotificationLambdaFunctionArrayOutput) Index(i pulumi.IntInput) BucketNotificationLambdaFunctionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketNotificationLambdaFunction { + return vs[0].([]BucketNotificationLambdaFunction)[vs[1].(int)] + }).(BucketNotificationLambdaFunctionOutput) +} + +type BucketNotificationQueue struct { + // Specifies [event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. + Events []string `pulumi:"events"` + // Object key name prefix. + FilterPrefix *string `pulumi:"filterPrefix"` + // Object key name suffix. + FilterSuffix *string `pulumi:"filterSuffix"` + // Unique identifier for each of the notification configurations. + Id *string `pulumi:"id"` + // SQS queue ARN. + QueueArn string `pulumi:"queueArn"` +} + +// BucketNotificationQueueInput is an input type that accepts BucketNotificationQueueArgs and BucketNotificationQueueOutput values. +// You can construct a concrete instance of `BucketNotificationQueueInput` via: +// +// BucketNotificationQueueArgs{...} +type BucketNotificationQueueInput interface { + pulumi.Input + + ToBucketNotificationQueueOutput() BucketNotificationQueueOutput + ToBucketNotificationQueueOutputWithContext(context.Context) BucketNotificationQueueOutput +} + +type BucketNotificationQueueArgs struct { + // Specifies [event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. + Events pulumi.StringArrayInput `pulumi:"events"` + // Object key name prefix. + FilterPrefix pulumi.StringPtrInput `pulumi:"filterPrefix"` + // Object key name suffix. + FilterSuffix pulumi.StringPtrInput `pulumi:"filterSuffix"` + // Unique identifier for each of the notification configurations. + Id pulumi.StringPtrInput `pulumi:"id"` + // SQS queue ARN. + QueueArn pulumi.StringInput `pulumi:"queueArn"` +} + +func (BucketNotificationQueueArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketNotificationQueue)(nil)).Elem() +} + +func (i BucketNotificationQueueArgs) ToBucketNotificationQueueOutput() BucketNotificationQueueOutput { + return i.ToBucketNotificationQueueOutputWithContext(context.Background()) +} + +func (i BucketNotificationQueueArgs) ToBucketNotificationQueueOutputWithContext(ctx context.Context) BucketNotificationQueueOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationQueueOutput) +} + +// BucketNotificationQueueArrayInput is an input type that accepts BucketNotificationQueueArray and BucketNotificationQueueArrayOutput values. +// You can construct a concrete instance of `BucketNotificationQueueArrayInput` via: +// +// BucketNotificationQueueArray{ BucketNotificationQueueArgs{...} } +type BucketNotificationQueueArrayInput interface { + pulumi.Input + + ToBucketNotificationQueueArrayOutput() BucketNotificationQueueArrayOutput + ToBucketNotificationQueueArrayOutputWithContext(context.Context) BucketNotificationQueueArrayOutput +} + +type BucketNotificationQueueArray []BucketNotificationQueueInput + +func (BucketNotificationQueueArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketNotificationQueue)(nil)).Elem() +} + +func (i BucketNotificationQueueArray) ToBucketNotificationQueueArrayOutput() BucketNotificationQueueArrayOutput { + return i.ToBucketNotificationQueueArrayOutputWithContext(context.Background()) +} + +func (i BucketNotificationQueueArray) ToBucketNotificationQueueArrayOutputWithContext(ctx context.Context) BucketNotificationQueueArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationQueueArrayOutput) +} + +type BucketNotificationQueueOutput struct{ *pulumi.OutputState } + +func (BucketNotificationQueueOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketNotificationQueue)(nil)).Elem() +} + +func (o BucketNotificationQueueOutput) ToBucketNotificationQueueOutput() BucketNotificationQueueOutput { + return o +} + +func (o BucketNotificationQueueOutput) ToBucketNotificationQueueOutputWithContext(ctx context.Context) BucketNotificationQueueOutput { + return o +} + +// Specifies [event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. +func (o BucketNotificationQueueOutput) Events() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketNotificationQueue) []string { return v.Events }).(pulumi.StringArrayOutput) +} + +// Object key name prefix. +func (o BucketNotificationQueueOutput) FilterPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationQueue) *string { return v.FilterPrefix }).(pulumi.StringPtrOutput) +} + +// Object key name suffix. +func (o BucketNotificationQueueOutput) FilterSuffix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationQueue) *string { return v.FilterSuffix }).(pulumi.StringPtrOutput) +} + +// Unique identifier for each of the notification configurations. +func (o BucketNotificationQueueOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationQueue) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// SQS queue ARN. +func (o BucketNotificationQueueOutput) QueueArn() pulumi.StringOutput { + return o.ApplyT(func(v BucketNotificationQueue) string { return v.QueueArn }).(pulumi.StringOutput) +} + +type BucketNotificationQueueArrayOutput struct{ *pulumi.OutputState } + +func (BucketNotificationQueueArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketNotificationQueue)(nil)).Elem() +} + +func (o BucketNotificationQueueArrayOutput) ToBucketNotificationQueueArrayOutput() BucketNotificationQueueArrayOutput { + return o +} + +func (o BucketNotificationQueueArrayOutput) ToBucketNotificationQueueArrayOutputWithContext(ctx context.Context) BucketNotificationQueueArrayOutput { + return o +} + +func (o BucketNotificationQueueArrayOutput) Index(i pulumi.IntInput) BucketNotificationQueueOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketNotificationQueue { + return vs[0].([]BucketNotificationQueue)[vs[1].(int)] + }).(BucketNotificationQueueOutput) +} + +type BucketNotificationTopic struct { + // [Event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. + Events []string `pulumi:"events"` + // Object key name prefix. + FilterPrefix *string `pulumi:"filterPrefix"` + // Object key name suffix. + FilterSuffix *string `pulumi:"filterSuffix"` + // Unique identifier for each of the notification configurations. + Id *string `pulumi:"id"` + // SNS topic ARN. + TopicArn string `pulumi:"topicArn"` +} + +// BucketNotificationTopicInput is an input type that accepts BucketNotificationTopicArgs and BucketNotificationTopicOutput values. +// You can construct a concrete instance of `BucketNotificationTopicInput` via: +// +// BucketNotificationTopicArgs{...} +type BucketNotificationTopicInput interface { + pulumi.Input + + ToBucketNotificationTopicOutput() BucketNotificationTopicOutput + ToBucketNotificationTopicOutputWithContext(context.Context) BucketNotificationTopicOutput +} + +type BucketNotificationTopicArgs struct { + // [Event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. + Events pulumi.StringArrayInput `pulumi:"events"` + // Object key name prefix. + FilterPrefix pulumi.StringPtrInput `pulumi:"filterPrefix"` + // Object key name suffix. + FilterSuffix pulumi.StringPtrInput `pulumi:"filterSuffix"` + // Unique identifier for each of the notification configurations. + Id pulumi.StringPtrInput `pulumi:"id"` + // SNS topic ARN. + TopicArn pulumi.StringInput `pulumi:"topicArn"` +} + +func (BucketNotificationTopicArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketNotificationTopic)(nil)).Elem() +} + +func (i BucketNotificationTopicArgs) ToBucketNotificationTopicOutput() BucketNotificationTopicOutput { + return i.ToBucketNotificationTopicOutputWithContext(context.Background()) +} + +func (i BucketNotificationTopicArgs) ToBucketNotificationTopicOutputWithContext(ctx context.Context) BucketNotificationTopicOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationTopicOutput) +} + +// BucketNotificationTopicArrayInput is an input type that accepts BucketNotificationTopicArray and BucketNotificationTopicArrayOutput values. +// You can construct a concrete instance of `BucketNotificationTopicArrayInput` via: +// +// BucketNotificationTopicArray{ BucketNotificationTopicArgs{...} } +type BucketNotificationTopicArrayInput interface { + pulumi.Input + + ToBucketNotificationTopicArrayOutput() BucketNotificationTopicArrayOutput + ToBucketNotificationTopicArrayOutputWithContext(context.Context) BucketNotificationTopicArrayOutput +} + +type BucketNotificationTopicArray []BucketNotificationTopicInput + +func (BucketNotificationTopicArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketNotificationTopic)(nil)).Elem() +} + +func (i BucketNotificationTopicArray) ToBucketNotificationTopicArrayOutput() BucketNotificationTopicArrayOutput { + return i.ToBucketNotificationTopicArrayOutputWithContext(context.Background()) +} + +func (i BucketNotificationTopicArray) ToBucketNotificationTopicArrayOutputWithContext(ctx context.Context) BucketNotificationTopicArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketNotificationTopicArrayOutput) +} + +type BucketNotificationTopicOutput struct{ *pulumi.OutputState } + +func (BucketNotificationTopicOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketNotificationTopic)(nil)).Elem() +} + +func (o BucketNotificationTopicOutput) ToBucketNotificationTopicOutput() BucketNotificationTopicOutput { + return o +} + +func (o BucketNotificationTopicOutput) ToBucketNotificationTopicOutputWithContext(ctx context.Context) BucketNotificationTopicOutput { + return o +} + +// [Event](http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html#notification-how-to-event-types-and-destinations) for which to send notifications. +func (o BucketNotificationTopicOutput) Events() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketNotificationTopic) []string { return v.Events }).(pulumi.StringArrayOutput) +} + +// Object key name prefix. +func (o BucketNotificationTopicOutput) FilterPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationTopic) *string { return v.FilterPrefix }).(pulumi.StringPtrOutput) +} + +// Object key name suffix. +func (o BucketNotificationTopicOutput) FilterSuffix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationTopic) *string { return v.FilterSuffix }).(pulumi.StringPtrOutput) +} + +// Unique identifier for each of the notification configurations. +func (o BucketNotificationTopicOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketNotificationTopic) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// SNS topic ARN. +func (o BucketNotificationTopicOutput) TopicArn() pulumi.StringOutput { + return o.ApplyT(func(v BucketNotificationTopic) string { return v.TopicArn }).(pulumi.StringOutput) +} + +type BucketNotificationTopicArrayOutput struct{ *pulumi.OutputState } + +func (BucketNotificationTopicArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketNotificationTopic)(nil)).Elem() +} + +func (o BucketNotificationTopicArrayOutput) ToBucketNotificationTopicArrayOutput() BucketNotificationTopicArrayOutput { + return o +} + +func (o BucketNotificationTopicArrayOutput) ToBucketNotificationTopicArrayOutputWithContext(ctx context.Context) BucketNotificationTopicArrayOutput { + return o +} + +func (o BucketNotificationTopicArrayOutput) Index(i pulumi.IntInput) BucketNotificationTopicOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketNotificationTopic { + return vs[0].([]BucketNotificationTopic)[vs[1].(int)] + }).(BucketNotificationTopicOutput) +} + +type BucketObjectLockConfiguration struct { + // Indicates whether this bucket has an Object Lock configuration enabled. Valid value is `Enabled`. + ObjectLockEnabled string `pulumi:"objectLockEnabled"` + // The Object Lock rule in place for this bucket. + Rule *BucketObjectLockConfigurationRule `pulumi:"rule"` +} + +// BucketObjectLockConfigurationInput is an input type that accepts BucketObjectLockConfigurationArgs and BucketObjectLockConfigurationOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationInput` via: +// +// BucketObjectLockConfigurationArgs{...} +type BucketObjectLockConfigurationInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationOutput() BucketObjectLockConfigurationOutput + ToBucketObjectLockConfigurationOutputWithContext(context.Context) BucketObjectLockConfigurationOutput +} + +type BucketObjectLockConfigurationArgs struct { + // Indicates whether this bucket has an Object Lock configuration enabled. Valid value is `Enabled`. + ObjectLockEnabled pulumi.StringInput `pulumi:"objectLockEnabled"` + // The Object Lock rule in place for this bucket. + Rule BucketObjectLockConfigurationRulePtrInput `pulumi:"rule"` +} + +func (BucketObjectLockConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfiguration)(nil)).Elem() +} + +func (i BucketObjectLockConfigurationArgs) ToBucketObjectLockConfigurationOutput() BucketObjectLockConfigurationOutput { + return i.ToBucketObjectLockConfigurationOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationArgs) ToBucketObjectLockConfigurationOutputWithContext(ctx context.Context) BucketObjectLockConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationOutput) +} + +func (i BucketObjectLockConfigurationArgs) ToBucketObjectLockConfigurationPtrOutput() BucketObjectLockConfigurationPtrOutput { + return i.ToBucketObjectLockConfigurationPtrOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationArgs) ToBucketObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationOutput).ToBucketObjectLockConfigurationPtrOutputWithContext(ctx) +} + +// BucketObjectLockConfigurationPtrInput is an input type that accepts BucketObjectLockConfigurationArgs, BucketObjectLockConfigurationPtr and BucketObjectLockConfigurationPtrOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationPtrInput` via: +// +// BucketObjectLockConfigurationArgs{...} +// +// or: +// +// nil +type BucketObjectLockConfigurationPtrInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationPtrOutput() BucketObjectLockConfigurationPtrOutput + ToBucketObjectLockConfigurationPtrOutputWithContext(context.Context) BucketObjectLockConfigurationPtrOutput +} + +type bucketObjectLockConfigurationPtrType BucketObjectLockConfigurationArgs + +func BucketObjectLockConfigurationPtr(v *BucketObjectLockConfigurationArgs) BucketObjectLockConfigurationPtrInput { + return (*bucketObjectLockConfigurationPtrType)(v) +} + +func (*bucketObjectLockConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfiguration)(nil)).Elem() +} + +func (i *bucketObjectLockConfigurationPtrType) ToBucketObjectLockConfigurationPtrOutput() BucketObjectLockConfigurationPtrOutput { + return i.ToBucketObjectLockConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *bucketObjectLockConfigurationPtrType) ToBucketObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationPtrOutput) +} + +type BucketObjectLockConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfiguration)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationOutput) ToBucketObjectLockConfigurationOutput() BucketObjectLockConfigurationOutput { + return o +} + +func (o BucketObjectLockConfigurationOutput) ToBucketObjectLockConfigurationOutputWithContext(ctx context.Context) BucketObjectLockConfigurationOutput { + return o +} + +func (o BucketObjectLockConfigurationOutput) ToBucketObjectLockConfigurationPtrOutput() BucketObjectLockConfigurationPtrOutput { + return o.ToBucketObjectLockConfigurationPtrOutputWithContext(context.Background()) +} + +func (o BucketObjectLockConfigurationOutput) ToBucketObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketObjectLockConfiguration) *BucketObjectLockConfiguration { + return &v + }).(BucketObjectLockConfigurationPtrOutput) +} + +// Indicates whether this bucket has an Object Lock configuration enabled. Valid value is `Enabled`. +func (o BucketObjectLockConfigurationOutput) ObjectLockEnabled() pulumi.StringOutput { + return o.ApplyT(func(v BucketObjectLockConfiguration) string { return v.ObjectLockEnabled }).(pulumi.StringOutput) +} + +// The Object Lock rule in place for this bucket. +func (o BucketObjectLockConfigurationOutput) Rule() BucketObjectLockConfigurationRulePtrOutput { + return o.ApplyT(func(v BucketObjectLockConfiguration) *BucketObjectLockConfigurationRule { return v.Rule }).(BucketObjectLockConfigurationRulePtrOutput) +} + +type BucketObjectLockConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfiguration)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationPtrOutput) ToBucketObjectLockConfigurationPtrOutput() BucketObjectLockConfigurationPtrOutput { + return o +} + +func (o BucketObjectLockConfigurationPtrOutput) ToBucketObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationPtrOutput { + return o +} + +func (o BucketObjectLockConfigurationPtrOutput) Elem() BucketObjectLockConfigurationOutput { + return o.ApplyT(func(v *BucketObjectLockConfiguration) BucketObjectLockConfiguration { + if v != nil { + return *v + } + var ret BucketObjectLockConfiguration + return ret + }).(BucketObjectLockConfigurationOutput) +} + +// Indicates whether this bucket has an Object Lock configuration enabled. Valid value is `Enabled`. +func (o BucketObjectLockConfigurationPtrOutput) ObjectLockEnabled() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfiguration) *string { + if v == nil { + return nil + } + return &v.ObjectLockEnabled + }).(pulumi.StringPtrOutput) +} + +// The Object Lock rule in place for this bucket. +func (o BucketObjectLockConfigurationPtrOutput) Rule() BucketObjectLockConfigurationRulePtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfiguration) *BucketObjectLockConfigurationRule { + if v == nil { + return nil + } + return v.Rule + }).(BucketObjectLockConfigurationRulePtrOutput) +} + +type BucketObjectLockConfigurationRule struct { + // The default retention period that you want to apply to new objects placed in this bucket. + DefaultRetention BucketObjectLockConfigurationRuleDefaultRetention `pulumi:"defaultRetention"` +} + +// BucketObjectLockConfigurationRuleInput is an input type that accepts BucketObjectLockConfigurationRuleArgs and BucketObjectLockConfigurationRuleOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationRuleInput` via: +// +// BucketObjectLockConfigurationRuleArgs{...} +type BucketObjectLockConfigurationRuleInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationRuleOutput() BucketObjectLockConfigurationRuleOutput + ToBucketObjectLockConfigurationRuleOutputWithContext(context.Context) BucketObjectLockConfigurationRuleOutput +} + +type BucketObjectLockConfigurationRuleArgs struct { + // The default retention period that you want to apply to new objects placed in this bucket. + DefaultRetention BucketObjectLockConfigurationRuleDefaultRetentionInput `pulumi:"defaultRetention"` +} + +func (BucketObjectLockConfigurationRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationRule)(nil)).Elem() +} + +func (i BucketObjectLockConfigurationRuleArgs) ToBucketObjectLockConfigurationRuleOutput() BucketObjectLockConfigurationRuleOutput { + return i.ToBucketObjectLockConfigurationRuleOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationRuleArgs) ToBucketObjectLockConfigurationRuleOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationRuleOutput) +} + +func (i BucketObjectLockConfigurationRuleArgs) ToBucketObjectLockConfigurationRulePtrOutput() BucketObjectLockConfigurationRulePtrOutput { + return i.ToBucketObjectLockConfigurationRulePtrOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationRuleArgs) ToBucketObjectLockConfigurationRulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationRuleOutput).ToBucketObjectLockConfigurationRulePtrOutputWithContext(ctx) +} + +// BucketObjectLockConfigurationRulePtrInput is an input type that accepts BucketObjectLockConfigurationRuleArgs, BucketObjectLockConfigurationRulePtr and BucketObjectLockConfigurationRulePtrOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationRulePtrInput` via: +// +// BucketObjectLockConfigurationRuleArgs{...} +// +// or: +// +// nil +type BucketObjectLockConfigurationRulePtrInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationRulePtrOutput() BucketObjectLockConfigurationRulePtrOutput + ToBucketObjectLockConfigurationRulePtrOutputWithContext(context.Context) BucketObjectLockConfigurationRulePtrOutput +} + +type bucketObjectLockConfigurationRulePtrType BucketObjectLockConfigurationRuleArgs + +func BucketObjectLockConfigurationRulePtr(v *BucketObjectLockConfigurationRuleArgs) BucketObjectLockConfigurationRulePtrInput { + return (*bucketObjectLockConfigurationRulePtrType)(v) +} + +func (*bucketObjectLockConfigurationRulePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationRule)(nil)).Elem() +} + +func (i *bucketObjectLockConfigurationRulePtrType) ToBucketObjectLockConfigurationRulePtrOutput() BucketObjectLockConfigurationRulePtrOutput { + return i.ToBucketObjectLockConfigurationRulePtrOutputWithContext(context.Background()) +} + +func (i *bucketObjectLockConfigurationRulePtrType) ToBucketObjectLockConfigurationRulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationRulePtrOutput) +} + +type BucketObjectLockConfigurationRuleOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationRule)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationRuleOutput) ToBucketObjectLockConfigurationRuleOutput() BucketObjectLockConfigurationRuleOutput { + return o +} + +func (o BucketObjectLockConfigurationRuleOutput) ToBucketObjectLockConfigurationRuleOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleOutput { + return o +} + +func (o BucketObjectLockConfigurationRuleOutput) ToBucketObjectLockConfigurationRulePtrOutput() BucketObjectLockConfigurationRulePtrOutput { + return o.ToBucketObjectLockConfigurationRulePtrOutputWithContext(context.Background()) +} + +func (o BucketObjectLockConfigurationRuleOutput) ToBucketObjectLockConfigurationRulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRulePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketObjectLockConfigurationRule) *BucketObjectLockConfigurationRule { + return &v + }).(BucketObjectLockConfigurationRulePtrOutput) +} + +// The default retention period that you want to apply to new objects placed in this bucket. +func (o BucketObjectLockConfigurationRuleOutput) DefaultRetention() BucketObjectLockConfigurationRuleDefaultRetentionOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationRule) BucketObjectLockConfigurationRuleDefaultRetention { + return v.DefaultRetention + }).(BucketObjectLockConfigurationRuleDefaultRetentionOutput) +} + +type BucketObjectLockConfigurationRulePtrOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationRulePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationRule)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationRulePtrOutput) ToBucketObjectLockConfigurationRulePtrOutput() BucketObjectLockConfigurationRulePtrOutput { + return o +} + +func (o BucketObjectLockConfigurationRulePtrOutput) ToBucketObjectLockConfigurationRulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRulePtrOutput { + return o +} + +func (o BucketObjectLockConfigurationRulePtrOutput) Elem() BucketObjectLockConfigurationRuleOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationRule) BucketObjectLockConfigurationRule { + if v != nil { + return *v + } + var ret BucketObjectLockConfigurationRule + return ret + }).(BucketObjectLockConfigurationRuleOutput) +} + +// The default retention period that you want to apply to new objects placed in this bucket. +func (o BucketObjectLockConfigurationRulePtrOutput) DefaultRetention() BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationRule) *BucketObjectLockConfigurationRuleDefaultRetention { + if v == nil { + return nil + } + return &v.DefaultRetention + }).(BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) +} + +type BucketObjectLockConfigurationRuleDefaultRetention struct { + // The number of days that you want to specify for the default retention period. + Days *int `pulumi:"days"` + // The default Object Lock retention mode you want to apply to new objects placed in this bucket. Valid values are `GOVERNANCE` and `COMPLIANCE`. + Mode string `pulumi:"mode"` + // The number of years that you want to specify for the default retention period. + // + // Either `days` or `years` must be specified, but not both. + // + // > **NOTE on `objectLockConfiguration`:** You can only enable S3 Object Lock for new buckets. If you need to turn on S3 Object Lock for an existing bucket, please contact AWS Support. + // When you create a bucket with S3 Object Lock enabled, Amazon S3 automatically enables versioning for the bucket. + // Once you create a bucket with S3 Object Lock enabled, you can't disable Object Lock or suspend versioning for the bucket. + Years *int `pulumi:"years"` +} + +// BucketObjectLockConfigurationRuleDefaultRetentionInput is an input type that accepts BucketObjectLockConfigurationRuleDefaultRetentionArgs and BucketObjectLockConfigurationRuleDefaultRetentionOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationRuleDefaultRetentionInput` via: +// +// BucketObjectLockConfigurationRuleDefaultRetentionArgs{...} +type BucketObjectLockConfigurationRuleDefaultRetentionInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationRuleDefaultRetentionOutput() BucketObjectLockConfigurationRuleDefaultRetentionOutput + ToBucketObjectLockConfigurationRuleDefaultRetentionOutputWithContext(context.Context) BucketObjectLockConfigurationRuleDefaultRetentionOutput +} + +type BucketObjectLockConfigurationRuleDefaultRetentionArgs struct { + // The number of days that you want to specify for the default retention period. + Days pulumi.IntPtrInput `pulumi:"days"` + // The default Object Lock retention mode you want to apply to new objects placed in this bucket. Valid values are `GOVERNANCE` and `COMPLIANCE`. + Mode pulumi.StringInput `pulumi:"mode"` + // The number of years that you want to specify for the default retention period. + // + // Either `days` or `years` must be specified, but not both. + // + // > **NOTE on `objectLockConfiguration`:** You can only enable S3 Object Lock for new buckets. If you need to turn on S3 Object Lock for an existing bucket, please contact AWS Support. + // When you create a bucket with S3 Object Lock enabled, Amazon S3 automatically enables versioning for the bucket. + // Once you create a bucket with S3 Object Lock enabled, you can't disable Object Lock or suspend versioning for the bucket. + Years pulumi.IntPtrInput `pulumi:"years"` +} + +func (BucketObjectLockConfigurationRuleDefaultRetentionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (i BucketObjectLockConfigurationRuleDefaultRetentionArgs) ToBucketObjectLockConfigurationRuleDefaultRetentionOutput() BucketObjectLockConfigurationRuleDefaultRetentionOutput { + return i.ToBucketObjectLockConfigurationRuleDefaultRetentionOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationRuleDefaultRetentionArgs) ToBucketObjectLockConfigurationRuleDefaultRetentionOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleDefaultRetentionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationRuleDefaultRetentionOutput) +} + +func (i BucketObjectLockConfigurationRuleDefaultRetentionArgs) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return i.ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationRuleDefaultRetentionArgs) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationRuleDefaultRetentionOutput).ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(ctx) +} + +// BucketObjectLockConfigurationRuleDefaultRetentionPtrInput is an input type that accepts BucketObjectLockConfigurationRuleDefaultRetentionArgs, BucketObjectLockConfigurationRuleDefaultRetentionPtr and BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationRuleDefaultRetentionPtrInput` via: +// +// BucketObjectLockConfigurationRuleDefaultRetentionArgs{...} +// +// or: +// +// nil +type BucketObjectLockConfigurationRuleDefaultRetentionPtrInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput + ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(context.Context) BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput +} + +type bucketObjectLockConfigurationRuleDefaultRetentionPtrType BucketObjectLockConfigurationRuleDefaultRetentionArgs + +func BucketObjectLockConfigurationRuleDefaultRetentionPtr(v *BucketObjectLockConfigurationRuleDefaultRetentionArgs) BucketObjectLockConfigurationRuleDefaultRetentionPtrInput { + return (*bucketObjectLockConfigurationRuleDefaultRetentionPtrType)(v) +} + +func (*bucketObjectLockConfigurationRuleDefaultRetentionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (i *bucketObjectLockConfigurationRuleDefaultRetentionPtrType) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return i.ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(context.Background()) +} + +func (i *bucketObjectLockConfigurationRuleDefaultRetentionPtrType) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) +} + +type BucketObjectLockConfigurationRuleDefaultRetentionOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationRuleDefaultRetentionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationRuleDefaultRetentionOutput) ToBucketObjectLockConfigurationRuleDefaultRetentionOutput() BucketObjectLockConfigurationRuleDefaultRetentionOutput { + return o +} + +func (o BucketObjectLockConfigurationRuleDefaultRetentionOutput) ToBucketObjectLockConfigurationRuleDefaultRetentionOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleDefaultRetentionOutput { + return o +} + +func (o BucketObjectLockConfigurationRuleDefaultRetentionOutput) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return o.ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(context.Background()) +} + +func (o BucketObjectLockConfigurationRuleDefaultRetentionOutput) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketObjectLockConfigurationRuleDefaultRetention) *BucketObjectLockConfigurationRuleDefaultRetention { + return &v + }).(BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) +} + +// The number of days that you want to specify for the default retention period. +func (o BucketObjectLockConfigurationRuleDefaultRetentionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationRuleDefaultRetention) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// The default Object Lock retention mode you want to apply to new objects placed in this bucket. Valid values are `GOVERNANCE` and `COMPLIANCE`. +func (o BucketObjectLockConfigurationRuleDefaultRetentionOutput) Mode() pulumi.StringOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationRuleDefaultRetention) string { return v.Mode }).(pulumi.StringOutput) +} + +// The number of years that you want to specify for the default retention period. +// +// Either `days` or `years` must be specified, but not both. +// +// > **NOTE on `objectLockConfiguration`:** You can only enable S3 Object Lock for new buckets. If you need to turn on S3 Object Lock for an existing bucket, please contact AWS Support. +// When you create a bucket with S3 Object Lock enabled, Amazon S3 automatically enables versioning for the bucket. +// Once you create a bucket with S3 Object Lock enabled, you can't disable Object Lock or suspend versioning for the bucket. +func (o BucketObjectLockConfigurationRuleDefaultRetentionOutput) Years() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationRuleDefaultRetention) *int { return v.Years }).(pulumi.IntPtrOutput) +} + +type BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return o +} + +func (o BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) ToBucketObjectLockConfigurationRuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput { + return o +} + +func (o BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) Elem() BucketObjectLockConfigurationRuleDefaultRetentionOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationRuleDefaultRetention) BucketObjectLockConfigurationRuleDefaultRetention { + if v != nil { + return *v + } + var ret BucketObjectLockConfigurationRuleDefaultRetention + return ret + }).(BucketObjectLockConfigurationRuleDefaultRetentionOutput) +} + +// The number of days that you want to specify for the default retention period. +func (o BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationRuleDefaultRetention) *int { + if v == nil { + return nil + } + return v.Days + }).(pulumi.IntPtrOutput) +} + +// The default Object Lock retention mode you want to apply to new objects placed in this bucket. Valid values are `GOVERNANCE` and `COMPLIANCE`. +func (o BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) Mode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationRuleDefaultRetention) *string { + if v == nil { + return nil + } + return &v.Mode + }).(pulumi.StringPtrOutput) +} + +// The number of years that you want to specify for the default retention period. +// +// Either `days` or `years` must be specified, but not both. +// +// > **NOTE on `objectLockConfiguration`:** You can only enable S3 Object Lock for new buckets. If you need to turn on S3 Object Lock for an existing bucket, please contact AWS Support. +// When you create a bucket with S3 Object Lock enabled, Amazon S3 automatically enables versioning for the bucket. +// Once you create a bucket with S3 Object Lock enabled, you can't disable Object Lock or suspend versioning for the bucket. +func (o BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput) Years() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationRuleDefaultRetention) *int { + if v == nil { + return nil + } + return v.Years + }).(pulumi.IntPtrOutput) +} + +type BucketObjectLockConfigurationV2Rule struct { + // Configuration block for specifying the default Object Lock retention settings for new objects placed in the specified bucket. See below. + DefaultRetention BucketObjectLockConfigurationV2RuleDefaultRetention `pulumi:"defaultRetention"` +} + +// BucketObjectLockConfigurationV2RuleInput is an input type that accepts BucketObjectLockConfigurationV2RuleArgs and BucketObjectLockConfigurationV2RuleOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationV2RuleInput` via: +// +// BucketObjectLockConfigurationV2RuleArgs{...} +type BucketObjectLockConfigurationV2RuleInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationV2RuleOutput() BucketObjectLockConfigurationV2RuleOutput + ToBucketObjectLockConfigurationV2RuleOutputWithContext(context.Context) BucketObjectLockConfigurationV2RuleOutput +} + +type BucketObjectLockConfigurationV2RuleArgs struct { + // Configuration block for specifying the default Object Lock retention settings for new objects placed in the specified bucket. See below. + DefaultRetention BucketObjectLockConfigurationV2RuleDefaultRetentionInput `pulumi:"defaultRetention"` +} + +func (BucketObjectLockConfigurationV2RuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationV2Rule)(nil)).Elem() +} + +func (i BucketObjectLockConfigurationV2RuleArgs) ToBucketObjectLockConfigurationV2RuleOutput() BucketObjectLockConfigurationV2RuleOutput { + return i.ToBucketObjectLockConfigurationV2RuleOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationV2RuleArgs) ToBucketObjectLockConfigurationV2RuleOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2RuleOutput) +} + +func (i BucketObjectLockConfigurationV2RuleArgs) ToBucketObjectLockConfigurationV2RulePtrOutput() BucketObjectLockConfigurationV2RulePtrOutput { + return i.ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationV2RuleArgs) ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2RuleOutput).ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(ctx) +} + +// BucketObjectLockConfigurationV2RulePtrInput is an input type that accepts BucketObjectLockConfigurationV2RuleArgs, BucketObjectLockConfigurationV2RulePtr and BucketObjectLockConfigurationV2RulePtrOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationV2RulePtrInput` via: +// +// BucketObjectLockConfigurationV2RuleArgs{...} +// +// or: +// +// nil +type BucketObjectLockConfigurationV2RulePtrInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationV2RulePtrOutput() BucketObjectLockConfigurationV2RulePtrOutput + ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(context.Context) BucketObjectLockConfigurationV2RulePtrOutput +} + +type bucketObjectLockConfigurationV2RulePtrType BucketObjectLockConfigurationV2RuleArgs + +func BucketObjectLockConfigurationV2RulePtr(v *BucketObjectLockConfigurationV2RuleArgs) BucketObjectLockConfigurationV2RulePtrInput { + return (*bucketObjectLockConfigurationV2RulePtrType)(v) +} + +func (*bucketObjectLockConfigurationV2RulePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationV2Rule)(nil)).Elem() +} + +func (i *bucketObjectLockConfigurationV2RulePtrType) ToBucketObjectLockConfigurationV2RulePtrOutput() BucketObjectLockConfigurationV2RulePtrOutput { + return i.ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(context.Background()) +} + +func (i *bucketObjectLockConfigurationV2RulePtrType) ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2RulePtrOutput) +} + +type BucketObjectLockConfigurationV2RuleOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationV2RuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationV2Rule)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationV2RuleOutput) ToBucketObjectLockConfigurationV2RuleOutput() BucketObjectLockConfigurationV2RuleOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RuleOutput) ToBucketObjectLockConfigurationV2RuleOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RuleOutput) ToBucketObjectLockConfigurationV2RulePtrOutput() BucketObjectLockConfigurationV2RulePtrOutput { + return o.ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(context.Background()) +} + +func (o BucketObjectLockConfigurationV2RuleOutput) ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RulePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketObjectLockConfigurationV2Rule) *BucketObjectLockConfigurationV2Rule { + return &v + }).(BucketObjectLockConfigurationV2RulePtrOutput) +} + +// Configuration block for specifying the default Object Lock retention settings for new objects placed in the specified bucket. See below. +func (o BucketObjectLockConfigurationV2RuleOutput) DefaultRetention() BucketObjectLockConfigurationV2RuleDefaultRetentionOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationV2Rule) BucketObjectLockConfigurationV2RuleDefaultRetention { + return v.DefaultRetention + }).(BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) +} + +type BucketObjectLockConfigurationV2RulePtrOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationV2RulePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationV2Rule)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationV2RulePtrOutput) ToBucketObjectLockConfigurationV2RulePtrOutput() BucketObjectLockConfigurationV2RulePtrOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RulePtrOutput) ToBucketObjectLockConfigurationV2RulePtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RulePtrOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RulePtrOutput) Elem() BucketObjectLockConfigurationV2RuleOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2Rule) BucketObjectLockConfigurationV2Rule { + if v != nil { + return *v + } + var ret BucketObjectLockConfigurationV2Rule + return ret + }).(BucketObjectLockConfigurationV2RuleOutput) +} + +// Configuration block for specifying the default Object Lock retention settings for new objects placed in the specified bucket. See below. +func (o BucketObjectLockConfigurationV2RulePtrOutput) DefaultRetention() BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2Rule) *BucketObjectLockConfigurationV2RuleDefaultRetention { + if v == nil { + return nil + } + return &v.DefaultRetention + }).(BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) +} + +type BucketObjectLockConfigurationV2RuleDefaultRetention struct { + // Number of days that you want to specify for the default retention period. + Days *int `pulumi:"days"` + // Default Object Lock retention mode you want to apply to new objects placed in the specified bucket. Valid values: `COMPLIANCE`, `GOVERNANCE`. + Mode *string `pulumi:"mode"` + // Number of years that you want to specify for the default retention period. + Years *int `pulumi:"years"` +} + +// BucketObjectLockConfigurationV2RuleDefaultRetentionInput is an input type that accepts BucketObjectLockConfigurationV2RuleDefaultRetentionArgs and BucketObjectLockConfigurationV2RuleDefaultRetentionOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationV2RuleDefaultRetentionInput` via: +// +// BucketObjectLockConfigurationV2RuleDefaultRetentionArgs{...} +type BucketObjectLockConfigurationV2RuleDefaultRetentionInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationV2RuleDefaultRetentionOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionOutput + ToBucketObjectLockConfigurationV2RuleDefaultRetentionOutputWithContext(context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionOutput +} + +type BucketObjectLockConfigurationV2RuleDefaultRetentionArgs struct { + // Number of days that you want to specify for the default retention period. + Days pulumi.IntPtrInput `pulumi:"days"` + // Default Object Lock retention mode you want to apply to new objects placed in the specified bucket. Valid values: `COMPLIANCE`, `GOVERNANCE`. + Mode pulumi.StringPtrInput `pulumi:"mode"` + // Number of years that you want to specify for the default retention period. + Years pulumi.IntPtrInput `pulumi:"years"` +} + +func (BucketObjectLockConfigurationV2RuleDefaultRetentionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationV2RuleDefaultRetention)(nil)).Elem() +} + +func (i BucketObjectLockConfigurationV2RuleDefaultRetentionArgs) ToBucketObjectLockConfigurationV2RuleDefaultRetentionOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionOutput { + return i.ToBucketObjectLockConfigurationV2RuleDefaultRetentionOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationV2RuleDefaultRetentionArgs) ToBucketObjectLockConfigurationV2RuleDefaultRetentionOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) +} + +func (i BucketObjectLockConfigurationV2RuleDefaultRetentionArgs) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return i.ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(context.Background()) +} + +func (i BucketObjectLockConfigurationV2RuleDefaultRetentionArgs) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2RuleDefaultRetentionOutput).ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(ctx) +} + +// BucketObjectLockConfigurationV2RuleDefaultRetentionPtrInput is an input type that accepts BucketObjectLockConfigurationV2RuleDefaultRetentionArgs, BucketObjectLockConfigurationV2RuleDefaultRetentionPtr and BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput values. +// You can construct a concrete instance of `BucketObjectLockConfigurationV2RuleDefaultRetentionPtrInput` via: +// +// BucketObjectLockConfigurationV2RuleDefaultRetentionArgs{...} +// +// or: +// +// nil +type BucketObjectLockConfigurationV2RuleDefaultRetentionPtrInput interface { + pulumi.Input + + ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput + ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput +} + +type bucketObjectLockConfigurationV2RuleDefaultRetentionPtrType BucketObjectLockConfigurationV2RuleDefaultRetentionArgs + +func BucketObjectLockConfigurationV2RuleDefaultRetentionPtr(v *BucketObjectLockConfigurationV2RuleDefaultRetentionArgs) BucketObjectLockConfigurationV2RuleDefaultRetentionPtrInput { + return (*bucketObjectLockConfigurationV2RuleDefaultRetentionPtrType)(v) +} + +func (*bucketObjectLockConfigurationV2RuleDefaultRetentionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationV2RuleDefaultRetention)(nil)).Elem() +} + +func (i *bucketObjectLockConfigurationV2RuleDefaultRetentionPtrType) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return i.ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(context.Background()) +} + +func (i *bucketObjectLockConfigurationV2RuleDefaultRetentionPtrType) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) +} + +type BucketObjectLockConfigurationV2RuleDefaultRetentionOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectLockConfigurationV2RuleDefaultRetention)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) ToBucketObjectLockConfigurationV2RuleDefaultRetentionOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) ToBucketObjectLockConfigurationV2RuleDefaultRetentionOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return o.ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(context.Background()) +} + +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketObjectLockConfigurationV2RuleDefaultRetention) *BucketObjectLockConfigurationV2RuleDefaultRetention { + return &v + }).(BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) +} + +// Number of days that you want to specify for the default retention period. +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationV2RuleDefaultRetention) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Default Object Lock retention mode you want to apply to new objects placed in the specified bucket. Valid values: `COMPLIANCE`, `GOVERNANCE`. +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) Mode() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationV2RuleDefaultRetention) *string { return v.Mode }).(pulumi.StringPtrOutput) +} + +// Number of years that you want to specify for the default retention period. +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) Years() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketObjectLockConfigurationV2RuleDefaultRetention) *int { return v.Years }).(pulumi.IntPtrOutput) +} + +type BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput struct{ *pulumi.OutputState } + +func (BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectLockConfigurationV2RuleDefaultRetention)(nil)).Elem() +} + +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput() BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) ToBucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutputWithContext(ctx context.Context) BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput { + return o +} + +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) Elem() BucketObjectLockConfigurationV2RuleDefaultRetentionOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2RuleDefaultRetention) BucketObjectLockConfigurationV2RuleDefaultRetention { + if v != nil { + return *v + } + var ret BucketObjectLockConfigurationV2RuleDefaultRetention + return ret + }).(BucketObjectLockConfigurationV2RuleDefaultRetentionOutput) +} + +// Number of days that you want to specify for the default retention period. +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2RuleDefaultRetention) *int { + if v == nil { + return nil + } + return v.Days + }).(pulumi.IntPtrOutput) +} + +// Default Object Lock retention mode you want to apply to new objects placed in the specified bucket. Valid values: `COMPLIANCE`, `GOVERNANCE`. +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) Mode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2RuleDefaultRetention) *string { + if v == nil { + return nil + } + return v.Mode + }).(pulumi.StringPtrOutput) +} + +// Number of years that you want to specify for the default retention period. +func (o BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput) Years() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketObjectLockConfigurationV2RuleDefaultRetention) *int { + if v == nil { + return nil + } + return v.Years + }).(pulumi.IntPtrOutput) +} + +type BucketObjectv2OverrideProvider struct { + // Override the provider `defaultTags` configuration block. + DefaultTags *BucketObjectv2OverrideProviderDefaultTags `pulumi:"defaultTags"` +} + +// BucketObjectv2OverrideProviderInput is an input type that accepts BucketObjectv2OverrideProviderArgs and BucketObjectv2OverrideProviderOutput values. +// You can construct a concrete instance of `BucketObjectv2OverrideProviderInput` via: +// +// BucketObjectv2OverrideProviderArgs{...} +type BucketObjectv2OverrideProviderInput interface { + pulumi.Input + + ToBucketObjectv2OverrideProviderOutput() BucketObjectv2OverrideProviderOutput + ToBucketObjectv2OverrideProviderOutputWithContext(context.Context) BucketObjectv2OverrideProviderOutput +} + +type BucketObjectv2OverrideProviderArgs struct { + // Override the provider `defaultTags` configuration block. + DefaultTags BucketObjectv2OverrideProviderDefaultTagsPtrInput `pulumi:"defaultTags"` +} + +func (BucketObjectv2OverrideProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectv2OverrideProvider)(nil)).Elem() +} + +func (i BucketObjectv2OverrideProviderArgs) ToBucketObjectv2OverrideProviderOutput() BucketObjectv2OverrideProviderOutput { + return i.ToBucketObjectv2OverrideProviderOutputWithContext(context.Background()) +} + +func (i BucketObjectv2OverrideProviderArgs) ToBucketObjectv2OverrideProviderOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2OverrideProviderOutput) +} + +func (i BucketObjectv2OverrideProviderArgs) ToBucketObjectv2OverrideProviderPtrOutput() BucketObjectv2OverrideProviderPtrOutput { + return i.ToBucketObjectv2OverrideProviderPtrOutputWithContext(context.Background()) +} + +func (i BucketObjectv2OverrideProviderArgs) ToBucketObjectv2OverrideProviderPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2OverrideProviderOutput).ToBucketObjectv2OverrideProviderPtrOutputWithContext(ctx) +} + +// BucketObjectv2OverrideProviderPtrInput is an input type that accepts BucketObjectv2OverrideProviderArgs, BucketObjectv2OverrideProviderPtr and BucketObjectv2OverrideProviderPtrOutput values. +// You can construct a concrete instance of `BucketObjectv2OverrideProviderPtrInput` via: +// +// BucketObjectv2OverrideProviderArgs{...} +// +// or: +// +// nil +type BucketObjectv2OverrideProviderPtrInput interface { + pulumi.Input + + ToBucketObjectv2OverrideProviderPtrOutput() BucketObjectv2OverrideProviderPtrOutput + ToBucketObjectv2OverrideProviderPtrOutputWithContext(context.Context) BucketObjectv2OverrideProviderPtrOutput +} + +type bucketObjectv2OverrideProviderPtrType BucketObjectv2OverrideProviderArgs + +func BucketObjectv2OverrideProviderPtr(v *BucketObjectv2OverrideProviderArgs) BucketObjectv2OverrideProviderPtrInput { + return (*bucketObjectv2OverrideProviderPtrType)(v) +} + +func (*bucketObjectv2OverrideProviderPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectv2OverrideProvider)(nil)).Elem() +} + +func (i *bucketObjectv2OverrideProviderPtrType) ToBucketObjectv2OverrideProviderPtrOutput() BucketObjectv2OverrideProviderPtrOutput { + return i.ToBucketObjectv2OverrideProviderPtrOutputWithContext(context.Background()) +} + +func (i *bucketObjectv2OverrideProviderPtrType) ToBucketObjectv2OverrideProviderPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2OverrideProviderPtrOutput) +} + +type BucketObjectv2OverrideProviderOutput struct{ *pulumi.OutputState } + +func (BucketObjectv2OverrideProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectv2OverrideProvider)(nil)).Elem() +} + +func (o BucketObjectv2OverrideProviderOutput) ToBucketObjectv2OverrideProviderOutput() BucketObjectv2OverrideProviderOutput { + return o +} + +func (o BucketObjectv2OverrideProviderOutput) ToBucketObjectv2OverrideProviderOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderOutput { + return o +} + +func (o BucketObjectv2OverrideProviderOutput) ToBucketObjectv2OverrideProviderPtrOutput() BucketObjectv2OverrideProviderPtrOutput { + return o.ToBucketObjectv2OverrideProviderPtrOutputWithContext(context.Background()) +} + +func (o BucketObjectv2OverrideProviderOutput) ToBucketObjectv2OverrideProviderPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketObjectv2OverrideProvider) *BucketObjectv2OverrideProvider { + return &v + }).(BucketObjectv2OverrideProviderPtrOutput) +} + +// Override the provider `defaultTags` configuration block. +func (o BucketObjectv2OverrideProviderOutput) DefaultTags() BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return o.ApplyT(func(v BucketObjectv2OverrideProvider) *BucketObjectv2OverrideProviderDefaultTags { + return v.DefaultTags + }).(BucketObjectv2OverrideProviderDefaultTagsPtrOutput) +} + +type BucketObjectv2OverrideProviderPtrOutput struct{ *pulumi.OutputState } + +func (BucketObjectv2OverrideProviderPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectv2OverrideProvider)(nil)).Elem() +} + +func (o BucketObjectv2OverrideProviderPtrOutput) ToBucketObjectv2OverrideProviderPtrOutput() BucketObjectv2OverrideProviderPtrOutput { + return o +} + +func (o BucketObjectv2OverrideProviderPtrOutput) ToBucketObjectv2OverrideProviderPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderPtrOutput { + return o +} + +func (o BucketObjectv2OverrideProviderPtrOutput) Elem() BucketObjectv2OverrideProviderOutput { + return o.ApplyT(func(v *BucketObjectv2OverrideProvider) BucketObjectv2OverrideProvider { + if v != nil { + return *v + } + var ret BucketObjectv2OverrideProvider + return ret + }).(BucketObjectv2OverrideProviderOutput) +} + +// Override the provider `defaultTags` configuration block. +func (o BucketObjectv2OverrideProviderPtrOutput) DefaultTags() BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return o.ApplyT(func(v *BucketObjectv2OverrideProvider) *BucketObjectv2OverrideProviderDefaultTags { + if v == nil { + return nil + } + return v.DefaultTags + }).(BucketObjectv2OverrideProviderDefaultTagsPtrOutput) +} + +type BucketObjectv2OverrideProviderDefaultTags struct { + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// BucketObjectv2OverrideProviderDefaultTagsInput is an input type that accepts BucketObjectv2OverrideProviderDefaultTagsArgs and BucketObjectv2OverrideProviderDefaultTagsOutput values. +// You can construct a concrete instance of `BucketObjectv2OverrideProviderDefaultTagsInput` via: +// +// BucketObjectv2OverrideProviderDefaultTagsArgs{...} +type BucketObjectv2OverrideProviderDefaultTagsInput interface { + pulumi.Input + + ToBucketObjectv2OverrideProviderDefaultTagsOutput() BucketObjectv2OverrideProviderDefaultTagsOutput + ToBucketObjectv2OverrideProviderDefaultTagsOutputWithContext(context.Context) BucketObjectv2OverrideProviderDefaultTagsOutput +} + +type BucketObjectv2OverrideProviderDefaultTagsArgs struct { + // Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (BucketObjectv2OverrideProviderDefaultTagsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectv2OverrideProviderDefaultTags)(nil)).Elem() +} + +func (i BucketObjectv2OverrideProviderDefaultTagsArgs) ToBucketObjectv2OverrideProviderDefaultTagsOutput() BucketObjectv2OverrideProviderDefaultTagsOutput { + return i.ToBucketObjectv2OverrideProviderDefaultTagsOutputWithContext(context.Background()) +} + +func (i BucketObjectv2OverrideProviderDefaultTagsArgs) ToBucketObjectv2OverrideProviderDefaultTagsOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderDefaultTagsOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2OverrideProviderDefaultTagsOutput) +} + +func (i BucketObjectv2OverrideProviderDefaultTagsArgs) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutput() BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return i.ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(context.Background()) +} + +func (i BucketObjectv2OverrideProviderDefaultTagsArgs) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2OverrideProviderDefaultTagsOutput).ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(ctx) +} + +// BucketObjectv2OverrideProviderDefaultTagsPtrInput is an input type that accepts BucketObjectv2OverrideProviderDefaultTagsArgs, BucketObjectv2OverrideProviderDefaultTagsPtr and BucketObjectv2OverrideProviderDefaultTagsPtrOutput values. +// You can construct a concrete instance of `BucketObjectv2OverrideProviderDefaultTagsPtrInput` via: +// +// BucketObjectv2OverrideProviderDefaultTagsArgs{...} +// +// or: +// +// nil +type BucketObjectv2OverrideProviderDefaultTagsPtrInput interface { + pulumi.Input + + ToBucketObjectv2OverrideProviderDefaultTagsPtrOutput() BucketObjectv2OverrideProviderDefaultTagsPtrOutput + ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(context.Context) BucketObjectv2OverrideProviderDefaultTagsPtrOutput +} + +type bucketObjectv2OverrideProviderDefaultTagsPtrType BucketObjectv2OverrideProviderDefaultTagsArgs + +func BucketObjectv2OverrideProviderDefaultTagsPtr(v *BucketObjectv2OverrideProviderDefaultTagsArgs) BucketObjectv2OverrideProviderDefaultTagsPtrInput { + return (*bucketObjectv2OverrideProviderDefaultTagsPtrType)(v) +} + +func (*bucketObjectv2OverrideProviderDefaultTagsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectv2OverrideProviderDefaultTags)(nil)).Elem() +} + +func (i *bucketObjectv2OverrideProviderDefaultTagsPtrType) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutput() BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return i.ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(context.Background()) +} + +func (i *bucketObjectv2OverrideProviderDefaultTagsPtrType) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketObjectv2OverrideProviderDefaultTagsPtrOutput) +} + +type BucketObjectv2OverrideProviderDefaultTagsOutput struct{ *pulumi.OutputState } + +func (BucketObjectv2OverrideProviderDefaultTagsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketObjectv2OverrideProviderDefaultTags)(nil)).Elem() +} + +func (o BucketObjectv2OverrideProviderDefaultTagsOutput) ToBucketObjectv2OverrideProviderDefaultTagsOutput() BucketObjectv2OverrideProviderDefaultTagsOutput { + return o +} + +func (o BucketObjectv2OverrideProviderDefaultTagsOutput) ToBucketObjectv2OverrideProviderDefaultTagsOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderDefaultTagsOutput { + return o +} + +func (o BucketObjectv2OverrideProviderDefaultTagsOutput) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutput() BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return o.ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(context.Background()) +} + +func (o BucketObjectv2OverrideProviderDefaultTagsOutput) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketObjectv2OverrideProviderDefaultTags) *BucketObjectv2OverrideProviderDefaultTags { + return &v + }).(BucketObjectv2OverrideProviderDefaultTagsPtrOutput) +} + +// Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o BucketObjectv2OverrideProviderDefaultTagsOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketObjectv2OverrideProviderDefaultTags) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type BucketObjectv2OverrideProviderDefaultTagsPtrOutput struct{ *pulumi.OutputState } + +func (BucketObjectv2OverrideProviderDefaultTagsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketObjectv2OverrideProviderDefaultTags)(nil)).Elem() +} + +func (o BucketObjectv2OverrideProviderDefaultTagsPtrOutput) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutput() BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return o +} + +func (o BucketObjectv2OverrideProviderDefaultTagsPtrOutput) ToBucketObjectv2OverrideProviderDefaultTagsPtrOutputWithContext(ctx context.Context) BucketObjectv2OverrideProviderDefaultTagsPtrOutput { + return o +} + +func (o BucketObjectv2OverrideProviderDefaultTagsPtrOutput) Elem() BucketObjectv2OverrideProviderDefaultTagsOutput { + return o.ApplyT(func(v *BucketObjectv2OverrideProviderDefaultTags) BucketObjectv2OverrideProviderDefaultTags { + if v != nil { + return *v + } + var ret BucketObjectv2OverrideProviderDefaultTags + return ret + }).(BucketObjectv2OverrideProviderDefaultTagsOutput) +} + +// Map of tags to assign to the object. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o BucketObjectv2OverrideProviderDefaultTagsPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketObjectv2OverrideProviderDefaultTags) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +type BucketOwnershipControlsRule struct { + // Object ownership. Valid values: `BucketOwnerPreferred`, `ObjectWriter` or `BucketOwnerEnforced` + // * `BucketOwnerPreferred` - Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the `bucket-owner-full-control` canned ACL. + // * `ObjectWriter` - Uploading account will own the object if the object is uploaded with the `bucket-owner-full-control` canned ACL. + // * `BucketOwnerEnforced` - Bucket owner automatically owns and has full control over every object in the bucket. ACLs no longer affect permissions to data in the S3 bucket. + ObjectOwnership string `pulumi:"objectOwnership"` +} + +// BucketOwnershipControlsRuleInput is an input type that accepts BucketOwnershipControlsRuleArgs and BucketOwnershipControlsRuleOutput values. +// You can construct a concrete instance of `BucketOwnershipControlsRuleInput` via: +// +// BucketOwnershipControlsRuleArgs{...} +type BucketOwnershipControlsRuleInput interface { + pulumi.Input + + ToBucketOwnershipControlsRuleOutput() BucketOwnershipControlsRuleOutput + ToBucketOwnershipControlsRuleOutputWithContext(context.Context) BucketOwnershipControlsRuleOutput +} + +type BucketOwnershipControlsRuleArgs struct { + // Object ownership. Valid values: `BucketOwnerPreferred`, `ObjectWriter` or `BucketOwnerEnforced` + // * `BucketOwnerPreferred` - Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the `bucket-owner-full-control` canned ACL. + // * `ObjectWriter` - Uploading account will own the object if the object is uploaded with the `bucket-owner-full-control` canned ACL. + // * `BucketOwnerEnforced` - Bucket owner automatically owns and has full control over every object in the bucket. ACLs no longer affect permissions to data in the S3 bucket. + ObjectOwnership pulumi.StringInput `pulumi:"objectOwnership"` +} + +func (BucketOwnershipControlsRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketOwnershipControlsRule)(nil)).Elem() +} + +func (i BucketOwnershipControlsRuleArgs) ToBucketOwnershipControlsRuleOutput() BucketOwnershipControlsRuleOutput { + return i.ToBucketOwnershipControlsRuleOutputWithContext(context.Background()) +} + +func (i BucketOwnershipControlsRuleArgs) ToBucketOwnershipControlsRuleOutputWithContext(ctx context.Context) BucketOwnershipControlsRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOwnershipControlsRuleOutput) +} + +func (i BucketOwnershipControlsRuleArgs) ToBucketOwnershipControlsRulePtrOutput() BucketOwnershipControlsRulePtrOutput { + return i.ToBucketOwnershipControlsRulePtrOutputWithContext(context.Background()) +} + +func (i BucketOwnershipControlsRuleArgs) ToBucketOwnershipControlsRulePtrOutputWithContext(ctx context.Context) BucketOwnershipControlsRulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOwnershipControlsRuleOutput).ToBucketOwnershipControlsRulePtrOutputWithContext(ctx) +} + +// BucketOwnershipControlsRulePtrInput is an input type that accepts BucketOwnershipControlsRuleArgs, BucketOwnershipControlsRulePtr and BucketOwnershipControlsRulePtrOutput values. +// You can construct a concrete instance of `BucketOwnershipControlsRulePtrInput` via: +// +// BucketOwnershipControlsRuleArgs{...} +// +// or: +// +// nil +type BucketOwnershipControlsRulePtrInput interface { + pulumi.Input + + ToBucketOwnershipControlsRulePtrOutput() BucketOwnershipControlsRulePtrOutput + ToBucketOwnershipControlsRulePtrOutputWithContext(context.Context) BucketOwnershipControlsRulePtrOutput +} + +type bucketOwnershipControlsRulePtrType BucketOwnershipControlsRuleArgs + +func BucketOwnershipControlsRulePtr(v *BucketOwnershipControlsRuleArgs) BucketOwnershipControlsRulePtrInput { + return (*bucketOwnershipControlsRulePtrType)(v) +} + +func (*bucketOwnershipControlsRulePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketOwnershipControlsRule)(nil)).Elem() +} + +func (i *bucketOwnershipControlsRulePtrType) ToBucketOwnershipControlsRulePtrOutput() BucketOwnershipControlsRulePtrOutput { + return i.ToBucketOwnershipControlsRulePtrOutputWithContext(context.Background()) +} + +func (i *bucketOwnershipControlsRulePtrType) ToBucketOwnershipControlsRulePtrOutputWithContext(ctx context.Context) BucketOwnershipControlsRulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOwnershipControlsRulePtrOutput) +} + +type BucketOwnershipControlsRuleOutput struct{ *pulumi.OutputState } + +func (BucketOwnershipControlsRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketOwnershipControlsRule)(nil)).Elem() +} + +func (o BucketOwnershipControlsRuleOutput) ToBucketOwnershipControlsRuleOutput() BucketOwnershipControlsRuleOutput { + return o +} + +func (o BucketOwnershipControlsRuleOutput) ToBucketOwnershipControlsRuleOutputWithContext(ctx context.Context) BucketOwnershipControlsRuleOutput { + return o +} + +func (o BucketOwnershipControlsRuleOutput) ToBucketOwnershipControlsRulePtrOutput() BucketOwnershipControlsRulePtrOutput { + return o.ToBucketOwnershipControlsRulePtrOutputWithContext(context.Background()) +} + +func (o BucketOwnershipControlsRuleOutput) ToBucketOwnershipControlsRulePtrOutputWithContext(ctx context.Context) BucketOwnershipControlsRulePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketOwnershipControlsRule) *BucketOwnershipControlsRule { + return &v + }).(BucketOwnershipControlsRulePtrOutput) +} + +// Object ownership. Valid values: `BucketOwnerPreferred`, `ObjectWriter` or `BucketOwnerEnforced` +// * `BucketOwnerPreferred` - Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the `bucket-owner-full-control` canned ACL. +// * `ObjectWriter` - Uploading account will own the object if the object is uploaded with the `bucket-owner-full-control` canned ACL. +// * `BucketOwnerEnforced` - Bucket owner automatically owns and has full control over every object in the bucket. ACLs no longer affect permissions to data in the S3 bucket. +func (o BucketOwnershipControlsRuleOutput) ObjectOwnership() pulumi.StringOutput { + return o.ApplyT(func(v BucketOwnershipControlsRule) string { return v.ObjectOwnership }).(pulumi.StringOutput) +} + +type BucketOwnershipControlsRulePtrOutput struct{ *pulumi.OutputState } + +func (BucketOwnershipControlsRulePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketOwnershipControlsRule)(nil)).Elem() +} + +func (o BucketOwnershipControlsRulePtrOutput) ToBucketOwnershipControlsRulePtrOutput() BucketOwnershipControlsRulePtrOutput { + return o +} + +func (o BucketOwnershipControlsRulePtrOutput) ToBucketOwnershipControlsRulePtrOutputWithContext(ctx context.Context) BucketOwnershipControlsRulePtrOutput { + return o +} + +func (o BucketOwnershipControlsRulePtrOutput) Elem() BucketOwnershipControlsRuleOutput { + return o.ApplyT(func(v *BucketOwnershipControlsRule) BucketOwnershipControlsRule { + if v != nil { + return *v + } + var ret BucketOwnershipControlsRule + return ret + }).(BucketOwnershipControlsRuleOutput) +} + +// Object ownership. Valid values: `BucketOwnerPreferred`, `ObjectWriter` or `BucketOwnerEnforced` +// * `BucketOwnerPreferred` - Objects uploaded to the bucket change ownership to the bucket owner if the objects are uploaded with the `bucket-owner-full-control` canned ACL. +// * `ObjectWriter` - Uploading account will own the object if the object is uploaded with the `bucket-owner-full-control` canned ACL. +// * `BucketOwnerEnforced` - Bucket owner automatically owns and has full control over every object in the bucket. ACLs no longer affect permissions to data in the S3 bucket. +func (o BucketOwnershipControlsRulePtrOutput) ObjectOwnership() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketOwnershipControlsRule) *string { + if v == nil { + return nil + } + return &v.ObjectOwnership + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRule struct { + // Whether delete markers are replicated. This argument is only valid with V2 replication configurations (i.e., when `filter` is used)documented below. + DeleteMarkerReplication *BucketReplicationConfigRuleDeleteMarkerReplication `pulumi:"deleteMarkerReplication"` + // Specifies the destination for the rule. See below. + Destination BucketReplicationConfigRuleDestination `pulumi:"destination"` + // Replicate existing objects in the source bucket according to the rule configurations. See below. + ExistingObjectReplication *BucketReplicationConfigRuleExistingObjectReplication `pulumi:"existingObjectReplication"` + // Filter that identifies subset of objects to which the replication rule applies. See below. If not specified, the `rule` will default to using `prefix`. + Filter *BucketReplicationConfigRuleFilter `pulumi:"filter"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id *string `pulumi:"id"` + // Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (`""`) if `filter` is not specified. + // + // Deprecated: Use filter instead + Prefix *string `pulumi:"prefix"` + // Priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. + Priority *int `pulumi:"priority"` + // Specifies special object selection criteria. See below. + SourceSelectionCriteria *BucketReplicationConfigRuleSourceSelectionCriteria `pulumi:"sourceSelectionCriteria"` + // Status of the rule. Either `"Enabled"` or `"Disabled"`. The rule is ignored if status is not "Enabled". + Status string `pulumi:"status"` +} + +// BucketReplicationConfigRuleInput is an input type that accepts BucketReplicationConfigRuleArgs and BucketReplicationConfigRuleOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleInput` via: +// +// BucketReplicationConfigRuleArgs{...} +type BucketReplicationConfigRuleInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleOutput() BucketReplicationConfigRuleOutput + ToBucketReplicationConfigRuleOutputWithContext(context.Context) BucketReplicationConfigRuleOutput +} + +type BucketReplicationConfigRuleArgs struct { + // Whether delete markers are replicated. This argument is only valid with V2 replication configurations (i.e., when `filter` is used)documented below. + DeleteMarkerReplication BucketReplicationConfigRuleDeleteMarkerReplicationPtrInput `pulumi:"deleteMarkerReplication"` + // Specifies the destination for the rule. See below. + Destination BucketReplicationConfigRuleDestinationInput `pulumi:"destination"` + // Replicate existing objects in the source bucket according to the rule configurations. See below. + ExistingObjectReplication BucketReplicationConfigRuleExistingObjectReplicationPtrInput `pulumi:"existingObjectReplication"` + // Filter that identifies subset of objects to which the replication rule applies. See below. If not specified, the `rule` will default to using `prefix`. + Filter BucketReplicationConfigRuleFilterPtrInput `pulumi:"filter"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id pulumi.StringPtrInput `pulumi:"id"` + // Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (`""`) if `filter` is not specified. + // + // Deprecated: Use filter instead + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. + Priority pulumi.IntPtrInput `pulumi:"priority"` + // Specifies special object selection criteria. See below. + SourceSelectionCriteria BucketReplicationConfigRuleSourceSelectionCriteriaPtrInput `pulumi:"sourceSelectionCriteria"` + // Status of the rule. Either `"Enabled"` or `"Disabled"`. The rule is ignored if status is not "Enabled". + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketReplicationConfigRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRule)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleArgs) ToBucketReplicationConfigRuleOutput() BucketReplicationConfigRuleOutput { + return i.ToBucketReplicationConfigRuleOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleArgs) ToBucketReplicationConfigRuleOutputWithContext(ctx context.Context) BucketReplicationConfigRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleOutput) +} + +// BucketReplicationConfigRuleArrayInput is an input type that accepts BucketReplicationConfigRuleArray and BucketReplicationConfigRuleArrayOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleArrayInput` via: +// +// BucketReplicationConfigRuleArray{ BucketReplicationConfigRuleArgs{...} } +type BucketReplicationConfigRuleArrayInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleArrayOutput() BucketReplicationConfigRuleArrayOutput + ToBucketReplicationConfigRuleArrayOutputWithContext(context.Context) BucketReplicationConfigRuleArrayOutput +} + +type BucketReplicationConfigRuleArray []BucketReplicationConfigRuleInput + +func (BucketReplicationConfigRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketReplicationConfigRule)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleArray) ToBucketReplicationConfigRuleArrayOutput() BucketReplicationConfigRuleArrayOutput { + return i.ToBucketReplicationConfigRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleArray) ToBucketReplicationConfigRuleArrayOutputWithContext(ctx context.Context) BucketReplicationConfigRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleArrayOutput) +} + +type BucketReplicationConfigRuleOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRule)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleOutput) ToBucketReplicationConfigRuleOutput() BucketReplicationConfigRuleOutput { + return o +} + +func (o BucketReplicationConfigRuleOutput) ToBucketReplicationConfigRuleOutputWithContext(ctx context.Context) BucketReplicationConfigRuleOutput { + return o +} + +// Whether delete markers are replicated. This argument is only valid with V2 replication configurations (i.e., when `filter` is used)documented below. +func (o BucketReplicationConfigRuleOutput) DeleteMarkerReplication() BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) *BucketReplicationConfigRuleDeleteMarkerReplication { + return v.DeleteMarkerReplication + }).(BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) +} + +// Specifies the destination for the rule. See below. +func (o BucketReplicationConfigRuleOutput) Destination() BucketReplicationConfigRuleDestinationOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) BucketReplicationConfigRuleDestination { return v.Destination }).(BucketReplicationConfigRuleDestinationOutput) +} + +// Replicate existing objects in the source bucket according to the rule configurations. See below. +func (o BucketReplicationConfigRuleOutput) ExistingObjectReplication() BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) *BucketReplicationConfigRuleExistingObjectReplication { + return v.ExistingObjectReplication + }).(BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) +} + +// Filter that identifies subset of objects to which the replication rule applies. See below. If not specified, the `rule` will default to using `prefix`. +func (o BucketReplicationConfigRuleOutput) Filter() BucketReplicationConfigRuleFilterPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) *BucketReplicationConfigRuleFilter { return v.Filter }).(BucketReplicationConfigRuleFilterPtrOutput) +} + +// Unique identifier for the rule. Must be less than or equal to 255 characters in length. +func (o BucketReplicationConfigRuleOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Object key name prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. Defaults to an empty string (`""`) if `filter` is not specified. +// +// Deprecated: Use filter instead +func (o BucketReplicationConfigRuleOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. +func (o BucketReplicationConfigRuleOutput) Priority() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) *int { return v.Priority }).(pulumi.IntPtrOutput) +} + +// Specifies special object selection criteria. See below. +func (o BucketReplicationConfigRuleOutput) SourceSelectionCriteria() BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) *BucketReplicationConfigRuleSourceSelectionCriteria { + return v.SourceSelectionCriteria + }).(BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) +} + +// Status of the rule. Either `"Enabled"` or `"Disabled"`. The rule is ignored if status is not "Enabled". +func (o BucketReplicationConfigRuleOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRule) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketReplicationConfigRule)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleArrayOutput) ToBucketReplicationConfigRuleArrayOutput() BucketReplicationConfigRuleArrayOutput { + return o +} + +func (o BucketReplicationConfigRuleArrayOutput) ToBucketReplicationConfigRuleArrayOutputWithContext(ctx context.Context) BucketReplicationConfigRuleArrayOutput { + return o +} + +func (o BucketReplicationConfigRuleArrayOutput) Index(i pulumi.IntInput) BucketReplicationConfigRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketReplicationConfigRule { + return vs[0].([]BucketReplicationConfigRule)[vs[1].(int)] + }).(BucketReplicationConfigRuleOutput) +} + +type BucketReplicationConfigRuleDeleteMarkerReplication struct { + // Whether delete markers should be replicated. Either `"Enabled"` or `"Disabled"`. + Status string `pulumi:"status"` +} + +// BucketReplicationConfigRuleDeleteMarkerReplicationInput is an input type that accepts BucketReplicationConfigRuleDeleteMarkerReplicationArgs and BucketReplicationConfigRuleDeleteMarkerReplicationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDeleteMarkerReplicationInput` via: +// +// BucketReplicationConfigRuleDeleteMarkerReplicationArgs{...} +type BucketReplicationConfigRuleDeleteMarkerReplicationInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDeleteMarkerReplicationOutput() BucketReplicationConfigRuleDeleteMarkerReplicationOutput + ToBucketReplicationConfigRuleDeleteMarkerReplicationOutputWithContext(context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationOutput +} + +type BucketReplicationConfigRuleDeleteMarkerReplicationArgs struct { + // Whether delete markers should be replicated. Either `"Enabled"` or `"Disabled"`. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketReplicationConfigRuleDeleteMarkerReplicationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDeleteMarkerReplication)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDeleteMarkerReplicationArgs) ToBucketReplicationConfigRuleDeleteMarkerReplicationOutput() BucketReplicationConfigRuleDeleteMarkerReplicationOutput { + return i.ToBucketReplicationConfigRuleDeleteMarkerReplicationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDeleteMarkerReplicationArgs) ToBucketReplicationConfigRuleDeleteMarkerReplicationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDeleteMarkerReplicationOutput) +} + +func (i BucketReplicationConfigRuleDeleteMarkerReplicationArgs) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput() BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return i.ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDeleteMarkerReplicationArgs) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDeleteMarkerReplicationOutput).ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleDeleteMarkerReplicationPtrInput is an input type that accepts BucketReplicationConfigRuleDeleteMarkerReplicationArgs, BucketReplicationConfigRuleDeleteMarkerReplicationPtr and BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDeleteMarkerReplicationPtrInput` via: +// +// BucketReplicationConfigRuleDeleteMarkerReplicationArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleDeleteMarkerReplicationPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput() BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput + ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput +} + +type bucketReplicationConfigRuleDeleteMarkerReplicationPtrType BucketReplicationConfigRuleDeleteMarkerReplicationArgs + +func BucketReplicationConfigRuleDeleteMarkerReplicationPtr(v *BucketReplicationConfigRuleDeleteMarkerReplicationArgs) BucketReplicationConfigRuleDeleteMarkerReplicationPtrInput { + return (*bucketReplicationConfigRuleDeleteMarkerReplicationPtrType)(v) +} + +func (*bucketReplicationConfigRuleDeleteMarkerReplicationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDeleteMarkerReplication)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleDeleteMarkerReplicationPtrType) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput() BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return i.ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleDeleteMarkerReplicationPtrType) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) +} + +type BucketReplicationConfigRuleDeleteMarkerReplicationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDeleteMarkerReplicationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDeleteMarkerReplication)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDeleteMarkerReplicationOutput) ToBucketReplicationConfigRuleDeleteMarkerReplicationOutput() BucketReplicationConfigRuleDeleteMarkerReplicationOutput { + return o +} + +func (o BucketReplicationConfigRuleDeleteMarkerReplicationOutput) ToBucketReplicationConfigRuleDeleteMarkerReplicationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationOutput { + return o +} + +func (o BucketReplicationConfigRuleDeleteMarkerReplicationOutput) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput() BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return o.ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleDeleteMarkerReplicationOutput) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleDeleteMarkerReplication) *BucketReplicationConfigRuleDeleteMarkerReplication { + return &v + }).(BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) +} + +// Whether delete markers should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleDeleteMarkerReplicationOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDeleteMarkerReplication) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDeleteMarkerReplication)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput() BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) ToBucketReplicationConfigRuleDeleteMarkerReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) Elem() BucketReplicationConfigRuleDeleteMarkerReplicationOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDeleteMarkerReplication) BucketReplicationConfigRuleDeleteMarkerReplication { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleDeleteMarkerReplication + return ret + }).(BucketReplicationConfigRuleDeleteMarkerReplicationOutput) +} + +// Whether delete markers should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDeleteMarkerReplication) *string { + if v == nil { + return nil + } + return &v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleDestination struct { + // Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with `account` owner override configuration. + AccessControlTranslation *BucketReplicationConfigRuleDestinationAccessControlTranslation `pulumi:"accessControlTranslation"` + // Account ID to specify the replica ownership. Must be used in conjunction with `accessControlTranslation` override configuration. + Account *string `pulumi:"account"` + // ARN of the bucket where you want Amazon S3 to store the results. + Bucket string `pulumi:"bucket"` + // Configuration block that provides information about encryption. See below. If `sourceSelectionCriteria` is specified, you must specify this element. + EncryptionConfiguration *BucketReplicationConfigRuleDestinationEncryptionConfiguration `pulumi:"encryptionConfiguration"` + // Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below. + Metrics *BucketReplicationConfigRuleDestinationMetrics `pulumi:"metrics"` + // Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with `metrics`. + ReplicationTime *BucketReplicationConfigRuleDestinationReplicationTime `pulumi:"replicationTime"` + // The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. + StorageClass *string `pulumi:"storageClass"` +} + +// BucketReplicationConfigRuleDestinationInput is an input type that accepts BucketReplicationConfigRuleDestinationArgs and BucketReplicationConfigRuleDestinationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationInput` via: +// +// BucketReplicationConfigRuleDestinationArgs{...} +type BucketReplicationConfigRuleDestinationInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationOutput() BucketReplicationConfigRuleDestinationOutput + ToBucketReplicationConfigRuleDestinationOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationOutput +} + +type BucketReplicationConfigRuleDestinationArgs struct { + // Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with `account` owner override configuration. + AccessControlTranslation BucketReplicationConfigRuleDestinationAccessControlTranslationPtrInput `pulumi:"accessControlTranslation"` + // Account ID to specify the replica ownership. Must be used in conjunction with `accessControlTranslation` override configuration. + Account pulumi.StringPtrInput `pulumi:"account"` + // ARN of the bucket where you want Amazon S3 to store the results. + Bucket pulumi.StringInput `pulumi:"bucket"` + // Configuration block that provides information about encryption. See below. If `sourceSelectionCriteria` is specified, you must specify this element. + EncryptionConfiguration BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrInput `pulumi:"encryptionConfiguration"` + // Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below. + Metrics BucketReplicationConfigRuleDestinationMetricsPtrInput `pulumi:"metrics"` + // Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with `metrics`. + ReplicationTime BucketReplicationConfigRuleDestinationReplicationTimePtrInput `pulumi:"replicationTime"` + // The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. + StorageClass pulumi.StringPtrInput `pulumi:"storageClass"` +} + +func (BucketReplicationConfigRuleDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestination)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDestinationArgs) ToBucketReplicationConfigRuleDestinationOutput() BucketReplicationConfigRuleDestinationOutput { + return i.ToBucketReplicationConfigRuleDestinationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationArgs) ToBucketReplicationConfigRuleDestinationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationOutput) +} + +type BucketReplicationConfigRuleDestinationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestination)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationOutput) ToBucketReplicationConfigRuleDestinationOutput() BucketReplicationConfigRuleDestinationOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationOutput) ToBucketReplicationConfigRuleDestinationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationOutput { + return o +} + +// Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with `account` owner override configuration. +func (o BucketReplicationConfigRuleDestinationOutput) AccessControlTranslation() BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestination) *BucketReplicationConfigRuleDestinationAccessControlTranslation { + return v.AccessControlTranslation + }).(BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) +} + +// Account ID to specify the replica ownership. Must be used in conjunction with `accessControlTranslation` override configuration. +func (o BucketReplicationConfigRuleDestinationOutput) Account() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestination) *string { return v.Account }).(pulumi.StringPtrOutput) +} + +// ARN of the bucket where you want Amazon S3 to store the results. +func (o BucketReplicationConfigRuleDestinationOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestination) string { return v.Bucket }).(pulumi.StringOutput) +} + +// Configuration block that provides information about encryption. See below. If `sourceSelectionCriteria` is specified, you must specify this element. +func (o BucketReplicationConfigRuleDestinationOutput) EncryptionConfiguration() BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestination) *BucketReplicationConfigRuleDestinationEncryptionConfiguration { + return v.EncryptionConfiguration + }).(BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) +} + +// Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below. +func (o BucketReplicationConfigRuleDestinationOutput) Metrics() BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestination) *BucketReplicationConfigRuleDestinationMetrics { + return v.Metrics + }).(BucketReplicationConfigRuleDestinationMetricsPtrOutput) +} + +// Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with `metrics`. +func (o BucketReplicationConfigRuleDestinationOutput) ReplicationTime() BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestination) *BucketReplicationConfigRuleDestinationReplicationTime { + return v.ReplicationTime + }).(BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) +} + +// The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. +func (o BucketReplicationConfigRuleDestinationOutput) StorageClass() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestination) *string { return v.StorageClass }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleDestinationAccessControlTranslation struct { + // Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) in the Amazon S3 API Reference. Valid values: `Destination`. + Owner string `pulumi:"owner"` +} + +// BucketReplicationConfigRuleDestinationAccessControlTranslationInput is an input type that accepts BucketReplicationConfigRuleDestinationAccessControlTranslationArgs and BucketReplicationConfigRuleDestinationAccessControlTranslationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationAccessControlTranslationInput` via: +// +// BucketReplicationConfigRuleDestinationAccessControlTranslationArgs{...} +type BucketReplicationConfigRuleDestinationAccessControlTranslationInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationAccessControlTranslationOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationOutput + ToBucketReplicationConfigRuleDestinationAccessControlTranslationOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationOutput +} + +type BucketReplicationConfigRuleDestinationAccessControlTranslationArgs struct { + // Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) in the Amazon S3 API Reference. Valid values: `Destination`. + Owner pulumi.StringInput `pulumi:"owner"` +} + +func (BucketReplicationConfigRuleDestinationAccessControlTranslationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigRuleDestinationAccessControlTranslationOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationOutput { + return i.ToBucketReplicationConfigRuleDestinationAccessControlTranslationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigRuleDestinationAccessControlTranslationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) +} + +func (i BucketReplicationConfigRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationAccessControlTranslationOutput).ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleDestinationAccessControlTranslationPtrInput is an input type that accepts BucketReplicationConfigRuleDestinationAccessControlTranslationArgs, BucketReplicationConfigRuleDestinationAccessControlTranslationPtr and BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationAccessControlTranslationPtrInput` via: +// +// BucketReplicationConfigRuleDestinationAccessControlTranslationArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleDestinationAccessControlTranslationPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput + ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput +} + +type bucketReplicationConfigRuleDestinationAccessControlTranslationPtrType BucketReplicationConfigRuleDestinationAccessControlTranslationArgs + +func BucketReplicationConfigRuleDestinationAccessControlTranslationPtr(v *BucketReplicationConfigRuleDestinationAccessControlTranslationArgs) BucketReplicationConfigRuleDestinationAccessControlTranslationPtrInput { + return (*bucketReplicationConfigRuleDestinationAccessControlTranslationPtrType)(v) +} + +func (*bucketReplicationConfigRuleDestinationAccessControlTranslationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleDestinationAccessControlTranslationPtrType) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleDestinationAccessControlTranslationPtrType) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) +} + +type BucketReplicationConfigRuleDestinationAccessControlTranslationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigRuleDestinationAccessControlTranslationOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigRuleDestinationAccessControlTranslationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return o.ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleDestinationAccessControlTranslation) *BucketReplicationConfigRuleDestinationAccessControlTranslation { + return &v + }).(BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) +} + +// Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) in the Amazon S3 API Reference. Valid values: `Destination`. +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) Owner() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationAccessControlTranslation) string { return v.Owner }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) ToBucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) Elem() BucketReplicationConfigRuleDestinationAccessControlTranslationOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationAccessControlTranslation) BucketReplicationConfigRuleDestinationAccessControlTranslation { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleDestinationAccessControlTranslation + return ret + }).(BucketReplicationConfigRuleDestinationAccessControlTranslationOutput) +} + +// Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html) in the Amazon S3 API Reference. Valid values: `Destination`. +func (o BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput) Owner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationAccessControlTranslation) *string { + if v == nil { + return nil + } + return &v.Owner + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleDestinationEncryptionConfiguration struct { + // ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket. + ReplicaKmsKeyId string `pulumi:"replicaKmsKeyId"` +} + +// BucketReplicationConfigRuleDestinationEncryptionConfigurationInput is an input type that accepts BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs and BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationEncryptionConfigurationInput` via: +// +// BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs{...} +type BucketReplicationConfigRuleDestinationEncryptionConfigurationInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationEncryptionConfigurationOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput + ToBucketReplicationConfigRuleDestinationEncryptionConfigurationOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput +} + +type BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs struct { + // ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket. + ReplicaKmsKeyId pulumi.StringInput `pulumi:"replicaKmsKeyId"` +} + +func (BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationEncryptionConfiguration)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput { + return i.ToBucketReplicationConfigRuleDestinationEncryptionConfigurationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) +} + +func (i BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput).ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrInput is an input type that accepts BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs, BucketReplicationConfigRuleDestinationEncryptionConfigurationPtr and BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrInput` via: +// +// BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput + ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput +} + +type bucketReplicationConfigRuleDestinationEncryptionConfigurationPtrType BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs + +func BucketReplicationConfigRuleDestinationEncryptionConfigurationPtr(v *BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs) BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrInput { + return (*bucketReplicationConfigRuleDestinationEncryptionConfigurationPtrType)(v) +} + +func (*bucketReplicationConfigRuleDestinationEncryptionConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationEncryptionConfiguration)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleDestinationEncryptionConfigurationPtrType) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleDestinationEncryptionConfigurationPtrType) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) +} + +type BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationEncryptionConfiguration)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return o.ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleDestinationEncryptionConfiguration) *BucketReplicationConfigRuleDestinationEncryptionConfiguration { + return &v + }).(BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) +} + +// ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket. +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) ReplicaKmsKeyId() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationEncryptionConfiguration) string { return v.ReplicaKmsKeyId }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationEncryptionConfiguration)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput() BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) ToBucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) Elem() BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationEncryptionConfiguration) BucketReplicationConfigRuleDestinationEncryptionConfiguration { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleDestinationEncryptionConfiguration + return ret + }).(BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput) +} + +// ID (Key ARN or Alias ARN) of the customer managed AWS KMS key stored in AWS Key Management Service (KMS) for the destination bucket. +func (o BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput) ReplicaKmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationEncryptionConfiguration) *string { + if v == nil { + return nil + } + return &v.ReplicaKmsKeyId + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleDestinationMetrics struct { + // Configuration block that specifies the time threshold for emitting the `s3:Replication:OperationMissedThreshold` event. See below. + EventThreshold *BucketReplicationConfigRuleDestinationMetricsEventThreshold `pulumi:"eventThreshold"` + // Status of the Destination Metrics. Either `"Enabled"` or `"Disabled"`. + Status string `pulumi:"status"` +} + +// BucketReplicationConfigRuleDestinationMetricsInput is an input type that accepts BucketReplicationConfigRuleDestinationMetricsArgs and BucketReplicationConfigRuleDestinationMetricsOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationMetricsInput` via: +// +// BucketReplicationConfigRuleDestinationMetricsArgs{...} +type BucketReplicationConfigRuleDestinationMetricsInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationMetricsOutput() BucketReplicationConfigRuleDestinationMetricsOutput + ToBucketReplicationConfigRuleDestinationMetricsOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationMetricsOutput +} + +type BucketReplicationConfigRuleDestinationMetricsArgs struct { + // Configuration block that specifies the time threshold for emitting the `s3:Replication:OperationMissedThreshold` event. See below. + EventThreshold BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrInput `pulumi:"eventThreshold"` + // Status of the Destination Metrics. Either `"Enabled"` or `"Disabled"`. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketReplicationConfigRuleDestinationMetricsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetrics)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDestinationMetricsArgs) ToBucketReplicationConfigRuleDestinationMetricsOutput() BucketReplicationConfigRuleDestinationMetricsOutput { + return i.ToBucketReplicationConfigRuleDestinationMetricsOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationMetricsArgs) ToBucketReplicationConfigRuleDestinationMetricsOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationMetricsOutput) +} + +func (i BucketReplicationConfigRuleDestinationMetricsArgs) ToBucketReplicationConfigRuleDestinationMetricsPtrOutput() BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationMetricsArgs) ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationMetricsOutput).ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleDestinationMetricsPtrInput is an input type that accepts BucketReplicationConfigRuleDestinationMetricsArgs, BucketReplicationConfigRuleDestinationMetricsPtr and BucketReplicationConfigRuleDestinationMetricsPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationMetricsPtrInput` via: +// +// BucketReplicationConfigRuleDestinationMetricsArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleDestinationMetricsPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationMetricsPtrOutput() BucketReplicationConfigRuleDestinationMetricsPtrOutput + ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationMetricsPtrOutput +} + +type bucketReplicationConfigRuleDestinationMetricsPtrType BucketReplicationConfigRuleDestinationMetricsArgs + +func BucketReplicationConfigRuleDestinationMetricsPtr(v *BucketReplicationConfigRuleDestinationMetricsArgs) BucketReplicationConfigRuleDestinationMetricsPtrInput { + return (*bucketReplicationConfigRuleDestinationMetricsPtrType)(v) +} + +func (*bucketReplicationConfigRuleDestinationMetricsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationMetrics)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleDestinationMetricsPtrType) ToBucketReplicationConfigRuleDestinationMetricsPtrOutput() BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleDestinationMetricsPtrType) ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationMetricsPtrOutput) +} + +type BucketReplicationConfigRuleDestinationMetricsOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationMetricsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetrics)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationMetricsOutput) ToBucketReplicationConfigRuleDestinationMetricsOutput() BucketReplicationConfigRuleDestinationMetricsOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsOutput) ToBucketReplicationConfigRuleDestinationMetricsOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsOutput) ToBucketReplicationConfigRuleDestinationMetricsPtrOutput() BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return o.ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleDestinationMetricsOutput) ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleDestinationMetrics) *BucketReplicationConfigRuleDestinationMetrics { + return &v + }).(BucketReplicationConfigRuleDestinationMetricsPtrOutput) +} + +// Configuration block that specifies the time threshold for emitting the `s3:Replication:OperationMissedThreshold` event. See below. +func (o BucketReplicationConfigRuleDestinationMetricsOutput) EventThreshold() BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationMetrics) *BucketReplicationConfigRuleDestinationMetricsEventThreshold { + return v.EventThreshold + }).(BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) +} + +// Status of the Destination Metrics. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleDestinationMetricsOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationMetrics) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleDestinationMetricsPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationMetricsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationMetrics)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationMetricsPtrOutput) ToBucketReplicationConfigRuleDestinationMetricsPtrOutput() BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsPtrOutput) ToBucketReplicationConfigRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsPtrOutput) Elem() BucketReplicationConfigRuleDestinationMetricsOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationMetrics) BucketReplicationConfigRuleDestinationMetrics { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleDestinationMetrics + return ret + }).(BucketReplicationConfigRuleDestinationMetricsOutput) +} + +// Configuration block that specifies the time threshold for emitting the `s3:Replication:OperationMissedThreshold` event. See below. +func (o BucketReplicationConfigRuleDestinationMetricsPtrOutput) EventThreshold() BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationMetrics) *BucketReplicationConfigRuleDestinationMetricsEventThreshold { + if v == nil { + return nil + } + return v.EventThreshold + }).(BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) +} + +// Status of the Destination Metrics. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleDestinationMetricsPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationMetrics) *string { + if v == nil { + return nil + } + return &v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleDestinationMetricsEventThreshold struct { + // Time in minutes. Valid values: `15`. + Minutes int `pulumi:"minutes"` +} + +// BucketReplicationConfigRuleDestinationMetricsEventThresholdInput is an input type that accepts BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs and BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationMetricsEventThresholdInput` via: +// +// BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs{...} +type BucketReplicationConfigRuleDestinationMetricsEventThresholdInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationMetricsEventThresholdOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput + ToBucketReplicationConfigRuleDestinationMetricsEventThresholdOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput +} + +type BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs struct { + // Time in minutes. Valid values: `15`. + Minutes pulumi.IntInput `pulumi:"minutes"` +} + +func (BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetricsEventThreshold)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput { + return i.ToBucketReplicationConfigRuleDestinationMetricsEventThresholdOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) +} + +func (i BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput).ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrInput is an input type that accepts BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs, BucketReplicationConfigRuleDestinationMetricsEventThresholdPtr and BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrInput` via: +// +// BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput + ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput +} + +type bucketReplicationConfigRuleDestinationMetricsEventThresholdPtrType BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs + +func BucketReplicationConfigRuleDestinationMetricsEventThresholdPtr(v *BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs) BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrInput { + return (*bucketReplicationConfigRuleDestinationMetricsEventThresholdPtrType)(v) +} + +func (*bucketReplicationConfigRuleDestinationMetricsEventThresholdPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationMetricsEventThreshold)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleDestinationMetricsEventThresholdPtrType) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return i.ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleDestinationMetricsEventThresholdPtrType) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) +} + +type BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetricsEventThreshold)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return o.ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleDestinationMetricsEventThreshold) *BucketReplicationConfigRuleDestinationMetricsEventThreshold { + return &v + }).(BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) +} + +// Time in minutes. Valid values: `15`. +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) Minutes() pulumi.IntOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationMetricsEventThreshold) int { return v.Minutes }).(pulumi.IntOutput) +} + +type BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationMetricsEventThreshold)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput() BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) ToBucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) Elem() BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationMetricsEventThreshold) BucketReplicationConfigRuleDestinationMetricsEventThreshold { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleDestinationMetricsEventThreshold + return ret + }).(BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput) +} + +// Time in minutes. Valid values: `15`. +func (o BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationMetricsEventThreshold) *int { + if v == nil { + return nil + } + return &v.Minutes + }).(pulumi.IntPtrOutput) +} + +type BucketReplicationConfigRuleDestinationReplicationTime struct { + // Status of the Replication Time Control. Either `"Enabled"` or `"Disabled"`. + Status string `pulumi:"status"` + // Configuration block specifying the time by which replication should be complete for all objects and operations on objects. See below. + Time BucketReplicationConfigRuleDestinationReplicationTimeTime `pulumi:"time"` +} + +// BucketReplicationConfigRuleDestinationReplicationTimeInput is an input type that accepts BucketReplicationConfigRuleDestinationReplicationTimeArgs and BucketReplicationConfigRuleDestinationReplicationTimeOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationReplicationTimeInput` via: +// +// BucketReplicationConfigRuleDestinationReplicationTimeArgs{...} +type BucketReplicationConfigRuleDestinationReplicationTimeInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationReplicationTimeOutput() BucketReplicationConfigRuleDestinationReplicationTimeOutput + ToBucketReplicationConfigRuleDestinationReplicationTimeOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationReplicationTimeOutput +} + +type BucketReplicationConfigRuleDestinationReplicationTimeArgs struct { + // Status of the Replication Time Control. Either `"Enabled"` or `"Disabled"`. + Status pulumi.StringInput `pulumi:"status"` + // Configuration block specifying the time by which replication should be complete for all objects and operations on objects. See below. + Time BucketReplicationConfigRuleDestinationReplicationTimeTimeInput `pulumi:"time"` +} + +func (BucketReplicationConfigRuleDestinationReplicationTimeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTime)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimeOutput() BucketReplicationConfigRuleDestinationReplicationTimeOutput { + return i.ToBucketReplicationConfigRuleDestinationReplicationTimeOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimeOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationReplicationTimeOutput) +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return i.ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationReplicationTimeOutput).ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleDestinationReplicationTimePtrInput is an input type that accepts BucketReplicationConfigRuleDestinationReplicationTimeArgs, BucketReplicationConfigRuleDestinationReplicationTimePtr and BucketReplicationConfigRuleDestinationReplicationTimePtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationReplicationTimePtrInput` via: +// +// BucketReplicationConfigRuleDestinationReplicationTimeArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleDestinationReplicationTimePtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimePtrOutput + ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationReplicationTimePtrOutput +} + +type bucketReplicationConfigRuleDestinationReplicationTimePtrType BucketReplicationConfigRuleDestinationReplicationTimeArgs + +func BucketReplicationConfigRuleDestinationReplicationTimePtr(v *BucketReplicationConfigRuleDestinationReplicationTimeArgs) BucketReplicationConfigRuleDestinationReplicationTimePtrInput { + return (*bucketReplicationConfigRuleDestinationReplicationTimePtrType)(v) +} + +func (*bucketReplicationConfigRuleDestinationReplicationTimePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationReplicationTime)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleDestinationReplicationTimePtrType) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return i.ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleDestinationReplicationTimePtrType) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) +} + +type BucketReplicationConfigRuleDestinationReplicationTimeOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationReplicationTimeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTime)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeOutput() BucketReplicationConfigRuleDestinationReplicationTimeOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return o.ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleDestinationReplicationTime) *BucketReplicationConfigRuleDestinationReplicationTime { + return &v + }).(BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) +} + +// Status of the Replication Time Control. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleDestinationReplicationTimeOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationReplicationTime) string { return v.Status }).(pulumi.StringOutput) +} + +// Configuration block specifying the time by which replication should be complete for all objects and operations on objects. See below. +func (o BucketReplicationConfigRuleDestinationReplicationTimeOutput) Time() BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationReplicationTime) BucketReplicationConfigRuleDestinationReplicationTimeTime { + return v.Time + }).(BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) +} + +type BucketReplicationConfigRuleDestinationReplicationTimePtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationReplicationTime)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) ToBucketReplicationConfigRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimePtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) Elem() BucketReplicationConfigRuleDestinationReplicationTimeOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationReplicationTime) BucketReplicationConfigRuleDestinationReplicationTime { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleDestinationReplicationTime + return ret + }).(BucketReplicationConfigRuleDestinationReplicationTimeOutput) +} + +// Status of the Replication Time Control. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationReplicationTime) *string { + if v == nil { + return nil + } + return &v.Status + }).(pulumi.StringPtrOutput) +} + +// Configuration block specifying the time by which replication should be complete for all objects and operations on objects. See below. +func (o BucketReplicationConfigRuleDestinationReplicationTimePtrOutput) Time() BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationReplicationTime) *BucketReplicationConfigRuleDestinationReplicationTimeTime { + if v == nil { + return nil + } + return &v.Time + }).(BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) +} + +type BucketReplicationConfigRuleDestinationReplicationTimeTime struct { + // Time in minutes. Valid values: `15`. + Minutes int `pulumi:"minutes"` +} + +// BucketReplicationConfigRuleDestinationReplicationTimeTimeInput is an input type that accepts BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs and BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationReplicationTimeTimeInput` via: +// +// BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs{...} +type BucketReplicationConfigRuleDestinationReplicationTimeTimeInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationReplicationTimeTimeOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput + ToBucketReplicationConfigRuleDestinationReplicationTimeTimeOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput +} + +type BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs struct { + // Time in minutes. Valid values: `15`. + Minutes pulumi.IntInput `pulumi:"minutes"` +} + +func (BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTimeTime)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimeTimeOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput { + return i.ToBucketReplicationConfigRuleDestinationReplicationTimeTimeOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimeTimeOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return i.ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput).ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleDestinationReplicationTimeTimePtrInput is an input type that accepts BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs, BucketReplicationConfigRuleDestinationReplicationTimeTimePtr and BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleDestinationReplicationTimeTimePtrInput` via: +// +// BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleDestinationReplicationTimeTimePtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput + ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput +} + +type bucketReplicationConfigRuleDestinationReplicationTimeTimePtrType BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs + +func BucketReplicationConfigRuleDestinationReplicationTimeTimePtr(v *BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs) BucketReplicationConfigRuleDestinationReplicationTimeTimePtrInput { + return (*bucketReplicationConfigRuleDestinationReplicationTimeTimePtrType)(v) +} + +func (*bucketReplicationConfigRuleDestinationReplicationTimeTimePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationReplicationTimeTime)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleDestinationReplicationTimeTimePtrType) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return i.ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleDestinationReplicationTimeTimePtrType) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) +} + +type BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTimeTime)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeTimeOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeTimeOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return o.ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleDestinationReplicationTimeTime) *BucketReplicationConfigRuleDestinationReplicationTimeTime { + return &v + }).(BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) +} + +// Time in minutes. Valid values: `15`. +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) Minutes() pulumi.IntOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleDestinationReplicationTimeTime) int { return v.Minutes }).(pulumi.IntOutput) +} + +type BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleDestinationReplicationTimeTime)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput() BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) ToBucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput { + return o +} + +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) Elem() BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationReplicationTimeTime) BucketReplicationConfigRuleDestinationReplicationTimeTime { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleDestinationReplicationTimeTime + return ret + }).(BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput) +} + +// Time in minutes. Valid values: `15`. +func (o BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleDestinationReplicationTimeTime) *int { + if v == nil { + return nil + } + return &v.Minutes + }).(pulumi.IntPtrOutput) +} + +type BucketReplicationConfigRuleExistingObjectReplication struct { + // Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. + Status string `pulumi:"status"` +} + +// BucketReplicationConfigRuleExistingObjectReplicationInput is an input type that accepts BucketReplicationConfigRuleExistingObjectReplicationArgs and BucketReplicationConfigRuleExistingObjectReplicationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleExistingObjectReplicationInput` via: +// +// BucketReplicationConfigRuleExistingObjectReplicationArgs{...} +type BucketReplicationConfigRuleExistingObjectReplicationInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleExistingObjectReplicationOutput() BucketReplicationConfigRuleExistingObjectReplicationOutput + ToBucketReplicationConfigRuleExistingObjectReplicationOutputWithContext(context.Context) BucketReplicationConfigRuleExistingObjectReplicationOutput +} + +type BucketReplicationConfigRuleExistingObjectReplicationArgs struct { + // Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketReplicationConfigRuleExistingObjectReplicationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleExistingObjectReplication)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleExistingObjectReplicationArgs) ToBucketReplicationConfigRuleExistingObjectReplicationOutput() BucketReplicationConfigRuleExistingObjectReplicationOutput { + return i.ToBucketReplicationConfigRuleExistingObjectReplicationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleExistingObjectReplicationArgs) ToBucketReplicationConfigRuleExistingObjectReplicationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleExistingObjectReplicationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleExistingObjectReplicationOutput) +} + +func (i BucketReplicationConfigRuleExistingObjectReplicationArgs) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutput() BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return i.ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleExistingObjectReplicationArgs) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleExistingObjectReplicationOutput).ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleExistingObjectReplicationPtrInput is an input type that accepts BucketReplicationConfigRuleExistingObjectReplicationArgs, BucketReplicationConfigRuleExistingObjectReplicationPtr and BucketReplicationConfigRuleExistingObjectReplicationPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleExistingObjectReplicationPtrInput` via: +// +// BucketReplicationConfigRuleExistingObjectReplicationArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleExistingObjectReplicationPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutput() BucketReplicationConfigRuleExistingObjectReplicationPtrOutput + ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(context.Context) BucketReplicationConfigRuleExistingObjectReplicationPtrOutput +} + +type bucketReplicationConfigRuleExistingObjectReplicationPtrType BucketReplicationConfigRuleExistingObjectReplicationArgs + +func BucketReplicationConfigRuleExistingObjectReplicationPtr(v *BucketReplicationConfigRuleExistingObjectReplicationArgs) BucketReplicationConfigRuleExistingObjectReplicationPtrInput { + return (*bucketReplicationConfigRuleExistingObjectReplicationPtrType)(v) +} + +func (*bucketReplicationConfigRuleExistingObjectReplicationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleExistingObjectReplication)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleExistingObjectReplicationPtrType) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutput() BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return i.ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleExistingObjectReplicationPtrType) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) +} + +type BucketReplicationConfigRuleExistingObjectReplicationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleExistingObjectReplicationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleExistingObjectReplication)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleExistingObjectReplicationOutput) ToBucketReplicationConfigRuleExistingObjectReplicationOutput() BucketReplicationConfigRuleExistingObjectReplicationOutput { + return o +} + +func (o BucketReplicationConfigRuleExistingObjectReplicationOutput) ToBucketReplicationConfigRuleExistingObjectReplicationOutputWithContext(ctx context.Context) BucketReplicationConfigRuleExistingObjectReplicationOutput { + return o +} + +func (o BucketReplicationConfigRuleExistingObjectReplicationOutput) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutput() BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return o.ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleExistingObjectReplicationOutput) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleExistingObjectReplication) *BucketReplicationConfigRuleExistingObjectReplication { + return &v + }).(BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) +} + +// Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleExistingObjectReplicationOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleExistingObjectReplication) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleExistingObjectReplicationPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleExistingObjectReplication)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutput() BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) ToBucketReplicationConfigRuleExistingObjectReplicationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleExistingObjectReplicationPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) Elem() BucketReplicationConfigRuleExistingObjectReplicationOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleExistingObjectReplication) BucketReplicationConfigRuleExistingObjectReplication { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleExistingObjectReplication + return ret + }).(BucketReplicationConfigRuleExistingObjectReplicationOutput) +} + +// Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleExistingObjectReplicationPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleExistingObjectReplication) *string { + if v == nil { + return nil + } + return &v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleFilter struct { + // Configuration block for specifying rule filters. This element is required only if you specify more than one filter. See and below for more details. + And *BucketReplicationConfigRuleFilterAnd `pulumi:"and"` + // Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix *string `pulumi:"prefix"` + // Configuration block for specifying a tag key and value. See below. + Tag *BucketReplicationConfigRuleFilterTag `pulumi:"tag"` +} + +// BucketReplicationConfigRuleFilterInput is an input type that accepts BucketReplicationConfigRuleFilterArgs and BucketReplicationConfigRuleFilterOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleFilterInput` via: +// +// BucketReplicationConfigRuleFilterArgs{...} +type BucketReplicationConfigRuleFilterInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleFilterOutput() BucketReplicationConfigRuleFilterOutput + ToBucketReplicationConfigRuleFilterOutputWithContext(context.Context) BucketReplicationConfigRuleFilterOutput +} + +type BucketReplicationConfigRuleFilterArgs struct { + // Configuration block for specifying rule filters. This element is required only if you specify more than one filter. See and below for more details. + And BucketReplicationConfigRuleFilterAndPtrInput `pulumi:"and"` + // Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Configuration block for specifying a tag key and value. See below. + Tag BucketReplicationConfigRuleFilterTagPtrInput `pulumi:"tag"` +} + +func (BucketReplicationConfigRuleFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleFilter)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleFilterArgs) ToBucketReplicationConfigRuleFilterOutput() BucketReplicationConfigRuleFilterOutput { + return i.ToBucketReplicationConfigRuleFilterOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleFilterArgs) ToBucketReplicationConfigRuleFilterOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterOutput) +} + +func (i BucketReplicationConfigRuleFilterArgs) ToBucketReplicationConfigRuleFilterPtrOutput() BucketReplicationConfigRuleFilterPtrOutput { + return i.ToBucketReplicationConfigRuleFilterPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleFilterArgs) ToBucketReplicationConfigRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterOutput).ToBucketReplicationConfigRuleFilterPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleFilterPtrInput is an input type that accepts BucketReplicationConfigRuleFilterArgs, BucketReplicationConfigRuleFilterPtr and BucketReplicationConfigRuleFilterPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleFilterPtrInput` via: +// +// BucketReplicationConfigRuleFilterArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleFilterPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleFilterPtrOutput() BucketReplicationConfigRuleFilterPtrOutput + ToBucketReplicationConfigRuleFilterPtrOutputWithContext(context.Context) BucketReplicationConfigRuleFilterPtrOutput +} + +type bucketReplicationConfigRuleFilterPtrType BucketReplicationConfigRuleFilterArgs + +func BucketReplicationConfigRuleFilterPtr(v *BucketReplicationConfigRuleFilterArgs) BucketReplicationConfigRuleFilterPtrInput { + return (*bucketReplicationConfigRuleFilterPtrType)(v) +} + +func (*bucketReplicationConfigRuleFilterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleFilter)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleFilterPtrType) ToBucketReplicationConfigRuleFilterPtrOutput() BucketReplicationConfigRuleFilterPtrOutput { + return i.ToBucketReplicationConfigRuleFilterPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleFilterPtrType) ToBucketReplicationConfigRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterPtrOutput) +} + +type BucketReplicationConfigRuleFilterOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleFilter)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleFilterOutput) ToBucketReplicationConfigRuleFilterOutput() BucketReplicationConfigRuleFilterOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterOutput) ToBucketReplicationConfigRuleFilterOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterOutput) ToBucketReplicationConfigRuleFilterPtrOutput() BucketReplicationConfigRuleFilterPtrOutput { + return o.ToBucketReplicationConfigRuleFilterPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleFilterOutput) ToBucketReplicationConfigRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleFilter) *BucketReplicationConfigRuleFilter { + return &v + }).(BucketReplicationConfigRuleFilterPtrOutput) +} + +// Configuration block for specifying rule filters. This element is required only if you specify more than one filter. See and below for more details. +func (o BucketReplicationConfigRuleFilterOutput) And() BucketReplicationConfigRuleFilterAndPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleFilter) *BucketReplicationConfigRuleFilterAnd { return v.And }).(BucketReplicationConfigRuleFilterAndPtrOutput) +} + +// Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketReplicationConfigRuleFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Configuration block for specifying a tag key and value. See below. +func (o BucketReplicationConfigRuleFilterOutput) Tag() BucketReplicationConfigRuleFilterTagPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleFilter) *BucketReplicationConfigRuleFilterTag { return v.Tag }).(BucketReplicationConfigRuleFilterTagPtrOutput) +} + +type BucketReplicationConfigRuleFilterPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleFilterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleFilter)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleFilterPtrOutput) ToBucketReplicationConfigRuleFilterPtrOutput() BucketReplicationConfigRuleFilterPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterPtrOutput) ToBucketReplicationConfigRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterPtrOutput) Elem() BucketReplicationConfigRuleFilterOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilter) BucketReplicationConfigRuleFilter { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleFilter + return ret + }).(BucketReplicationConfigRuleFilterOutput) +} + +// Configuration block for specifying rule filters. This element is required only if you specify more than one filter. See and below for more details. +func (o BucketReplicationConfigRuleFilterPtrOutput) And() BucketReplicationConfigRuleFilterAndPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilter) *BucketReplicationConfigRuleFilterAnd { + if v == nil { + return nil + } + return v.And + }).(BucketReplicationConfigRuleFilterAndPtrOutput) +} + +// Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketReplicationConfigRuleFilterPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilter) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// Configuration block for specifying a tag key and value. See below. +func (o BucketReplicationConfigRuleFilterPtrOutput) Tag() BucketReplicationConfigRuleFilterTagPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilter) *BucketReplicationConfigRuleFilterTag { + if v == nil { + return nil + } + return v.Tag + }).(BucketReplicationConfigRuleFilterTagPtrOutput) +} + +type BucketReplicationConfigRuleFilterAnd struct { + // Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix *string `pulumi:"prefix"` + // Map of tags (key and value pairs) that identifies a subset of objects to which the rule applies. The rule applies only to objects having all the tags in its tagset. + Tags map[string]string `pulumi:"tags"` +} + +// BucketReplicationConfigRuleFilterAndInput is an input type that accepts BucketReplicationConfigRuleFilterAndArgs and BucketReplicationConfigRuleFilterAndOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleFilterAndInput` via: +// +// BucketReplicationConfigRuleFilterAndArgs{...} +type BucketReplicationConfigRuleFilterAndInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleFilterAndOutput() BucketReplicationConfigRuleFilterAndOutput + ToBucketReplicationConfigRuleFilterAndOutputWithContext(context.Context) BucketReplicationConfigRuleFilterAndOutput +} + +type BucketReplicationConfigRuleFilterAndArgs struct { + // Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Map of tags (key and value pairs) that identifies a subset of objects to which the rule applies. The rule applies only to objects having all the tags in its tagset. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (BucketReplicationConfigRuleFilterAndArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleFilterAnd)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleFilterAndArgs) ToBucketReplicationConfigRuleFilterAndOutput() BucketReplicationConfigRuleFilterAndOutput { + return i.ToBucketReplicationConfigRuleFilterAndOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleFilterAndArgs) ToBucketReplicationConfigRuleFilterAndOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterAndOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterAndOutput) +} + +func (i BucketReplicationConfigRuleFilterAndArgs) ToBucketReplicationConfigRuleFilterAndPtrOutput() BucketReplicationConfigRuleFilterAndPtrOutput { + return i.ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleFilterAndArgs) ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterAndPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterAndOutput).ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleFilterAndPtrInput is an input type that accepts BucketReplicationConfigRuleFilterAndArgs, BucketReplicationConfigRuleFilterAndPtr and BucketReplicationConfigRuleFilterAndPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleFilterAndPtrInput` via: +// +// BucketReplicationConfigRuleFilterAndArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleFilterAndPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleFilterAndPtrOutput() BucketReplicationConfigRuleFilterAndPtrOutput + ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(context.Context) BucketReplicationConfigRuleFilterAndPtrOutput +} + +type bucketReplicationConfigRuleFilterAndPtrType BucketReplicationConfigRuleFilterAndArgs + +func BucketReplicationConfigRuleFilterAndPtr(v *BucketReplicationConfigRuleFilterAndArgs) BucketReplicationConfigRuleFilterAndPtrInput { + return (*bucketReplicationConfigRuleFilterAndPtrType)(v) +} + +func (*bucketReplicationConfigRuleFilterAndPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleFilterAnd)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleFilterAndPtrType) ToBucketReplicationConfigRuleFilterAndPtrOutput() BucketReplicationConfigRuleFilterAndPtrOutput { + return i.ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleFilterAndPtrType) ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterAndPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterAndPtrOutput) +} + +type BucketReplicationConfigRuleFilterAndOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleFilterAndOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleFilterAnd)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleFilterAndOutput) ToBucketReplicationConfigRuleFilterAndOutput() BucketReplicationConfigRuleFilterAndOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterAndOutput) ToBucketReplicationConfigRuleFilterAndOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterAndOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterAndOutput) ToBucketReplicationConfigRuleFilterAndPtrOutput() BucketReplicationConfigRuleFilterAndPtrOutput { + return o.ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleFilterAndOutput) ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterAndPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleFilterAnd) *BucketReplicationConfigRuleFilterAnd { + return &v + }).(BucketReplicationConfigRuleFilterAndPtrOutput) +} + +// Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketReplicationConfigRuleFilterAndOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleFilterAnd) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Map of tags (key and value pairs) that identifies a subset of objects to which the rule applies. The rule applies only to objects having all the tags in its tagset. +func (o BucketReplicationConfigRuleFilterAndOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleFilterAnd) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type BucketReplicationConfigRuleFilterAndPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleFilterAndPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleFilterAnd)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleFilterAndPtrOutput) ToBucketReplicationConfigRuleFilterAndPtrOutput() BucketReplicationConfigRuleFilterAndPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterAndPtrOutput) ToBucketReplicationConfigRuleFilterAndPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterAndPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterAndPtrOutput) Elem() BucketReplicationConfigRuleFilterAndOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilterAnd) BucketReplicationConfigRuleFilterAnd { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleFilterAnd + return ret + }).(BucketReplicationConfigRuleFilterAndOutput) +} + +// Object key name prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketReplicationConfigRuleFilterAndPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilterAnd) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// Map of tags (key and value pairs) that identifies a subset of objects to which the rule applies. The rule applies only to objects having all the tags in its tagset. +func (o BucketReplicationConfigRuleFilterAndPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilterAnd) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +type BucketReplicationConfigRuleFilterTag struct { + // Name of the object key. + Key string `pulumi:"key"` + // Value of the tag. + Value string `pulumi:"value"` +} + +// BucketReplicationConfigRuleFilterTagInput is an input type that accepts BucketReplicationConfigRuleFilterTagArgs and BucketReplicationConfigRuleFilterTagOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleFilterTagInput` via: +// +// BucketReplicationConfigRuleFilterTagArgs{...} +type BucketReplicationConfigRuleFilterTagInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleFilterTagOutput() BucketReplicationConfigRuleFilterTagOutput + ToBucketReplicationConfigRuleFilterTagOutputWithContext(context.Context) BucketReplicationConfigRuleFilterTagOutput +} + +type BucketReplicationConfigRuleFilterTagArgs struct { + // Name of the object key. + Key pulumi.StringInput `pulumi:"key"` + // Value of the tag. + Value pulumi.StringInput `pulumi:"value"` +} + +func (BucketReplicationConfigRuleFilterTagArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleFilterTag)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleFilterTagArgs) ToBucketReplicationConfigRuleFilterTagOutput() BucketReplicationConfigRuleFilterTagOutput { + return i.ToBucketReplicationConfigRuleFilterTagOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleFilterTagArgs) ToBucketReplicationConfigRuleFilterTagOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterTagOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterTagOutput) +} + +func (i BucketReplicationConfigRuleFilterTagArgs) ToBucketReplicationConfigRuleFilterTagPtrOutput() BucketReplicationConfigRuleFilterTagPtrOutput { + return i.ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleFilterTagArgs) ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterTagPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterTagOutput).ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleFilterTagPtrInput is an input type that accepts BucketReplicationConfigRuleFilterTagArgs, BucketReplicationConfigRuleFilterTagPtr and BucketReplicationConfigRuleFilterTagPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleFilterTagPtrInput` via: +// +// BucketReplicationConfigRuleFilterTagArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleFilterTagPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleFilterTagPtrOutput() BucketReplicationConfigRuleFilterTagPtrOutput + ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(context.Context) BucketReplicationConfigRuleFilterTagPtrOutput +} + +type bucketReplicationConfigRuleFilterTagPtrType BucketReplicationConfigRuleFilterTagArgs + +func BucketReplicationConfigRuleFilterTagPtr(v *BucketReplicationConfigRuleFilterTagArgs) BucketReplicationConfigRuleFilterTagPtrInput { + return (*bucketReplicationConfigRuleFilterTagPtrType)(v) +} + +func (*bucketReplicationConfigRuleFilterTagPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleFilterTag)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleFilterTagPtrType) ToBucketReplicationConfigRuleFilterTagPtrOutput() BucketReplicationConfigRuleFilterTagPtrOutput { + return i.ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleFilterTagPtrType) ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterTagPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleFilterTagPtrOutput) +} + +type BucketReplicationConfigRuleFilterTagOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleFilterTagOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleFilterTag)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleFilterTagOutput) ToBucketReplicationConfigRuleFilterTagOutput() BucketReplicationConfigRuleFilterTagOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterTagOutput) ToBucketReplicationConfigRuleFilterTagOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterTagOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterTagOutput) ToBucketReplicationConfigRuleFilterTagPtrOutput() BucketReplicationConfigRuleFilterTagPtrOutput { + return o.ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleFilterTagOutput) ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterTagPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleFilterTag) *BucketReplicationConfigRuleFilterTag { + return &v + }).(BucketReplicationConfigRuleFilterTagPtrOutput) +} + +// Name of the object key. +func (o BucketReplicationConfigRuleFilterTagOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleFilterTag) string { return v.Key }).(pulumi.StringOutput) +} + +// Value of the tag. +func (o BucketReplicationConfigRuleFilterTagOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleFilterTag) string { return v.Value }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleFilterTagPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleFilterTagPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleFilterTag)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleFilterTagPtrOutput) ToBucketReplicationConfigRuleFilterTagPtrOutput() BucketReplicationConfigRuleFilterTagPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterTagPtrOutput) ToBucketReplicationConfigRuleFilterTagPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleFilterTagPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleFilterTagPtrOutput) Elem() BucketReplicationConfigRuleFilterTagOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilterTag) BucketReplicationConfigRuleFilterTag { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleFilterTag + return ret + }).(BucketReplicationConfigRuleFilterTagOutput) +} + +// Name of the object key. +func (o BucketReplicationConfigRuleFilterTagPtrOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilterTag) *string { + if v == nil { + return nil + } + return &v.Key + }).(pulumi.StringPtrOutput) +} + +// Value of the tag. +func (o BucketReplicationConfigRuleFilterTagPtrOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleFilterTag) *string { + if v == nil { + return nil + } + return &v.Value + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteria struct { + // Configuration block that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate replica modifications by default. In the latest version of replication configuration (when `filter` is specified), you can specify this element and set the status to `Enabled` to replicate modifications on replicas. + ReplicaModifications *BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications `pulumi:"replicaModifications"` + // Configuration block for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If specified, `replicaKmsKeyId` in `destination` `encryptionConfiguration` must be specified as well. + SseKmsEncryptedObjects *BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects `pulumi:"sseKmsEncryptedObjects"` +} + +// BucketReplicationConfigRuleSourceSelectionCriteriaInput is an input type that accepts BucketReplicationConfigRuleSourceSelectionCriteriaArgs and BucketReplicationConfigRuleSourceSelectionCriteriaOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleSourceSelectionCriteriaInput` via: +// +// BucketReplicationConfigRuleSourceSelectionCriteriaArgs{...} +type BucketReplicationConfigRuleSourceSelectionCriteriaInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleSourceSelectionCriteriaOutput() BucketReplicationConfigRuleSourceSelectionCriteriaOutput + ToBucketReplicationConfigRuleSourceSelectionCriteriaOutputWithContext(context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaOutput +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaArgs struct { + // Configuration block that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate replica modifications by default. In the latest version of replication configuration (when `filter` is specified), you can specify this element and set the status to `Enabled` to replicate modifications on replicas. + ReplicaModifications BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrInput `pulumi:"replicaModifications"` + // Configuration block for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If specified, `replicaKmsKeyId` in `destination` `encryptionConfiguration` must be specified as well. + SseKmsEncryptedObjects BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput `pulumi:"sseKmsEncryptedObjects"` +} + +func (BucketReplicationConfigRuleSourceSelectionCriteriaArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaOutput() BucketReplicationConfigRuleSourceSelectionCriteriaOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaOutput) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaOutput).ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleSourceSelectionCriteriaPtrInput is an input type that accepts BucketReplicationConfigRuleSourceSelectionCriteriaArgs, BucketReplicationConfigRuleSourceSelectionCriteriaPtr and BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleSourceSelectionCriteriaPtrInput` via: +// +// BucketReplicationConfigRuleSourceSelectionCriteriaArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleSourceSelectionCriteriaPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput + ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput +} + +type bucketReplicationConfigRuleSourceSelectionCriteriaPtrType BucketReplicationConfigRuleSourceSelectionCriteriaArgs + +func BucketReplicationConfigRuleSourceSelectionCriteriaPtr(v *BucketReplicationConfigRuleSourceSelectionCriteriaArgs) BucketReplicationConfigRuleSourceSelectionCriteriaPtrInput { + return (*bucketReplicationConfigRuleSourceSelectionCriteriaPtrType)(v) +} + +func (*bucketReplicationConfigRuleSourceSelectionCriteriaPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleSourceSelectionCriteriaPtrType) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleSourceSelectionCriteriaPtrType) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleSourceSelectionCriteriaOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaOutput() BucketReplicationConfigRuleSourceSelectionCriteriaOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return o.ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleSourceSelectionCriteria) *BucketReplicationConfigRuleSourceSelectionCriteria { + return &v + }).(BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) +} + +// Configuration block that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate replica modifications by default. In the latest version of replication configuration (when `filter` is specified), you can specify this element and set the status to `Enabled` to replicate modifications on replicas. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaOutput) ReplicaModifications() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleSourceSelectionCriteria) *BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications { + return v.ReplicaModifications + }).(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) +} + +// Configuration block for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If specified, `replicaKmsKeyId` in `destination` `encryptionConfiguration` must be specified as well. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaOutput) SseKmsEncryptedObjects() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleSourceSelectionCriteria) *BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + return v.SseKmsEncryptedObjects + }).(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) Elem() BucketReplicationConfigRuleSourceSelectionCriteriaOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleSourceSelectionCriteria) BucketReplicationConfigRuleSourceSelectionCriteria { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleSourceSelectionCriteria + return ret + }).(BucketReplicationConfigRuleSourceSelectionCriteriaOutput) +} + +// Configuration block that you can specify for selections for modifications on replicas. Amazon S3 doesn't replicate replica modifications by default. In the latest version of replication configuration (when `filter` is specified), you can specify this element and set the status to `Enabled` to replicate modifications on replicas. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) ReplicaModifications() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleSourceSelectionCriteria) *BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications { + if v == nil { + return nil + } + return v.ReplicaModifications + }).(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) +} + +// Configuration block for filter information for the selection of Amazon S3 objects encrypted with AWS KMS. If specified, `replicaKmsKeyId` in `destination` `encryptionConfiguration` must be specified as well. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput) SseKmsEncryptedObjects() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleSourceSelectionCriteria) *BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + if v == nil { + return nil + } + return v.SseKmsEncryptedObjects + }).(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications struct { + // Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. + Status string `pulumi:"status"` +} + +// BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsInput is an input type that accepts BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs and BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsInput` via: +// +// BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs{...} +type BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput + ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutputWithContext(context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs struct { + // Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput).ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrInput is an input type that accepts BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs, BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtr and BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrInput` via: +// +// BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput + ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput +} + +type bucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrType BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs + +func BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtr(v *BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrInput { + return (*bucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrType)(v) +} + +func (*bucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrType) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrType) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return o.ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications) *BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications { + return &v + }).(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) +} + +// Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) Elem() BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications) BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications + return ret + }).(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput) +} + +// Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModifications) *string { + if v == nil { + return nil + } + return &v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects struct { + // Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. + Status string `pulumi:"status"` +} + +// BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput is an input type that accepts BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs and BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput` via: +// +// BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{...} +type BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput + ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs struct { + // Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput).ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput is an input type that accepts BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs, BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtr and BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput` via: +// +// BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput + ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput +} + +type bucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs + +func BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtr(v *BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput { + return (*bucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType)(v) +} + +func (*bucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (i *bucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return i.ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects) *BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + return &v + }).(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +// Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects) string { + return v.Status + }).(pulumi.StringOutput) +} + +type BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) ToBucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o +} + +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) Elem() BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects) BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + if v != nil { + return *v + } + var ret BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects + return ret + }).(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) +} + +// Whether the existing objects should be replicated. Either `"Enabled"` or `"Disabled"`. +func (o BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjects) *string { + if v == nil { + return nil + } + return &v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfiguration struct { + // The ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role string `pulumi:"role"` + // Specifies the rules managing the replication (documented below). + Rules []BucketReplicationConfigurationRule `pulumi:"rules"` +} + +// BucketReplicationConfigurationInput is an input type that accepts BucketReplicationConfigurationArgs and BucketReplicationConfigurationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationInput` via: +// +// BucketReplicationConfigurationArgs{...} +type BucketReplicationConfigurationInput interface { + pulumi.Input + + ToBucketReplicationConfigurationOutput() BucketReplicationConfigurationOutput + ToBucketReplicationConfigurationOutputWithContext(context.Context) BucketReplicationConfigurationOutput +} + +type BucketReplicationConfigurationArgs struct { + // The ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role pulumi.StringInput `pulumi:"role"` + // Specifies the rules managing the replication (documented below). + Rules BucketReplicationConfigurationRuleArrayInput `pulumi:"rules"` +} + +func (BucketReplicationConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfiguration)(nil)).Elem() +} + +func (i BucketReplicationConfigurationArgs) ToBucketReplicationConfigurationOutput() BucketReplicationConfigurationOutput { + return i.ToBucketReplicationConfigurationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationArgs) ToBucketReplicationConfigurationOutputWithContext(ctx context.Context) BucketReplicationConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationOutput) +} + +func (i BucketReplicationConfigurationArgs) ToBucketReplicationConfigurationPtrOutput() BucketReplicationConfigurationPtrOutput { + return i.ToBucketReplicationConfigurationPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationArgs) ToBucketReplicationConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationOutput).ToBucketReplicationConfigurationPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigurationPtrInput is an input type that accepts BucketReplicationConfigurationArgs, BucketReplicationConfigurationPtr and BucketReplicationConfigurationPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationPtrInput` via: +// +// BucketReplicationConfigurationArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigurationPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigurationPtrOutput() BucketReplicationConfigurationPtrOutput + ToBucketReplicationConfigurationPtrOutputWithContext(context.Context) BucketReplicationConfigurationPtrOutput +} + +type bucketReplicationConfigurationPtrType BucketReplicationConfigurationArgs + +func BucketReplicationConfigurationPtr(v *BucketReplicationConfigurationArgs) BucketReplicationConfigurationPtrInput { + return (*bucketReplicationConfigurationPtrType)(v) +} + +func (*bucketReplicationConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfiguration)(nil)).Elem() +} + +func (i *bucketReplicationConfigurationPtrType) ToBucketReplicationConfigurationPtrOutput() BucketReplicationConfigurationPtrOutput { + return i.ToBucketReplicationConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigurationPtrType) ToBucketReplicationConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationPtrOutput) +} + +type BucketReplicationConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfiguration)(nil)).Elem() +} + +func (o BucketReplicationConfigurationOutput) ToBucketReplicationConfigurationOutput() BucketReplicationConfigurationOutput { + return o +} + +func (o BucketReplicationConfigurationOutput) ToBucketReplicationConfigurationOutputWithContext(ctx context.Context) BucketReplicationConfigurationOutput { + return o +} + +func (o BucketReplicationConfigurationOutput) ToBucketReplicationConfigurationPtrOutput() BucketReplicationConfigurationPtrOutput { + return o.ToBucketReplicationConfigurationPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigurationOutput) ToBucketReplicationConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfiguration) *BucketReplicationConfiguration { + return &v + }).(BucketReplicationConfigurationPtrOutput) +} + +// The ARN of the IAM role for Amazon S3 to assume when replicating the objects. +func (o BucketReplicationConfigurationOutput) Role() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfiguration) string { return v.Role }).(pulumi.StringOutput) +} + +// Specifies the rules managing the replication (documented below). +func (o BucketReplicationConfigurationOutput) Rules() BucketReplicationConfigurationRuleArrayOutput { + return o.ApplyT(func(v BucketReplicationConfiguration) []BucketReplicationConfigurationRule { return v.Rules }).(BucketReplicationConfigurationRuleArrayOutput) +} + +type BucketReplicationConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfiguration)(nil)).Elem() +} + +func (o BucketReplicationConfigurationPtrOutput) ToBucketReplicationConfigurationPtrOutput() BucketReplicationConfigurationPtrOutput { + return o +} + +func (o BucketReplicationConfigurationPtrOutput) ToBucketReplicationConfigurationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationPtrOutput { + return o +} + +func (o BucketReplicationConfigurationPtrOutput) Elem() BucketReplicationConfigurationOutput { + return o.ApplyT(func(v *BucketReplicationConfiguration) BucketReplicationConfiguration { + if v != nil { + return *v + } + var ret BucketReplicationConfiguration + return ret + }).(BucketReplicationConfigurationOutput) +} + +// The ARN of the IAM role for Amazon S3 to assume when replicating the objects. +func (o BucketReplicationConfigurationPtrOutput) Role() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfiguration) *string { + if v == nil { + return nil + } + return &v.Role + }).(pulumi.StringPtrOutput) +} + +// Specifies the rules managing the replication (documented below). +func (o BucketReplicationConfigurationPtrOutput) Rules() BucketReplicationConfigurationRuleArrayOutput { + return o.ApplyT(func(v *BucketReplicationConfiguration) []BucketReplicationConfigurationRule { + if v == nil { + return nil + } + return v.Rules + }).(BucketReplicationConfigurationRuleArrayOutput) +} + +type BucketReplicationConfigurationRule struct { + // Whether delete markers are replicated. The only valid value is `Enabled`. To disable, omit this argument. This argument is only valid with V2 replication configurations (i.e., when `filter` is used). + DeleteMarkerReplicationStatus *string `pulumi:"deleteMarkerReplicationStatus"` + // Specifies the destination for the rule (documented below). + Destination BucketReplicationConfigurationRuleDestination `pulumi:"destination"` + // Filter that identifies subset of objects to which the replication rule applies (documented below). + Filter *BucketReplicationConfigurationRuleFilter `pulumi:"filter"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id *string `pulumi:"id"` + // Object keyname prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix *string `pulumi:"prefix"` + // The priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. + Priority *int `pulumi:"priority"` + // Specifies special object selection criteria (documented below). + SourceSelectionCriteria *BucketReplicationConfigurationRuleSourceSelectionCriteria `pulumi:"sourceSelectionCriteria"` + // The status of the rule. Either `Enabled` or `Disabled`. The rule is ignored if status is not Enabled. + // + // > **NOTE:** Replication to multiple destination buckets requires that `priority` is specified in the `rules` object. If the corresponding rule requires no filter, an empty configuration block `filter {}` must be specified. + Status string `pulumi:"status"` +} + +// BucketReplicationConfigurationRuleInput is an input type that accepts BucketReplicationConfigurationRuleArgs and BucketReplicationConfigurationRuleOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleInput` via: +// +// BucketReplicationConfigurationRuleArgs{...} +type BucketReplicationConfigurationRuleInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleOutput() BucketReplicationConfigurationRuleOutput + ToBucketReplicationConfigurationRuleOutputWithContext(context.Context) BucketReplicationConfigurationRuleOutput +} + +type BucketReplicationConfigurationRuleArgs struct { + // Whether delete markers are replicated. The only valid value is `Enabled`. To disable, omit this argument. This argument is only valid with V2 replication configurations (i.e., when `filter` is used). + DeleteMarkerReplicationStatus pulumi.StringPtrInput `pulumi:"deleteMarkerReplicationStatus"` + // Specifies the destination for the rule (documented below). + Destination BucketReplicationConfigurationRuleDestinationInput `pulumi:"destination"` + // Filter that identifies subset of objects to which the replication rule applies (documented below). + Filter BucketReplicationConfigurationRuleFilterPtrInput `pulumi:"filter"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id pulumi.StringPtrInput `pulumi:"id"` + // Object keyname prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // The priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. + Priority pulumi.IntPtrInput `pulumi:"priority"` + // Specifies special object selection criteria (documented below). + SourceSelectionCriteria BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrInput `pulumi:"sourceSelectionCriteria"` + // The status of the rule. Either `Enabled` or `Disabled`. The rule is ignored if status is not Enabled. + // + // > **NOTE:** Replication to multiple destination buckets requires that `priority` is specified in the `rules` object. If the corresponding rule requires no filter, an empty configuration block `filter {}` must be specified. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketReplicationConfigurationRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRule)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleArgs) ToBucketReplicationConfigurationRuleOutput() BucketReplicationConfigurationRuleOutput { + return i.ToBucketReplicationConfigurationRuleOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleArgs) ToBucketReplicationConfigurationRuleOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleOutput) +} + +// BucketReplicationConfigurationRuleArrayInput is an input type that accepts BucketReplicationConfigurationRuleArray and BucketReplicationConfigurationRuleArrayOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleArrayInput` via: +// +// BucketReplicationConfigurationRuleArray{ BucketReplicationConfigurationRuleArgs{...} } +type BucketReplicationConfigurationRuleArrayInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleArrayOutput() BucketReplicationConfigurationRuleArrayOutput + ToBucketReplicationConfigurationRuleArrayOutputWithContext(context.Context) BucketReplicationConfigurationRuleArrayOutput +} + +type BucketReplicationConfigurationRuleArray []BucketReplicationConfigurationRuleInput + +func (BucketReplicationConfigurationRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketReplicationConfigurationRule)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleArray) ToBucketReplicationConfigurationRuleArrayOutput() BucketReplicationConfigurationRuleArrayOutput { + return i.ToBucketReplicationConfigurationRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleArray) ToBucketReplicationConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleArrayOutput) +} + +type BucketReplicationConfigurationRuleOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRule)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleOutput) ToBucketReplicationConfigurationRuleOutput() BucketReplicationConfigurationRuleOutput { + return o +} + +func (o BucketReplicationConfigurationRuleOutput) ToBucketReplicationConfigurationRuleOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleOutput { + return o +} + +// Whether delete markers are replicated. The only valid value is `Enabled`. To disable, omit this argument. This argument is only valid with V2 replication configurations (i.e., when `filter` is used). +func (o BucketReplicationConfigurationRuleOutput) DeleteMarkerReplicationStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) *string { return v.DeleteMarkerReplicationStatus }).(pulumi.StringPtrOutput) +} + +// Specifies the destination for the rule (documented below). +func (o BucketReplicationConfigurationRuleOutput) Destination() BucketReplicationConfigurationRuleDestinationOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) BucketReplicationConfigurationRuleDestination { + return v.Destination + }).(BucketReplicationConfigurationRuleDestinationOutput) +} + +// Filter that identifies subset of objects to which the replication rule applies (documented below). +func (o BucketReplicationConfigurationRuleOutput) Filter() BucketReplicationConfigurationRuleFilterPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) *BucketReplicationConfigurationRuleFilter { return v.Filter }).(BucketReplicationConfigurationRuleFilterPtrOutput) +} + +// Unique identifier for the rule. Must be less than or equal to 255 characters in length. +func (o BucketReplicationConfigurationRuleOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Object keyname prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketReplicationConfigurationRuleOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// The priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. +func (o BucketReplicationConfigurationRuleOutput) Priority() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) *int { return v.Priority }).(pulumi.IntPtrOutput) +} + +// Specifies special object selection criteria (documented below). +func (o BucketReplicationConfigurationRuleOutput) SourceSelectionCriteria() BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) *BucketReplicationConfigurationRuleSourceSelectionCriteria { + return v.SourceSelectionCriteria + }).(BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) +} + +// The status of the rule. Either `Enabled` or `Disabled`. The rule is ignored if status is not Enabled. +// +// > **NOTE:** Replication to multiple destination buckets requires that `priority` is specified in the `rules` object. If the corresponding rule requires no filter, an empty configuration block `filter {}` must be specified. +func (o BucketReplicationConfigurationRuleOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRule) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketReplicationConfigurationRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketReplicationConfigurationRule)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleArrayOutput) ToBucketReplicationConfigurationRuleArrayOutput() BucketReplicationConfigurationRuleArrayOutput { + return o +} + +func (o BucketReplicationConfigurationRuleArrayOutput) ToBucketReplicationConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleArrayOutput { + return o +} + +func (o BucketReplicationConfigurationRuleArrayOutput) Index(i pulumi.IntInput) BucketReplicationConfigurationRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketReplicationConfigurationRule { + return vs[0].([]BucketReplicationConfigurationRule)[vs[1].(int)] + }).(BucketReplicationConfigurationRuleOutput) +} + +type BucketReplicationConfigurationRuleDestination struct { + // Specifies the overrides to use for object owners on replication. Must be used in conjunction with `accountId` owner override configuration. + AccessControlTranslation *BucketReplicationConfigurationRuleDestinationAccessControlTranslation `pulumi:"accessControlTranslation"` + // The Account ID to use for overriding the object owner on replication. Must be used in conjunction with `accessControlTranslation` override configuration. + AccountId *string `pulumi:"accountId"` + // The ARN of the S3 bucket where you want Amazon S3 to store replicas of the object identified by the rule. + Bucket string `pulumi:"bucket"` + // Enables replication metrics (required for S3 RTC) (documented below). + Metrics *BucketReplicationConfigurationRuleDestinationMetrics `pulumi:"metrics"` + // Destination KMS encryption key ARN for SSE-KMS replication. Must be used in conjunction with + // `sseKmsEncryptedObjects` source selection criteria. + ReplicaKmsKeyId *string `pulumi:"replicaKmsKeyId"` + // Enables S3 Replication Time Control (S3 RTC) (documented below). + ReplicationTime *BucketReplicationConfigurationRuleDestinationReplicationTime `pulumi:"replicationTime"` + // The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. + StorageClass *string `pulumi:"storageClass"` +} + +// BucketReplicationConfigurationRuleDestinationInput is an input type that accepts BucketReplicationConfigurationRuleDestinationArgs and BucketReplicationConfigurationRuleDestinationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleDestinationInput` via: +// +// BucketReplicationConfigurationRuleDestinationArgs{...} +type BucketReplicationConfigurationRuleDestinationInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleDestinationOutput() BucketReplicationConfigurationRuleDestinationOutput + ToBucketReplicationConfigurationRuleDestinationOutputWithContext(context.Context) BucketReplicationConfigurationRuleDestinationOutput +} + +type BucketReplicationConfigurationRuleDestinationArgs struct { + // Specifies the overrides to use for object owners on replication. Must be used in conjunction with `accountId` owner override configuration. + AccessControlTranslation BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrInput `pulumi:"accessControlTranslation"` + // The Account ID to use for overriding the object owner on replication. Must be used in conjunction with `accessControlTranslation` override configuration. + AccountId pulumi.StringPtrInput `pulumi:"accountId"` + // The ARN of the S3 bucket where you want Amazon S3 to store replicas of the object identified by the rule. + Bucket pulumi.StringInput `pulumi:"bucket"` + // Enables replication metrics (required for S3 RTC) (documented below). + Metrics BucketReplicationConfigurationRuleDestinationMetricsPtrInput `pulumi:"metrics"` + // Destination KMS encryption key ARN for SSE-KMS replication. Must be used in conjunction with + // `sseKmsEncryptedObjects` source selection criteria. + ReplicaKmsKeyId pulumi.StringPtrInput `pulumi:"replicaKmsKeyId"` + // Enables S3 Replication Time Control (S3 RTC) (documented below). + ReplicationTime BucketReplicationConfigurationRuleDestinationReplicationTimePtrInput `pulumi:"replicationTime"` + // The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. + StorageClass pulumi.StringPtrInput `pulumi:"storageClass"` +} + +func (BucketReplicationConfigurationRuleDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestination)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleDestinationArgs) ToBucketReplicationConfigurationRuleDestinationOutput() BucketReplicationConfigurationRuleDestinationOutput { + return i.ToBucketReplicationConfigurationRuleDestinationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleDestinationArgs) ToBucketReplicationConfigurationRuleDestinationOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationOutput) +} + +type BucketReplicationConfigurationRuleDestinationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestination)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleDestinationOutput) ToBucketReplicationConfigurationRuleDestinationOutput() BucketReplicationConfigurationRuleDestinationOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationOutput) ToBucketReplicationConfigurationRuleDestinationOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationOutput { + return o +} + +// Specifies the overrides to use for object owners on replication. Must be used in conjunction with `accountId` owner override configuration. +func (o BucketReplicationConfigurationRuleDestinationOutput) AccessControlTranslation() BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestination) *BucketReplicationConfigurationRuleDestinationAccessControlTranslation { + return v.AccessControlTranslation + }).(BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) +} + +// The Account ID to use for overriding the object owner on replication. Must be used in conjunction with `accessControlTranslation` override configuration. +func (o BucketReplicationConfigurationRuleDestinationOutput) AccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestination) *string { return v.AccountId }).(pulumi.StringPtrOutput) +} + +// The ARN of the S3 bucket where you want Amazon S3 to store replicas of the object identified by the rule. +func (o BucketReplicationConfigurationRuleDestinationOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestination) string { return v.Bucket }).(pulumi.StringOutput) +} + +// Enables replication metrics (required for S3 RTC) (documented below). +func (o BucketReplicationConfigurationRuleDestinationOutput) Metrics() BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestination) *BucketReplicationConfigurationRuleDestinationMetrics { + return v.Metrics + }).(BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) +} + +// Destination KMS encryption key ARN for SSE-KMS replication. Must be used in conjunction with +// `sseKmsEncryptedObjects` source selection criteria. +func (o BucketReplicationConfigurationRuleDestinationOutput) ReplicaKmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestination) *string { return v.ReplicaKmsKeyId }).(pulumi.StringPtrOutput) +} + +// Enables S3 Replication Time Control (S3 RTC) (documented below). +func (o BucketReplicationConfigurationRuleDestinationOutput) ReplicationTime() BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestination) *BucketReplicationConfigurationRuleDestinationReplicationTime { + return v.ReplicationTime + }).(BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) +} + +// The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. +func (o BucketReplicationConfigurationRuleDestinationOutput) StorageClass() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestination) *string { return v.StorageClass }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationAccessControlTranslation struct { + // The override value for the owner on replicated objects. Currently only `Destination` is supported. + Owner string `pulumi:"owner"` +} + +// BucketReplicationConfigurationRuleDestinationAccessControlTranslationInput is an input type that accepts BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs and BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleDestinationAccessControlTranslationInput` via: +// +// BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs{...} +type BucketReplicationConfigurationRuleDestinationAccessControlTranslationInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput + ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput +} + +type BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs struct { + // The override value for the owner on replicated objects. Currently only `Destination` is supported. + Owner pulumi.StringInput `pulumi:"owner"` +} + +func (BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return i.ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) +} + +func (i BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return i.ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput).ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrInput is an input type that accepts BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs, BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtr and BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrInput` via: +// +// BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput + ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput +} + +type bucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrType BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs + +func BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtr(v *BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs) BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrInput { + return (*bucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrType)(v) +} + +func (*bucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (i *bucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrType) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return i.ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrType) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return o.ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigurationRuleDestinationAccessControlTranslation) *BucketReplicationConfigurationRuleDestinationAccessControlTranslation { + return &v + }).(BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) +} + +// The override value for the owner on replicated objects. Currently only `Destination` is supported. +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) Owner() pulumi.StringOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestinationAccessControlTranslation) string { return v.Owner }).(pulumi.StringOutput) +} + +type BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput() BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) ToBucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) Elem() BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationAccessControlTranslation) BucketReplicationConfigurationRuleDestinationAccessControlTranslation { + if v != nil { + return *v + } + var ret BucketReplicationConfigurationRuleDestinationAccessControlTranslation + return ret + }).(BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput) +} + +// The override value for the owner on replicated objects. Currently only `Destination` is supported. +func (o BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput) Owner() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationAccessControlTranslation) *string { + if v == nil { + return nil + } + return &v.Owner + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationMetrics struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes *int `pulumi:"minutes"` + // The status of replication metrics. Either `Enabled` or `Disabled`. + Status *string `pulumi:"status"` +} + +// BucketReplicationConfigurationRuleDestinationMetricsInput is an input type that accepts BucketReplicationConfigurationRuleDestinationMetricsArgs and BucketReplicationConfigurationRuleDestinationMetricsOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleDestinationMetricsInput` via: +// +// BucketReplicationConfigurationRuleDestinationMetricsArgs{...} +type BucketReplicationConfigurationRuleDestinationMetricsInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleDestinationMetricsOutput() BucketReplicationConfigurationRuleDestinationMetricsOutput + ToBucketReplicationConfigurationRuleDestinationMetricsOutputWithContext(context.Context) BucketReplicationConfigurationRuleDestinationMetricsOutput +} + +type BucketReplicationConfigurationRuleDestinationMetricsArgs struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes pulumi.IntPtrInput `pulumi:"minutes"` + // The status of replication metrics. Either `Enabled` or `Disabled`. + Status pulumi.StringPtrInput `pulumi:"status"` +} + +func (BucketReplicationConfigurationRuleDestinationMetricsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationMetrics)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleDestinationMetricsArgs) ToBucketReplicationConfigurationRuleDestinationMetricsOutput() BucketReplicationConfigurationRuleDestinationMetricsOutput { + return i.ToBucketReplicationConfigurationRuleDestinationMetricsOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleDestinationMetricsArgs) ToBucketReplicationConfigurationRuleDestinationMetricsOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationMetricsOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationMetricsOutput) +} + +func (i BucketReplicationConfigurationRuleDestinationMetricsArgs) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutput() BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return i.ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleDestinationMetricsArgs) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationMetricsOutput).ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigurationRuleDestinationMetricsPtrInput is an input type that accepts BucketReplicationConfigurationRuleDestinationMetricsArgs, BucketReplicationConfigurationRuleDestinationMetricsPtr and BucketReplicationConfigurationRuleDestinationMetricsPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleDestinationMetricsPtrInput` via: +// +// BucketReplicationConfigurationRuleDestinationMetricsArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigurationRuleDestinationMetricsPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutput() BucketReplicationConfigurationRuleDestinationMetricsPtrOutput + ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(context.Context) BucketReplicationConfigurationRuleDestinationMetricsPtrOutput +} + +type bucketReplicationConfigurationRuleDestinationMetricsPtrType BucketReplicationConfigurationRuleDestinationMetricsArgs + +func BucketReplicationConfigurationRuleDestinationMetricsPtr(v *BucketReplicationConfigurationRuleDestinationMetricsArgs) BucketReplicationConfigurationRuleDestinationMetricsPtrInput { + return (*bucketReplicationConfigurationRuleDestinationMetricsPtrType)(v) +} + +func (*bucketReplicationConfigurationRuleDestinationMetricsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleDestinationMetrics)(nil)).Elem() +} + +func (i *bucketReplicationConfigurationRuleDestinationMetricsPtrType) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutput() BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return i.ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigurationRuleDestinationMetricsPtrType) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationMetricsOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleDestinationMetricsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationMetrics)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleDestinationMetricsOutput) ToBucketReplicationConfigurationRuleDestinationMetricsOutput() BucketReplicationConfigurationRuleDestinationMetricsOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationMetricsOutput) ToBucketReplicationConfigurationRuleDestinationMetricsOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationMetricsOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationMetricsOutput) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutput() BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return o.ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigurationRuleDestinationMetricsOutput) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigurationRuleDestinationMetrics) *BucketReplicationConfigurationRuleDestinationMetrics { + return &v + }).(BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) +} + +// Threshold within which objects are to be replicated. The only valid value is `15`. +func (o BucketReplicationConfigurationRuleDestinationMetricsOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestinationMetrics) *int { return v.Minutes }).(pulumi.IntPtrOutput) +} + +// The status of replication metrics. Either `Enabled` or `Disabled`. +func (o BucketReplicationConfigurationRuleDestinationMetricsOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestinationMetrics) *string { return v.Status }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationMetricsPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleDestinationMetrics)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutput() BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) ToBucketReplicationConfigurationRuleDestinationMetricsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationMetricsPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) Elem() BucketReplicationConfigurationRuleDestinationMetricsOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationMetrics) BucketReplicationConfigurationRuleDestinationMetrics { + if v != nil { + return *v + } + var ret BucketReplicationConfigurationRuleDestinationMetrics + return ret + }).(BucketReplicationConfigurationRuleDestinationMetricsOutput) +} + +// Threshold within which objects are to be replicated. The only valid value is `15`. +func (o BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationMetrics) *int { + if v == nil { + return nil + } + return v.Minutes + }).(pulumi.IntPtrOutput) +} + +// The status of replication metrics. Either `Enabled` or `Disabled`. +func (o BucketReplicationConfigurationRuleDestinationMetricsPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationMetrics) *string { + if v == nil { + return nil + } + return v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationReplicationTime struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes *int `pulumi:"minutes"` + // The status of RTC. Either `Enabled` or `Disabled`. + Status *string `pulumi:"status"` +} + +// BucketReplicationConfigurationRuleDestinationReplicationTimeInput is an input type that accepts BucketReplicationConfigurationRuleDestinationReplicationTimeArgs and BucketReplicationConfigurationRuleDestinationReplicationTimeOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleDestinationReplicationTimeInput` via: +// +// BucketReplicationConfigurationRuleDestinationReplicationTimeArgs{...} +type BucketReplicationConfigurationRuleDestinationReplicationTimeInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleDestinationReplicationTimeOutput() BucketReplicationConfigurationRuleDestinationReplicationTimeOutput + ToBucketReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimeOutput +} + +type BucketReplicationConfigurationRuleDestinationReplicationTimeArgs struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes pulumi.IntPtrInput `pulumi:"minutes"` + // The status of RTC. Either `Enabled` or `Disabled`. + Status pulumi.StringPtrInput `pulumi:"status"` +} + +func (BucketReplicationConfigurationRuleDestinationReplicationTimeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigurationRuleDestinationReplicationTimeOutput() BucketReplicationConfigurationRuleDestinationReplicationTimeOutput { + return i.ToBucketReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimeOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) +} + +func (i BucketReplicationConfigurationRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return i.ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleDestinationReplicationTimeArgs) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationReplicationTimeOutput).ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(ctx) +} + +// BucketReplicationConfigurationRuleDestinationReplicationTimePtrInput is an input type that accepts BucketReplicationConfigurationRuleDestinationReplicationTimeArgs, BucketReplicationConfigurationRuleDestinationReplicationTimePtr and BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleDestinationReplicationTimePtrInput` via: +// +// BucketReplicationConfigurationRuleDestinationReplicationTimeArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigurationRuleDestinationReplicationTimePtrInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput + ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput +} + +type bucketReplicationConfigurationRuleDestinationReplicationTimePtrType BucketReplicationConfigurationRuleDestinationReplicationTimeArgs + +func BucketReplicationConfigurationRuleDestinationReplicationTimePtr(v *BucketReplicationConfigurationRuleDestinationReplicationTimeArgs) BucketReplicationConfigurationRuleDestinationReplicationTimePtrInput { + return (*bucketReplicationConfigurationRuleDestinationReplicationTimePtrType)(v) +} + +func (*bucketReplicationConfigurationRuleDestinationReplicationTimePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (i *bucketReplicationConfigurationRuleDestinationReplicationTimePtrType) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return i.ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigurationRuleDestinationReplicationTimePtrType) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationReplicationTimeOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigurationRuleDestinationReplicationTimeOutput() BucketReplicationConfigurationRuleDestinationReplicationTimeOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimeOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return o.ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigurationRuleDestinationReplicationTime) *BucketReplicationConfigurationRuleDestinationReplicationTime { + return &v + }).(BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) +} + +// Threshold within which objects are to be replicated. The only valid value is `15`. +func (o BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestinationReplicationTime) *int { return v.Minutes }).(pulumi.IntPtrOutput) +} + +// The status of RTC. Either `Enabled` or `Disabled`. +func (o BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleDestinationReplicationTime) *string { return v.Status }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput() BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) ToBucketReplicationConfigurationRuleDestinationReplicationTimePtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) Elem() BucketReplicationConfigurationRuleDestinationReplicationTimeOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationReplicationTime) BucketReplicationConfigurationRuleDestinationReplicationTime { + if v != nil { + return *v + } + var ret BucketReplicationConfigurationRuleDestinationReplicationTime + return ret + }).(BucketReplicationConfigurationRuleDestinationReplicationTimeOutput) +} + +// Threshold within which objects are to be replicated. The only valid value is `15`. +func (o BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationReplicationTime) *int { + if v == nil { + return nil + } + return v.Minutes + }).(pulumi.IntPtrOutput) +} + +// The status of RTC. Either `Enabled` or `Disabled`. +func (o BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleDestinationReplicationTime) *string { + if v == nil { + return nil + } + return v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketReplicationConfigurationRuleFilter struct { + // Object keyname prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix *string `pulumi:"prefix"` + // A map of tags that identifies subset of objects to which the rule applies. + // The rule applies only to objects having all the tags in its tagset. + Tags map[string]string `pulumi:"tags"` +} + +// BucketReplicationConfigurationRuleFilterInput is an input type that accepts BucketReplicationConfigurationRuleFilterArgs and BucketReplicationConfigurationRuleFilterOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleFilterInput` via: +// +// BucketReplicationConfigurationRuleFilterArgs{...} +type BucketReplicationConfigurationRuleFilterInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleFilterOutput() BucketReplicationConfigurationRuleFilterOutput + ToBucketReplicationConfigurationRuleFilterOutputWithContext(context.Context) BucketReplicationConfigurationRuleFilterOutput +} + +type BucketReplicationConfigurationRuleFilterArgs struct { + // Object keyname prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // A map of tags that identifies subset of objects to which the rule applies. + // The rule applies only to objects having all the tags in its tagset. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (BucketReplicationConfigurationRuleFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleFilterArgs) ToBucketReplicationConfigurationRuleFilterOutput() BucketReplicationConfigurationRuleFilterOutput { + return i.ToBucketReplicationConfigurationRuleFilterOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleFilterArgs) ToBucketReplicationConfigurationRuleFilterOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleFilterOutput) +} + +func (i BucketReplicationConfigurationRuleFilterArgs) ToBucketReplicationConfigurationRuleFilterPtrOutput() BucketReplicationConfigurationRuleFilterPtrOutput { + return i.ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleFilterArgs) ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleFilterOutput).ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigurationRuleFilterPtrInput is an input type that accepts BucketReplicationConfigurationRuleFilterArgs, BucketReplicationConfigurationRuleFilterPtr and BucketReplicationConfigurationRuleFilterPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleFilterPtrInput` via: +// +// BucketReplicationConfigurationRuleFilterArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigurationRuleFilterPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleFilterPtrOutput() BucketReplicationConfigurationRuleFilterPtrOutput + ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(context.Context) BucketReplicationConfigurationRuleFilterPtrOutput +} + +type bucketReplicationConfigurationRuleFilterPtrType BucketReplicationConfigurationRuleFilterArgs + +func BucketReplicationConfigurationRuleFilterPtr(v *BucketReplicationConfigurationRuleFilterArgs) BucketReplicationConfigurationRuleFilterPtrInput { + return (*bucketReplicationConfigurationRuleFilterPtrType)(v) +} + +func (*bucketReplicationConfigurationRuleFilterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (i *bucketReplicationConfigurationRuleFilterPtrType) ToBucketReplicationConfigurationRuleFilterPtrOutput() BucketReplicationConfigurationRuleFilterPtrOutput { + return i.ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigurationRuleFilterPtrType) ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleFilterPtrOutput) +} + +type BucketReplicationConfigurationRuleFilterOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleFilterOutput) ToBucketReplicationConfigurationRuleFilterOutput() BucketReplicationConfigurationRuleFilterOutput { + return o +} + +func (o BucketReplicationConfigurationRuleFilterOutput) ToBucketReplicationConfigurationRuleFilterOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleFilterOutput { + return o +} + +func (o BucketReplicationConfigurationRuleFilterOutput) ToBucketReplicationConfigurationRuleFilterPtrOutput() BucketReplicationConfigurationRuleFilterPtrOutput { + return o.ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigurationRuleFilterOutput) ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleFilterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigurationRuleFilter) *BucketReplicationConfigurationRuleFilter { + return &v + }).(BucketReplicationConfigurationRuleFilterPtrOutput) +} + +// Object keyname prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketReplicationConfigurationRuleFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// A map of tags that identifies subset of objects to which the rule applies. +// The rule applies only to objects having all the tags in its tagset. +func (o BucketReplicationConfigurationRuleFilterOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleFilter) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type BucketReplicationConfigurationRuleFilterPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleFilterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleFilterPtrOutput) ToBucketReplicationConfigurationRuleFilterPtrOutput() BucketReplicationConfigurationRuleFilterPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleFilterPtrOutput) ToBucketReplicationConfigurationRuleFilterPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleFilterPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleFilterPtrOutput) Elem() BucketReplicationConfigurationRuleFilterOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleFilter) BucketReplicationConfigurationRuleFilter { + if v != nil { + return *v + } + var ret BucketReplicationConfigurationRuleFilter + return ret + }).(BucketReplicationConfigurationRuleFilterOutput) +} + +// Object keyname prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketReplicationConfigurationRuleFilterPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleFilter) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +// A map of tags that identifies subset of objects to which the rule applies. +// The rule applies only to objects having all the tags in its tagset. +func (o BucketReplicationConfigurationRuleFilterPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleFilter) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteria struct { + // Match SSE-KMS encrypted objects (documented below). If specified, `replicaKmsKeyId` + // in `destination` must be specified as well. + SseKmsEncryptedObjects *BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects `pulumi:"sseKmsEncryptedObjects"` +} + +// BucketReplicationConfigurationRuleSourceSelectionCriteriaInput is an input type that accepts BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs and BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleSourceSelectionCriteriaInput` via: +// +// BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs{...} +type BucketReplicationConfigurationRuleSourceSelectionCriteriaInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs struct { + // Match SSE-KMS encrypted objects (documented below). If specified, `replicaKmsKeyId` + // in `destination` must be specified as well. + SseKmsEncryptedObjects BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput `pulumi:"sseKmsEncryptedObjects"` +} + +func (BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return i.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return i.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput).ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrInput is an input type that accepts BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs, BucketReplicationConfigurationRuleSourceSelectionCriteriaPtr and BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrInput` via: +// +// BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput +} + +type bucketReplicationConfigurationRuleSourceSelectionCriteriaPtrType BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs + +func BucketReplicationConfigurationRuleSourceSelectionCriteriaPtr(v *BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs) BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrInput { + return (*bucketReplicationConfigurationRuleSourceSelectionCriteriaPtrType)(v) +} + +func (*bucketReplicationConfigurationRuleSourceSelectionCriteriaPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (i *bucketReplicationConfigurationRuleSourceSelectionCriteriaPtrType) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return i.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigurationRuleSourceSelectionCriteriaPtrType) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return o.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigurationRuleSourceSelectionCriteria) *BucketReplicationConfigurationRuleSourceSelectionCriteria { + return &v + }).(BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) +} + +// Match SSE-KMS encrypted objects (documented below). If specified, `replicaKmsKeyId` +// in `destination` must be specified as well. +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) SseKmsEncryptedObjects() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleSourceSelectionCriteria) *BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + return v.SseKmsEncryptedObjects + }).(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) Elem() BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleSourceSelectionCriteria) BucketReplicationConfigurationRuleSourceSelectionCriteria { + if v != nil { + return *v + } + var ret BucketReplicationConfigurationRuleSourceSelectionCriteria + return ret + }).(BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput) +} + +// Match SSE-KMS encrypted objects (documented below). If specified, `replicaKmsKeyId` +// in `destination` must be specified as well. +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput) SseKmsEncryptedObjects() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleSourceSelectionCriteria) *BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + if v == nil { + return nil + } + return v.SseKmsEncryptedObjects + }).(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects struct { + // Boolean which indicates if this criteria is enabled. + Enabled bool `pulumi:"enabled"` +} + +// BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput is an input type that accepts BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs and BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput` via: +// +// BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{...} +type BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs struct { + // Boolean which indicates if this criteria is enabled. + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return i.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return i.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Background()) +} + +func (i BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput).ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx) +} + +// BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput is an input type that accepts BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs, BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtr and BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput values. +// You can construct a concrete instance of `BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput` via: +// +// BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{...} +// +// or: +// +// nil +type BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput interface { + pulumi.Input + + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput + ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput +} + +type bucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs + +func BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtr(v *BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput { + return (*bucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType)(v) +} + +func (*bucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (i *bucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return i.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Background()) +} + +func (i *bucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrType) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(context.Background()) +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects) *BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + return &v + }).(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) +} + +// Boolean which indicates if this criteria is enabled. +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects) bool { + return v.Enabled + }).(pulumi.BoolOutput) +} + +type BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput struct{ *pulumi.OutputState } + +func (BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects)(nil)).Elem() +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) ToBucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutputWithContext(ctx context.Context) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput { + return o +} + +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) Elem() BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects) BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects { + if v != nil { + return *v + } + var ret BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects + return ret + }).(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput) +} + +// Boolean which indicates if this criteria is enabled. +func (o BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjects) *bool { + if v == nil { + return nil + } + return &v.Enabled + }).(pulumi.BoolPtrOutput) +} + +type BucketServerSideEncryptionConfiguration struct { + // A single object for server-side encryption by default configuration. (documented below) + Rule BucketServerSideEncryptionConfigurationRule `pulumi:"rule"` +} + +// BucketServerSideEncryptionConfigurationInput is an input type that accepts BucketServerSideEncryptionConfigurationArgs and BucketServerSideEncryptionConfigurationOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationInput` via: +// +// BucketServerSideEncryptionConfigurationArgs{...} +type BucketServerSideEncryptionConfigurationInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationOutput() BucketServerSideEncryptionConfigurationOutput + ToBucketServerSideEncryptionConfigurationOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationOutput +} + +type BucketServerSideEncryptionConfigurationArgs struct { + // A single object for server-side encryption by default configuration. (documented below) + Rule BucketServerSideEncryptionConfigurationRuleInput `pulumi:"rule"` +} + +func (BucketServerSideEncryptionConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationArgs) ToBucketServerSideEncryptionConfigurationOutput() BucketServerSideEncryptionConfigurationOutput { + return i.ToBucketServerSideEncryptionConfigurationOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationArgs) ToBucketServerSideEncryptionConfigurationOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationOutput) +} + +func (i BucketServerSideEncryptionConfigurationArgs) ToBucketServerSideEncryptionConfigurationPtrOutput() BucketServerSideEncryptionConfigurationPtrOutput { + return i.ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationArgs) ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationOutput).ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(ctx) +} + +// BucketServerSideEncryptionConfigurationPtrInput is an input type that accepts BucketServerSideEncryptionConfigurationArgs, BucketServerSideEncryptionConfigurationPtr and BucketServerSideEncryptionConfigurationPtrOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationPtrInput` via: +// +// BucketServerSideEncryptionConfigurationArgs{...} +// +// or: +// +// nil +type BucketServerSideEncryptionConfigurationPtrInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationPtrOutput() BucketServerSideEncryptionConfigurationPtrOutput + ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationPtrOutput +} + +type bucketServerSideEncryptionConfigurationPtrType BucketServerSideEncryptionConfigurationArgs + +func BucketServerSideEncryptionConfigurationPtr(v *BucketServerSideEncryptionConfigurationArgs) BucketServerSideEncryptionConfigurationPtrInput { + return (*bucketServerSideEncryptionConfigurationPtrType)(v) +} + +func (*bucketServerSideEncryptionConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (i *bucketServerSideEncryptionConfigurationPtrType) ToBucketServerSideEncryptionConfigurationPtrOutput() BucketServerSideEncryptionConfigurationPtrOutput { + return i.ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *bucketServerSideEncryptionConfigurationPtrType) ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationPtrOutput) +} + +type BucketServerSideEncryptionConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationOutput) ToBucketServerSideEncryptionConfigurationOutput() BucketServerSideEncryptionConfigurationOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationOutput) ToBucketServerSideEncryptionConfigurationOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationOutput) ToBucketServerSideEncryptionConfigurationPtrOutput() BucketServerSideEncryptionConfigurationPtrOutput { + return o.ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(context.Background()) +} + +func (o BucketServerSideEncryptionConfigurationOutput) ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketServerSideEncryptionConfiguration) *BucketServerSideEncryptionConfiguration { + return &v + }).(BucketServerSideEncryptionConfigurationPtrOutput) +} + +// A single object for server-side encryption by default configuration. (documented below) +func (o BucketServerSideEncryptionConfigurationOutput) Rule() BucketServerSideEncryptionConfigurationRuleOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfiguration) BucketServerSideEncryptionConfigurationRule { + return v.Rule + }).(BucketServerSideEncryptionConfigurationRuleOutput) +} + +type BucketServerSideEncryptionConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationPtrOutput) ToBucketServerSideEncryptionConfigurationPtrOutput() BucketServerSideEncryptionConfigurationPtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationPtrOutput) ToBucketServerSideEncryptionConfigurationPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationPtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationPtrOutput) Elem() BucketServerSideEncryptionConfigurationOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfiguration) BucketServerSideEncryptionConfiguration { + if v != nil { + return *v + } + var ret BucketServerSideEncryptionConfiguration + return ret + }).(BucketServerSideEncryptionConfigurationOutput) +} + +// A single object for server-side encryption by default configuration. (documented below) +func (o BucketServerSideEncryptionConfigurationPtrOutput) Rule() BucketServerSideEncryptionConfigurationRulePtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfiguration) *BucketServerSideEncryptionConfigurationRule { + if v == nil { + return nil + } + return &v.Rule + }).(BucketServerSideEncryptionConfigurationRulePtrOutput) +} + +type BucketServerSideEncryptionConfigurationRule struct { + // A single object for setting server-side encryption by default. (documented below) + ApplyServerSideEncryptionByDefault BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault `pulumi:"applyServerSideEncryptionByDefault"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` +} + +// BucketServerSideEncryptionConfigurationRuleInput is an input type that accepts BucketServerSideEncryptionConfigurationRuleArgs and BucketServerSideEncryptionConfigurationRuleOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationRuleInput` via: +// +// BucketServerSideEncryptionConfigurationRuleArgs{...} +type BucketServerSideEncryptionConfigurationRuleInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationRuleOutput() BucketServerSideEncryptionConfigurationRuleOutput + ToBucketServerSideEncryptionConfigurationRuleOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationRuleOutput +} + +type BucketServerSideEncryptionConfigurationRuleArgs struct { + // A single object for setting server-side encryption by default. (documented below) + ApplyServerSideEncryptionByDefault BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput `pulumi:"applyServerSideEncryptionByDefault"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolPtrInput `pulumi:"bucketKeyEnabled"` +} + +func (BucketServerSideEncryptionConfigurationRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationRuleArgs) ToBucketServerSideEncryptionConfigurationRuleOutput() BucketServerSideEncryptionConfigurationRuleOutput { + return i.ToBucketServerSideEncryptionConfigurationRuleOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationRuleArgs) ToBucketServerSideEncryptionConfigurationRuleOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationRuleOutput) +} + +func (i BucketServerSideEncryptionConfigurationRuleArgs) ToBucketServerSideEncryptionConfigurationRulePtrOutput() BucketServerSideEncryptionConfigurationRulePtrOutput { + return i.ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationRuleArgs) ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationRuleOutput).ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(ctx) +} + +// BucketServerSideEncryptionConfigurationRulePtrInput is an input type that accepts BucketServerSideEncryptionConfigurationRuleArgs, BucketServerSideEncryptionConfigurationRulePtr and BucketServerSideEncryptionConfigurationRulePtrOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationRulePtrInput` via: +// +// BucketServerSideEncryptionConfigurationRuleArgs{...} +// +// or: +// +// nil +type BucketServerSideEncryptionConfigurationRulePtrInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationRulePtrOutput() BucketServerSideEncryptionConfigurationRulePtrOutput + ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationRulePtrOutput +} + +type bucketServerSideEncryptionConfigurationRulePtrType BucketServerSideEncryptionConfigurationRuleArgs + +func BucketServerSideEncryptionConfigurationRulePtr(v *BucketServerSideEncryptionConfigurationRuleArgs) BucketServerSideEncryptionConfigurationRulePtrInput { + return (*bucketServerSideEncryptionConfigurationRulePtrType)(v) +} + +func (*bucketServerSideEncryptionConfigurationRulePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (i *bucketServerSideEncryptionConfigurationRulePtrType) ToBucketServerSideEncryptionConfigurationRulePtrOutput() BucketServerSideEncryptionConfigurationRulePtrOutput { + return i.ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(context.Background()) +} + +func (i *bucketServerSideEncryptionConfigurationRulePtrType) ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationRulePtrOutput) +} + +type BucketServerSideEncryptionConfigurationRuleOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationRuleOutput) ToBucketServerSideEncryptionConfigurationRuleOutput() BucketServerSideEncryptionConfigurationRuleOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRuleOutput) ToBucketServerSideEncryptionConfigurationRuleOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRuleOutput) ToBucketServerSideEncryptionConfigurationRulePtrOutput() BucketServerSideEncryptionConfigurationRulePtrOutput { + return o.ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(context.Background()) +} + +func (o BucketServerSideEncryptionConfigurationRuleOutput) ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRulePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketServerSideEncryptionConfigurationRule) *BucketServerSideEncryptionConfigurationRule { + return &v + }).(BucketServerSideEncryptionConfigurationRulePtrOutput) +} + +// A single object for setting server-side encryption by default. (documented below) +func (o BucketServerSideEncryptionConfigurationRuleOutput) ApplyServerSideEncryptionByDefault() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationRule) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault { + return v.ApplyServerSideEncryptionByDefault + }).(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) +} + +// Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o BucketServerSideEncryptionConfigurationRuleOutput) BucketKeyEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationRule) *bool { return v.BucketKeyEnabled }).(pulumi.BoolPtrOutput) +} + +type BucketServerSideEncryptionConfigurationRulePtrOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationRulePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationRulePtrOutput) ToBucketServerSideEncryptionConfigurationRulePtrOutput() BucketServerSideEncryptionConfigurationRulePtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRulePtrOutput) ToBucketServerSideEncryptionConfigurationRulePtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRulePtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRulePtrOutput) Elem() BucketServerSideEncryptionConfigurationRuleOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationRule) BucketServerSideEncryptionConfigurationRule { + if v != nil { + return *v + } + var ret BucketServerSideEncryptionConfigurationRule + return ret + }).(BucketServerSideEncryptionConfigurationRuleOutput) +} + +// A single object for setting server-side encryption by default. (documented below) +func (o BucketServerSideEncryptionConfigurationRulePtrOutput) ApplyServerSideEncryptionByDefault() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationRule) *BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault { + if v == nil { + return nil + } + return &v.ApplyServerSideEncryptionByDefault + }).(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) +} + +// Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o BucketServerSideEncryptionConfigurationRulePtrOutput) BucketKeyEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationRule) *bool { + if v == nil { + return nil + } + return v.BucketKeyEnabled + }).(pulumi.BoolPtrOutput) +} + +type BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault struct { + // The AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. + KmsMasterKeyId *string `pulumi:"kmsMasterKeyId"` + // The server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms` + SseAlgorithm string `pulumi:"sseAlgorithm"` +} + +// BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput is an input type that accepts BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs and BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput` via: +// +// BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{...} +type BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput + ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput +} + +type BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs struct { + // The AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. + KmsMasterKeyId pulumi.StringPtrInput `pulumi:"kmsMasterKeyId"` + // The server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms` + SseAlgorithm pulumi.StringInput `pulumi:"sseAlgorithm"` +} + +func (BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return i.ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) +} + +func (i BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return i.ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput).ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx) +} + +// BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrInput is an input type that accepts BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs, BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtr and BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrInput` via: +// +// BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{...} +// +// or: +// +// nil +type BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput + ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput +} + +type bucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrType BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs + +func BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtr(v *BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrInput { + return (*bucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrType)(v) +} + +func (*bucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (i *bucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrType) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return i.ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Background()) +} + +func (i *bucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrType) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) +} + +type BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return o.ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Background()) +} + +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) *BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault { + return &v + }).(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) +} + +// The AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) KmsMasterKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) *string { + return v.KmsMasterKeyId + }).(pulumi.StringPtrOutput) +} + +// The server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms` +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) SseAlgorithm() pulumi.StringOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) string { + return v.SseAlgorithm + }).(pulumi.StringOutput) +} + +type BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) ToBucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) Elem() BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault { + if v != nil { + return *v + } + var ret BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault + return ret + }).(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) +} + +// The AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) KmsMasterKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) *string { + if v == nil { + return nil + } + return v.KmsMasterKeyId + }).(pulumi.StringPtrOutput) +} + +// The server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms` +func (o BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput) SseAlgorithm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) *string { + if v == nil { + return nil + } + return &v.SseAlgorithm + }).(pulumi.StringPtrOutput) +} + +type BucketServerSideEncryptionConfigurationV2Rule struct { + // Single object for setting server-side encryption by default. See below. + ApplyServerSideEncryptionByDefault *BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault `pulumi:"applyServerSideEncryptionByDefault"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` +} + +// BucketServerSideEncryptionConfigurationV2RuleInput is an input type that accepts BucketServerSideEncryptionConfigurationV2RuleArgs and BucketServerSideEncryptionConfigurationV2RuleOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2RuleInput` via: +// +// BucketServerSideEncryptionConfigurationV2RuleArgs{...} +type BucketServerSideEncryptionConfigurationV2RuleInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationV2RuleOutput() BucketServerSideEncryptionConfigurationV2RuleOutput + ToBucketServerSideEncryptionConfigurationV2RuleOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2RuleOutput +} + +type BucketServerSideEncryptionConfigurationV2RuleArgs struct { + // Single object for setting server-side encryption by default. See below. + ApplyServerSideEncryptionByDefault BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrInput `pulumi:"applyServerSideEncryptionByDefault"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolPtrInput `pulumi:"bucketKeyEnabled"` +} + +func (BucketServerSideEncryptionConfigurationV2RuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2Rule)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationV2RuleArgs) ToBucketServerSideEncryptionConfigurationV2RuleOutput() BucketServerSideEncryptionConfigurationV2RuleOutput { + return i.ToBucketServerSideEncryptionConfigurationV2RuleOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationV2RuleArgs) ToBucketServerSideEncryptionConfigurationV2RuleOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2RuleOutput) +} + +// BucketServerSideEncryptionConfigurationV2RuleArrayInput is an input type that accepts BucketServerSideEncryptionConfigurationV2RuleArray and BucketServerSideEncryptionConfigurationV2RuleArrayOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2RuleArrayInput` via: +// +// BucketServerSideEncryptionConfigurationV2RuleArray{ BucketServerSideEncryptionConfigurationV2RuleArgs{...} } +type BucketServerSideEncryptionConfigurationV2RuleArrayInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationV2RuleArrayOutput() BucketServerSideEncryptionConfigurationV2RuleArrayOutput + ToBucketServerSideEncryptionConfigurationV2RuleArrayOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2RuleArrayOutput +} + +type BucketServerSideEncryptionConfigurationV2RuleArray []BucketServerSideEncryptionConfigurationV2RuleInput + +func (BucketServerSideEncryptionConfigurationV2RuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketServerSideEncryptionConfigurationV2Rule)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationV2RuleArray) ToBucketServerSideEncryptionConfigurationV2RuleArrayOutput() BucketServerSideEncryptionConfigurationV2RuleArrayOutput { + return i.ToBucketServerSideEncryptionConfigurationV2RuleArrayOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationV2RuleArray) ToBucketServerSideEncryptionConfigurationV2RuleArrayOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2RuleArrayOutput) +} + +type BucketServerSideEncryptionConfigurationV2RuleOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationV2RuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2Rule)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationV2RuleOutput) ToBucketServerSideEncryptionConfigurationV2RuleOutput() BucketServerSideEncryptionConfigurationV2RuleOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2RuleOutput) ToBucketServerSideEncryptionConfigurationV2RuleOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleOutput { + return o +} + +// Single object for setting server-side encryption by default. See below. +func (o BucketServerSideEncryptionConfigurationV2RuleOutput) ApplyServerSideEncryptionByDefault() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationV2Rule) *BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault { + return v.ApplyServerSideEncryptionByDefault + }).(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) +} + +// Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o BucketServerSideEncryptionConfigurationV2RuleOutput) BucketKeyEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationV2Rule) *bool { return v.BucketKeyEnabled }).(pulumi.BoolPtrOutput) +} + +type BucketServerSideEncryptionConfigurationV2RuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationV2RuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketServerSideEncryptionConfigurationV2Rule)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationV2RuleArrayOutput) ToBucketServerSideEncryptionConfigurationV2RuleArrayOutput() BucketServerSideEncryptionConfigurationV2RuleArrayOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2RuleArrayOutput) ToBucketServerSideEncryptionConfigurationV2RuleArrayOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleArrayOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2RuleArrayOutput) Index(i pulumi.IntInput) BucketServerSideEncryptionConfigurationV2RuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketServerSideEncryptionConfigurationV2Rule { + return vs[0].([]BucketServerSideEncryptionConfigurationV2Rule)[vs[1].(int)] + }).(BucketServerSideEncryptionConfigurationV2RuleOutput) +} + +type BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault struct { + // AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. + KmsMasterKeyId *string `pulumi:"kmsMasterKeyId"` + // Server-side encryption algorithm to use. Valid values are `AES256`, `aws:kms`, and `aws:kms:dsse` + SseAlgorithm string `pulumi:"sseAlgorithm"` +} + +// BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultInput is an input type that accepts BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs and BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultInput` via: +// +// BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs{...} +type BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput + ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput +} + +type BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs struct { + // AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. + KmsMasterKeyId pulumi.StringPtrInput `pulumi:"kmsMasterKeyId"` + // Server-side encryption algorithm to use. Valid values are `AES256`, `aws:kms`, and `aws:kms:dsse` + SseAlgorithm pulumi.StringInput `pulumi:"sseAlgorithm"` +} + +func (BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (i BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput { + return i.ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) +} + +func (i BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return i.ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Background()) +} + +func (i BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput).ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx) +} + +// BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrInput is an input type that accepts BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs, BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtr and BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput values. +// You can construct a concrete instance of `BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrInput` via: +// +// BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs{...} +// +// or: +// +// nil +type BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrInput interface { + pulumi.Input + + ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput + ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput +} + +type bucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrType BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs + +func BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtr(v *BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrInput { + return (*bucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrType)(v) +} + +func (*bucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (i *bucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrType) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return i.ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Background()) +} + +func (i *bucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrType) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) +} + +type BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return o.ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(context.Background()) +} + +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault) *BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault { + return &v + }).(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) +} + +// AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) KmsMasterKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault) *string { + return v.KmsMasterKeyId + }).(pulumi.StringPtrOutput) +} + +// Server-side encryption algorithm to use. Valid values are `AES256`, `aws:kms`, and `aws:kms:dsse` +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) SseAlgorithm() pulumi.StringOutput { + return o.ApplyT(func(v BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault) string { + return v.SseAlgorithm + }).(pulumi.StringOutput) +} + +type BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput struct{ *pulumi.OutputState } + +func (BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) ToBucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutputWithContext(ctx context.Context) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput { + return o +} + +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) Elem() BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault) BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault { + if v != nil { + return *v + } + var ret BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault + return ret + }).(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput) +} + +// AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) KmsMasterKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault) *string { + if v == nil { + return nil + } + return v.KmsMasterKeyId + }).(pulumi.StringPtrOutput) +} + +// Server-side encryption algorithm to use. Valid values are `AES256`, `aws:kms`, and `aws:kms:dsse` +func (o BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput) SseAlgorithm() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefault) *string { + if v == nil { + return nil + } + return &v.SseAlgorithm + }).(pulumi.StringPtrOutput) +} + +type BucketV2CorsRule struct { + // List of headers allowed. + AllowedHeaders []string `pulumi:"allowedHeaders"` + // One or more HTTP methods that you allow the origin to execute. Can be `GET`, `PUT`, `POST`, `DELETE` or `HEAD`. + AllowedMethods []string `pulumi:"allowedMethods"` + // One or more origins you want customers to be able to access the bucket from. + AllowedOrigins []string `pulumi:"allowedOrigins"` + // One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript `XMLHttpRequest` object). + ExposeHeaders []string `pulumi:"exposeHeaders"` + // Specifies time in seconds that browser can cache the response for a preflight request. + MaxAgeSeconds *int `pulumi:"maxAgeSeconds"` +} + +// BucketV2CorsRuleInput is an input type that accepts BucketV2CorsRuleArgs and BucketV2CorsRuleOutput values. +// You can construct a concrete instance of `BucketV2CorsRuleInput` via: +// +// BucketV2CorsRuleArgs{...} +type BucketV2CorsRuleInput interface { + pulumi.Input + + ToBucketV2CorsRuleOutput() BucketV2CorsRuleOutput + ToBucketV2CorsRuleOutputWithContext(context.Context) BucketV2CorsRuleOutput +} + +type BucketV2CorsRuleArgs struct { + // List of headers allowed. + AllowedHeaders pulumi.StringArrayInput `pulumi:"allowedHeaders"` + // One or more HTTP methods that you allow the origin to execute. Can be `GET`, `PUT`, `POST`, `DELETE` or `HEAD`. + AllowedMethods pulumi.StringArrayInput `pulumi:"allowedMethods"` + // One or more origins you want customers to be able to access the bucket from. + AllowedOrigins pulumi.StringArrayInput `pulumi:"allowedOrigins"` + // One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript `XMLHttpRequest` object). + ExposeHeaders pulumi.StringArrayInput `pulumi:"exposeHeaders"` + // Specifies time in seconds that browser can cache the response for a preflight request. + MaxAgeSeconds pulumi.IntPtrInput `pulumi:"maxAgeSeconds"` +} + +func (BucketV2CorsRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2CorsRule)(nil)).Elem() +} + +func (i BucketV2CorsRuleArgs) ToBucketV2CorsRuleOutput() BucketV2CorsRuleOutput { + return i.ToBucketV2CorsRuleOutputWithContext(context.Background()) +} + +func (i BucketV2CorsRuleArgs) ToBucketV2CorsRuleOutputWithContext(ctx context.Context) BucketV2CorsRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2CorsRuleOutput) +} + +// BucketV2CorsRuleArrayInput is an input type that accepts BucketV2CorsRuleArray and BucketV2CorsRuleArrayOutput values. +// You can construct a concrete instance of `BucketV2CorsRuleArrayInput` via: +// +// BucketV2CorsRuleArray{ BucketV2CorsRuleArgs{...} } +type BucketV2CorsRuleArrayInput interface { + pulumi.Input + + ToBucketV2CorsRuleArrayOutput() BucketV2CorsRuleArrayOutput + ToBucketV2CorsRuleArrayOutputWithContext(context.Context) BucketV2CorsRuleArrayOutput +} + +type BucketV2CorsRuleArray []BucketV2CorsRuleInput + +func (BucketV2CorsRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2CorsRule)(nil)).Elem() +} + +func (i BucketV2CorsRuleArray) ToBucketV2CorsRuleArrayOutput() BucketV2CorsRuleArrayOutput { + return i.ToBucketV2CorsRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketV2CorsRuleArray) ToBucketV2CorsRuleArrayOutputWithContext(ctx context.Context) BucketV2CorsRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2CorsRuleArrayOutput) +} + +type BucketV2CorsRuleOutput struct{ *pulumi.OutputState } + +func (BucketV2CorsRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2CorsRule)(nil)).Elem() +} + +func (o BucketV2CorsRuleOutput) ToBucketV2CorsRuleOutput() BucketV2CorsRuleOutput { + return o +} + +func (o BucketV2CorsRuleOutput) ToBucketV2CorsRuleOutputWithContext(ctx context.Context) BucketV2CorsRuleOutput { + return o +} + +// List of headers allowed. +func (o BucketV2CorsRuleOutput) AllowedHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketV2CorsRule) []string { return v.AllowedHeaders }).(pulumi.StringArrayOutput) +} + +// One or more HTTP methods that you allow the origin to execute. Can be `GET`, `PUT`, `POST`, `DELETE` or `HEAD`. +func (o BucketV2CorsRuleOutput) AllowedMethods() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketV2CorsRule) []string { return v.AllowedMethods }).(pulumi.StringArrayOutput) +} + +// One or more origins you want customers to be able to access the bucket from. +func (o BucketV2CorsRuleOutput) AllowedOrigins() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketV2CorsRule) []string { return v.AllowedOrigins }).(pulumi.StringArrayOutput) +} + +// One or more headers in the response that you want customers to be able to access from their applications (for example, from a JavaScript `XMLHttpRequest` object). +func (o BucketV2CorsRuleOutput) ExposeHeaders() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketV2CorsRule) []string { return v.ExposeHeaders }).(pulumi.StringArrayOutput) +} + +// Specifies time in seconds that browser can cache the response for a preflight request. +func (o BucketV2CorsRuleOutput) MaxAgeSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2CorsRule) *int { return v.MaxAgeSeconds }).(pulumi.IntPtrOutput) +} + +type BucketV2CorsRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2CorsRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2CorsRule)(nil)).Elem() +} + +func (o BucketV2CorsRuleArrayOutput) ToBucketV2CorsRuleArrayOutput() BucketV2CorsRuleArrayOutput { + return o +} + +func (o BucketV2CorsRuleArrayOutput) ToBucketV2CorsRuleArrayOutputWithContext(ctx context.Context) BucketV2CorsRuleArrayOutput { + return o +} + +func (o BucketV2CorsRuleArrayOutput) Index(i pulumi.IntInput) BucketV2CorsRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2CorsRule { + return vs[0].([]BucketV2CorsRule)[vs[1].(int)] + }).(BucketV2CorsRuleOutput) +} + +type BucketV2Grant struct { + // Canonical user id to grant for. Used only when `type` is `CanonicalUser`. + Id *string `pulumi:"id"` + // List of permissions to apply for grantee. Valid values are `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. + Permissions []string `pulumi:"permissions"` + // Type of grantee to apply for. Valid values are `CanonicalUser` and `Group`. `AmazonCustomerByEmail` is not supported. + Type string `pulumi:"type"` + // Uri address to grant for. Used only when `type` is `Group`. + Uri *string `pulumi:"uri"` +} + +// BucketV2GrantInput is an input type that accepts BucketV2GrantArgs and BucketV2GrantOutput values. +// You can construct a concrete instance of `BucketV2GrantInput` via: +// +// BucketV2GrantArgs{...} +type BucketV2GrantInput interface { + pulumi.Input + + ToBucketV2GrantOutput() BucketV2GrantOutput + ToBucketV2GrantOutputWithContext(context.Context) BucketV2GrantOutput +} + +type BucketV2GrantArgs struct { + // Canonical user id to grant for. Used only when `type` is `CanonicalUser`. + Id pulumi.StringPtrInput `pulumi:"id"` + // List of permissions to apply for grantee. Valid values are `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. + Permissions pulumi.StringArrayInput `pulumi:"permissions"` + // Type of grantee to apply for. Valid values are `CanonicalUser` and `Group`. `AmazonCustomerByEmail` is not supported. + Type pulumi.StringInput `pulumi:"type"` + // Uri address to grant for. Used only when `type` is `Group`. + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (BucketV2GrantArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Grant)(nil)).Elem() +} + +func (i BucketV2GrantArgs) ToBucketV2GrantOutput() BucketV2GrantOutput { + return i.ToBucketV2GrantOutputWithContext(context.Background()) +} + +func (i BucketV2GrantArgs) ToBucketV2GrantOutputWithContext(ctx context.Context) BucketV2GrantOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2GrantOutput) +} + +// BucketV2GrantArrayInput is an input type that accepts BucketV2GrantArray and BucketV2GrantArrayOutput values. +// You can construct a concrete instance of `BucketV2GrantArrayInput` via: +// +// BucketV2GrantArray{ BucketV2GrantArgs{...} } +type BucketV2GrantArrayInput interface { + pulumi.Input + + ToBucketV2GrantArrayOutput() BucketV2GrantArrayOutput + ToBucketV2GrantArrayOutputWithContext(context.Context) BucketV2GrantArrayOutput +} + +type BucketV2GrantArray []BucketV2GrantInput + +func (BucketV2GrantArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Grant)(nil)).Elem() +} + +func (i BucketV2GrantArray) ToBucketV2GrantArrayOutput() BucketV2GrantArrayOutput { + return i.ToBucketV2GrantArrayOutputWithContext(context.Background()) +} + +func (i BucketV2GrantArray) ToBucketV2GrantArrayOutputWithContext(ctx context.Context) BucketV2GrantArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2GrantArrayOutput) +} + +type BucketV2GrantOutput struct{ *pulumi.OutputState } + +func (BucketV2GrantOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Grant)(nil)).Elem() +} + +func (o BucketV2GrantOutput) ToBucketV2GrantOutput() BucketV2GrantOutput { + return o +} + +func (o BucketV2GrantOutput) ToBucketV2GrantOutputWithContext(ctx context.Context) BucketV2GrantOutput { + return o +} + +// Canonical user id to grant for. Used only when `type` is `CanonicalUser`. +func (o BucketV2GrantOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2Grant) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// List of permissions to apply for grantee. Valid values are `READ`, `WRITE`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. +func (o BucketV2GrantOutput) Permissions() pulumi.StringArrayOutput { + return o.ApplyT(func(v BucketV2Grant) []string { return v.Permissions }).(pulumi.StringArrayOutput) +} + +// Type of grantee to apply for. Valid values are `CanonicalUser` and `Group`. `AmazonCustomerByEmail` is not supported. +func (o BucketV2GrantOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2Grant) string { return v.Type }).(pulumi.StringOutput) +} + +// Uri address to grant for. Used only when `type` is `Group`. +func (o BucketV2GrantOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2Grant) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type BucketV2GrantArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2GrantArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Grant)(nil)).Elem() +} + +func (o BucketV2GrantArrayOutput) ToBucketV2GrantArrayOutput() BucketV2GrantArrayOutput { + return o +} + +func (o BucketV2GrantArrayOutput) ToBucketV2GrantArrayOutputWithContext(ctx context.Context) BucketV2GrantArrayOutput { + return o +} + +func (o BucketV2GrantArrayOutput) Index(i pulumi.IntInput) BucketV2GrantOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2Grant { + return vs[0].([]BucketV2Grant)[vs[1].(int)] + }).(BucketV2GrantOutput) +} + +type BucketV2LifecycleRule struct { + // Specifies the number of days after initiating a multipart upload when the multipart upload must be completed. + AbortIncompleteMultipartUploadDays *int `pulumi:"abortIncompleteMultipartUploadDays"` + // Specifies lifecycle rule status. + Enabled bool `pulumi:"enabled"` + // Specifies a period in the object's expire. See Expiration below for details. + Expirations []BucketV2LifecycleRuleExpiration `pulumi:"expirations"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id *string `pulumi:"id"` + // Specifies when noncurrent object versions expire. See Noncurrent Version Expiration below for details. + NoncurrentVersionExpirations []BucketV2LifecycleRuleNoncurrentVersionExpiration `pulumi:"noncurrentVersionExpirations"` + // Specifies when noncurrent object versions transitions. See Noncurrent Version Transition below for details. + NoncurrentVersionTransitions []BucketV2LifecycleRuleNoncurrentVersionTransition `pulumi:"noncurrentVersionTransitions"` + // Object key prefix identifying one or more objects to which the rule applies. + Prefix *string `pulumi:"prefix"` + // Specifies object tags key and value. + Tags map[string]string `pulumi:"tags"` + // Specifies a period in the object's transitions. See Transition below for details. + Transitions []BucketV2LifecycleRuleTransition `pulumi:"transitions"` +} + +// BucketV2LifecycleRuleInput is an input type that accepts BucketV2LifecycleRuleArgs and BucketV2LifecycleRuleOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleInput` via: +// +// BucketV2LifecycleRuleArgs{...} +type BucketV2LifecycleRuleInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleOutput() BucketV2LifecycleRuleOutput + ToBucketV2LifecycleRuleOutputWithContext(context.Context) BucketV2LifecycleRuleOutput +} + +type BucketV2LifecycleRuleArgs struct { + // Specifies the number of days after initiating a multipart upload when the multipart upload must be completed. + AbortIncompleteMultipartUploadDays pulumi.IntPtrInput `pulumi:"abortIncompleteMultipartUploadDays"` + // Specifies lifecycle rule status. + Enabled pulumi.BoolInput `pulumi:"enabled"` + // Specifies a period in the object's expire. See Expiration below for details. + Expirations BucketV2LifecycleRuleExpirationArrayInput `pulumi:"expirations"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id pulumi.StringPtrInput `pulumi:"id"` + // Specifies when noncurrent object versions expire. See Noncurrent Version Expiration below for details. + NoncurrentVersionExpirations BucketV2LifecycleRuleNoncurrentVersionExpirationArrayInput `pulumi:"noncurrentVersionExpirations"` + // Specifies when noncurrent object versions transitions. See Noncurrent Version Transition below for details. + NoncurrentVersionTransitions BucketV2LifecycleRuleNoncurrentVersionTransitionArrayInput `pulumi:"noncurrentVersionTransitions"` + // Object key prefix identifying one or more objects to which the rule applies. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Specifies object tags key and value. + Tags pulumi.StringMapInput `pulumi:"tags"` + // Specifies a period in the object's transitions. See Transition below for details. + Transitions BucketV2LifecycleRuleTransitionArrayInput `pulumi:"transitions"` +} + +func (BucketV2LifecycleRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRule)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleArgs) ToBucketV2LifecycleRuleOutput() BucketV2LifecycleRuleOutput { + return i.ToBucketV2LifecycleRuleOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleArgs) ToBucketV2LifecycleRuleOutputWithContext(ctx context.Context) BucketV2LifecycleRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleOutput) +} + +// BucketV2LifecycleRuleArrayInput is an input type that accepts BucketV2LifecycleRuleArray and BucketV2LifecycleRuleArrayOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleArrayInput` via: +// +// BucketV2LifecycleRuleArray{ BucketV2LifecycleRuleArgs{...} } +type BucketV2LifecycleRuleArrayInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleArrayOutput() BucketV2LifecycleRuleArrayOutput + ToBucketV2LifecycleRuleArrayOutputWithContext(context.Context) BucketV2LifecycleRuleArrayOutput +} + +type BucketV2LifecycleRuleArray []BucketV2LifecycleRuleInput + +func (BucketV2LifecycleRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRule)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleArray) ToBucketV2LifecycleRuleArrayOutput() BucketV2LifecycleRuleArrayOutput { + return i.ToBucketV2LifecycleRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleArray) ToBucketV2LifecycleRuleArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleArrayOutput) +} + +type BucketV2LifecycleRuleOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRule)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleOutput) ToBucketV2LifecycleRuleOutput() BucketV2LifecycleRuleOutput { + return o +} + +func (o BucketV2LifecycleRuleOutput) ToBucketV2LifecycleRuleOutputWithContext(ctx context.Context) BucketV2LifecycleRuleOutput { + return o +} + +// Specifies the number of days after initiating a multipart upload when the multipart upload must be completed. +func (o BucketV2LifecycleRuleOutput) AbortIncompleteMultipartUploadDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) *int { return v.AbortIncompleteMultipartUploadDays }).(pulumi.IntPtrOutput) +} + +// Specifies lifecycle rule status. +func (o BucketV2LifecycleRuleOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +// Specifies a period in the object's expire. See Expiration below for details. +func (o BucketV2LifecycleRuleOutput) Expirations() BucketV2LifecycleRuleExpirationArrayOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) []BucketV2LifecycleRuleExpiration { return v.Expirations }).(BucketV2LifecycleRuleExpirationArrayOutput) +} + +// Unique identifier for the rule. Must be less than or equal to 255 characters in length. +func (o BucketV2LifecycleRuleOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Specifies when noncurrent object versions expire. See Noncurrent Version Expiration below for details. +func (o BucketV2LifecycleRuleOutput) NoncurrentVersionExpirations() BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) []BucketV2LifecycleRuleNoncurrentVersionExpiration { + return v.NoncurrentVersionExpirations + }).(BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput) +} + +// Specifies when noncurrent object versions transitions. See Noncurrent Version Transition below for details. +func (o BucketV2LifecycleRuleOutput) NoncurrentVersionTransitions() BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) []BucketV2LifecycleRuleNoncurrentVersionTransition { + return v.NoncurrentVersionTransitions + }).(BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput) +} + +// Object key prefix identifying one or more objects to which the rule applies. +func (o BucketV2LifecycleRuleOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Specifies object tags key and value. +func (o BucketV2LifecycleRuleOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// Specifies a period in the object's transitions. See Transition below for details. +func (o BucketV2LifecycleRuleOutput) Transitions() BucketV2LifecycleRuleTransitionArrayOutput { + return o.ApplyT(func(v BucketV2LifecycleRule) []BucketV2LifecycleRuleTransition { return v.Transitions }).(BucketV2LifecycleRuleTransitionArrayOutput) +} + +type BucketV2LifecycleRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRule)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleArrayOutput) ToBucketV2LifecycleRuleArrayOutput() BucketV2LifecycleRuleArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleArrayOutput) ToBucketV2LifecycleRuleArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleArrayOutput) Index(i pulumi.IntInput) BucketV2LifecycleRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2LifecycleRule { + return vs[0].([]BucketV2LifecycleRule)[vs[1].(int)] + }).(BucketV2LifecycleRuleOutput) +} + +type BucketV2LifecycleRuleExpiration struct { + // Specifies the date after which you want the corresponding action to take effect. + Date *string `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days *int `pulumi:"days"` + // On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Amazon S3 to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. + ExpiredObjectDeleteMarker *bool `pulumi:"expiredObjectDeleteMarker"` +} + +// BucketV2LifecycleRuleExpirationInput is an input type that accepts BucketV2LifecycleRuleExpirationArgs and BucketV2LifecycleRuleExpirationOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleExpirationInput` via: +// +// BucketV2LifecycleRuleExpirationArgs{...} +type BucketV2LifecycleRuleExpirationInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleExpirationOutput() BucketV2LifecycleRuleExpirationOutput + ToBucketV2LifecycleRuleExpirationOutputWithContext(context.Context) BucketV2LifecycleRuleExpirationOutput +} + +type BucketV2LifecycleRuleExpirationArgs struct { + // Specifies the date after which you want the corresponding action to take effect. + Date pulumi.StringPtrInput `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days pulumi.IntPtrInput `pulumi:"days"` + // On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Amazon S3 to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. + ExpiredObjectDeleteMarker pulumi.BoolPtrInput `pulumi:"expiredObjectDeleteMarker"` +} + +func (BucketV2LifecycleRuleExpirationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleExpiration)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleExpirationArgs) ToBucketV2LifecycleRuleExpirationOutput() BucketV2LifecycleRuleExpirationOutput { + return i.ToBucketV2LifecycleRuleExpirationOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleExpirationArgs) ToBucketV2LifecycleRuleExpirationOutputWithContext(ctx context.Context) BucketV2LifecycleRuleExpirationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleExpirationOutput) +} + +// BucketV2LifecycleRuleExpirationArrayInput is an input type that accepts BucketV2LifecycleRuleExpirationArray and BucketV2LifecycleRuleExpirationArrayOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleExpirationArrayInput` via: +// +// BucketV2LifecycleRuleExpirationArray{ BucketV2LifecycleRuleExpirationArgs{...} } +type BucketV2LifecycleRuleExpirationArrayInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleExpirationArrayOutput() BucketV2LifecycleRuleExpirationArrayOutput + ToBucketV2LifecycleRuleExpirationArrayOutputWithContext(context.Context) BucketV2LifecycleRuleExpirationArrayOutput +} + +type BucketV2LifecycleRuleExpirationArray []BucketV2LifecycleRuleExpirationInput + +func (BucketV2LifecycleRuleExpirationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleExpiration)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleExpirationArray) ToBucketV2LifecycleRuleExpirationArrayOutput() BucketV2LifecycleRuleExpirationArrayOutput { + return i.ToBucketV2LifecycleRuleExpirationArrayOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleExpirationArray) ToBucketV2LifecycleRuleExpirationArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleExpirationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleExpirationArrayOutput) +} + +type BucketV2LifecycleRuleExpirationOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleExpirationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleExpiration)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleExpirationOutput) ToBucketV2LifecycleRuleExpirationOutput() BucketV2LifecycleRuleExpirationOutput { + return o +} + +func (o BucketV2LifecycleRuleExpirationOutput) ToBucketV2LifecycleRuleExpirationOutputWithContext(ctx context.Context) BucketV2LifecycleRuleExpirationOutput { + return o +} + +// Specifies the date after which you want the corresponding action to take effect. +func (o BucketV2LifecycleRuleExpirationOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleExpiration) *string { return v.Date }).(pulumi.StringPtrOutput) +} + +// Specifies the number of days after object creation when the specific rule action takes effect. +func (o BucketV2LifecycleRuleExpirationOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleExpiration) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// On a versioned bucket (versioning-enabled or versioning-suspended bucket), you can add this element in the lifecycle configuration to direct Amazon S3 to delete expired object delete markers. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. +func (o BucketV2LifecycleRuleExpirationOutput) ExpiredObjectDeleteMarker() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleExpiration) *bool { return v.ExpiredObjectDeleteMarker }).(pulumi.BoolPtrOutput) +} + +type BucketV2LifecycleRuleExpirationArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleExpirationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleExpiration)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleExpirationArrayOutput) ToBucketV2LifecycleRuleExpirationArrayOutput() BucketV2LifecycleRuleExpirationArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleExpirationArrayOutput) ToBucketV2LifecycleRuleExpirationArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleExpirationArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleExpirationArrayOutput) Index(i pulumi.IntInput) BucketV2LifecycleRuleExpirationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2LifecycleRuleExpiration { + return vs[0].([]BucketV2LifecycleRuleExpiration)[vs[1].(int)] + }).(BucketV2LifecycleRuleExpirationOutput) +} + +type BucketV2LifecycleRuleNoncurrentVersionExpiration struct { + // Specifies the number of days noncurrent object versions expire. + Days *int `pulumi:"days"` +} + +// BucketV2LifecycleRuleNoncurrentVersionExpirationInput is an input type that accepts BucketV2LifecycleRuleNoncurrentVersionExpirationArgs and BucketV2LifecycleRuleNoncurrentVersionExpirationOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleNoncurrentVersionExpirationInput` via: +// +// BucketV2LifecycleRuleNoncurrentVersionExpirationArgs{...} +type BucketV2LifecycleRuleNoncurrentVersionExpirationInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleNoncurrentVersionExpirationOutput() BucketV2LifecycleRuleNoncurrentVersionExpirationOutput + ToBucketV2LifecycleRuleNoncurrentVersionExpirationOutputWithContext(context.Context) BucketV2LifecycleRuleNoncurrentVersionExpirationOutput +} + +type BucketV2LifecycleRuleNoncurrentVersionExpirationArgs struct { + // Specifies the number of days noncurrent object versions expire. + Days pulumi.IntPtrInput `pulumi:"days"` +} + +func (BucketV2LifecycleRuleNoncurrentVersionExpirationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleNoncurrentVersionExpirationArgs) ToBucketV2LifecycleRuleNoncurrentVersionExpirationOutput() BucketV2LifecycleRuleNoncurrentVersionExpirationOutput { + return i.ToBucketV2LifecycleRuleNoncurrentVersionExpirationOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleNoncurrentVersionExpirationArgs) ToBucketV2LifecycleRuleNoncurrentVersionExpirationOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionExpirationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleNoncurrentVersionExpirationOutput) +} + +// BucketV2LifecycleRuleNoncurrentVersionExpirationArrayInput is an input type that accepts BucketV2LifecycleRuleNoncurrentVersionExpirationArray and BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleNoncurrentVersionExpirationArrayInput` via: +// +// BucketV2LifecycleRuleNoncurrentVersionExpirationArray{ BucketV2LifecycleRuleNoncurrentVersionExpirationArgs{...} } +type BucketV2LifecycleRuleNoncurrentVersionExpirationArrayInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput() BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput + ToBucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutputWithContext(context.Context) BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput +} + +type BucketV2LifecycleRuleNoncurrentVersionExpirationArray []BucketV2LifecycleRuleNoncurrentVersionExpirationInput + +func (BucketV2LifecycleRuleNoncurrentVersionExpirationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleNoncurrentVersionExpirationArray) ToBucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput() BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput { + return i.ToBucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleNoncurrentVersionExpirationArray) ToBucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput) +} + +type BucketV2LifecycleRuleNoncurrentVersionExpirationOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleNoncurrentVersionExpirationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleNoncurrentVersionExpirationOutput) ToBucketV2LifecycleRuleNoncurrentVersionExpirationOutput() BucketV2LifecycleRuleNoncurrentVersionExpirationOutput { + return o +} + +func (o BucketV2LifecycleRuleNoncurrentVersionExpirationOutput) ToBucketV2LifecycleRuleNoncurrentVersionExpirationOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionExpirationOutput { + return o +} + +// Specifies the number of days noncurrent object versions expire. +func (o BucketV2LifecycleRuleNoncurrentVersionExpirationOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleNoncurrentVersionExpiration) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +type BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleNoncurrentVersionExpiration)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput) ToBucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput() BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput) ToBucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput) Index(i pulumi.IntInput) BucketV2LifecycleRuleNoncurrentVersionExpirationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2LifecycleRuleNoncurrentVersionExpiration { + return vs[0].([]BucketV2LifecycleRuleNoncurrentVersionExpiration)[vs[1].(int)] + }).(BucketV2LifecycleRuleNoncurrentVersionExpirationOutput) +} + +type BucketV2LifecycleRuleNoncurrentVersionTransition struct { + // Specifies the number of days noncurrent object versions transition. + Days *int `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass string `pulumi:"storageClass"` +} + +// BucketV2LifecycleRuleNoncurrentVersionTransitionInput is an input type that accepts BucketV2LifecycleRuleNoncurrentVersionTransitionArgs and BucketV2LifecycleRuleNoncurrentVersionTransitionOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleNoncurrentVersionTransitionInput` via: +// +// BucketV2LifecycleRuleNoncurrentVersionTransitionArgs{...} +type BucketV2LifecycleRuleNoncurrentVersionTransitionInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleNoncurrentVersionTransitionOutput() BucketV2LifecycleRuleNoncurrentVersionTransitionOutput + ToBucketV2LifecycleRuleNoncurrentVersionTransitionOutputWithContext(context.Context) BucketV2LifecycleRuleNoncurrentVersionTransitionOutput +} + +type BucketV2LifecycleRuleNoncurrentVersionTransitionArgs struct { + // Specifies the number of days noncurrent object versions transition. + Days pulumi.IntPtrInput `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass pulumi.StringInput `pulumi:"storageClass"` +} + +func (BucketV2LifecycleRuleNoncurrentVersionTransitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleNoncurrentVersionTransitionArgs) ToBucketV2LifecycleRuleNoncurrentVersionTransitionOutput() BucketV2LifecycleRuleNoncurrentVersionTransitionOutput { + return i.ToBucketV2LifecycleRuleNoncurrentVersionTransitionOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleNoncurrentVersionTransitionArgs) ToBucketV2LifecycleRuleNoncurrentVersionTransitionOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionTransitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleNoncurrentVersionTransitionOutput) +} + +// BucketV2LifecycleRuleNoncurrentVersionTransitionArrayInput is an input type that accepts BucketV2LifecycleRuleNoncurrentVersionTransitionArray and BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleNoncurrentVersionTransitionArrayInput` via: +// +// BucketV2LifecycleRuleNoncurrentVersionTransitionArray{ BucketV2LifecycleRuleNoncurrentVersionTransitionArgs{...} } +type BucketV2LifecycleRuleNoncurrentVersionTransitionArrayInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput() BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput + ToBucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(context.Context) BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput +} + +type BucketV2LifecycleRuleNoncurrentVersionTransitionArray []BucketV2LifecycleRuleNoncurrentVersionTransitionInput + +func (BucketV2LifecycleRuleNoncurrentVersionTransitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleNoncurrentVersionTransitionArray) ToBucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput() BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput { + return i.ToBucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleNoncurrentVersionTransitionArray) ToBucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput) +} + +type BucketV2LifecycleRuleNoncurrentVersionTransitionOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleNoncurrentVersionTransitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleNoncurrentVersionTransitionOutput) ToBucketV2LifecycleRuleNoncurrentVersionTransitionOutput() BucketV2LifecycleRuleNoncurrentVersionTransitionOutput { + return o +} + +func (o BucketV2LifecycleRuleNoncurrentVersionTransitionOutput) ToBucketV2LifecycleRuleNoncurrentVersionTransitionOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionTransitionOutput { + return o +} + +// Specifies the number of days noncurrent object versions transition. +func (o BucketV2LifecycleRuleNoncurrentVersionTransitionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleNoncurrentVersionTransition) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. +func (o BucketV2LifecycleRuleNoncurrentVersionTransitionOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleNoncurrentVersionTransition) string { return v.StorageClass }).(pulumi.StringOutput) +} + +type BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleNoncurrentVersionTransition)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput) ToBucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput() BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput) ToBucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput) Index(i pulumi.IntInput) BucketV2LifecycleRuleNoncurrentVersionTransitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2LifecycleRuleNoncurrentVersionTransition { + return vs[0].([]BucketV2LifecycleRuleNoncurrentVersionTransition)[vs[1].(int)] + }).(BucketV2LifecycleRuleNoncurrentVersionTransitionOutput) +} + +type BucketV2LifecycleRuleTransition struct { + // Specifies the date after which you want the corresponding action to take effect. + Date *string `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days *int `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass string `pulumi:"storageClass"` +} + +// BucketV2LifecycleRuleTransitionInput is an input type that accepts BucketV2LifecycleRuleTransitionArgs and BucketV2LifecycleRuleTransitionOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleTransitionInput` via: +// +// BucketV2LifecycleRuleTransitionArgs{...} +type BucketV2LifecycleRuleTransitionInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleTransitionOutput() BucketV2LifecycleRuleTransitionOutput + ToBucketV2LifecycleRuleTransitionOutputWithContext(context.Context) BucketV2LifecycleRuleTransitionOutput +} + +type BucketV2LifecycleRuleTransitionArgs struct { + // Specifies the date after which you want the corresponding action to take effect. + Date pulumi.StringPtrInput `pulumi:"date"` + // Specifies the number of days after object creation when the specific rule action takes effect. + Days pulumi.IntPtrInput `pulumi:"days"` + // Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. + StorageClass pulumi.StringInput `pulumi:"storageClass"` +} + +func (BucketV2LifecycleRuleTransitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleTransition)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleTransitionArgs) ToBucketV2LifecycleRuleTransitionOutput() BucketV2LifecycleRuleTransitionOutput { + return i.ToBucketV2LifecycleRuleTransitionOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleTransitionArgs) ToBucketV2LifecycleRuleTransitionOutputWithContext(ctx context.Context) BucketV2LifecycleRuleTransitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleTransitionOutput) +} + +// BucketV2LifecycleRuleTransitionArrayInput is an input type that accepts BucketV2LifecycleRuleTransitionArray and BucketV2LifecycleRuleTransitionArrayOutput values. +// You can construct a concrete instance of `BucketV2LifecycleRuleTransitionArrayInput` via: +// +// BucketV2LifecycleRuleTransitionArray{ BucketV2LifecycleRuleTransitionArgs{...} } +type BucketV2LifecycleRuleTransitionArrayInput interface { + pulumi.Input + + ToBucketV2LifecycleRuleTransitionArrayOutput() BucketV2LifecycleRuleTransitionArrayOutput + ToBucketV2LifecycleRuleTransitionArrayOutputWithContext(context.Context) BucketV2LifecycleRuleTransitionArrayOutput +} + +type BucketV2LifecycleRuleTransitionArray []BucketV2LifecycleRuleTransitionInput + +func (BucketV2LifecycleRuleTransitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleTransition)(nil)).Elem() +} + +func (i BucketV2LifecycleRuleTransitionArray) ToBucketV2LifecycleRuleTransitionArrayOutput() BucketV2LifecycleRuleTransitionArrayOutput { + return i.ToBucketV2LifecycleRuleTransitionArrayOutputWithContext(context.Background()) +} + +func (i BucketV2LifecycleRuleTransitionArray) ToBucketV2LifecycleRuleTransitionArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleTransitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LifecycleRuleTransitionArrayOutput) +} + +type BucketV2LifecycleRuleTransitionOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleTransitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2LifecycleRuleTransition)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleTransitionOutput) ToBucketV2LifecycleRuleTransitionOutput() BucketV2LifecycleRuleTransitionOutput { + return o +} + +func (o BucketV2LifecycleRuleTransitionOutput) ToBucketV2LifecycleRuleTransitionOutputWithContext(ctx context.Context) BucketV2LifecycleRuleTransitionOutput { + return o +} + +// Specifies the date after which you want the corresponding action to take effect. +func (o BucketV2LifecycleRuleTransitionOutput) Date() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleTransition) *string { return v.Date }).(pulumi.StringPtrOutput) +} + +// Specifies the number of days after object creation when the specific rule action takes effect. +func (o BucketV2LifecycleRuleTransitionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleTransition) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Specifies the Amazon S3 [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Transition.html#AmazonS3-Type-Transition-StorageClass) to which you want the object to transition. +func (o BucketV2LifecycleRuleTransitionOutput) StorageClass() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2LifecycleRuleTransition) string { return v.StorageClass }).(pulumi.StringOutput) +} + +type BucketV2LifecycleRuleTransitionArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2LifecycleRuleTransitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2LifecycleRuleTransition)(nil)).Elem() +} + +func (o BucketV2LifecycleRuleTransitionArrayOutput) ToBucketV2LifecycleRuleTransitionArrayOutput() BucketV2LifecycleRuleTransitionArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleTransitionArrayOutput) ToBucketV2LifecycleRuleTransitionArrayOutputWithContext(ctx context.Context) BucketV2LifecycleRuleTransitionArrayOutput { + return o +} + +func (o BucketV2LifecycleRuleTransitionArrayOutput) Index(i pulumi.IntInput) BucketV2LifecycleRuleTransitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2LifecycleRuleTransition { + return vs[0].([]BucketV2LifecycleRuleTransition)[vs[1].(int)] + }).(BucketV2LifecycleRuleTransitionOutput) +} + +type BucketV2Logging struct { + // Name of the bucket that will receive the log objects. + TargetBucket string `pulumi:"targetBucket"` + // To specify a key prefix for log objects. + TargetPrefix *string `pulumi:"targetPrefix"` +} + +// BucketV2LoggingInput is an input type that accepts BucketV2LoggingArgs and BucketV2LoggingOutput values. +// You can construct a concrete instance of `BucketV2LoggingInput` via: +// +// BucketV2LoggingArgs{...} +type BucketV2LoggingInput interface { + pulumi.Input + + ToBucketV2LoggingOutput() BucketV2LoggingOutput + ToBucketV2LoggingOutputWithContext(context.Context) BucketV2LoggingOutput +} + +type BucketV2LoggingArgs struct { + // Name of the bucket that will receive the log objects. + TargetBucket pulumi.StringInput `pulumi:"targetBucket"` + // To specify a key prefix for log objects. + TargetPrefix pulumi.StringPtrInput `pulumi:"targetPrefix"` +} + +func (BucketV2LoggingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Logging)(nil)).Elem() +} + +func (i BucketV2LoggingArgs) ToBucketV2LoggingOutput() BucketV2LoggingOutput { + return i.ToBucketV2LoggingOutputWithContext(context.Background()) +} + +func (i BucketV2LoggingArgs) ToBucketV2LoggingOutputWithContext(ctx context.Context) BucketV2LoggingOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LoggingOutput) +} + +// BucketV2LoggingArrayInput is an input type that accepts BucketV2LoggingArray and BucketV2LoggingArrayOutput values. +// You can construct a concrete instance of `BucketV2LoggingArrayInput` via: +// +// BucketV2LoggingArray{ BucketV2LoggingArgs{...} } +type BucketV2LoggingArrayInput interface { + pulumi.Input + + ToBucketV2LoggingArrayOutput() BucketV2LoggingArrayOutput + ToBucketV2LoggingArrayOutputWithContext(context.Context) BucketV2LoggingArrayOutput +} + +type BucketV2LoggingArray []BucketV2LoggingInput + +func (BucketV2LoggingArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Logging)(nil)).Elem() +} + +func (i BucketV2LoggingArray) ToBucketV2LoggingArrayOutput() BucketV2LoggingArrayOutput { + return i.ToBucketV2LoggingArrayOutputWithContext(context.Background()) +} + +func (i BucketV2LoggingArray) ToBucketV2LoggingArrayOutputWithContext(ctx context.Context) BucketV2LoggingArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2LoggingArrayOutput) +} + +type BucketV2LoggingOutput struct{ *pulumi.OutputState } + +func (BucketV2LoggingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Logging)(nil)).Elem() +} + +func (o BucketV2LoggingOutput) ToBucketV2LoggingOutput() BucketV2LoggingOutput { + return o +} + +func (o BucketV2LoggingOutput) ToBucketV2LoggingOutputWithContext(ctx context.Context) BucketV2LoggingOutput { + return o +} + +// Name of the bucket that will receive the log objects. +func (o BucketV2LoggingOutput) TargetBucket() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2Logging) string { return v.TargetBucket }).(pulumi.StringOutput) +} + +// To specify a key prefix for log objects. +func (o BucketV2LoggingOutput) TargetPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2Logging) *string { return v.TargetPrefix }).(pulumi.StringPtrOutput) +} + +type BucketV2LoggingArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2LoggingArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Logging)(nil)).Elem() +} + +func (o BucketV2LoggingArrayOutput) ToBucketV2LoggingArrayOutput() BucketV2LoggingArrayOutput { + return o +} + +func (o BucketV2LoggingArrayOutput) ToBucketV2LoggingArrayOutputWithContext(ctx context.Context) BucketV2LoggingArrayOutput { + return o +} + +func (o BucketV2LoggingArrayOutput) Index(i pulumi.IntInput) BucketV2LoggingOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2Logging { + return vs[0].([]BucketV2Logging)[vs[1].(int)] + }).(BucketV2LoggingOutput) +} + +type BucketV2ObjectLockConfiguration struct { + // Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. + // + // Deprecated: Use the top-level parameter objectLockEnabled instead + ObjectLockEnabled *string `pulumi:"objectLockEnabled"` + // Object Lock rule in place for this bucket (documented below). + // + // Deprecated: Use the s3.BucketObjectLockConfigurationV2 resource instead + Rules []BucketV2ObjectLockConfigurationRule `pulumi:"rules"` +} + +// BucketV2ObjectLockConfigurationInput is an input type that accepts BucketV2ObjectLockConfigurationArgs and BucketV2ObjectLockConfigurationOutput values. +// You can construct a concrete instance of `BucketV2ObjectLockConfigurationInput` via: +// +// BucketV2ObjectLockConfigurationArgs{...} +type BucketV2ObjectLockConfigurationInput interface { + pulumi.Input + + ToBucketV2ObjectLockConfigurationOutput() BucketV2ObjectLockConfigurationOutput + ToBucketV2ObjectLockConfigurationOutputWithContext(context.Context) BucketV2ObjectLockConfigurationOutput +} + +type BucketV2ObjectLockConfigurationArgs struct { + // Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. + // + // Deprecated: Use the top-level parameter objectLockEnabled instead + ObjectLockEnabled pulumi.StringPtrInput `pulumi:"objectLockEnabled"` + // Object Lock rule in place for this bucket (documented below). + // + // Deprecated: Use the s3.BucketObjectLockConfigurationV2 resource instead + Rules BucketV2ObjectLockConfigurationRuleArrayInput `pulumi:"rules"` +} + +func (BucketV2ObjectLockConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ObjectLockConfiguration)(nil)).Elem() +} + +func (i BucketV2ObjectLockConfigurationArgs) ToBucketV2ObjectLockConfigurationOutput() BucketV2ObjectLockConfigurationOutput { + return i.ToBucketV2ObjectLockConfigurationOutputWithContext(context.Background()) +} + +func (i BucketV2ObjectLockConfigurationArgs) ToBucketV2ObjectLockConfigurationOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ObjectLockConfigurationOutput) +} + +func (i BucketV2ObjectLockConfigurationArgs) ToBucketV2ObjectLockConfigurationPtrOutput() BucketV2ObjectLockConfigurationPtrOutput { + return i.ToBucketV2ObjectLockConfigurationPtrOutputWithContext(context.Background()) +} + +func (i BucketV2ObjectLockConfigurationArgs) ToBucketV2ObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ObjectLockConfigurationOutput).ToBucketV2ObjectLockConfigurationPtrOutputWithContext(ctx) +} + +// BucketV2ObjectLockConfigurationPtrInput is an input type that accepts BucketV2ObjectLockConfigurationArgs, BucketV2ObjectLockConfigurationPtr and BucketV2ObjectLockConfigurationPtrOutput values. +// You can construct a concrete instance of `BucketV2ObjectLockConfigurationPtrInput` via: +// +// BucketV2ObjectLockConfigurationArgs{...} +// +// or: +// +// nil +type BucketV2ObjectLockConfigurationPtrInput interface { + pulumi.Input + + ToBucketV2ObjectLockConfigurationPtrOutput() BucketV2ObjectLockConfigurationPtrOutput + ToBucketV2ObjectLockConfigurationPtrOutputWithContext(context.Context) BucketV2ObjectLockConfigurationPtrOutput +} + +type bucketV2ObjectLockConfigurationPtrType BucketV2ObjectLockConfigurationArgs + +func BucketV2ObjectLockConfigurationPtr(v *BucketV2ObjectLockConfigurationArgs) BucketV2ObjectLockConfigurationPtrInput { + return (*bucketV2ObjectLockConfigurationPtrType)(v) +} + +func (*bucketV2ObjectLockConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketV2ObjectLockConfiguration)(nil)).Elem() +} + +func (i *bucketV2ObjectLockConfigurationPtrType) ToBucketV2ObjectLockConfigurationPtrOutput() BucketV2ObjectLockConfigurationPtrOutput { + return i.ToBucketV2ObjectLockConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *bucketV2ObjectLockConfigurationPtrType) ToBucketV2ObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ObjectLockConfigurationPtrOutput) +} + +type BucketV2ObjectLockConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketV2ObjectLockConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ObjectLockConfiguration)(nil)).Elem() +} + +func (o BucketV2ObjectLockConfigurationOutput) ToBucketV2ObjectLockConfigurationOutput() BucketV2ObjectLockConfigurationOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationOutput) ToBucketV2ObjectLockConfigurationOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationOutput) ToBucketV2ObjectLockConfigurationPtrOutput() BucketV2ObjectLockConfigurationPtrOutput { + return o.ToBucketV2ObjectLockConfigurationPtrOutputWithContext(context.Background()) +} + +func (o BucketV2ObjectLockConfigurationOutput) ToBucketV2ObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketV2ObjectLockConfiguration) *BucketV2ObjectLockConfiguration { + return &v + }).(BucketV2ObjectLockConfigurationPtrOutput) +} + +// Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. +// +// Deprecated: Use the top-level parameter objectLockEnabled instead +func (o BucketV2ObjectLockConfigurationOutput) ObjectLockEnabled() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ObjectLockConfiguration) *string { return v.ObjectLockEnabled }).(pulumi.StringPtrOutput) +} + +// Object Lock rule in place for this bucket (documented below). +// +// Deprecated: Use the s3.BucketObjectLockConfigurationV2 resource instead +func (o BucketV2ObjectLockConfigurationOutput) Rules() BucketV2ObjectLockConfigurationRuleArrayOutput { + return o.ApplyT(func(v BucketV2ObjectLockConfiguration) []BucketV2ObjectLockConfigurationRule { return v.Rules }).(BucketV2ObjectLockConfigurationRuleArrayOutput) +} + +type BucketV2ObjectLockConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (BucketV2ObjectLockConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketV2ObjectLockConfiguration)(nil)).Elem() +} + +func (o BucketV2ObjectLockConfigurationPtrOutput) ToBucketV2ObjectLockConfigurationPtrOutput() BucketV2ObjectLockConfigurationPtrOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationPtrOutput) ToBucketV2ObjectLockConfigurationPtrOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationPtrOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationPtrOutput) Elem() BucketV2ObjectLockConfigurationOutput { + return o.ApplyT(func(v *BucketV2ObjectLockConfiguration) BucketV2ObjectLockConfiguration { + if v != nil { + return *v + } + var ret BucketV2ObjectLockConfiguration + return ret + }).(BucketV2ObjectLockConfigurationOutput) +} + +// Indicates whether this bucket has an Object Lock configuration enabled. Valid values are `true` or `false`. This argument is not supported in all regions or partitions. +// +// Deprecated: Use the top-level parameter objectLockEnabled instead +func (o BucketV2ObjectLockConfigurationPtrOutput) ObjectLockEnabled() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketV2ObjectLockConfiguration) *string { + if v == nil { + return nil + } + return v.ObjectLockEnabled + }).(pulumi.StringPtrOutput) +} + +// Object Lock rule in place for this bucket (documented below). +// +// Deprecated: Use the s3.BucketObjectLockConfigurationV2 resource instead +func (o BucketV2ObjectLockConfigurationPtrOutput) Rules() BucketV2ObjectLockConfigurationRuleArrayOutput { + return o.ApplyT(func(v *BucketV2ObjectLockConfiguration) []BucketV2ObjectLockConfigurationRule { + if v == nil { + return nil + } + return v.Rules + }).(BucketV2ObjectLockConfigurationRuleArrayOutput) +} + +type BucketV2ObjectLockConfigurationRule struct { + // Default retention period that you want to apply to new objects placed in this bucket (documented below). + DefaultRetentions []BucketV2ObjectLockConfigurationRuleDefaultRetention `pulumi:"defaultRetentions"` +} + +// BucketV2ObjectLockConfigurationRuleInput is an input type that accepts BucketV2ObjectLockConfigurationRuleArgs and BucketV2ObjectLockConfigurationRuleOutput values. +// You can construct a concrete instance of `BucketV2ObjectLockConfigurationRuleInput` via: +// +// BucketV2ObjectLockConfigurationRuleArgs{...} +type BucketV2ObjectLockConfigurationRuleInput interface { + pulumi.Input + + ToBucketV2ObjectLockConfigurationRuleOutput() BucketV2ObjectLockConfigurationRuleOutput + ToBucketV2ObjectLockConfigurationRuleOutputWithContext(context.Context) BucketV2ObjectLockConfigurationRuleOutput +} + +type BucketV2ObjectLockConfigurationRuleArgs struct { + // Default retention period that you want to apply to new objects placed in this bucket (documented below). + DefaultRetentions BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayInput `pulumi:"defaultRetentions"` +} + +func (BucketV2ObjectLockConfigurationRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ObjectLockConfigurationRule)(nil)).Elem() +} + +func (i BucketV2ObjectLockConfigurationRuleArgs) ToBucketV2ObjectLockConfigurationRuleOutput() BucketV2ObjectLockConfigurationRuleOutput { + return i.ToBucketV2ObjectLockConfigurationRuleOutputWithContext(context.Background()) +} + +func (i BucketV2ObjectLockConfigurationRuleArgs) ToBucketV2ObjectLockConfigurationRuleOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ObjectLockConfigurationRuleOutput) +} + +// BucketV2ObjectLockConfigurationRuleArrayInput is an input type that accepts BucketV2ObjectLockConfigurationRuleArray and BucketV2ObjectLockConfigurationRuleArrayOutput values. +// You can construct a concrete instance of `BucketV2ObjectLockConfigurationRuleArrayInput` via: +// +// BucketV2ObjectLockConfigurationRuleArray{ BucketV2ObjectLockConfigurationRuleArgs{...} } +type BucketV2ObjectLockConfigurationRuleArrayInput interface { + pulumi.Input + + ToBucketV2ObjectLockConfigurationRuleArrayOutput() BucketV2ObjectLockConfigurationRuleArrayOutput + ToBucketV2ObjectLockConfigurationRuleArrayOutputWithContext(context.Context) BucketV2ObjectLockConfigurationRuleArrayOutput +} + +type BucketV2ObjectLockConfigurationRuleArray []BucketV2ObjectLockConfigurationRuleInput + +func (BucketV2ObjectLockConfigurationRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ObjectLockConfigurationRule)(nil)).Elem() +} + +func (i BucketV2ObjectLockConfigurationRuleArray) ToBucketV2ObjectLockConfigurationRuleArrayOutput() BucketV2ObjectLockConfigurationRuleArrayOutput { + return i.ToBucketV2ObjectLockConfigurationRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ObjectLockConfigurationRuleArray) ToBucketV2ObjectLockConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ObjectLockConfigurationRuleArrayOutput) +} + +type BucketV2ObjectLockConfigurationRuleOutput struct{ *pulumi.OutputState } + +func (BucketV2ObjectLockConfigurationRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ObjectLockConfigurationRule)(nil)).Elem() +} + +func (o BucketV2ObjectLockConfigurationRuleOutput) ToBucketV2ObjectLockConfigurationRuleOutput() BucketV2ObjectLockConfigurationRuleOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationRuleOutput) ToBucketV2ObjectLockConfigurationRuleOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleOutput { + return o +} + +// Default retention period that you want to apply to new objects placed in this bucket (documented below). +func (o BucketV2ObjectLockConfigurationRuleOutput) DefaultRetentions() BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput { + return o.ApplyT(func(v BucketV2ObjectLockConfigurationRule) []BucketV2ObjectLockConfigurationRuleDefaultRetention { + return v.DefaultRetentions + }).(BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput) +} + +type BucketV2ObjectLockConfigurationRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ObjectLockConfigurationRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ObjectLockConfigurationRule)(nil)).Elem() +} + +func (o BucketV2ObjectLockConfigurationRuleArrayOutput) ToBucketV2ObjectLockConfigurationRuleArrayOutput() BucketV2ObjectLockConfigurationRuleArrayOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationRuleArrayOutput) ToBucketV2ObjectLockConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleArrayOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationRuleArrayOutput) Index(i pulumi.IntInput) BucketV2ObjectLockConfigurationRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ObjectLockConfigurationRule { + return vs[0].([]BucketV2ObjectLockConfigurationRule)[vs[1].(int)] + }).(BucketV2ObjectLockConfigurationRuleOutput) +} + +type BucketV2ObjectLockConfigurationRuleDefaultRetention struct { + // Number of days that you want to specify for the default retention period. + Days *int `pulumi:"days"` + // Default Object Lock retention mode you want to apply to new objects placed in this bucket. Valid values are `GOVERNANCE` and `COMPLIANCE`. + Mode string `pulumi:"mode"` + // Number of years that you want to specify for the default retention period. + Years *int `pulumi:"years"` +} + +// BucketV2ObjectLockConfigurationRuleDefaultRetentionInput is an input type that accepts BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs and BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput values. +// You can construct a concrete instance of `BucketV2ObjectLockConfigurationRuleDefaultRetentionInput` via: +// +// BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs{...} +type BucketV2ObjectLockConfigurationRuleDefaultRetentionInput interface { + pulumi.Input + + ToBucketV2ObjectLockConfigurationRuleDefaultRetentionOutput() BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput + ToBucketV2ObjectLockConfigurationRuleDefaultRetentionOutputWithContext(context.Context) BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput +} + +type BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs struct { + // Number of days that you want to specify for the default retention period. + Days pulumi.IntPtrInput `pulumi:"days"` + // Default Object Lock retention mode you want to apply to new objects placed in this bucket. Valid values are `GOVERNANCE` and `COMPLIANCE`. + Mode pulumi.StringInput `pulumi:"mode"` + // Number of years that you want to specify for the default retention period. + Years pulumi.IntPtrInput `pulumi:"years"` +} + +func (BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (i BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionOutput() BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput { + return i.ToBucketV2ObjectLockConfigurationRuleDefaultRetentionOutputWithContext(context.Background()) +} + +func (i BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) +} + +// BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayInput is an input type that accepts BucketV2ObjectLockConfigurationRuleDefaultRetentionArray and BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput values. +// You can construct a concrete instance of `BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayInput` via: +// +// BucketV2ObjectLockConfigurationRuleDefaultRetentionArray{ BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs{...} } +type BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayInput interface { + pulumi.Input + + ToBucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput() BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput + ToBucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutputWithContext(context.Context) BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput +} + +type BucketV2ObjectLockConfigurationRuleDefaultRetentionArray []BucketV2ObjectLockConfigurationRuleDefaultRetentionInput + +func (BucketV2ObjectLockConfigurationRuleDefaultRetentionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (i BucketV2ObjectLockConfigurationRuleDefaultRetentionArray) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput() BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput { + return i.ToBucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ObjectLockConfigurationRuleDefaultRetentionArray) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput) +} + +type BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput struct{ *pulumi.OutputState } + +func (BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionOutput() BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput { + return o +} + +// Number of days that you want to specify for the default retention period. +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) Days() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2ObjectLockConfigurationRuleDefaultRetention) *int { return v.Days }).(pulumi.IntPtrOutput) +} + +// Default Object Lock retention mode you want to apply to new objects placed in this bucket. Valid values are `GOVERNANCE` and `COMPLIANCE`. +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) Mode() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2ObjectLockConfigurationRuleDefaultRetention) string { return v.Mode }).(pulumi.StringOutput) +} + +// Number of years that you want to specify for the default retention period. +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) Years() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2ObjectLockConfigurationRuleDefaultRetention) *int { return v.Years }).(pulumi.IntPtrOutput) +} + +type BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ObjectLockConfigurationRuleDefaultRetention)(nil)).Elem() +} + +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput() BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput) ToBucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutputWithContext(ctx context.Context) BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput { + return o +} + +func (o BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput) Index(i pulumi.IntInput) BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ObjectLockConfigurationRuleDefaultRetention { + return vs[0].([]BucketV2ObjectLockConfigurationRuleDefaultRetention)[vs[1].(int)] + }).(BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput) +} + +type BucketV2ReplicationConfiguration struct { + // ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role string `pulumi:"role"` + // Specifies the rules managing the replication (documented below). + Rules []BucketV2ReplicationConfigurationRule `pulumi:"rules"` +} + +// BucketV2ReplicationConfigurationInput is an input type that accepts BucketV2ReplicationConfigurationArgs and BucketV2ReplicationConfigurationOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationInput` via: +// +// BucketV2ReplicationConfigurationArgs{...} +type BucketV2ReplicationConfigurationInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationOutput() BucketV2ReplicationConfigurationOutput + ToBucketV2ReplicationConfigurationOutputWithContext(context.Context) BucketV2ReplicationConfigurationOutput +} + +type BucketV2ReplicationConfigurationArgs struct { + // ARN of the IAM role for Amazon S3 to assume when replicating the objects. + Role pulumi.StringInput `pulumi:"role"` + // Specifies the rules managing the replication (documented below). + Rules BucketV2ReplicationConfigurationRuleArrayInput `pulumi:"rules"` +} + +func (BucketV2ReplicationConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfiguration)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationArgs) ToBucketV2ReplicationConfigurationOutput() BucketV2ReplicationConfigurationOutput { + return i.ToBucketV2ReplicationConfigurationOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationArgs) ToBucketV2ReplicationConfigurationOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationOutput) +} + +// BucketV2ReplicationConfigurationArrayInput is an input type that accepts BucketV2ReplicationConfigurationArray and BucketV2ReplicationConfigurationArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationArrayInput` via: +// +// BucketV2ReplicationConfigurationArray{ BucketV2ReplicationConfigurationArgs{...} } +type BucketV2ReplicationConfigurationArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationArrayOutput() BucketV2ReplicationConfigurationArrayOutput + ToBucketV2ReplicationConfigurationArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationArrayOutput +} + +type BucketV2ReplicationConfigurationArray []BucketV2ReplicationConfigurationInput + +func (BucketV2ReplicationConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfiguration)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationArray) ToBucketV2ReplicationConfigurationArrayOutput() BucketV2ReplicationConfigurationArrayOutput { + return i.ToBucketV2ReplicationConfigurationArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationArray) ToBucketV2ReplicationConfigurationArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationArrayOutput) +} + +type BucketV2ReplicationConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfiguration)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationOutput) ToBucketV2ReplicationConfigurationOutput() BucketV2ReplicationConfigurationOutput { + return o +} + +func (o BucketV2ReplicationConfigurationOutput) ToBucketV2ReplicationConfigurationOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationOutput { + return o +} + +// ARN of the IAM role for Amazon S3 to assume when replicating the objects. +func (o BucketV2ReplicationConfigurationOutput) Role() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2ReplicationConfiguration) string { return v.Role }).(pulumi.StringOutput) +} + +// Specifies the rules managing the replication (documented below). +func (o BucketV2ReplicationConfigurationOutput) Rules() BucketV2ReplicationConfigurationRuleArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfiguration) []BucketV2ReplicationConfigurationRule { return v.Rules }).(BucketV2ReplicationConfigurationRuleArrayOutput) +} + +type BucketV2ReplicationConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfiguration)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationArrayOutput) ToBucketV2ReplicationConfigurationArrayOutput() BucketV2ReplicationConfigurationArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationArrayOutput) ToBucketV2ReplicationConfigurationArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfiguration { + return vs[0].([]BucketV2ReplicationConfiguration)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationOutput) +} + +type BucketV2ReplicationConfigurationRule struct { + // Whether delete markers are replicated. The only valid value is `Enabled`. To disable, omit this argument. This argument is only valid with V2 replication configurations (i.e., when `filter` is used). + DeleteMarkerReplicationStatus *string `pulumi:"deleteMarkerReplicationStatus"` + // Specifies the destination for the rule (documented below). + Destinations []BucketV2ReplicationConfigurationRuleDestination `pulumi:"destinations"` + // Filter that identifies subset of objects to which the replication rule applies (documented below). + Filters []BucketV2ReplicationConfigurationRuleFilter `pulumi:"filters"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id *string `pulumi:"id"` + // Object keyname prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix *string `pulumi:"prefix"` + // Priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. + Priority *int `pulumi:"priority"` + // Specifies special object selection criteria (documented below). + SourceSelectionCriterias []BucketV2ReplicationConfigurationRuleSourceSelectionCriteria `pulumi:"sourceSelectionCriterias"` + // Status of the rule. Either `Enabled` or `Disabled`. The rule is ignored if status is not Enabled. + Status string `pulumi:"status"` +} + +// BucketV2ReplicationConfigurationRuleInput is an input type that accepts BucketV2ReplicationConfigurationRuleArgs and BucketV2ReplicationConfigurationRuleOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleInput` via: +// +// BucketV2ReplicationConfigurationRuleArgs{...} +type BucketV2ReplicationConfigurationRuleInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleOutput() BucketV2ReplicationConfigurationRuleOutput + ToBucketV2ReplicationConfigurationRuleOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleOutput +} + +type BucketV2ReplicationConfigurationRuleArgs struct { + // Whether delete markers are replicated. The only valid value is `Enabled`. To disable, omit this argument. This argument is only valid with V2 replication configurations (i.e., when `filter` is used). + DeleteMarkerReplicationStatus pulumi.StringPtrInput `pulumi:"deleteMarkerReplicationStatus"` + // Specifies the destination for the rule (documented below). + Destinations BucketV2ReplicationConfigurationRuleDestinationArrayInput `pulumi:"destinations"` + // Filter that identifies subset of objects to which the replication rule applies (documented below). + Filters BucketV2ReplicationConfigurationRuleFilterArrayInput `pulumi:"filters"` + // Unique identifier for the rule. Must be less than or equal to 255 characters in length. + Id pulumi.StringPtrInput `pulumi:"id"` + // Object keyname prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // Priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. + Priority pulumi.IntPtrInput `pulumi:"priority"` + // Specifies special object selection criteria (documented below). + SourceSelectionCriterias BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayInput `pulumi:"sourceSelectionCriterias"` + // Status of the rule. Either `Enabled` or `Disabled`. The rule is ignored if status is not Enabled. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketV2ReplicationConfigurationRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRule)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleArgs) ToBucketV2ReplicationConfigurationRuleOutput() BucketV2ReplicationConfigurationRuleOutput { + return i.ToBucketV2ReplicationConfigurationRuleOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleArgs) ToBucketV2ReplicationConfigurationRuleOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleOutput) +} + +// BucketV2ReplicationConfigurationRuleArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleArray and BucketV2ReplicationConfigurationRuleArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleArray{ BucketV2ReplicationConfigurationRuleArgs{...} } +type BucketV2ReplicationConfigurationRuleArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleArrayOutput() BucketV2ReplicationConfigurationRuleArrayOutput + ToBucketV2ReplicationConfigurationRuleArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleArrayOutput +} + +type BucketV2ReplicationConfigurationRuleArray []BucketV2ReplicationConfigurationRuleInput + +func (BucketV2ReplicationConfigurationRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRule)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleArray) ToBucketV2ReplicationConfigurationRuleArrayOutput() BucketV2ReplicationConfigurationRuleArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleArray) ToBucketV2ReplicationConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRule)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleOutput) ToBucketV2ReplicationConfigurationRuleOutput() BucketV2ReplicationConfigurationRuleOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleOutput) ToBucketV2ReplicationConfigurationRuleOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleOutput { + return o +} + +// Whether delete markers are replicated. The only valid value is `Enabled`. To disable, omit this argument. This argument is only valid with V2 replication configurations (i.e., when `filter` is used). +func (o BucketV2ReplicationConfigurationRuleOutput) DeleteMarkerReplicationStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) *string { return v.DeleteMarkerReplicationStatus }).(pulumi.StringPtrOutput) +} + +// Specifies the destination for the rule (documented below). +func (o BucketV2ReplicationConfigurationRuleOutput) Destinations() BucketV2ReplicationConfigurationRuleDestinationArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) []BucketV2ReplicationConfigurationRuleDestination { + return v.Destinations + }).(BucketV2ReplicationConfigurationRuleDestinationArrayOutput) +} + +// Filter that identifies subset of objects to which the replication rule applies (documented below). +func (o BucketV2ReplicationConfigurationRuleOutput) Filters() BucketV2ReplicationConfigurationRuleFilterArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) []BucketV2ReplicationConfigurationRuleFilter { + return v.Filters + }).(BucketV2ReplicationConfigurationRuleFilterArrayOutput) +} + +// Unique identifier for the rule. Must be less than or equal to 255 characters in length. +func (o BucketV2ReplicationConfigurationRuleOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// Object keyname prefix identifying one or more objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketV2ReplicationConfigurationRuleOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// Priority associated with the rule. Priority should only be set if `filter` is configured. If not provided, defaults to `0`. Priority must be unique between multiple rules. +func (o BucketV2ReplicationConfigurationRuleOutput) Priority() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) *int { return v.Priority }).(pulumi.IntPtrOutput) +} + +// Specifies special object selection criteria (documented below). +func (o BucketV2ReplicationConfigurationRuleOutput) SourceSelectionCriterias() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) []BucketV2ReplicationConfigurationRuleSourceSelectionCriteria { + return v.SourceSelectionCriterias + }).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput) +} + +// Status of the rule. Either `Enabled` or `Disabled`. The rule is ignored if status is not Enabled. +func (o BucketV2ReplicationConfigurationRuleOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRule) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketV2ReplicationConfigurationRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRule)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleArrayOutput) ToBucketV2ReplicationConfigurationRuleArrayOutput() BucketV2ReplicationConfigurationRuleArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleArrayOutput) ToBucketV2ReplicationConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRule { + return vs[0].([]BucketV2ReplicationConfigurationRule)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleOutput) +} + +type BucketV2ReplicationConfigurationRuleDestination struct { + // Specifies the overrides to use for object owners on replication (documented below). Must be used in conjunction with `accountId` owner override configuration. + AccessControlTranslations []BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation `pulumi:"accessControlTranslations"` + // Account ID to use for overriding the object owner on replication. Must be used in conjunction with `accessControlTranslation` override configuration. + AccountId *string `pulumi:"accountId"` + // ARN of the S3 bucket where you want Amazon S3 to store replicas of the object identified by the rule. + Bucket string `pulumi:"bucket"` + // Enables replication metrics (required for S3 RTC) (documented below). + Metrics []BucketV2ReplicationConfigurationRuleDestinationMetric `pulumi:"metrics"` + // Destination KMS encryption key ARN for SSE-KMS replication. Must be used in conjunction with + // `sseKmsEncryptedObjects` source selection criteria. + ReplicaKmsKeyId *string `pulumi:"replicaKmsKeyId"` + // Enables S3 Replication Time Control (S3 RTC) (documented below). + ReplicationTimes []BucketV2ReplicationConfigurationRuleDestinationReplicationTime `pulumi:"replicationTimes"` + // The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. + StorageClass *string `pulumi:"storageClass"` +} + +// BucketV2ReplicationConfigurationRuleDestinationInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationArgs and BucketV2ReplicationConfigurationRuleDestinationOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationArgs{...} +type BucketV2ReplicationConfigurationRuleDestinationInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationOutput() BucketV2ReplicationConfigurationRuleDestinationOutput + ToBucketV2ReplicationConfigurationRuleDestinationOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationArgs struct { + // Specifies the overrides to use for object owners on replication (documented below). Must be used in conjunction with `accountId` owner override configuration. + AccessControlTranslations BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayInput `pulumi:"accessControlTranslations"` + // Account ID to use for overriding the object owner on replication. Must be used in conjunction with `accessControlTranslation` override configuration. + AccountId pulumi.StringPtrInput `pulumi:"accountId"` + // ARN of the S3 bucket where you want Amazon S3 to store replicas of the object identified by the rule. + Bucket pulumi.StringInput `pulumi:"bucket"` + // Enables replication metrics (required for S3 RTC) (documented below). + Metrics BucketV2ReplicationConfigurationRuleDestinationMetricArrayInput `pulumi:"metrics"` + // Destination KMS encryption key ARN for SSE-KMS replication. Must be used in conjunction with + // `sseKmsEncryptedObjects` source selection criteria. + ReplicaKmsKeyId pulumi.StringPtrInput `pulumi:"replicaKmsKeyId"` + // Enables S3 Replication Time Control (S3 RTC) (documented below). + ReplicationTimes BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayInput `pulumi:"replicationTimes"` + // The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. + StorageClass pulumi.StringPtrInput `pulumi:"storageClass"` +} + +func (BucketV2ReplicationConfigurationRuleDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestination)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationArgs) ToBucketV2ReplicationConfigurationRuleDestinationOutput() BucketV2ReplicationConfigurationRuleDestinationOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationArgs) ToBucketV2ReplicationConfigurationRuleDestinationOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationOutput) +} + +// BucketV2ReplicationConfigurationRuleDestinationArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationArray and BucketV2ReplicationConfigurationRuleDestinationArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationArray{ BucketV2ReplicationConfigurationRuleDestinationArgs{...} } +type BucketV2ReplicationConfigurationRuleDestinationArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationArrayOutput() BucketV2ReplicationConfigurationRuleDestinationArrayOutput + ToBucketV2ReplicationConfigurationRuleDestinationArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationArrayOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationArray []BucketV2ReplicationConfigurationRuleDestinationInput + +func (BucketV2ReplicationConfigurationRuleDestinationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestination)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationArray) ToBucketV2ReplicationConfigurationRuleDestinationArrayOutput() BucketV2ReplicationConfigurationRuleDestinationArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationArray) ToBucketV2ReplicationConfigurationRuleDestinationArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestination)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) ToBucketV2ReplicationConfigurationRuleDestinationOutput() BucketV2ReplicationConfigurationRuleDestinationOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) ToBucketV2ReplicationConfigurationRuleDestinationOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationOutput { + return o +} + +// Specifies the overrides to use for object owners on replication (documented below). Must be used in conjunction with `accountId` owner override configuration. +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) AccessControlTranslations() BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestination) []BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation { + return v.AccessControlTranslations + }).(BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput) +} + +// Account ID to use for overriding the object owner on replication. Must be used in conjunction with `accessControlTranslation` override configuration. +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) AccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestination) *string { return v.AccountId }).(pulumi.StringPtrOutput) +} + +// ARN of the S3 bucket where you want Amazon S3 to store replicas of the object identified by the rule. +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) Bucket() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestination) string { return v.Bucket }).(pulumi.StringOutput) +} + +// Enables replication metrics (required for S3 RTC) (documented below). +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) Metrics() BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestination) []BucketV2ReplicationConfigurationRuleDestinationMetric { + return v.Metrics + }).(BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput) +} + +// Destination KMS encryption key ARN for SSE-KMS replication. Must be used in conjunction with +// `sseKmsEncryptedObjects` source selection criteria. +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) ReplicaKmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestination) *string { return v.ReplicaKmsKeyId }).(pulumi.StringPtrOutput) +} + +// Enables S3 Replication Time Control (S3 RTC) (documented below). +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) ReplicationTimes() BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestination) []BucketV2ReplicationConfigurationRuleDestinationReplicationTime { + return v.ReplicationTimes + }).(BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput) +} + +// The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica. +func (o BucketV2ReplicationConfigurationRuleDestinationOutput) StorageClass() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestination) *string { return v.StorageClass }).(pulumi.StringPtrOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestination)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationArrayOutput() BucketV2ReplicationConfigurationRuleDestinationArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleDestinationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRuleDestination { + return vs[0].([]BucketV2ReplicationConfigurationRuleDestination)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleDestinationOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation struct { + // Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html) in the Amazon S3 API Reference. The only valid value is `Destination`. + Owner string `pulumi:"owner"` +} + +// BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs and BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs{...} +type BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput() BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput + ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs struct { + // Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html) in the Amazon S3 API Reference. The only valid value is `Destination`. + Owner pulumi.StringInput `pulumi:"owner"` +} + +func (BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput() BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput) +} + +// BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArray and BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArray{ BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs{...} } +type BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput() BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput + ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArray []BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationInput + +func (BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArray) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput() BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArray) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput() BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return o +} + +// Specifies the replica ownership. For default and valid values, see [PUT bucket replication](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html) in the Amazon S3 API Reference. The only valid value is `Destination`. +func (o BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput) Owner() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation) string { return v.Owner }).(pulumi.StringOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput() BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation { + return vs[0].([]BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslation)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationMetric struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes *int `pulumi:"minutes"` + // Status of replication metrics. Either `Enabled` or `Disabled`. + Status *string `pulumi:"status"` +} + +// BucketV2ReplicationConfigurationRuleDestinationMetricInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationMetricArgs and BucketV2ReplicationConfigurationRuleDestinationMetricOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationMetricInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationMetricArgs{...} +type BucketV2ReplicationConfigurationRuleDestinationMetricInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationMetricOutput() BucketV2ReplicationConfigurationRuleDestinationMetricOutput + ToBucketV2ReplicationConfigurationRuleDestinationMetricOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationMetricOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationMetricArgs struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes pulumi.IntPtrInput `pulumi:"minutes"` + // Status of replication metrics. Either `Enabled` or `Disabled`. + Status pulumi.StringPtrInput `pulumi:"status"` +} + +func (BucketV2ReplicationConfigurationRuleDestinationMetricArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationMetric)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationMetricArgs) ToBucketV2ReplicationConfigurationRuleDestinationMetricOutput() BucketV2ReplicationConfigurationRuleDestinationMetricOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationMetricOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationMetricArgs) ToBucketV2ReplicationConfigurationRuleDestinationMetricOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationMetricOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationMetricOutput) +} + +// BucketV2ReplicationConfigurationRuleDestinationMetricArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationMetricArray and BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationMetricArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationMetricArray{ BucketV2ReplicationConfigurationRuleDestinationMetricArgs{...} } +type BucketV2ReplicationConfigurationRuleDestinationMetricArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput() BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput + ToBucketV2ReplicationConfigurationRuleDestinationMetricArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationMetricArray []BucketV2ReplicationConfigurationRuleDestinationMetricInput + +func (BucketV2ReplicationConfigurationRuleDestinationMetricArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestinationMetric)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationMetricArray) ToBucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput() BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationMetricArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationMetricArray) ToBucketV2ReplicationConfigurationRuleDestinationMetricArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationMetricOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationMetricOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationMetric)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationMetricOutput) ToBucketV2ReplicationConfigurationRuleDestinationMetricOutput() BucketV2ReplicationConfigurationRuleDestinationMetricOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationMetricOutput) ToBucketV2ReplicationConfigurationRuleDestinationMetricOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationMetricOutput { + return o +} + +// Threshold within which objects are to be replicated. The only valid value is `15`. +func (o BucketV2ReplicationConfigurationRuleDestinationMetricOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestinationMetric) *int { return v.Minutes }).(pulumi.IntPtrOutput) +} + +// Status of replication metrics. Either `Enabled` or `Disabled`. +func (o BucketV2ReplicationConfigurationRuleDestinationMetricOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestinationMetric) *string { return v.Status }).(pulumi.StringPtrOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestinationMetric)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput() BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationMetricArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleDestinationMetricOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRuleDestinationMetric { + return vs[0].([]BucketV2ReplicationConfigurationRuleDestinationMetric)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleDestinationMetricOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationReplicationTime struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes *int `pulumi:"minutes"` + // Status of RTC. Either `Enabled` or `Disabled`. + Status *string `pulumi:"status"` +} + +// BucketV2ReplicationConfigurationRuleDestinationReplicationTimeInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs and BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationReplicationTimeInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs{...} +type BucketV2ReplicationConfigurationRuleDestinationReplicationTimeInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput() BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput + ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs struct { + // Threshold within which objects are to be replicated. The only valid value is `15`. + Minutes pulumi.IntPtrInput `pulumi:"minutes"` + // Status of RTC. Either `Enabled` or `Disabled`. + Status pulumi.StringPtrInput `pulumi:"status"` +} + +func (BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput() BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput) +} + +// BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArray and BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArray{ BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs{...} } +type BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput() BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput + ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput +} + +type BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArray []BucketV2ReplicationConfigurationRuleDestinationReplicationTimeInput + +func (BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArray) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput() BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArray) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput() BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput { + return o +} + +// Threshold within which objects are to be replicated. The only valid value is `15`. +func (o BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput) Minutes() pulumi.IntPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestinationReplicationTime) *int { return v.Minutes }).(pulumi.IntPtrOutput) +} + +// Status of RTC. Either `Enabled` or `Disabled`. +func (o BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleDestinationReplicationTime) *string { return v.Status }).(pulumi.StringPtrOutput) +} + +type BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleDestinationReplicationTime)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput() BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput) ToBucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRuleDestinationReplicationTime { + return vs[0].([]BucketV2ReplicationConfigurationRuleDestinationReplicationTime)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput) +} + +type BucketV2ReplicationConfigurationRuleFilter struct { + // Object keyname prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix *string `pulumi:"prefix"` + // A map of tags that identifies subset of objects to which the rule applies. + // The rule applies only to objects having all the tags in its tagset. + Tags map[string]string `pulumi:"tags"` +} + +// BucketV2ReplicationConfigurationRuleFilterInput is an input type that accepts BucketV2ReplicationConfigurationRuleFilterArgs and BucketV2ReplicationConfigurationRuleFilterOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleFilterInput` via: +// +// BucketV2ReplicationConfigurationRuleFilterArgs{...} +type BucketV2ReplicationConfigurationRuleFilterInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleFilterOutput() BucketV2ReplicationConfigurationRuleFilterOutput + ToBucketV2ReplicationConfigurationRuleFilterOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleFilterOutput +} + +type BucketV2ReplicationConfigurationRuleFilterArgs struct { + // Object keyname prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` + // A map of tags that identifies subset of objects to which the rule applies. + // The rule applies only to objects having all the tags in its tagset. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (BucketV2ReplicationConfigurationRuleFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleFilterArgs) ToBucketV2ReplicationConfigurationRuleFilterOutput() BucketV2ReplicationConfigurationRuleFilterOutput { + return i.ToBucketV2ReplicationConfigurationRuleFilterOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleFilterArgs) ToBucketV2ReplicationConfigurationRuleFilterOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleFilterOutput) +} + +// BucketV2ReplicationConfigurationRuleFilterArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleFilterArray and BucketV2ReplicationConfigurationRuleFilterArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleFilterArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleFilterArray{ BucketV2ReplicationConfigurationRuleFilterArgs{...} } +type BucketV2ReplicationConfigurationRuleFilterArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleFilterArrayOutput() BucketV2ReplicationConfigurationRuleFilterArrayOutput + ToBucketV2ReplicationConfigurationRuleFilterArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleFilterArrayOutput +} + +type BucketV2ReplicationConfigurationRuleFilterArray []BucketV2ReplicationConfigurationRuleFilterInput + +func (BucketV2ReplicationConfigurationRuleFilterArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleFilterArray) ToBucketV2ReplicationConfigurationRuleFilterArrayOutput() BucketV2ReplicationConfigurationRuleFilterArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleFilterArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleFilterArray) ToBucketV2ReplicationConfigurationRuleFilterArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleFilterArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleFilterArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleFilterOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleFilterOutput) ToBucketV2ReplicationConfigurationRuleFilterOutput() BucketV2ReplicationConfigurationRuleFilterOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleFilterOutput) ToBucketV2ReplicationConfigurationRuleFilterOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleFilterOutput { + return o +} + +// Object keyname prefix that identifies subset of objects to which the rule applies. Must be less than or equal to 1024 characters in length. +func (o BucketV2ReplicationConfigurationRuleFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +// A map of tags that identifies subset of objects to which the rule applies. +// The rule applies only to objects having all the tags in its tagset. +func (o BucketV2ReplicationConfigurationRuleFilterOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleFilter) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type BucketV2ReplicationConfigurationRuleFilterArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleFilterArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleFilter)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleFilterArrayOutput) ToBucketV2ReplicationConfigurationRuleFilterArrayOutput() BucketV2ReplicationConfigurationRuleFilterArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleFilterArrayOutput) ToBucketV2ReplicationConfigurationRuleFilterArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleFilterArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleFilterArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleFilterOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRuleFilter { + return vs[0].([]BucketV2ReplicationConfigurationRuleFilter)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleFilterOutput) +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteria struct { + // Match SSE-KMS encrypted objects (documented below). If specified, `replicaKmsKeyId` + // in `destination` must be specified as well. + SseKmsEncryptedObjects []BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject `pulumi:"sseKmsEncryptedObjects"` +} + +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaInput is an input type that accepts BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs and BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaInput` via: +// +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs{...} +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs struct { + // Match SSE-KMS encrypted objects (documented below). If specified, `replicaKmsKeyId` + // in `destination` must be specified as well. + SseKmsEncryptedObjects BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayInput `pulumi:"sseKmsEncryptedObjects"` +} + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return i.ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput) +} + +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArray and BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArray{ BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs{...} } +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArray []BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaInput + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArray) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArray) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return o +} + +// Match SSE-KMS encrypted objects (documented below). If specified, `replicaKmsKeyId` +// in `destination` must be specified as well. +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput) SseKmsEncryptedObjects() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleSourceSelectionCriteria) []BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject { + return v.SseKmsEncryptedObjects + }).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleSourceSelectionCriteria)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRuleSourceSelectionCriteria { + return vs[0].([]BucketV2ReplicationConfigurationRuleSourceSelectionCriteria)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput) +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject struct { + // Boolean which indicates if this criteria is enabled. + Enabled bool `pulumi:"enabled"` +} + +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectInput is an input type that accepts BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs and BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectInput` via: +// +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs{...} +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs struct { + // Boolean which indicates if this criteria is enabled. + Enabled pulumi.BoolInput `pulumi:"enabled"` +} + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput { + return i.ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput) +} + +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayInput is an input type that accepts BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArray and BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput values. +// You can construct a concrete instance of `BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayInput` via: +// +// BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArray{ BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs{...} } +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayInput interface { + pulumi.Input + + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput + ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutputWithContext(context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArray []BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectInput + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject)(nil)).Elem() +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArray) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput { + return i.ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArray) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput) +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput { + return o +} + +// Boolean which indicates if this criteria is enabled. +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject) bool { + return v.Enabled + }).(pulumi.BoolOutput) +} + +type BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject)(nil)).Elem() +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput() BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput) ToBucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutputWithContext(ctx context.Context) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput { + return o +} + +func (o BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput) Index(i pulumi.IntInput) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject { + return vs[0].([]BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObject)[vs[1].(int)] + }).(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput) +} + +type BucketV2ServerSideEncryptionConfiguration struct { + // Single object for server-side encryption by default configuration. (documented below) + Rules []BucketV2ServerSideEncryptionConfigurationRule `pulumi:"rules"` +} + +// BucketV2ServerSideEncryptionConfigurationInput is an input type that accepts BucketV2ServerSideEncryptionConfigurationArgs and BucketV2ServerSideEncryptionConfigurationOutput values. +// You can construct a concrete instance of `BucketV2ServerSideEncryptionConfigurationInput` via: +// +// BucketV2ServerSideEncryptionConfigurationArgs{...} +type BucketV2ServerSideEncryptionConfigurationInput interface { + pulumi.Input + + ToBucketV2ServerSideEncryptionConfigurationOutput() BucketV2ServerSideEncryptionConfigurationOutput + ToBucketV2ServerSideEncryptionConfigurationOutputWithContext(context.Context) BucketV2ServerSideEncryptionConfigurationOutput +} + +type BucketV2ServerSideEncryptionConfigurationArgs struct { + // Single object for server-side encryption by default configuration. (documented below) + Rules BucketV2ServerSideEncryptionConfigurationRuleArrayInput `pulumi:"rules"` +} + +func (BucketV2ServerSideEncryptionConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (i BucketV2ServerSideEncryptionConfigurationArgs) ToBucketV2ServerSideEncryptionConfigurationOutput() BucketV2ServerSideEncryptionConfigurationOutput { + return i.ToBucketV2ServerSideEncryptionConfigurationOutputWithContext(context.Background()) +} + +func (i BucketV2ServerSideEncryptionConfigurationArgs) ToBucketV2ServerSideEncryptionConfigurationOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ServerSideEncryptionConfigurationOutput) +} + +// BucketV2ServerSideEncryptionConfigurationArrayInput is an input type that accepts BucketV2ServerSideEncryptionConfigurationArray and BucketV2ServerSideEncryptionConfigurationArrayOutput values. +// You can construct a concrete instance of `BucketV2ServerSideEncryptionConfigurationArrayInput` via: +// +// BucketV2ServerSideEncryptionConfigurationArray{ BucketV2ServerSideEncryptionConfigurationArgs{...} } +type BucketV2ServerSideEncryptionConfigurationArrayInput interface { + pulumi.Input + + ToBucketV2ServerSideEncryptionConfigurationArrayOutput() BucketV2ServerSideEncryptionConfigurationArrayOutput + ToBucketV2ServerSideEncryptionConfigurationArrayOutputWithContext(context.Context) BucketV2ServerSideEncryptionConfigurationArrayOutput +} + +type BucketV2ServerSideEncryptionConfigurationArray []BucketV2ServerSideEncryptionConfigurationInput + +func (BucketV2ServerSideEncryptionConfigurationArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (i BucketV2ServerSideEncryptionConfigurationArray) ToBucketV2ServerSideEncryptionConfigurationArrayOutput() BucketV2ServerSideEncryptionConfigurationArrayOutput { + return i.ToBucketV2ServerSideEncryptionConfigurationArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ServerSideEncryptionConfigurationArray) ToBucketV2ServerSideEncryptionConfigurationArrayOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ServerSideEncryptionConfigurationArrayOutput) +} + +type BucketV2ServerSideEncryptionConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketV2ServerSideEncryptionConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (o BucketV2ServerSideEncryptionConfigurationOutput) ToBucketV2ServerSideEncryptionConfigurationOutput() BucketV2ServerSideEncryptionConfigurationOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationOutput) ToBucketV2ServerSideEncryptionConfigurationOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationOutput { + return o +} + +// Single object for server-side encryption by default configuration. (documented below) +func (o BucketV2ServerSideEncryptionConfigurationOutput) Rules() BucketV2ServerSideEncryptionConfigurationRuleArrayOutput { + return o.ApplyT(func(v BucketV2ServerSideEncryptionConfiguration) []BucketV2ServerSideEncryptionConfigurationRule { + return v.Rules + }).(BucketV2ServerSideEncryptionConfigurationRuleArrayOutput) +} + +type BucketV2ServerSideEncryptionConfigurationArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ServerSideEncryptionConfigurationArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ServerSideEncryptionConfiguration)(nil)).Elem() +} + +func (o BucketV2ServerSideEncryptionConfigurationArrayOutput) ToBucketV2ServerSideEncryptionConfigurationArrayOutput() BucketV2ServerSideEncryptionConfigurationArrayOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationArrayOutput) ToBucketV2ServerSideEncryptionConfigurationArrayOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationArrayOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationArrayOutput) Index(i pulumi.IntInput) BucketV2ServerSideEncryptionConfigurationOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ServerSideEncryptionConfiguration { + return vs[0].([]BucketV2ServerSideEncryptionConfiguration)[vs[1].(int)] + }).(BucketV2ServerSideEncryptionConfigurationOutput) +} + +type BucketV2ServerSideEncryptionConfigurationRule struct { + // Single object for setting server-side encryption by default. (documented below) + ApplyServerSideEncryptionByDefaults []BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault `pulumi:"applyServerSideEncryptionByDefaults"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled *bool `pulumi:"bucketKeyEnabled"` +} + +// BucketV2ServerSideEncryptionConfigurationRuleInput is an input type that accepts BucketV2ServerSideEncryptionConfigurationRuleArgs and BucketV2ServerSideEncryptionConfigurationRuleOutput values. +// You can construct a concrete instance of `BucketV2ServerSideEncryptionConfigurationRuleInput` via: +// +// BucketV2ServerSideEncryptionConfigurationRuleArgs{...} +type BucketV2ServerSideEncryptionConfigurationRuleInput interface { + pulumi.Input + + ToBucketV2ServerSideEncryptionConfigurationRuleOutput() BucketV2ServerSideEncryptionConfigurationRuleOutput + ToBucketV2ServerSideEncryptionConfigurationRuleOutputWithContext(context.Context) BucketV2ServerSideEncryptionConfigurationRuleOutput +} + +type BucketV2ServerSideEncryptionConfigurationRuleArgs struct { + // Single object for setting server-side encryption by default. (documented below) + ApplyServerSideEncryptionByDefaults BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayInput `pulumi:"applyServerSideEncryptionByDefaults"` + // Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. + BucketKeyEnabled pulumi.BoolPtrInput `pulumi:"bucketKeyEnabled"` +} + +func (BucketV2ServerSideEncryptionConfigurationRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleArgs) ToBucketV2ServerSideEncryptionConfigurationRuleOutput() BucketV2ServerSideEncryptionConfigurationRuleOutput { + return i.ToBucketV2ServerSideEncryptionConfigurationRuleOutputWithContext(context.Background()) +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleArgs) ToBucketV2ServerSideEncryptionConfigurationRuleOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ServerSideEncryptionConfigurationRuleOutput) +} + +// BucketV2ServerSideEncryptionConfigurationRuleArrayInput is an input type that accepts BucketV2ServerSideEncryptionConfigurationRuleArray and BucketV2ServerSideEncryptionConfigurationRuleArrayOutput values. +// You can construct a concrete instance of `BucketV2ServerSideEncryptionConfigurationRuleArrayInput` via: +// +// BucketV2ServerSideEncryptionConfigurationRuleArray{ BucketV2ServerSideEncryptionConfigurationRuleArgs{...} } +type BucketV2ServerSideEncryptionConfigurationRuleArrayInput interface { + pulumi.Input + + ToBucketV2ServerSideEncryptionConfigurationRuleArrayOutput() BucketV2ServerSideEncryptionConfigurationRuleArrayOutput + ToBucketV2ServerSideEncryptionConfigurationRuleArrayOutputWithContext(context.Context) BucketV2ServerSideEncryptionConfigurationRuleArrayOutput +} + +type BucketV2ServerSideEncryptionConfigurationRuleArray []BucketV2ServerSideEncryptionConfigurationRuleInput + +func (BucketV2ServerSideEncryptionConfigurationRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleArray) ToBucketV2ServerSideEncryptionConfigurationRuleArrayOutput() BucketV2ServerSideEncryptionConfigurationRuleArrayOutput { + return i.ToBucketV2ServerSideEncryptionConfigurationRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleArray) ToBucketV2ServerSideEncryptionConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ServerSideEncryptionConfigurationRuleArrayOutput) +} + +type BucketV2ServerSideEncryptionConfigurationRuleOutput struct{ *pulumi.OutputState } + +func (BucketV2ServerSideEncryptionConfigurationRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleOutput) ToBucketV2ServerSideEncryptionConfigurationRuleOutput() BucketV2ServerSideEncryptionConfigurationRuleOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleOutput) ToBucketV2ServerSideEncryptionConfigurationRuleOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleOutput { + return o +} + +// Single object for setting server-side encryption by default. (documented below) +func (o BucketV2ServerSideEncryptionConfigurationRuleOutput) ApplyServerSideEncryptionByDefaults() BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput { + return o.ApplyT(func(v BucketV2ServerSideEncryptionConfigurationRule) []BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault { + return v.ApplyServerSideEncryptionByDefaults + }).(BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput) +} + +// Whether or not to use [Amazon S3 Bucket Keys](https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html) for SSE-KMS. +func (o BucketV2ServerSideEncryptionConfigurationRuleOutput) BucketKeyEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketV2ServerSideEncryptionConfigurationRule) *bool { return v.BucketKeyEnabled }).(pulumi.BoolPtrOutput) +} + +type BucketV2ServerSideEncryptionConfigurationRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ServerSideEncryptionConfigurationRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ServerSideEncryptionConfigurationRule)(nil)).Elem() +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleArrayOutput) ToBucketV2ServerSideEncryptionConfigurationRuleArrayOutput() BucketV2ServerSideEncryptionConfigurationRuleArrayOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleArrayOutput) ToBucketV2ServerSideEncryptionConfigurationRuleArrayOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleArrayOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleArrayOutput) Index(i pulumi.IntInput) BucketV2ServerSideEncryptionConfigurationRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ServerSideEncryptionConfigurationRule { + return vs[0].([]BucketV2ServerSideEncryptionConfigurationRule)[vs[1].(int)] + }).(BucketV2ServerSideEncryptionConfigurationRuleOutput) +} + +type BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault struct { + // AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. + KmsMasterKeyId *string `pulumi:"kmsMasterKeyId"` + // Server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms` + SseAlgorithm string `pulumi:"sseAlgorithm"` +} + +// BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput is an input type that accepts BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs and BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput values. +// You can construct a concrete instance of `BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput` via: +// +// BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{...} +type BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput interface { + pulumi.Input + + ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput() BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput + ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(context.Context) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput +} + +type BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs struct { + // AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. + KmsMasterKeyId pulumi.StringPtrInput `pulumi:"kmsMasterKeyId"` + // Server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms` + SseAlgorithm pulumi.StringInput `pulumi:"sseAlgorithm"` +} + +func (BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput() BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return i.ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(context.Background()) +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) +} + +// BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayInput is an input type that accepts BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArray and BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput values. +// You can construct a concrete instance of `BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayInput` via: +// +// BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArray{ BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{...} } +type BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayInput interface { + pulumi.Input + + ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput() BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput + ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutputWithContext(context.Context) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput +} + +type BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArray []BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput + +func (BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArray) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput() BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput { + return i.ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutputWithContext(context.Background()) +} + +func (i BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArray) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput) +} + +type BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput struct{ *pulumi.OutputState } + +func (BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput() BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return o +} + +// AWS KMS master key ID used for the SSE-KMS encryption. This can only be used when you set the value of `sseAlgorithm` as `aws:kms`. The default `aws/s3` AWS KMS master key is used if this element is absent while the `sseAlgorithm` is `aws:kms`. +func (o BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) KmsMasterKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) *string { + return v.KmsMasterKeyId + }).(pulumi.StringPtrOutput) +} + +// Server-side encryption algorithm to use. Valid values are `AES256` and `aws:kms` +func (o BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) SseAlgorithm() pulumi.StringOutput { + return o.ApplyT(func(v BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault) string { + return v.SseAlgorithm + }).(pulumi.StringOutput) +} + +type BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)(nil)).Elem() +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput() BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput) ToBucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutputWithContext(ctx context.Context) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput { + return o +} + +func (o BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput) Index(i pulumi.IntInput) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault { + return vs[0].([]BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefault)[vs[1].(int)] + }).(BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput) +} + +type BucketV2Versioning struct { + // Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket. + Enabled *bool `pulumi:"enabled"` + // Enable MFA delete for either `Change the versioning state of your bucket` or `Permanently delete an object version`. Default is `false`. This cannot be used to toggle this setting but is available to allow managed buckets to reflect the state in AWS + MfaDelete *bool `pulumi:"mfaDelete"` +} + +// BucketV2VersioningInput is an input type that accepts BucketV2VersioningArgs and BucketV2VersioningOutput values. +// You can construct a concrete instance of `BucketV2VersioningInput` via: +// +// BucketV2VersioningArgs{...} +type BucketV2VersioningInput interface { + pulumi.Input + + ToBucketV2VersioningOutput() BucketV2VersioningOutput + ToBucketV2VersioningOutputWithContext(context.Context) BucketV2VersioningOutput +} + +type BucketV2VersioningArgs struct { + // Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket. + Enabled pulumi.BoolPtrInput `pulumi:"enabled"` + // Enable MFA delete for either `Change the versioning state of your bucket` or `Permanently delete an object version`. Default is `false`. This cannot be used to toggle this setting but is available to allow managed buckets to reflect the state in AWS + MfaDelete pulumi.BoolPtrInput `pulumi:"mfaDelete"` +} + +func (BucketV2VersioningArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Versioning)(nil)).Elem() +} + +func (i BucketV2VersioningArgs) ToBucketV2VersioningOutput() BucketV2VersioningOutput { + return i.ToBucketV2VersioningOutputWithContext(context.Background()) +} + +func (i BucketV2VersioningArgs) ToBucketV2VersioningOutputWithContext(ctx context.Context) BucketV2VersioningOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2VersioningOutput) +} + +// BucketV2VersioningArrayInput is an input type that accepts BucketV2VersioningArray and BucketV2VersioningArrayOutput values. +// You can construct a concrete instance of `BucketV2VersioningArrayInput` via: +// +// BucketV2VersioningArray{ BucketV2VersioningArgs{...} } +type BucketV2VersioningArrayInput interface { + pulumi.Input + + ToBucketV2VersioningArrayOutput() BucketV2VersioningArrayOutput + ToBucketV2VersioningArrayOutputWithContext(context.Context) BucketV2VersioningArrayOutput +} + +type BucketV2VersioningArray []BucketV2VersioningInput + +func (BucketV2VersioningArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Versioning)(nil)).Elem() +} + +func (i BucketV2VersioningArray) ToBucketV2VersioningArrayOutput() BucketV2VersioningArrayOutput { + return i.ToBucketV2VersioningArrayOutputWithContext(context.Background()) +} + +func (i BucketV2VersioningArray) ToBucketV2VersioningArrayOutputWithContext(ctx context.Context) BucketV2VersioningArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2VersioningArrayOutput) +} + +type BucketV2VersioningOutput struct{ *pulumi.OutputState } + +func (BucketV2VersioningOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Versioning)(nil)).Elem() +} + +func (o BucketV2VersioningOutput) ToBucketV2VersioningOutput() BucketV2VersioningOutput { + return o +} + +func (o BucketV2VersioningOutput) ToBucketV2VersioningOutputWithContext(ctx context.Context) BucketV2VersioningOutput { + return o +} + +// Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket. +func (o BucketV2VersioningOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketV2Versioning) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) +} + +// Enable MFA delete for either `Change the versioning state of your bucket` or `Permanently delete an object version`. Default is `false`. This cannot be used to toggle this setting but is available to allow managed buckets to reflect the state in AWS +func (o BucketV2VersioningOutput) MfaDelete() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketV2Versioning) *bool { return v.MfaDelete }).(pulumi.BoolPtrOutput) +} + +type BucketV2VersioningArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2VersioningArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Versioning)(nil)).Elem() +} + +func (o BucketV2VersioningArrayOutput) ToBucketV2VersioningArrayOutput() BucketV2VersioningArrayOutput { + return o +} + +func (o BucketV2VersioningArrayOutput) ToBucketV2VersioningArrayOutputWithContext(ctx context.Context) BucketV2VersioningArrayOutput { + return o +} + +func (o BucketV2VersioningArrayOutput) Index(i pulumi.IntInput) BucketV2VersioningOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2Versioning { + return vs[0].([]BucketV2Versioning)[vs[1].(int)] + }).(BucketV2VersioningOutput) +} + +type BucketV2Website struct { + // Absolute path to the document to return in case of a 4XX error. + ErrorDocument *string `pulumi:"errorDocument"` + // Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders. + IndexDocument *string `pulumi:"indexDocument"` + // Hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request. + RedirectAllRequestsTo *string `pulumi:"redirectAllRequestsTo"` + // JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. + RoutingRules *string `pulumi:"routingRules"` +} + +// BucketV2WebsiteInput is an input type that accepts BucketV2WebsiteArgs and BucketV2WebsiteOutput values. +// You can construct a concrete instance of `BucketV2WebsiteInput` via: +// +// BucketV2WebsiteArgs{...} +type BucketV2WebsiteInput interface { + pulumi.Input + + ToBucketV2WebsiteOutput() BucketV2WebsiteOutput + ToBucketV2WebsiteOutputWithContext(context.Context) BucketV2WebsiteOutput +} + +type BucketV2WebsiteArgs struct { + // Absolute path to the document to return in case of a 4XX error. + ErrorDocument pulumi.StringPtrInput `pulumi:"errorDocument"` + // Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders. + IndexDocument pulumi.StringPtrInput `pulumi:"indexDocument"` + // Hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request. + RedirectAllRequestsTo pulumi.StringPtrInput `pulumi:"redirectAllRequestsTo"` + // JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. + RoutingRules pulumi.StringPtrInput `pulumi:"routingRules"` +} + +func (BucketV2WebsiteArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Website)(nil)).Elem() +} + +func (i BucketV2WebsiteArgs) ToBucketV2WebsiteOutput() BucketV2WebsiteOutput { + return i.ToBucketV2WebsiteOutputWithContext(context.Background()) +} + +func (i BucketV2WebsiteArgs) ToBucketV2WebsiteOutputWithContext(ctx context.Context) BucketV2WebsiteOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2WebsiteOutput) +} + +// BucketV2WebsiteArrayInput is an input type that accepts BucketV2WebsiteArray and BucketV2WebsiteArrayOutput values. +// You can construct a concrete instance of `BucketV2WebsiteArrayInput` via: +// +// BucketV2WebsiteArray{ BucketV2WebsiteArgs{...} } +type BucketV2WebsiteArrayInput interface { + pulumi.Input + + ToBucketV2WebsiteArrayOutput() BucketV2WebsiteArrayOutput + ToBucketV2WebsiteArrayOutputWithContext(context.Context) BucketV2WebsiteArrayOutput +} + +type BucketV2WebsiteArray []BucketV2WebsiteInput + +func (BucketV2WebsiteArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Website)(nil)).Elem() +} + +func (i BucketV2WebsiteArray) ToBucketV2WebsiteArrayOutput() BucketV2WebsiteArrayOutput { + return i.ToBucketV2WebsiteArrayOutputWithContext(context.Background()) +} + +func (i BucketV2WebsiteArray) ToBucketV2WebsiteArrayOutputWithContext(ctx context.Context) BucketV2WebsiteArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketV2WebsiteArrayOutput) +} + +type BucketV2WebsiteOutput struct{ *pulumi.OutputState } + +func (BucketV2WebsiteOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketV2Website)(nil)).Elem() +} + +func (o BucketV2WebsiteOutput) ToBucketV2WebsiteOutput() BucketV2WebsiteOutput { + return o +} + +func (o BucketV2WebsiteOutput) ToBucketV2WebsiteOutputWithContext(ctx context.Context) BucketV2WebsiteOutput { + return o +} + +// Absolute path to the document to return in case of a 4XX error. +func (o BucketV2WebsiteOutput) ErrorDocument() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2Website) *string { return v.ErrorDocument }).(pulumi.StringPtrOutput) +} + +// Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders. +func (o BucketV2WebsiteOutput) IndexDocument() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2Website) *string { return v.IndexDocument }).(pulumi.StringPtrOutput) +} + +// Hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request. +func (o BucketV2WebsiteOutput) RedirectAllRequestsTo() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2Website) *string { return v.RedirectAllRequestsTo }).(pulumi.StringPtrOutput) +} + +// JSON array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) +// describing redirect behavior and when redirects are applied. +func (o BucketV2WebsiteOutput) RoutingRules() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketV2Website) *string { return v.RoutingRules }).(pulumi.StringPtrOutput) +} + +type BucketV2WebsiteArrayOutput struct{ *pulumi.OutputState } + +func (BucketV2WebsiteArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketV2Website)(nil)).Elem() +} + +func (o BucketV2WebsiteArrayOutput) ToBucketV2WebsiteArrayOutput() BucketV2WebsiteArrayOutput { + return o +} + +func (o BucketV2WebsiteArrayOutput) ToBucketV2WebsiteArrayOutputWithContext(ctx context.Context) BucketV2WebsiteArrayOutput { + return o +} + +func (o BucketV2WebsiteArrayOutput) Index(i pulumi.IntInput) BucketV2WebsiteOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketV2Website { + return vs[0].([]BucketV2Website)[vs[1].(int)] + }).(BucketV2WebsiteOutput) +} + +type BucketVersioning struct { + // Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket. + Enabled *bool `pulumi:"enabled"` + // Enable MFA delete for either `Change the versioning state of your bucket` or `Permanently delete an object version`. Default is `false`. This cannot be used to toggle this setting but is available to allow managed buckets to reflect the state in AWS + MfaDelete *bool `pulumi:"mfaDelete"` +} + +// BucketVersioningInput is an input type that accepts BucketVersioningArgs and BucketVersioningOutput values. +// You can construct a concrete instance of `BucketVersioningInput` via: +// +// BucketVersioningArgs{...} +type BucketVersioningInput interface { + pulumi.Input + + ToBucketVersioningOutput() BucketVersioningOutput + ToBucketVersioningOutputWithContext(context.Context) BucketVersioningOutput +} + +type BucketVersioningArgs struct { + // Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket. + Enabled pulumi.BoolPtrInput `pulumi:"enabled"` + // Enable MFA delete for either `Change the versioning state of your bucket` or `Permanently delete an object version`. Default is `false`. This cannot be used to toggle this setting but is available to allow managed buckets to reflect the state in AWS + MfaDelete pulumi.BoolPtrInput `pulumi:"mfaDelete"` +} + +func (BucketVersioningArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketVersioning)(nil)).Elem() +} + +func (i BucketVersioningArgs) ToBucketVersioningOutput() BucketVersioningOutput { + return i.ToBucketVersioningOutputWithContext(context.Background()) +} + +func (i BucketVersioningArgs) ToBucketVersioningOutputWithContext(ctx context.Context) BucketVersioningOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningOutput) +} + +func (i BucketVersioningArgs) ToBucketVersioningPtrOutput() BucketVersioningPtrOutput { + return i.ToBucketVersioningPtrOutputWithContext(context.Background()) +} + +func (i BucketVersioningArgs) ToBucketVersioningPtrOutputWithContext(ctx context.Context) BucketVersioningPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningOutput).ToBucketVersioningPtrOutputWithContext(ctx) +} + +// BucketVersioningPtrInput is an input type that accepts BucketVersioningArgs, BucketVersioningPtr and BucketVersioningPtrOutput values. +// You can construct a concrete instance of `BucketVersioningPtrInput` via: +// +// BucketVersioningArgs{...} +// +// or: +// +// nil +type BucketVersioningPtrInput interface { + pulumi.Input + + ToBucketVersioningPtrOutput() BucketVersioningPtrOutput + ToBucketVersioningPtrOutputWithContext(context.Context) BucketVersioningPtrOutput +} + +type bucketVersioningPtrType BucketVersioningArgs + +func BucketVersioningPtr(v *BucketVersioningArgs) BucketVersioningPtrInput { + return (*bucketVersioningPtrType)(v) +} + +func (*bucketVersioningPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketVersioning)(nil)).Elem() +} + +func (i *bucketVersioningPtrType) ToBucketVersioningPtrOutput() BucketVersioningPtrOutput { + return i.ToBucketVersioningPtrOutputWithContext(context.Background()) +} + +func (i *bucketVersioningPtrType) ToBucketVersioningPtrOutputWithContext(ctx context.Context) BucketVersioningPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningPtrOutput) +} + +type BucketVersioningOutput struct{ *pulumi.OutputState } + +func (BucketVersioningOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketVersioning)(nil)).Elem() +} + +func (o BucketVersioningOutput) ToBucketVersioningOutput() BucketVersioningOutput { + return o +} + +func (o BucketVersioningOutput) ToBucketVersioningOutputWithContext(ctx context.Context) BucketVersioningOutput { + return o +} + +func (o BucketVersioningOutput) ToBucketVersioningPtrOutput() BucketVersioningPtrOutput { + return o.ToBucketVersioningPtrOutputWithContext(context.Background()) +} + +func (o BucketVersioningOutput) ToBucketVersioningPtrOutputWithContext(ctx context.Context) BucketVersioningPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketVersioning) *BucketVersioning { + return &v + }).(BucketVersioningPtrOutput) +} + +// Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket. +func (o BucketVersioningOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketVersioning) *bool { return v.Enabled }).(pulumi.BoolPtrOutput) +} + +// Enable MFA delete for either `Change the versioning state of your bucket` or `Permanently delete an object version`. Default is `false`. This cannot be used to toggle this setting but is available to allow managed buckets to reflect the state in AWS +func (o BucketVersioningOutput) MfaDelete() pulumi.BoolPtrOutput { + return o.ApplyT(func(v BucketVersioning) *bool { return v.MfaDelete }).(pulumi.BoolPtrOutput) +} + +type BucketVersioningPtrOutput struct{ *pulumi.OutputState } + +func (BucketVersioningPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketVersioning)(nil)).Elem() +} + +func (o BucketVersioningPtrOutput) ToBucketVersioningPtrOutput() BucketVersioningPtrOutput { + return o +} + +func (o BucketVersioningPtrOutput) ToBucketVersioningPtrOutputWithContext(ctx context.Context) BucketVersioningPtrOutput { + return o +} + +func (o BucketVersioningPtrOutput) Elem() BucketVersioningOutput { + return o.ApplyT(func(v *BucketVersioning) BucketVersioning { + if v != nil { + return *v + } + var ret BucketVersioning + return ret + }).(BucketVersioningOutput) +} + +// Enable versioning. Once you version-enable a bucket, it can never return to an unversioned state. You can, however, suspend versioning on that bucket. +func (o BucketVersioningPtrOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketVersioning) *bool { + if v == nil { + return nil + } + return v.Enabled + }).(pulumi.BoolPtrOutput) +} + +// Enable MFA delete for either `Change the versioning state of your bucket` or `Permanently delete an object version`. Default is `false`. This cannot be used to toggle this setting but is available to allow managed buckets to reflect the state in AWS +func (o BucketVersioningPtrOutput) MfaDelete() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *BucketVersioning) *bool { + if v == nil { + return nil + } + return v.MfaDelete + }).(pulumi.BoolPtrOutput) +} + +type BucketVersioningV2VersioningConfiguration struct { + // Specifies whether MFA delete is enabled in the bucket versioning configuration. Valid values: `Enabled` or `Disabled`. + MfaDelete *string `pulumi:"mfaDelete"` + // Versioning state of the bucket. Valid values: `Enabled`, `Suspended`, or `Disabled`. `Disabled` should only be used when creating or importing resources that correspond to unversioned S3 buckets. + Status string `pulumi:"status"` +} + +// BucketVersioningV2VersioningConfigurationInput is an input type that accepts BucketVersioningV2VersioningConfigurationArgs and BucketVersioningV2VersioningConfigurationOutput values. +// You can construct a concrete instance of `BucketVersioningV2VersioningConfigurationInput` via: +// +// BucketVersioningV2VersioningConfigurationArgs{...} +type BucketVersioningV2VersioningConfigurationInput interface { + pulumi.Input + + ToBucketVersioningV2VersioningConfigurationOutput() BucketVersioningV2VersioningConfigurationOutput + ToBucketVersioningV2VersioningConfigurationOutputWithContext(context.Context) BucketVersioningV2VersioningConfigurationOutput +} + +type BucketVersioningV2VersioningConfigurationArgs struct { + // Specifies whether MFA delete is enabled in the bucket versioning configuration. Valid values: `Enabled` or `Disabled`. + MfaDelete pulumi.StringPtrInput `pulumi:"mfaDelete"` + // Versioning state of the bucket. Valid values: `Enabled`, `Suspended`, or `Disabled`. `Disabled` should only be used when creating or importing resources that correspond to unversioned S3 buckets. + Status pulumi.StringInput `pulumi:"status"` +} + +func (BucketVersioningV2VersioningConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketVersioningV2VersioningConfiguration)(nil)).Elem() +} + +func (i BucketVersioningV2VersioningConfigurationArgs) ToBucketVersioningV2VersioningConfigurationOutput() BucketVersioningV2VersioningConfigurationOutput { + return i.ToBucketVersioningV2VersioningConfigurationOutputWithContext(context.Background()) +} + +func (i BucketVersioningV2VersioningConfigurationArgs) ToBucketVersioningV2VersioningConfigurationOutputWithContext(ctx context.Context) BucketVersioningV2VersioningConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2VersioningConfigurationOutput) +} + +func (i BucketVersioningV2VersioningConfigurationArgs) ToBucketVersioningV2VersioningConfigurationPtrOutput() BucketVersioningV2VersioningConfigurationPtrOutput { + return i.ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(context.Background()) +} + +func (i BucketVersioningV2VersioningConfigurationArgs) ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(ctx context.Context) BucketVersioningV2VersioningConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2VersioningConfigurationOutput).ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(ctx) +} + +// BucketVersioningV2VersioningConfigurationPtrInput is an input type that accepts BucketVersioningV2VersioningConfigurationArgs, BucketVersioningV2VersioningConfigurationPtr and BucketVersioningV2VersioningConfigurationPtrOutput values. +// You can construct a concrete instance of `BucketVersioningV2VersioningConfigurationPtrInput` via: +// +// BucketVersioningV2VersioningConfigurationArgs{...} +// +// or: +// +// nil +type BucketVersioningV2VersioningConfigurationPtrInput interface { + pulumi.Input + + ToBucketVersioningV2VersioningConfigurationPtrOutput() BucketVersioningV2VersioningConfigurationPtrOutput + ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(context.Context) BucketVersioningV2VersioningConfigurationPtrOutput +} + +type bucketVersioningV2VersioningConfigurationPtrType BucketVersioningV2VersioningConfigurationArgs + +func BucketVersioningV2VersioningConfigurationPtr(v *BucketVersioningV2VersioningConfigurationArgs) BucketVersioningV2VersioningConfigurationPtrInput { + return (*bucketVersioningV2VersioningConfigurationPtrType)(v) +} + +func (*bucketVersioningV2VersioningConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketVersioningV2VersioningConfiguration)(nil)).Elem() +} + +func (i *bucketVersioningV2VersioningConfigurationPtrType) ToBucketVersioningV2VersioningConfigurationPtrOutput() BucketVersioningV2VersioningConfigurationPtrOutput { + return i.ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *bucketVersioningV2VersioningConfigurationPtrType) ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(ctx context.Context) BucketVersioningV2VersioningConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2VersioningConfigurationPtrOutput) +} + +type BucketVersioningV2VersioningConfigurationOutput struct{ *pulumi.OutputState } + +func (BucketVersioningV2VersioningConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketVersioningV2VersioningConfiguration)(nil)).Elem() +} + +func (o BucketVersioningV2VersioningConfigurationOutput) ToBucketVersioningV2VersioningConfigurationOutput() BucketVersioningV2VersioningConfigurationOutput { + return o +} + +func (o BucketVersioningV2VersioningConfigurationOutput) ToBucketVersioningV2VersioningConfigurationOutputWithContext(ctx context.Context) BucketVersioningV2VersioningConfigurationOutput { + return o +} + +func (o BucketVersioningV2VersioningConfigurationOutput) ToBucketVersioningV2VersioningConfigurationPtrOutput() BucketVersioningV2VersioningConfigurationPtrOutput { + return o.ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(context.Background()) +} + +func (o BucketVersioningV2VersioningConfigurationOutput) ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(ctx context.Context) BucketVersioningV2VersioningConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketVersioningV2VersioningConfiguration) *BucketVersioningV2VersioningConfiguration { + return &v + }).(BucketVersioningV2VersioningConfigurationPtrOutput) +} + +// Specifies whether MFA delete is enabled in the bucket versioning configuration. Valid values: `Enabled` or `Disabled`. +func (o BucketVersioningV2VersioningConfigurationOutput) MfaDelete() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketVersioningV2VersioningConfiguration) *string { return v.MfaDelete }).(pulumi.StringPtrOutput) +} + +// Versioning state of the bucket. Valid values: `Enabled`, `Suspended`, or `Disabled`. `Disabled` should only be used when creating or importing resources that correspond to unversioned S3 buckets. +func (o BucketVersioningV2VersioningConfigurationOutput) Status() pulumi.StringOutput { + return o.ApplyT(func(v BucketVersioningV2VersioningConfiguration) string { return v.Status }).(pulumi.StringOutput) +} + +type BucketVersioningV2VersioningConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (BucketVersioningV2VersioningConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketVersioningV2VersioningConfiguration)(nil)).Elem() +} + +func (o BucketVersioningV2VersioningConfigurationPtrOutput) ToBucketVersioningV2VersioningConfigurationPtrOutput() BucketVersioningV2VersioningConfigurationPtrOutput { + return o +} + +func (o BucketVersioningV2VersioningConfigurationPtrOutput) ToBucketVersioningV2VersioningConfigurationPtrOutputWithContext(ctx context.Context) BucketVersioningV2VersioningConfigurationPtrOutput { + return o +} + +func (o BucketVersioningV2VersioningConfigurationPtrOutput) Elem() BucketVersioningV2VersioningConfigurationOutput { + return o.ApplyT(func(v *BucketVersioningV2VersioningConfiguration) BucketVersioningV2VersioningConfiguration { + if v != nil { + return *v + } + var ret BucketVersioningV2VersioningConfiguration + return ret + }).(BucketVersioningV2VersioningConfigurationOutput) +} + +// Specifies whether MFA delete is enabled in the bucket versioning configuration. Valid values: `Enabled` or `Disabled`. +func (o BucketVersioningV2VersioningConfigurationPtrOutput) MfaDelete() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketVersioningV2VersioningConfiguration) *string { + if v == nil { + return nil + } + return v.MfaDelete + }).(pulumi.StringPtrOutput) +} + +// Versioning state of the bucket. Valid values: `Enabled`, `Suspended`, or `Disabled`. `Disabled` should only be used when creating or importing resources that correspond to unversioned S3 buckets. +func (o BucketVersioningV2VersioningConfigurationPtrOutput) Status() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketVersioningV2VersioningConfiguration) *string { + if v == nil { + return nil + } + return &v.Status + }).(pulumi.StringPtrOutput) +} + +type BucketWebsite struct { + // An absolute path to the document to return in case of a 4XX error. + ErrorDocument *string `pulumi:"errorDocument"` + // Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders. + IndexDocument *string `pulumi:"indexDocument"` + // A hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request. + RedirectAllRequestsTo *string `pulumi:"redirectAllRequestsTo"` + // A json array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. + // + // The `CORS` object supports the following: + RoutingRules interface{} `pulumi:"routingRules"` +} + +// BucketWebsiteInput is an input type that accepts BucketWebsiteArgs and BucketWebsiteOutput values. +// You can construct a concrete instance of `BucketWebsiteInput` via: +// +// BucketWebsiteArgs{...} +type BucketWebsiteInput interface { + pulumi.Input + + ToBucketWebsiteOutput() BucketWebsiteOutput + ToBucketWebsiteOutputWithContext(context.Context) BucketWebsiteOutput +} + +type BucketWebsiteArgs struct { + // An absolute path to the document to return in case of a 4XX error. + ErrorDocument pulumi.StringPtrInput `pulumi:"errorDocument"` + // Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders. + IndexDocument pulumi.StringPtrInput `pulumi:"indexDocument"` + // A hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request. + RedirectAllRequestsTo pulumi.StringPtrInput `pulumi:"redirectAllRequestsTo"` + // A json array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) + // describing redirect behavior and when redirects are applied. + // + // The `CORS` object supports the following: + RoutingRules pulumi.Input `pulumi:"routingRules"` +} + +func (BucketWebsiteArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsite)(nil)).Elem() +} + +func (i BucketWebsiteArgs) ToBucketWebsiteOutput() BucketWebsiteOutput { + return i.ToBucketWebsiteOutputWithContext(context.Background()) +} + +func (i BucketWebsiteArgs) ToBucketWebsiteOutputWithContext(ctx context.Context) BucketWebsiteOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteOutput) +} + +func (i BucketWebsiteArgs) ToBucketWebsitePtrOutput() BucketWebsitePtrOutput { + return i.ToBucketWebsitePtrOutputWithContext(context.Background()) +} + +func (i BucketWebsiteArgs) ToBucketWebsitePtrOutputWithContext(ctx context.Context) BucketWebsitePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteOutput).ToBucketWebsitePtrOutputWithContext(ctx) +} + +// BucketWebsitePtrInput is an input type that accepts BucketWebsiteArgs, BucketWebsitePtr and BucketWebsitePtrOutput values. +// You can construct a concrete instance of `BucketWebsitePtrInput` via: +// +// BucketWebsiteArgs{...} +// +// or: +// +// nil +type BucketWebsitePtrInput interface { + pulumi.Input + + ToBucketWebsitePtrOutput() BucketWebsitePtrOutput + ToBucketWebsitePtrOutputWithContext(context.Context) BucketWebsitePtrOutput +} + +type bucketWebsitePtrType BucketWebsiteArgs + +func BucketWebsitePtr(v *BucketWebsiteArgs) BucketWebsitePtrInput { + return (*bucketWebsitePtrType)(v) +} + +func (*bucketWebsitePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsite)(nil)).Elem() +} + +func (i *bucketWebsitePtrType) ToBucketWebsitePtrOutput() BucketWebsitePtrOutput { + return i.ToBucketWebsitePtrOutputWithContext(context.Background()) +} + +func (i *bucketWebsitePtrType) ToBucketWebsitePtrOutputWithContext(ctx context.Context) BucketWebsitePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsitePtrOutput) +} + +type BucketWebsiteOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsite)(nil)).Elem() +} + +func (o BucketWebsiteOutput) ToBucketWebsiteOutput() BucketWebsiteOutput { + return o +} + +func (o BucketWebsiteOutput) ToBucketWebsiteOutputWithContext(ctx context.Context) BucketWebsiteOutput { + return o +} + +func (o BucketWebsiteOutput) ToBucketWebsitePtrOutput() BucketWebsitePtrOutput { + return o.ToBucketWebsitePtrOutputWithContext(context.Background()) +} + +func (o BucketWebsiteOutput) ToBucketWebsitePtrOutputWithContext(ctx context.Context) BucketWebsitePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketWebsite) *BucketWebsite { + return &v + }).(BucketWebsitePtrOutput) +} + +// An absolute path to the document to return in case of a 4XX error. +func (o BucketWebsiteOutput) ErrorDocument() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsite) *string { return v.ErrorDocument }).(pulumi.StringPtrOutput) +} + +// Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders. +func (o BucketWebsiteOutput) IndexDocument() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsite) *string { return v.IndexDocument }).(pulumi.StringPtrOutput) +} + +// A hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request. +func (o BucketWebsiteOutput) RedirectAllRequestsTo() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsite) *string { return v.RedirectAllRequestsTo }).(pulumi.StringPtrOutput) +} + +// A json array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) +// describing redirect behavior and when redirects are applied. +// +// The `CORS` object supports the following: +func (o BucketWebsiteOutput) RoutingRules() pulumi.AnyOutput { + return o.ApplyT(func(v BucketWebsite) interface{} { return v.RoutingRules }).(pulumi.AnyOutput) +} + +type BucketWebsitePtrOutput struct{ *pulumi.OutputState } + +func (BucketWebsitePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsite)(nil)).Elem() +} + +func (o BucketWebsitePtrOutput) ToBucketWebsitePtrOutput() BucketWebsitePtrOutput { + return o +} + +func (o BucketWebsitePtrOutput) ToBucketWebsitePtrOutputWithContext(ctx context.Context) BucketWebsitePtrOutput { + return o +} + +func (o BucketWebsitePtrOutput) Elem() BucketWebsiteOutput { + return o.ApplyT(func(v *BucketWebsite) BucketWebsite { + if v != nil { + return *v + } + var ret BucketWebsite + return ret + }).(BucketWebsiteOutput) +} + +// An absolute path to the document to return in case of a 4XX error. +func (o BucketWebsitePtrOutput) ErrorDocument() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsite) *string { + if v == nil { + return nil + } + return v.ErrorDocument + }).(pulumi.StringPtrOutput) +} + +// Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders. +func (o BucketWebsitePtrOutput) IndexDocument() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsite) *string { + if v == nil { + return nil + } + return v.IndexDocument + }).(pulumi.StringPtrOutput) +} + +// A hostname to redirect all website requests for this bucket to. Hostname can optionally be prefixed with a protocol (`http://` or `https://`) to use when redirecting requests. The default is the protocol that is used in the original request. +func (o BucketWebsitePtrOutput) RedirectAllRequestsTo() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsite) *string { + if v == nil { + return nil + } + return v.RedirectAllRequestsTo + }).(pulumi.StringPtrOutput) +} + +// A json array containing [routing rules](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-websiteconfiguration-routingrules.html) +// describing redirect behavior and when redirects are applied. +// +// The `CORS` object supports the following: +func (o BucketWebsitePtrOutput) RoutingRules() pulumi.AnyOutput { + return o.ApplyT(func(v *BucketWebsite) interface{} { + if v == nil { + return nil + } + return v.RoutingRules + }).(pulumi.AnyOutput) +} + +type BucketWebsiteConfigurationV2ErrorDocument struct { + // Object key name to use when a 4XX class error occurs. + Key string `pulumi:"key"` +} + +// BucketWebsiteConfigurationV2ErrorDocumentInput is an input type that accepts BucketWebsiteConfigurationV2ErrorDocumentArgs and BucketWebsiteConfigurationV2ErrorDocumentOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2ErrorDocumentInput` via: +// +// BucketWebsiteConfigurationV2ErrorDocumentArgs{...} +type BucketWebsiteConfigurationV2ErrorDocumentInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2ErrorDocumentOutput() BucketWebsiteConfigurationV2ErrorDocumentOutput + ToBucketWebsiteConfigurationV2ErrorDocumentOutputWithContext(context.Context) BucketWebsiteConfigurationV2ErrorDocumentOutput +} + +type BucketWebsiteConfigurationV2ErrorDocumentArgs struct { + // Object key name to use when a 4XX class error occurs. + Key pulumi.StringInput `pulumi:"key"` +} + +func (BucketWebsiteConfigurationV2ErrorDocumentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2ErrorDocument)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2ErrorDocumentArgs) ToBucketWebsiteConfigurationV2ErrorDocumentOutput() BucketWebsiteConfigurationV2ErrorDocumentOutput { + return i.ToBucketWebsiteConfigurationV2ErrorDocumentOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2ErrorDocumentArgs) ToBucketWebsiteConfigurationV2ErrorDocumentOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ErrorDocumentOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2ErrorDocumentOutput) +} + +func (i BucketWebsiteConfigurationV2ErrorDocumentArgs) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutput() BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return i.ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2ErrorDocumentArgs) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2ErrorDocumentOutput).ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(ctx) +} + +// BucketWebsiteConfigurationV2ErrorDocumentPtrInput is an input type that accepts BucketWebsiteConfigurationV2ErrorDocumentArgs, BucketWebsiteConfigurationV2ErrorDocumentPtr and BucketWebsiteConfigurationV2ErrorDocumentPtrOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2ErrorDocumentPtrInput` via: +// +// BucketWebsiteConfigurationV2ErrorDocumentArgs{...} +// +// or: +// +// nil +type BucketWebsiteConfigurationV2ErrorDocumentPtrInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutput() BucketWebsiteConfigurationV2ErrorDocumentPtrOutput + ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(context.Context) BucketWebsiteConfigurationV2ErrorDocumentPtrOutput +} + +type bucketWebsiteConfigurationV2ErrorDocumentPtrType BucketWebsiteConfigurationV2ErrorDocumentArgs + +func BucketWebsiteConfigurationV2ErrorDocumentPtr(v *BucketWebsiteConfigurationV2ErrorDocumentArgs) BucketWebsiteConfigurationV2ErrorDocumentPtrInput { + return (*bucketWebsiteConfigurationV2ErrorDocumentPtrType)(v) +} + +func (*bucketWebsiteConfigurationV2ErrorDocumentPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2ErrorDocument)(nil)).Elem() +} + +func (i *bucketWebsiteConfigurationV2ErrorDocumentPtrType) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutput() BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return i.ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(context.Background()) +} + +func (i *bucketWebsiteConfigurationV2ErrorDocumentPtrType) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) +} + +type BucketWebsiteConfigurationV2ErrorDocumentOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2ErrorDocumentOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2ErrorDocument)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2ErrorDocumentOutput) ToBucketWebsiteConfigurationV2ErrorDocumentOutput() BucketWebsiteConfigurationV2ErrorDocumentOutput { + return o +} + +func (o BucketWebsiteConfigurationV2ErrorDocumentOutput) ToBucketWebsiteConfigurationV2ErrorDocumentOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ErrorDocumentOutput { + return o +} + +func (o BucketWebsiteConfigurationV2ErrorDocumentOutput) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutput() BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return o.ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(context.Background()) +} + +func (o BucketWebsiteConfigurationV2ErrorDocumentOutput) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketWebsiteConfigurationV2ErrorDocument) *BucketWebsiteConfigurationV2ErrorDocument { + return &v + }).(BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) +} + +// Object key name to use when a 4XX class error occurs. +func (o BucketWebsiteConfigurationV2ErrorDocumentOutput) Key() pulumi.StringOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2ErrorDocument) string { return v.Key }).(pulumi.StringOutput) +} + +type BucketWebsiteConfigurationV2ErrorDocumentPtrOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2ErrorDocument)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutput() BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) ToBucketWebsiteConfigurationV2ErrorDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2ErrorDocumentPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) Elem() BucketWebsiteConfigurationV2ErrorDocumentOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2ErrorDocument) BucketWebsiteConfigurationV2ErrorDocument { + if v != nil { + return *v + } + var ret BucketWebsiteConfigurationV2ErrorDocument + return ret + }).(BucketWebsiteConfigurationV2ErrorDocumentOutput) +} + +// Object key name to use when a 4XX class error occurs. +func (o BucketWebsiteConfigurationV2ErrorDocumentPtrOutput) Key() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2ErrorDocument) *string { + if v == nil { + return nil + } + return &v.Key + }).(pulumi.StringPtrOutput) +} + +type BucketWebsiteConfigurationV2IndexDocument struct { + // Suffix that is appended to a request that is for a directory on the website endpoint. + // For example, if the suffix is `index.html` and you make a request to `samplebucket/images/`, the data that is returned will be for the object with the key name `images/index.html`. + // The suffix must not be empty and must not include a slash character. + Suffix string `pulumi:"suffix"` +} + +// BucketWebsiteConfigurationV2IndexDocumentInput is an input type that accepts BucketWebsiteConfigurationV2IndexDocumentArgs and BucketWebsiteConfigurationV2IndexDocumentOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2IndexDocumentInput` via: +// +// BucketWebsiteConfigurationV2IndexDocumentArgs{...} +type BucketWebsiteConfigurationV2IndexDocumentInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2IndexDocumentOutput() BucketWebsiteConfigurationV2IndexDocumentOutput + ToBucketWebsiteConfigurationV2IndexDocumentOutputWithContext(context.Context) BucketWebsiteConfigurationV2IndexDocumentOutput +} + +type BucketWebsiteConfigurationV2IndexDocumentArgs struct { + // Suffix that is appended to a request that is for a directory on the website endpoint. + // For example, if the suffix is `index.html` and you make a request to `samplebucket/images/`, the data that is returned will be for the object with the key name `images/index.html`. + // The suffix must not be empty and must not include a slash character. + Suffix pulumi.StringInput `pulumi:"suffix"` +} + +func (BucketWebsiteConfigurationV2IndexDocumentArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2IndexDocument)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2IndexDocumentArgs) ToBucketWebsiteConfigurationV2IndexDocumentOutput() BucketWebsiteConfigurationV2IndexDocumentOutput { + return i.ToBucketWebsiteConfigurationV2IndexDocumentOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2IndexDocumentArgs) ToBucketWebsiteConfigurationV2IndexDocumentOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2IndexDocumentOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2IndexDocumentOutput) +} + +func (i BucketWebsiteConfigurationV2IndexDocumentArgs) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutput() BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return i.ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2IndexDocumentArgs) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2IndexDocumentOutput).ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(ctx) +} + +// BucketWebsiteConfigurationV2IndexDocumentPtrInput is an input type that accepts BucketWebsiteConfigurationV2IndexDocumentArgs, BucketWebsiteConfigurationV2IndexDocumentPtr and BucketWebsiteConfigurationV2IndexDocumentPtrOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2IndexDocumentPtrInput` via: +// +// BucketWebsiteConfigurationV2IndexDocumentArgs{...} +// +// or: +// +// nil +type BucketWebsiteConfigurationV2IndexDocumentPtrInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2IndexDocumentPtrOutput() BucketWebsiteConfigurationV2IndexDocumentPtrOutput + ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(context.Context) BucketWebsiteConfigurationV2IndexDocumentPtrOutput +} + +type bucketWebsiteConfigurationV2IndexDocumentPtrType BucketWebsiteConfigurationV2IndexDocumentArgs + +func BucketWebsiteConfigurationV2IndexDocumentPtr(v *BucketWebsiteConfigurationV2IndexDocumentArgs) BucketWebsiteConfigurationV2IndexDocumentPtrInput { + return (*bucketWebsiteConfigurationV2IndexDocumentPtrType)(v) +} + +func (*bucketWebsiteConfigurationV2IndexDocumentPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2IndexDocument)(nil)).Elem() +} + +func (i *bucketWebsiteConfigurationV2IndexDocumentPtrType) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutput() BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return i.ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(context.Background()) +} + +func (i *bucketWebsiteConfigurationV2IndexDocumentPtrType) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2IndexDocumentPtrOutput) +} + +type BucketWebsiteConfigurationV2IndexDocumentOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2IndexDocumentOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2IndexDocument)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2IndexDocumentOutput) ToBucketWebsiteConfigurationV2IndexDocumentOutput() BucketWebsiteConfigurationV2IndexDocumentOutput { + return o +} + +func (o BucketWebsiteConfigurationV2IndexDocumentOutput) ToBucketWebsiteConfigurationV2IndexDocumentOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2IndexDocumentOutput { + return o +} + +func (o BucketWebsiteConfigurationV2IndexDocumentOutput) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutput() BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return o.ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(context.Background()) +} + +func (o BucketWebsiteConfigurationV2IndexDocumentOutput) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketWebsiteConfigurationV2IndexDocument) *BucketWebsiteConfigurationV2IndexDocument { + return &v + }).(BucketWebsiteConfigurationV2IndexDocumentPtrOutput) +} + +// Suffix that is appended to a request that is for a directory on the website endpoint. +// For example, if the suffix is `index.html` and you make a request to `samplebucket/images/`, the data that is returned will be for the object with the key name `images/index.html`. +// The suffix must not be empty and must not include a slash character. +func (o BucketWebsiteConfigurationV2IndexDocumentOutput) Suffix() pulumi.StringOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2IndexDocument) string { return v.Suffix }).(pulumi.StringOutput) +} + +type BucketWebsiteConfigurationV2IndexDocumentPtrOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2IndexDocumentPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2IndexDocument)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2IndexDocumentPtrOutput) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutput() BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2IndexDocumentPtrOutput) ToBucketWebsiteConfigurationV2IndexDocumentPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2IndexDocumentPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2IndexDocumentPtrOutput) Elem() BucketWebsiteConfigurationV2IndexDocumentOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2IndexDocument) BucketWebsiteConfigurationV2IndexDocument { + if v != nil { + return *v + } + var ret BucketWebsiteConfigurationV2IndexDocument + return ret + }).(BucketWebsiteConfigurationV2IndexDocumentOutput) +} + +// Suffix that is appended to a request that is for a directory on the website endpoint. +// For example, if the suffix is `index.html` and you make a request to `samplebucket/images/`, the data that is returned will be for the object with the key name `images/index.html`. +// The suffix must not be empty and must not include a slash character. +func (o BucketWebsiteConfigurationV2IndexDocumentPtrOutput) Suffix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2IndexDocument) *string { + if v == nil { + return nil + } + return &v.Suffix + }).(pulumi.StringPtrOutput) +} + +type BucketWebsiteConfigurationV2RedirectAllRequestsTo struct { + // Name of the host where requests are redirected. + HostName string `pulumi:"hostName"` + // Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Valid values: `http`, `https`. + Protocol *string `pulumi:"protocol"` +} + +// BucketWebsiteConfigurationV2RedirectAllRequestsToInput is an input type that accepts BucketWebsiteConfigurationV2RedirectAllRequestsToArgs and BucketWebsiteConfigurationV2RedirectAllRequestsToOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2RedirectAllRequestsToInput` via: +// +// BucketWebsiteConfigurationV2RedirectAllRequestsToArgs{...} +type BucketWebsiteConfigurationV2RedirectAllRequestsToInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2RedirectAllRequestsToOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToOutput + ToBucketWebsiteConfigurationV2RedirectAllRequestsToOutputWithContext(context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToOutput +} + +type BucketWebsiteConfigurationV2RedirectAllRequestsToArgs struct { + // Name of the host where requests are redirected. + HostName pulumi.StringInput `pulumi:"hostName"` + // Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Valid values: `http`, `https`. + Protocol pulumi.StringPtrInput `pulumi:"protocol"` +} + +func (BucketWebsiteConfigurationV2RedirectAllRequestsToArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RedirectAllRequestsTo)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2RedirectAllRequestsToArgs) ToBucketWebsiteConfigurationV2RedirectAllRequestsToOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToOutput { + return i.ToBucketWebsiteConfigurationV2RedirectAllRequestsToOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2RedirectAllRequestsToArgs) ToBucketWebsiteConfigurationV2RedirectAllRequestsToOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) +} + +func (i BucketWebsiteConfigurationV2RedirectAllRequestsToArgs) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return i.ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2RedirectAllRequestsToArgs) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RedirectAllRequestsToOutput).ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(ctx) +} + +// BucketWebsiteConfigurationV2RedirectAllRequestsToPtrInput is an input type that accepts BucketWebsiteConfigurationV2RedirectAllRequestsToArgs, BucketWebsiteConfigurationV2RedirectAllRequestsToPtr and BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2RedirectAllRequestsToPtrInput` via: +// +// BucketWebsiteConfigurationV2RedirectAllRequestsToArgs{...} +// +// or: +// +// nil +type BucketWebsiteConfigurationV2RedirectAllRequestsToPtrInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput + ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput +} + +type bucketWebsiteConfigurationV2RedirectAllRequestsToPtrType BucketWebsiteConfigurationV2RedirectAllRequestsToArgs + +func BucketWebsiteConfigurationV2RedirectAllRequestsToPtr(v *BucketWebsiteConfigurationV2RedirectAllRequestsToArgs) BucketWebsiteConfigurationV2RedirectAllRequestsToPtrInput { + return (*bucketWebsiteConfigurationV2RedirectAllRequestsToPtrType)(v) +} + +func (*bucketWebsiteConfigurationV2RedirectAllRequestsToPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2RedirectAllRequestsTo)(nil)).Elem() +} + +func (i *bucketWebsiteConfigurationV2RedirectAllRequestsToPtrType) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return i.ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(context.Background()) +} + +func (i *bucketWebsiteConfigurationV2RedirectAllRequestsToPtrType) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) +} + +type BucketWebsiteConfigurationV2RedirectAllRequestsToOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RedirectAllRequestsTo)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) ToBucketWebsiteConfigurationV2RedirectAllRequestsToOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) ToBucketWebsiteConfigurationV2RedirectAllRequestsToOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return o.ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(context.Background()) +} + +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketWebsiteConfigurationV2RedirectAllRequestsTo) *BucketWebsiteConfigurationV2RedirectAllRequestsTo { + return &v + }).(BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) +} + +// Name of the host where requests are redirected. +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) HostName() pulumi.StringOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RedirectAllRequestsTo) string { return v.HostName }).(pulumi.StringOutput) +} + +// Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Valid values: `http`, `https`. +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RedirectAllRequestsTo) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +type BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2RedirectAllRequestsTo)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput() BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) ToBucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) Elem() BucketWebsiteConfigurationV2RedirectAllRequestsToOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2RedirectAllRequestsTo) BucketWebsiteConfigurationV2RedirectAllRequestsTo { + if v != nil { + return *v + } + var ret BucketWebsiteConfigurationV2RedirectAllRequestsTo + return ret + }).(BucketWebsiteConfigurationV2RedirectAllRequestsToOutput) +} + +// Name of the host where requests are redirected. +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) HostName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2RedirectAllRequestsTo) *string { + if v == nil { + return nil + } + return &v.HostName + }).(pulumi.StringPtrOutput) +} + +// Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Valid values: `http`, `https`. +func (o BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2RedirectAllRequestsTo) *string { + if v == nil { + return nil + } + return v.Protocol + }).(pulumi.StringPtrOutput) +} + +type BucketWebsiteConfigurationV2RoutingRule struct { + // Configuration block for describing a condition that must be met for the specified redirect to apply. See below. + Condition *BucketWebsiteConfigurationV2RoutingRuleCondition `pulumi:"condition"` + // Configuration block for redirect information. See below. + Redirect BucketWebsiteConfigurationV2RoutingRuleRedirect `pulumi:"redirect"` +} + +// BucketWebsiteConfigurationV2RoutingRuleInput is an input type that accepts BucketWebsiteConfigurationV2RoutingRuleArgs and BucketWebsiteConfigurationV2RoutingRuleOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2RoutingRuleInput` via: +// +// BucketWebsiteConfigurationV2RoutingRuleArgs{...} +type BucketWebsiteConfigurationV2RoutingRuleInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2RoutingRuleOutput() BucketWebsiteConfigurationV2RoutingRuleOutput + ToBucketWebsiteConfigurationV2RoutingRuleOutputWithContext(context.Context) BucketWebsiteConfigurationV2RoutingRuleOutput +} + +type BucketWebsiteConfigurationV2RoutingRuleArgs struct { + // Configuration block for describing a condition that must be met for the specified redirect to apply. See below. + Condition BucketWebsiteConfigurationV2RoutingRuleConditionPtrInput `pulumi:"condition"` + // Configuration block for redirect information. See below. + Redirect BucketWebsiteConfigurationV2RoutingRuleRedirectInput `pulumi:"redirect"` +} + +func (BucketWebsiteConfigurationV2RoutingRuleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRule)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2RoutingRuleArgs) ToBucketWebsiteConfigurationV2RoutingRuleOutput() BucketWebsiteConfigurationV2RoutingRuleOutput { + return i.ToBucketWebsiteConfigurationV2RoutingRuleOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2RoutingRuleArgs) ToBucketWebsiteConfigurationV2RoutingRuleOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RoutingRuleOutput) +} + +// BucketWebsiteConfigurationV2RoutingRuleArrayInput is an input type that accepts BucketWebsiteConfigurationV2RoutingRuleArray and BucketWebsiteConfigurationV2RoutingRuleArrayOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2RoutingRuleArrayInput` via: +// +// BucketWebsiteConfigurationV2RoutingRuleArray{ BucketWebsiteConfigurationV2RoutingRuleArgs{...} } +type BucketWebsiteConfigurationV2RoutingRuleArrayInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2RoutingRuleArrayOutput() BucketWebsiteConfigurationV2RoutingRuleArrayOutput + ToBucketWebsiteConfigurationV2RoutingRuleArrayOutputWithContext(context.Context) BucketWebsiteConfigurationV2RoutingRuleArrayOutput +} + +type BucketWebsiteConfigurationV2RoutingRuleArray []BucketWebsiteConfigurationV2RoutingRuleInput + +func (BucketWebsiteConfigurationV2RoutingRuleArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketWebsiteConfigurationV2RoutingRule)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2RoutingRuleArray) ToBucketWebsiteConfigurationV2RoutingRuleArrayOutput() BucketWebsiteConfigurationV2RoutingRuleArrayOutput { + return i.ToBucketWebsiteConfigurationV2RoutingRuleArrayOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2RoutingRuleArray) ToBucketWebsiteConfigurationV2RoutingRuleArrayOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RoutingRuleArrayOutput) +} + +type BucketWebsiteConfigurationV2RoutingRuleOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2RoutingRuleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRule)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2RoutingRuleOutput) ToBucketWebsiteConfigurationV2RoutingRuleOutput() BucketWebsiteConfigurationV2RoutingRuleOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleOutput) ToBucketWebsiteConfigurationV2RoutingRuleOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleOutput { + return o +} + +// Configuration block for describing a condition that must be met for the specified redirect to apply. See below. +func (o BucketWebsiteConfigurationV2RoutingRuleOutput) Condition() BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRule) *BucketWebsiteConfigurationV2RoutingRuleCondition { + return v.Condition + }).(BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) +} + +// Configuration block for redirect information. See below. +func (o BucketWebsiteConfigurationV2RoutingRuleOutput) Redirect() BucketWebsiteConfigurationV2RoutingRuleRedirectOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRule) BucketWebsiteConfigurationV2RoutingRuleRedirect { + return v.Redirect + }).(BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) +} + +type BucketWebsiteConfigurationV2RoutingRuleArrayOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2RoutingRuleArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]BucketWebsiteConfigurationV2RoutingRule)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2RoutingRuleArrayOutput) ToBucketWebsiteConfigurationV2RoutingRuleArrayOutput() BucketWebsiteConfigurationV2RoutingRuleArrayOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleArrayOutput) ToBucketWebsiteConfigurationV2RoutingRuleArrayOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleArrayOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleArrayOutput) Index(i pulumi.IntInput) BucketWebsiteConfigurationV2RoutingRuleOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) BucketWebsiteConfigurationV2RoutingRule { + return vs[0].([]BucketWebsiteConfigurationV2RoutingRule)[vs[1].(int)] + }).(BucketWebsiteConfigurationV2RoutingRuleOutput) +} + +type BucketWebsiteConfigurationV2RoutingRuleCondition struct { + // HTTP error code when the redirect is applied. If specified with `keyPrefixEquals`, then both must be true for the redirect to be applied. + HttpErrorCodeReturnedEquals *string `pulumi:"httpErrorCodeReturnedEquals"` + // Object key name prefix when the redirect is applied. If specified with `httpErrorCodeReturnedEquals`, then both must be true for the redirect to be applied. + KeyPrefixEquals *string `pulumi:"keyPrefixEquals"` +} + +// BucketWebsiteConfigurationV2RoutingRuleConditionInput is an input type that accepts BucketWebsiteConfigurationV2RoutingRuleConditionArgs and BucketWebsiteConfigurationV2RoutingRuleConditionOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2RoutingRuleConditionInput` via: +// +// BucketWebsiteConfigurationV2RoutingRuleConditionArgs{...} +type BucketWebsiteConfigurationV2RoutingRuleConditionInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2RoutingRuleConditionOutput() BucketWebsiteConfigurationV2RoutingRuleConditionOutput + ToBucketWebsiteConfigurationV2RoutingRuleConditionOutputWithContext(context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionOutput +} + +type BucketWebsiteConfigurationV2RoutingRuleConditionArgs struct { + // HTTP error code when the redirect is applied. If specified with `keyPrefixEquals`, then both must be true for the redirect to be applied. + HttpErrorCodeReturnedEquals pulumi.StringPtrInput `pulumi:"httpErrorCodeReturnedEquals"` + // Object key name prefix when the redirect is applied. If specified with `httpErrorCodeReturnedEquals`, then both must be true for the redirect to be applied. + KeyPrefixEquals pulumi.StringPtrInput `pulumi:"keyPrefixEquals"` +} + +func (BucketWebsiteConfigurationV2RoutingRuleConditionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleCondition)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2RoutingRuleConditionArgs) ToBucketWebsiteConfigurationV2RoutingRuleConditionOutput() BucketWebsiteConfigurationV2RoutingRuleConditionOutput { + return i.ToBucketWebsiteConfigurationV2RoutingRuleConditionOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2RoutingRuleConditionArgs) ToBucketWebsiteConfigurationV2RoutingRuleConditionOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RoutingRuleConditionOutput) +} + +func (i BucketWebsiteConfigurationV2RoutingRuleConditionArgs) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput() BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return i.ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2RoutingRuleConditionArgs) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RoutingRuleConditionOutput).ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(ctx) +} + +// BucketWebsiteConfigurationV2RoutingRuleConditionPtrInput is an input type that accepts BucketWebsiteConfigurationV2RoutingRuleConditionArgs, BucketWebsiteConfigurationV2RoutingRuleConditionPtr and BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2RoutingRuleConditionPtrInput` via: +// +// BucketWebsiteConfigurationV2RoutingRuleConditionArgs{...} +// +// or: +// +// nil +type BucketWebsiteConfigurationV2RoutingRuleConditionPtrInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput() BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput + ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput +} + +type bucketWebsiteConfigurationV2RoutingRuleConditionPtrType BucketWebsiteConfigurationV2RoutingRuleConditionArgs + +func BucketWebsiteConfigurationV2RoutingRuleConditionPtr(v *BucketWebsiteConfigurationV2RoutingRuleConditionArgs) BucketWebsiteConfigurationV2RoutingRuleConditionPtrInput { + return (*bucketWebsiteConfigurationV2RoutingRuleConditionPtrType)(v) +} + +func (*bucketWebsiteConfigurationV2RoutingRuleConditionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2RoutingRuleCondition)(nil)).Elem() +} + +func (i *bucketWebsiteConfigurationV2RoutingRuleConditionPtrType) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput() BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return i.ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(context.Background()) +} + +func (i *bucketWebsiteConfigurationV2RoutingRuleConditionPtrType) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) +} + +type BucketWebsiteConfigurationV2RoutingRuleConditionOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2RoutingRuleConditionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleCondition)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2RoutingRuleConditionOutput) ToBucketWebsiteConfigurationV2RoutingRuleConditionOutput() BucketWebsiteConfigurationV2RoutingRuleConditionOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleConditionOutput) ToBucketWebsiteConfigurationV2RoutingRuleConditionOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleConditionOutput) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput() BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return o.ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(context.Background()) +} + +func (o BucketWebsiteConfigurationV2RoutingRuleConditionOutput) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BucketWebsiteConfigurationV2RoutingRuleCondition) *BucketWebsiteConfigurationV2RoutingRuleCondition { + return &v + }).(BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) +} + +// HTTP error code when the redirect is applied. If specified with `keyPrefixEquals`, then both must be true for the redirect to be applied. +func (o BucketWebsiteConfigurationV2RoutingRuleConditionOutput) HttpErrorCodeReturnedEquals() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRuleCondition) *string { return v.HttpErrorCodeReturnedEquals }).(pulumi.StringPtrOutput) +} + +// Object key name prefix when the redirect is applied. If specified with `httpErrorCodeReturnedEquals`, then both must be true for the redirect to be applied. +func (o BucketWebsiteConfigurationV2RoutingRuleConditionOutput) KeyPrefixEquals() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRuleCondition) *string { return v.KeyPrefixEquals }).(pulumi.StringPtrOutput) +} + +type BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BucketWebsiteConfigurationV2RoutingRuleCondition)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput() BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) ToBucketWebsiteConfigurationV2RoutingRuleConditionPtrOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) Elem() BucketWebsiteConfigurationV2RoutingRuleConditionOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2RoutingRuleCondition) BucketWebsiteConfigurationV2RoutingRuleCondition { + if v != nil { + return *v + } + var ret BucketWebsiteConfigurationV2RoutingRuleCondition + return ret + }).(BucketWebsiteConfigurationV2RoutingRuleConditionOutput) +} + +// HTTP error code when the redirect is applied. If specified with `keyPrefixEquals`, then both must be true for the redirect to be applied. +func (o BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) HttpErrorCodeReturnedEquals() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2RoutingRuleCondition) *string { + if v == nil { + return nil + } + return v.HttpErrorCodeReturnedEquals + }).(pulumi.StringPtrOutput) +} + +// Object key name prefix when the redirect is applied. If specified with `httpErrorCodeReturnedEquals`, then both must be true for the redirect to be applied. +func (o BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput) KeyPrefixEquals() pulumi.StringPtrOutput { + return o.ApplyT(func(v *BucketWebsiteConfigurationV2RoutingRuleCondition) *string { + if v == nil { + return nil + } + return v.KeyPrefixEquals + }).(pulumi.StringPtrOutput) +} + +type BucketWebsiteConfigurationV2RoutingRuleRedirect struct { + // Host name to use in the redirect request. + HostName *string `pulumi:"hostName"` + // HTTP redirect code to use on the response. + HttpRedirectCode *string `pulumi:"httpRedirectCode"` + // Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Valid values: `http`, `https`. + Protocol *string `pulumi:"protocol"` + // Object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix `docs/` (objects in the `docs/` folder) to `documents/`, you can set a `condition` block with `keyPrefixEquals` set to `docs/` and in the `redirect` set `replaceKeyPrefixWith` to `/documents`. + ReplaceKeyPrefixWith *string `pulumi:"replaceKeyPrefixWith"` + // Specific object key to use in the redirect request. For example, redirect request to `error.html`. + ReplaceKeyWith *string `pulumi:"replaceKeyWith"` +} + +// BucketWebsiteConfigurationV2RoutingRuleRedirectInput is an input type that accepts BucketWebsiteConfigurationV2RoutingRuleRedirectArgs and BucketWebsiteConfigurationV2RoutingRuleRedirectOutput values. +// You can construct a concrete instance of `BucketWebsiteConfigurationV2RoutingRuleRedirectInput` via: +// +// BucketWebsiteConfigurationV2RoutingRuleRedirectArgs{...} +type BucketWebsiteConfigurationV2RoutingRuleRedirectInput interface { + pulumi.Input + + ToBucketWebsiteConfigurationV2RoutingRuleRedirectOutput() BucketWebsiteConfigurationV2RoutingRuleRedirectOutput + ToBucketWebsiteConfigurationV2RoutingRuleRedirectOutputWithContext(context.Context) BucketWebsiteConfigurationV2RoutingRuleRedirectOutput +} + +type BucketWebsiteConfigurationV2RoutingRuleRedirectArgs struct { + // Host name to use in the redirect request. + HostName pulumi.StringPtrInput `pulumi:"hostName"` + // HTTP redirect code to use on the response. + HttpRedirectCode pulumi.StringPtrInput `pulumi:"httpRedirectCode"` + // Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Valid values: `http`, `https`. + Protocol pulumi.StringPtrInput `pulumi:"protocol"` + // Object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix `docs/` (objects in the `docs/` folder) to `documents/`, you can set a `condition` block with `keyPrefixEquals` set to `docs/` and in the `redirect` set `replaceKeyPrefixWith` to `/documents`. + ReplaceKeyPrefixWith pulumi.StringPtrInput `pulumi:"replaceKeyPrefixWith"` + // Specific object key to use in the redirect request. For example, redirect request to `error.html`. + ReplaceKeyWith pulumi.StringPtrInput `pulumi:"replaceKeyWith"` +} + +func (BucketWebsiteConfigurationV2RoutingRuleRedirectArgs) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleRedirect)(nil)).Elem() +} + +func (i BucketWebsiteConfigurationV2RoutingRuleRedirectArgs) ToBucketWebsiteConfigurationV2RoutingRuleRedirectOutput() BucketWebsiteConfigurationV2RoutingRuleRedirectOutput { + return i.ToBucketWebsiteConfigurationV2RoutingRuleRedirectOutputWithContext(context.Background()) +} + +func (i BucketWebsiteConfigurationV2RoutingRuleRedirectArgs) ToBucketWebsiteConfigurationV2RoutingRuleRedirectOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleRedirectOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) +} + +type BucketWebsiteConfigurationV2RoutingRuleRedirectOutput struct{ *pulumi.OutputState } + +func (BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleRedirect)(nil)).Elem() +} + +func (o BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) ToBucketWebsiteConfigurationV2RoutingRuleRedirectOutput() BucketWebsiteConfigurationV2RoutingRuleRedirectOutput { + return o +} + +func (o BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) ToBucketWebsiteConfigurationV2RoutingRuleRedirectOutputWithContext(ctx context.Context) BucketWebsiteConfigurationV2RoutingRuleRedirectOutput { + return o +} + +// Host name to use in the redirect request. +func (o BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) HostName() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRuleRedirect) *string { return v.HostName }).(pulumi.StringPtrOutput) +} + +// HTTP redirect code to use on the response. +func (o BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) HttpRedirectCode() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRuleRedirect) *string { return v.HttpRedirectCode }).(pulumi.StringPtrOutput) +} + +// Protocol to use when redirecting requests. The default is the protocol that is used in the original request. Valid values: `http`, `https`. +func (o BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRuleRedirect) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +// Object key prefix to use in the redirect request. For example, to redirect requests for all pages with prefix `docs/` (objects in the `docs/` folder) to `documents/`, you can set a `condition` block with `keyPrefixEquals` set to `docs/` and in the `redirect` set `replaceKeyPrefixWith` to `/documents`. +func (o BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) ReplaceKeyPrefixWith() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRuleRedirect) *string { return v.ReplaceKeyPrefixWith }).(pulumi.StringPtrOutput) +} + +// Specific object key to use in the redirect request. For example, redirect request to `error.html`. +func (o BucketWebsiteConfigurationV2RoutingRuleRedirectOutput) ReplaceKeyWith() pulumi.StringPtrOutput { + return o.ApplyT(func(v BucketWebsiteConfigurationV2RoutingRuleRedirect) *string { return v.ReplaceKeyWith }).(pulumi.StringPtrOutput) +} + +type DirectoryBucketLocation struct { + // [Availability Zone ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#az-ids) or Local Zone ID. + Name string `pulumi:"name"` + // Location type. Valid values: `AvailabilityZone`, `LocalZone`. + Type *string `pulumi:"type"` +} + +// DirectoryBucketLocationInput is an input type that accepts DirectoryBucketLocationArgs and DirectoryBucketLocationOutput values. +// You can construct a concrete instance of `DirectoryBucketLocationInput` via: +// +// DirectoryBucketLocationArgs{...} +type DirectoryBucketLocationInput interface { + pulumi.Input + + ToDirectoryBucketLocationOutput() DirectoryBucketLocationOutput + ToDirectoryBucketLocationOutputWithContext(context.Context) DirectoryBucketLocationOutput +} + +type DirectoryBucketLocationArgs struct { + // [Availability Zone ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#az-ids) or Local Zone ID. + Name pulumi.StringInput `pulumi:"name"` + // Location type. Valid values: `AvailabilityZone`, `LocalZone`. + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (DirectoryBucketLocationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DirectoryBucketLocation)(nil)).Elem() +} + +func (i DirectoryBucketLocationArgs) ToDirectoryBucketLocationOutput() DirectoryBucketLocationOutput { + return i.ToDirectoryBucketLocationOutputWithContext(context.Background()) +} + +func (i DirectoryBucketLocationArgs) ToDirectoryBucketLocationOutputWithContext(ctx context.Context) DirectoryBucketLocationOutput { + return pulumi.ToOutputWithContext(ctx, i).(DirectoryBucketLocationOutput) +} + +func (i DirectoryBucketLocationArgs) ToDirectoryBucketLocationPtrOutput() DirectoryBucketLocationPtrOutput { + return i.ToDirectoryBucketLocationPtrOutputWithContext(context.Background()) +} + +func (i DirectoryBucketLocationArgs) ToDirectoryBucketLocationPtrOutputWithContext(ctx context.Context) DirectoryBucketLocationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DirectoryBucketLocationOutput).ToDirectoryBucketLocationPtrOutputWithContext(ctx) +} + +// DirectoryBucketLocationPtrInput is an input type that accepts DirectoryBucketLocationArgs, DirectoryBucketLocationPtr and DirectoryBucketLocationPtrOutput values. +// You can construct a concrete instance of `DirectoryBucketLocationPtrInput` via: +// +// DirectoryBucketLocationArgs{...} +// +// or: +// +// nil +type DirectoryBucketLocationPtrInput interface { + pulumi.Input + + ToDirectoryBucketLocationPtrOutput() DirectoryBucketLocationPtrOutput + ToDirectoryBucketLocationPtrOutputWithContext(context.Context) DirectoryBucketLocationPtrOutput +} + +type directoryBucketLocationPtrType DirectoryBucketLocationArgs + +func DirectoryBucketLocationPtr(v *DirectoryBucketLocationArgs) DirectoryBucketLocationPtrInput { + return (*directoryBucketLocationPtrType)(v) +} + +func (*directoryBucketLocationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DirectoryBucketLocation)(nil)).Elem() +} + +func (i *directoryBucketLocationPtrType) ToDirectoryBucketLocationPtrOutput() DirectoryBucketLocationPtrOutput { + return i.ToDirectoryBucketLocationPtrOutputWithContext(context.Background()) +} + +func (i *directoryBucketLocationPtrType) ToDirectoryBucketLocationPtrOutputWithContext(ctx context.Context) DirectoryBucketLocationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DirectoryBucketLocationPtrOutput) +} + +type DirectoryBucketLocationOutput struct{ *pulumi.OutputState } + +func (DirectoryBucketLocationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DirectoryBucketLocation)(nil)).Elem() +} + +func (o DirectoryBucketLocationOutput) ToDirectoryBucketLocationOutput() DirectoryBucketLocationOutput { + return o +} + +func (o DirectoryBucketLocationOutput) ToDirectoryBucketLocationOutputWithContext(ctx context.Context) DirectoryBucketLocationOutput { + return o +} + +func (o DirectoryBucketLocationOutput) ToDirectoryBucketLocationPtrOutput() DirectoryBucketLocationPtrOutput { + return o.ToDirectoryBucketLocationPtrOutputWithContext(context.Background()) +} + +func (o DirectoryBucketLocationOutput) ToDirectoryBucketLocationPtrOutputWithContext(ctx context.Context) DirectoryBucketLocationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DirectoryBucketLocation) *DirectoryBucketLocation { + return &v + }).(DirectoryBucketLocationPtrOutput) +} + +// [Availability Zone ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#az-ids) or Local Zone ID. +func (o DirectoryBucketLocationOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v DirectoryBucketLocation) string { return v.Name }).(pulumi.StringOutput) +} + +// Location type. Valid values: `AvailabilityZone`, `LocalZone`. +func (o DirectoryBucketLocationOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v DirectoryBucketLocation) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type DirectoryBucketLocationPtrOutput struct{ *pulumi.OutputState } + +func (DirectoryBucketLocationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DirectoryBucketLocation)(nil)).Elem() +} + +func (o DirectoryBucketLocationPtrOutput) ToDirectoryBucketLocationPtrOutput() DirectoryBucketLocationPtrOutput { + return o +} + +func (o DirectoryBucketLocationPtrOutput) ToDirectoryBucketLocationPtrOutputWithContext(ctx context.Context) DirectoryBucketLocationPtrOutput { + return o +} + +func (o DirectoryBucketLocationPtrOutput) Elem() DirectoryBucketLocationOutput { + return o.ApplyT(func(v *DirectoryBucketLocation) DirectoryBucketLocation { + if v != nil { + return *v + } + var ret DirectoryBucketLocation + return ret + }).(DirectoryBucketLocationOutput) +} + +// [Availability Zone ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#az-ids) or Local Zone ID. +func (o DirectoryBucketLocationPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DirectoryBucketLocation) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Location type. Valid values: `AvailabilityZone`, `LocalZone`. +func (o DirectoryBucketLocationPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DirectoryBucketLocation) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + +type InventoryDestination struct { + // S3 bucket configuration where inventory results are published (documented below). + Bucket InventoryDestinationBucket `pulumi:"bucket"` +} + +// InventoryDestinationInput is an input type that accepts InventoryDestinationArgs and InventoryDestinationOutput values. +// You can construct a concrete instance of `InventoryDestinationInput` via: +// +// InventoryDestinationArgs{...} +type InventoryDestinationInput interface { + pulumi.Input + + ToInventoryDestinationOutput() InventoryDestinationOutput + ToInventoryDestinationOutputWithContext(context.Context) InventoryDestinationOutput +} + +type InventoryDestinationArgs struct { + // S3 bucket configuration where inventory results are published (documented below). + Bucket InventoryDestinationBucketInput `pulumi:"bucket"` +} + +func (InventoryDestinationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestination)(nil)).Elem() +} + +func (i InventoryDestinationArgs) ToInventoryDestinationOutput() InventoryDestinationOutput { + return i.ToInventoryDestinationOutputWithContext(context.Background()) +} + +func (i InventoryDestinationArgs) ToInventoryDestinationOutputWithContext(ctx context.Context) InventoryDestinationOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationOutput) +} + +func (i InventoryDestinationArgs) ToInventoryDestinationPtrOutput() InventoryDestinationPtrOutput { + return i.ToInventoryDestinationPtrOutputWithContext(context.Background()) +} + +func (i InventoryDestinationArgs) ToInventoryDestinationPtrOutputWithContext(ctx context.Context) InventoryDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationOutput).ToInventoryDestinationPtrOutputWithContext(ctx) +} + +// InventoryDestinationPtrInput is an input type that accepts InventoryDestinationArgs, InventoryDestinationPtr and InventoryDestinationPtrOutput values. +// You can construct a concrete instance of `InventoryDestinationPtrInput` via: +// +// InventoryDestinationArgs{...} +// +// or: +// +// nil +type InventoryDestinationPtrInput interface { + pulumi.Input + + ToInventoryDestinationPtrOutput() InventoryDestinationPtrOutput + ToInventoryDestinationPtrOutputWithContext(context.Context) InventoryDestinationPtrOutput +} + +type inventoryDestinationPtrType InventoryDestinationArgs + +func InventoryDestinationPtr(v *InventoryDestinationArgs) InventoryDestinationPtrInput { + return (*inventoryDestinationPtrType)(v) +} + +func (*inventoryDestinationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestination)(nil)).Elem() +} + +func (i *inventoryDestinationPtrType) ToInventoryDestinationPtrOutput() InventoryDestinationPtrOutput { + return i.ToInventoryDestinationPtrOutputWithContext(context.Background()) +} + +func (i *inventoryDestinationPtrType) ToInventoryDestinationPtrOutputWithContext(ctx context.Context) InventoryDestinationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationPtrOutput) +} + +type InventoryDestinationOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestination)(nil)).Elem() +} + +func (o InventoryDestinationOutput) ToInventoryDestinationOutput() InventoryDestinationOutput { + return o +} + +func (o InventoryDestinationOutput) ToInventoryDestinationOutputWithContext(ctx context.Context) InventoryDestinationOutput { + return o +} + +func (o InventoryDestinationOutput) ToInventoryDestinationPtrOutput() InventoryDestinationPtrOutput { + return o.ToInventoryDestinationPtrOutputWithContext(context.Background()) +} + +func (o InventoryDestinationOutput) ToInventoryDestinationPtrOutputWithContext(ctx context.Context) InventoryDestinationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InventoryDestination) *InventoryDestination { + return &v + }).(InventoryDestinationPtrOutput) +} + +// S3 bucket configuration where inventory results are published (documented below). +func (o InventoryDestinationOutput) Bucket() InventoryDestinationBucketOutput { + return o.ApplyT(func(v InventoryDestination) InventoryDestinationBucket { return v.Bucket }).(InventoryDestinationBucketOutput) +} + +type InventoryDestinationPtrOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestination)(nil)).Elem() +} + +func (o InventoryDestinationPtrOutput) ToInventoryDestinationPtrOutput() InventoryDestinationPtrOutput { + return o +} + +func (o InventoryDestinationPtrOutput) ToInventoryDestinationPtrOutputWithContext(ctx context.Context) InventoryDestinationPtrOutput { + return o +} + +func (o InventoryDestinationPtrOutput) Elem() InventoryDestinationOutput { + return o.ApplyT(func(v *InventoryDestination) InventoryDestination { + if v != nil { + return *v + } + var ret InventoryDestination + return ret + }).(InventoryDestinationOutput) +} + +// S3 bucket configuration where inventory results are published (documented below). +func (o InventoryDestinationPtrOutput) Bucket() InventoryDestinationBucketPtrOutput { + return o.ApplyT(func(v *InventoryDestination) *InventoryDestinationBucket { + if v == nil { + return nil + } + return &v.Bucket + }).(InventoryDestinationBucketPtrOutput) +} + +type InventoryDestinationBucket struct { + // ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes. + AccountId *string `pulumi:"accountId"` + // Amazon S3 bucket ARN of the destination. + BucketArn string `pulumi:"bucketArn"` + // Contains the type of server-side encryption to use to encrypt the inventory (documented below). + Encryption *InventoryDestinationBucketEncryption `pulumi:"encryption"` + // Specifies the output format of the inventory results. Can be `CSV`, [`ORC`](https://orc.apache.org/) or [`Parquet`](https://parquet.apache.org/). + Format string `pulumi:"format"` + // Prefix that is prepended to all inventory results. + Prefix *string `pulumi:"prefix"` +} + +// InventoryDestinationBucketInput is an input type that accepts InventoryDestinationBucketArgs and InventoryDestinationBucketOutput values. +// You can construct a concrete instance of `InventoryDestinationBucketInput` via: +// +// InventoryDestinationBucketArgs{...} +type InventoryDestinationBucketInput interface { + pulumi.Input + + ToInventoryDestinationBucketOutput() InventoryDestinationBucketOutput + ToInventoryDestinationBucketOutputWithContext(context.Context) InventoryDestinationBucketOutput +} + +type InventoryDestinationBucketArgs struct { + // ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes. + AccountId pulumi.StringPtrInput `pulumi:"accountId"` + // Amazon S3 bucket ARN of the destination. + BucketArn pulumi.StringInput `pulumi:"bucketArn"` + // Contains the type of server-side encryption to use to encrypt the inventory (documented below). + Encryption InventoryDestinationBucketEncryptionPtrInput `pulumi:"encryption"` + // Specifies the output format of the inventory results. Can be `CSV`, [`ORC`](https://orc.apache.org/) or [`Parquet`](https://parquet.apache.org/). + Format pulumi.StringInput `pulumi:"format"` + // Prefix that is prepended to all inventory results. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` +} + +func (InventoryDestinationBucketArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucket)(nil)).Elem() +} + +func (i InventoryDestinationBucketArgs) ToInventoryDestinationBucketOutput() InventoryDestinationBucketOutput { + return i.ToInventoryDestinationBucketOutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketArgs) ToInventoryDestinationBucketOutputWithContext(ctx context.Context) InventoryDestinationBucketOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketOutput) +} + +func (i InventoryDestinationBucketArgs) ToInventoryDestinationBucketPtrOutput() InventoryDestinationBucketPtrOutput { + return i.ToInventoryDestinationBucketPtrOutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketArgs) ToInventoryDestinationBucketPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketOutput).ToInventoryDestinationBucketPtrOutputWithContext(ctx) +} + +// InventoryDestinationBucketPtrInput is an input type that accepts InventoryDestinationBucketArgs, InventoryDestinationBucketPtr and InventoryDestinationBucketPtrOutput values. +// You can construct a concrete instance of `InventoryDestinationBucketPtrInput` via: +// +// InventoryDestinationBucketArgs{...} +// +// or: +// +// nil +type InventoryDestinationBucketPtrInput interface { + pulumi.Input + + ToInventoryDestinationBucketPtrOutput() InventoryDestinationBucketPtrOutput + ToInventoryDestinationBucketPtrOutputWithContext(context.Context) InventoryDestinationBucketPtrOutput +} + +type inventoryDestinationBucketPtrType InventoryDestinationBucketArgs + +func InventoryDestinationBucketPtr(v *InventoryDestinationBucketArgs) InventoryDestinationBucketPtrInput { + return (*inventoryDestinationBucketPtrType)(v) +} + +func (*inventoryDestinationBucketPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucket)(nil)).Elem() +} + +func (i *inventoryDestinationBucketPtrType) ToInventoryDestinationBucketPtrOutput() InventoryDestinationBucketPtrOutput { + return i.ToInventoryDestinationBucketPtrOutputWithContext(context.Background()) +} + +func (i *inventoryDestinationBucketPtrType) ToInventoryDestinationBucketPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketPtrOutput) +} + +type InventoryDestinationBucketOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucket)(nil)).Elem() +} + +func (o InventoryDestinationBucketOutput) ToInventoryDestinationBucketOutput() InventoryDestinationBucketOutput { + return o +} + +func (o InventoryDestinationBucketOutput) ToInventoryDestinationBucketOutputWithContext(ctx context.Context) InventoryDestinationBucketOutput { + return o +} + +func (o InventoryDestinationBucketOutput) ToInventoryDestinationBucketPtrOutput() InventoryDestinationBucketPtrOutput { + return o.ToInventoryDestinationBucketPtrOutputWithContext(context.Background()) +} + +func (o InventoryDestinationBucketOutput) ToInventoryDestinationBucketPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InventoryDestinationBucket) *InventoryDestinationBucket { + return &v + }).(InventoryDestinationBucketPtrOutput) +} + +// ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes. +func (o InventoryDestinationBucketOutput) AccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v InventoryDestinationBucket) *string { return v.AccountId }).(pulumi.StringPtrOutput) +} + +// Amazon S3 bucket ARN of the destination. +func (o InventoryDestinationBucketOutput) BucketArn() pulumi.StringOutput { + return o.ApplyT(func(v InventoryDestinationBucket) string { return v.BucketArn }).(pulumi.StringOutput) +} + +// Contains the type of server-side encryption to use to encrypt the inventory (documented below). +func (o InventoryDestinationBucketOutput) Encryption() InventoryDestinationBucketEncryptionPtrOutput { + return o.ApplyT(func(v InventoryDestinationBucket) *InventoryDestinationBucketEncryption { return v.Encryption }).(InventoryDestinationBucketEncryptionPtrOutput) +} + +// Specifies the output format of the inventory results. Can be `CSV`, [`ORC`](https://orc.apache.org/) or [`Parquet`](https://parquet.apache.org/). +func (o InventoryDestinationBucketOutput) Format() pulumi.StringOutput { + return o.ApplyT(func(v InventoryDestinationBucket) string { return v.Format }).(pulumi.StringOutput) +} + +// Prefix that is prepended to all inventory results. +func (o InventoryDestinationBucketOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v InventoryDestinationBucket) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +type InventoryDestinationBucketPtrOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucket)(nil)).Elem() +} + +func (o InventoryDestinationBucketPtrOutput) ToInventoryDestinationBucketPtrOutput() InventoryDestinationBucketPtrOutput { + return o +} + +func (o InventoryDestinationBucketPtrOutput) ToInventoryDestinationBucketPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketPtrOutput { + return o +} + +func (o InventoryDestinationBucketPtrOutput) Elem() InventoryDestinationBucketOutput { + return o.ApplyT(func(v *InventoryDestinationBucket) InventoryDestinationBucket { + if v != nil { + return *v + } + var ret InventoryDestinationBucket + return ret + }).(InventoryDestinationBucketOutput) +} + +// ID of the account that owns the destination bucket. Recommended to be set to prevent problems if the destination bucket ownership changes. +func (o InventoryDestinationBucketPtrOutput) AccountId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucket) *string { + if v == nil { + return nil + } + return v.AccountId + }).(pulumi.StringPtrOutput) +} + +// Amazon S3 bucket ARN of the destination. +func (o InventoryDestinationBucketPtrOutput) BucketArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucket) *string { + if v == nil { + return nil + } + return &v.BucketArn + }).(pulumi.StringPtrOutput) +} + +// Contains the type of server-side encryption to use to encrypt the inventory (documented below). +func (o InventoryDestinationBucketPtrOutput) Encryption() InventoryDestinationBucketEncryptionPtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucket) *InventoryDestinationBucketEncryption { + if v == nil { + return nil + } + return v.Encryption + }).(InventoryDestinationBucketEncryptionPtrOutput) +} + +// Specifies the output format of the inventory results. Can be `CSV`, [`ORC`](https://orc.apache.org/) or [`Parquet`](https://parquet.apache.org/). +func (o InventoryDestinationBucketPtrOutput) Format() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucket) *string { + if v == nil { + return nil + } + return &v.Format + }).(pulumi.StringPtrOutput) +} + +// Prefix that is prepended to all inventory results. +func (o InventoryDestinationBucketPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucket) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +type InventoryDestinationBucketEncryption struct { + // Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below). + SseKms *InventoryDestinationBucketEncryptionSseKms `pulumi:"sseKms"` + // Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file. + SseS3 *InventoryDestinationBucketEncryptionSseS3 `pulumi:"sseS3"` +} + +// InventoryDestinationBucketEncryptionInput is an input type that accepts InventoryDestinationBucketEncryptionArgs and InventoryDestinationBucketEncryptionOutput values. +// You can construct a concrete instance of `InventoryDestinationBucketEncryptionInput` via: +// +// InventoryDestinationBucketEncryptionArgs{...} +type InventoryDestinationBucketEncryptionInput interface { + pulumi.Input + + ToInventoryDestinationBucketEncryptionOutput() InventoryDestinationBucketEncryptionOutput + ToInventoryDestinationBucketEncryptionOutputWithContext(context.Context) InventoryDestinationBucketEncryptionOutput +} + +type InventoryDestinationBucketEncryptionArgs struct { + // Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below). + SseKms InventoryDestinationBucketEncryptionSseKmsPtrInput `pulumi:"sseKms"` + // Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file. + SseS3 InventoryDestinationBucketEncryptionSseS3PtrInput `pulumi:"sseS3"` +} + +func (InventoryDestinationBucketEncryptionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucketEncryption)(nil)).Elem() +} + +func (i InventoryDestinationBucketEncryptionArgs) ToInventoryDestinationBucketEncryptionOutput() InventoryDestinationBucketEncryptionOutput { + return i.ToInventoryDestinationBucketEncryptionOutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketEncryptionArgs) ToInventoryDestinationBucketEncryptionOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionOutput) +} + +func (i InventoryDestinationBucketEncryptionArgs) ToInventoryDestinationBucketEncryptionPtrOutput() InventoryDestinationBucketEncryptionPtrOutput { + return i.ToInventoryDestinationBucketEncryptionPtrOutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketEncryptionArgs) ToInventoryDestinationBucketEncryptionPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionOutput).ToInventoryDestinationBucketEncryptionPtrOutputWithContext(ctx) +} + +// InventoryDestinationBucketEncryptionPtrInput is an input type that accepts InventoryDestinationBucketEncryptionArgs, InventoryDestinationBucketEncryptionPtr and InventoryDestinationBucketEncryptionPtrOutput values. +// You can construct a concrete instance of `InventoryDestinationBucketEncryptionPtrInput` via: +// +// InventoryDestinationBucketEncryptionArgs{...} +// +// or: +// +// nil +type InventoryDestinationBucketEncryptionPtrInput interface { + pulumi.Input + + ToInventoryDestinationBucketEncryptionPtrOutput() InventoryDestinationBucketEncryptionPtrOutput + ToInventoryDestinationBucketEncryptionPtrOutputWithContext(context.Context) InventoryDestinationBucketEncryptionPtrOutput +} + +type inventoryDestinationBucketEncryptionPtrType InventoryDestinationBucketEncryptionArgs + +func InventoryDestinationBucketEncryptionPtr(v *InventoryDestinationBucketEncryptionArgs) InventoryDestinationBucketEncryptionPtrInput { + return (*inventoryDestinationBucketEncryptionPtrType)(v) +} + +func (*inventoryDestinationBucketEncryptionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucketEncryption)(nil)).Elem() +} + +func (i *inventoryDestinationBucketEncryptionPtrType) ToInventoryDestinationBucketEncryptionPtrOutput() InventoryDestinationBucketEncryptionPtrOutput { + return i.ToInventoryDestinationBucketEncryptionPtrOutputWithContext(context.Background()) +} + +func (i *inventoryDestinationBucketEncryptionPtrType) ToInventoryDestinationBucketEncryptionPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionPtrOutput) +} + +type InventoryDestinationBucketEncryptionOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketEncryptionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucketEncryption)(nil)).Elem() +} + +func (o InventoryDestinationBucketEncryptionOutput) ToInventoryDestinationBucketEncryptionOutput() InventoryDestinationBucketEncryptionOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionOutput) ToInventoryDestinationBucketEncryptionOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionOutput) ToInventoryDestinationBucketEncryptionPtrOutput() InventoryDestinationBucketEncryptionPtrOutput { + return o.ToInventoryDestinationBucketEncryptionPtrOutputWithContext(context.Background()) +} + +func (o InventoryDestinationBucketEncryptionOutput) ToInventoryDestinationBucketEncryptionPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InventoryDestinationBucketEncryption) *InventoryDestinationBucketEncryption { + return &v + }).(InventoryDestinationBucketEncryptionPtrOutput) +} + +// Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below). +func (o InventoryDestinationBucketEncryptionOutput) SseKms() InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return o.ApplyT(func(v InventoryDestinationBucketEncryption) *InventoryDestinationBucketEncryptionSseKms { + return v.SseKms + }).(InventoryDestinationBucketEncryptionSseKmsPtrOutput) +} + +// Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file. +func (o InventoryDestinationBucketEncryptionOutput) SseS3() InventoryDestinationBucketEncryptionSseS3PtrOutput { + return o.ApplyT(func(v InventoryDestinationBucketEncryption) *InventoryDestinationBucketEncryptionSseS3 { + return v.SseS3 + }).(InventoryDestinationBucketEncryptionSseS3PtrOutput) +} + +type InventoryDestinationBucketEncryptionPtrOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketEncryptionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucketEncryption)(nil)).Elem() +} + +func (o InventoryDestinationBucketEncryptionPtrOutput) ToInventoryDestinationBucketEncryptionPtrOutput() InventoryDestinationBucketEncryptionPtrOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionPtrOutput) ToInventoryDestinationBucketEncryptionPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionPtrOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionPtrOutput) Elem() InventoryDestinationBucketEncryptionOutput { + return o.ApplyT(func(v *InventoryDestinationBucketEncryption) InventoryDestinationBucketEncryption { + if v != nil { + return *v + } + var ret InventoryDestinationBucketEncryption + return ret + }).(InventoryDestinationBucketEncryptionOutput) +} + +// Specifies to use server-side encryption with AWS KMS-managed keys to encrypt the inventory file (documented below). +func (o InventoryDestinationBucketEncryptionPtrOutput) SseKms() InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucketEncryption) *InventoryDestinationBucketEncryptionSseKms { + if v == nil { + return nil + } + return v.SseKms + }).(InventoryDestinationBucketEncryptionSseKmsPtrOutput) +} + +// Specifies to use server-side encryption with Amazon S3-managed keys (SSE-S3) to encrypt the inventory file. +func (o InventoryDestinationBucketEncryptionPtrOutput) SseS3() InventoryDestinationBucketEncryptionSseS3PtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucketEncryption) *InventoryDestinationBucketEncryptionSseS3 { + if v == nil { + return nil + } + return v.SseS3 + }).(InventoryDestinationBucketEncryptionSseS3PtrOutput) +} + +type InventoryDestinationBucketEncryptionSseKms struct { + // ARN of the KMS customer master key (CMK) used to encrypt the inventory file. + KeyId string `pulumi:"keyId"` +} + +// InventoryDestinationBucketEncryptionSseKmsInput is an input type that accepts InventoryDestinationBucketEncryptionSseKmsArgs and InventoryDestinationBucketEncryptionSseKmsOutput values. +// You can construct a concrete instance of `InventoryDestinationBucketEncryptionSseKmsInput` via: +// +// InventoryDestinationBucketEncryptionSseKmsArgs{...} +type InventoryDestinationBucketEncryptionSseKmsInput interface { + pulumi.Input + + ToInventoryDestinationBucketEncryptionSseKmsOutput() InventoryDestinationBucketEncryptionSseKmsOutput + ToInventoryDestinationBucketEncryptionSseKmsOutputWithContext(context.Context) InventoryDestinationBucketEncryptionSseKmsOutput +} + +type InventoryDestinationBucketEncryptionSseKmsArgs struct { + // ARN of the KMS customer master key (CMK) used to encrypt the inventory file. + KeyId pulumi.StringInput `pulumi:"keyId"` +} + +func (InventoryDestinationBucketEncryptionSseKmsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucketEncryptionSseKms)(nil)).Elem() +} + +func (i InventoryDestinationBucketEncryptionSseKmsArgs) ToInventoryDestinationBucketEncryptionSseKmsOutput() InventoryDestinationBucketEncryptionSseKmsOutput { + return i.ToInventoryDestinationBucketEncryptionSseKmsOutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketEncryptionSseKmsArgs) ToInventoryDestinationBucketEncryptionSseKmsOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseKmsOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionSseKmsOutput) +} + +func (i InventoryDestinationBucketEncryptionSseKmsArgs) ToInventoryDestinationBucketEncryptionSseKmsPtrOutput() InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return i.ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketEncryptionSseKmsArgs) ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionSseKmsOutput).ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(ctx) +} + +// InventoryDestinationBucketEncryptionSseKmsPtrInput is an input type that accepts InventoryDestinationBucketEncryptionSseKmsArgs, InventoryDestinationBucketEncryptionSseKmsPtr and InventoryDestinationBucketEncryptionSseKmsPtrOutput values. +// You can construct a concrete instance of `InventoryDestinationBucketEncryptionSseKmsPtrInput` via: +// +// InventoryDestinationBucketEncryptionSseKmsArgs{...} +// +// or: +// +// nil +type InventoryDestinationBucketEncryptionSseKmsPtrInput interface { + pulumi.Input + + ToInventoryDestinationBucketEncryptionSseKmsPtrOutput() InventoryDestinationBucketEncryptionSseKmsPtrOutput + ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(context.Context) InventoryDestinationBucketEncryptionSseKmsPtrOutput +} + +type inventoryDestinationBucketEncryptionSseKmsPtrType InventoryDestinationBucketEncryptionSseKmsArgs + +func InventoryDestinationBucketEncryptionSseKmsPtr(v *InventoryDestinationBucketEncryptionSseKmsArgs) InventoryDestinationBucketEncryptionSseKmsPtrInput { + return (*inventoryDestinationBucketEncryptionSseKmsPtrType)(v) +} + +func (*inventoryDestinationBucketEncryptionSseKmsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucketEncryptionSseKms)(nil)).Elem() +} + +func (i *inventoryDestinationBucketEncryptionSseKmsPtrType) ToInventoryDestinationBucketEncryptionSseKmsPtrOutput() InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return i.ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(context.Background()) +} + +func (i *inventoryDestinationBucketEncryptionSseKmsPtrType) ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionSseKmsPtrOutput) +} + +type InventoryDestinationBucketEncryptionSseKmsOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketEncryptionSseKmsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucketEncryptionSseKms)(nil)).Elem() +} + +func (o InventoryDestinationBucketEncryptionSseKmsOutput) ToInventoryDestinationBucketEncryptionSseKmsOutput() InventoryDestinationBucketEncryptionSseKmsOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionSseKmsOutput) ToInventoryDestinationBucketEncryptionSseKmsOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseKmsOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionSseKmsOutput) ToInventoryDestinationBucketEncryptionSseKmsPtrOutput() InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return o.ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(context.Background()) +} + +func (o InventoryDestinationBucketEncryptionSseKmsOutput) ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InventoryDestinationBucketEncryptionSseKms) *InventoryDestinationBucketEncryptionSseKms { + return &v + }).(InventoryDestinationBucketEncryptionSseKmsPtrOutput) +} + +// ARN of the KMS customer master key (CMK) used to encrypt the inventory file. +func (o InventoryDestinationBucketEncryptionSseKmsOutput) KeyId() pulumi.StringOutput { + return o.ApplyT(func(v InventoryDestinationBucketEncryptionSseKms) string { return v.KeyId }).(pulumi.StringOutput) +} + +type InventoryDestinationBucketEncryptionSseKmsPtrOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketEncryptionSseKmsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucketEncryptionSseKms)(nil)).Elem() +} + +func (o InventoryDestinationBucketEncryptionSseKmsPtrOutput) ToInventoryDestinationBucketEncryptionSseKmsPtrOutput() InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionSseKmsPtrOutput) ToInventoryDestinationBucketEncryptionSseKmsPtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseKmsPtrOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionSseKmsPtrOutput) Elem() InventoryDestinationBucketEncryptionSseKmsOutput { + return o.ApplyT(func(v *InventoryDestinationBucketEncryptionSseKms) InventoryDestinationBucketEncryptionSseKms { + if v != nil { + return *v + } + var ret InventoryDestinationBucketEncryptionSseKms + return ret + }).(InventoryDestinationBucketEncryptionSseKmsOutput) +} + +// ARN of the KMS customer master key (CMK) used to encrypt the inventory file. +func (o InventoryDestinationBucketEncryptionSseKmsPtrOutput) KeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InventoryDestinationBucketEncryptionSseKms) *string { + if v == nil { + return nil + } + return &v.KeyId + }).(pulumi.StringPtrOutput) +} + +type InventoryDestinationBucketEncryptionSseS3 struct { +} + +// InventoryDestinationBucketEncryptionSseS3Input is an input type that accepts InventoryDestinationBucketEncryptionSseS3Args and InventoryDestinationBucketEncryptionSseS3Output values. +// You can construct a concrete instance of `InventoryDestinationBucketEncryptionSseS3Input` via: +// +// InventoryDestinationBucketEncryptionSseS3Args{...} +type InventoryDestinationBucketEncryptionSseS3Input interface { + pulumi.Input + + ToInventoryDestinationBucketEncryptionSseS3Output() InventoryDestinationBucketEncryptionSseS3Output + ToInventoryDestinationBucketEncryptionSseS3OutputWithContext(context.Context) InventoryDestinationBucketEncryptionSseS3Output +} + +type InventoryDestinationBucketEncryptionSseS3Args struct { +} + +func (InventoryDestinationBucketEncryptionSseS3Args) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucketEncryptionSseS3)(nil)).Elem() +} + +func (i InventoryDestinationBucketEncryptionSseS3Args) ToInventoryDestinationBucketEncryptionSseS3Output() InventoryDestinationBucketEncryptionSseS3Output { + return i.ToInventoryDestinationBucketEncryptionSseS3OutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketEncryptionSseS3Args) ToInventoryDestinationBucketEncryptionSseS3OutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseS3Output { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionSseS3Output) +} + +func (i InventoryDestinationBucketEncryptionSseS3Args) ToInventoryDestinationBucketEncryptionSseS3PtrOutput() InventoryDestinationBucketEncryptionSseS3PtrOutput { + return i.ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(context.Background()) +} + +func (i InventoryDestinationBucketEncryptionSseS3Args) ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseS3PtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionSseS3Output).ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(ctx) +} + +// InventoryDestinationBucketEncryptionSseS3PtrInput is an input type that accepts InventoryDestinationBucketEncryptionSseS3Args, InventoryDestinationBucketEncryptionSseS3Ptr and InventoryDestinationBucketEncryptionSseS3PtrOutput values. +// You can construct a concrete instance of `InventoryDestinationBucketEncryptionSseS3PtrInput` via: +// +// InventoryDestinationBucketEncryptionSseS3Args{...} +// +// or: +// +// nil +type InventoryDestinationBucketEncryptionSseS3PtrInput interface { + pulumi.Input + + ToInventoryDestinationBucketEncryptionSseS3PtrOutput() InventoryDestinationBucketEncryptionSseS3PtrOutput + ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(context.Context) InventoryDestinationBucketEncryptionSseS3PtrOutput +} + +type inventoryDestinationBucketEncryptionSseS3PtrType InventoryDestinationBucketEncryptionSseS3Args + +func InventoryDestinationBucketEncryptionSseS3Ptr(v *InventoryDestinationBucketEncryptionSseS3Args) InventoryDestinationBucketEncryptionSseS3PtrInput { + return (*inventoryDestinationBucketEncryptionSseS3PtrType)(v) +} + +func (*inventoryDestinationBucketEncryptionSseS3PtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucketEncryptionSseS3)(nil)).Elem() +} + +func (i *inventoryDestinationBucketEncryptionSseS3PtrType) ToInventoryDestinationBucketEncryptionSseS3PtrOutput() InventoryDestinationBucketEncryptionSseS3PtrOutput { + return i.ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(context.Background()) +} + +func (i *inventoryDestinationBucketEncryptionSseS3PtrType) ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseS3PtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryDestinationBucketEncryptionSseS3PtrOutput) +} + +type InventoryDestinationBucketEncryptionSseS3Output struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketEncryptionSseS3Output) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryDestinationBucketEncryptionSseS3)(nil)).Elem() +} + +func (o InventoryDestinationBucketEncryptionSseS3Output) ToInventoryDestinationBucketEncryptionSseS3Output() InventoryDestinationBucketEncryptionSseS3Output { + return o +} + +func (o InventoryDestinationBucketEncryptionSseS3Output) ToInventoryDestinationBucketEncryptionSseS3OutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseS3Output { + return o +} + +func (o InventoryDestinationBucketEncryptionSseS3Output) ToInventoryDestinationBucketEncryptionSseS3PtrOutput() InventoryDestinationBucketEncryptionSseS3PtrOutput { + return o.ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(context.Background()) +} + +func (o InventoryDestinationBucketEncryptionSseS3Output) ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseS3PtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InventoryDestinationBucketEncryptionSseS3) *InventoryDestinationBucketEncryptionSseS3 { + return &v + }).(InventoryDestinationBucketEncryptionSseS3PtrOutput) +} + +type InventoryDestinationBucketEncryptionSseS3PtrOutput struct{ *pulumi.OutputState } + +func (InventoryDestinationBucketEncryptionSseS3PtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryDestinationBucketEncryptionSseS3)(nil)).Elem() +} + +func (o InventoryDestinationBucketEncryptionSseS3PtrOutput) ToInventoryDestinationBucketEncryptionSseS3PtrOutput() InventoryDestinationBucketEncryptionSseS3PtrOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionSseS3PtrOutput) ToInventoryDestinationBucketEncryptionSseS3PtrOutputWithContext(ctx context.Context) InventoryDestinationBucketEncryptionSseS3PtrOutput { + return o +} + +func (o InventoryDestinationBucketEncryptionSseS3PtrOutput) Elem() InventoryDestinationBucketEncryptionSseS3Output { + return o.ApplyT(func(v *InventoryDestinationBucketEncryptionSseS3) InventoryDestinationBucketEncryptionSseS3 { + if v != nil { + return *v + } + var ret InventoryDestinationBucketEncryptionSseS3 + return ret + }).(InventoryDestinationBucketEncryptionSseS3Output) +} + +type InventoryFilter struct { + // Prefix that an object must have to be included in the inventory results. + Prefix *string `pulumi:"prefix"` +} + +// InventoryFilterInput is an input type that accepts InventoryFilterArgs and InventoryFilterOutput values. +// You can construct a concrete instance of `InventoryFilterInput` via: +// +// InventoryFilterArgs{...} +type InventoryFilterInput interface { + pulumi.Input + + ToInventoryFilterOutput() InventoryFilterOutput + ToInventoryFilterOutputWithContext(context.Context) InventoryFilterOutput +} + +type InventoryFilterArgs struct { + // Prefix that an object must have to be included in the inventory results. + Prefix pulumi.StringPtrInput `pulumi:"prefix"` +} + +func (InventoryFilterArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryFilter)(nil)).Elem() +} + +func (i InventoryFilterArgs) ToInventoryFilterOutput() InventoryFilterOutput { + return i.ToInventoryFilterOutputWithContext(context.Background()) +} + +func (i InventoryFilterArgs) ToInventoryFilterOutputWithContext(ctx context.Context) InventoryFilterOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryFilterOutput) +} + +func (i InventoryFilterArgs) ToInventoryFilterPtrOutput() InventoryFilterPtrOutput { + return i.ToInventoryFilterPtrOutputWithContext(context.Background()) +} + +func (i InventoryFilterArgs) ToInventoryFilterPtrOutputWithContext(ctx context.Context) InventoryFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryFilterOutput).ToInventoryFilterPtrOutputWithContext(ctx) +} + +// InventoryFilterPtrInput is an input type that accepts InventoryFilterArgs, InventoryFilterPtr and InventoryFilterPtrOutput values. +// You can construct a concrete instance of `InventoryFilterPtrInput` via: +// +// InventoryFilterArgs{...} +// +// or: +// +// nil +type InventoryFilterPtrInput interface { + pulumi.Input + + ToInventoryFilterPtrOutput() InventoryFilterPtrOutput + ToInventoryFilterPtrOutputWithContext(context.Context) InventoryFilterPtrOutput +} + +type inventoryFilterPtrType InventoryFilterArgs + +func InventoryFilterPtr(v *InventoryFilterArgs) InventoryFilterPtrInput { + return (*inventoryFilterPtrType)(v) +} + +func (*inventoryFilterPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryFilter)(nil)).Elem() +} + +func (i *inventoryFilterPtrType) ToInventoryFilterPtrOutput() InventoryFilterPtrOutput { + return i.ToInventoryFilterPtrOutputWithContext(context.Background()) +} + +func (i *inventoryFilterPtrType) ToInventoryFilterPtrOutputWithContext(ctx context.Context) InventoryFilterPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryFilterPtrOutput) +} + +type InventoryFilterOutput struct{ *pulumi.OutputState } + +func (InventoryFilterOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InventoryFilter)(nil)).Elem() +} + +func (o InventoryFilterOutput) ToInventoryFilterOutput() InventoryFilterOutput { + return o +} + +func (o InventoryFilterOutput) ToInventoryFilterOutputWithContext(ctx context.Context) InventoryFilterOutput { + return o +} + +func (o InventoryFilterOutput) ToInventoryFilterPtrOutput() InventoryFilterPtrOutput { + return o.ToInventoryFilterPtrOutputWithContext(context.Background()) +} + +func (o InventoryFilterOutput) ToInventoryFilterPtrOutputWithContext(ctx context.Context) InventoryFilterPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InventoryFilter) *InventoryFilter { + return &v + }).(InventoryFilterPtrOutput) +} + +// Prefix that an object must have to be included in the inventory results. +func (o InventoryFilterOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v InventoryFilter) *string { return v.Prefix }).(pulumi.StringPtrOutput) +} + +type InventoryFilterPtrOutput struct{ *pulumi.OutputState } + +func (InventoryFilterPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InventoryFilter)(nil)).Elem() +} + +func (o InventoryFilterPtrOutput) ToInventoryFilterPtrOutput() InventoryFilterPtrOutput { + return o +} + +func (o InventoryFilterPtrOutput) ToInventoryFilterPtrOutputWithContext(ctx context.Context) InventoryFilterPtrOutput { + return o +} + +func (o InventoryFilterPtrOutput) Elem() InventoryFilterOutput { + return o.ApplyT(func(v *InventoryFilter) InventoryFilter { + if v != nil { + return *v + } + var ret InventoryFilter + return ret + }).(InventoryFilterOutput) +} + +// Prefix that an object must have to be included in the inventory results. +func (o InventoryFilterPtrOutput) Prefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InventoryFilter) *string { + if v == nil { + return nil + } + return v.Prefix + }).(pulumi.StringPtrOutput) +} + +type InventorySchedule struct { + // Specifies how frequently inventory results are produced. Valid values: `Daily`, `Weekly`. + Frequency string `pulumi:"frequency"` +} + +// InventoryScheduleInput is an input type that accepts InventoryScheduleArgs and InventoryScheduleOutput values. +// You can construct a concrete instance of `InventoryScheduleInput` via: +// +// InventoryScheduleArgs{...} +type InventoryScheduleInput interface { + pulumi.Input + + ToInventoryScheduleOutput() InventoryScheduleOutput + ToInventoryScheduleOutputWithContext(context.Context) InventoryScheduleOutput +} + +type InventoryScheduleArgs struct { + // Specifies how frequently inventory results are produced. Valid values: `Daily`, `Weekly`. + Frequency pulumi.StringInput `pulumi:"frequency"` +} + +func (InventoryScheduleArgs) ElementType() reflect.Type { + return reflect.TypeOf((*InventorySchedule)(nil)).Elem() +} + +func (i InventoryScheduleArgs) ToInventoryScheduleOutput() InventoryScheduleOutput { + return i.ToInventoryScheduleOutputWithContext(context.Background()) +} + +func (i InventoryScheduleArgs) ToInventoryScheduleOutputWithContext(ctx context.Context) InventoryScheduleOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryScheduleOutput) +} + +func (i InventoryScheduleArgs) ToInventorySchedulePtrOutput() InventorySchedulePtrOutput { + return i.ToInventorySchedulePtrOutputWithContext(context.Background()) +} + +func (i InventoryScheduleArgs) ToInventorySchedulePtrOutputWithContext(ctx context.Context) InventorySchedulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventoryScheduleOutput).ToInventorySchedulePtrOutputWithContext(ctx) +} + +// InventorySchedulePtrInput is an input type that accepts InventoryScheduleArgs, InventorySchedulePtr and InventorySchedulePtrOutput values. +// You can construct a concrete instance of `InventorySchedulePtrInput` via: +// +// InventoryScheduleArgs{...} +// +// or: +// +// nil +type InventorySchedulePtrInput interface { + pulumi.Input + + ToInventorySchedulePtrOutput() InventorySchedulePtrOutput + ToInventorySchedulePtrOutputWithContext(context.Context) InventorySchedulePtrOutput +} + +type inventorySchedulePtrType InventoryScheduleArgs + +func InventorySchedulePtr(v *InventoryScheduleArgs) InventorySchedulePtrInput { + return (*inventorySchedulePtrType)(v) +} + +func (*inventorySchedulePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**InventorySchedule)(nil)).Elem() +} + +func (i *inventorySchedulePtrType) ToInventorySchedulePtrOutput() InventorySchedulePtrOutput { + return i.ToInventorySchedulePtrOutputWithContext(context.Background()) +} + +func (i *inventorySchedulePtrType) ToInventorySchedulePtrOutputWithContext(ctx context.Context) InventorySchedulePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(InventorySchedulePtrOutput) +} + +type InventoryScheduleOutput struct{ *pulumi.OutputState } + +func (InventoryScheduleOutput) ElementType() reflect.Type { + return reflect.TypeOf((*InventorySchedule)(nil)).Elem() +} + +func (o InventoryScheduleOutput) ToInventoryScheduleOutput() InventoryScheduleOutput { + return o +} + +func (o InventoryScheduleOutput) ToInventoryScheduleOutputWithContext(ctx context.Context) InventoryScheduleOutput { + return o +} + +func (o InventoryScheduleOutput) ToInventorySchedulePtrOutput() InventorySchedulePtrOutput { + return o.ToInventorySchedulePtrOutputWithContext(context.Background()) +} + +func (o InventoryScheduleOutput) ToInventorySchedulePtrOutputWithContext(ctx context.Context) InventorySchedulePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v InventorySchedule) *InventorySchedule { + return &v + }).(InventorySchedulePtrOutput) +} + +// Specifies how frequently inventory results are produced. Valid values: `Daily`, `Weekly`. +func (o InventoryScheduleOutput) Frequency() pulumi.StringOutput { + return o.ApplyT(func(v InventorySchedule) string { return v.Frequency }).(pulumi.StringOutput) +} + +type InventorySchedulePtrOutput struct{ *pulumi.OutputState } + +func (InventorySchedulePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**InventorySchedule)(nil)).Elem() +} + +func (o InventorySchedulePtrOutput) ToInventorySchedulePtrOutput() InventorySchedulePtrOutput { + return o +} + +func (o InventorySchedulePtrOutput) ToInventorySchedulePtrOutputWithContext(ctx context.Context) InventorySchedulePtrOutput { + return o +} + +func (o InventorySchedulePtrOutput) Elem() InventoryScheduleOutput { + return o.ApplyT(func(v *InventorySchedule) InventorySchedule { + if v != nil { + return *v + } + var ret InventorySchedule + return ret + }).(InventoryScheduleOutput) +} + +// Specifies how frequently inventory results are produced. Valid values: `Daily`, `Weekly`. +func (o InventorySchedulePtrOutput) Frequency() pulumi.StringPtrOutput { + return o.ApplyT(func(v *InventorySchedule) *string { + if v == nil { + return nil + } + return &v.Frequency + }).(pulumi.StringPtrOutput) +} + +type ObjectCopyGrant struct { + // Email address of the grantee. Used only when `type` is `AmazonCustomerByEmail`. + Email *string `pulumi:"email"` + // Canonical user ID of the grantee. Used only when `type` is `CanonicalUser`. + Id *string `pulumi:"id"` + // List of permissions to grant to grantee. Valid values are `READ`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. + Permissions []string `pulumi:"permissions"` + // Type of grantee. Valid values are `CanonicalUser`, `Group`, and `AmazonCustomerByEmail`. + // + // This configuration block has the following optional arguments (one of the three is required): + Type string `pulumi:"type"` + // URI of the grantee group. Used only when `type` is `Group`. + Uri *string `pulumi:"uri"` +} + +// ObjectCopyGrantInput is an input type that accepts ObjectCopyGrantArgs and ObjectCopyGrantOutput values. +// You can construct a concrete instance of `ObjectCopyGrantInput` via: +// +// ObjectCopyGrantArgs{...} +type ObjectCopyGrantInput interface { + pulumi.Input + + ToObjectCopyGrantOutput() ObjectCopyGrantOutput + ToObjectCopyGrantOutputWithContext(context.Context) ObjectCopyGrantOutput +} + +type ObjectCopyGrantArgs struct { + // Email address of the grantee. Used only when `type` is `AmazonCustomerByEmail`. + Email pulumi.StringPtrInput `pulumi:"email"` + // Canonical user ID of the grantee. Used only when `type` is `CanonicalUser`. + Id pulumi.StringPtrInput `pulumi:"id"` + // List of permissions to grant to grantee. Valid values are `READ`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. + Permissions pulumi.StringArrayInput `pulumi:"permissions"` + // Type of grantee. Valid values are `CanonicalUser`, `Group`, and `AmazonCustomerByEmail`. + // + // This configuration block has the following optional arguments (one of the three is required): + Type pulumi.StringInput `pulumi:"type"` + // URI of the grantee group. Used only when `type` is `Group`. + Uri pulumi.StringPtrInput `pulumi:"uri"` +} + +func (ObjectCopyGrantArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ObjectCopyGrant)(nil)).Elem() +} + +func (i ObjectCopyGrantArgs) ToObjectCopyGrantOutput() ObjectCopyGrantOutput { + return i.ToObjectCopyGrantOutputWithContext(context.Background()) +} + +func (i ObjectCopyGrantArgs) ToObjectCopyGrantOutputWithContext(ctx context.Context) ObjectCopyGrantOutput { + return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyGrantOutput) +} + +// ObjectCopyGrantArrayInput is an input type that accepts ObjectCopyGrantArray and ObjectCopyGrantArrayOutput values. +// You can construct a concrete instance of `ObjectCopyGrantArrayInput` via: +// +// ObjectCopyGrantArray{ ObjectCopyGrantArgs{...} } +type ObjectCopyGrantArrayInput interface { + pulumi.Input + + ToObjectCopyGrantArrayOutput() ObjectCopyGrantArrayOutput + ToObjectCopyGrantArrayOutputWithContext(context.Context) ObjectCopyGrantArrayOutput +} + +type ObjectCopyGrantArray []ObjectCopyGrantInput + +func (ObjectCopyGrantArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ObjectCopyGrant)(nil)).Elem() +} + +func (i ObjectCopyGrantArray) ToObjectCopyGrantArrayOutput() ObjectCopyGrantArrayOutput { + return i.ToObjectCopyGrantArrayOutputWithContext(context.Background()) +} + +func (i ObjectCopyGrantArray) ToObjectCopyGrantArrayOutputWithContext(ctx context.Context) ObjectCopyGrantArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ObjectCopyGrantArrayOutput) +} + +type ObjectCopyGrantOutput struct{ *pulumi.OutputState } + +func (ObjectCopyGrantOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ObjectCopyGrant)(nil)).Elem() +} + +func (o ObjectCopyGrantOutput) ToObjectCopyGrantOutput() ObjectCopyGrantOutput { + return o +} + +func (o ObjectCopyGrantOutput) ToObjectCopyGrantOutputWithContext(ctx context.Context) ObjectCopyGrantOutput { + return o +} + +// Email address of the grantee. Used only when `type` is `AmazonCustomerByEmail`. +func (o ObjectCopyGrantOutput) Email() pulumi.StringPtrOutput { + return o.ApplyT(func(v ObjectCopyGrant) *string { return v.Email }).(pulumi.StringPtrOutput) +} + +// Canonical user ID of the grantee. Used only when `type` is `CanonicalUser`. +func (o ObjectCopyGrantOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v ObjectCopyGrant) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// List of permissions to grant to grantee. Valid values are `READ`, `READ_ACP`, `WRITE_ACP`, `FULL_CONTROL`. +func (o ObjectCopyGrantOutput) Permissions() pulumi.StringArrayOutput { + return o.ApplyT(func(v ObjectCopyGrant) []string { return v.Permissions }).(pulumi.StringArrayOutput) +} + +// Type of grantee. Valid values are `CanonicalUser`, `Group`, and `AmazonCustomerByEmail`. +// +// This configuration block has the following optional arguments (one of the three is required): +func (o ObjectCopyGrantOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ObjectCopyGrant) string { return v.Type }).(pulumi.StringOutput) +} + +// URI of the grantee group. Used only when `type` is `Group`. +func (o ObjectCopyGrantOutput) Uri() pulumi.StringPtrOutput { + return o.ApplyT(func(v ObjectCopyGrant) *string { return v.Uri }).(pulumi.StringPtrOutput) +} + +type ObjectCopyGrantArrayOutput struct{ *pulumi.OutputState } + +func (ObjectCopyGrantArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ObjectCopyGrant)(nil)).Elem() +} + +func (o ObjectCopyGrantArrayOutput) ToObjectCopyGrantArrayOutput() ObjectCopyGrantArrayOutput { + return o +} + +func (o ObjectCopyGrantArrayOutput) ToObjectCopyGrantArrayOutputWithContext(ctx context.Context) ObjectCopyGrantArrayOutput { + return o +} + +func (o ObjectCopyGrantArrayOutput) Index(i pulumi.IntInput) ObjectCopyGrantOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ObjectCopyGrant { + return vs[0].([]ObjectCopyGrant)[vs[1].(int)] + }).(ObjectCopyGrantOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*AccessPointPublicAccessBlockConfigurationInput)(nil)).Elem(), AccessPointPublicAccessBlockConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPointPublicAccessBlockConfigurationPtrInput)(nil)).Elem(), AccessPointPublicAccessBlockConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPointVpcConfigurationInput)(nil)).Elem(), AccessPointVpcConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AccessPointVpcConfigurationPtrInput)(nil)).Elem(), AccessPointVpcConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationFilterInput)(nil)).Elem(), AnalyticsConfigurationFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationFilterPtrInput)(nil)).Elem(), AnalyticsConfigurationFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisPtrInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisDataExportArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportPtrInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisDataExportArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestinationInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisDataExportDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrInput)(nil)).Elem(), AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyInput)(nil)).Elem(), BucketAclV2AccessControlPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyPtrInput)(nil)).Elem(), BucketAclV2AccessControlPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyGrantInput)(nil)).Elem(), BucketAclV2AccessControlPolicyGrantArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyGrantArrayInput)(nil)).Elem(), BucketAclV2AccessControlPolicyGrantArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyGrantGranteeInput)(nil)).Elem(), BucketAclV2AccessControlPolicyGrantGranteeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyGrantGranteePtrInput)(nil)).Elem(), BucketAclV2AccessControlPolicyGrantGranteeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyOwnerInput)(nil)).Elem(), BucketAclV2AccessControlPolicyOwnerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketAclV2AccessControlPolicyOwnerPtrInput)(nil)).Elem(), BucketAclV2AccessControlPolicyOwnerArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketCorsConfigurationV2CorsRuleInput)(nil)).Elem(), BucketCorsConfigurationV2CorsRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketCorsConfigurationV2CorsRuleArrayInput)(nil)).Elem(), BucketCorsConfigurationV2CorsRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketCorsRuleInput)(nil)).Elem(), BucketCorsRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketCorsRuleArrayInput)(nil)).Elem(), BucketCorsRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketGrantInput)(nil)).Elem(), BucketGrantArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketGrantArrayInput)(nil)).Elem(), BucketGrantArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationFilterInput)(nil)).Elem(), BucketIntelligentTieringConfigurationFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationFilterPtrInput)(nil)).Elem(), BucketIntelligentTieringConfigurationFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationTieringInput)(nil)).Elem(), BucketIntelligentTieringConfigurationTieringArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketIntelligentTieringConfigurationTieringArrayInput)(nil)).Elem(), BucketIntelligentTieringConfigurationTieringArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleArrayInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleExpirationInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleExpirationPtrInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterPtrInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterAndInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleFilterAndArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterAndPtrInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleFilterAndArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterTagInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleFilterTagArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleFilterTagPtrInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleFilterTagArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleTransitionInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleTransitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2RuleTransitionArrayInput)(nil)).Elem(), BucketLifecycleConfigurationV2RuleTransitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleInput)(nil)).Elem(), BucketLifecycleRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleArrayInput)(nil)).Elem(), BucketLifecycleRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleExpirationInput)(nil)).Elem(), BucketLifecycleRuleExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleExpirationPtrInput)(nil)).Elem(), BucketLifecycleRuleExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionExpirationInput)(nil)).Elem(), BucketLifecycleRuleNoncurrentVersionExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionExpirationPtrInput)(nil)).Elem(), BucketLifecycleRuleNoncurrentVersionExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionTransitionInput)(nil)).Elem(), BucketLifecycleRuleNoncurrentVersionTransitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleNoncurrentVersionTransitionArrayInput)(nil)).Elem(), BucketLifecycleRuleNoncurrentVersionTransitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleTransitionInput)(nil)).Elem(), BucketLifecycleRuleTransitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleRuleTransitionArrayInput)(nil)).Elem(), BucketLifecycleRuleTransitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingInput)(nil)).Elem(), BucketLoggingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingArrayInput)(nil)).Elem(), BucketLoggingArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetGrantInput)(nil)).Elem(), BucketLoggingV2TargetGrantArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetGrantArrayInput)(nil)).Elem(), BucketLoggingV2TargetGrantArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetGrantGranteeInput)(nil)).Elem(), BucketLoggingV2TargetGrantGranteeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatInput)(nil)).Elem(), BucketLoggingV2TargetObjectKeyFormatArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatPtrInput)(nil)).Elem(), BucketLoggingV2TargetObjectKeyFormatArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixInput)(nil)).Elem(), BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrInput)(nil)).Elem(), BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatSimplePrefixInput)(nil)).Elem(), BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrInput)(nil)).Elem(), BucketLoggingV2TargetObjectKeyFormatSimplePrefixArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketMetricFilterInput)(nil)).Elem(), BucketMetricFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketMetricFilterPtrInput)(nil)).Elem(), BucketMetricFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationLambdaFunctionInput)(nil)).Elem(), BucketNotificationLambdaFunctionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationLambdaFunctionArrayInput)(nil)).Elem(), BucketNotificationLambdaFunctionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationQueueInput)(nil)).Elem(), BucketNotificationQueueArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationQueueArrayInput)(nil)).Elem(), BucketNotificationQueueArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationTopicInput)(nil)).Elem(), BucketNotificationTopicArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketNotificationTopicArrayInput)(nil)).Elem(), BucketNotificationTopicArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationInput)(nil)).Elem(), BucketObjectLockConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationPtrInput)(nil)).Elem(), BucketObjectLockConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationRuleInput)(nil)).Elem(), BucketObjectLockConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationRulePtrInput)(nil)).Elem(), BucketObjectLockConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationRuleDefaultRetentionInput)(nil)).Elem(), BucketObjectLockConfigurationRuleDefaultRetentionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationRuleDefaultRetentionPtrInput)(nil)).Elem(), BucketObjectLockConfigurationRuleDefaultRetentionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationV2RuleInput)(nil)).Elem(), BucketObjectLockConfigurationV2RuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationV2RulePtrInput)(nil)).Elem(), BucketObjectLockConfigurationV2RuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationV2RuleDefaultRetentionInput)(nil)).Elem(), BucketObjectLockConfigurationV2RuleDefaultRetentionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectLockConfigurationV2RuleDefaultRetentionPtrInput)(nil)).Elem(), BucketObjectLockConfigurationV2RuleDefaultRetentionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectv2OverrideProviderInput)(nil)).Elem(), BucketObjectv2OverrideProviderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectv2OverrideProviderPtrInput)(nil)).Elem(), BucketObjectv2OverrideProviderArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectv2OverrideProviderDefaultTagsInput)(nil)).Elem(), BucketObjectv2OverrideProviderDefaultTagsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketObjectv2OverrideProviderDefaultTagsPtrInput)(nil)).Elem(), BucketObjectv2OverrideProviderDefaultTagsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketOwnershipControlsRuleInput)(nil)).Elem(), BucketOwnershipControlsRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketOwnershipControlsRulePtrInput)(nil)).Elem(), BucketOwnershipControlsRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleInput)(nil)).Elem(), BucketReplicationConfigRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleArrayInput)(nil)).Elem(), BucketReplicationConfigRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDeleteMarkerReplicationInput)(nil)).Elem(), BucketReplicationConfigRuleDeleteMarkerReplicationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDeleteMarkerReplicationPtrInput)(nil)).Elem(), BucketReplicationConfigRuleDeleteMarkerReplicationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationAccessControlTranslationInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationAccessControlTranslationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationAccessControlTranslationPtrInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationAccessControlTranslationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationEncryptionConfigurationInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetricsInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationMetricsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetricsPtrInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationMetricsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetricsEventThresholdInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationMetricsEventThresholdArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTimeInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationReplicationTimeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTimePtrInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationReplicationTimeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTimeTimeInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleDestinationReplicationTimeTimePtrInput)(nil)).Elem(), BucketReplicationConfigRuleDestinationReplicationTimeTimeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleExistingObjectReplicationInput)(nil)).Elem(), BucketReplicationConfigRuleExistingObjectReplicationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleExistingObjectReplicationPtrInput)(nil)).Elem(), BucketReplicationConfigRuleExistingObjectReplicationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleFilterInput)(nil)).Elem(), BucketReplicationConfigRuleFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleFilterPtrInput)(nil)).Elem(), BucketReplicationConfigRuleFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleFilterAndInput)(nil)).Elem(), BucketReplicationConfigRuleFilterAndArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleFilterAndPtrInput)(nil)).Elem(), BucketReplicationConfigRuleFilterAndArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleFilterTagInput)(nil)).Elem(), BucketReplicationConfigRuleFilterTagArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleFilterTagPtrInput)(nil)).Elem(), BucketReplicationConfigRuleFilterTagArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaInput)(nil)).Elem(), BucketReplicationConfigRuleSourceSelectionCriteriaArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaPtrInput)(nil)).Elem(), BucketReplicationConfigRuleSourceSelectionCriteriaArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsInput)(nil)).Elem(), BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrInput)(nil)).Elem(), BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput)(nil)).Elem(), BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput)(nil)).Elem(), BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationInput)(nil)).Elem(), BucketReplicationConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationPtrInput)(nil)).Elem(), BucketReplicationConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleInput)(nil)).Elem(), BucketReplicationConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleArrayInput)(nil)).Elem(), BucketReplicationConfigurationRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationInput)(nil)).Elem(), BucketReplicationConfigurationRuleDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationAccessControlTranslationInput)(nil)).Elem(), BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrInput)(nil)).Elem(), BucketReplicationConfigurationRuleDestinationAccessControlTranslationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationMetricsInput)(nil)).Elem(), BucketReplicationConfigurationRuleDestinationMetricsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationMetricsPtrInput)(nil)).Elem(), BucketReplicationConfigurationRuleDestinationMetricsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationReplicationTimeInput)(nil)).Elem(), BucketReplicationConfigurationRuleDestinationReplicationTimeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleDestinationReplicationTimePtrInput)(nil)).Elem(), BucketReplicationConfigurationRuleDestinationReplicationTimeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleFilterInput)(nil)).Elem(), BucketReplicationConfigurationRuleFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleFilterPtrInput)(nil)).Elem(), BucketReplicationConfigurationRuleFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteriaInput)(nil)).Elem(), BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrInput)(nil)).Elem(), BucketReplicationConfigurationRuleSourceSelectionCriteriaArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsInput)(nil)).Elem(), BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrInput)(nil)).Elem(), BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationPtrInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationRuleInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationRulePtrInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2RuleInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2RuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2RuleArrayInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2RuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrInput)(nil)).Elem(), BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2CorsRuleInput)(nil)).Elem(), BucketV2CorsRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2CorsRuleArrayInput)(nil)).Elem(), BucketV2CorsRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2GrantInput)(nil)).Elem(), BucketV2GrantArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2GrantArrayInput)(nil)).Elem(), BucketV2GrantArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleInput)(nil)).Elem(), BucketV2LifecycleRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleArrayInput)(nil)).Elem(), BucketV2LifecycleRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleExpirationInput)(nil)).Elem(), BucketV2LifecycleRuleExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleExpirationArrayInput)(nil)).Elem(), BucketV2LifecycleRuleExpirationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionExpirationInput)(nil)).Elem(), BucketV2LifecycleRuleNoncurrentVersionExpirationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionExpirationArrayInput)(nil)).Elem(), BucketV2LifecycleRuleNoncurrentVersionExpirationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionTransitionInput)(nil)).Elem(), BucketV2LifecycleRuleNoncurrentVersionTransitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleNoncurrentVersionTransitionArrayInput)(nil)).Elem(), BucketV2LifecycleRuleNoncurrentVersionTransitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleTransitionInput)(nil)).Elem(), BucketV2LifecycleRuleTransitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LifecycleRuleTransitionArrayInput)(nil)).Elem(), BucketV2LifecycleRuleTransitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LoggingInput)(nil)).Elem(), BucketV2LoggingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2LoggingArrayInput)(nil)).Elem(), BucketV2LoggingArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ObjectLockConfigurationInput)(nil)).Elem(), BucketV2ObjectLockConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ObjectLockConfigurationPtrInput)(nil)).Elem(), BucketV2ObjectLockConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ObjectLockConfigurationRuleInput)(nil)).Elem(), BucketV2ObjectLockConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ObjectLockConfigurationRuleArrayInput)(nil)).Elem(), BucketV2ObjectLockConfigurationRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ObjectLockConfigurationRuleDefaultRetentionInput)(nil)).Elem(), BucketV2ObjectLockConfigurationRuleDefaultRetentionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayInput)(nil)).Elem(), BucketV2ObjectLockConfigurationRuleDefaultRetentionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationInput)(nil)).Elem(), BucketV2ReplicationConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationMetricInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationMetricArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationMetricArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationMetricArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationReplicationTimeInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleFilterInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleFilterArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleFilterArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayInput)(nil)).Elem(), BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationInput)(nil)).Elem(), BucketV2ServerSideEncryptionConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationArrayInput)(nil)).Elem(), BucketV2ServerSideEncryptionConfigurationArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRuleInput)(nil)).Elem(), BucketV2ServerSideEncryptionConfigurationRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRuleArrayInput)(nil)).Elem(), BucketV2ServerSideEncryptionConfigurationRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultInput)(nil)).Elem(), BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayInput)(nil)).Elem(), BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2VersioningInput)(nil)).Elem(), BucketV2VersioningArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2VersioningArrayInput)(nil)).Elem(), BucketV2VersioningArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2WebsiteInput)(nil)).Elem(), BucketV2WebsiteArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketV2WebsiteArrayInput)(nil)).Elem(), BucketV2WebsiteArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningInput)(nil)).Elem(), BucketVersioningArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningPtrInput)(nil)).Elem(), BucketVersioningArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2VersioningConfigurationInput)(nil)).Elem(), BucketVersioningV2VersioningConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2VersioningConfigurationPtrInput)(nil)).Elem(), BucketVersioningV2VersioningConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteInput)(nil)).Elem(), BucketWebsiteArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsitePtrInput)(nil)).Elem(), BucketWebsiteArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2ErrorDocumentInput)(nil)).Elem(), BucketWebsiteConfigurationV2ErrorDocumentArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2ErrorDocumentPtrInput)(nil)).Elem(), BucketWebsiteConfigurationV2ErrorDocumentArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2IndexDocumentInput)(nil)).Elem(), BucketWebsiteConfigurationV2IndexDocumentArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2IndexDocumentPtrInput)(nil)).Elem(), BucketWebsiteConfigurationV2IndexDocumentArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2RedirectAllRequestsToInput)(nil)).Elem(), BucketWebsiteConfigurationV2RedirectAllRequestsToArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2RedirectAllRequestsToPtrInput)(nil)).Elem(), BucketWebsiteConfigurationV2RedirectAllRequestsToArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleInput)(nil)).Elem(), BucketWebsiteConfigurationV2RoutingRuleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleArrayInput)(nil)).Elem(), BucketWebsiteConfigurationV2RoutingRuleArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleConditionInput)(nil)).Elem(), BucketWebsiteConfigurationV2RoutingRuleConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleConditionPtrInput)(nil)).Elem(), BucketWebsiteConfigurationV2RoutingRuleConditionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketWebsiteConfigurationV2RoutingRuleRedirectInput)(nil)).Elem(), BucketWebsiteConfigurationV2RoutingRuleRedirectArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DirectoryBucketLocationInput)(nil)).Elem(), DirectoryBucketLocationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DirectoryBucketLocationPtrInput)(nil)).Elem(), DirectoryBucketLocationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationInput)(nil)).Elem(), InventoryDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationPtrInput)(nil)).Elem(), InventoryDestinationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketInput)(nil)).Elem(), InventoryDestinationBucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketPtrInput)(nil)).Elem(), InventoryDestinationBucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketEncryptionInput)(nil)).Elem(), InventoryDestinationBucketEncryptionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketEncryptionPtrInput)(nil)).Elem(), InventoryDestinationBucketEncryptionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketEncryptionSseKmsInput)(nil)).Elem(), InventoryDestinationBucketEncryptionSseKmsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketEncryptionSseKmsPtrInput)(nil)).Elem(), InventoryDestinationBucketEncryptionSseKmsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketEncryptionSseS3Input)(nil)).Elem(), InventoryDestinationBucketEncryptionSseS3Args{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryDestinationBucketEncryptionSseS3PtrInput)(nil)).Elem(), InventoryDestinationBucketEncryptionSseS3Args{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryFilterInput)(nil)).Elem(), InventoryFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryFilterPtrInput)(nil)).Elem(), InventoryFilterArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventoryScheduleInput)(nil)).Elem(), InventoryScheduleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*InventorySchedulePtrInput)(nil)).Elem(), InventoryScheduleArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyGrantInput)(nil)).Elem(), ObjectCopyGrantArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ObjectCopyGrantArrayInput)(nil)).Elem(), ObjectCopyGrantArray{}) + pulumi.RegisterOutputType(AccessPointPublicAccessBlockConfigurationOutput{}) + pulumi.RegisterOutputType(AccessPointPublicAccessBlockConfigurationPtrOutput{}) + pulumi.RegisterOutputType(AccessPointVpcConfigurationOutput{}) + pulumi.RegisterOutputType(AccessPointVpcConfigurationPtrOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationFilterOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationFilterPtrOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisPtrOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisDataExportOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisDataExportPtrOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationPtrOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationOutput{}) + pulumi.RegisterOutputType(AnalyticsConfigurationStorageClassAnalysisDataExportDestinationS3BucketDestinationPtrOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyPtrOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyGrantOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyGrantArrayOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyGrantGranteeOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyGrantGranteePtrOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyOwnerOutput{}) + pulumi.RegisterOutputType(BucketAclV2AccessControlPolicyOwnerPtrOutput{}) + pulumi.RegisterOutputType(BucketCorsConfigurationV2CorsRuleOutput{}) + pulumi.RegisterOutputType(BucketCorsConfigurationV2CorsRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketCorsRuleOutput{}) + pulumi.RegisterOutputType(BucketCorsRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketGrantOutput{}) + pulumi.RegisterOutputType(BucketGrantArrayOutput{}) + pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationFilterOutput{}) + pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationFilterPtrOutput{}) + pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationTieringOutput{}) + pulumi.RegisterOutputType(BucketIntelligentTieringConfigurationTieringArrayOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleArrayOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleAbortIncompleteMultipartUploadPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleExpirationOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleExpirationPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleFilterOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleFilterPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleFilterAndOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleFilterAndPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleFilterTagOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleFilterTagPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArrayOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleTransitionOutput{}) + pulumi.RegisterOutputType(BucketLifecycleConfigurationV2RuleTransitionArrayOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleExpirationOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleExpirationPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleNoncurrentVersionExpirationOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleNoncurrentVersionExpirationPtrOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleNoncurrentVersionTransitionOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleNoncurrentVersionTransitionArrayOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleTransitionOutput{}) + pulumi.RegisterOutputType(BucketLifecycleRuleTransitionArrayOutput{}) + pulumi.RegisterOutputType(BucketLoggingOutput{}) + pulumi.RegisterOutputType(BucketLoggingArrayOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetGrantOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetGrantArrayOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetGrantGranteeOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetObjectKeyFormatOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetObjectKeyFormatPtrOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetObjectKeyFormatPartitionedPrefixPtrOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetObjectKeyFormatSimplePrefixOutput{}) + pulumi.RegisterOutputType(BucketLoggingV2TargetObjectKeyFormatSimplePrefixPtrOutput{}) + pulumi.RegisterOutputType(BucketMetricFilterOutput{}) + pulumi.RegisterOutputType(BucketMetricFilterPtrOutput{}) + pulumi.RegisterOutputType(BucketNotificationLambdaFunctionOutput{}) + pulumi.RegisterOutputType(BucketNotificationLambdaFunctionArrayOutput{}) + pulumi.RegisterOutputType(BucketNotificationQueueOutput{}) + pulumi.RegisterOutputType(BucketNotificationQueueArrayOutput{}) + pulumi.RegisterOutputType(BucketNotificationTopicOutput{}) + pulumi.RegisterOutputType(BucketNotificationTopicArrayOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationPtrOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationRuleOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationRulePtrOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationRuleDefaultRetentionOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationRuleDefaultRetentionPtrOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationV2RuleOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationV2RulePtrOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationV2RuleDefaultRetentionOutput{}) + pulumi.RegisterOutputType(BucketObjectLockConfigurationV2RuleDefaultRetentionPtrOutput{}) + pulumi.RegisterOutputType(BucketObjectv2OverrideProviderOutput{}) + pulumi.RegisterOutputType(BucketObjectv2OverrideProviderPtrOutput{}) + pulumi.RegisterOutputType(BucketObjectv2OverrideProviderDefaultTagsOutput{}) + pulumi.RegisterOutputType(BucketObjectv2OverrideProviderDefaultTagsPtrOutput{}) + pulumi.RegisterOutputType(BucketOwnershipControlsRuleOutput{}) + pulumi.RegisterOutputType(BucketOwnershipControlsRulePtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDeleteMarkerReplicationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDeleteMarkerReplicationPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationAccessControlTranslationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationAccessControlTranslationPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationEncryptionConfigurationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationEncryptionConfigurationPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationMetricsOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationMetricsPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationMetricsEventThresholdOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationMetricsEventThresholdPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationReplicationTimeOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationReplicationTimePtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationReplicationTimeTimeOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleDestinationReplicationTimeTimePtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleExistingObjectReplicationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleExistingObjectReplicationPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleFilterOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleFilterPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleFilterAndOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleFilterAndPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleFilterTagOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleFilterTagPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleSourceSelectionCriteriaOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleSourceSelectionCriteriaPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleSourceSelectionCriteriaReplicaModificationsPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleDestinationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleDestinationAccessControlTranslationOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleDestinationAccessControlTranslationPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleDestinationMetricsOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleDestinationMetricsPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleDestinationReplicationTimeOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleDestinationReplicationTimePtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleFilterOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleFilterPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleSourceSelectionCriteriaOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleSourceSelectionCriteriaPtrOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsOutput{}) + pulumi.RegisterOutputType(BucketReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectsPtrOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationPtrOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationRuleOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationRulePtrOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultPtrOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2RuleOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2RuleArrayOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultOutput{}) + pulumi.RegisterOutputType(BucketServerSideEncryptionConfigurationV2RuleApplyServerSideEncryptionByDefaultPtrOutput{}) + pulumi.RegisterOutputType(BucketV2CorsRuleOutput{}) + pulumi.RegisterOutputType(BucketV2CorsRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketV2GrantOutput{}) + pulumi.RegisterOutputType(BucketV2GrantArrayOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleExpirationOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleExpirationArrayOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleNoncurrentVersionExpirationOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleNoncurrentVersionExpirationArrayOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleNoncurrentVersionTransitionOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleNoncurrentVersionTransitionArrayOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleTransitionOutput{}) + pulumi.RegisterOutputType(BucketV2LifecycleRuleTransitionArrayOutput{}) + pulumi.RegisterOutputType(BucketV2LoggingOutput{}) + pulumi.RegisterOutputType(BucketV2LoggingArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ObjectLockConfigurationOutput{}) + pulumi.RegisterOutputType(BucketV2ObjectLockConfigurationPtrOutput{}) + pulumi.RegisterOutputType(BucketV2ObjectLockConfigurationRuleOutput{}) + pulumi.RegisterOutputType(BucketV2ObjectLockConfigurationRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ObjectLockConfigurationRuleDefaultRetentionOutput{}) + pulumi.RegisterOutputType(BucketV2ObjectLockConfigurationRuleDefaultRetentionArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationAccessControlTranslationArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationMetricOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationMetricArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationReplicationTimeOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleDestinationReplicationTimeArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleFilterOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleFilterArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectOutput{}) + pulumi.RegisterOutputType(BucketV2ReplicationConfigurationRuleSourceSelectionCriteriaSseKmsEncryptedObjectArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ServerSideEncryptionConfigurationOutput{}) + pulumi.RegisterOutputType(BucketV2ServerSideEncryptionConfigurationArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ServerSideEncryptionConfigurationRuleOutput{}) + pulumi.RegisterOutputType(BucketV2ServerSideEncryptionConfigurationRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultOutput{}) + pulumi.RegisterOutputType(BucketV2ServerSideEncryptionConfigurationRuleApplyServerSideEncryptionByDefaultArrayOutput{}) + pulumi.RegisterOutputType(BucketV2VersioningOutput{}) + pulumi.RegisterOutputType(BucketV2VersioningArrayOutput{}) + pulumi.RegisterOutputType(BucketV2WebsiteOutput{}) + pulumi.RegisterOutputType(BucketV2WebsiteArrayOutput{}) + pulumi.RegisterOutputType(BucketVersioningOutput{}) + pulumi.RegisterOutputType(BucketVersioningPtrOutput{}) + pulumi.RegisterOutputType(BucketVersioningV2VersioningConfigurationOutput{}) + pulumi.RegisterOutputType(BucketVersioningV2VersioningConfigurationPtrOutput{}) + pulumi.RegisterOutputType(BucketWebsiteOutput{}) + pulumi.RegisterOutputType(BucketWebsitePtrOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2ErrorDocumentOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2ErrorDocumentPtrOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2IndexDocumentOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2IndexDocumentPtrOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2RedirectAllRequestsToOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2RedirectAllRequestsToPtrOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2RoutingRuleOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2RoutingRuleArrayOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2RoutingRuleConditionOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2RoutingRuleConditionPtrOutput{}) + pulumi.RegisterOutputType(BucketWebsiteConfigurationV2RoutingRuleRedirectOutput{}) + pulumi.RegisterOutputType(DirectoryBucketLocationOutput{}) + pulumi.RegisterOutputType(DirectoryBucketLocationPtrOutput{}) + pulumi.RegisterOutputType(InventoryDestinationOutput{}) + pulumi.RegisterOutputType(InventoryDestinationPtrOutput{}) + pulumi.RegisterOutputType(InventoryDestinationBucketOutput{}) + pulumi.RegisterOutputType(InventoryDestinationBucketPtrOutput{}) + pulumi.RegisterOutputType(InventoryDestinationBucketEncryptionOutput{}) + pulumi.RegisterOutputType(InventoryDestinationBucketEncryptionPtrOutput{}) + pulumi.RegisterOutputType(InventoryDestinationBucketEncryptionSseKmsOutput{}) + pulumi.RegisterOutputType(InventoryDestinationBucketEncryptionSseKmsPtrOutput{}) + pulumi.RegisterOutputType(InventoryDestinationBucketEncryptionSseS3Output{}) + pulumi.RegisterOutputType(InventoryDestinationBucketEncryptionSseS3PtrOutput{}) + pulumi.RegisterOutputType(InventoryFilterOutput{}) + pulumi.RegisterOutputType(InventoryFilterPtrOutput{}) + pulumi.RegisterOutputType(InventoryScheduleOutput{}) + pulumi.RegisterOutputType(InventorySchedulePtrOutput{}) + pulumi.RegisterOutputType(ObjectCopyGrantOutput{}) + pulumi.RegisterOutputType(ObjectCopyGrantArrayOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/LICENSE b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx/pulumiTypes.go new file mode 100644 index 000000000..d30c44ca9 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx/pulumiTypes.go @@ -0,0 +1,2756 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package awsx + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +// The set of arguments for constructing a Bucket resource. +type Bucket struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. + AccelerationStatus *string `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. + Acl *string `pulumi:"acl"` + // The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn *string `pulumi:"arn"` + // The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + Bucket *string `pulumi:"bucket"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix *string `pulumi:"bucketPrefix"` + // A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). + CorsRules []s3.BucketCorsRule `pulumi:"corsRules"` + // A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. + ForceDestroy *bool `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. + Grants []s3.BucketGrant `pulumi:"grants"` + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId *string `pulumi:"hostedZoneId"` + // A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). + LifecycleRules []s3.BucketLifecycleRule `pulumi:"lifecycleRules"` + // A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). + Loggings []s3.BucketLogging `pulumi:"loggings"` + // A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) + // + // > **NOTE:** You cannot use `acceleration_status` in `cn-north-1` or `us-gov-west-1` + ObjectLockConfiguration *s3.BucketObjectLockConfiguration `pulumi:"objectLockConfiguration"` + // A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. + Policy *string `pulumi:"policy"` + // A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). + ReplicationConfiguration *s3.BucketReplicationConfiguration `pulumi:"replicationConfiguration"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur + // the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) + // developer guide for more information. + RequestPayer *string `pulumi:"requestPayer"` + // A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) + ServerSideEncryptionConfiguration *s3.BucketServerSideEncryptionConfiguration `pulumi:"serverSideEncryptionConfiguration"` + // A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) + Versioning *s3.BucketVersioning `pulumi:"versioning"` + // A website object (documented below). + Website *s3.BucketWebsite `pulumi:"website"` + // The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain *string `pulumi:"websiteDomain"` + // The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint *string `pulumi:"websiteEndpoint"` +} + +// BucketInput is an input type that accepts BucketArgs and BucketOutput values. +// You can construct a concrete instance of `BucketInput` via: +// +// BucketArgs{...} +type BucketInput interface { + pulumi.Input + + ToBucketOutput() BucketOutput + ToBucketOutputWithContext(context.Context) BucketOutput +} + +// The set of arguments for constructing a Bucket resource. +type BucketArgs struct { + // Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. + AccelerationStatus pulumi.StringPtrInput `pulumi:"accelerationStatus"` + // The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. + Acl pulumi.StringPtrInput `pulumi:"acl"` + // The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. + Arn pulumi.StringPtrInput `pulumi:"arn"` + // The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + Bucket pulumi.StringPtrInput `pulumi:"bucket"` + // Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). + BucketPrefix pulumi.StringPtrInput `pulumi:"bucketPrefix"` + // A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). + CorsRules s3.BucketCorsRuleArrayInput `pulumi:"corsRules"` + // A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. + ForceDestroy pulumi.BoolPtrInput `pulumi:"forceDestroy"` + // An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. + Grants s3.BucketGrantArrayInput `pulumi:"grants"` + // The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. + HostedZoneId pulumi.StringPtrInput `pulumi:"hostedZoneId"` + // A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). + LifecycleRules s3.BucketLifecycleRuleArrayInput `pulumi:"lifecycleRules"` + // A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). + Loggings s3.BucketLoggingArrayInput `pulumi:"loggings"` + // A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) + // + // > **NOTE:** You cannot use `acceleration_status` in `cn-north-1` or `us-gov-west-1` + ObjectLockConfiguration s3.BucketObjectLockConfigurationPtrInput `pulumi:"objectLockConfiguration"` + // A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. + Policy pulumi.StringPtrInput `pulumi:"policy"` + // A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). + ReplicationConfiguration s3.BucketReplicationConfigurationPtrInput `pulumi:"replicationConfiguration"` + // Specifies who should bear the cost of Amazon S3 data transfer. + // Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur + // the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) + // developer guide for more information. + RequestPayer pulumi.StringPtrInput `pulumi:"requestPayer"` + // A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) + ServerSideEncryptionConfiguration s3.BucketServerSideEncryptionConfigurationPtrInput `pulumi:"serverSideEncryptionConfiguration"` + // A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` + // A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) + Versioning s3.BucketVersioningPtrInput `pulumi:"versioning"` + // A website object (documented below). + Website s3.BucketWebsitePtrInput `pulumi:"website"` + // The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. + WebsiteDomain pulumi.StringPtrInput `pulumi:"websiteDomain"` + // The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. + WebsiteEndpoint pulumi.StringPtrInput `pulumi:"websiteEndpoint"` +} + +func (BucketArgs) ElementType() reflect.Type { + return reflect.TypeOf((*Bucket)(nil)).Elem() +} + +func (i BucketArgs) ToBucketOutput() BucketOutput { + return i.ToBucketOutputWithContext(context.Background()) +} + +func (i BucketArgs) ToBucketOutputWithContext(ctx context.Context) BucketOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOutput) +} + +func (i BucketArgs) ToBucketPtrOutput() BucketPtrOutput { + return i.ToBucketPtrOutputWithContext(context.Background()) +} + +func (i BucketArgs) ToBucketPtrOutputWithContext(ctx context.Context) BucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketOutput).ToBucketPtrOutputWithContext(ctx) +} + +// BucketPtrInput is an input type that accepts BucketArgs, BucketPtr and BucketPtrOutput values. +// You can construct a concrete instance of `BucketPtrInput` via: +// +// BucketArgs{...} +// +// or: +// +// nil +type BucketPtrInput interface { + pulumi.Input + + ToBucketPtrOutput() BucketPtrOutput + ToBucketPtrOutputWithContext(context.Context) BucketPtrOutput +} + +type bucketPtrType BucketArgs + +func BucketPtr(v *BucketArgs) BucketPtrInput { + return (*bucketPtrType)(v) +} + +func (*bucketPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**Bucket)(nil)).Elem() +} + +func (i *bucketPtrType) ToBucketPtrOutput() BucketPtrOutput { + return i.ToBucketPtrOutputWithContext(context.Background()) +} + +func (i *bucketPtrType) ToBucketPtrOutputWithContext(ctx context.Context) BucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(BucketPtrOutput) +} + +// The set of arguments for constructing a Bucket resource. +type BucketOutput struct{ *pulumi.OutputState } + +func (BucketOutput) ElementType() reflect.Type { + return reflect.TypeOf((*Bucket)(nil)).Elem() +} + +func (o BucketOutput) ToBucketOutput() BucketOutput { + return o +} + +func (o BucketOutput) ToBucketOutputWithContext(ctx context.Context) BucketOutput { + return o +} + +func (o BucketOutput) ToBucketPtrOutput() BucketPtrOutput { + return o.ToBucketPtrOutputWithContext(context.Background()) +} + +func (o BucketOutput) ToBucketPtrOutputWithContext(ctx context.Context) BucketPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v Bucket) *Bucket { + return &v + }).(BucketPtrOutput) +} + +// Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. +func (o BucketOutput) AccelerationStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.AccelerationStatus }).(pulumi.StringPtrOutput) +} + +// The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. +func (o BucketOutput) Acl() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.Acl }).(pulumi.StringPtrOutput) +} + +// The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. +func (o BucketOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.Arn }).(pulumi.StringPtrOutput) +} + +// The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). +func (o BucketOutput) Bucket() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.Bucket }).(pulumi.StringPtrOutput) +} + +// Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). +func (o BucketOutput) BucketPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.BucketPrefix }).(pulumi.StringPtrOutput) +} + +// A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). +func (o BucketOutput) CorsRules() s3.BucketCorsRuleArrayOutput { + return o.ApplyT(func(v Bucket) []s3.BucketCorsRule { return v.CorsRules }).(s3.BucketCorsRuleArrayOutput) +} + +// A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. +func (o BucketOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v Bucket) *bool { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. +func (o BucketOutput) Grants() s3.BucketGrantArrayOutput { + return o.ApplyT(func(v Bucket) []s3.BucketGrant { return v.Grants }).(s3.BucketGrantArrayOutput) +} + +// The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. +func (o BucketOutput) HostedZoneId() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.HostedZoneId }).(pulumi.StringPtrOutput) +} + +// A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). +func (o BucketOutput) LifecycleRules() s3.BucketLifecycleRuleArrayOutput { + return o.ApplyT(func(v Bucket) []s3.BucketLifecycleRule { return v.LifecycleRules }).(s3.BucketLifecycleRuleArrayOutput) +} + +// A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). +func (o BucketOutput) Loggings() s3.BucketLoggingArrayOutput { + return o.ApplyT(func(v Bucket) []s3.BucketLogging { return v.Loggings }).(s3.BucketLoggingArrayOutput) +} + +// A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) +// +// > **NOTE:** You cannot use `acceleration_status` in `cn-north-1` or `us-gov-west-1` +func (o BucketOutput) ObjectLockConfiguration() s3.BucketObjectLockConfigurationPtrOutput { + return o.ApplyT(func(v Bucket) *s3.BucketObjectLockConfiguration { return v.ObjectLockConfiguration }).(s3.BucketObjectLockConfigurationPtrOutput) +} + +// A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. +func (o BucketOutput) Policy() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.Policy }).(pulumi.StringPtrOutput) +} + +// A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). +func (o BucketOutput) ReplicationConfiguration() s3.BucketReplicationConfigurationPtrOutput { + return o.ApplyT(func(v Bucket) *s3.BucketReplicationConfiguration { return v.ReplicationConfiguration }).(s3.BucketReplicationConfigurationPtrOutput) +} + +// Specifies who should bear the cost of Amazon S3 data transfer. +// Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur +// the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) +// developer guide for more information. +func (o BucketOutput) RequestPayer() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.RequestPayer }).(pulumi.StringPtrOutput) +} + +// A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) +func (o BucketOutput) ServerSideEncryptionConfiguration() s3.BucketServerSideEncryptionConfigurationPtrOutput { + return o.ApplyT(func(v Bucket) *s3.BucketServerSideEncryptionConfiguration { return v.ServerSideEncryptionConfiguration }).(s3.BucketServerSideEncryptionConfigurationPtrOutput) +} + +// A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o BucketOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v Bucket) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) +func (o BucketOutput) Versioning() s3.BucketVersioningPtrOutput { + return o.ApplyT(func(v Bucket) *s3.BucketVersioning { return v.Versioning }).(s3.BucketVersioningPtrOutput) +} + +// A website object (documented below). +func (o BucketOutput) Website() s3.BucketWebsitePtrOutput { + return o.ApplyT(func(v Bucket) *s3.BucketWebsite { return v.Website }).(s3.BucketWebsitePtrOutput) +} + +// The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. +func (o BucketOutput) WebsiteDomain() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.WebsiteDomain }).(pulumi.StringPtrOutput) +} + +// The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. +func (o BucketOutput) WebsiteEndpoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v Bucket) *string { return v.WebsiteEndpoint }).(pulumi.StringPtrOutput) +} + +type BucketPtrOutput struct{ *pulumi.OutputState } + +func (BucketPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Bucket)(nil)).Elem() +} + +func (o BucketPtrOutput) ToBucketPtrOutput() BucketPtrOutput { + return o +} + +func (o BucketPtrOutput) ToBucketPtrOutputWithContext(ctx context.Context) BucketPtrOutput { + return o +} + +func (o BucketPtrOutput) Elem() BucketOutput { + return o.ApplyT(func(v *Bucket) Bucket { + if v != nil { + return *v + } + var ret Bucket + return ret + }).(BucketOutput) +} + +// Sets the accelerate configuration of an existing bucket. Can be `Enabled` or `Suspended`. +func (o BucketPtrOutput) AccelerationStatus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.AccelerationStatus + }).(pulumi.StringPtrOutput) +} + +// The [canned ACL](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl) to apply. Valid values are `private`, `public-read`, `public-read-write`, `aws-exec-read`, `authenticated-read`, and `log-delivery-write`. Defaults to `private`. Conflicts with `grant`. +func (o BucketPtrOutput) Acl() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.Acl + }).(pulumi.StringPtrOutput) +} + +// The ARN of the bucket. Will be of format `arn:aws:s3:::bucketname`. +func (o BucketPtrOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.Arn + }).(pulumi.StringPtrOutput) +} + +// The name of the bucket. If omitted, this provider will assign a random, unique name. Must be lowercase and less than or equal to 63 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). +func (o BucketPtrOutput) Bucket() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.Bucket + }).(pulumi.StringPtrOutput) +} + +// Creates a unique bucket name beginning with the specified prefix. Conflicts with `bucket`. Must be lowercase and less than or equal to 37 characters in length. A full list of bucket naming rules [may be found here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html). +func (o BucketPtrOutput) BucketPrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.BucketPrefix + }).(pulumi.StringPtrOutput) +} + +// A rule of [Cross-Origin Resource Sharing](https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html) (documented below). +func (o BucketPtrOutput) CorsRules() s3.BucketCorsRuleArrayOutput { + return o.ApplyT(func(v *Bucket) []s3.BucketCorsRule { + if v == nil { + return nil + } + return v.CorsRules + }).(s3.BucketCorsRuleArrayOutput) +} + +// A boolean that indicates all objects (including any [locked objects](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html)) should be deleted from the bucket so that the bucket can be destroyed without error. These objects are *not* recoverable. +func (o BucketPtrOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Bucket) *bool { + if v == nil { + return nil + } + return v.ForceDestroy + }).(pulumi.BoolPtrOutput) +} + +// An [ACL policy grant](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#sample-acl) (documented below). Conflicts with `acl`. +func (o BucketPtrOutput) Grants() s3.BucketGrantArrayOutput { + return o.ApplyT(func(v *Bucket) []s3.BucketGrant { + if v == nil { + return nil + } + return v.Grants + }).(s3.BucketGrantArrayOutput) +} + +// The [Route 53 Hosted Zone ID](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints) for this bucket's region. +func (o BucketPtrOutput) HostedZoneId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.HostedZoneId + }).(pulumi.StringPtrOutput) +} + +// A configuration of [object lifecycle management](http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html) (documented below). +func (o BucketPtrOutput) LifecycleRules() s3.BucketLifecycleRuleArrayOutput { + return o.ApplyT(func(v *Bucket) []s3.BucketLifecycleRule { + if v == nil { + return nil + } + return v.LifecycleRules + }).(s3.BucketLifecycleRuleArrayOutput) +} + +// A settings of [bucket logging](https://docs.aws.amazon.com/AmazonS3/latest/UG/ManagingBucketLogging.html) (documented below). +func (o BucketPtrOutput) Loggings() s3.BucketLoggingArrayOutput { + return o.ApplyT(func(v *Bucket) []s3.BucketLogging { + if v == nil { + return nil + } + return v.Loggings + }).(s3.BucketLoggingArrayOutput) +} + +// A configuration of [S3 object locking](https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html) (documented below) +// +// > **NOTE:** You cannot use `acceleration_status` in `cn-north-1` or `us-gov-west-1` +func (o BucketPtrOutput) ObjectLockConfiguration() s3.BucketObjectLockConfigurationPtrOutput { + return o.ApplyT(func(v *Bucket) *s3.BucketObjectLockConfiguration { + if v == nil { + return nil + } + return v.ObjectLockConfiguration + }).(s3.BucketObjectLockConfigurationPtrOutput) +} + +// A valid [bucket policy](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) JSON document. Note that if the policy document is not specific enough (but still valid), this provider may view the policy as constantly changing in a `pulumi preview`. In this case, please make sure you use the verbose/specific version of the policy. +func (o BucketPtrOutput) Policy() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.Policy + }).(pulumi.StringPtrOutput) +} + +// A configuration of [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html) (documented below). +func (o BucketPtrOutput) ReplicationConfiguration() s3.BucketReplicationConfigurationPtrOutput { + return o.ApplyT(func(v *Bucket) *s3.BucketReplicationConfiguration { + if v == nil { + return nil + } + return v.ReplicationConfiguration + }).(s3.BucketReplicationConfigurationPtrOutput) +} + +// Specifies who should bear the cost of Amazon S3 data transfer. +// Can be either `BucketOwner` or `Requester`. By default, the owner of the S3 bucket would incur +// the costs of any data transfer. See [Requester Pays Buckets](http://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html) +// developer guide for more information. +func (o BucketPtrOutput) RequestPayer() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.RequestPayer + }).(pulumi.StringPtrOutput) +} + +// A configuration of [server-side encryption configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html) (documented below) +func (o BucketPtrOutput) ServerSideEncryptionConfiguration() s3.BucketServerSideEncryptionConfigurationPtrOutput { + return o.ApplyT(func(v *Bucket) *s3.BucketServerSideEncryptionConfiguration { + if v == nil { + return nil + } + return v.ServerSideEncryptionConfiguration + }).(s3.BucketServerSideEncryptionConfigurationPtrOutput) +} + +// A map of tags to assign to the bucket. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o BucketPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *Bucket) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// A state of [versioning](https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html) (documented below) +func (o BucketPtrOutput) Versioning() s3.BucketVersioningPtrOutput { + return o.ApplyT(func(v *Bucket) *s3.BucketVersioning { + if v == nil { + return nil + } + return v.Versioning + }).(s3.BucketVersioningPtrOutput) +} + +// A website object (documented below). +func (o BucketPtrOutput) Website() s3.BucketWebsitePtrOutput { + return o.ApplyT(func(v *Bucket) *s3.BucketWebsite { + if v == nil { + return nil + } + return v.Website + }).(s3.BucketWebsitePtrOutput) +} + +// The domain of the website endpoint, if the bucket is configured with a website. If not, this will be an empty string. This is used to create Route 53 alias records. +func (o BucketPtrOutput) WebsiteDomain() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.WebsiteDomain + }).(pulumi.StringPtrOutput) +} + +// The website endpoint, if the bucket is configured with a website. If not, this will be an empty string. +func (o BucketPtrOutput) WebsiteEndpoint() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Bucket) *string { + if v == nil { + return nil + } + return v.WebsiteEndpoint + }).(pulumi.StringPtrOutput) +} + +// Bucket with default setup unless explicitly skipped. +type DefaultBucket struct { + // Arguments to use instead of the default values during creation. + Args *Bucket `pulumi:"args"` + // Identity of an existing bucket to use. Cannot be used in combination with `args`. + Existing *ExistingBucket `pulumi:"existing"` + // Skip creation of the bucket. + Skip *bool `pulumi:"skip"` +} + +// Log group with default setup unless explicitly skipped. +type DefaultLogGroup struct { + // Arguments to use instead of the default values during creation. + Args *LogGroup `pulumi:"args"` + // Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. + Existing *ExistingLogGroup `pulumi:"existing"` + // Skip creation of the log group. + Skip *bool `pulumi:"skip"` +} + +// DefaultLogGroupInput is an input type that accepts DefaultLogGroupArgs and DefaultLogGroupOutput values. +// You can construct a concrete instance of `DefaultLogGroupInput` via: +// +// DefaultLogGroupArgs{...} +type DefaultLogGroupInput interface { + pulumi.Input + + ToDefaultLogGroupOutput() DefaultLogGroupOutput + ToDefaultLogGroupOutputWithContext(context.Context) DefaultLogGroupOutput +} + +// Log group with default setup unless explicitly skipped. +type DefaultLogGroupArgs struct { + // Arguments to use instead of the default values during creation. + Args *LogGroupArgs `pulumi:"args"` + // Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. + Existing *ExistingLogGroupArgs `pulumi:"existing"` + // Skip creation of the log group. + Skip *bool `pulumi:"skip"` +} + +func (DefaultLogGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DefaultLogGroup)(nil)).Elem() +} + +func (i DefaultLogGroupArgs) ToDefaultLogGroupOutput() DefaultLogGroupOutput { + return i.ToDefaultLogGroupOutputWithContext(context.Background()) +} + +func (i DefaultLogGroupArgs) ToDefaultLogGroupOutputWithContext(ctx context.Context) DefaultLogGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultLogGroupOutput) +} + +func (i DefaultLogGroupArgs) ToDefaultLogGroupPtrOutput() DefaultLogGroupPtrOutput { + return i.ToDefaultLogGroupPtrOutputWithContext(context.Background()) +} + +func (i DefaultLogGroupArgs) ToDefaultLogGroupPtrOutputWithContext(ctx context.Context) DefaultLogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultLogGroupOutput).ToDefaultLogGroupPtrOutputWithContext(ctx) +} + +// DefaultLogGroupPtrInput is an input type that accepts DefaultLogGroupArgs, DefaultLogGroupPtr and DefaultLogGroupPtrOutput values. +// You can construct a concrete instance of `DefaultLogGroupPtrInput` via: +// +// DefaultLogGroupArgs{...} +// +// or: +// +// nil +type DefaultLogGroupPtrInput interface { + pulumi.Input + + ToDefaultLogGroupPtrOutput() DefaultLogGroupPtrOutput + ToDefaultLogGroupPtrOutputWithContext(context.Context) DefaultLogGroupPtrOutput +} + +type defaultLogGroupPtrType DefaultLogGroupArgs + +func DefaultLogGroupPtr(v *DefaultLogGroupArgs) DefaultLogGroupPtrInput { + return (*defaultLogGroupPtrType)(v) +} + +func (*defaultLogGroupPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DefaultLogGroup)(nil)).Elem() +} + +func (i *defaultLogGroupPtrType) ToDefaultLogGroupPtrOutput() DefaultLogGroupPtrOutput { + return i.ToDefaultLogGroupPtrOutputWithContext(context.Background()) +} + +func (i *defaultLogGroupPtrType) ToDefaultLogGroupPtrOutputWithContext(ctx context.Context) DefaultLogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultLogGroupPtrOutput) +} + +// Log group with default setup unless explicitly skipped. +type DefaultLogGroupOutput struct{ *pulumi.OutputState } + +func (DefaultLogGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DefaultLogGroup)(nil)).Elem() +} + +func (o DefaultLogGroupOutput) ToDefaultLogGroupOutput() DefaultLogGroupOutput { + return o +} + +func (o DefaultLogGroupOutput) ToDefaultLogGroupOutputWithContext(ctx context.Context) DefaultLogGroupOutput { + return o +} + +func (o DefaultLogGroupOutput) ToDefaultLogGroupPtrOutput() DefaultLogGroupPtrOutput { + return o.ToDefaultLogGroupPtrOutputWithContext(context.Background()) +} + +func (o DefaultLogGroupOutput) ToDefaultLogGroupPtrOutputWithContext(ctx context.Context) DefaultLogGroupPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DefaultLogGroup) *DefaultLogGroup { + return &v + }).(DefaultLogGroupPtrOutput) +} + +// Arguments to use instead of the default values during creation. +func (o DefaultLogGroupOutput) Args() LogGroupPtrOutput { + return o.ApplyT(func(v DefaultLogGroup) *LogGroup { return v.Args }).(LogGroupPtrOutput) +} + +// Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. +func (o DefaultLogGroupOutput) Existing() ExistingLogGroupPtrOutput { + return o.ApplyT(func(v DefaultLogGroup) *ExistingLogGroup { return v.Existing }).(ExistingLogGroupPtrOutput) +} + +// Skip creation of the log group. +func (o DefaultLogGroupOutput) Skip() pulumi.BoolPtrOutput { + return o.ApplyT(func(v DefaultLogGroup) *bool { return v.Skip }).(pulumi.BoolPtrOutput) +} + +type DefaultLogGroupPtrOutput struct{ *pulumi.OutputState } + +func (DefaultLogGroupPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DefaultLogGroup)(nil)).Elem() +} + +func (o DefaultLogGroupPtrOutput) ToDefaultLogGroupPtrOutput() DefaultLogGroupPtrOutput { + return o +} + +func (o DefaultLogGroupPtrOutput) ToDefaultLogGroupPtrOutputWithContext(ctx context.Context) DefaultLogGroupPtrOutput { + return o +} + +func (o DefaultLogGroupPtrOutput) Elem() DefaultLogGroupOutput { + return o.ApplyT(func(v *DefaultLogGroup) DefaultLogGroup { + if v != nil { + return *v + } + var ret DefaultLogGroup + return ret + }).(DefaultLogGroupOutput) +} + +// Arguments to use instead of the default values during creation. +func (o DefaultLogGroupPtrOutput) Args() LogGroupPtrOutput { + return o.ApplyT(func(v *DefaultLogGroup) *LogGroup { + if v == nil { + return nil + } + return v.Args + }).(LogGroupPtrOutput) +} + +// Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. +func (o DefaultLogGroupPtrOutput) Existing() ExistingLogGroupPtrOutput { + return o.ApplyT(func(v *DefaultLogGroup) *ExistingLogGroup { + if v == nil { + return nil + } + return v.Existing + }).(ExistingLogGroupPtrOutput) +} + +// Skip creation of the log group. +func (o DefaultLogGroupPtrOutput) Skip() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *DefaultLogGroup) *bool { + if v == nil { + return nil + } + return v.Skip + }).(pulumi.BoolPtrOutput) +} + +// Role and policy attachments with default setup unless explicitly skipped or an existing role ARN provided. +type DefaultRoleWithPolicy struct { + // Args to use when creating the role and policies. Can't be specified if `roleArn` is used. + Args *RoleWithPolicy `pulumi:"args"` + // ARN of existing role to use instead of creating a new role. Cannot be used in combination with `args` or `opts`. + RoleArn *string `pulumi:"roleArn"` + // Skips creation of the role if set to `true`. + Skip *bool `pulumi:"skip"` +} + +// DefaultRoleWithPolicyInput is an input type that accepts DefaultRoleWithPolicyArgs and DefaultRoleWithPolicyOutput values. +// You can construct a concrete instance of `DefaultRoleWithPolicyInput` via: +// +// DefaultRoleWithPolicyArgs{...} +type DefaultRoleWithPolicyInput interface { + pulumi.Input + + ToDefaultRoleWithPolicyOutput() DefaultRoleWithPolicyOutput + ToDefaultRoleWithPolicyOutputWithContext(context.Context) DefaultRoleWithPolicyOutput +} + +// Role and policy attachments with default setup unless explicitly skipped or an existing role ARN provided. +type DefaultRoleWithPolicyArgs struct { + // Args to use when creating the role and policies. Can't be specified if `roleArn` is used. + Args *RoleWithPolicyArgs `pulumi:"args"` + // ARN of existing role to use instead of creating a new role. Cannot be used in combination with `args` or `opts`. + RoleArn pulumi.StringPtrInput `pulumi:"roleArn"` + // Skips creation of the role if set to `true`. + Skip *bool `pulumi:"skip"` +} + +func (DefaultRoleWithPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DefaultRoleWithPolicy)(nil)).Elem() +} + +func (i DefaultRoleWithPolicyArgs) ToDefaultRoleWithPolicyOutput() DefaultRoleWithPolicyOutput { + return i.ToDefaultRoleWithPolicyOutputWithContext(context.Background()) +} + +func (i DefaultRoleWithPolicyArgs) ToDefaultRoleWithPolicyOutputWithContext(ctx context.Context) DefaultRoleWithPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultRoleWithPolicyOutput) +} + +func (i DefaultRoleWithPolicyArgs) ToDefaultRoleWithPolicyPtrOutput() DefaultRoleWithPolicyPtrOutput { + return i.ToDefaultRoleWithPolicyPtrOutputWithContext(context.Background()) +} + +func (i DefaultRoleWithPolicyArgs) ToDefaultRoleWithPolicyPtrOutputWithContext(ctx context.Context) DefaultRoleWithPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultRoleWithPolicyOutput).ToDefaultRoleWithPolicyPtrOutputWithContext(ctx) +} + +// DefaultRoleWithPolicyPtrInput is an input type that accepts DefaultRoleWithPolicyArgs, DefaultRoleWithPolicyPtr and DefaultRoleWithPolicyPtrOutput values. +// You can construct a concrete instance of `DefaultRoleWithPolicyPtrInput` via: +// +// DefaultRoleWithPolicyArgs{...} +// +// or: +// +// nil +type DefaultRoleWithPolicyPtrInput interface { + pulumi.Input + + ToDefaultRoleWithPolicyPtrOutput() DefaultRoleWithPolicyPtrOutput + ToDefaultRoleWithPolicyPtrOutputWithContext(context.Context) DefaultRoleWithPolicyPtrOutput +} + +type defaultRoleWithPolicyPtrType DefaultRoleWithPolicyArgs + +func DefaultRoleWithPolicyPtr(v *DefaultRoleWithPolicyArgs) DefaultRoleWithPolicyPtrInput { + return (*defaultRoleWithPolicyPtrType)(v) +} + +func (*defaultRoleWithPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DefaultRoleWithPolicy)(nil)).Elem() +} + +func (i *defaultRoleWithPolicyPtrType) ToDefaultRoleWithPolicyPtrOutput() DefaultRoleWithPolicyPtrOutput { + return i.ToDefaultRoleWithPolicyPtrOutputWithContext(context.Background()) +} + +func (i *defaultRoleWithPolicyPtrType) ToDefaultRoleWithPolicyPtrOutputWithContext(ctx context.Context) DefaultRoleWithPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultRoleWithPolicyPtrOutput) +} + +// Role and policy attachments with default setup unless explicitly skipped or an existing role ARN provided. +type DefaultRoleWithPolicyOutput struct{ *pulumi.OutputState } + +func (DefaultRoleWithPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DefaultRoleWithPolicy)(nil)).Elem() +} + +func (o DefaultRoleWithPolicyOutput) ToDefaultRoleWithPolicyOutput() DefaultRoleWithPolicyOutput { + return o +} + +func (o DefaultRoleWithPolicyOutput) ToDefaultRoleWithPolicyOutputWithContext(ctx context.Context) DefaultRoleWithPolicyOutput { + return o +} + +func (o DefaultRoleWithPolicyOutput) ToDefaultRoleWithPolicyPtrOutput() DefaultRoleWithPolicyPtrOutput { + return o.ToDefaultRoleWithPolicyPtrOutputWithContext(context.Background()) +} + +func (o DefaultRoleWithPolicyOutput) ToDefaultRoleWithPolicyPtrOutputWithContext(ctx context.Context) DefaultRoleWithPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DefaultRoleWithPolicy) *DefaultRoleWithPolicy { + return &v + }).(DefaultRoleWithPolicyPtrOutput) +} + +// Args to use when creating the role and policies. Can't be specified if `roleArn` is used. +func (o DefaultRoleWithPolicyOutput) Args() RoleWithPolicyPtrOutput { + return o.ApplyT(func(v DefaultRoleWithPolicy) *RoleWithPolicy { return v.Args }).(RoleWithPolicyPtrOutput) +} + +// ARN of existing role to use instead of creating a new role. Cannot be used in combination with `args` or `opts`. +func (o DefaultRoleWithPolicyOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v DefaultRoleWithPolicy) *string { return v.RoleArn }).(pulumi.StringPtrOutput) +} + +// Skips creation of the role if set to `true`. +func (o DefaultRoleWithPolicyOutput) Skip() pulumi.BoolPtrOutput { + return o.ApplyT(func(v DefaultRoleWithPolicy) *bool { return v.Skip }).(pulumi.BoolPtrOutput) +} + +type DefaultRoleWithPolicyPtrOutput struct{ *pulumi.OutputState } + +func (DefaultRoleWithPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DefaultRoleWithPolicy)(nil)).Elem() +} + +func (o DefaultRoleWithPolicyPtrOutput) ToDefaultRoleWithPolicyPtrOutput() DefaultRoleWithPolicyPtrOutput { + return o +} + +func (o DefaultRoleWithPolicyPtrOutput) ToDefaultRoleWithPolicyPtrOutputWithContext(ctx context.Context) DefaultRoleWithPolicyPtrOutput { + return o +} + +func (o DefaultRoleWithPolicyPtrOutput) Elem() DefaultRoleWithPolicyOutput { + return o.ApplyT(func(v *DefaultRoleWithPolicy) DefaultRoleWithPolicy { + if v != nil { + return *v + } + var ret DefaultRoleWithPolicy + return ret + }).(DefaultRoleWithPolicyOutput) +} + +// Args to use when creating the role and policies. Can't be specified if `roleArn` is used. +func (o DefaultRoleWithPolicyPtrOutput) Args() RoleWithPolicyPtrOutput { + return o.ApplyT(func(v *DefaultRoleWithPolicy) *RoleWithPolicy { + if v == nil { + return nil + } + return v.Args + }).(RoleWithPolicyPtrOutput) +} + +// ARN of existing role to use instead of creating a new role. Cannot be used in combination with `args` or `opts`. +func (o DefaultRoleWithPolicyPtrOutput) RoleArn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DefaultRoleWithPolicy) *string { + if v == nil { + return nil + } + return v.RoleArn + }).(pulumi.StringPtrOutput) +} + +// Skips creation of the role if set to `true`. +func (o DefaultRoleWithPolicyPtrOutput) Skip() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *DefaultRoleWithPolicy) *bool { + if v == nil { + return nil + } + return v.Skip + }).(pulumi.BoolPtrOutput) +} + +// Security Group with default setup unless explicitly skipped or an existing security group id provided. +type DefaultSecurityGroup struct { + // Args to use when creating the security group. Can't be specified if `securityGroupId` is used. + Args *SecurityGroup `pulumi:"args"` + // Id of existing security group to use instead of creating a new security group. Cannot be used in combination with `args` or `opts`. + SecurityGroupId *string `pulumi:"securityGroupId"` + // Skips creation of the security group if set to `true`. + Skip *bool `pulumi:"skip"` +} + +// Defaults sets the appropriate defaults for DefaultSecurityGroup +func (val *DefaultSecurityGroup) Defaults() *DefaultSecurityGroup { + if val == nil { + return nil + } + tmp := *val + tmp.Args = tmp.Args.Defaults() + + return &tmp +} + +// DefaultSecurityGroupInput is an input type that accepts DefaultSecurityGroupArgs and DefaultSecurityGroupOutput values. +// You can construct a concrete instance of `DefaultSecurityGroupInput` via: +// +// DefaultSecurityGroupArgs{...} +type DefaultSecurityGroupInput interface { + pulumi.Input + + ToDefaultSecurityGroupOutput() DefaultSecurityGroupOutput + ToDefaultSecurityGroupOutputWithContext(context.Context) DefaultSecurityGroupOutput +} + +// Security Group with default setup unless explicitly skipped or an existing security group id provided. +type DefaultSecurityGroupArgs struct { + // Args to use when creating the security group. Can't be specified if `securityGroupId` is used. + Args *SecurityGroupArgs `pulumi:"args"` + // Id of existing security group to use instead of creating a new security group. Cannot be used in combination with `args` or `opts`. + SecurityGroupId pulumi.StringPtrInput `pulumi:"securityGroupId"` + // Skips creation of the security group if set to `true`. + Skip *bool `pulumi:"skip"` +} + +// Defaults sets the appropriate defaults for DefaultSecurityGroupArgs +func (val *DefaultSecurityGroupArgs) Defaults() *DefaultSecurityGroupArgs { + if val == nil { + return nil + } + tmp := *val + tmp.Args = tmp.Args.Defaults() + + return &tmp +} +func (DefaultSecurityGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DefaultSecurityGroup)(nil)).Elem() +} + +func (i DefaultSecurityGroupArgs) ToDefaultSecurityGroupOutput() DefaultSecurityGroupOutput { + return i.ToDefaultSecurityGroupOutputWithContext(context.Background()) +} + +func (i DefaultSecurityGroupArgs) ToDefaultSecurityGroupOutputWithContext(ctx context.Context) DefaultSecurityGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultSecurityGroupOutput) +} + +func (i DefaultSecurityGroupArgs) ToDefaultSecurityGroupPtrOutput() DefaultSecurityGroupPtrOutput { + return i.ToDefaultSecurityGroupPtrOutputWithContext(context.Background()) +} + +func (i DefaultSecurityGroupArgs) ToDefaultSecurityGroupPtrOutputWithContext(ctx context.Context) DefaultSecurityGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultSecurityGroupOutput).ToDefaultSecurityGroupPtrOutputWithContext(ctx) +} + +// DefaultSecurityGroupPtrInput is an input type that accepts DefaultSecurityGroupArgs, DefaultSecurityGroupPtr and DefaultSecurityGroupPtrOutput values. +// You can construct a concrete instance of `DefaultSecurityGroupPtrInput` via: +// +// DefaultSecurityGroupArgs{...} +// +// or: +// +// nil +type DefaultSecurityGroupPtrInput interface { + pulumi.Input + + ToDefaultSecurityGroupPtrOutput() DefaultSecurityGroupPtrOutput + ToDefaultSecurityGroupPtrOutputWithContext(context.Context) DefaultSecurityGroupPtrOutput +} + +type defaultSecurityGroupPtrType DefaultSecurityGroupArgs + +func DefaultSecurityGroupPtr(v *DefaultSecurityGroupArgs) DefaultSecurityGroupPtrInput { + return (*defaultSecurityGroupPtrType)(v) +} + +func (*defaultSecurityGroupPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DefaultSecurityGroup)(nil)).Elem() +} + +func (i *defaultSecurityGroupPtrType) ToDefaultSecurityGroupPtrOutput() DefaultSecurityGroupPtrOutput { + return i.ToDefaultSecurityGroupPtrOutputWithContext(context.Background()) +} + +func (i *defaultSecurityGroupPtrType) ToDefaultSecurityGroupPtrOutputWithContext(ctx context.Context) DefaultSecurityGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DefaultSecurityGroupPtrOutput) +} + +// Security Group with default setup unless explicitly skipped or an existing security group id provided. +type DefaultSecurityGroupOutput struct{ *pulumi.OutputState } + +func (DefaultSecurityGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DefaultSecurityGroup)(nil)).Elem() +} + +func (o DefaultSecurityGroupOutput) ToDefaultSecurityGroupOutput() DefaultSecurityGroupOutput { + return o +} + +func (o DefaultSecurityGroupOutput) ToDefaultSecurityGroupOutputWithContext(ctx context.Context) DefaultSecurityGroupOutput { + return o +} + +func (o DefaultSecurityGroupOutput) ToDefaultSecurityGroupPtrOutput() DefaultSecurityGroupPtrOutput { + return o.ToDefaultSecurityGroupPtrOutputWithContext(context.Background()) +} + +func (o DefaultSecurityGroupOutput) ToDefaultSecurityGroupPtrOutputWithContext(ctx context.Context) DefaultSecurityGroupPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DefaultSecurityGroup) *DefaultSecurityGroup { + return &v + }).(DefaultSecurityGroupPtrOutput) +} + +// Args to use when creating the security group. Can't be specified if `securityGroupId` is used. +func (o DefaultSecurityGroupOutput) Args() SecurityGroupPtrOutput { + return o.ApplyT(func(v DefaultSecurityGroup) *SecurityGroup { return v.Args }).(SecurityGroupPtrOutput) +} + +// Id of existing security group to use instead of creating a new security group. Cannot be used in combination with `args` or `opts`. +func (o DefaultSecurityGroupOutput) SecurityGroupId() pulumi.StringPtrOutput { + return o.ApplyT(func(v DefaultSecurityGroup) *string { return v.SecurityGroupId }).(pulumi.StringPtrOutput) +} + +// Skips creation of the security group if set to `true`. +func (o DefaultSecurityGroupOutput) Skip() pulumi.BoolPtrOutput { + return o.ApplyT(func(v DefaultSecurityGroup) *bool { return v.Skip }).(pulumi.BoolPtrOutput) +} + +type DefaultSecurityGroupPtrOutput struct{ *pulumi.OutputState } + +func (DefaultSecurityGroupPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DefaultSecurityGroup)(nil)).Elem() +} + +func (o DefaultSecurityGroupPtrOutput) ToDefaultSecurityGroupPtrOutput() DefaultSecurityGroupPtrOutput { + return o +} + +func (o DefaultSecurityGroupPtrOutput) ToDefaultSecurityGroupPtrOutputWithContext(ctx context.Context) DefaultSecurityGroupPtrOutput { + return o +} + +func (o DefaultSecurityGroupPtrOutput) Elem() DefaultSecurityGroupOutput { + return o.ApplyT(func(v *DefaultSecurityGroup) DefaultSecurityGroup { + if v != nil { + return *v + } + var ret DefaultSecurityGroup + return ret + }).(DefaultSecurityGroupOutput) +} + +// Args to use when creating the security group. Can't be specified if `securityGroupId` is used. +func (o DefaultSecurityGroupPtrOutput) Args() SecurityGroupPtrOutput { + return o.ApplyT(func(v *DefaultSecurityGroup) *SecurityGroup { + if v == nil { + return nil + } + return v.Args + }).(SecurityGroupPtrOutput) +} + +// Id of existing security group to use instead of creating a new security group. Cannot be used in combination with `args` or `opts`. +func (o DefaultSecurityGroupPtrOutput) SecurityGroupId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DefaultSecurityGroup) *string { + if v == nil { + return nil + } + return v.SecurityGroupId + }).(pulumi.StringPtrOutput) +} + +// Skips creation of the security group if set to `true`. +func (o DefaultSecurityGroupPtrOutput) Skip() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *DefaultSecurityGroup) *bool { + if v == nil { + return nil + } + return v.Skip + }).(pulumi.BoolPtrOutput) +} + +// Reference to an existing bucket. +type ExistingBucket struct { + // Arn of the bucket. Only one of [arn] or [name] can be specified. + Arn *string `pulumi:"arn"` + // Name of the bucket. Only one of [arn] or [name] can be specified. + Name *string `pulumi:"name"` +} + +// ExistingBucketInput is an input type that accepts ExistingBucketArgs and ExistingBucketOutput values. +// You can construct a concrete instance of `ExistingBucketInput` via: +// +// ExistingBucketArgs{...} +type ExistingBucketInput interface { + pulumi.Input + + ToExistingBucketOutput() ExistingBucketOutput + ToExistingBucketOutputWithContext(context.Context) ExistingBucketOutput +} + +// Reference to an existing bucket. +type ExistingBucketArgs struct { + // Arn of the bucket. Only one of [arn] or [name] can be specified. + Arn pulumi.StringPtrInput `pulumi:"arn"` + // Name of the bucket. Only one of [arn] or [name] can be specified. + Name pulumi.StringPtrInput `pulumi:"name"` +} + +func (ExistingBucketArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ExistingBucket)(nil)).Elem() +} + +func (i ExistingBucketArgs) ToExistingBucketOutput() ExistingBucketOutput { + return i.ToExistingBucketOutputWithContext(context.Background()) +} + +func (i ExistingBucketArgs) ToExistingBucketOutputWithContext(ctx context.Context) ExistingBucketOutput { + return pulumi.ToOutputWithContext(ctx, i).(ExistingBucketOutput) +} + +func (i ExistingBucketArgs) ToExistingBucketPtrOutput() ExistingBucketPtrOutput { + return i.ToExistingBucketPtrOutputWithContext(context.Background()) +} + +func (i ExistingBucketArgs) ToExistingBucketPtrOutputWithContext(ctx context.Context) ExistingBucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ExistingBucketOutput).ToExistingBucketPtrOutputWithContext(ctx) +} + +// ExistingBucketPtrInput is an input type that accepts ExistingBucketArgs, ExistingBucketPtr and ExistingBucketPtrOutput values. +// You can construct a concrete instance of `ExistingBucketPtrInput` via: +// +// ExistingBucketArgs{...} +// +// or: +// +// nil +type ExistingBucketPtrInput interface { + pulumi.Input + + ToExistingBucketPtrOutput() ExistingBucketPtrOutput + ToExistingBucketPtrOutputWithContext(context.Context) ExistingBucketPtrOutput +} + +type existingBucketPtrType ExistingBucketArgs + +func ExistingBucketPtr(v *ExistingBucketArgs) ExistingBucketPtrInput { + return (*existingBucketPtrType)(v) +} + +func (*existingBucketPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ExistingBucket)(nil)).Elem() +} + +func (i *existingBucketPtrType) ToExistingBucketPtrOutput() ExistingBucketPtrOutput { + return i.ToExistingBucketPtrOutputWithContext(context.Background()) +} + +func (i *existingBucketPtrType) ToExistingBucketPtrOutputWithContext(ctx context.Context) ExistingBucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ExistingBucketPtrOutput) +} + +// Reference to an existing bucket. +type ExistingBucketOutput struct{ *pulumi.OutputState } + +func (ExistingBucketOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ExistingBucket)(nil)).Elem() +} + +func (o ExistingBucketOutput) ToExistingBucketOutput() ExistingBucketOutput { + return o +} + +func (o ExistingBucketOutput) ToExistingBucketOutputWithContext(ctx context.Context) ExistingBucketOutput { + return o +} + +func (o ExistingBucketOutput) ToExistingBucketPtrOutput() ExistingBucketPtrOutput { + return o.ToExistingBucketPtrOutputWithContext(context.Background()) +} + +func (o ExistingBucketOutput) ToExistingBucketPtrOutputWithContext(ctx context.Context) ExistingBucketPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ExistingBucket) *ExistingBucket { + return &v + }).(ExistingBucketPtrOutput) +} + +// Arn of the bucket. Only one of [arn] or [name] can be specified. +func (o ExistingBucketOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v ExistingBucket) *string { return v.Arn }).(pulumi.StringPtrOutput) +} + +// Name of the bucket. Only one of [arn] or [name] can be specified. +func (o ExistingBucketOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v ExistingBucket) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +type ExistingBucketPtrOutput struct{ *pulumi.OutputState } + +func (ExistingBucketPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ExistingBucket)(nil)).Elem() +} + +func (o ExistingBucketPtrOutput) ToExistingBucketPtrOutput() ExistingBucketPtrOutput { + return o +} + +func (o ExistingBucketPtrOutput) ToExistingBucketPtrOutputWithContext(ctx context.Context) ExistingBucketPtrOutput { + return o +} + +func (o ExistingBucketPtrOutput) Elem() ExistingBucketOutput { + return o.ApplyT(func(v *ExistingBucket) ExistingBucket { + if v != nil { + return *v + } + var ret ExistingBucket + return ret + }).(ExistingBucketOutput) +} + +// Arn of the bucket. Only one of [arn] or [name] can be specified. +func (o ExistingBucketPtrOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ExistingBucket) *string { + if v == nil { + return nil + } + return v.Arn + }).(pulumi.StringPtrOutput) +} + +// Name of the bucket. Only one of [arn] or [name] can be specified. +func (o ExistingBucketPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ExistingBucket) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// Reference to an existing log group. +type ExistingLogGroup struct { + // Arn of the log group. Only one of [arn] or [name] can be specified. + Arn *string `pulumi:"arn"` + // Name of the log group. Only one of [arn] or [name] can be specified. + Name *string `pulumi:"name"` + // Region of the log group. If not specified, the provider region will be used. + Region *string `pulumi:"region"` +} + +// ExistingLogGroupInput is an input type that accepts ExistingLogGroupArgs and ExistingLogGroupOutput values. +// You can construct a concrete instance of `ExistingLogGroupInput` via: +// +// ExistingLogGroupArgs{...} +type ExistingLogGroupInput interface { + pulumi.Input + + ToExistingLogGroupOutput() ExistingLogGroupOutput + ToExistingLogGroupOutputWithContext(context.Context) ExistingLogGroupOutput +} + +// Reference to an existing log group. +type ExistingLogGroupArgs struct { + // Arn of the log group. Only one of [arn] or [name] can be specified. + Arn pulumi.StringPtrInput `pulumi:"arn"` + // Name of the log group. Only one of [arn] or [name] can be specified. + Name pulumi.StringPtrInput `pulumi:"name"` + // Region of the log group. If not specified, the provider region will be used. + Region pulumi.StringPtrInput `pulumi:"region"` +} + +func (ExistingLogGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ExistingLogGroup)(nil)).Elem() +} + +func (i ExistingLogGroupArgs) ToExistingLogGroupOutput() ExistingLogGroupOutput { + return i.ToExistingLogGroupOutputWithContext(context.Background()) +} + +func (i ExistingLogGroupArgs) ToExistingLogGroupOutputWithContext(ctx context.Context) ExistingLogGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(ExistingLogGroupOutput) +} + +func (i ExistingLogGroupArgs) ToExistingLogGroupPtrOutput() ExistingLogGroupPtrOutput { + return i.ToExistingLogGroupPtrOutputWithContext(context.Background()) +} + +func (i ExistingLogGroupArgs) ToExistingLogGroupPtrOutputWithContext(ctx context.Context) ExistingLogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ExistingLogGroupOutput).ToExistingLogGroupPtrOutputWithContext(ctx) +} + +// ExistingLogGroupPtrInput is an input type that accepts ExistingLogGroupArgs, ExistingLogGroupPtr and ExistingLogGroupPtrOutput values. +// You can construct a concrete instance of `ExistingLogGroupPtrInput` via: +// +// ExistingLogGroupArgs{...} +// +// or: +// +// nil +type ExistingLogGroupPtrInput interface { + pulumi.Input + + ToExistingLogGroupPtrOutput() ExistingLogGroupPtrOutput + ToExistingLogGroupPtrOutputWithContext(context.Context) ExistingLogGroupPtrOutput +} + +type existingLogGroupPtrType ExistingLogGroupArgs + +func ExistingLogGroupPtr(v *ExistingLogGroupArgs) ExistingLogGroupPtrInput { + return (*existingLogGroupPtrType)(v) +} + +func (*existingLogGroupPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ExistingLogGroup)(nil)).Elem() +} + +func (i *existingLogGroupPtrType) ToExistingLogGroupPtrOutput() ExistingLogGroupPtrOutput { + return i.ToExistingLogGroupPtrOutputWithContext(context.Background()) +} + +func (i *existingLogGroupPtrType) ToExistingLogGroupPtrOutputWithContext(ctx context.Context) ExistingLogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ExistingLogGroupPtrOutput) +} + +// Reference to an existing log group. +type ExistingLogGroupOutput struct{ *pulumi.OutputState } + +func (ExistingLogGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ExistingLogGroup)(nil)).Elem() +} + +func (o ExistingLogGroupOutput) ToExistingLogGroupOutput() ExistingLogGroupOutput { + return o +} + +func (o ExistingLogGroupOutput) ToExistingLogGroupOutputWithContext(ctx context.Context) ExistingLogGroupOutput { + return o +} + +func (o ExistingLogGroupOutput) ToExistingLogGroupPtrOutput() ExistingLogGroupPtrOutput { + return o.ToExistingLogGroupPtrOutputWithContext(context.Background()) +} + +func (o ExistingLogGroupOutput) ToExistingLogGroupPtrOutputWithContext(ctx context.Context) ExistingLogGroupPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ExistingLogGroup) *ExistingLogGroup { + return &v + }).(ExistingLogGroupPtrOutput) +} + +// Arn of the log group. Only one of [arn] or [name] can be specified. +func (o ExistingLogGroupOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v ExistingLogGroup) *string { return v.Arn }).(pulumi.StringPtrOutput) +} + +// Name of the log group. Only one of [arn] or [name] can be specified. +func (o ExistingLogGroupOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v ExistingLogGroup) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Region of the log group. If not specified, the provider region will be used. +func (o ExistingLogGroupOutput) Region() pulumi.StringPtrOutput { + return o.ApplyT(func(v ExistingLogGroup) *string { return v.Region }).(pulumi.StringPtrOutput) +} + +type ExistingLogGroupPtrOutput struct{ *pulumi.OutputState } + +func (ExistingLogGroupPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ExistingLogGroup)(nil)).Elem() +} + +func (o ExistingLogGroupPtrOutput) ToExistingLogGroupPtrOutput() ExistingLogGroupPtrOutput { + return o +} + +func (o ExistingLogGroupPtrOutput) ToExistingLogGroupPtrOutputWithContext(ctx context.Context) ExistingLogGroupPtrOutput { + return o +} + +func (o ExistingLogGroupPtrOutput) Elem() ExistingLogGroupOutput { + return o.ApplyT(func(v *ExistingLogGroup) ExistingLogGroup { + if v != nil { + return *v + } + var ret ExistingLogGroup + return ret + }).(ExistingLogGroupOutput) +} + +// Arn of the log group. Only one of [arn] or [name] can be specified. +func (o ExistingLogGroupPtrOutput) Arn() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ExistingLogGroup) *string { + if v == nil { + return nil + } + return v.Arn + }).(pulumi.StringPtrOutput) +} + +// Name of the log group. Only one of [arn] or [name] can be specified. +func (o ExistingLogGroupPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ExistingLogGroup) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// Region of the log group. If not specified, the provider region will be used. +func (o ExistingLogGroupPtrOutput) Region() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ExistingLogGroup) *string { + if v == nil { + return nil + } + return v.Region + }).(pulumi.StringPtrOutput) +} + +// The set of arguments for constructing a LogGroup resource. +type LogGroup struct { + // The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, + // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires + // permissions for the CMK whenever the encrypted data is requested. + KmsKeyId *string `pulumi:"kmsKeyId"` + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass *string `pulumi:"logGroupClass"` + // The name of the log group. If omitted, this provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Specifies the number of days + // you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. + // If you select 0, the events in the log group are always retained and never expire. + RetentionInDays *int `pulumi:"retentionInDays"` + // Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. + SkipDestroy *bool `pulumi:"skipDestroy"` + // A map of tags to assign to the resource. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// LogGroupInput is an input type that accepts LogGroupArgs and LogGroupOutput values. +// You can construct a concrete instance of `LogGroupInput` via: +// +// LogGroupArgs{...} +type LogGroupInput interface { + pulumi.Input + + ToLogGroupOutput() LogGroupOutput + ToLogGroupOutputWithContext(context.Context) LogGroupOutput +} + +// The set of arguments for constructing a LogGroup resource. +type LogGroupArgs struct { + // The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, + // AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires + // permissions for the CMK whenever the encrypted data is requested. + KmsKeyId pulumi.StringPtrInput `pulumi:"kmsKeyId"` + // Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. + LogGroupClass pulumi.StringPtrInput `pulumi:"logGroupClass"` + // The name of the log group. If omitted, this provider will assign a random, unique name. + Name pulumi.StringPtrInput `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput `pulumi:"namePrefix"` + // Specifies the number of days + // you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. + // If you select 0, the events in the log group are always retained and never expire. + RetentionInDays pulumi.IntPtrInput `pulumi:"retentionInDays"` + // Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. + SkipDestroy pulumi.BoolPtrInput `pulumi:"skipDestroy"` + // A map of tags to assign to the resource. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (LogGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LogGroup)(nil)).Elem() +} + +func (i LogGroupArgs) ToLogGroupOutput() LogGroupOutput { + return i.ToLogGroupOutputWithContext(context.Background()) +} + +func (i LogGroupArgs) ToLogGroupOutputWithContext(ctx context.Context) LogGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogGroupOutput) +} + +func (i LogGroupArgs) ToLogGroupPtrOutput() LogGroupPtrOutput { + return i.ToLogGroupPtrOutputWithContext(context.Background()) +} + +func (i LogGroupArgs) ToLogGroupPtrOutputWithContext(ctx context.Context) LogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogGroupOutput).ToLogGroupPtrOutputWithContext(ctx) +} + +// LogGroupPtrInput is an input type that accepts LogGroupArgs, LogGroupPtr and LogGroupPtrOutput values. +// You can construct a concrete instance of `LogGroupPtrInput` via: +// +// LogGroupArgs{...} +// +// or: +// +// nil +type LogGroupPtrInput interface { + pulumi.Input + + ToLogGroupPtrOutput() LogGroupPtrOutput + ToLogGroupPtrOutputWithContext(context.Context) LogGroupPtrOutput +} + +type logGroupPtrType LogGroupArgs + +func LogGroupPtr(v *LogGroupArgs) LogGroupPtrInput { + return (*logGroupPtrType)(v) +} + +func (*logGroupPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**LogGroup)(nil)).Elem() +} + +func (i *logGroupPtrType) ToLogGroupPtrOutput() LogGroupPtrOutput { + return i.ToLogGroupPtrOutputWithContext(context.Background()) +} + +func (i *logGroupPtrType) ToLogGroupPtrOutputWithContext(ctx context.Context) LogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(LogGroupPtrOutput) +} + +// The set of arguments for constructing a LogGroup resource. +type LogGroupOutput struct{ *pulumi.OutputState } + +func (LogGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LogGroup)(nil)).Elem() +} + +func (o LogGroupOutput) ToLogGroupOutput() LogGroupOutput { + return o +} + +func (o LogGroupOutput) ToLogGroupOutputWithContext(ctx context.Context) LogGroupOutput { + return o +} + +func (o LogGroupOutput) ToLogGroupPtrOutput() LogGroupPtrOutput { + return o.ToLogGroupPtrOutputWithContext(context.Background()) +} + +func (o LogGroupOutput) ToLogGroupPtrOutputWithContext(ctx context.Context) LogGroupPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v LogGroup) *LogGroup { + return &v + }).(LogGroupPtrOutput) +} + +// The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, +// AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires +// permissions for the CMK whenever the encrypted data is requested. +func (o LogGroupOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v LogGroup) *string { return v.KmsKeyId }).(pulumi.StringPtrOutput) +} + +// Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. +func (o LogGroupOutput) LogGroupClass() pulumi.StringPtrOutput { + return o.ApplyT(func(v LogGroup) *string { return v.LogGroupClass }).(pulumi.StringPtrOutput) +} + +// The name of the log group. If omitted, this provider will assign a random, unique name. +func (o LogGroupOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v LogGroup) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o LogGroupOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v LogGroup) *string { return v.NamePrefix }).(pulumi.StringPtrOutput) +} + +// Specifies the number of days +// you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. +// If you select 0, the events in the log group are always retained and never expire. +func (o LogGroupOutput) RetentionInDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v LogGroup) *int { return v.RetentionInDays }).(pulumi.IntPtrOutput) +} + +// Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. +func (o LogGroupOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v LogGroup) *bool { return v.SkipDestroy }).(pulumi.BoolPtrOutput) +} + +// A map of tags to assign to the resource. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o LogGroupOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v LogGroup) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type LogGroupPtrOutput struct{ *pulumi.OutputState } + +func (LogGroupPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**LogGroup)(nil)).Elem() +} + +func (o LogGroupPtrOutput) ToLogGroupPtrOutput() LogGroupPtrOutput { + return o +} + +func (o LogGroupPtrOutput) ToLogGroupPtrOutputWithContext(ctx context.Context) LogGroupPtrOutput { + return o +} + +func (o LogGroupPtrOutput) Elem() LogGroupOutput { + return o.ApplyT(func(v *LogGroup) LogGroup { + if v != nil { + return *v + } + var ret LogGroup + return ret + }).(LogGroupOutput) +} + +// The ARN of the KMS Key to use when encrypting log data. Please note, after the AWS KMS CMK is disassociated from the log group, +// AWS CloudWatch Logs stops encrypting newly ingested data for the log group. All previously ingested data remains encrypted, and AWS CloudWatch Logs requires +// permissions for the CMK whenever the encrypted data is requested. +func (o LogGroupPtrOutput) KmsKeyId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogGroup) *string { + if v == nil { + return nil + } + return v.KmsKeyId + }).(pulumi.StringPtrOutput) +} + +// Specified the log class of the log group. Possible values are: `STANDARD` or `INFREQUENT_ACCESS`. +func (o LogGroupPtrOutput) LogGroupClass() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogGroup) *string { + if v == nil { + return nil + } + return v.LogGroupClass + }).(pulumi.StringPtrOutput) +} + +// The name of the log group. If omitted, this provider will assign a random, unique name. +func (o LogGroupPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogGroup) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o LogGroupPtrOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *LogGroup) *string { + if v == nil { + return nil + } + return v.NamePrefix + }).(pulumi.StringPtrOutput) +} + +// Specifies the number of days +// you want to retain log events in the specified log group. Possible values are: 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1096, 1827, 2192, 2557, 2922, 3288, 3653, and 0. +// If you select 0, the events in the log group are always retained and never expire. +func (o LogGroupPtrOutput) RetentionInDays() pulumi.IntPtrOutput { + return o.ApplyT(func(v *LogGroup) *int { + if v == nil { + return nil + } + return v.RetentionInDays + }).(pulumi.IntPtrOutput) +} + +// Set to true if you do not wish the log group (and any logs it may contain) to be deleted at destroy time, and instead just remove the log group from the state. +func (o LogGroupPtrOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *LogGroup) *bool { + if v == nil { + return nil + } + return v.SkipDestroy + }).(pulumi.BoolPtrOutput) +} + +// A map of tags to assign to the resource. .If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o LogGroupPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *LogGroup) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// Log group which is only created if enabled. +type OptionalLogGroup struct { + // Arguments to use instead of the default values during creation. + Args *LogGroup `pulumi:"args"` + // Enable creation of the log group. + Enable *bool `pulumi:"enable"` + // Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. + Existing *ExistingLogGroup `pulumi:"existing"` +} + +// OptionalLogGroupInput is an input type that accepts OptionalLogGroupArgs and OptionalLogGroupOutput values. +// You can construct a concrete instance of `OptionalLogGroupInput` via: +// +// OptionalLogGroupArgs{...} +type OptionalLogGroupInput interface { + pulumi.Input + + ToOptionalLogGroupOutput() OptionalLogGroupOutput + ToOptionalLogGroupOutputWithContext(context.Context) OptionalLogGroupOutput +} + +// Log group which is only created if enabled. +type OptionalLogGroupArgs struct { + // Arguments to use instead of the default values during creation. + Args *LogGroupArgs `pulumi:"args"` + // Enable creation of the log group. + Enable *bool `pulumi:"enable"` + // Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. + Existing *ExistingLogGroupArgs `pulumi:"existing"` +} + +func (OptionalLogGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*OptionalLogGroup)(nil)).Elem() +} + +func (i OptionalLogGroupArgs) ToOptionalLogGroupOutput() OptionalLogGroupOutput { + return i.ToOptionalLogGroupOutputWithContext(context.Background()) +} + +func (i OptionalLogGroupArgs) ToOptionalLogGroupOutputWithContext(ctx context.Context) OptionalLogGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(OptionalLogGroupOutput) +} + +func (i OptionalLogGroupArgs) ToOptionalLogGroupPtrOutput() OptionalLogGroupPtrOutput { + return i.ToOptionalLogGroupPtrOutputWithContext(context.Background()) +} + +func (i OptionalLogGroupArgs) ToOptionalLogGroupPtrOutputWithContext(ctx context.Context) OptionalLogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(OptionalLogGroupOutput).ToOptionalLogGroupPtrOutputWithContext(ctx) +} + +// OptionalLogGroupPtrInput is an input type that accepts OptionalLogGroupArgs, OptionalLogGroupPtr and OptionalLogGroupPtrOutput values. +// You can construct a concrete instance of `OptionalLogGroupPtrInput` via: +// +// OptionalLogGroupArgs{...} +// +// or: +// +// nil +type OptionalLogGroupPtrInput interface { + pulumi.Input + + ToOptionalLogGroupPtrOutput() OptionalLogGroupPtrOutput + ToOptionalLogGroupPtrOutputWithContext(context.Context) OptionalLogGroupPtrOutput +} + +type optionalLogGroupPtrType OptionalLogGroupArgs + +func OptionalLogGroupPtr(v *OptionalLogGroupArgs) OptionalLogGroupPtrInput { + return (*optionalLogGroupPtrType)(v) +} + +func (*optionalLogGroupPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**OptionalLogGroup)(nil)).Elem() +} + +func (i *optionalLogGroupPtrType) ToOptionalLogGroupPtrOutput() OptionalLogGroupPtrOutput { + return i.ToOptionalLogGroupPtrOutputWithContext(context.Background()) +} + +func (i *optionalLogGroupPtrType) ToOptionalLogGroupPtrOutputWithContext(ctx context.Context) OptionalLogGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(OptionalLogGroupPtrOutput) +} + +// Log group which is only created if enabled. +type OptionalLogGroupOutput struct{ *pulumi.OutputState } + +func (OptionalLogGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((*OptionalLogGroup)(nil)).Elem() +} + +func (o OptionalLogGroupOutput) ToOptionalLogGroupOutput() OptionalLogGroupOutput { + return o +} + +func (o OptionalLogGroupOutput) ToOptionalLogGroupOutputWithContext(ctx context.Context) OptionalLogGroupOutput { + return o +} + +func (o OptionalLogGroupOutput) ToOptionalLogGroupPtrOutput() OptionalLogGroupPtrOutput { + return o.ToOptionalLogGroupPtrOutputWithContext(context.Background()) +} + +func (o OptionalLogGroupOutput) ToOptionalLogGroupPtrOutputWithContext(ctx context.Context) OptionalLogGroupPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v OptionalLogGroup) *OptionalLogGroup { + return &v + }).(OptionalLogGroupPtrOutput) +} + +// Arguments to use instead of the default values during creation. +func (o OptionalLogGroupOutput) Args() LogGroupPtrOutput { + return o.ApplyT(func(v OptionalLogGroup) *LogGroup { return v.Args }).(LogGroupPtrOutput) +} + +// Enable creation of the log group. +func (o OptionalLogGroupOutput) Enable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v OptionalLogGroup) *bool { return v.Enable }).(pulumi.BoolPtrOutput) +} + +// Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. +func (o OptionalLogGroupOutput) Existing() ExistingLogGroupPtrOutput { + return o.ApplyT(func(v OptionalLogGroup) *ExistingLogGroup { return v.Existing }).(ExistingLogGroupPtrOutput) +} + +type OptionalLogGroupPtrOutput struct{ *pulumi.OutputState } + +func (OptionalLogGroupPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**OptionalLogGroup)(nil)).Elem() +} + +func (o OptionalLogGroupPtrOutput) ToOptionalLogGroupPtrOutput() OptionalLogGroupPtrOutput { + return o +} + +func (o OptionalLogGroupPtrOutput) ToOptionalLogGroupPtrOutputWithContext(ctx context.Context) OptionalLogGroupPtrOutput { + return o +} + +func (o OptionalLogGroupPtrOutput) Elem() OptionalLogGroupOutput { + return o.ApplyT(func(v *OptionalLogGroup) OptionalLogGroup { + if v != nil { + return *v + } + var ret OptionalLogGroup + return ret + }).(OptionalLogGroupOutput) +} + +// Arguments to use instead of the default values during creation. +func (o OptionalLogGroupPtrOutput) Args() LogGroupPtrOutput { + return o.ApplyT(func(v *OptionalLogGroup) *LogGroup { + if v == nil { + return nil + } + return v.Args + }).(LogGroupPtrOutput) +} + +// Enable creation of the log group. +func (o OptionalLogGroupPtrOutput) Enable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *OptionalLogGroup) *bool { + if v == nil { + return nil + } + return v.Enable + }).(pulumi.BoolPtrOutput) +} + +// Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. +func (o OptionalLogGroupPtrOutput) Existing() ExistingLogGroupPtrOutput { + return o.ApplyT(func(v *OptionalLogGroup) *ExistingLogGroup { + if v == nil { + return nil + } + return v.Existing + }).(ExistingLogGroupPtrOutput) +} + +// Bucket with default setup. +type RequiredBucket struct { + // Arguments to use instead of the default values during creation. + Args *Bucket `pulumi:"args"` + // Identity of an existing bucket to use. Cannot be used in combination with `args`. + Existing *ExistingBucket `pulumi:"existing"` +} + +// RequiredBucketInput is an input type that accepts RequiredBucketArgs and RequiredBucketOutput values. +// You can construct a concrete instance of `RequiredBucketInput` via: +// +// RequiredBucketArgs{...} +type RequiredBucketInput interface { + pulumi.Input + + ToRequiredBucketOutput() RequiredBucketOutput + ToRequiredBucketOutputWithContext(context.Context) RequiredBucketOutput +} + +// Bucket with default setup. +type RequiredBucketArgs struct { + // Arguments to use instead of the default values during creation. + Args *BucketArgs `pulumi:"args"` + // Identity of an existing bucket to use. Cannot be used in combination with `args`. + Existing *ExistingBucketArgs `pulumi:"existing"` +} + +func (RequiredBucketArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RequiredBucket)(nil)).Elem() +} + +func (i RequiredBucketArgs) ToRequiredBucketOutput() RequiredBucketOutput { + return i.ToRequiredBucketOutputWithContext(context.Background()) +} + +func (i RequiredBucketArgs) ToRequiredBucketOutputWithContext(ctx context.Context) RequiredBucketOutput { + return pulumi.ToOutputWithContext(ctx, i).(RequiredBucketOutput) +} + +func (i RequiredBucketArgs) ToRequiredBucketPtrOutput() RequiredBucketPtrOutput { + return i.ToRequiredBucketPtrOutputWithContext(context.Background()) +} + +func (i RequiredBucketArgs) ToRequiredBucketPtrOutputWithContext(ctx context.Context) RequiredBucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RequiredBucketOutput).ToRequiredBucketPtrOutputWithContext(ctx) +} + +// RequiredBucketPtrInput is an input type that accepts RequiredBucketArgs, RequiredBucketPtr and RequiredBucketPtrOutput values. +// You can construct a concrete instance of `RequiredBucketPtrInput` via: +// +// RequiredBucketArgs{...} +// +// or: +// +// nil +type RequiredBucketPtrInput interface { + pulumi.Input + + ToRequiredBucketPtrOutput() RequiredBucketPtrOutput + ToRequiredBucketPtrOutputWithContext(context.Context) RequiredBucketPtrOutput +} + +type requiredBucketPtrType RequiredBucketArgs + +func RequiredBucketPtr(v *RequiredBucketArgs) RequiredBucketPtrInput { + return (*requiredBucketPtrType)(v) +} + +func (*requiredBucketPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RequiredBucket)(nil)).Elem() +} + +func (i *requiredBucketPtrType) ToRequiredBucketPtrOutput() RequiredBucketPtrOutput { + return i.ToRequiredBucketPtrOutputWithContext(context.Background()) +} + +func (i *requiredBucketPtrType) ToRequiredBucketPtrOutputWithContext(ctx context.Context) RequiredBucketPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RequiredBucketPtrOutput) +} + +// Bucket with default setup. +type RequiredBucketOutput struct{ *pulumi.OutputState } + +func (RequiredBucketOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RequiredBucket)(nil)).Elem() +} + +func (o RequiredBucketOutput) ToRequiredBucketOutput() RequiredBucketOutput { + return o +} + +func (o RequiredBucketOutput) ToRequiredBucketOutputWithContext(ctx context.Context) RequiredBucketOutput { + return o +} + +func (o RequiredBucketOutput) ToRequiredBucketPtrOutput() RequiredBucketPtrOutput { + return o.ToRequiredBucketPtrOutputWithContext(context.Background()) +} + +func (o RequiredBucketOutput) ToRequiredBucketPtrOutputWithContext(ctx context.Context) RequiredBucketPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RequiredBucket) *RequiredBucket { + return &v + }).(RequiredBucketPtrOutput) +} + +// Arguments to use instead of the default values during creation. +func (o RequiredBucketOutput) Args() BucketPtrOutput { + return o.ApplyT(func(v RequiredBucket) *Bucket { return v.Args }).(BucketPtrOutput) +} + +// Identity of an existing bucket to use. Cannot be used in combination with `args`. +func (o RequiredBucketOutput) Existing() ExistingBucketPtrOutput { + return o.ApplyT(func(v RequiredBucket) *ExistingBucket { return v.Existing }).(ExistingBucketPtrOutput) +} + +type RequiredBucketPtrOutput struct{ *pulumi.OutputState } + +func (RequiredBucketPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RequiredBucket)(nil)).Elem() +} + +func (o RequiredBucketPtrOutput) ToRequiredBucketPtrOutput() RequiredBucketPtrOutput { + return o +} + +func (o RequiredBucketPtrOutput) ToRequiredBucketPtrOutputWithContext(ctx context.Context) RequiredBucketPtrOutput { + return o +} + +func (o RequiredBucketPtrOutput) Elem() RequiredBucketOutput { + return o.ApplyT(func(v *RequiredBucket) RequiredBucket { + if v != nil { + return *v + } + var ret RequiredBucket + return ret + }).(RequiredBucketOutput) +} + +// Arguments to use instead of the default values during creation. +func (o RequiredBucketPtrOutput) Args() BucketPtrOutput { + return o.ApplyT(func(v *RequiredBucket) *Bucket { + if v == nil { + return nil + } + return v.Args + }).(BucketPtrOutput) +} + +// Identity of an existing bucket to use. Cannot be used in combination with `args`. +func (o RequiredBucketPtrOutput) Existing() ExistingBucketPtrOutput { + return o.ApplyT(func(v *RequiredBucket) *ExistingBucket { + if v == nil { + return nil + } + return v.Existing + }).(ExistingBucketPtrOutput) +} + +// Log group with default setup. +type RequiredLogGroup struct { + // Arguments to use instead of the default values during creation. + Args *LogGroup `pulumi:"args"` + // Identity of an existing log group to use. Cannot be used in combination with `args` or `opts`. + Existing *ExistingLogGroup `pulumi:"existing"` +} + +// The set of arguments for constructing a Role resource and Policy attachments. +type RoleWithPolicy struct { + // Description of the role. + Description *string `pulumi:"description"` + // Whether to force detaching any policies the role has before destroying it. Defaults to `false`. + ForceDetachPolicies *bool `pulumi:"forceDetachPolicies"` + // Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inline_policy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. + // + // Deprecated: The inline_policy argument is deprecated. Use the aws.iam.RolePolicy resource instead. If Terraform should exclusively manage all inline policy associations (the current behavior of this argument), use the aws.iam.RolePoliciesExclusive resource as well. + InlinePolicies []iam.RoleInlinePolicy `pulumi:"inlinePolicies"` + // Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managed_policy_arns = []`) will cause Pulumi to remove _all_ managed policy attachments. + ManagedPolicyArns []string `pulumi:"managedPolicyArns"` + // Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. + MaxSessionDuration *int `pulumi:"maxSessionDuration"` + // Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Name *string `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path *string `pulumi:"path"` + // ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary *string `pulumi:"permissionsBoundary"` + // ARNs of the policies to attach to the created role. + PolicyArns []string `pulumi:"policyArns"` + // Key-value mapping of tags for the IAM role. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` +} + +// RoleWithPolicyInput is an input type that accepts RoleWithPolicyArgs and RoleWithPolicyOutput values. +// You can construct a concrete instance of `RoleWithPolicyInput` via: +// +// RoleWithPolicyArgs{...} +type RoleWithPolicyInput interface { + pulumi.Input + + ToRoleWithPolicyOutput() RoleWithPolicyOutput + ToRoleWithPolicyOutputWithContext(context.Context) RoleWithPolicyOutput +} + +// The set of arguments for constructing a Role resource and Policy attachments. +type RoleWithPolicyArgs struct { + // Description of the role. + Description pulumi.StringPtrInput `pulumi:"description"` + // Whether to force detaching any policies the role has before destroying it. Defaults to `false`. + ForceDetachPolicies pulumi.BoolPtrInput `pulumi:"forceDetachPolicies"` + // Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inline_policy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. + // + // Deprecated: The inline_policy argument is deprecated. Use the aws.iam.RolePolicy resource instead. If Terraform should exclusively manage all inline policy associations (the current behavior of this argument), use the aws.iam.RolePoliciesExclusive resource as well. + InlinePolicies iam.RoleInlinePolicyArrayInput `pulumi:"inlinePolicies"` + // Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managed_policy_arns = []`) will cause Pulumi to remove _all_ managed policy attachments. + ManagedPolicyArns pulumi.StringArrayInput `pulumi:"managedPolicyArns"` + // Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. + MaxSessionDuration pulumi.IntPtrInput `pulumi:"maxSessionDuration"` + // Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Name pulumi.StringPtrInput `pulumi:"name"` + // Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput `pulumi:"namePrefix"` + // Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. + Path pulumi.StringPtrInput `pulumi:"path"` + // ARN of the policy that is used to set the permissions boundary for the role. + PermissionsBoundary pulumi.StringPtrInput `pulumi:"permissionsBoundary"` + // ARNs of the policies to attach to the created role. + PolicyArns []string `pulumi:"policyArns"` + // Key-value mapping of tags for the IAM role. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` +} + +func (RoleWithPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RoleWithPolicy)(nil)).Elem() +} + +func (i RoleWithPolicyArgs) ToRoleWithPolicyOutput() RoleWithPolicyOutput { + return i.ToRoleWithPolicyOutputWithContext(context.Background()) +} + +func (i RoleWithPolicyArgs) ToRoleWithPolicyOutputWithContext(ctx context.Context) RoleWithPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleWithPolicyOutput) +} + +func (i RoleWithPolicyArgs) ToRoleWithPolicyPtrOutput() RoleWithPolicyPtrOutput { + return i.ToRoleWithPolicyPtrOutputWithContext(context.Background()) +} + +func (i RoleWithPolicyArgs) ToRoleWithPolicyPtrOutputWithContext(ctx context.Context) RoleWithPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleWithPolicyOutput).ToRoleWithPolicyPtrOutputWithContext(ctx) +} + +// RoleWithPolicyPtrInput is an input type that accepts RoleWithPolicyArgs, RoleWithPolicyPtr and RoleWithPolicyPtrOutput values. +// You can construct a concrete instance of `RoleWithPolicyPtrInput` via: +// +// RoleWithPolicyArgs{...} +// +// or: +// +// nil +type RoleWithPolicyPtrInput interface { + pulumi.Input + + ToRoleWithPolicyPtrOutput() RoleWithPolicyPtrOutput + ToRoleWithPolicyPtrOutputWithContext(context.Context) RoleWithPolicyPtrOutput +} + +type roleWithPolicyPtrType RoleWithPolicyArgs + +func RoleWithPolicyPtr(v *RoleWithPolicyArgs) RoleWithPolicyPtrInput { + return (*roleWithPolicyPtrType)(v) +} + +func (*roleWithPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RoleWithPolicy)(nil)).Elem() +} + +func (i *roleWithPolicyPtrType) ToRoleWithPolicyPtrOutput() RoleWithPolicyPtrOutput { + return i.ToRoleWithPolicyPtrOutputWithContext(context.Background()) +} + +func (i *roleWithPolicyPtrType) ToRoleWithPolicyPtrOutputWithContext(ctx context.Context) RoleWithPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RoleWithPolicyPtrOutput) +} + +// The set of arguments for constructing a Role resource and Policy attachments. +type RoleWithPolicyOutput struct{ *pulumi.OutputState } + +func (RoleWithPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RoleWithPolicy)(nil)).Elem() +} + +func (o RoleWithPolicyOutput) ToRoleWithPolicyOutput() RoleWithPolicyOutput { + return o +} + +func (o RoleWithPolicyOutput) ToRoleWithPolicyOutputWithContext(ctx context.Context) RoleWithPolicyOutput { + return o +} + +func (o RoleWithPolicyOutput) ToRoleWithPolicyPtrOutput() RoleWithPolicyPtrOutput { + return o.ToRoleWithPolicyPtrOutputWithContext(context.Background()) +} + +func (o RoleWithPolicyOutput) ToRoleWithPolicyPtrOutputWithContext(ctx context.Context) RoleWithPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RoleWithPolicy) *RoleWithPolicy { + return &v + }).(RoleWithPolicyPtrOutput) +} + +// Description of the role. +func (o RoleWithPolicyOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoleWithPolicy) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// Whether to force detaching any policies the role has before destroying it. Defaults to `false`. +func (o RoleWithPolicyOutput) ForceDetachPolicies() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RoleWithPolicy) *bool { return v.ForceDetachPolicies }).(pulumi.BoolPtrOutput) +} + +// Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inline_policy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. +// +// Deprecated: The inline_policy argument is deprecated. Use the aws.iam.RolePolicy resource instead. If Terraform should exclusively manage all inline policy associations (the current behavior of this argument), use the aws.iam.RolePoliciesExclusive resource as well. +func (o RoleWithPolicyOutput) InlinePolicies() iam.RoleInlinePolicyArrayOutput { + return o.ApplyT(func(v RoleWithPolicy) []iam.RoleInlinePolicy { return v.InlinePolicies }).(iam.RoleInlinePolicyArrayOutput) +} + +// Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managed_policy_arns = []`) will cause Pulumi to remove _all_ managed policy attachments. +func (o RoleWithPolicyOutput) ManagedPolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v RoleWithPolicy) []string { return v.ManagedPolicyArns }).(pulumi.StringArrayOutput) +} + +// Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. +func (o RoleWithPolicyOutput) MaxSessionDuration() pulumi.IntPtrOutput { + return o.ApplyT(func(v RoleWithPolicy) *int { return v.MaxSessionDuration }).(pulumi.IntPtrOutput) +} + +// Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. +func (o RoleWithPolicyOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoleWithPolicy) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. +func (o RoleWithPolicyOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoleWithPolicy) *string { return v.NamePrefix }).(pulumi.StringPtrOutput) +} + +// Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. +func (o RoleWithPolicyOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoleWithPolicy) *string { return v.Path }).(pulumi.StringPtrOutput) +} + +// ARN of the policy that is used to set the permissions boundary for the role. +func (o RoleWithPolicyOutput) PermissionsBoundary() pulumi.StringPtrOutput { + return o.ApplyT(func(v RoleWithPolicy) *string { return v.PermissionsBoundary }).(pulumi.StringPtrOutput) +} + +// ARNs of the policies to attach to the created role. +func (o RoleWithPolicyOutput) PolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v RoleWithPolicy) []string { return v.PolicyArns }).(pulumi.StringArrayOutput) +} + +// Key-value mapping of tags for the IAM role. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o RoleWithPolicyOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v RoleWithPolicy) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +type RoleWithPolicyPtrOutput struct{ *pulumi.OutputState } + +func (RoleWithPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RoleWithPolicy)(nil)).Elem() +} + +func (o RoleWithPolicyPtrOutput) ToRoleWithPolicyPtrOutput() RoleWithPolicyPtrOutput { + return o +} + +func (o RoleWithPolicyPtrOutput) ToRoleWithPolicyPtrOutputWithContext(ctx context.Context) RoleWithPolicyPtrOutput { + return o +} + +func (o RoleWithPolicyPtrOutput) Elem() RoleWithPolicyOutput { + return o.ApplyT(func(v *RoleWithPolicy) RoleWithPolicy { + if v != nil { + return *v + } + var ret RoleWithPolicy + return ret + }).(RoleWithPolicyOutput) +} + +// Description of the role. +func (o RoleWithPolicyPtrOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RoleWithPolicy) *string { + if v == nil { + return nil + } + return v.Description + }).(pulumi.StringPtrOutput) +} + +// Whether to force detaching any policies the role has before destroying it. Defaults to `false`. +func (o RoleWithPolicyPtrOutput) ForceDetachPolicies() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RoleWithPolicy) *bool { + if v == nil { + return nil + } + return v.ForceDetachPolicies + }).(pulumi.BoolPtrOutput) +} + +// Configuration block defining an exclusive set of IAM inline policies associated with the IAM role. See below. If no blocks are configured, Pulumi will not manage any inline policies in this resource. Configuring one empty block (i.e., `inline_policy {}`) will cause Pulumi to remove _all_ inline policies added out of band on `apply`. +// +// Deprecated: The inline_policy argument is deprecated. Use the aws.iam.RolePolicy resource instead. If Terraform should exclusively manage all inline policy associations (the current behavior of this argument), use the aws.iam.RolePoliciesExclusive resource as well. +func (o RoleWithPolicyPtrOutput) InlinePolicies() iam.RoleInlinePolicyArrayOutput { + return o.ApplyT(func(v *RoleWithPolicy) []iam.RoleInlinePolicy { + if v == nil { + return nil + } + return v.InlinePolicies + }).(iam.RoleInlinePolicyArrayOutput) +} + +// Set of exclusive IAM managed policy ARNs to attach to the IAM role. If this attribute is not configured, Pulumi will ignore policy attachments to this resource. When configured, Pulumi will align the role's managed policy attachments with this set by attaching or detaching managed policies. Configuring an empty set (i.e., `managed_policy_arns = []`) will cause Pulumi to remove _all_ managed policy attachments. +func (o RoleWithPolicyPtrOutput) ManagedPolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RoleWithPolicy) []string { + if v == nil { + return nil + } + return v.ManagedPolicyArns + }).(pulumi.StringArrayOutput) +} + +// Maximum session duration (in seconds) that you want to set for the specified role. If you do not specify a value for this setting, the default maximum of one hour is applied. This setting can have a value from 1 hour to 12 hours. +func (o RoleWithPolicyPtrOutput) MaxSessionDuration() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RoleWithPolicy) *int { + if v == nil { + return nil + } + return v.MaxSessionDuration + }).(pulumi.IntPtrOutput) +} + +// Friendly name of the role. If omitted, the provider will assign a random, unique name. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. +func (o RoleWithPolicyPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RoleWithPolicy) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`. +func (o RoleWithPolicyPtrOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RoleWithPolicy) *string { + if v == nil { + return nil + } + return v.NamePrefix + }).(pulumi.StringPtrOutput) +} + +// Path to the role. See [IAM Identifiers](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html) for more information. +func (o RoleWithPolicyPtrOutput) Path() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RoleWithPolicy) *string { + if v == nil { + return nil + } + return v.Path + }).(pulumi.StringPtrOutput) +} + +// ARN of the policy that is used to set the permissions boundary for the role. +func (o RoleWithPolicyPtrOutput) PermissionsBoundary() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RoleWithPolicy) *string { + if v == nil { + return nil + } + return v.PermissionsBoundary + }).(pulumi.StringPtrOutput) +} + +// ARNs of the policies to attach to the created role. +func (o RoleWithPolicyPtrOutput) PolicyArns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RoleWithPolicy) []string { + if v == nil { + return nil + } + return v.PolicyArns + }).(pulumi.StringArrayOutput) +} + +// Key-value mapping of tags for the IAM role. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o RoleWithPolicyPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *RoleWithPolicy) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// The set of arguments for constructing a Security Group resource. +type SecurityGroup struct { + // Security group description. Defaults to `Managed by Pulumi`. Cannot be `""`. **NOTE**: This field maps to the AWS `GroupDescription` attribute, for which there is no Update API. If you'd like to classify your security groups in a way that can be updated, use `tags`. + Description *string `pulumi:"description"` + // Configuration block for egress rules. Can be specified multiple times for each egress rule. Each egress block supports fields documented below. This argument is processed in attribute-as-blocks mode. + Egress []ec2.SecurityGroupEgress `pulumi:"egress"` + // Configuration block for ingress rules. Can be specified multiple times for each ingress rule. Each ingress block supports fields documented below. This argument is processed in attribute-as-blocks mode. + Ingress []ec2.SecurityGroupIngress `pulumi:"ingress"` + // Name of the security group. If omitted, the provider will assign a random, unique name. + Name *string `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix *string `pulumi:"namePrefix"` + // Instruct the provider to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. This is normally not needed, however certain AWS services such as Elastic Map Reduce may automatically add required rules to security groups used with the service, and those rules may contain a cyclic dependency that prevent the security groups from being destroyed without removing the dependency first. Default `false`. + RevokeRulesOnDelete *bool `pulumi:"revokeRulesOnDelete"` + // Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // VPC ID. Defaults to the region's default VPC. + VpcId *string `pulumi:"vpcId"` +} + +// Defaults sets the appropriate defaults for SecurityGroup +func (val *SecurityGroup) Defaults() *SecurityGroup { + if val == nil { + return nil + } + tmp := *val + if tmp.Description == nil { + description_ := "Managed by Pulumi" + tmp.Description = &description_ + } + return &tmp +} + +// SecurityGroupInput is an input type that accepts SecurityGroupArgs and SecurityGroupOutput values. +// You can construct a concrete instance of `SecurityGroupInput` via: +// +// SecurityGroupArgs{...} +type SecurityGroupInput interface { + pulumi.Input + + ToSecurityGroupOutput() SecurityGroupOutput + ToSecurityGroupOutputWithContext(context.Context) SecurityGroupOutput +} + +// The set of arguments for constructing a Security Group resource. +type SecurityGroupArgs struct { + // Security group description. Defaults to `Managed by Pulumi`. Cannot be `""`. **NOTE**: This field maps to the AWS `GroupDescription` attribute, for which there is no Update API. If you'd like to classify your security groups in a way that can be updated, use `tags`. + Description pulumi.StringPtrInput `pulumi:"description"` + // Configuration block for egress rules. Can be specified multiple times for each egress rule. Each egress block supports fields documented below. This argument is processed in attribute-as-blocks mode. + Egress ec2.SecurityGroupEgressArrayInput `pulumi:"egress"` + // Configuration block for ingress rules. Can be specified multiple times for each ingress rule. Each ingress block supports fields documented below. This argument is processed in attribute-as-blocks mode. + Ingress ec2.SecurityGroupIngressArrayInput `pulumi:"ingress"` + // Name of the security group. If omitted, the provider will assign a random, unique name. + Name pulumi.StringPtrInput `pulumi:"name"` + // Creates a unique name beginning with the specified prefix. Conflicts with `name`. + NamePrefix pulumi.StringPtrInput `pulumi:"namePrefix"` + // Instruct the provider to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. This is normally not needed, however certain AWS services such as Elastic Map Reduce may automatically add required rules to security groups used with the service, and those rules may contain a cyclic dependency that prevent the security groups from being destroyed without removing the dependency first. Default `false`. + RevokeRulesOnDelete pulumi.BoolPtrInput `pulumi:"revokeRulesOnDelete"` + // Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` + // VPC ID. Defaults to the region's default VPC. + VpcId pulumi.StringPtrInput `pulumi:"vpcId"` +} + +// Defaults sets the appropriate defaults for SecurityGroupArgs +func (val *SecurityGroupArgs) Defaults() *SecurityGroupArgs { + if val == nil { + return nil + } + tmp := *val + if tmp.Description == nil { + tmp.Description = pulumi.StringPtr("Managed by Pulumi") + } + return &tmp +} +func (SecurityGroupArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityGroup)(nil)).Elem() +} + +func (i SecurityGroupArgs) ToSecurityGroupOutput() SecurityGroupOutput { + return i.ToSecurityGroupOutputWithContext(context.Background()) +} + +func (i SecurityGroupArgs) ToSecurityGroupOutputWithContext(ctx context.Context) SecurityGroupOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGroupOutput) +} + +func (i SecurityGroupArgs) ToSecurityGroupPtrOutput() SecurityGroupPtrOutput { + return i.ToSecurityGroupPtrOutputWithContext(context.Background()) +} + +func (i SecurityGroupArgs) ToSecurityGroupPtrOutputWithContext(ctx context.Context) SecurityGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGroupOutput).ToSecurityGroupPtrOutputWithContext(ctx) +} + +// SecurityGroupPtrInput is an input type that accepts SecurityGroupArgs, SecurityGroupPtr and SecurityGroupPtrOutput values. +// You can construct a concrete instance of `SecurityGroupPtrInput` via: +// +// SecurityGroupArgs{...} +// +// or: +// +// nil +type SecurityGroupPtrInput interface { + pulumi.Input + + ToSecurityGroupPtrOutput() SecurityGroupPtrOutput + ToSecurityGroupPtrOutputWithContext(context.Context) SecurityGroupPtrOutput +} + +type securityGroupPtrType SecurityGroupArgs + +func SecurityGroupPtr(v *SecurityGroupArgs) SecurityGroupPtrInput { + return (*securityGroupPtrType)(v) +} + +func (*securityGroupPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityGroup)(nil)).Elem() +} + +func (i *securityGroupPtrType) ToSecurityGroupPtrOutput() SecurityGroupPtrOutput { + return i.ToSecurityGroupPtrOutputWithContext(context.Background()) +} + +func (i *securityGroupPtrType) ToSecurityGroupPtrOutputWithContext(ctx context.Context) SecurityGroupPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecurityGroupPtrOutput) +} + +// The set of arguments for constructing a Security Group resource. +type SecurityGroupOutput struct{ *pulumi.OutputState } + +func (SecurityGroupOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecurityGroup)(nil)).Elem() +} + +func (o SecurityGroupOutput) ToSecurityGroupOutput() SecurityGroupOutput { + return o +} + +func (o SecurityGroupOutput) ToSecurityGroupOutputWithContext(ctx context.Context) SecurityGroupOutput { + return o +} + +func (o SecurityGroupOutput) ToSecurityGroupPtrOutput() SecurityGroupPtrOutput { + return o.ToSecurityGroupPtrOutputWithContext(context.Background()) +} + +func (o SecurityGroupOutput) ToSecurityGroupPtrOutputWithContext(ctx context.Context) SecurityGroupPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v SecurityGroup) *SecurityGroup { + return &v + }).(SecurityGroupPtrOutput) +} + +// Security group description. Defaults to `Managed by Pulumi`. Cannot be `""`. **NOTE**: This field maps to the AWS `GroupDescription` attribute, for which there is no Update API. If you'd like to classify your security groups in a way that can be updated, use `tags`. +func (o SecurityGroupOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityGroup) *string { return v.Description }).(pulumi.StringPtrOutput) +} + +// Configuration block for egress rules. Can be specified multiple times for each egress rule. Each egress block supports fields documented below. This argument is processed in attribute-as-blocks mode. +func (o SecurityGroupOutput) Egress() ec2.SecurityGroupEgressArrayOutput { + return o.ApplyT(func(v SecurityGroup) []ec2.SecurityGroupEgress { return v.Egress }).(ec2.SecurityGroupEgressArrayOutput) +} + +// Configuration block for ingress rules. Can be specified multiple times for each ingress rule. Each ingress block supports fields documented below. This argument is processed in attribute-as-blocks mode. +func (o SecurityGroupOutput) Ingress() ec2.SecurityGroupIngressArrayOutput { + return o.ApplyT(func(v SecurityGroup) []ec2.SecurityGroupIngress { return v.Ingress }).(ec2.SecurityGroupIngressArrayOutput) +} + +// Name of the security group. If omitted, the provider will assign a random, unique name. +func (o SecurityGroupOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityGroup) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o SecurityGroupOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityGroup) *string { return v.NamePrefix }).(pulumi.StringPtrOutput) +} + +// Instruct the provider to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. This is normally not needed, however certain AWS services such as Elastic Map Reduce may automatically add required rules to security groups used with the service, and those rules may contain a cyclic dependency that prevent the security groups from being destroyed without removing the dependency first. Default `false`. +func (o SecurityGroupOutput) RevokeRulesOnDelete() pulumi.BoolPtrOutput { + return o.ApplyT(func(v SecurityGroup) *bool { return v.RevokeRulesOnDelete }).(pulumi.BoolPtrOutput) +} + +// Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o SecurityGroupOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v SecurityGroup) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// VPC ID. Defaults to the region's default VPC. +func (o SecurityGroupOutput) VpcId() pulumi.StringPtrOutput { + return o.ApplyT(func(v SecurityGroup) *string { return v.VpcId }).(pulumi.StringPtrOutput) +} + +type SecurityGroupPtrOutput struct{ *pulumi.OutputState } + +func (SecurityGroupPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**SecurityGroup)(nil)).Elem() +} + +func (o SecurityGroupPtrOutput) ToSecurityGroupPtrOutput() SecurityGroupPtrOutput { + return o +} + +func (o SecurityGroupPtrOutput) ToSecurityGroupPtrOutputWithContext(ctx context.Context) SecurityGroupPtrOutput { + return o +} + +func (o SecurityGroupPtrOutput) Elem() SecurityGroupOutput { + return o.ApplyT(func(v *SecurityGroup) SecurityGroup { + if v != nil { + return *v + } + var ret SecurityGroup + return ret + }).(SecurityGroupOutput) +} + +// Security group description. Defaults to `Managed by Pulumi`. Cannot be `""`. **NOTE**: This field maps to the AWS `GroupDescription` attribute, for which there is no Update API. If you'd like to classify your security groups in a way that can be updated, use `tags`. +func (o SecurityGroupPtrOutput) Description() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityGroup) *string { + if v == nil { + return nil + } + return v.Description + }).(pulumi.StringPtrOutput) +} + +// Configuration block for egress rules. Can be specified multiple times for each egress rule. Each egress block supports fields documented below. This argument is processed in attribute-as-blocks mode. +func (o SecurityGroupPtrOutput) Egress() ec2.SecurityGroupEgressArrayOutput { + return o.ApplyT(func(v *SecurityGroup) []ec2.SecurityGroupEgress { + if v == nil { + return nil + } + return v.Egress + }).(ec2.SecurityGroupEgressArrayOutput) +} + +// Configuration block for ingress rules. Can be specified multiple times for each ingress rule. Each ingress block supports fields documented below. This argument is processed in attribute-as-blocks mode. +func (o SecurityGroupPtrOutput) Ingress() ec2.SecurityGroupIngressArrayOutput { + return o.ApplyT(func(v *SecurityGroup) []ec2.SecurityGroupIngress { + if v == nil { + return nil + } + return v.Ingress + }).(ec2.SecurityGroupIngressArrayOutput) +} + +// Name of the security group. If omitted, the provider will assign a random, unique name. +func (o SecurityGroupPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityGroup) *string { + if v == nil { + return nil + } + return v.Name + }).(pulumi.StringPtrOutput) +} + +// Creates a unique name beginning with the specified prefix. Conflicts with `name`. +func (o SecurityGroupPtrOutput) NamePrefix() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityGroup) *string { + if v == nil { + return nil + } + return v.NamePrefix + }).(pulumi.StringPtrOutput) +} + +// Instruct the provider to revoke all of the Security Groups attached ingress and egress rules before deleting the rule itself. This is normally not needed, however certain AWS services such as Elastic Map Reduce may automatically add required rules to security groups used with the service, and those rules may contain a cyclic dependency that prevent the security groups from being destroyed without removing the dependency first. Default `false`. +func (o SecurityGroupPtrOutput) RevokeRulesOnDelete() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *SecurityGroup) *bool { + if v == nil { + return nil + } + return v.RevokeRulesOnDelete + }).(pulumi.BoolPtrOutput) +} + +// Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o SecurityGroupPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *SecurityGroup) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// VPC ID. Defaults to the region's default VPC. +func (o SecurityGroupPtrOutput) VpcId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *SecurityGroup) *string { + if v == nil { + return nil + } + return v.VpcId + }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BucketInput)(nil)).Elem(), BucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*BucketPtrInput)(nil)).Elem(), BucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DefaultLogGroupInput)(nil)).Elem(), DefaultLogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DefaultLogGroupPtrInput)(nil)).Elem(), DefaultLogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DefaultRoleWithPolicyInput)(nil)).Elem(), DefaultRoleWithPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DefaultRoleWithPolicyPtrInput)(nil)).Elem(), DefaultRoleWithPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DefaultSecurityGroupInput)(nil)).Elem(), DefaultSecurityGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DefaultSecurityGroupPtrInput)(nil)).Elem(), DefaultSecurityGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ExistingBucketInput)(nil)).Elem(), ExistingBucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ExistingBucketPtrInput)(nil)).Elem(), ExistingBucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ExistingLogGroupInput)(nil)).Elem(), ExistingLogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ExistingLogGroupPtrInput)(nil)).Elem(), ExistingLogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogGroupInput)(nil)).Elem(), LogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*LogGroupPtrInput)(nil)).Elem(), LogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*OptionalLogGroupInput)(nil)).Elem(), OptionalLogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*OptionalLogGroupPtrInput)(nil)).Elem(), OptionalLogGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RequiredBucketInput)(nil)).Elem(), RequiredBucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RequiredBucketPtrInput)(nil)).Elem(), RequiredBucketArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RoleWithPolicyInput)(nil)).Elem(), RoleWithPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RoleWithPolicyPtrInput)(nil)).Elem(), RoleWithPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGroupInput)(nil)).Elem(), SecurityGroupArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecurityGroupPtrInput)(nil)).Elem(), SecurityGroupArgs{}) + pulumi.RegisterOutputType(BucketOutput{}) + pulumi.RegisterOutputType(BucketPtrOutput{}) + pulumi.RegisterOutputType(DefaultLogGroupOutput{}) + pulumi.RegisterOutputType(DefaultLogGroupPtrOutput{}) + pulumi.RegisterOutputType(DefaultRoleWithPolicyOutput{}) + pulumi.RegisterOutputType(DefaultRoleWithPolicyPtrOutput{}) + pulumi.RegisterOutputType(DefaultSecurityGroupOutput{}) + pulumi.RegisterOutputType(DefaultSecurityGroupPtrOutput{}) + pulumi.RegisterOutputType(ExistingBucketOutput{}) + pulumi.RegisterOutputType(ExistingBucketPtrOutput{}) + pulumi.RegisterOutputType(ExistingLogGroupOutput{}) + pulumi.RegisterOutputType(ExistingLogGroupPtrOutput{}) + pulumi.RegisterOutputType(LogGroupOutput{}) + pulumi.RegisterOutputType(LogGroupPtrOutput{}) + pulumi.RegisterOutputType(OptionalLogGroupOutput{}) + pulumi.RegisterOutputType(OptionalLogGroupPtrOutput{}) + pulumi.RegisterOutputType(RequiredBucketOutput{}) + pulumi.RegisterOutputType(RequiredBucketPtrOutput{}) + pulumi.RegisterOutputType(RoleWithPolicyOutput{}) + pulumi.RegisterOutputType(RoleWithPolicyPtrOutput{}) + pulumi.RegisterOutputType(SecurityGroupOutput{}) + pulumi.RegisterOutputType(SecurityGroupPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2service.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2service.go new file mode 100644 index 000000000..c512df812 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2service.go @@ -0,0 +1,315 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Create an ECS Service resource for EC2 with the given unique name, arguments, and options. +// Creates Task definition if `taskDefinitionArgs` is specified. +type EC2Service struct { + pulumi.ResourceState + + // Underlying ECS Service resource + Service ecs.ServiceOutput `pulumi:"service"` + // Underlying EC2 Task definition component resource if created from args + TaskDefinition ecs.TaskDefinitionOutput `pulumi:"taskDefinition"` +} + +// NewEC2Service registers a new resource with the given unique name, arguments, and options. +func NewEC2Service(ctx *pulumi.Context, + name string, args *EC2ServiceArgs, opts ...pulumi.ResourceOption) (*EC2Service, error) { + if args == nil { + args = &EC2ServiceArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource EC2Service + err := ctx.RegisterRemoteComponentResource("awsx:ecs:EC2Service", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type ec2serviceArgs struct { + // Information about the CloudWatch alarms. See below. + Alarms *ecs.ServiceAlarms `pulumi:"alarms"` + // ARN of an ECS cluster. + Cluster *string `pulumi:"cluster"` + // If `true`, this provider will not wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + ContinueBeforeSteadyState *bool `pulumi:"continueBeforeSteadyState"` + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker *ecs.ServiceDeploymentCircuitBreaker `pulumi:"deploymentCircuitBreaker"` + // Configuration block for deployment controller configuration. See below. + DeploymentController *ecs.ServiceDeploymentController `pulumi:"deploymentController"` + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent *int `pulumi:"deploymentMaximumPercent"` + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent *int `pulumi:"deploymentMinimumHealthyPercent"` + // Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount *int `pulumi:"desiredCount"` + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete *bool `pulumi:"forceDelete"` + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `ordered_placement_strategy` and `placement_constraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment *bool `pulumi:"forceNewDeployment"` + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds *int `pulumi:"healthCheckGracePeriodSeconds"` + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole *string `pulumi:"iamRole"` + // Configuration block for load balancers. See below. + LoadBalancers []ecs.ServiceLoadBalancer `pulumi:"loadBalancers"` + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration *ecs.ServiceNetworkConfiguration `pulumi:"networkConfiguration"` + // Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `force_new_deployment` is enabled. The maximum number of `ordered_placement_strategy` blocks is `5`. See below. + OrderedPlacementStrategies []ecs.ServiceOrderedPlacementStrategy `pulumi:"orderedPlacementStrategies"` + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `force_new_deployment` is enabled. Maximum number of `placement_constraints` is `10`. See below. + PlacementConstraints []ecs.ServicePlacementConstraint `pulumi:"placementConstraints"` + // Platform version on which to run your service. Only applicable for `launch_type` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion *string `pulumi:"platformVersion"` + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags *string `pulumi:"propagateTags"` + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy *string `pulumi:"schedulingStrategy"` + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration *ecs.ServiceServiceConnectConfiguration `pulumi:"serviceConnectConfiguration"` + // Service discovery registries for the service. The maximum number of `service_registries` blocks is `1`. See below. + ServiceRegistries *ecs.ServiceServiceRegistries `pulumi:"serviceRegistries"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinition *string `pulumi:"taskDefinition"` + // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinitionArgs *EC2ServiceTaskDefinition `pulumi:"taskDefinitionArgs"` + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers map[string]string `pulumi:"triggers"` + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration *ecs.ServiceVolumeConfiguration `pulumi:"volumeConfiguration"` +} + +// The set of arguments for constructing a EC2Service resource. +type EC2ServiceArgs struct { + // Information about the CloudWatch alarms. See below. + Alarms ecs.ServiceAlarmsPtrInput + // ARN of an ECS cluster. + Cluster pulumi.StringPtrInput + // If `true`, this provider will not wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + ContinueBeforeSteadyState pulumi.BoolPtrInput + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker ecs.ServiceDeploymentCircuitBreakerPtrInput + // Configuration block for deployment controller configuration. See below. + DeploymentController ecs.ServiceDeploymentControllerPtrInput + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent pulumi.IntPtrInput + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent pulumi.IntPtrInput + // Number of instances of the task definition to place and keep running. Defaults to 0. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount pulumi.IntPtrInput + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags pulumi.BoolPtrInput + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand pulumi.BoolPtrInput + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete pulumi.BoolPtrInput + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `ordered_placement_strategy` and `placement_constraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment pulumi.BoolPtrInput + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds pulumi.IntPtrInput + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole pulumi.StringPtrInput + // Configuration block for load balancers. See below. + LoadBalancers ecs.ServiceLoadBalancerArrayInput + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration ecs.ServiceNetworkConfigurationPtrInput + // Service level strategy rules that are taken into consideration during task placement. List from top to bottom in order of precedence. Updates to this configuration will take effect next task deployment unless `force_new_deployment` is enabled. The maximum number of `ordered_placement_strategy` blocks is `5`. See below. + OrderedPlacementStrategies ecs.ServiceOrderedPlacementStrategyArrayInput + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `force_new_deployment` is enabled. Maximum number of `placement_constraints` is `10`. See below. + PlacementConstraints ecs.ServicePlacementConstraintArrayInput + // Platform version on which to run your service. Only applicable for `launch_type` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringPtrInput + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags pulumi.StringPtrInput + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy pulumi.StringPtrInput + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration ecs.ServiceServiceConnectConfigurationPtrInput + // Service discovery registries for the service. The maximum number of `service_registries` blocks is `1`. See below. + ServiceRegistries ecs.ServiceServiceRegistriesPtrInput + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinition pulumi.StringPtrInput + // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinitionArgs *EC2ServiceTaskDefinitionArgs + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers pulumi.StringMapInput + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration ecs.ServiceVolumeConfigurationPtrInput +} + +func (EC2ServiceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ec2serviceArgs)(nil)).Elem() +} + +type EC2ServiceInput interface { + pulumi.Input + + ToEC2ServiceOutput() EC2ServiceOutput + ToEC2ServiceOutputWithContext(ctx context.Context) EC2ServiceOutput +} + +func (*EC2Service) ElementType() reflect.Type { + return reflect.TypeOf((**EC2Service)(nil)).Elem() +} + +func (i *EC2Service) ToEC2ServiceOutput() EC2ServiceOutput { + return i.ToEC2ServiceOutputWithContext(context.Background()) +} + +func (i *EC2Service) ToEC2ServiceOutputWithContext(ctx context.Context) EC2ServiceOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2ServiceOutput) +} + +// EC2ServiceArrayInput is an input type that accepts EC2ServiceArray and EC2ServiceArrayOutput values. +// You can construct a concrete instance of `EC2ServiceArrayInput` via: +// +// EC2ServiceArray{ EC2ServiceArgs{...} } +type EC2ServiceArrayInput interface { + pulumi.Input + + ToEC2ServiceArrayOutput() EC2ServiceArrayOutput + ToEC2ServiceArrayOutputWithContext(context.Context) EC2ServiceArrayOutput +} + +type EC2ServiceArray []EC2ServiceInput + +func (EC2ServiceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EC2Service)(nil)).Elem() +} + +func (i EC2ServiceArray) ToEC2ServiceArrayOutput() EC2ServiceArrayOutput { + return i.ToEC2ServiceArrayOutputWithContext(context.Background()) +} + +func (i EC2ServiceArray) ToEC2ServiceArrayOutputWithContext(ctx context.Context) EC2ServiceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2ServiceArrayOutput) +} + +// EC2ServiceMapInput is an input type that accepts EC2ServiceMap and EC2ServiceMapOutput values. +// You can construct a concrete instance of `EC2ServiceMapInput` via: +// +// EC2ServiceMap{ "key": EC2ServiceArgs{...} } +type EC2ServiceMapInput interface { + pulumi.Input + + ToEC2ServiceMapOutput() EC2ServiceMapOutput + ToEC2ServiceMapOutputWithContext(context.Context) EC2ServiceMapOutput +} + +type EC2ServiceMap map[string]EC2ServiceInput + +func (EC2ServiceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EC2Service)(nil)).Elem() +} + +func (i EC2ServiceMap) ToEC2ServiceMapOutput() EC2ServiceMapOutput { + return i.ToEC2ServiceMapOutputWithContext(context.Background()) +} + +func (i EC2ServiceMap) ToEC2ServiceMapOutputWithContext(ctx context.Context) EC2ServiceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2ServiceMapOutput) +} + +type EC2ServiceOutput struct{ *pulumi.OutputState } + +func (EC2ServiceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EC2Service)(nil)).Elem() +} + +func (o EC2ServiceOutput) ToEC2ServiceOutput() EC2ServiceOutput { + return o +} + +func (o EC2ServiceOutput) ToEC2ServiceOutputWithContext(ctx context.Context) EC2ServiceOutput { + return o +} + +// Underlying ECS Service resource +func (o EC2ServiceOutput) Service() ecs.ServiceOutput { + return o.ApplyT(func(v *EC2Service) ecs.ServiceOutput { return v.Service }).(ecs.ServiceOutput) +} + +// Underlying EC2 Task definition component resource if created from args +func (o EC2ServiceOutput) TaskDefinition() ecs.TaskDefinitionOutput { + return o.ApplyT(func(v *EC2Service) ecs.TaskDefinitionOutput { return v.TaskDefinition }).(ecs.TaskDefinitionOutput) +} + +type EC2ServiceArrayOutput struct{ *pulumi.OutputState } + +func (EC2ServiceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EC2Service)(nil)).Elem() +} + +func (o EC2ServiceArrayOutput) ToEC2ServiceArrayOutput() EC2ServiceArrayOutput { + return o +} + +func (o EC2ServiceArrayOutput) ToEC2ServiceArrayOutputWithContext(ctx context.Context) EC2ServiceArrayOutput { + return o +} + +func (o EC2ServiceArrayOutput) Index(i pulumi.IntInput) EC2ServiceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EC2Service { + return vs[0].([]*EC2Service)[vs[1].(int)] + }).(EC2ServiceOutput) +} + +type EC2ServiceMapOutput struct{ *pulumi.OutputState } + +func (EC2ServiceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EC2Service)(nil)).Elem() +} + +func (o EC2ServiceMapOutput) ToEC2ServiceMapOutput() EC2ServiceMapOutput { + return o +} + +func (o EC2ServiceMapOutput) ToEC2ServiceMapOutputWithContext(ctx context.Context) EC2ServiceMapOutput { + return o +} + +func (o EC2ServiceMapOutput) MapIndex(k pulumi.StringInput) EC2ServiceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EC2Service { + return vs[0].(map[string]*EC2Service)[vs[1].(string)] + }).(EC2ServiceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EC2ServiceInput)(nil)).Elem(), &EC2Service{}) + pulumi.RegisterInputType(reflect.TypeOf((*EC2ServiceArrayInput)(nil)).Elem(), EC2ServiceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EC2ServiceMapInput)(nil)).Elem(), EC2ServiceMap{}) + pulumi.RegisterOutputType(EC2ServiceOutput{}) + pulumi.RegisterOutputType(EC2ServiceArrayOutput{}) + pulumi.RegisterOutputType(EC2ServiceMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2taskDefinition.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2taskDefinition.go new file mode 100644 index 000000000..784319c9c --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/ec2taskDefinition.go @@ -0,0 +1,316 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type EC2TaskDefinition struct { + pulumi.ResourceState + + // Auto-created IAM task execution role that the Amazon ECS container agent and the Docker daemon can assume. + ExecutionRole iam.RoleOutput `pulumi:"executionRole"` + // Computed load balancers from target groups specified of container port mappings. + LoadBalancers ecs.ServiceLoadBalancerArrayOutput `pulumi:"loadBalancers"` + // Auto-created Log Group resource for use by containers. + LogGroup cloudwatch.LogGroupOutput `pulumi:"logGroup"` + // Underlying ECS Task Definition resource + TaskDefinition ecs.TaskDefinitionOutput `pulumi:"taskDefinition"` + // Auto-created IAM role that allows your Amazon ECS container task to make calls to other AWS services. + TaskRole iam.RoleOutput `pulumi:"taskRole"` +} + +// NewEC2TaskDefinition registers a new resource with the given unique name, arguments, and options. +func NewEC2TaskDefinition(ctx *pulumi.Context, + name string, args *EC2TaskDefinitionArgs, opts ...pulumi.ResourceOption) (*EC2TaskDefinition, error) { + if args == nil { + args = &EC2TaskDefinitionArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource EC2TaskDefinition + err := ctx.RegisterRemoteComponentResource("awsx:ecs:EC2TaskDefinition", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type ec2taskDefinitionArgs struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinition `pulumi:"container"` + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinition `pulumi:"containers"` + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu *string `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage *ecs.TaskDefinitionEphemeralStorage `pulumi:"ephemeralStorage"` + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicy `pulumi:"executionRole"` + // An optional unique name for your task definition. If not specified, then a default will be created. + Family *string `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators []ecs.TaskDefinitionInferenceAccelerator `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode *string `pulumi:"ipcMode"` + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroup `pulumi:"logGroup"` + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory *string `pulumi:"memory"` + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode *string `pulumi:"networkMode"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode *string `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints []ecs.TaskDefinitionPlacementConstraint `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration *ecs.TaskDefinitionProxyConfiguration `pulumi:"proxyConfiguration"` + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform *ecs.TaskDefinitionRuntimePlatform `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy *bool `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest *bool `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` +} + +// The set of arguments for constructing a EC2TaskDefinition resource. +type EC2TaskDefinitionArgs struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinitionArgs + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinitionArgs + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu pulumi.StringPtrInput + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage ecs.TaskDefinitionEphemeralStoragePtrInput + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicyArgs + // An optional unique name for your task definition. If not specified, then a default will be created. + Family pulumi.StringPtrInput + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators ecs.TaskDefinitionInferenceAcceleratorArrayInput + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode pulumi.StringPtrInput + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroupArgs + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory pulumi.StringPtrInput + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode pulumi.StringPtrInput + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode pulumi.StringPtrInput + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints ecs.TaskDefinitionPlacementConstraintArrayInput + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration ecs.TaskDefinitionProxyConfigurationPtrInput + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform ecs.TaskDefinitionRuntimePlatformPtrInput + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy pulumi.BoolPtrInput + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicyArgs + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest pulumi.BoolPtrInput + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes ecs.TaskDefinitionVolumeArrayInput +} + +func (EC2TaskDefinitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ec2taskDefinitionArgs)(nil)).Elem() +} + +type EC2TaskDefinitionInput interface { + pulumi.Input + + ToEC2TaskDefinitionOutput() EC2TaskDefinitionOutput + ToEC2TaskDefinitionOutputWithContext(ctx context.Context) EC2TaskDefinitionOutput +} + +func (*EC2TaskDefinition) ElementType() reflect.Type { + return reflect.TypeOf((**EC2TaskDefinition)(nil)).Elem() +} + +func (i *EC2TaskDefinition) ToEC2TaskDefinitionOutput() EC2TaskDefinitionOutput { + return i.ToEC2TaskDefinitionOutputWithContext(context.Background()) +} + +func (i *EC2TaskDefinition) ToEC2TaskDefinitionOutputWithContext(ctx context.Context) EC2TaskDefinitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2TaskDefinitionOutput) +} + +// EC2TaskDefinitionArrayInput is an input type that accepts EC2TaskDefinitionArray and EC2TaskDefinitionArrayOutput values. +// You can construct a concrete instance of `EC2TaskDefinitionArrayInput` via: +// +// EC2TaskDefinitionArray{ EC2TaskDefinitionArgs{...} } +type EC2TaskDefinitionArrayInput interface { + pulumi.Input + + ToEC2TaskDefinitionArrayOutput() EC2TaskDefinitionArrayOutput + ToEC2TaskDefinitionArrayOutputWithContext(context.Context) EC2TaskDefinitionArrayOutput +} + +type EC2TaskDefinitionArray []EC2TaskDefinitionInput + +func (EC2TaskDefinitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EC2TaskDefinition)(nil)).Elem() +} + +func (i EC2TaskDefinitionArray) ToEC2TaskDefinitionArrayOutput() EC2TaskDefinitionArrayOutput { + return i.ToEC2TaskDefinitionArrayOutputWithContext(context.Background()) +} + +func (i EC2TaskDefinitionArray) ToEC2TaskDefinitionArrayOutputWithContext(ctx context.Context) EC2TaskDefinitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2TaskDefinitionArrayOutput) +} + +// EC2TaskDefinitionMapInput is an input type that accepts EC2TaskDefinitionMap and EC2TaskDefinitionMapOutput values. +// You can construct a concrete instance of `EC2TaskDefinitionMapInput` via: +// +// EC2TaskDefinitionMap{ "key": EC2TaskDefinitionArgs{...} } +type EC2TaskDefinitionMapInput interface { + pulumi.Input + + ToEC2TaskDefinitionMapOutput() EC2TaskDefinitionMapOutput + ToEC2TaskDefinitionMapOutputWithContext(context.Context) EC2TaskDefinitionMapOutput +} + +type EC2TaskDefinitionMap map[string]EC2TaskDefinitionInput + +func (EC2TaskDefinitionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EC2TaskDefinition)(nil)).Elem() +} + +func (i EC2TaskDefinitionMap) ToEC2TaskDefinitionMapOutput() EC2TaskDefinitionMapOutput { + return i.ToEC2TaskDefinitionMapOutputWithContext(context.Background()) +} + +func (i EC2TaskDefinitionMap) ToEC2TaskDefinitionMapOutputWithContext(ctx context.Context) EC2TaskDefinitionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2TaskDefinitionMapOutput) +} + +type EC2TaskDefinitionOutput struct{ *pulumi.OutputState } + +func (EC2TaskDefinitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EC2TaskDefinition)(nil)).Elem() +} + +func (o EC2TaskDefinitionOutput) ToEC2TaskDefinitionOutput() EC2TaskDefinitionOutput { + return o +} + +func (o EC2TaskDefinitionOutput) ToEC2TaskDefinitionOutputWithContext(ctx context.Context) EC2TaskDefinitionOutput { + return o +} + +// Auto-created IAM task execution role that the Amazon ECS container agent and the Docker daemon can assume. +func (o EC2TaskDefinitionOutput) ExecutionRole() iam.RoleOutput { + return o.ApplyT(func(v *EC2TaskDefinition) iam.RoleOutput { return v.ExecutionRole }).(iam.RoleOutput) +} + +// Computed load balancers from target groups specified of container port mappings. +func (o EC2TaskDefinitionOutput) LoadBalancers() ecs.ServiceLoadBalancerArrayOutput { + return o.ApplyT(func(v *EC2TaskDefinition) ecs.ServiceLoadBalancerArrayOutput { return v.LoadBalancers }).(ecs.ServiceLoadBalancerArrayOutput) +} + +// Auto-created Log Group resource for use by containers. +func (o EC2TaskDefinitionOutput) LogGroup() cloudwatch.LogGroupOutput { + return o.ApplyT(func(v *EC2TaskDefinition) cloudwatch.LogGroupOutput { return v.LogGroup }).(cloudwatch.LogGroupOutput) +} + +// Underlying ECS Task Definition resource +func (o EC2TaskDefinitionOutput) TaskDefinition() ecs.TaskDefinitionOutput { + return o.ApplyT(func(v *EC2TaskDefinition) ecs.TaskDefinitionOutput { return v.TaskDefinition }).(ecs.TaskDefinitionOutput) +} + +// Auto-created IAM role that allows your Amazon ECS container task to make calls to other AWS services. +func (o EC2TaskDefinitionOutput) TaskRole() iam.RoleOutput { + return o.ApplyT(func(v *EC2TaskDefinition) iam.RoleOutput { return v.TaskRole }).(iam.RoleOutput) +} + +type EC2TaskDefinitionArrayOutput struct{ *pulumi.OutputState } + +func (EC2TaskDefinitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*EC2TaskDefinition)(nil)).Elem() +} + +func (o EC2TaskDefinitionArrayOutput) ToEC2TaskDefinitionArrayOutput() EC2TaskDefinitionArrayOutput { + return o +} + +func (o EC2TaskDefinitionArrayOutput) ToEC2TaskDefinitionArrayOutputWithContext(ctx context.Context) EC2TaskDefinitionArrayOutput { + return o +} + +func (o EC2TaskDefinitionArrayOutput) Index(i pulumi.IntInput) EC2TaskDefinitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *EC2TaskDefinition { + return vs[0].([]*EC2TaskDefinition)[vs[1].(int)] + }).(EC2TaskDefinitionOutput) +} + +type EC2TaskDefinitionMapOutput struct{ *pulumi.OutputState } + +func (EC2TaskDefinitionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*EC2TaskDefinition)(nil)).Elem() +} + +func (o EC2TaskDefinitionMapOutput) ToEC2TaskDefinitionMapOutput() EC2TaskDefinitionMapOutput { + return o +} + +func (o EC2TaskDefinitionMapOutput) ToEC2TaskDefinitionMapOutputWithContext(ctx context.Context) EC2TaskDefinitionMapOutput { + return o +} + +func (o EC2TaskDefinitionMapOutput) MapIndex(k pulumi.StringInput) EC2TaskDefinitionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *EC2TaskDefinition { + return vs[0].(map[string]*EC2TaskDefinition)[vs[1].(string)] + }).(EC2TaskDefinitionOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EC2TaskDefinitionInput)(nil)).Elem(), &EC2TaskDefinition{}) + pulumi.RegisterInputType(reflect.TypeOf((*EC2TaskDefinitionArrayInput)(nil)).Elem(), EC2TaskDefinitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*EC2TaskDefinitionMapInput)(nil)).Elem(), EC2TaskDefinitionMap{}) + pulumi.RegisterOutputType(EC2TaskDefinitionOutput{}) + pulumi.RegisterOutputType(EC2TaskDefinitionArrayOutput{}) + pulumi.RegisterOutputType(EC2TaskDefinitionMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateService.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateService.go new file mode 100644 index 000000000..ec0bf00e5 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateService.go @@ -0,0 +1,315 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Create an ECS Service resource for Fargate with the given unique name, arguments, and options. +// Creates Task definition if `taskDefinitionArgs` is specified. +type FargateService struct { + pulumi.ResourceState + + // Underlying ECS Service resource + Service ecs.ServiceOutput `pulumi:"service"` + // Underlying Fargate component resource if created from args + TaskDefinition ecs.TaskDefinitionOutput `pulumi:"taskDefinition"` +} + +// NewFargateService registers a new resource with the given unique name, arguments, and options. +func NewFargateService(ctx *pulumi.Context, + name string, args *FargateServiceArgs, opts ...pulumi.ResourceOption) (*FargateService, error) { + if args == nil { + args = &FargateServiceArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource FargateService + err := ctx.RegisterRemoteComponentResource("awsx:ecs:FargateService", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type fargateServiceArgs struct { + // Information about the CloudWatch alarms. See below. + Alarms *ecs.ServiceAlarms `pulumi:"alarms"` + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. + AssignPublicIp *bool `pulumi:"assignPublicIp"` + // ARN of an ECS cluster. + Cluster *string `pulumi:"cluster"` + // If `true`, this provider will not wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + ContinueBeforeSteadyState *bool `pulumi:"continueBeforeSteadyState"` + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker *ecs.ServiceDeploymentCircuitBreaker `pulumi:"deploymentCircuitBreaker"` + // Configuration block for deployment controller configuration. See below. + DeploymentController *ecs.ServiceDeploymentController `pulumi:"deploymentController"` + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent *int `pulumi:"deploymentMaximumPercent"` + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent *int `pulumi:"deploymentMinimumHealthyPercent"` + // Number of instances of the task definition to place and keep running. Defaults to 1. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount *int `pulumi:"desiredCount"` + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags *bool `pulumi:"enableEcsManagedTags"` + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand *bool `pulumi:"enableExecuteCommand"` + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete *bool `pulumi:"forceDelete"` + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `ordered_placement_strategy` and `placement_constraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment *bool `pulumi:"forceNewDeployment"` + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds *int `pulumi:"healthCheckGracePeriodSeconds"` + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole *string `pulumi:"iamRole"` + // Configuration block for load balancers. See below. + LoadBalancers []ecs.ServiceLoadBalancer `pulumi:"loadBalancers"` + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name *string `pulumi:"name"` + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration *ecs.ServiceNetworkConfiguration `pulumi:"networkConfiguration"` + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `force_new_deployment` is enabled. Maximum number of `placement_constraints` is `10`. See below. + PlacementConstraints []ecs.ServicePlacementConstraint `pulumi:"placementConstraints"` + // Platform version on which to run your service. Only applicable for `launch_type` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion *string `pulumi:"platformVersion"` + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags *string `pulumi:"propagateTags"` + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy *string `pulumi:"schedulingStrategy"` + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration *ecs.ServiceServiceConnectConfiguration `pulumi:"serviceConnectConfiguration"` + // Service discovery registries for the service. The maximum number of `service_registries` blocks is `1`. See below. + ServiceRegistries *ecs.ServiceServiceRegistries `pulumi:"serviceRegistries"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinition *string `pulumi:"taskDefinition"` + // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinitionArgs *FargateServiceTaskDefinition `pulumi:"taskDefinitionArgs"` + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers map[string]string `pulumi:"triggers"` + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration *ecs.ServiceVolumeConfiguration `pulumi:"volumeConfiguration"` +} + +// The set of arguments for constructing a FargateService resource. +type FargateServiceArgs struct { + // Information about the CloudWatch alarms. See below. + Alarms ecs.ServiceAlarmsPtrInput + // Assign a public IP address to the ENI (Fargate launch type only). Valid values are `true` or `false`. Default `false`. + AssignPublicIp pulumi.BoolPtrInput + // ARN of an ECS cluster. + Cluster pulumi.StringPtrInput + // If `true`, this provider will not wait for the service to reach a steady state (like [`aws ecs wait services-stable`](https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html)) before continuing. Default `false`. + ContinueBeforeSteadyState pulumi.BoolPtrInput + // Configuration block for deployment circuit breaker. See below. + DeploymentCircuitBreaker ecs.ServiceDeploymentCircuitBreakerPtrInput + // Configuration block for deployment controller configuration. See below. + DeploymentController ecs.ServiceDeploymentControllerPtrInput + // Upper limit (as a percentage of the service's desiredCount) of the number of running tasks that can be running in a service during a deployment. Not valid when using the `DAEMON` scheduling strategy. + DeploymentMaximumPercent pulumi.IntPtrInput + // Lower limit (as a percentage of the service's desiredCount) of the number of running tasks that must remain running and healthy in a service during a deployment. + DeploymentMinimumHealthyPercent pulumi.IntPtrInput + // Number of instances of the task definition to place and keep running. Defaults to 1. Do not specify if using the `DAEMON` scheduling strategy. + DesiredCount pulumi.IntPtrInput + // Whether to enable Amazon ECS managed tags for the tasks within the service. + EnableEcsManagedTags pulumi.BoolPtrInput + // Whether to enable Amazon ECS Exec for the tasks within the service. + EnableExecuteCommand pulumi.BoolPtrInput + // Enable to delete a service even if it wasn't scaled down to zero tasks. It's only necessary to use this if the service uses the `REPLICA` scheduling strategy. + ForceDelete pulumi.BoolPtrInput + // Enable to force a new task deployment of the service. This can be used to update tasks to use a newer Docker image with same image/tag combination (e.g., `myimage:latest`), roll Fargate tasks onto a newer platform version, or immediately deploy `ordered_placement_strategy` and `placement_constraints` updates. + // When using the forceNewDeployment property you also need to configure the triggers property. + ForceNewDeployment pulumi.BoolPtrInput + // Seconds to ignore failing load balancer health checks on newly instantiated tasks to prevent premature shutdown, up to 2147483647. Only valid for services configured to use load balancers. + HealthCheckGracePeriodSeconds pulumi.IntPtrInput + // ARN of the IAM role that allows Amazon ECS to make calls to your load balancer on your behalf. This parameter is required if you are using a load balancer with your service, but only if your task definition does not use the `awsvpc` network mode. If using `awsvpc` network mode, do not specify this role. If your account has already created the Amazon ECS service-linked role, that role is used by default for your service unless you specify a role here. + IamRole pulumi.StringPtrInput + // Configuration block for load balancers. See below. + LoadBalancers ecs.ServiceLoadBalancerArrayInput + // Name of the service (up to 255 letters, numbers, hyphens, and underscores) + // + // The following arguments are optional: + Name pulumi.StringPtrInput + // Network configuration for the service. This parameter is required for task definitions that use the `awsvpc` network mode to receive their own Elastic Network Interface, and it is not supported for other network modes. See below. + NetworkConfiguration ecs.ServiceNetworkConfigurationPtrInput + // Rules that are taken into consideration during task placement. Updates to this configuration will take effect next task deployment unless `force_new_deployment` is enabled. Maximum number of `placement_constraints` is `10`. See below. + PlacementConstraints ecs.ServicePlacementConstraintArrayInput + // Platform version on which to run your service. Only applicable for `launch_type` set to `FARGATE`. Defaults to `LATEST`. More information about Fargate platform versions can be found in the [AWS ECS User Guide](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html). + PlatformVersion pulumi.StringPtrInput + // Whether to propagate the tags from the task definition or the service to the tasks. The valid values are `SERVICE` and `TASK_DEFINITION`. + PropagateTags pulumi.StringPtrInput + // Scheduling strategy to use for the service. The valid values are `REPLICA` and `DAEMON`. Defaults to `REPLICA`. Note that [*Tasks using the Fargate launch type or the `CODE_DEPLOY` or `EXTERNAL` deployment controller types don't support the `DAEMON` scheduling strategy*](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html). + SchedulingStrategy pulumi.StringPtrInput + // ECS Service Connect configuration for this service to discover and connect to services, and be discovered by, and connected from, other services within a namespace. See below. + ServiceConnectConfiguration ecs.ServiceServiceConnectConfigurationPtrInput + // Service discovery registries for the service. The maximum number of `service_registries` blocks is `1`. See below. + ServiceRegistries ecs.ServiceServiceRegistriesPtrInput + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // Family and revision (`family:revision`) or full ARN of the task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinition pulumi.StringPtrInput + // The args of task definition that you want to run in your service. Either [taskDefinition] or [taskDefinitionArgs] must be provided. + TaskDefinitionArgs *FargateServiceTaskDefinitionArgs + // Map of arbitrary keys and values that, when changed, will trigger an in-place update (redeployment). Useful with `"plantimestamp()"`. When using the triggers property you also need to set the forceNewDeployment property to True. + Triggers pulumi.StringMapInput + // Configuration for a volume specified in the task definition as a volume that is configured at launch time. Currently, the only supported volume type is an Amazon EBS volume. See below. + VolumeConfiguration ecs.ServiceVolumeConfigurationPtrInput +} + +func (FargateServiceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*fargateServiceArgs)(nil)).Elem() +} + +type FargateServiceInput interface { + pulumi.Input + + ToFargateServiceOutput() FargateServiceOutput + ToFargateServiceOutputWithContext(ctx context.Context) FargateServiceOutput +} + +func (*FargateService) ElementType() reflect.Type { + return reflect.TypeOf((**FargateService)(nil)).Elem() +} + +func (i *FargateService) ToFargateServiceOutput() FargateServiceOutput { + return i.ToFargateServiceOutputWithContext(context.Background()) +} + +func (i *FargateService) ToFargateServiceOutputWithContext(ctx context.Context) FargateServiceOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateServiceOutput) +} + +// FargateServiceArrayInput is an input type that accepts FargateServiceArray and FargateServiceArrayOutput values. +// You can construct a concrete instance of `FargateServiceArrayInput` via: +// +// FargateServiceArray{ FargateServiceArgs{...} } +type FargateServiceArrayInput interface { + pulumi.Input + + ToFargateServiceArrayOutput() FargateServiceArrayOutput + ToFargateServiceArrayOutputWithContext(context.Context) FargateServiceArrayOutput +} + +type FargateServiceArray []FargateServiceInput + +func (FargateServiceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*FargateService)(nil)).Elem() +} + +func (i FargateServiceArray) ToFargateServiceArrayOutput() FargateServiceArrayOutput { + return i.ToFargateServiceArrayOutputWithContext(context.Background()) +} + +func (i FargateServiceArray) ToFargateServiceArrayOutputWithContext(ctx context.Context) FargateServiceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateServiceArrayOutput) +} + +// FargateServiceMapInput is an input type that accepts FargateServiceMap and FargateServiceMapOutput values. +// You can construct a concrete instance of `FargateServiceMapInput` via: +// +// FargateServiceMap{ "key": FargateServiceArgs{...} } +type FargateServiceMapInput interface { + pulumi.Input + + ToFargateServiceMapOutput() FargateServiceMapOutput + ToFargateServiceMapOutputWithContext(context.Context) FargateServiceMapOutput +} + +type FargateServiceMap map[string]FargateServiceInput + +func (FargateServiceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*FargateService)(nil)).Elem() +} + +func (i FargateServiceMap) ToFargateServiceMapOutput() FargateServiceMapOutput { + return i.ToFargateServiceMapOutputWithContext(context.Background()) +} + +func (i FargateServiceMap) ToFargateServiceMapOutputWithContext(ctx context.Context) FargateServiceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateServiceMapOutput) +} + +type FargateServiceOutput struct{ *pulumi.OutputState } + +func (FargateServiceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**FargateService)(nil)).Elem() +} + +func (o FargateServiceOutput) ToFargateServiceOutput() FargateServiceOutput { + return o +} + +func (o FargateServiceOutput) ToFargateServiceOutputWithContext(ctx context.Context) FargateServiceOutput { + return o +} + +// Underlying ECS Service resource +func (o FargateServiceOutput) Service() ecs.ServiceOutput { + return o.ApplyT(func(v *FargateService) ecs.ServiceOutput { return v.Service }).(ecs.ServiceOutput) +} + +// Underlying Fargate component resource if created from args +func (o FargateServiceOutput) TaskDefinition() ecs.TaskDefinitionOutput { + return o.ApplyT(func(v *FargateService) ecs.TaskDefinitionOutput { return v.TaskDefinition }).(ecs.TaskDefinitionOutput) +} + +type FargateServiceArrayOutput struct{ *pulumi.OutputState } + +func (FargateServiceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*FargateService)(nil)).Elem() +} + +func (o FargateServiceArrayOutput) ToFargateServiceArrayOutput() FargateServiceArrayOutput { + return o +} + +func (o FargateServiceArrayOutput) ToFargateServiceArrayOutputWithContext(ctx context.Context) FargateServiceArrayOutput { + return o +} + +func (o FargateServiceArrayOutput) Index(i pulumi.IntInput) FargateServiceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *FargateService { + return vs[0].([]*FargateService)[vs[1].(int)] + }).(FargateServiceOutput) +} + +type FargateServiceMapOutput struct{ *pulumi.OutputState } + +func (FargateServiceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*FargateService)(nil)).Elem() +} + +func (o FargateServiceMapOutput) ToFargateServiceMapOutput() FargateServiceMapOutput { + return o +} + +func (o FargateServiceMapOutput) ToFargateServiceMapOutputWithContext(ctx context.Context) FargateServiceMapOutput { + return o +} + +func (o FargateServiceMapOutput) MapIndex(k pulumi.StringInput) FargateServiceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *FargateService { + return vs[0].(map[string]*FargateService)[vs[1].(string)] + }).(FargateServiceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*FargateServiceInput)(nil)).Elem(), &FargateService{}) + pulumi.RegisterInputType(reflect.TypeOf((*FargateServiceArrayInput)(nil)).Elem(), FargateServiceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*FargateServiceMapInput)(nil)).Elem(), FargateServiceMap{}) + pulumi.RegisterOutputType(FargateServiceOutput{}) + pulumi.RegisterOutputType(FargateServiceArrayOutput{}) + pulumi.RegisterOutputType(FargateServiceMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateTaskDefinition.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateTaskDefinition.go new file mode 100644 index 000000000..9e67de926 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/fargateTaskDefinition.go @@ -0,0 +1,312 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type FargateTaskDefinition struct { + pulumi.ResourceState + + // Auto-created IAM task execution role that the Amazon ECS container agent and the Docker daemon can assume. + ExecutionRole iam.RoleOutput `pulumi:"executionRole"` + // Computed load balancers from target groups specified of container port mappings. + LoadBalancers ecs.ServiceLoadBalancerArrayOutput `pulumi:"loadBalancers"` + // Auto-created Log Group resource for use by containers. + LogGroup cloudwatch.LogGroupOutput `pulumi:"logGroup"` + // Underlying ECS Task Definition resource + TaskDefinition ecs.TaskDefinitionOutput `pulumi:"taskDefinition"` + // Auto-created IAM role that allows your Amazon ECS container task to make calls to other AWS services. + TaskRole iam.RoleOutput `pulumi:"taskRole"` +} + +// NewFargateTaskDefinition registers a new resource with the given unique name, arguments, and options. +func NewFargateTaskDefinition(ctx *pulumi.Context, + name string, args *FargateTaskDefinitionArgs, opts ...pulumi.ResourceOption) (*FargateTaskDefinition, error) { + if args == nil { + args = &FargateTaskDefinitionArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource FargateTaskDefinition + err := ctx.RegisterRemoteComponentResource("awsx:ecs:FargateTaskDefinition", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type fargateTaskDefinitionArgs struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinition `pulumi:"container"` + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinition `pulumi:"containers"` + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu *string `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage *ecs.TaskDefinitionEphemeralStorage `pulumi:"ephemeralStorage"` + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicy `pulumi:"executionRole"` + // An optional unique name for your task definition. If not specified, then a default will be created. + Family *string `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators []ecs.TaskDefinitionInferenceAccelerator `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode *string `pulumi:"ipcMode"` + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroup `pulumi:"logGroup"` + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory *string `pulumi:"memory"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode *string `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints []ecs.TaskDefinitionPlacementConstraint `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration *ecs.TaskDefinitionProxyConfiguration `pulumi:"proxyConfiguration"` + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform *ecs.TaskDefinitionRuntimePlatform `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy *bool `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest *bool `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` +} + +// The set of arguments for constructing a FargateTaskDefinition resource. +type FargateTaskDefinitionArgs struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinitionArgs + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinitionArgs + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu pulumi.StringPtrInput + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage ecs.TaskDefinitionEphemeralStoragePtrInput + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicyArgs + // An optional unique name for your task definition. If not specified, then a default will be created. + Family pulumi.StringPtrInput + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators ecs.TaskDefinitionInferenceAcceleratorArrayInput + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode pulumi.StringPtrInput + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroupArgs + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory pulumi.StringPtrInput + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode pulumi.StringPtrInput + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints ecs.TaskDefinitionPlacementConstraintArrayInput + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration ecs.TaskDefinitionProxyConfigurationPtrInput + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform ecs.TaskDefinitionRuntimePlatformPtrInput + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy pulumi.BoolPtrInput + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicyArgs + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest pulumi.BoolPtrInput + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes ecs.TaskDefinitionVolumeArrayInput +} + +func (FargateTaskDefinitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*fargateTaskDefinitionArgs)(nil)).Elem() +} + +type FargateTaskDefinitionInput interface { + pulumi.Input + + ToFargateTaskDefinitionOutput() FargateTaskDefinitionOutput + ToFargateTaskDefinitionOutputWithContext(ctx context.Context) FargateTaskDefinitionOutput +} + +func (*FargateTaskDefinition) ElementType() reflect.Type { + return reflect.TypeOf((**FargateTaskDefinition)(nil)).Elem() +} + +func (i *FargateTaskDefinition) ToFargateTaskDefinitionOutput() FargateTaskDefinitionOutput { + return i.ToFargateTaskDefinitionOutputWithContext(context.Background()) +} + +func (i *FargateTaskDefinition) ToFargateTaskDefinitionOutputWithContext(ctx context.Context) FargateTaskDefinitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateTaskDefinitionOutput) +} + +// FargateTaskDefinitionArrayInput is an input type that accepts FargateTaskDefinitionArray and FargateTaskDefinitionArrayOutput values. +// You can construct a concrete instance of `FargateTaskDefinitionArrayInput` via: +// +// FargateTaskDefinitionArray{ FargateTaskDefinitionArgs{...} } +type FargateTaskDefinitionArrayInput interface { + pulumi.Input + + ToFargateTaskDefinitionArrayOutput() FargateTaskDefinitionArrayOutput + ToFargateTaskDefinitionArrayOutputWithContext(context.Context) FargateTaskDefinitionArrayOutput +} + +type FargateTaskDefinitionArray []FargateTaskDefinitionInput + +func (FargateTaskDefinitionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*FargateTaskDefinition)(nil)).Elem() +} + +func (i FargateTaskDefinitionArray) ToFargateTaskDefinitionArrayOutput() FargateTaskDefinitionArrayOutput { + return i.ToFargateTaskDefinitionArrayOutputWithContext(context.Background()) +} + +func (i FargateTaskDefinitionArray) ToFargateTaskDefinitionArrayOutputWithContext(ctx context.Context) FargateTaskDefinitionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateTaskDefinitionArrayOutput) +} + +// FargateTaskDefinitionMapInput is an input type that accepts FargateTaskDefinitionMap and FargateTaskDefinitionMapOutput values. +// You can construct a concrete instance of `FargateTaskDefinitionMapInput` via: +// +// FargateTaskDefinitionMap{ "key": FargateTaskDefinitionArgs{...} } +type FargateTaskDefinitionMapInput interface { + pulumi.Input + + ToFargateTaskDefinitionMapOutput() FargateTaskDefinitionMapOutput + ToFargateTaskDefinitionMapOutputWithContext(context.Context) FargateTaskDefinitionMapOutput +} + +type FargateTaskDefinitionMap map[string]FargateTaskDefinitionInput + +func (FargateTaskDefinitionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*FargateTaskDefinition)(nil)).Elem() +} + +func (i FargateTaskDefinitionMap) ToFargateTaskDefinitionMapOutput() FargateTaskDefinitionMapOutput { + return i.ToFargateTaskDefinitionMapOutputWithContext(context.Background()) +} + +func (i FargateTaskDefinitionMap) ToFargateTaskDefinitionMapOutputWithContext(ctx context.Context) FargateTaskDefinitionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateTaskDefinitionMapOutput) +} + +type FargateTaskDefinitionOutput struct{ *pulumi.OutputState } + +func (FargateTaskDefinitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((**FargateTaskDefinition)(nil)).Elem() +} + +func (o FargateTaskDefinitionOutput) ToFargateTaskDefinitionOutput() FargateTaskDefinitionOutput { + return o +} + +func (o FargateTaskDefinitionOutput) ToFargateTaskDefinitionOutputWithContext(ctx context.Context) FargateTaskDefinitionOutput { + return o +} + +// Auto-created IAM task execution role that the Amazon ECS container agent and the Docker daemon can assume. +func (o FargateTaskDefinitionOutput) ExecutionRole() iam.RoleOutput { + return o.ApplyT(func(v *FargateTaskDefinition) iam.RoleOutput { return v.ExecutionRole }).(iam.RoleOutput) +} + +// Computed load balancers from target groups specified of container port mappings. +func (o FargateTaskDefinitionOutput) LoadBalancers() ecs.ServiceLoadBalancerArrayOutput { + return o.ApplyT(func(v *FargateTaskDefinition) ecs.ServiceLoadBalancerArrayOutput { return v.LoadBalancers }).(ecs.ServiceLoadBalancerArrayOutput) +} + +// Auto-created Log Group resource for use by containers. +func (o FargateTaskDefinitionOutput) LogGroup() cloudwatch.LogGroupOutput { + return o.ApplyT(func(v *FargateTaskDefinition) cloudwatch.LogGroupOutput { return v.LogGroup }).(cloudwatch.LogGroupOutput) +} + +// Underlying ECS Task Definition resource +func (o FargateTaskDefinitionOutput) TaskDefinition() ecs.TaskDefinitionOutput { + return o.ApplyT(func(v *FargateTaskDefinition) ecs.TaskDefinitionOutput { return v.TaskDefinition }).(ecs.TaskDefinitionOutput) +} + +// Auto-created IAM role that allows your Amazon ECS container task to make calls to other AWS services. +func (o FargateTaskDefinitionOutput) TaskRole() iam.RoleOutput { + return o.ApplyT(func(v *FargateTaskDefinition) iam.RoleOutput { return v.TaskRole }).(iam.RoleOutput) +} + +type FargateTaskDefinitionArrayOutput struct{ *pulumi.OutputState } + +func (FargateTaskDefinitionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*FargateTaskDefinition)(nil)).Elem() +} + +func (o FargateTaskDefinitionArrayOutput) ToFargateTaskDefinitionArrayOutput() FargateTaskDefinitionArrayOutput { + return o +} + +func (o FargateTaskDefinitionArrayOutput) ToFargateTaskDefinitionArrayOutputWithContext(ctx context.Context) FargateTaskDefinitionArrayOutput { + return o +} + +func (o FargateTaskDefinitionArrayOutput) Index(i pulumi.IntInput) FargateTaskDefinitionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *FargateTaskDefinition { + return vs[0].([]*FargateTaskDefinition)[vs[1].(int)] + }).(FargateTaskDefinitionOutput) +} + +type FargateTaskDefinitionMapOutput struct{ *pulumi.OutputState } + +func (FargateTaskDefinitionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*FargateTaskDefinition)(nil)).Elem() +} + +func (o FargateTaskDefinitionMapOutput) ToFargateTaskDefinitionMapOutput() FargateTaskDefinitionMapOutput { + return o +} + +func (o FargateTaskDefinitionMapOutput) ToFargateTaskDefinitionMapOutputWithContext(ctx context.Context) FargateTaskDefinitionMapOutput { + return o +} + +func (o FargateTaskDefinitionMapOutput) MapIndex(k pulumi.StringInput) FargateTaskDefinitionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *FargateTaskDefinition { + return vs[0].(map[string]*FargateTaskDefinition)[vs[1].(string)] + }).(FargateTaskDefinitionOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*FargateTaskDefinitionInput)(nil)).Elem(), &FargateTaskDefinition{}) + pulumi.RegisterInputType(reflect.TypeOf((*FargateTaskDefinitionArrayInput)(nil)).Elem(), FargateTaskDefinitionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*FargateTaskDefinitionMapInput)(nil)).Elem(), FargateTaskDefinitionMap{}) + pulumi.RegisterOutputType(FargateTaskDefinitionOutput{}) + pulumi.RegisterOutputType(FargateTaskDefinitionArrayOutput{}) + pulumi.RegisterOutputType(FargateTaskDefinitionMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/init.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/init.go new file mode 100644 index 000000000..d0cf46fa6 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/init.go @@ -0,0 +1,51 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecs + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal" + _ "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "awsx:ecs:EC2Service": + r = &EC2Service{} + case "awsx:ecs:EC2TaskDefinition": + r = &EC2TaskDefinition{} + case "awsx:ecs:FargateService": + r = &FargateService{} + case "awsx:ecs:FargateTaskDefinition": + r = &FargateTaskDefinition{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "awsx", + "ecs", + &module{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiEnums.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiEnums.go new file mode 100644 index 000000000..edca5ecfd --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiEnums.go @@ -0,0 +1,185 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type TaskDefinitionPortMappingAppProtocol string + +const ( + TaskDefinitionPortMappingAppProtocolHttp = TaskDefinitionPortMappingAppProtocol("http") + TaskDefinitionPortMappingAppProtocolHttp2 = TaskDefinitionPortMappingAppProtocol("http2") + TaskDefinitionPortMappingAppProtocolGrpc = TaskDefinitionPortMappingAppProtocol("grpc") +) + +func (TaskDefinitionPortMappingAppProtocol) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionPortMappingAppProtocol)(nil)).Elem() +} + +func (e TaskDefinitionPortMappingAppProtocol) ToTaskDefinitionPortMappingAppProtocolOutput() TaskDefinitionPortMappingAppProtocolOutput { + return pulumi.ToOutput(e).(TaskDefinitionPortMappingAppProtocolOutput) +} + +func (e TaskDefinitionPortMappingAppProtocol) ToTaskDefinitionPortMappingAppProtocolOutputWithContext(ctx context.Context) TaskDefinitionPortMappingAppProtocolOutput { + return pulumi.ToOutputWithContext(ctx, e).(TaskDefinitionPortMappingAppProtocolOutput) +} + +func (e TaskDefinitionPortMappingAppProtocol) ToTaskDefinitionPortMappingAppProtocolPtrOutput() TaskDefinitionPortMappingAppProtocolPtrOutput { + return e.ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(context.Background()) +} + +func (e TaskDefinitionPortMappingAppProtocol) ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(ctx context.Context) TaskDefinitionPortMappingAppProtocolPtrOutput { + return TaskDefinitionPortMappingAppProtocol(e).ToTaskDefinitionPortMappingAppProtocolOutputWithContext(ctx).ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(ctx) +} + +func (e TaskDefinitionPortMappingAppProtocol) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e TaskDefinitionPortMappingAppProtocol) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e TaskDefinitionPortMappingAppProtocol) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e TaskDefinitionPortMappingAppProtocol) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type TaskDefinitionPortMappingAppProtocolOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionPortMappingAppProtocolOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionPortMappingAppProtocol)(nil)).Elem() +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToTaskDefinitionPortMappingAppProtocolOutput() TaskDefinitionPortMappingAppProtocolOutput { + return o +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToTaskDefinitionPortMappingAppProtocolOutputWithContext(ctx context.Context) TaskDefinitionPortMappingAppProtocolOutput { + return o +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToTaskDefinitionPortMappingAppProtocolPtrOutput() TaskDefinitionPortMappingAppProtocolPtrOutput { + return o.ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(ctx context.Context) TaskDefinitionPortMappingAppProtocolPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionPortMappingAppProtocol) *TaskDefinitionPortMappingAppProtocol { + return &v + }).(TaskDefinitionPortMappingAppProtocolPtrOutput) +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e TaskDefinitionPortMappingAppProtocol) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionPortMappingAppProtocolOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e TaskDefinitionPortMappingAppProtocol) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionPortMappingAppProtocolPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionPortMappingAppProtocolPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionPortMappingAppProtocol)(nil)).Elem() +} + +func (o TaskDefinitionPortMappingAppProtocolPtrOutput) ToTaskDefinitionPortMappingAppProtocolPtrOutput() TaskDefinitionPortMappingAppProtocolPtrOutput { + return o +} + +func (o TaskDefinitionPortMappingAppProtocolPtrOutput) ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(ctx context.Context) TaskDefinitionPortMappingAppProtocolPtrOutput { + return o +} + +func (o TaskDefinitionPortMappingAppProtocolPtrOutput) Elem() TaskDefinitionPortMappingAppProtocolOutput { + return o.ApplyT(func(v *TaskDefinitionPortMappingAppProtocol) TaskDefinitionPortMappingAppProtocol { + if v != nil { + return *v + } + var ret TaskDefinitionPortMappingAppProtocol + return ret + }).(TaskDefinitionPortMappingAppProtocolOutput) +} + +func (o TaskDefinitionPortMappingAppProtocolPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionPortMappingAppProtocolPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *TaskDefinitionPortMappingAppProtocol) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// TaskDefinitionPortMappingAppProtocolInput is an input type that accepts values of the TaskDefinitionPortMappingAppProtocol enum +// A concrete instance of `TaskDefinitionPortMappingAppProtocolInput` can be one of the following: +// +// TaskDefinitionPortMappingAppProtocolHttp +// TaskDefinitionPortMappingAppProtocolHttp2 +// TaskDefinitionPortMappingAppProtocolGrpc +type TaskDefinitionPortMappingAppProtocolInput interface { + pulumi.Input + + ToTaskDefinitionPortMappingAppProtocolOutput() TaskDefinitionPortMappingAppProtocolOutput + ToTaskDefinitionPortMappingAppProtocolOutputWithContext(context.Context) TaskDefinitionPortMappingAppProtocolOutput +} + +var taskDefinitionPortMappingAppProtocolPtrType = reflect.TypeOf((**TaskDefinitionPortMappingAppProtocol)(nil)).Elem() + +type TaskDefinitionPortMappingAppProtocolPtrInput interface { + pulumi.Input + + ToTaskDefinitionPortMappingAppProtocolPtrOutput() TaskDefinitionPortMappingAppProtocolPtrOutput + ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(context.Context) TaskDefinitionPortMappingAppProtocolPtrOutput +} + +type taskDefinitionPortMappingAppProtocolPtr string + +func TaskDefinitionPortMappingAppProtocolPtr(v string) TaskDefinitionPortMappingAppProtocolPtrInput { + return (*taskDefinitionPortMappingAppProtocolPtr)(&v) +} + +func (*taskDefinitionPortMappingAppProtocolPtr) ElementType() reflect.Type { + return taskDefinitionPortMappingAppProtocolPtrType +} + +func (in *taskDefinitionPortMappingAppProtocolPtr) ToTaskDefinitionPortMappingAppProtocolPtrOutput() TaskDefinitionPortMappingAppProtocolPtrOutput { + return pulumi.ToOutput(in).(TaskDefinitionPortMappingAppProtocolPtrOutput) +} + +func (in *taskDefinitionPortMappingAppProtocolPtr) ToTaskDefinitionPortMappingAppProtocolPtrOutputWithContext(ctx context.Context) TaskDefinitionPortMappingAppProtocolPtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(TaskDefinitionPortMappingAppProtocolPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionPortMappingAppProtocolInput)(nil)).Elem(), TaskDefinitionPortMappingAppProtocol("http")) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionPortMappingAppProtocolPtrInput)(nil)).Elem(), TaskDefinitionPortMappingAppProtocol("http")) + pulumi.RegisterOutputType(TaskDefinitionPortMappingAppProtocolOutput{}) + pulumi.RegisterOutputType(TaskDefinitionPortMappingAppProtocolPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiTypes.go new file mode 100644 index 000000000..c2357ff3c --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs/pulumiTypes.go @@ -0,0 +1,4353 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package ecs + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs" + "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx" + "github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +var _ = internal.GetEnvOrDefault + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type EC2ServiceTaskDefinition struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinition `pulumi:"container"` + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinition `pulumi:"containers"` + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu *string `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage *ecs.TaskDefinitionEphemeralStorage `pulumi:"ephemeralStorage"` + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicy `pulumi:"executionRole"` + // An optional unique name for your task definition. If not specified, then a default will be created. + Family *string `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators []ecs.TaskDefinitionInferenceAccelerator `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode *string `pulumi:"ipcMode"` + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroup `pulumi:"logGroup"` + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory *string `pulumi:"memory"` + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode *string `pulumi:"networkMode"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode *string `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints []ecs.TaskDefinitionPlacementConstraint `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration *ecs.TaskDefinitionProxyConfiguration `pulumi:"proxyConfiguration"` + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform *ecs.TaskDefinitionRuntimePlatform `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy *bool `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest *bool `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` +} + +// EC2ServiceTaskDefinitionInput is an input type that accepts EC2ServiceTaskDefinitionArgs and EC2ServiceTaskDefinitionOutput values. +// You can construct a concrete instance of `EC2ServiceTaskDefinitionInput` via: +// +// EC2ServiceTaskDefinitionArgs{...} +type EC2ServiceTaskDefinitionInput interface { + pulumi.Input + + ToEC2ServiceTaskDefinitionOutput() EC2ServiceTaskDefinitionOutput + ToEC2ServiceTaskDefinitionOutputWithContext(context.Context) EC2ServiceTaskDefinitionOutput +} + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type EC2ServiceTaskDefinitionArgs struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinitionArgs `pulumi:"container"` + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinitionArgs `pulumi:"containers"` + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu pulumi.StringPtrInput `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage ecs.TaskDefinitionEphemeralStoragePtrInput `pulumi:"ephemeralStorage"` + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicyArgs `pulumi:"executionRole"` + // An optional unique name for your task definition. If not specified, then a default will be created. + Family pulumi.StringPtrInput `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators ecs.TaskDefinitionInferenceAcceleratorArrayInput `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode pulumi.StringPtrInput `pulumi:"ipcMode"` + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroupArgs `pulumi:"logGroup"` + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory pulumi.StringPtrInput `pulumi:"memory"` + // Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. + NetworkMode pulumi.StringPtrInput `pulumi:"networkMode"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode pulumi.StringPtrInput `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints ecs.TaskDefinitionPlacementConstraintArrayInput `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration ecs.TaskDefinitionProxyConfigurationPtrInput `pulumi:"proxyConfiguration"` + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform ecs.TaskDefinitionRuntimePlatformPtrInput `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy pulumi.BoolPtrInput `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicyArgs `pulumi:"taskRole"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest pulumi.BoolPtrInput `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes ecs.TaskDefinitionVolumeArrayInput `pulumi:"volumes"` +} + +func (EC2ServiceTaskDefinitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*EC2ServiceTaskDefinition)(nil)).Elem() +} + +func (i EC2ServiceTaskDefinitionArgs) ToEC2ServiceTaskDefinitionOutput() EC2ServiceTaskDefinitionOutput { + return i.ToEC2ServiceTaskDefinitionOutputWithContext(context.Background()) +} + +func (i EC2ServiceTaskDefinitionArgs) ToEC2ServiceTaskDefinitionOutputWithContext(ctx context.Context) EC2ServiceTaskDefinitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2ServiceTaskDefinitionOutput) +} + +func (i EC2ServiceTaskDefinitionArgs) ToEC2ServiceTaskDefinitionPtrOutput() EC2ServiceTaskDefinitionPtrOutput { + return i.ToEC2ServiceTaskDefinitionPtrOutputWithContext(context.Background()) +} + +func (i EC2ServiceTaskDefinitionArgs) ToEC2ServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) EC2ServiceTaskDefinitionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2ServiceTaskDefinitionOutput).ToEC2ServiceTaskDefinitionPtrOutputWithContext(ctx) +} + +// EC2ServiceTaskDefinitionPtrInput is an input type that accepts EC2ServiceTaskDefinitionArgs, EC2ServiceTaskDefinitionPtr and EC2ServiceTaskDefinitionPtrOutput values. +// You can construct a concrete instance of `EC2ServiceTaskDefinitionPtrInput` via: +// +// EC2ServiceTaskDefinitionArgs{...} +// +// or: +// +// nil +type EC2ServiceTaskDefinitionPtrInput interface { + pulumi.Input + + ToEC2ServiceTaskDefinitionPtrOutput() EC2ServiceTaskDefinitionPtrOutput + ToEC2ServiceTaskDefinitionPtrOutputWithContext(context.Context) EC2ServiceTaskDefinitionPtrOutput +} + +type ec2serviceTaskDefinitionPtrType EC2ServiceTaskDefinitionArgs + +func EC2ServiceTaskDefinitionPtr(v *EC2ServiceTaskDefinitionArgs) EC2ServiceTaskDefinitionPtrInput { + return (*ec2serviceTaskDefinitionPtrType)(v) +} + +func (*ec2serviceTaskDefinitionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**EC2ServiceTaskDefinition)(nil)).Elem() +} + +func (i *ec2serviceTaskDefinitionPtrType) ToEC2ServiceTaskDefinitionPtrOutput() EC2ServiceTaskDefinitionPtrOutput { + return i.ToEC2ServiceTaskDefinitionPtrOutputWithContext(context.Background()) +} + +func (i *ec2serviceTaskDefinitionPtrType) ToEC2ServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) EC2ServiceTaskDefinitionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(EC2ServiceTaskDefinitionPtrOutput) +} + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type EC2ServiceTaskDefinitionOutput struct{ *pulumi.OutputState } + +func (EC2ServiceTaskDefinitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*EC2ServiceTaskDefinition)(nil)).Elem() +} + +func (o EC2ServiceTaskDefinitionOutput) ToEC2ServiceTaskDefinitionOutput() EC2ServiceTaskDefinitionOutput { + return o +} + +func (o EC2ServiceTaskDefinitionOutput) ToEC2ServiceTaskDefinitionOutputWithContext(ctx context.Context) EC2ServiceTaskDefinitionOutput { + return o +} + +func (o EC2ServiceTaskDefinitionOutput) ToEC2ServiceTaskDefinitionPtrOutput() EC2ServiceTaskDefinitionPtrOutput { + return o.ToEC2ServiceTaskDefinitionPtrOutputWithContext(context.Background()) +} + +func (o EC2ServiceTaskDefinitionOutput) ToEC2ServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) EC2ServiceTaskDefinitionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v EC2ServiceTaskDefinition) *EC2ServiceTaskDefinition { + return &v + }).(EC2ServiceTaskDefinitionPtrOutput) +} + +// Single container to make a TaskDefinition from. Useful for simple cases where there aren't +// multiple containers, especially when creating a TaskDefinition to call [run] on. +// +// Either [container] or [containers] must be provided. +func (o EC2ServiceTaskDefinitionOutput) Container() TaskDefinitionContainerDefinitionPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *TaskDefinitionContainerDefinition { return v.Container }).(TaskDefinitionContainerDefinitionPtrOutput) +} + +// All the containers to make a TaskDefinition from. Useful when creating a Service that will +// contain many containers within. +// +// Either [container] or [containers] must be provided. +func (o EC2ServiceTaskDefinitionOutput) Containers() TaskDefinitionContainerDefinitionMapOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) map[string]TaskDefinitionContainerDefinition { return v.Containers }).(TaskDefinitionContainerDefinitionMapOutput) +} + +// The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] +func (o EC2ServiceTaskDefinitionOutput) Cpu() pulumi.StringPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *string { return v.Cpu }).(pulumi.StringPtrOutput) +} + +// The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. +func (o EC2ServiceTaskDefinitionOutput) EphemeralStorage() ecs.TaskDefinitionEphemeralStoragePtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *ecs.TaskDefinitionEphemeralStorage { return v.EphemeralStorage }).(ecs.TaskDefinitionEphemeralStoragePtrOutput) +} + +// The execution role that the Amazon ECS container agent and the Docker daemon can assume. +// Will be created automatically if not defined. +func (o EC2ServiceTaskDefinitionOutput) ExecutionRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { return v.ExecutionRole }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// An optional unique name for your task definition. If not specified, then a default will be created. +func (o EC2ServiceTaskDefinitionOutput) Family() pulumi.StringPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *string { return v.Family }).(pulumi.StringPtrOutput) +} + +// Configuration block(s) with Inference Accelerators settings. Detailed below. +func (o EC2ServiceTaskDefinitionOutput) InferenceAccelerators() ecs.TaskDefinitionInferenceAcceleratorArrayOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) []ecs.TaskDefinitionInferenceAccelerator { + return v.InferenceAccelerators + }).(ecs.TaskDefinitionInferenceAcceleratorArrayOutput) +} + +// IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. +func (o EC2ServiceTaskDefinitionOutput) IpcMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *string { return v.IpcMode }).(pulumi.StringPtrOutput) +} + +// A set of volume blocks that containers in your task may use. +func (o EC2ServiceTaskDefinitionOutput) LogGroup() awsx.DefaultLogGroupPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *awsx.DefaultLogGroup { return v.LogGroup }).(awsx.DefaultLogGroupPtrOutput) +} + +// The amount (in MiB) of memory used by the task. If not provided, a default will be computed +// based on the cumulative needs specified by [containerDefinitions] +func (o EC2ServiceTaskDefinitionOutput) Memory() pulumi.StringPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *string { return v.Memory }).(pulumi.StringPtrOutput) +} + +// Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. +func (o EC2ServiceTaskDefinitionOutput) NetworkMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *string { return v.NetworkMode }).(pulumi.StringPtrOutput) +} + +// Process namespace to use for the containers in the task. The valid values are `host` and `task`. +func (o EC2ServiceTaskDefinitionOutput) PidMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *string { return v.PidMode }).(pulumi.StringPtrOutput) +} + +// Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. +func (o EC2ServiceTaskDefinitionOutput) PlacementConstraints() ecs.TaskDefinitionPlacementConstraintArrayOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) []ecs.TaskDefinitionPlacementConstraint { + return v.PlacementConstraints + }).(ecs.TaskDefinitionPlacementConstraintArrayOutput) +} + +// Configuration block for the App Mesh proxy. Detailed below. +func (o EC2ServiceTaskDefinitionOutput) ProxyConfiguration() ecs.TaskDefinitionProxyConfigurationPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *ecs.TaskDefinitionProxyConfiguration { return v.ProxyConfiguration }).(ecs.TaskDefinitionProxyConfigurationPtrOutput) +} + +// Configuration block for runtime_platform that containers in your task may use. +func (o EC2ServiceTaskDefinitionOutput) RuntimePlatform() ecs.TaskDefinitionRuntimePlatformPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *ecs.TaskDefinitionRuntimePlatform { return v.RuntimePlatform }).(ecs.TaskDefinitionRuntimePlatformPtrOutput) +} + +// Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. +func (o EC2ServiceTaskDefinitionOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *bool { return v.SkipDestroy }).(pulumi.BoolPtrOutput) +} + +// Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o EC2ServiceTaskDefinitionOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// IAM role that allows your Amazon ECS container task to make calls to other AWS services. +// Will be created automatically if not defined. +func (o EC2ServiceTaskDefinitionOutput) TaskRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { return v.TaskRole }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. +func (o EC2ServiceTaskDefinitionOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) *bool { return v.TrackLatest }).(pulumi.BoolPtrOutput) +} + +// Configuration block for volumes that containers in your task may use. Detailed below. +func (o EC2ServiceTaskDefinitionOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { + return o.ApplyT(func(v EC2ServiceTaskDefinition) []ecs.TaskDefinitionVolume { return v.Volumes }).(ecs.TaskDefinitionVolumeArrayOutput) +} + +type EC2ServiceTaskDefinitionPtrOutput struct{ *pulumi.OutputState } + +func (EC2ServiceTaskDefinitionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**EC2ServiceTaskDefinition)(nil)).Elem() +} + +func (o EC2ServiceTaskDefinitionPtrOutput) ToEC2ServiceTaskDefinitionPtrOutput() EC2ServiceTaskDefinitionPtrOutput { + return o +} + +func (o EC2ServiceTaskDefinitionPtrOutput) ToEC2ServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) EC2ServiceTaskDefinitionPtrOutput { + return o +} + +func (o EC2ServiceTaskDefinitionPtrOutput) Elem() EC2ServiceTaskDefinitionOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) EC2ServiceTaskDefinition { + if v != nil { + return *v + } + var ret EC2ServiceTaskDefinition + return ret + }).(EC2ServiceTaskDefinitionOutput) +} + +// Single container to make a TaskDefinition from. Useful for simple cases where there aren't +// multiple containers, especially when creating a TaskDefinition to call [run] on. +// +// Either [container] or [containers] must be provided. +func (o EC2ServiceTaskDefinitionPtrOutput) Container() TaskDefinitionContainerDefinitionPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *TaskDefinitionContainerDefinition { + if v == nil { + return nil + } + return v.Container + }).(TaskDefinitionContainerDefinitionPtrOutput) +} + +// All the containers to make a TaskDefinition from. Useful when creating a Service that will +// contain many containers within. +// +// Either [container] or [containers] must be provided. +func (o EC2ServiceTaskDefinitionPtrOutput) Containers() TaskDefinitionContainerDefinitionMapOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) map[string]TaskDefinitionContainerDefinition { + if v == nil { + return nil + } + return v.Containers + }).(TaskDefinitionContainerDefinitionMapOutput) +} + +// The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] +func (o EC2ServiceTaskDefinitionPtrOutput) Cpu() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.Cpu + }).(pulumi.StringPtrOutput) +} + +// The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. +func (o EC2ServiceTaskDefinitionPtrOutput) EphemeralStorage() ecs.TaskDefinitionEphemeralStoragePtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *ecs.TaskDefinitionEphemeralStorage { + if v == nil { + return nil + } + return v.EphemeralStorage + }).(ecs.TaskDefinitionEphemeralStoragePtrOutput) +} + +// The execution role that the Amazon ECS container agent and the Docker daemon can assume. +// Will be created automatically if not defined. +func (o EC2ServiceTaskDefinitionPtrOutput) ExecutionRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { + if v == nil { + return nil + } + return v.ExecutionRole + }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// An optional unique name for your task definition. If not specified, then a default will be created. +func (o EC2ServiceTaskDefinitionPtrOutput) Family() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.Family + }).(pulumi.StringPtrOutput) +} + +// Configuration block(s) with Inference Accelerators settings. Detailed below. +func (o EC2ServiceTaskDefinitionPtrOutput) InferenceAccelerators() ecs.TaskDefinitionInferenceAcceleratorArrayOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) []ecs.TaskDefinitionInferenceAccelerator { + if v == nil { + return nil + } + return v.InferenceAccelerators + }).(ecs.TaskDefinitionInferenceAcceleratorArrayOutput) +} + +// IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. +func (o EC2ServiceTaskDefinitionPtrOutput) IpcMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.IpcMode + }).(pulumi.StringPtrOutput) +} + +// A set of volume blocks that containers in your task may use. +func (o EC2ServiceTaskDefinitionPtrOutput) LogGroup() awsx.DefaultLogGroupPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *awsx.DefaultLogGroup { + if v == nil { + return nil + } + return v.LogGroup + }).(awsx.DefaultLogGroupPtrOutput) +} + +// The amount (in MiB) of memory used by the task. If not provided, a default will be computed +// based on the cumulative needs specified by [containerDefinitions] +func (o EC2ServiceTaskDefinitionPtrOutput) Memory() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.Memory + }).(pulumi.StringPtrOutput) +} + +// Docker networking mode to use for the containers in the task. Valid values are `none`, `bridge`, `awsvpc`, and `host`. +func (o EC2ServiceTaskDefinitionPtrOutput) NetworkMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.NetworkMode + }).(pulumi.StringPtrOutput) +} + +// Process namespace to use for the containers in the task. The valid values are `host` and `task`. +func (o EC2ServiceTaskDefinitionPtrOutput) PidMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.PidMode + }).(pulumi.StringPtrOutput) +} + +// Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. +func (o EC2ServiceTaskDefinitionPtrOutput) PlacementConstraints() ecs.TaskDefinitionPlacementConstraintArrayOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) []ecs.TaskDefinitionPlacementConstraint { + if v == nil { + return nil + } + return v.PlacementConstraints + }).(ecs.TaskDefinitionPlacementConstraintArrayOutput) +} + +// Configuration block for the App Mesh proxy. Detailed below. +func (o EC2ServiceTaskDefinitionPtrOutput) ProxyConfiguration() ecs.TaskDefinitionProxyConfigurationPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *ecs.TaskDefinitionProxyConfiguration { + if v == nil { + return nil + } + return v.ProxyConfiguration + }).(ecs.TaskDefinitionProxyConfigurationPtrOutput) +} + +// Configuration block for runtime_platform that containers in your task may use. +func (o EC2ServiceTaskDefinitionPtrOutput) RuntimePlatform() ecs.TaskDefinitionRuntimePlatformPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *ecs.TaskDefinitionRuntimePlatform { + if v == nil { + return nil + } + return v.RuntimePlatform + }).(ecs.TaskDefinitionRuntimePlatformPtrOutput) +} + +// Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. +func (o EC2ServiceTaskDefinitionPtrOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *bool { + if v == nil { + return nil + } + return v.SkipDestroy + }).(pulumi.BoolPtrOutput) +} + +// Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o EC2ServiceTaskDefinitionPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// IAM role that allows your Amazon ECS container task to make calls to other AWS services. +// Will be created automatically if not defined. +func (o EC2ServiceTaskDefinitionPtrOutput) TaskRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { + if v == nil { + return nil + } + return v.TaskRole + }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. +func (o EC2ServiceTaskDefinitionPtrOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) *bool { + if v == nil { + return nil + } + return v.TrackLatest + }).(pulumi.BoolPtrOutput) +} + +// Configuration block for volumes that containers in your task may use. Detailed below. +func (o EC2ServiceTaskDefinitionPtrOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { + return o.ApplyT(func(v *EC2ServiceTaskDefinition) []ecs.TaskDefinitionVolume { + if v == nil { + return nil + } + return v.Volumes + }).(ecs.TaskDefinitionVolumeArrayOutput) +} + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type FargateServiceTaskDefinition struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinition `pulumi:"container"` + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinition `pulumi:"containers"` + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu *string `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage *ecs.TaskDefinitionEphemeralStorage `pulumi:"ephemeralStorage"` + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicy `pulumi:"executionRole"` + // An optional unique name for your task definition. If not specified, then a default will be created. + Family *string `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators []ecs.TaskDefinitionInferenceAccelerator `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode *string `pulumi:"ipcMode"` + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroup `pulumi:"logGroup"` + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory *string `pulumi:"memory"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode *string `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints []ecs.TaskDefinitionPlacementConstraint `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration *ecs.TaskDefinitionProxyConfiguration `pulumi:"proxyConfiguration"` + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform *ecs.TaskDefinitionRuntimePlatform `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy *bool `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags map[string]string `pulumi:"tags"` + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicy `pulumi:"taskRole"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest *bool `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes []ecs.TaskDefinitionVolume `pulumi:"volumes"` +} + +// FargateServiceTaskDefinitionInput is an input type that accepts FargateServiceTaskDefinitionArgs and FargateServiceTaskDefinitionOutput values. +// You can construct a concrete instance of `FargateServiceTaskDefinitionInput` via: +// +// FargateServiceTaskDefinitionArgs{...} +type FargateServiceTaskDefinitionInput interface { + pulumi.Input + + ToFargateServiceTaskDefinitionOutput() FargateServiceTaskDefinitionOutput + ToFargateServiceTaskDefinitionOutputWithContext(context.Context) FargateServiceTaskDefinitionOutput +} + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type FargateServiceTaskDefinitionArgs struct { + // Single container to make a TaskDefinition from. Useful for simple cases where there aren't + // multiple containers, especially when creating a TaskDefinition to call [run] on. + // + // Either [container] or [containers] must be provided. + Container *TaskDefinitionContainerDefinitionArgs `pulumi:"container"` + // All the containers to make a TaskDefinition from. Useful when creating a Service that will + // contain many containers within. + // + // Either [container] or [containers] must be provided. + Containers map[string]TaskDefinitionContainerDefinitionArgs `pulumi:"containers"` + // The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] + Cpu pulumi.StringPtrInput `pulumi:"cpu"` + // The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. + EphemeralStorage ecs.TaskDefinitionEphemeralStoragePtrInput `pulumi:"ephemeralStorage"` + // The execution role that the Amazon ECS container agent and the Docker daemon can assume. + // Will be created automatically if not defined. + ExecutionRole *awsx.DefaultRoleWithPolicyArgs `pulumi:"executionRole"` + // An optional unique name for your task definition. If not specified, then a default will be created. + Family pulumi.StringPtrInput `pulumi:"family"` + // Configuration block(s) with Inference Accelerators settings. Detailed below. + InferenceAccelerators ecs.TaskDefinitionInferenceAcceleratorArrayInput `pulumi:"inferenceAccelerators"` + // IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. + IpcMode pulumi.StringPtrInput `pulumi:"ipcMode"` + // A set of volume blocks that containers in your task may use. + LogGroup *awsx.DefaultLogGroupArgs `pulumi:"logGroup"` + // The amount (in MiB) of memory used by the task. If not provided, a default will be computed + // based on the cumulative needs specified by [containerDefinitions] + Memory pulumi.StringPtrInput `pulumi:"memory"` + // Process namespace to use for the containers in the task. The valid values are `host` and `task`. + PidMode pulumi.StringPtrInput `pulumi:"pidMode"` + // Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. + PlacementConstraints ecs.TaskDefinitionPlacementConstraintArrayInput `pulumi:"placementConstraints"` + // Configuration block for the App Mesh proxy. Detailed below. + ProxyConfiguration ecs.TaskDefinitionProxyConfigurationPtrInput `pulumi:"proxyConfiguration"` + // Configuration block for runtime_platform that containers in your task may use. + RuntimePlatform ecs.TaskDefinitionRuntimePlatformPtrInput `pulumi:"runtimePlatform"` + // Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. + SkipDestroy pulumi.BoolPtrInput `pulumi:"skipDestroy"` + // Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. + Tags pulumi.StringMapInput `pulumi:"tags"` + // IAM role that allows your Amazon ECS container task to make calls to other AWS services. + // Will be created automatically if not defined. + TaskRole *awsx.DefaultRoleWithPolicyArgs `pulumi:"taskRole"` + // Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. + TrackLatest pulumi.BoolPtrInput `pulumi:"trackLatest"` + // Configuration block for volumes that containers in your task may use. Detailed below. + Volumes ecs.TaskDefinitionVolumeArrayInput `pulumi:"volumes"` +} + +func (FargateServiceTaskDefinitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*FargateServiceTaskDefinition)(nil)).Elem() +} + +func (i FargateServiceTaskDefinitionArgs) ToFargateServiceTaskDefinitionOutput() FargateServiceTaskDefinitionOutput { + return i.ToFargateServiceTaskDefinitionOutputWithContext(context.Background()) +} + +func (i FargateServiceTaskDefinitionArgs) ToFargateServiceTaskDefinitionOutputWithContext(ctx context.Context) FargateServiceTaskDefinitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateServiceTaskDefinitionOutput) +} + +func (i FargateServiceTaskDefinitionArgs) ToFargateServiceTaskDefinitionPtrOutput() FargateServiceTaskDefinitionPtrOutput { + return i.ToFargateServiceTaskDefinitionPtrOutputWithContext(context.Background()) +} + +func (i FargateServiceTaskDefinitionArgs) ToFargateServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) FargateServiceTaskDefinitionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateServiceTaskDefinitionOutput).ToFargateServiceTaskDefinitionPtrOutputWithContext(ctx) +} + +// FargateServiceTaskDefinitionPtrInput is an input type that accepts FargateServiceTaskDefinitionArgs, FargateServiceTaskDefinitionPtr and FargateServiceTaskDefinitionPtrOutput values. +// You can construct a concrete instance of `FargateServiceTaskDefinitionPtrInput` via: +// +// FargateServiceTaskDefinitionArgs{...} +// +// or: +// +// nil +type FargateServiceTaskDefinitionPtrInput interface { + pulumi.Input + + ToFargateServiceTaskDefinitionPtrOutput() FargateServiceTaskDefinitionPtrOutput + ToFargateServiceTaskDefinitionPtrOutputWithContext(context.Context) FargateServiceTaskDefinitionPtrOutput +} + +type fargateServiceTaskDefinitionPtrType FargateServiceTaskDefinitionArgs + +func FargateServiceTaskDefinitionPtr(v *FargateServiceTaskDefinitionArgs) FargateServiceTaskDefinitionPtrInput { + return (*fargateServiceTaskDefinitionPtrType)(v) +} + +func (*fargateServiceTaskDefinitionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**FargateServiceTaskDefinition)(nil)).Elem() +} + +func (i *fargateServiceTaskDefinitionPtrType) ToFargateServiceTaskDefinitionPtrOutput() FargateServiceTaskDefinitionPtrOutput { + return i.ToFargateServiceTaskDefinitionPtrOutputWithContext(context.Background()) +} + +func (i *fargateServiceTaskDefinitionPtrType) ToFargateServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) FargateServiceTaskDefinitionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(FargateServiceTaskDefinitionPtrOutput) +} + +// Create a TaskDefinition resource with the given unique name, arguments, and options. +// Creates required log-group and task & execution roles. +// Presents required Service load balancers if target group included in port mappings. +type FargateServiceTaskDefinitionOutput struct{ *pulumi.OutputState } + +func (FargateServiceTaskDefinitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*FargateServiceTaskDefinition)(nil)).Elem() +} + +func (o FargateServiceTaskDefinitionOutput) ToFargateServiceTaskDefinitionOutput() FargateServiceTaskDefinitionOutput { + return o +} + +func (o FargateServiceTaskDefinitionOutput) ToFargateServiceTaskDefinitionOutputWithContext(ctx context.Context) FargateServiceTaskDefinitionOutput { + return o +} + +func (o FargateServiceTaskDefinitionOutput) ToFargateServiceTaskDefinitionPtrOutput() FargateServiceTaskDefinitionPtrOutput { + return o.ToFargateServiceTaskDefinitionPtrOutputWithContext(context.Background()) +} + +func (o FargateServiceTaskDefinitionOutput) ToFargateServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) FargateServiceTaskDefinitionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v FargateServiceTaskDefinition) *FargateServiceTaskDefinition { + return &v + }).(FargateServiceTaskDefinitionPtrOutput) +} + +// Single container to make a TaskDefinition from. Useful for simple cases where there aren't +// multiple containers, especially when creating a TaskDefinition to call [run] on. +// +// Either [container] or [containers] must be provided. +func (o FargateServiceTaskDefinitionOutput) Container() TaskDefinitionContainerDefinitionPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *TaskDefinitionContainerDefinition { return v.Container }).(TaskDefinitionContainerDefinitionPtrOutput) +} + +// All the containers to make a TaskDefinition from. Useful when creating a Service that will +// contain many containers within. +// +// Either [container] or [containers] must be provided. +func (o FargateServiceTaskDefinitionOutput) Containers() TaskDefinitionContainerDefinitionMapOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) map[string]TaskDefinitionContainerDefinition { return v.Containers }).(TaskDefinitionContainerDefinitionMapOutput) +} + +// The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] +func (o FargateServiceTaskDefinitionOutput) Cpu() pulumi.StringPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *string { return v.Cpu }).(pulumi.StringPtrOutput) +} + +// The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. +func (o FargateServiceTaskDefinitionOutput) EphemeralStorage() ecs.TaskDefinitionEphemeralStoragePtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *ecs.TaskDefinitionEphemeralStorage { return v.EphemeralStorage }).(ecs.TaskDefinitionEphemeralStoragePtrOutput) +} + +// The execution role that the Amazon ECS container agent and the Docker daemon can assume. +// Will be created automatically if not defined. +func (o FargateServiceTaskDefinitionOutput) ExecutionRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { return v.ExecutionRole }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// An optional unique name for your task definition. If not specified, then a default will be created. +func (o FargateServiceTaskDefinitionOutput) Family() pulumi.StringPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *string { return v.Family }).(pulumi.StringPtrOutput) +} + +// Configuration block(s) with Inference Accelerators settings. Detailed below. +func (o FargateServiceTaskDefinitionOutput) InferenceAccelerators() ecs.TaskDefinitionInferenceAcceleratorArrayOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) []ecs.TaskDefinitionInferenceAccelerator { + return v.InferenceAccelerators + }).(ecs.TaskDefinitionInferenceAcceleratorArrayOutput) +} + +// IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. +func (o FargateServiceTaskDefinitionOutput) IpcMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *string { return v.IpcMode }).(pulumi.StringPtrOutput) +} + +// A set of volume blocks that containers in your task may use. +func (o FargateServiceTaskDefinitionOutput) LogGroup() awsx.DefaultLogGroupPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *awsx.DefaultLogGroup { return v.LogGroup }).(awsx.DefaultLogGroupPtrOutput) +} + +// The amount (in MiB) of memory used by the task. If not provided, a default will be computed +// based on the cumulative needs specified by [containerDefinitions] +func (o FargateServiceTaskDefinitionOutput) Memory() pulumi.StringPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *string { return v.Memory }).(pulumi.StringPtrOutput) +} + +// Process namespace to use for the containers in the task. The valid values are `host` and `task`. +func (o FargateServiceTaskDefinitionOutput) PidMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *string { return v.PidMode }).(pulumi.StringPtrOutput) +} + +// Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. +func (o FargateServiceTaskDefinitionOutput) PlacementConstraints() ecs.TaskDefinitionPlacementConstraintArrayOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) []ecs.TaskDefinitionPlacementConstraint { + return v.PlacementConstraints + }).(ecs.TaskDefinitionPlacementConstraintArrayOutput) +} + +// Configuration block for the App Mesh proxy. Detailed below. +func (o FargateServiceTaskDefinitionOutput) ProxyConfiguration() ecs.TaskDefinitionProxyConfigurationPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *ecs.TaskDefinitionProxyConfiguration { + return v.ProxyConfiguration + }).(ecs.TaskDefinitionProxyConfigurationPtrOutput) +} + +// Configuration block for runtime_platform that containers in your task may use. +func (o FargateServiceTaskDefinitionOutput) RuntimePlatform() ecs.TaskDefinitionRuntimePlatformPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *ecs.TaskDefinitionRuntimePlatform { return v.RuntimePlatform }).(ecs.TaskDefinitionRuntimePlatformPtrOutput) +} + +// Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. +func (o FargateServiceTaskDefinitionOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *bool { return v.SkipDestroy }).(pulumi.BoolPtrOutput) +} + +// Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o FargateServiceTaskDefinitionOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) map[string]string { return v.Tags }).(pulumi.StringMapOutput) +} + +// IAM role that allows your Amazon ECS container task to make calls to other AWS services. +// Will be created automatically if not defined. +func (o FargateServiceTaskDefinitionOutput) TaskRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { return v.TaskRole }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. +func (o FargateServiceTaskDefinitionOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) *bool { return v.TrackLatest }).(pulumi.BoolPtrOutput) +} + +// Configuration block for volumes that containers in your task may use. Detailed below. +func (o FargateServiceTaskDefinitionOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { + return o.ApplyT(func(v FargateServiceTaskDefinition) []ecs.TaskDefinitionVolume { return v.Volumes }).(ecs.TaskDefinitionVolumeArrayOutput) +} + +type FargateServiceTaskDefinitionPtrOutput struct{ *pulumi.OutputState } + +func (FargateServiceTaskDefinitionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**FargateServiceTaskDefinition)(nil)).Elem() +} + +func (o FargateServiceTaskDefinitionPtrOutput) ToFargateServiceTaskDefinitionPtrOutput() FargateServiceTaskDefinitionPtrOutput { + return o +} + +func (o FargateServiceTaskDefinitionPtrOutput) ToFargateServiceTaskDefinitionPtrOutputWithContext(ctx context.Context) FargateServiceTaskDefinitionPtrOutput { + return o +} + +func (o FargateServiceTaskDefinitionPtrOutput) Elem() FargateServiceTaskDefinitionOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) FargateServiceTaskDefinition { + if v != nil { + return *v + } + var ret FargateServiceTaskDefinition + return ret + }).(FargateServiceTaskDefinitionOutput) +} + +// Single container to make a TaskDefinition from. Useful for simple cases where there aren't +// multiple containers, especially when creating a TaskDefinition to call [run] on. +// +// Either [container] or [containers] must be provided. +func (o FargateServiceTaskDefinitionPtrOutput) Container() TaskDefinitionContainerDefinitionPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *TaskDefinitionContainerDefinition { + if v == nil { + return nil + } + return v.Container + }).(TaskDefinitionContainerDefinitionPtrOutput) +} + +// All the containers to make a TaskDefinition from. Useful when creating a Service that will +// contain many containers within. +// +// Either [container] or [containers] must be provided. +func (o FargateServiceTaskDefinitionPtrOutput) Containers() TaskDefinitionContainerDefinitionMapOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) map[string]TaskDefinitionContainerDefinition { + if v == nil { + return nil + } + return v.Containers + }).(TaskDefinitionContainerDefinitionMapOutput) +} + +// The number of cpu units used by the task. If not provided, a default will be computed based on the cumulative needs specified by [containerDefinitions] +func (o FargateServiceTaskDefinitionPtrOutput) Cpu() pulumi.StringPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.Cpu + }).(pulumi.StringPtrOutput) +} + +// The amount of ephemeral storage to allocate for the task. This parameter is used to expand the total amount of ephemeral storage available, beyond the default amount, for tasks hosted on AWS Fargate. See Ephemeral Storage. +func (o FargateServiceTaskDefinitionPtrOutput) EphemeralStorage() ecs.TaskDefinitionEphemeralStoragePtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *ecs.TaskDefinitionEphemeralStorage { + if v == nil { + return nil + } + return v.EphemeralStorage + }).(ecs.TaskDefinitionEphemeralStoragePtrOutput) +} + +// The execution role that the Amazon ECS container agent and the Docker daemon can assume. +// Will be created automatically if not defined. +func (o FargateServiceTaskDefinitionPtrOutput) ExecutionRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { + if v == nil { + return nil + } + return v.ExecutionRole + }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// An optional unique name for your task definition. If not specified, then a default will be created. +func (o FargateServiceTaskDefinitionPtrOutput) Family() pulumi.StringPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.Family + }).(pulumi.StringPtrOutput) +} + +// Configuration block(s) with Inference Accelerators settings. Detailed below. +func (o FargateServiceTaskDefinitionPtrOutput) InferenceAccelerators() ecs.TaskDefinitionInferenceAcceleratorArrayOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) []ecs.TaskDefinitionInferenceAccelerator { + if v == nil { + return nil + } + return v.InferenceAccelerators + }).(ecs.TaskDefinitionInferenceAcceleratorArrayOutput) +} + +// IPC resource namespace to be used for the containers in the task The valid values are `host`, `task`, and `none`. +func (o FargateServiceTaskDefinitionPtrOutput) IpcMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.IpcMode + }).(pulumi.StringPtrOutput) +} + +// A set of volume blocks that containers in your task may use. +func (o FargateServiceTaskDefinitionPtrOutput) LogGroup() awsx.DefaultLogGroupPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *awsx.DefaultLogGroup { + if v == nil { + return nil + } + return v.LogGroup + }).(awsx.DefaultLogGroupPtrOutput) +} + +// The amount (in MiB) of memory used by the task. If not provided, a default will be computed +// based on the cumulative needs specified by [containerDefinitions] +func (o FargateServiceTaskDefinitionPtrOutput) Memory() pulumi.StringPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.Memory + }).(pulumi.StringPtrOutput) +} + +// Process namespace to use for the containers in the task. The valid values are `host` and `task`. +func (o FargateServiceTaskDefinitionPtrOutput) PidMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *string { + if v == nil { + return nil + } + return v.PidMode + }).(pulumi.StringPtrOutput) +} + +// Configuration block for rules that are taken into consideration during task placement. Maximum number of `placement_constraints` is `10`. Detailed below. +func (o FargateServiceTaskDefinitionPtrOutput) PlacementConstraints() ecs.TaskDefinitionPlacementConstraintArrayOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) []ecs.TaskDefinitionPlacementConstraint { + if v == nil { + return nil + } + return v.PlacementConstraints + }).(ecs.TaskDefinitionPlacementConstraintArrayOutput) +} + +// Configuration block for the App Mesh proxy. Detailed below. +func (o FargateServiceTaskDefinitionPtrOutput) ProxyConfiguration() ecs.TaskDefinitionProxyConfigurationPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *ecs.TaskDefinitionProxyConfiguration { + if v == nil { + return nil + } + return v.ProxyConfiguration + }).(ecs.TaskDefinitionProxyConfigurationPtrOutput) +} + +// Configuration block for runtime_platform that containers in your task may use. +func (o FargateServiceTaskDefinitionPtrOutput) RuntimePlatform() ecs.TaskDefinitionRuntimePlatformPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *ecs.TaskDefinitionRuntimePlatform { + if v == nil { + return nil + } + return v.RuntimePlatform + }).(ecs.TaskDefinitionRuntimePlatformPtrOutput) +} + +// Whether to retain the old revision when the resource is destroyed or replacement is necessary. Default is `false`. +func (o FargateServiceTaskDefinitionPtrOutput) SkipDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *bool { + if v == nil { + return nil + } + return v.SkipDestroy + }).(pulumi.BoolPtrOutput) +} + +// Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. +func (o FargateServiceTaskDefinitionPtrOutput) Tags() pulumi.StringMapOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) map[string]string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringMapOutput) +} + +// IAM role that allows your Amazon ECS container task to make calls to other AWS services. +// Will be created automatically if not defined. +func (o FargateServiceTaskDefinitionPtrOutput) TaskRole() awsx.DefaultRoleWithPolicyPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *awsx.DefaultRoleWithPolicy { + if v == nil { + return nil + } + return v.TaskRole + }).(awsx.DefaultRoleWithPolicyPtrOutput) +} + +// Whether should track latest `ACTIVE` task definition on AWS or the one created with the resource stored in state. Default is `false`. Useful in the event the task definition is modified outside of this resource. +func (o FargateServiceTaskDefinitionPtrOutput) TrackLatest() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) *bool { + if v == nil { + return nil + } + return v.TrackLatest + }).(pulumi.BoolPtrOutput) +} + +// Configuration block for volumes that containers in your task may use. Detailed below. +func (o FargateServiceTaskDefinitionPtrOutput) Volumes() ecs.TaskDefinitionVolumeArrayOutput { + return o.ApplyT(func(v *FargateServiceTaskDefinition) []ecs.TaskDefinitionVolume { + if v == nil { + return nil + } + return v.Volumes + }).(ecs.TaskDefinitionVolumeArrayOutput) +} + +// List of container definitions that are passed to the Docker daemon on a container instance +type TaskDefinitionContainerDefinition struct { + Command []string `pulumi:"command"` + Cpu *int `pulumi:"cpu"` + DependsOn []TaskDefinitionContainerDependency `pulumi:"dependsOn"` + DisableNetworking *bool `pulumi:"disableNetworking"` + DnsSearchDomains []string `pulumi:"dnsSearchDomains"` + DnsServers []string `pulumi:"dnsServers"` + DockerLabels interface{} `pulumi:"dockerLabels"` + DockerSecurityOptions []string `pulumi:"dockerSecurityOptions"` + EntryPoint []string `pulumi:"entryPoint"` + // The environment variables to pass to a container + Environment []TaskDefinitionKeyValuePair `pulumi:"environment"` + // The list of one or more files that contain the environment variables to pass to a container + EnvironmentFiles []TaskDefinitionEnvironmentFile `pulumi:"environmentFiles"` + Essential *bool `pulumi:"essential"` + ExtraHosts []TaskDefinitionHostEntry `pulumi:"extraHosts"` + FirelensConfiguration *TaskDefinitionFirelensConfiguration `pulumi:"firelensConfiguration"` + HealthCheck *TaskDefinitionHealthCheck `pulumi:"healthCheck"` + Hostname *string `pulumi:"hostname"` + // The image used to start a container. This string is passed directly to the Docker daemon. + Image string `pulumi:"image"` + Interactive *bool `pulumi:"interactive"` + Links []string `pulumi:"links"` + LinuxParameters *TaskDefinitionLinuxParameters `pulumi:"linuxParameters"` + LogConfiguration *TaskDefinitionLogConfiguration `pulumi:"logConfiguration"` + // The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. + Memory *int `pulumi:"memory"` + MemoryReservation *int `pulumi:"memoryReservation"` + MountPoints []TaskDefinitionMountPoint `pulumi:"mountPoints"` + // The name of a container. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed + Name string `pulumi:"name"` + // Port mappings allow containers to access ports on the host container instance to send or receive traffic. + PortMappings []TaskDefinitionPortMapping `pulumi:"portMappings"` + Privileged *bool `pulumi:"privileged"` + PseudoTerminal *bool `pulumi:"pseudoTerminal"` + ReadonlyRootFilesystem *bool `pulumi:"readonlyRootFilesystem"` + RepositoryCredentials *TaskDefinitionRepositoryCredentials `pulumi:"repositoryCredentials"` + ResourceRequirements []TaskDefinitionResourceRequirement `pulumi:"resourceRequirements"` + Secrets []TaskDefinitionSecret `pulumi:"secrets"` + StartTimeout *int `pulumi:"startTimeout"` + StopTimeout *int `pulumi:"stopTimeout"` + SystemControls []TaskDefinitionSystemControl `pulumi:"systemControls"` + Ulimits []TaskDefinitionUlimit `pulumi:"ulimits"` + User *string `pulumi:"user"` + VolumesFrom []TaskDefinitionVolumeFrom `pulumi:"volumesFrom"` + WorkingDirectory *string `pulumi:"workingDirectory"` +} + +// TaskDefinitionContainerDefinitionInput is an input type that accepts TaskDefinitionContainerDefinitionArgs and TaskDefinitionContainerDefinitionOutput values. +// You can construct a concrete instance of `TaskDefinitionContainerDefinitionInput` via: +// +// TaskDefinitionContainerDefinitionArgs{...} +type TaskDefinitionContainerDefinitionInput interface { + pulumi.Input + + ToTaskDefinitionContainerDefinitionOutput() TaskDefinitionContainerDefinitionOutput + ToTaskDefinitionContainerDefinitionOutputWithContext(context.Context) TaskDefinitionContainerDefinitionOutput +} + +// List of container definitions that are passed to the Docker daemon on a container instance +type TaskDefinitionContainerDefinitionArgs struct { + Command pulumi.StringArrayInput `pulumi:"command"` + Cpu pulumi.IntPtrInput `pulumi:"cpu"` + DependsOn TaskDefinitionContainerDependencyArrayInput `pulumi:"dependsOn"` + DisableNetworking pulumi.BoolPtrInput `pulumi:"disableNetworking"` + DnsSearchDomains pulumi.StringArrayInput `pulumi:"dnsSearchDomains"` + DnsServers pulumi.StringArrayInput `pulumi:"dnsServers"` + DockerLabels pulumi.Input `pulumi:"dockerLabels"` + DockerSecurityOptions pulumi.StringArrayInput `pulumi:"dockerSecurityOptions"` + EntryPoint pulumi.StringArrayInput `pulumi:"entryPoint"` + // The environment variables to pass to a container + Environment TaskDefinitionKeyValuePairArrayInput `pulumi:"environment"` + // The list of one or more files that contain the environment variables to pass to a container + EnvironmentFiles TaskDefinitionEnvironmentFileArrayInput `pulumi:"environmentFiles"` + Essential pulumi.BoolPtrInput `pulumi:"essential"` + ExtraHosts TaskDefinitionHostEntryArrayInput `pulumi:"extraHosts"` + FirelensConfiguration TaskDefinitionFirelensConfigurationPtrInput `pulumi:"firelensConfiguration"` + HealthCheck TaskDefinitionHealthCheckPtrInput `pulumi:"healthCheck"` + Hostname pulumi.StringPtrInput `pulumi:"hostname"` + // The image used to start a container. This string is passed directly to the Docker daemon. + Image pulumi.StringInput `pulumi:"image"` + Interactive pulumi.BoolPtrInput `pulumi:"interactive"` + Links pulumi.StringArrayInput `pulumi:"links"` + LinuxParameters TaskDefinitionLinuxParametersPtrInput `pulumi:"linuxParameters"` + LogConfiguration TaskDefinitionLogConfigurationPtrInput `pulumi:"logConfiguration"` + // The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. + Memory pulumi.IntPtrInput `pulumi:"memory"` + MemoryReservation pulumi.IntPtrInput `pulumi:"memoryReservation"` + MountPoints TaskDefinitionMountPointArrayInput `pulumi:"mountPoints"` + // The name of a container. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed + Name pulumi.StringInput `pulumi:"name"` + // Port mappings allow containers to access ports on the host container instance to send or receive traffic. + PortMappings TaskDefinitionPortMappingArrayInput `pulumi:"portMappings"` + Privileged pulumi.BoolPtrInput `pulumi:"privileged"` + PseudoTerminal pulumi.BoolPtrInput `pulumi:"pseudoTerminal"` + ReadonlyRootFilesystem pulumi.BoolPtrInput `pulumi:"readonlyRootFilesystem"` + RepositoryCredentials TaskDefinitionRepositoryCredentialsPtrInput `pulumi:"repositoryCredentials"` + ResourceRequirements TaskDefinitionResourceRequirementArrayInput `pulumi:"resourceRequirements"` + Secrets TaskDefinitionSecretArrayInput `pulumi:"secrets"` + StartTimeout pulumi.IntPtrInput `pulumi:"startTimeout"` + StopTimeout pulumi.IntPtrInput `pulumi:"stopTimeout"` + SystemControls TaskDefinitionSystemControlArrayInput `pulumi:"systemControls"` + Ulimits TaskDefinitionUlimitArrayInput `pulumi:"ulimits"` + User pulumi.StringPtrInput `pulumi:"user"` + VolumesFrom TaskDefinitionVolumeFromArrayInput `pulumi:"volumesFrom"` + WorkingDirectory pulumi.StringPtrInput `pulumi:"workingDirectory"` +} + +func (TaskDefinitionContainerDefinitionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionContainerDefinition)(nil)).Elem() +} + +func (i TaskDefinitionContainerDefinitionArgs) ToTaskDefinitionContainerDefinitionOutput() TaskDefinitionContainerDefinitionOutput { + return i.ToTaskDefinitionContainerDefinitionOutputWithContext(context.Background()) +} + +func (i TaskDefinitionContainerDefinitionArgs) ToTaskDefinitionContainerDefinitionOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionContainerDefinitionOutput) +} + +func (i TaskDefinitionContainerDefinitionArgs) ToTaskDefinitionContainerDefinitionPtrOutput() TaskDefinitionContainerDefinitionPtrOutput { + return i.ToTaskDefinitionContainerDefinitionPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionContainerDefinitionArgs) ToTaskDefinitionContainerDefinitionPtrOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionContainerDefinitionOutput).ToTaskDefinitionContainerDefinitionPtrOutputWithContext(ctx) +} + +// TaskDefinitionContainerDefinitionPtrInput is an input type that accepts TaskDefinitionContainerDefinitionArgs, TaskDefinitionContainerDefinitionPtr and TaskDefinitionContainerDefinitionPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionContainerDefinitionPtrInput` via: +// +// TaskDefinitionContainerDefinitionArgs{...} +// +// or: +// +// nil +type TaskDefinitionContainerDefinitionPtrInput interface { + pulumi.Input + + ToTaskDefinitionContainerDefinitionPtrOutput() TaskDefinitionContainerDefinitionPtrOutput + ToTaskDefinitionContainerDefinitionPtrOutputWithContext(context.Context) TaskDefinitionContainerDefinitionPtrOutput +} + +type taskDefinitionContainerDefinitionPtrType TaskDefinitionContainerDefinitionArgs + +func TaskDefinitionContainerDefinitionPtr(v *TaskDefinitionContainerDefinitionArgs) TaskDefinitionContainerDefinitionPtrInput { + return (*taskDefinitionContainerDefinitionPtrType)(v) +} + +func (*taskDefinitionContainerDefinitionPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionContainerDefinition)(nil)).Elem() +} + +func (i *taskDefinitionContainerDefinitionPtrType) ToTaskDefinitionContainerDefinitionPtrOutput() TaskDefinitionContainerDefinitionPtrOutput { + return i.ToTaskDefinitionContainerDefinitionPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionContainerDefinitionPtrType) ToTaskDefinitionContainerDefinitionPtrOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionContainerDefinitionPtrOutput) +} + +// TaskDefinitionContainerDefinitionMapInput is an input type that accepts TaskDefinitionContainerDefinitionMap and TaskDefinitionContainerDefinitionMapOutput values. +// You can construct a concrete instance of `TaskDefinitionContainerDefinitionMapInput` via: +// +// TaskDefinitionContainerDefinitionMap{ "key": TaskDefinitionContainerDefinitionArgs{...} } +type TaskDefinitionContainerDefinitionMapInput interface { + pulumi.Input + + ToTaskDefinitionContainerDefinitionMapOutput() TaskDefinitionContainerDefinitionMapOutput + ToTaskDefinitionContainerDefinitionMapOutputWithContext(context.Context) TaskDefinitionContainerDefinitionMapOutput +} + +type TaskDefinitionContainerDefinitionMap map[string]TaskDefinitionContainerDefinitionInput + +func (TaskDefinitionContainerDefinitionMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]TaskDefinitionContainerDefinition)(nil)).Elem() +} + +func (i TaskDefinitionContainerDefinitionMap) ToTaskDefinitionContainerDefinitionMapOutput() TaskDefinitionContainerDefinitionMapOutput { + return i.ToTaskDefinitionContainerDefinitionMapOutputWithContext(context.Background()) +} + +func (i TaskDefinitionContainerDefinitionMap) ToTaskDefinitionContainerDefinitionMapOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionContainerDefinitionMapOutput) +} + +// List of container definitions that are passed to the Docker daemon on a container instance +type TaskDefinitionContainerDefinitionOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionContainerDefinitionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionContainerDefinition)(nil)).Elem() +} + +func (o TaskDefinitionContainerDefinitionOutput) ToTaskDefinitionContainerDefinitionOutput() TaskDefinitionContainerDefinitionOutput { + return o +} + +func (o TaskDefinitionContainerDefinitionOutput) ToTaskDefinitionContainerDefinitionOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionOutput { + return o +} + +func (o TaskDefinitionContainerDefinitionOutput) ToTaskDefinitionContainerDefinitionPtrOutput() TaskDefinitionContainerDefinitionPtrOutput { + return o.ToTaskDefinitionContainerDefinitionPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionContainerDefinitionOutput) ToTaskDefinitionContainerDefinitionPtrOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionContainerDefinition) *TaskDefinitionContainerDefinition { + return &v + }).(TaskDefinitionContainerDefinitionPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Command() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []string { return v.Command }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Cpu() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *int { return v.Cpu }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) DependsOn() TaskDefinitionContainerDependencyArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionContainerDependency { return v.DependsOn }).(TaskDefinitionContainerDependencyArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) DisableNetworking() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *bool { return v.DisableNetworking }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) DnsSearchDomains() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []string { return v.DnsSearchDomains }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) DnsServers() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []string { return v.DnsServers }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) DockerLabels() pulumi.AnyOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) interface{} { return v.DockerLabels }).(pulumi.AnyOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) DockerSecurityOptions() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []string { return v.DockerSecurityOptions }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) EntryPoint() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []string { return v.EntryPoint }).(pulumi.StringArrayOutput) +} + +// The environment variables to pass to a container +func (o TaskDefinitionContainerDefinitionOutput) Environment() TaskDefinitionKeyValuePairArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionKeyValuePair { return v.Environment }).(TaskDefinitionKeyValuePairArrayOutput) +} + +// The list of one or more files that contain the environment variables to pass to a container +func (o TaskDefinitionContainerDefinitionOutput) EnvironmentFiles() TaskDefinitionEnvironmentFileArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionEnvironmentFile { return v.EnvironmentFiles }).(TaskDefinitionEnvironmentFileArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Essential() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *bool { return v.Essential }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) ExtraHosts() TaskDefinitionHostEntryArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionHostEntry { return v.ExtraHosts }).(TaskDefinitionHostEntryArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) FirelensConfiguration() TaskDefinitionFirelensConfigurationPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *TaskDefinitionFirelensConfiguration { + return v.FirelensConfiguration + }).(TaskDefinitionFirelensConfigurationPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) HealthCheck() TaskDefinitionHealthCheckPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *TaskDefinitionHealthCheck { return v.HealthCheck }).(TaskDefinitionHealthCheckPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Hostname() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *string { return v.Hostname }).(pulumi.StringPtrOutput) +} + +// The image used to start a container. This string is passed directly to the Docker daemon. +func (o TaskDefinitionContainerDefinitionOutput) Image() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) string { return v.Image }).(pulumi.StringOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Interactive() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *bool { return v.Interactive }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Links() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []string { return v.Links }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) LinuxParameters() TaskDefinitionLinuxParametersPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *TaskDefinitionLinuxParameters { return v.LinuxParameters }).(TaskDefinitionLinuxParametersPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) LogConfiguration() TaskDefinitionLogConfigurationPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *TaskDefinitionLogConfiguration { return v.LogConfiguration }).(TaskDefinitionLogConfigurationPtrOutput) +} + +// The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. +func (o TaskDefinitionContainerDefinitionOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *int { return v.Memory }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) MemoryReservation() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *int { return v.MemoryReservation }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) MountPoints() TaskDefinitionMountPointArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionMountPoint { return v.MountPoints }).(TaskDefinitionMountPointArrayOutput) +} + +// The name of a container. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed +func (o TaskDefinitionContainerDefinitionOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) string { return v.Name }).(pulumi.StringOutput) +} + +// Port mappings allow containers to access ports on the host container instance to send or receive traffic. +func (o TaskDefinitionContainerDefinitionOutput) PortMappings() TaskDefinitionPortMappingArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionPortMapping { return v.PortMappings }).(TaskDefinitionPortMappingArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Privileged() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *bool { return v.Privileged }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) PseudoTerminal() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *bool { return v.PseudoTerminal }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) ReadonlyRootFilesystem() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *bool { return v.ReadonlyRootFilesystem }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) RepositoryCredentials() TaskDefinitionRepositoryCredentialsPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *TaskDefinitionRepositoryCredentials { + return v.RepositoryCredentials + }).(TaskDefinitionRepositoryCredentialsPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) ResourceRequirements() TaskDefinitionResourceRequirementArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionResourceRequirement { + return v.ResourceRequirements + }).(TaskDefinitionResourceRequirementArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Secrets() TaskDefinitionSecretArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionSecret { return v.Secrets }).(TaskDefinitionSecretArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) StartTimeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *int { return v.StartTimeout }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) StopTimeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *int { return v.StopTimeout }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) SystemControls() TaskDefinitionSystemControlArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionSystemControl { return v.SystemControls }).(TaskDefinitionSystemControlArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) Ulimits() TaskDefinitionUlimitArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionUlimit { return v.Ulimits }).(TaskDefinitionUlimitArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) User() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *string { return v.User }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) VolumesFrom() TaskDefinitionVolumeFromArrayOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) []TaskDefinitionVolumeFrom { return v.VolumesFrom }).(TaskDefinitionVolumeFromArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionOutput) WorkingDirectory() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDefinition) *string { return v.WorkingDirectory }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionContainerDefinitionPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionContainerDefinitionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionContainerDefinition)(nil)).Elem() +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) ToTaskDefinitionContainerDefinitionPtrOutput() TaskDefinitionContainerDefinitionPtrOutput { + return o +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) ToTaskDefinitionContainerDefinitionPtrOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionPtrOutput { + return o +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Elem() TaskDefinitionContainerDefinitionOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) TaskDefinitionContainerDefinition { + if v != nil { + return *v + } + var ret TaskDefinitionContainerDefinition + return ret + }).(TaskDefinitionContainerDefinitionOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Command() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []string { + if v == nil { + return nil + } + return v.Command + }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Cpu() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *int { + if v == nil { + return nil + } + return v.Cpu + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) DependsOn() TaskDefinitionContainerDependencyArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionContainerDependency { + if v == nil { + return nil + } + return v.DependsOn + }).(TaskDefinitionContainerDependencyArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) DisableNetworking() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *bool { + if v == nil { + return nil + } + return v.DisableNetworking + }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) DnsSearchDomains() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []string { + if v == nil { + return nil + } + return v.DnsSearchDomains + }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) DnsServers() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []string { + if v == nil { + return nil + } + return v.DnsServers + }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) DockerLabels() pulumi.AnyOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) interface{} { + if v == nil { + return nil + } + return v.DockerLabels + }).(pulumi.AnyOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) DockerSecurityOptions() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []string { + if v == nil { + return nil + } + return v.DockerSecurityOptions + }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) EntryPoint() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []string { + if v == nil { + return nil + } + return v.EntryPoint + }).(pulumi.StringArrayOutput) +} + +// The environment variables to pass to a container +func (o TaskDefinitionContainerDefinitionPtrOutput) Environment() TaskDefinitionKeyValuePairArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionKeyValuePair { + if v == nil { + return nil + } + return v.Environment + }).(TaskDefinitionKeyValuePairArrayOutput) +} + +// The list of one or more files that contain the environment variables to pass to a container +func (o TaskDefinitionContainerDefinitionPtrOutput) EnvironmentFiles() TaskDefinitionEnvironmentFileArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionEnvironmentFile { + if v == nil { + return nil + } + return v.EnvironmentFiles + }).(TaskDefinitionEnvironmentFileArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Essential() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *bool { + if v == nil { + return nil + } + return v.Essential + }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) ExtraHosts() TaskDefinitionHostEntryArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionHostEntry { + if v == nil { + return nil + } + return v.ExtraHosts + }).(TaskDefinitionHostEntryArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) FirelensConfiguration() TaskDefinitionFirelensConfigurationPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *TaskDefinitionFirelensConfiguration { + if v == nil { + return nil + } + return v.FirelensConfiguration + }).(TaskDefinitionFirelensConfigurationPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) HealthCheck() TaskDefinitionHealthCheckPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *TaskDefinitionHealthCheck { + if v == nil { + return nil + } + return v.HealthCheck + }).(TaskDefinitionHealthCheckPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Hostname() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *string { + if v == nil { + return nil + } + return v.Hostname + }).(pulumi.StringPtrOutput) +} + +// The image used to start a container. This string is passed directly to the Docker daemon. +func (o TaskDefinitionContainerDefinitionPtrOutput) Image() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *string { + if v == nil { + return nil + } + return &v.Image + }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Interactive() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *bool { + if v == nil { + return nil + } + return v.Interactive + }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Links() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []string { + if v == nil { + return nil + } + return v.Links + }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) LinuxParameters() TaskDefinitionLinuxParametersPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *TaskDefinitionLinuxParameters { + if v == nil { + return nil + } + return v.LinuxParameters + }).(TaskDefinitionLinuxParametersPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) LogConfiguration() TaskDefinitionLogConfigurationPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *TaskDefinitionLogConfiguration { + if v == nil { + return nil + } + return v.LogConfiguration + }).(TaskDefinitionLogConfigurationPtrOutput) +} + +// The amount (in MiB) of memory to present to the container. If your container attempts to exceed the memory specified here, the container is killed. +func (o TaskDefinitionContainerDefinitionPtrOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *int { + if v == nil { + return nil + } + return v.Memory + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) MemoryReservation() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *int { + if v == nil { + return nil + } + return v.MemoryReservation + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) MountPoints() TaskDefinitionMountPointArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionMountPoint { + if v == nil { + return nil + } + return v.MountPoints + }).(TaskDefinitionMountPointArrayOutput) +} + +// The name of a container. Up to 255 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed +func (o TaskDefinitionContainerDefinitionPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +// Port mappings allow containers to access ports on the host container instance to send or receive traffic. +func (o TaskDefinitionContainerDefinitionPtrOutput) PortMappings() TaskDefinitionPortMappingArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionPortMapping { + if v == nil { + return nil + } + return v.PortMappings + }).(TaskDefinitionPortMappingArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Privileged() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *bool { + if v == nil { + return nil + } + return v.Privileged + }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) PseudoTerminal() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *bool { + if v == nil { + return nil + } + return v.PseudoTerminal + }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) ReadonlyRootFilesystem() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *bool { + if v == nil { + return nil + } + return v.ReadonlyRootFilesystem + }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) RepositoryCredentials() TaskDefinitionRepositoryCredentialsPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *TaskDefinitionRepositoryCredentials { + if v == nil { + return nil + } + return v.RepositoryCredentials + }).(TaskDefinitionRepositoryCredentialsPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) ResourceRequirements() TaskDefinitionResourceRequirementArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionResourceRequirement { + if v == nil { + return nil + } + return v.ResourceRequirements + }).(TaskDefinitionResourceRequirementArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Secrets() TaskDefinitionSecretArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionSecret { + if v == nil { + return nil + } + return v.Secrets + }).(TaskDefinitionSecretArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) StartTimeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *int { + if v == nil { + return nil + } + return v.StartTimeout + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) StopTimeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *int { + if v == nil { + return nil + } + return v.StopTimeout + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) SystemControls() TaskDefinitionSystemControlArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionSystemControl { + if v == nil { + return nil + } + return v.SystemControls + }).(TaskDefinitionSystemControlArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) Ulimits() TaskDefinitionUlimitArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionUlimit { + if v == nil { + return nil + } + return v.Ulimits + }).(TaskDefinitionUlimitArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) User() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *string { + if v == nil { + return nil + } + return v.User + }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) VolumesFrom() TaskDefinitionVolumeFromArrayOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) []TaskDefinitionVolumeFrom { + if v == nil { + return nil + } + return v.VolumesFrom + }).(TaskDefinitionVolumeFromArrayOutput) +} + +func (o TaskDefinitionContainerDefinitionPtrOutput) WorkingDirectory() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionContainerDefinition) *string { + if v == nil { + return nil + } + return v.WorkingDirectory + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionContainerDefinitionMapOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionContainerDefinitionMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]TaskDefinitionContainerDefinition)(nil)).Elem() +} + +func (o TaskDefinitionContainerDefinitionMapOutput) ToTaskDefinitionContainerDefinitionMapOutput() TaskDefinitionContainerDefinitionMapOutput { + return o +} + +func (o TaskDefinitionContainerDefinitionMapOutput) ToTaskDefinitionContainerDefinitionMapOutputWithContext(ctx context.Context) TaskDefinitionContainerDefinitionMapOutput { + return o +} + +func (o TaskDefinitionContainerDefinitionMapOutput) MapIndex(k pulumi.StringInput) TaskDefinitionContainerDefinitionOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) TaskDefinitionContainerDefinition { + return vs[0].(map[string]TaskDefinitionContainerDefinition)[vs[1].(string)] + }).(TaskDefinitionContainerDefinitionOutput) +} + +type TaskDefinitionContainerDependency struct { + Condition *string `pulumi:"condition"` + ContainerName *string `pulumi:"containerName"` +} + +// TaskDefinitionContainerDependencyInput is an input type that accepts TaskDefinitionContainerDependencyArgs and TaskDefinitionContainerDependencyOutput values. +// You can construct a concrete instance of `TaskDefinitionContainerDependencyInput` via: +// +// TaskDefinitionContainerDependencyArgs{...} +type TaskDefinitionContainerDependencyInput interface { + pulumi.Input + + ToTaskDefinitionContainerDependencyOutput() TaskDefinitionContainerDependencyOutput + ToTaskDefinitionContainerDependencyOutputWithContext(context.Context) TaskDefinitionContainerDependencyOutput +} + +type TaskDefinitionContainerDependencyArgs struct { + Condition pulumi.StringPtrInput `pulumi:"condition"` + ContainerName pulumi.StringPtrInput `pulumi:"containerName"` +} + +func (TaskDefinitionContainerDependencyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionContainerDependency)(nil)).Elem() +} + +func (i TaskDefinitionContainerDependencyArgs) ToTaskDefinitionContainerDependencyOutput() TaskDefinitionContainerDependencyOutput { + return i.ToTaskDefinitionContainerDependencyOutputWithContext(context.Background()) +} + +func (i TaskDefinitionContainerDependencyArgs) ToTaskDefinitionContainerDependencyOutputWithContext(ctx context.Context) TaskDefinitionContainerDependencyOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionContainerDependencyOutput) +} + +// TaskDefinitionContainerDependencyArrayInput is an input type that accepts TaskDefinitionContainerDependencyArray and TaskDefinitionContainerDependencyArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionContainerDependencyArrayInput` via: +// +// TaskDefinitionContainerDependencyArray{ TaskDefinitionContainerDependencyArgs{...} } +type TaskDefinitionContainerDependencyArrayInput interface { + pulumi.Input + + ToTaskDefinitionContainerDependencyArrayOutput() TaskDefinitionContainerDependencyArrayOutput + ToTaskDefinitionContainerDependencyArrayOutputWithContext(context.Context) TaskDefinitionContainerDependencyArrayOutput +} + +type TaskDefinitionContainerDependencyArray []TaskDefinitionContainerDependencyInput + +func (TaskDefinitionContainerDependencyArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionContainerDependency)(nil)).Elem() +} + +func (i TaskDefinitionContainerDependencyArray) ToTaskDefinitionContainerDependencyArrayOutput() TaskDefinitionContainerDependencyArrayOutput { + return i.ToTaskDefinitionContainerDependencyArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionContainerDependencyArray) ToTaskDefinitionContainerDependencyArrayOutputWithContext(ctx context.Context) TaskDefinitionContainerDependencyArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionContainerDependencyArrayOutput) +} + +type TaskDefinitionContainerDependencyOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionContainerDependencyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionContainerDependency)(nil)).Elem() +} + +func (o TaskDefinitionContainerDependencyOutput) ToTaskDefinitionContainerDependencyOutput() TaskDefinitionContainerDependencyOutput { + return o +} + +func (o TaskDefinitionContainerDependencyOutput) ToTaskDefinitionContainerDependencyOutputWithContext(ctx context.Context) TaskDefinitionContainerDependencyOutput { + return o +} + +func (o TaskDefinitionContainerDependencyOutput) Condition() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDependency) *string { return v.Condition }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionContainerDependencyOutput) ContainerName() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionContainerDependency) *string { return v.ContainerName }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionContainerDependencyArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionContainerDependencyArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionContainerDependency)(nil)).Elem() +} + +func (o TaskDefinitionContainerDependencyArrayOutput) ToTaskDefinitionContainerDependencyArrayOutput() TaskDefinitionContainerDependencyArrayOutput { + return o +} + +func (o TaskDefinitionContainerDependencyArrayOutput) ToTaskDefinitionContainerDependencyArrayOutputWithContext(ctx context.Context) TaskDefinitionContainerDependencyArrayOutput { + return o +} + +func (o TaskDefinitionContainerDependencyArrayOutput) Index(i pulumi.IntInput) TaskDefinitionContainerDependencyOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionContainerDependency { + return vs[0].([]TaskDefinitionContainerDependency)[vs[1].(int)] + }).(TaskDefinitionContainerDependencyOutput) +} + +type TaskDefinitionDevice struct { + ContainerPath *string `pulumi:"containerPath"` + HostPath *string `pulumi:"hostPath"` + Permissions []string `pulumi:"permissions"` +} + +// TaskDefinitionDeviceInput is an input type that accepts TaskDefinitionDeviceArgs and TaskDefinitionDeviceOutput values. +// You can construct a concrete instance of `TaskDefinitionDeviceInput` via: +// +// TaskDefinitionDeviceArgs{...} +type TaskDefinitionDeviceInput interface { + pulumi.Input + + ToTaskDefinitionDeviceOutput() TaskDefinitionDeviceOutput + ToTaskDefinitionDeviceOutputWithContext(context.Context) TaskDefinitionDeviceOutput +} + +type TaskDefinitionDeviceArgs struct { + ContainerPath pulumi.StringPtrInput `pulumi:"containerPath"` + HostPath pulumi.StringPtrInput `pulumi:"hostPath"` + Permissions pulumi.StringArrayInput `pulumi:"permissions"` +} + +func (TaskDefinitionDeviceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionDevice)(nil)).Elem() +} + +func (i TaskDefinitionDeviceArgs) ToTaskDefinitionDeviceOutput() TaskDefinitionDeviceOutput { + return i.ToTaskDefinitionDeviceOutputWithContext(context.Background()) +} + +func (i TaskDefinitionDeviceArgs) ToTaskDefinitionDeviceOutputWithContext(ctx context.Context) TaskDefinitionDeviceOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionDeviceOutput) +} + +// TaskDefinitionDeviceArrayInput is an input type that accepts TaskDefinitionDeviceArray and TaskDefinitionDeviceArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionDeviceArrayInput` via: +// +// TaskDefinitionDeviceArray{ TaskDefinitionDeviceArgs{...} } +type TaskDefinitionDeviceArrayInput interface { + pulumi.Input + + ToTaskDefinitionDeviceArrayOutput() TaskDefinitionDeviceArrayOutput + ToTaskDefinitionDeviceArrayOutputWithContext(context.Context) TaskDefinitionDeviceArrayOutput +} + +type TaskDefinitionDeviceArray []TaskDefinitionDeviceInput + +func (TaskDefinitionDeviceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionDevice)(nil)).Elem() +} + +func (i TaskDefinitionDeviceArray) ToTaskDefinitionDeviceArrayOutput() TaskDefinitionDeviceArrayOutput { + return i.ToTaskDefinitionDeviceArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionDeviceArray) ToTaskDefinitionDeviceArrayOutputWithContext(ctx context.Context) TaskDefinitionDeviceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionDeviceArrayOutput) +} + +type TaskDefinitionDeviceOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionDeviceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionDevice)(nil)).Elem() +} + +func (o TaskDefinitionDeviceOutput) ToTaskDefinitionDeviceOutput() TaskDefinitionDeviceOutput { + return o +} + +func (o TaskDefinitionDeviceOutput) ToTaskDefinitionDeviceOutputWithContext(ctx context.Context) TaskDefinitionDeviceOutput { + return o +} + +func (o TaskDefinitionDeviceOutput) ContainerPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionDevice) *string { return v.ContainerPath }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionDeviceOutput) HostPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionDevice) *string { return v.HostPath }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionDeviceOutput) Permissions() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionDevice) []string { return v.Permissions }).(pulumi.StringArrayOutput) +} + +type TaskDefinitionDeviceArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionDeviceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionDevice)(nil)).Elem() +} + +func (o TaskDefinitionDeviceArrayOutput) ToTaskDefinitionDeviceArrayOutput() TaskDefinitionDeviceArrayOutput { + return o +} + +func (o TaskDefinitionDeviceArrayOutput) ToTaskDefinitionDeviceArrayOutputWithContext(ctx context.Context) TaskDefinitionDeviceArrayOutput { + return o +} + +func (o TaskDefinitionDeviceArrayOutput) Index(i pulumi.IntInput) TaskDefinitionDeviceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionDevice { + return vs[0].([]TaskDefinitionDevice)[vs[1].(int)] + }).(TaskDefinitionDeviceOutput) +} + +type TaskDefinitionEnvironmentFile struct { + Type *string `pulumi:"type"` + Value *string `pulumi:"value"` +} + +// TaskDefinitionEnvironmentFileInput is an input type that accepts TaskDefinitionEnvironmentFileArgs and TaskDefinitionEnvironmentFileOutput values. +// You can construct a concrete instance of `TaskDefinitionEnvironmentFileInput` via: +// +// TaskDefinitionEnvironmentFileArgs{...} +type TaskDefinitionEnvironmentFileInput interface { + pulumi.Input + + ToTaskDefinitionEnvironmentFileOutput() TaskDefinitionEnvironmentFileOutput + ToTaskDefinitionEnvironmentFileOutputWithContext(context.Context) TaskDefinitionEnvironmentFileOutput +} + +type TaskDefinitionEnvironmentFileArgs struct { + Type pulumi.StringPtrInput `pulumi:"type"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (TaskDefinitionEnvironmentFileArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionEnvironmentFile)(nil)).Elem() +} + +func (i TaskDefinitionEnvironmentFileArgs) ToTaskDefinitionEnvironmentFileOutput() TaskDefinitionEnvironmentFileOutput { + return i.ToTaskDefinitionEnvironmentFileOutputWithContext(context.Background()) +} + +func (i TaskDefinitionEnvironmentFileArgs) ToTaskDefinitionEnvironmentFileOutputWithContext(ctx context.Context) TaskDefinitionEnvironmentFileOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionEnvironmentFileOutput) +} + +// TaskDefinitionEnvironmentFileArrayInput is an input type that accepts TaskDefinitionEnvironmentFileArray and TaskDefinitionEnvironmentFileArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionEnvironmentFileArrayInput` via: +// +// TaskDefinitionEnvironmentFileArray{ TaskDefinitionEnvironmentFileArgs{...} } +type TaskDefinitionEnvironmentFileArrayInput interface { + pulumi.Input + + ToTaskDefinitionEnvironmentFileArrayOutput() TaskDefinitionEnvironmentFileArrayOutput + ToTaskDefinitionEnvironmentFileArrayOutputWithContext(context.Context) TaskDefinitionEnvironmentFileArrayOutput +} + +type TaskDefinitionEnvironmentFileArray []TaskDefinitionEnvironmentFileInput + +func (TaskDefinitionEnvironmentFileArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionEnvironmentFile)(nil)).Elem() +} + +func (i TaskDefinitionEnvironmentFileArray) ToTaskDefinitionEnvironmentFileArrayOutput() TaskDefinitionEnvironmentFileArrayOutput { + return i.ToTaskDefinitionEnvironmentFileArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionEnvironmentFileArray) ToTaskDefinitionEnvironmentFileArrayOutputWithContext(ctx context.Context) TaskDefinitionEnvironmentFileArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionEnvironmentFileArrayOutput) +} + +type TaskDefinitionEnvironmentFileOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionEnvironmentFileOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionEnvironmentFile)(nil)).Elem() +} + +func (o TaskDefinitionEnvironmentFileOutput) ToTaskDefinitionEnvironmentFileOutput() TaskDefinitionEnvironmentFileOutput { + return o +} + +func (o TaskDefinitionEnvironmentFileOutput) ToTaskDefinitionEnvironmentFileOutputWithContext(ctx context.Context) TaskDefinitionEnvironmentFileOutput { + return o +} + +func (o TaskDefinitionEnvironmentFileOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionEnvironmentFile) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionEnvironmentFileOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionEnvironmentFile) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionEnvironmentFileArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionEnvironmentFileArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionEnvironmentFile)(nil)).Elem() +} + +func (o TaskDefinitionEnvironmentFileArrayOutput) ToTaskDefinitionEnvironmentFileArrayOutput() TaskDefinitionEnvironmentFileArrayOutput { + return o +} + +func (o TaskDefinitionEnvironmentFileArrayOutput) ToTaskDefinitionEnvironmentFileArrayOutputWithContext(ctx context.Context) TaskDefinitionEnvironmentFileArrayOutput { + return o +} + +func (o TaskDefinitionEnvironmentFileArrayOutput) Index(i pulumi.IntInput) TaskDefinitionEnvironmentFileOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionEnvironmentFile { + return vs[0].([]TaskDefinitionEnvironmentFile)[vs[1].(int)] + }).(TaskDefinitionEnvironmentFileOutput) +} + +type TaskDefinitionFirelensConfiguration struct { + Options interface{} `pulumi:"options"` + Type *string `pulumi:"type"` +} + +// TaskDefinitionFirelensConfigurationInput is an input type that accepts TaskDefinitionFirelensConfigurationArgs and TaskDefinitionFirelensConfigurationOutput values. +// You can construct a concrete instance of `TaskDefinitionFirelensConfigurationInput` via: +// +// TaskDefinitionFirelensConfigurationArgs{...} +type TaskDefinitionFirelensConfigurationInput interface { + pulumi.Input + + ToTaskDefinitionFirelensConfigurationOutput() TaskDefinitionFirelensConfigurationOutput + ToTaskDefinitionFirelensConfigurationOutputWithContext(context.Context) TaskDefinitionFirelensConfigurationOutput +} + +type TaskDefinitionFirelensConfigurationArgs struct { + Options pulumi.Input `pulumi:"options"` + Type pulumi.StringPtrInput `pulumi:"type"` +} + +func (TaskDefinitionFirelensConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionFirelensConfiguration)(nil)).Elem() +} + +func (i TaskDefinitionFirelensConfigurationArgs) ToTaskDefinitionFirelensConfigurationOutput() TaskDefinitionFirelensConfigurationOutput { + return i.ToTaskDefinitionFirelensConfigurationOutputWithContext(context.Background()) +} + +func (i TaskDefinitionFirelensConfigurationArgs) ToTaskDefinitionFirelensConfigurationOutputWithContext(ctx context.Context) TaskDefinitionFirelensConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionFirelensConfigurationOutput) +} + +func (i TaskDefinitionFirelensConfigurationArgs) ToTaskDefinitionFirelensConfigurationPtrOutput() TaskDefinitionFirelensConfigurationPtrOutput { + return i.ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionFirelensConfigurationArgs) ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionFirelensConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionFirelensConfigurationOutput).ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(ctx) +} + +// TaskDefinitionFirelensConfigurationPtrInput is an input type that accepts TaskDefinitionFirelensConfigurationArgs, TaskDefinitionFirelensConfigurationPtr and TaskDefinitionFirelensConfigurationPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionFirelensConfigurationPtrInput` via: +// +// TaskDefinitionFirelensConfigurationArgs{...} +// +// or: +// +// nil +type TaskDefinitionFirelensConfigurationPtrInput interface { + pulumi.Input + + ToTaskDefinitionFirelensConfigurationPtrOutput() TaskDefinitionFirelensConfigurationPtrOutput + ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(context.Context) TaskDefinitionFirelensConfigurationPtrOutput +} + +type taskDefinitionFirelensConfigurationPtrType TaskDefinitionFirelensConfigurationArgs + +func TaskDefinitionFirelensConfigurationPtr(v *TaskDefinitionFirelensConfigurationArgs) TaskDefinitionFirelensConfigurationPtrInput { + return (*taskDefinitionFirelensConfigurationPtrType)(v) +} + +func (*taskDefinitionFirelensConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionFirelensConfiguration)(nil)).Elem() +} + +func (i *taskDefinitionFirelensConfigurationPtrType) ToTaskDefinitionFirelensConfigurationPtrOutput() TaskDefinitionFirelensConfigurationPtrOutput { + return i.ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionFirelensConfigurationPtrType) ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionFirelensConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionFirelensConfigurationPtrOutput) +} + +type TaskDefinitionFirelensConfigurationOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionFirelensConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionFirelensConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionFirelensConfigurationOutput) ToTaskDefinitionFirelensConfigurationOutput() TaskDefinitionFirelensConfigurationOutput { + return o +} + +func (o TaskDefinitionFirelensConfigurationOutput) ToTaskDefinitionFirelensConfigurationOutputWithContext(ctx context.Context) TaskDefinitionFirelensConfigurationOutput { + return o +} + +func (o TaskDefinitionFirelensConfigurationOutput) ToTaskDefinitionFirelensConfigurationPtrOutput() TaskDefinitionFirelensConfigurationPtrOutput { + return o.ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionFirelensConfigurationOutput) ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionFirelensConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionFirelensConfiguration) *TaskDefinitionFirelensConfiguration { + return &v + }).(TaskDefinitionFirelensConfigurationPtrOutput) +} + +func (o TaskDefinitionFirelensConfigurationOutput) Options() pulumi.AnyOutput { + return o.ApplyT(func(v TaskDefinitionFirelensConfiguration) interface{} { return v.Options }).(pulumi.AnyOutput) +} + +func (o TaskDefinitionFirelensConfigurationOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionFirelensConfiguration) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionFirelensConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionFirelensConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionFirelensConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionFirelensConfigurationPtrOutput) ToTaskDefinitionFirelensConfigurationPtrOutput() TaskDefinitionFirelensConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionFirelensConfigurationPtrOutput) ToTaskDefinitionFirelensConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionFirelensConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionFirelensConfigurationPtrOutput) Elem() TaskDefinitionFirelensConfigurationOutput { + return o.ApplyT(func(v *TaskDefinitionFirelensConfiguration) TaskDefinitionFirelensConfiguration { + if v != nil { + return *v + } + var ret TaskDefinitionFirelensConfiguration + return ret + }).(TaskDefinitionFirelensConfigurationOutput) +} + +func (o TaskDefinitionFirelensConfigurationPtrOutput) Options() pulumi.AnyOutput { + return o.ApplyT(func(v *TaskDefinitionFirelensConfiguration) interface{} { + if v == nil { + return nil + } + return v.Options + }).(pulumi.AnyOutput) +} + +func (o TaskDefinitionFirelensConfigurationPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionFirelensConfiguration) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + +// The health check command and associated configuration parameters for the container. +type TaskDefinitionHealthCheck struct { + // A string array representing the command that the container runs to determine if it is healthy. + Command []string `pulumi:"command"` + // The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds. + Interval *int `pulumi:"interval"` + // The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is three retries. + Retries *int `pulumi:"retries"` + // The optional grace period within which to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You may specify between 0 and 300 seconds. The startPeriod is disabled by default. + StartPeriod *int `pulumi:"startPeriod"` + // The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5 seconds. + Timeout *int `pulumi:"timeout"` +} + +// TaskDefinitionHealthCheckInput is an input type that accepts TaskDefinitionHealthCheckArgs and TaskDefinitionHealthCheckOutput values. +// You can construct a concrete instance of `TaskDefinitionHealthCheckInput` via: +// +// TaskDefinitionHealthCheckArgs{...} +type TaskDefinitionHealthCheckInput interface { + pulumi.Input + + ToTaskDefinitionHealthCheckOutput() TaskDefinitionHealthCheckOutput + ToTaskDefinitionHealthCheckOutputWithContext(context.Context) TaskDefinitionHealthCheckOutput +} + +// The health check command and associated configuration parameters for the container. +type TaskDefinitionHealthCheckArgs struct { + // A string array representing the command that the container runs to determine if it is healthy. + Command pulumi.StringArrayInput `pulumi:"command"` + // The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds. + Interval pulumi.IntPtrInput `pulumi:"interval"` + // The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is three retries. + Retries pulumi.IntPtrInput `pulumi:"retries"` + // The optional grace period within which to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You may specify between 0 and 300 seconds. The startPeriod is disabled by default. + StartPeriod pulumi.IntPtrInput `pulumi:"startPeriod"` + // The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5 seconds. + Timeout pulumi.IntPtrInput `pulumi:"timeout"` +} + +func (TaskDefinitionHealthCheckArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionHealthCheck)(nil)).Elem() +} + +func (i TaskDefinitionHealthCheckArgs) ToTaskDefinitionHealthCheckOutput() TaskDefinitionHealthCheckOutput { + return i.ToTaskDefinitionHealthCheckOutputWithContext(context.Background()) +} + +func (i TaskDefinitionHealthCheckArgs) ToTaskDefinitionHealthCheckOutputWithContext(ctx context.Context) TaskDefinitionHealthCheckOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionHealthCheckOutput) +} + +func (i TaskDefinitionHealthCheckArgs) ToTaskDefinitionHealthCheckPtrOutput() TaskDefinitionHealthCheckPtrOutput { + return i.ToTaskDefinitionHealthCheckPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionHealthCheckArgs) ToTaskDefinitionHealthCheckPtrOutputWithContext(ctx context.Context) TaskDefinitionHealthCheckPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionHealthCheckOutput).ToTaskDefinitionHealthCheckPtrOutputWithContext(ctx) +} + +// TaskDefinitionHealthCheckPtrInput is an input type that accepts TaskDefinitionHealthCheckArgs, TaskDefinitionHealthCheckPtr and TaskDefinitionHealthCheckPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionHealthCheckPtrInput` via: +// +// TaskDefinitionHealthCheckArgs{...} +// +// or: +// +// nil +type TaskDefinitionHealthCheckPtrInput interface { + pulumi.Input + + ToTaskDefinitionHealthCheckPtrOutput() TaskDefinitionHealthCheckPtrOutput + ToTaskDefinitionHealthCheckPtrOutputWithContext(context.Context) TaskDefinitionHealthCheckPtrOutput +} + +type taskDefinitionHealthCheckPtrType TaskDefinitionHealthCheckArgs + +func TaskDefinitionHealthCheckPtr(v *TaskDefinitionHealthCheckArgs) TaskDefinitionHealthCheckPtrInput { + return (*taskDefinitionHealthCheckPtrType)(v) +} + +func (*taskDefinitionHealthCheckPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionHealthCheck)(nil)).Elem() +} + +func (i *taskDefinitionHealthCheckPtrType) ToTaskDefinitionHealthCheckPtrOutput() TaskDefinitionHealthCheckPtrOutput { + return i.ToTaskDefinitionHealthCheckPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionHealthCheckPtrType) ToTaskDefinitionHealthCheckPtrOutputWithContext(ctx context.Context) TaskDefinitionHealthCheckPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionHealthCheckPtrOutput) +} + +// The health check command and associated configuration parameters for the container. +type TaskDefinitionHealthCheckOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionHealthCheckOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionHealthCheck)(nil)).Elem() +} + +func (o TaskDefinitionHealthCheckOutput) ToTaskDefinitionHealthCheckOutput() TaskDefinitionHealthCheckOutput { + return o +} + +func (o TaskDefinitionHealthCheckOutput) ToTaskDefinitionHealthCheckOutputWithContext(ctx context.Context) TaskDefinitionHealthCheckOutput { + return o +} + +func (o TaskDefinitionHealthCheckOutput) ToTaskDefinitionHealthCheckPtrOutput() TaskDefinitionHealthCheckPtrOutput { + return o.ToTaskDefinitionHealthCheckPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionHealthCheckOutput) ToTaskDefinitionHealthCheckPtrOutputWithContext(ctx context.Context) TaskDefinitionHealthCheckPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionHealthCheck) *TaskDefinitionHealthCheck { + return &v + }).(TaskDefinitionHealthCheckPtrOutput) +} + +// A string array representing the command that the container runs to determine if it is healthy. +func (o TaskDefinitionHealthCheckOutput) Command() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionHealthCheck) []string { return v.Command }).(pulumi.StringArrayOutput) +} + +// The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds. +func (o TaskDefinitionHealthCheckOutput) Interval() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionHealthCheck) *int { return v.Interval }).(pulumi.IntPtrOutput) +} + +// The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is three retries. +func (o TaskDefinitionHealthCheckOutput) Retries() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionHealthCheck) *int { return v.Retries }).(pulumi.IntPtrOutput) +} + +// The optional grace period within which to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You may specify between 0 and 300 seconds. The startPeriod is disabled by default. +func (o TaskDefinitionHealthCheckOutput) StartPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionHealthCheck) *int { return v.StartPeriod }).(pulumi.IntPtrOutput) +} + +// The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5 seconds. +func (o TaskDefinitionHealthCheckOutput) Timeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionHealthCheck) *int { return v.Timeout }).(pulumi.IntPtrOutput) +} + +type TaskDefinitionHealthCheckPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionHealthCheckPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionHealthCheck)(nil)).Elem() +} + +func (o TaskDefinitionHealthCheckPtrOutput) ToTaskDefinitionHealthCheckPtrOutput() TaskDefinitionHealthCheckPtrOutput { + return o +} + +func (o TaskDefinitionHealthCheckPtrOutput) ToTaskDefinitionHealthCheckPtrOutputWithContext(ctx context.Context) TaskDefinitionHealthCheckPtrOutput { + return o +} + +func (o TaskDefinitionHealthCheckPtrOutput) Elem() TaskDefinitionHealthCheckOutput { + return o.ApplyT(func(v *TaskDefinitionHealthCheck) TaskDefinitionHealthCheck { + if v != nil { + return *v + } + var ret TaskDefinitionHealthCheck + return ret + }).(TaskDefinitionHealthCheckOutput) +} + +// A string array representing the command that the container runs to determine if it is healthy. +func (o TaskDefinitionHealthCheckPtrOutput) Command() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionHealthCheck) []string { + if v == nil { + return nil + } + return v.Command + }).(pulumi.StringArrayOutput) +} + +// The time period in seconds between each health check execution. You may specify between 5 and 300 seconds. The default value is 30 seconds. +func (o TaskDefinitionHealthCheckPtrOutput) Interval() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionHealthCheck) *int { + if v == nil { + return nil + } + return v.Interval + }).(pulumi.IntPtrOutput) +} + +// The number of times to retry a failed health check before the container is considered unhealthy. You may specify between 1 and 10 retries. The default value is three retries. +func (o TaskDefinitionHealthCheckPtrOutput) Retries() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionHealthCheck) *int { + if v == nil { + return nil + } + return v.Retries + }).(pulumi.IntPtrOutput) +} + +// The optional grace period within which to provide containers time to bootstrap before failed health checks count towards the maximum number of retries. You may specify between 0 and 300 seconds. The startPeriod is disabled by default. +func (o TaskDefinitionHealthCheckPtrOutput) StartPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionHealthCheck) *int { + if v == nil { + return nil + } + return v.StartPeriod + }).(pulumi.IntPtrOutput) +} + +// The time period in seconds to wait for a health check to succeed before it is considered a failure. You may specify between 2 and 60 seconds. The default value is 5 seconds. +func (o TaskDefinitionHealthCheckPtrOutput) Timeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionHealthCheck) *int { + if v == nil { + return nil + } + return v.Timeout + }).(pulumi.IntPtrOutput) +} + +type TaskDefinitionHostEntry struct { + Hostname *string `pulumi:"hostname"` + IpAddress *string `pulumi:"ipAddress"` +} + +// TaskDefinitionHostEntryInput is an input type that accepts TaskDefinitionHostEntryArgs and TaskDefinitionHostEntryOutput values. +// You can construct a concrete instance of `TaskDefinitionHostEntryInput` via: +// +// TaskDefinitionHostEntryArgs{...} +type TaskDefinitionHostEntryInput interface { + pulumi.Input + + ToTaskDefinitionHostEntryOutput() TaskDefinitionHostEntryOutput + ToTaskDefinitionHostEntryOutputWithContext(context.Context) TaskDefinitionHostEntryOutput +} + +type TaskDefinitionHostEntryArgs struct { + Hostname pulumi.StringPtrInput `pulumi:"hostname"` + IpAddress pulumi.StringPtrInput `pulumi:"ipAddress"` +} + +func (TaskDefinitionHostEntryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionHostEntry)(nil)).Elem() +} + +func (i TaskDefinitionHostEntryArgs) ToTaskDefinitionHostEntryOutput() TaskDefinitionHostEntryOutput { + return i.ToTaskDefinitionHostEntryOutputWithContext(context.Background()) +} + +func (i TaskDefinitionHostEntryArgs) ToTaskDefinitionHostEntryOutputWithContext(ctx context.Context) TaskDefinitionHostEntryOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionHostEntryOutput) +} + +// TaskDefinitionHostEntryArrayInput is an input type that accepts TaskDefinitionHostEntryArray and TaskDefinitionHostEntryArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionHostEntryArrayInput` via: +// +// TaskDefinitionHostEntryArray{ TaskDefinitionHostEntryArgs{...} } +type TaskDefinitionHostEntryArrayInput interface { + pulumi.Input + + ToTaskDefinitionHostEntryArrayOutput() TaskDefinitionHostEntryArrayOutput + ToTaskDefinitionHostEntryArrayOutputWithContext(context.Context) TaskDefinitionHostEntryArrayOutput +} + +type TaskDefinitionHostEntryArray []TaskDefinitionHostEntryInput + +func (TaskDefinitionHostEntryArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionHostEntry)(nil)).Elem() +} + +func (i TaskDefinitionHostEntryArray) ToTaskDefinitionHostEntryArrayOutput() TaskDefinitionHostEntryArrayOutput { + return i.ToTaskDefinitionHostEntryArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionHostEntryArray) ToTaskDefinitionHostEntryArrayOutputWithContext(ctx context.Context) TaskDefinitionHostEntryArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionHostEntryArrayOutput) +} + +type TaskDefinitionHostEntryOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionHostEntryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionHostEntry)(nil)).Elem() +} + +func (o TaskDefinitionHostEntryOutput) ToTaskDefinitionHostEntryOutput() TaskDefinitionHostEntryOutput { + return o +} + +func (o TaskDefinitionHostEntryOutput) ToTaskDefinitionHostEntryOutputWithContext(ctx context.Context) TaskDefinitionHostEntryOutput { + return o +} + +func (o TaskDefinitionHostEntryOutput) Hostname() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionHostEntry) *string { return v.Hostname }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionHostEntryOutput) IpAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionHostEntry) *string { return v.IpAddress }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionHostEntryArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionHostEntryArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionHostEntry)(nil)).Elem() +} + +func (o TaskDefinitionHostEntryArrayOutput) ToTaskDefinitionHostEntryArrayOutput() TaskDefinitionHostEntryArrayOutput { + return o +} + +func (o TaskDefinitionHostEntryArrayOutput) ToTaskDefinitionHostEntryArrayOutputWithContext(ctx context.Context) TaskDefinitionHostEntryArrayOutput { + return o +} + +func (o TaskDefinitionHostEntryArrayOutput) Index(i pulumi.IntInput) TaskDefinitionHostEntryOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionHostEntry { + return vs[0].([]TaskDefinitionHostEntry)[vs[1].(int)] + }).(TaskDefinitionHostEntryOutput) +} + +type TaskDefinitionKernelCapabilities struct { + Add []string `pulumi:"add"` + Drop []string `pulumi:"drop"` +} + +// TaskDefinitionKernelCapabilitiesInput is an input type that accepts TaskDefinitionKernelCapabilitiesArgs and TaskDefinitionKernelCapabilitiesOutput values. +// You can construct a concrete instance of `TaskDefinitionKernelCapabilitiesInput` via: +// +// TaskDefinitionKernelCapabilitiesArgs{...} +type TaskDefinitionKernelCapabilitiesInput interface { + pulumi.Input + + ToTaskDefinitionKernelCapabilitiesOutput() TaskDefinitionKernelCapabilitiesOutput + ToTaskDefinitionKernelCapabilitiesOutputWithContext(context.Context) TaskDefinitionKernelCapabilitiesOutput +} + +type TaskDefinitionKernelCapabilitiesArgs struct { + Add pulumi.StringArrayInput `pulumi:"add"` + Drop pulumi.StringArrayInput `pulumi:"drop"` +} + +func (TaskDefinitionKernelCapabilitiesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionKernelCapabilities)(nil)).Elem() +} + +func (i TaskDefinitionKernelCapabilitiesArgs) ToTaskDefinitionKernelCapabilitiesOutput() TaskDefinitionKernelCapabilitiesOutput { + return i.ToTaskDefinitionKernelCapabilitiesOutputWithContext(context.Background()) +} + +func (i TaskDefinitionKernelCapabilitiesArgs) ToTaskDefinitionKernelCapabilitiesOutputWithContext(ctx context.Context) TaskDefinitionKernelCapabilitiesOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionKernelCapabilitiesOutput) +} + +func (i TaskDefinitionKernelCapabilitiesArgs) ToTaskDefinitionKernelCapabilitiesPtrOutput() TaskDefinitionKernelCapabilitiesPtrOutput { + return i.ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionKernelCapabilitiesArgs) ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(ctx context.Context) TaskDefinitionKernelCapabilitiesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionKernelCapabilitiesOutput).ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(ctx) +} + +// TaskDefinitionKernelCapabilitiesPtrInput is an input type that accepts TaskDefinitionKernelCapabilitiesArgs, TaskDefinitionKernelCapabilitiesPtr and TaskDefinitionKernelCapabilitiesPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionKernelCapabilitiesPtrInput` via: +// +// TaskDefinitionKernelCapabilitiesArgs{...} +// +// or: +// +// nil +type TaskDefinitionKernelCapabilitiesPtrInput interface { + pulumi.Input + + ToTaskDefinitionKernelCapabilitiesPtrOutput() TaskDefinitionKernelCapabilitiesPtrOutput + ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(context.Context) TaskDefinitionKernelCapabilitiesPtrOutput +} + +type taskDefinitionKernelCapabilitiesPtrType TaskDefinitionKernelCapabilitiesArgs + +func TaskDefinitionKernelCapabilitiesPtr(v *TaskDefinitionKernelCapabilitiesArgs) TaskDefinitionKernelCapabilitiesPtrInput { + return (*taskDefinitionKernelCapabilitiesPtrType)(v) +} + +func (*taskDefinitionKernelCapabilitiesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionKernelCapabilities)(nil)).Elem() +} + +func (i *taskDefinitionKernelCapabilitiesPtrType) ToTaskDefinitionKernelCapabilitiesPtrOutput() TaskDefinitionKernelCapabilitiesPtrOutput { + return i.ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionKernelCapabilitiesPtrType) ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(ctx context.Context) TaskDefinitionKernelCapabilitiesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionKernelCapabilitiesPtrOutput) +} + +type TaskDefinitionKernelCapabilitiesOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionKernelCapabilitiesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionKernelCapabilities)(nil)).Elem() +} + +func (o TaskDefinitionKernelCapabilitiesOutput) ToTaskDefinitionKernelCapabilitiesOutput() TaskDefinitionKernelCapabilitiesOutput { + return o +} + +func (o TaskDefinitionKernelCapabilitiesOutput) ToTaskDefinitionKernelCapabilitiesOutputWithContext(ctx context.Context) TaskDefinitionKernelCapabilitiesOutput { + return o +} + +func (o TaskDefinitionKernelCapabilitiesOutput) ToTaskDefinitionKernelCapabilitiesPtrOutput() TaskDefinitionKernelCapabilitiesPtrOutput { + return o.ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionKernelCapabilitiesOutput) ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(ctx context.Context) TaskDefinitionKernelCapabilitiesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionKernelCapabilities) *TaskDefinitionKernelCapabilities { + return &v + }).(TaskDefinitionKernelCapabilitiesPtrOutput) +} + +func (o TaskDefinitionKernelCapabilitiesOutput) Add() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionKernelCapabilities) []string { return v.Add }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionKernelCapabilitiesOutput) Drop() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionKernelCapabilities) []string { return v.Drop }).(pulumi.StringArrayOutput) +} + +type TaskDefinitionKernelCapabilitiesPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionKernelCapabilitiesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionKernelCapabilities)(nil)).Elem() +} + +func (o TaskDefinitionKernelCapabilitiesPtrOutput) ToTaskDefinitionKernelCapabilitiesPtrOutput() TaskDefinitionKernelCapabilitiesPtrOutput { + return o +} + +func (o TaskDefinitionKernelCapabilitiesPtrOutput) ToTaskDefinitionKernelCapabilitiesPtrOutputWithContext(ctx context.Context) TaskDefinitionKernelCapabilitiesPtrOutput { + return o +} + +func (o TaskDefinitionKernelCapabilitiesPtrOutput) Elem() TaskDefinitionKernelCapabilitiesOutput { + return o.ApplyT(func(v *TaskDefinitionKernelCapabilities) TaskDefinitionKernelCapabilities { + if v != nil { + return *v + } + var ret TaskDefinitionKernelCapabilities + return ret + }).(TaskDefinitionKernelCapabilitiesOutput) +} + +func (o TaskDefinitionKernelCapabilitiesPtrOutput) Add() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionKernelCapabilities) []string { + if v == nil { + return nil + } + return v.Add + }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionKernelCapabilitiesPtrOutput) Drop() pulumi.StringArrayOutput { + return o.ApplyT(func(v *TaskDefinitionKernelCapabilities) []string { + if v == nil { + return nil + } + return v.Drop + }).(pulumi.StringArrayOutput) +} + +type TaskDefinitionKeyValuePair struct { + Name *string `pulumi:"name"` + Value *string `pulumi:"value"` +} + +// TaskDefinitionKeyValuePairInput is an input type that accepts TaskDefinitionKeyValuePairArgs and TaskDefinitionKeyValuePairOutput values. +// You can construct a concrete instance of `TaskDefinitionKeyValuePairInput` via: +// +// TaskDefinitionKeyValuePairArgs{...} +type TaskDefinitionKeyValuePairInput interface { + pulumi.Input + + ToTaskDefinitionKeyValuePairOutput() TaskDefinitionKeyValuePairOutput + ToTaskDefinitionKeyValuePairOutputWithContext(context.Context) TaskDefinitionKeyValuePairOutput +} + +type TaskDefinitionKeyValuePairArgs struct { + Name pulumi.StringPtrInput `pulumi:"name"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (TaskDefinitionKeyValuePairArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionKeyValuePair)(nil)).Elem() +} + +func (i TaskDefinitionKeyValuePairArgs) ToTaskDefinitionKeyValuePairOutput() TaskDefinitionKeyValuePairOutput { + return i.ToTaskDefinitionKeyValuePairOutputWithContext(context.Background()) +} + +func (i TaskDefinitionKeyValuePairArgs) ToTaskDefinitionKeyValuePairOutputWithContext(ctx context.Context) TaskDefinitionKeyValuePairOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionKeyValuePairOutput) +} + +// TaskDefinitionKeyValuePairArrayInput is an input type that accepts TaskDefinitionKeyValuePairArray and TaskDefinitionKeyValuePairArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionKeyValuePairArrayInput` via: +// +// TaskDefinitionKeyValuePairArray{ TaskDefinitionKeyValuePairArgs{...} } +type TaskDefinitionKeyValuePairArrayInput interface { + pulumi.Input + + ToTaskDefinitionKeyValuePairArrayOutput() TaskDefinitionKeyValuePairArrayOutput + ToTaskDefinitionKeyValuePairArrayOutputWithContext(context.Context) TaskDefinitionKeyValuePairArrayOutput +} + +type TaskDefinitionKeyValuePairArray []TaskDefinitionKeyValuePairInput + +func (TaskDefinitionKeyValuePairArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionKeyValuePair)(nil)).Elem() +} + +func (i TaskDefinitionKeyValuePairArray) ToTaskDefinitionKeyValuePairArrayOutput() TaskDefinitionKeyValuePairArrayOutput { + return i.ToTaskDefinitionKeyValuePairArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionKeyValuePairArray) ToTaskDefinitionKeyValuePairArrayOutputWithContext(ctx context.Context) TaskDefinitionKeyValuePairArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionKeyValuePairArrayOutput) +} + +type TaskDefinitionKeyValuePairOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionKeyValuePairOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionKeyValuePair)(nil)).Elem() +} + +func (o TaskDefinitionKeyValuePairOutput) ToTaskDefinitionKeyValuePairOutput() TaskDefinitionKeyValuePairOutput { + return o +} + +func (o TaskDefinitionKeyValuePairOutput) ToTaskDefinitionKeyValuePairOutputWithContext(ctx context.Context) TaskDefinitionKeyValuePairOutput { + return o +} + +func (o TaskDefinitionKeyValuePairOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionKeyValuePair) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionKeyValuePairOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionKeyValuePair) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionKeyValuePairArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionKeyValuePairArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionKeyValuePair)(nil)).Elem() +} + +func (o TaskDefinitionKeyValuePairArrayOutput) ToTaskDefinitionKeyValuePairArrayOutput() TaskDefinitionKeyValuePairArrayOutput { + return o +} + +func (o TaskDefinitionKeyValuePairArrayOutput) ToTaskDefinitionKeyValuePairArrayOutputWithContext(ctx context.Context) TaskDefinitionKeyValuePairArrayOutput { + return o +} + +func (o TaskDefinitionKeyValuePairArrayOutput) Index(i pulumi.IntInput) TaskDefinitionKeyValuePairOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionKeyValuePair { + return vs[0].([]TaskDefinitionKeyValuePair)[vs[1].(int)] + }).(TaskDefinitionKeyValuePairOutput) +} + +type TaskDefinitionLinuxParameters struct { + Capabilities *TaskDefinitionKernelCapabilities `pulumi:"capabilities"` + Devices []TaskDefinitionDevice `pulumi:"devices"` + InitProcessEnabled *bool `pulumi:"initProcessEnabled"` + MaxSwap *int `pulumi:"maxSwap"` + SharedMemorySize *int `pulumi:"sharedMemorySize"` + Swappiness *int `pulumi:"swappiness"` + Tmpfs []TaskDefinitionTmpfs `pulumi:"tmpfs"` +} + +// TaskDefinitionLinuxParametersInput is an input type that accepts TaskDefinitionLinuxParametersArgs and TaskDefinitionLinuxParametersOutput values. +// You can construct a concrete instance of `TaskDefinitionLinuxParametersInput` via: +// +// TaskDefinitionLinuxParametersArgs{...} +type TaskDefinitionLinuxParametersInput interface { + pulumi.Input + + ToTaskDefinitionLinuxParametersOutput() TaskDefinitionLinuxParametersOutput + ToTaskDefinitionLinuxParametersOutputWithContext(context.Context) TaskDefinitionLinuxParametersOutput +} + +type TaskDefinitionLinuxParametersArgs struct { + Capabilities TaskDefinitionKernelCapabilitiesPtrInput `pulumi:"capabilities"` + Devices TaskDefinitionDeviceArrayInput `pulumi:"devices"` + InitProcessEnabled pulumi.BoolPtrInput `pulumi:"initProcessEnabled"` + MaxSwap pulumi.IntPtrInput `pulumi:"maxSwap"` + SharedMemorySize pulumi.IntPtrInput `pulumi:"sharedMemorySize"` + Swappiness pulumi.IntPtrInput `pulumi:"swappiness"` + Tmpfs TaskDefinitionTmpfsArrayInput `pulumi:"tmpfs"` +} + +func (TaskDefinitionLinuxParametersArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionLinuxParameters)(nil)).Elem() +} + +func (i TaskDefinitionLinuxParametersArgs) ToTaskDefinitionLinuxParametersOutput() TaskDefinitionLinuxParametersOutput { + return i.ToTaskDefinitionLinuxParametersOutputWithContext(context.Background()) +} + +func (i TaskDefinitionLinuxParametersArgs) ToTaskDefinitionLinuxParametersOutputWithContext(ctx context.Context) TaskDefinitionLinuxParametersOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionLinuxParametersOutput) +} + +func (i TaskDefinitionLinuxParametersArgs) ToTaskDefinitionLinuxParametersPtrOutput() TaskDefinitionLinuxParametersPtrOutput { + return i.ToTaskDefinitionLinuxParametersPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionLinuxParametersArgs) ToTaskDefinitionLinuxParametersPtrOutputWithContext(ctx context.Context) TaskDefinitionLinuxParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionLinuxParametersOutput).ToTaskDefinitionLinuxParametersPtrOutputWithContext(ctx) +} + +// TaskDefinitionLinuxParametersPtrInput is an input type that accepts TaskDefinitionLinuxParametersArgs, TaskDefinitionLinuxParametersPtr and TaskDefinitionLinuxParametersPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionLinuxParametersPtrInput` via: +// +// TaskDefinitionLinuxParametersArgs{...} +// +// or: +// +// nil +type TaskDefinitionLinuxParametersPtrInput interface { + pulumi.Input + + ToTaskDefinitionLinuxParametersPtrOutput() TaskDefinitionLinuxParametersPtrOutput + ToTaskDefinitionLinuxParametersPtrOutputWithContext(context.Context) TaskDefinitionLinuxParametersPtrOutput +} + +type taskDefinitionLinuxParametersPtrType TaskDefinitionLinuxParametersArgs + +func TaskDefinitionLinuxParametersPtr(v *TaskDefinitionLinuxParametersArgs) TaskDefinitionLinuxParametersPtrInput { + return (*taskDefinitionLinuxParametersPtrType)(v) +} + +func (*taskDefinitionLinuxParametersPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionLinuxParameters)(nil)).Elem() +} + +func (i *taskDefinitionLinuxParametersPtrType) ToTaskDefinitionLinuxParametersPtrOutput() TaskDefinitionLinuxParametersPtrOutput { + return i.ToTaskDefinitionLinuxParametersPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionLinuxParametersPtrType) ToTaskDefinitionLinuxParametersPtrOutputWithContext(ctx context.Context) TaskDefinitionLinuxParametersPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionLinuxParametersPtrOutput) +} + +type TaskDefinitionLinuxParametersOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionLinuxParametersOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionLinuxParameters)(nil)).Elem() +} + +func (o TaskDefinitionLinuxParametersOutput) ToTaskDefinitionLinuxParametersOutput() TaskDefinitionLinuxParametersOutput { + return o +} + +func (o TaskDefinitionLinuxParametersOutput) ToTaskDefinitionLinuxParametersOutputWithContext(ctx context.Context) TaskDefinitionLinuxParametersOutput { + return o +} + +func (o TaskDefinitionLinuxParametersOutput) ToTaskDefinitionLinuxParametersPtrOutput() TaskDefinitionLinuxParametersPtrOutput { + return o.ToTaskDefinitionLinuxParametersPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionLinuxParametersOutput) ToTaskDefinitionLinuxParametersPtrOutputWithContext(ctx context.Context) TaskDefinitionLinuxParametersPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionLinuxParameters) *TaskDefinitionLinuxParameters { + return &v + }).(TaskDefinitionLinuxParametersPtrOutput) +} + +func (o TaskDefinitionLinuxParametersOutput) Capabilities() TaskDefinitionKernelCapabilitiesPtrOutput { + return o.ApplyT(func(v TaskDefinitionLinuxParameters) *TaskDefinitionKernelCapabilities { return v.Capabilities }).(TaskDefinitionKernelCapabilitiesPtrOutput) +} + +func (o TaskDefinitionLinuxParametersOutput) Devices() TaskDefinitionDeviceArrayOutput { + return o.ApplyT(func(v TaskDefinitionLinuxParameters) []TaskDefinitionDevice { return v.Devices }).(TaskDefinitionDeviceArrayOutput) +} + +func (o TaskDefinitionLinuxParametersOutput) InitProcessEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionLinuxParameters) *bool { return v.InitProcessEnabled }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionLinuxParametersOutput) MaxSwap() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionLinuxParameters) *int { return v.MaxSwap }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionLinuxParametersOutput) SharedMemorySize() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionLinuxParameters) *int { return v.SharedMemorySize }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionLinuxParametersOutput) Swappiness() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionLinuxParameters) *int { return v.Swappiness }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionLinuxParametersOutput) Tmpfs() TaskDefinitionTmpfsArrayOutput { + return o.ApplyT(func(v TaskDefinitionLinuxParameters) []TaskDefinitionTmpfs { return v.Tmpfs }).(TaskDefinitionTmpfsArrayOutput) +} + +type TaskDefinitionLinuxParametersPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionLinuxParametersPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionLinuxParameters)(nil)).Elem() +} + +func (o TaskDefinitionLinuxParametersPtrOutput) ToTaskDefinitionLinuxParametersPtrOutput() TaskDefinitionLinuxParametersPtrOutput { + return o +} + +func (o TaskDefinitionLinuxParametersPtrOutput) ToTaskDefinitionLinuxParametersPtrOutputWithContext(ctx context.Context) TaskDefinitionLinuxParametersPtrOutput { + return o +} + +func (o TaskDefinitionLinuxParametersPtrOutput) Elem() TaskDefinitionLinuxParametersOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) TaskDefinitionLinuxParameters { + if v != nil { + return *v + } + var ret TaskDefinitionLinuxParameters + return ret + }).(TaskDefinitionLinuxParametersOutput) +} + +func (o TaskDefinitionLinuxParametersPtrOutput) Capabilities() TaskDefinitionKernelCapabilitiesPtrOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) *TaskDefinitionKernelCapabilities { + if v == nil { + return nil + } + return v.Capabilities + }).(TaskDefinitionKernelCapabilitiesPtrOutput) +} + +func (o TaskDefinitionLinuxParametersPtrOutput) Devices() TaskDefinitionDeviceArrayOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) []TaskDefinitionDevice { + if v == nil { + return nil + } + return v.Devices + }).(TaskDefinitionDeviceArrayOutput) +} + +func (o TaskDefinitionLinuxParametersPtrOutput) InitProcessEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) *bool { + if v == nil { + return nil + } + return v.InitProcessEnabled + }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionLinuxParametersPtrOutput) MaxSwap() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) *int { + if v == nil { + return nil + } + return v.MaxSwap + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionLinuxParametersPtrOutput) SharedMemorySize() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) *int { + if v == nil { + return nil + } + return v.SharedMemorySize + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionLinuxParametersPtrOutput) Swappiness() pulumi.IntPtrOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) *int { + if v == nil { + return nil + } + return v.Swappiness + }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionLinuxParametersPtrOutput) Tmpfs() TaskDefinitionTmpfsArrayOutput { + return o.ApplyT(func(v *TaskDefinitionLinuxParameters) []TaskDefinitionTmpfs { + if v == nil { + return nil + } + return v.Tmpfs + }).(TaskDefinitionTmpfsArrayOutput) +} + +type TaskDefinitionLogConfiguration struct { + LogDriver string `pulumi:"logDriver"` + Options interface{} `pulumi:"options"` + SecretOptions []TaskDefinitionSecret `pulumi:"secretOptions"` +} + +// TaskDefinitionLogConfigurationInput is an input type that accepts TaskDefinitionLogConfigurationArgs and TaskDefinitionLogConfigurationOutput values. +// You can construct a concrete instance of `TaskDefinitionLogConfigurationInput` via: +// +// TaskDefinitionLogConfigurationArgs{...} +type TaskDefinitionLogConfigurationInput interface { + pulumi.Input + + ToTaskDefinitionLogConfigurationOutput() TaskDefinitionLogConfigurationOutput + ToTaskDefinitionLogConfigurationOutputWithContext(context.Context) TaskDefinitionLogConfigurationOutput +} + +type TaskDefinitionLogConfigurationArgs struct { + LogDriver pulumi.StringInput `pulumi:"logDriver"` + Options pulumi.Input `pulumi:"options"` + SecretOptions TaskDefinitionSecretArrayInput `pulumi:"secretOptions"` +} + +func (TaskDefinitionLogConfigurationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionLogConfiguration)(nil)).Elem() +} + +func (i TaskDefinitionLogConfigurationArgs) ToTaskDefinitionLogConfigurationOutput() TaskDefinitionLogConfigurationOutput { + return i.ToTaskDefinitionLogConfigurationOutputWithContext(context.Background()) +} + +func (i TaskDefinitionLogConfigurationArgs) ToTaskDefinitionLogConfigurationOutputWithContext(ctx context.Context) TaskDefinitionLogConfigurationOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionLogConfigurationOutput) +} + +func (i TaskDefinitionLogConfigurationArgs) ToTaskDefinitionLogConfigurationPtrOutput() TaskDefinitionLogConfigurationPtrOutput { + return i.ToTaskDefinitionLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionLogConfigurationArgs) ToTaskDefinitionLogConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionLogConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionLogConfigurationOutput).ToTaskDefinitionLogConfigurationPtrOutputWithContext(ctx) +} + +// TaskDefinitionLogConfigurationPtrInput is an input type that accepts TaskDefinitionLogConfigurationArgs, TaskDefinitionLogConfigurationPtr and TaskDefinitionLogConfigurationPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionLogConfigurationPtrInput` via: +// +// TaskDefinitionLogConfigurationArgs{...} +// +// or: +// +// nil +type TaskDefinitionLogConfigurationPtrInput interface { + pulumi.Input + + ToTaskDefinitionLogConfigurationPtrOutput() TaskDefinitionLogConfigurationPtrOutput + ToTaskDefinitionLogConfigurationPtrOutputWithContext(context.Context) TaskDefinitionLogConfigurationPtrOutput +} + +type taskDefinitionLogConfigurationPtrType TaskDefinitionLogConfigurationArgs + +func TaskDefinitionLogConfigurationPtr(v *TaskDefinitionLogConfigurationArgs) TaskDefinitionLogConfigurationPtrInput { + return (*taskDefinitionLogConfigurationPtrType)(v) +} + +func (*taskDefinitionLogConfigurationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionLogConfiguration)(nil)).Elem() +} + +func (i *taskDefinitionLogConfigurationPtrType) ToTaskDefinitionLogConfigurationPtrOutput() TaskDefinitionLogConfigurationPtrOutput { + return i.ToTaskDefinitionLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionLogConfigurationPtrType) ToTaskDefinitionLogConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionLogConfigurationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionLogConfigurationPtrOutput) +} + +type TaskDefinitionLogConfigurationOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionLogConfigurationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionLogConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionLogConfigurationOutput) ToTaskDefinitionLogConfigurationOutput() TaskDefinitionLogConfigurationOutput { + return o +} + +func (o TaskDefinitionLogConfigurationOutput) ToTaskDefinitionLogConfigurationOutputWithContext(ctx context.Context) TaskDefinitionLogConfigurationOutput { + return o +} + +func (o TaskDefinitionLogConfigurationOutput) ToTaskDefinitionLogConfigurationPtrOutput() TaskDefinitionLogConfigurationPtrOutput { + return o.ToTaskDefinitionLogConfigurationPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionLogConfigurationOutput) ToTaskDefinitionLogConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionLogConfigurationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionLogConfiguration) *TaskDefinitionLogConfiguration { + return &v + }).(TaskDefinitionLogConfigurationPtrOutput) +} + +func (o TaskDefinitionLogConfigurationOutput) LogDriver() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionLogConfiguration) string { return v.LogDriver }).(pulumi.StringOutput) +} + +func (o TaskDefinitionLogConfigurationOutput) Options() pulumi.AnyOutput { + return o.ApplyT(func(v TaskDefinitionLogConfiguration) interface{} { return v.Options }).(pulumi.AnyOutput) +} + +func (o TaskDefinitionLogConfigurationOutput) SecretOptions() TaskDefinitionSecretArrayOutput { + return o.ApplyT(func(v TaskDefinitionLogConfiguration) []TaskDefinitionSecret { return v.SecretOptions }).(TaskDefinitionSecretArrayOutput) +} + +type TaskDefinitionLogConfigurationPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionLogConfigurationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionLogConfiguration)(nil)).Elem() +} + +func (o TaskDefinitionLogConfigurationPtrOutput) ToTaskDefinitionLogConfigurationPtrOutput() TaskDefinitionLogConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionLogConfigurationPtrOutput) ToTaskDefinitionLogConfigurationPtrOutputWithContext(ctx context.Context) TaskDefinitionLogConfigurationPtrOutput { + return o +} + +func (o TaskDefinitionLogConfigurationPtrOutput) Elem() TaskDefinitionLogConfigurationOutput { + return o.ApplyT(func(v *TaskDefinitionLogConfiguration) TaskDefinitionLogConfiguration { + if v != nil { + return *v + } + var ret TaskDefinitionLogConfiguration + return ret + }).(TaskDefinitionLogConfigurationOutput) +} + +func (o TaskDefinitionLogConfigurationPtrOutput) LogDriver() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionLogConfiguration) *string { + if v == nil { + return nil + } + return &v.LogDriver + }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionLogConfigurationPtrOutput) Options() pulumi.AnyOutput { + return o.ApplyT(func(v *TaskDefinitionLogConfiguration) interface{} { + if v == nil { + return nil + } + return v.Options + }).(pulumi.AnyOutput) +} + +func (o TaskDefinitionLogConfigurationPtrOutput) SecretOptions() TaskDefinitionSecretArrayOutput { + return o.ApplyT(func(v *TaskDefinitionLogConfiguration) []TaskDefinitionSecret { + if v == nil { + return nil + } + return v.SecretOptions + }).(TaskDefinitionSecretArrayOutput) +} + +type TaskDefinitionMountPoint struct { + ContainerPath *string `pulumi:"containerPath"` + ReadOnly *bool `pulumi:"readOnly"` + SourceVolume *string `pulumi:"sourceVolume"` +} + +// TaskDefinitionMountPointInput is an input type that accepts TaskDefinitionMountPointArgs and TaskDefinitionMountPointOutput values. +// You can construct a concrete instance of `TaskDefinitionMountPointInput` via: +// +// TaskDefinitionMountPointArgs{...} +type TaskDefinitionMountPointInput interface { + pulumi.Input + + ToTaskDefinitionMountPointOutput() TaskDefinitionMountPointOutput + ToTaskDefinitionMountPointOutputWithContext(context.Context) TaskDefinitionMountPointOutput +} + +type TaskDefinitionMountPointArgs struct { + ContainerPath pulumi.StringPtrInput `pulumi:"containerPath"` + ReadOnly pulumi.BoolPtrInput `pulumi:"readOnly"` + SourceVolume pulumi.StringPtrInput `pulumi:"sourceVolume"` +} + +func (TaskDefinitionMountPointArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionMountPoint)(nil)).Elem() +} + +func (i TaskDefinitionMountPointArgs) ToTaskDefinitionMountPointOutput() TaskDefinitionMountPointOutput { + return i.ToTaskDefinitionMountPointOutputWithContext(context.Background()) +} + +func (i TaskDefinitionMountPointArgs) ToTaskDefinitionMountPointOutputWithContext(ctx context.Context) TaskDefinitionMountPointOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionMountPointOutput) +} + +// TaskDefinitionMountPointArrayInput is an input type that accepts TaskDefinitionMountPointArray and TaskDefinitionMountPointArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionMountPointArrayInput` via: +// +// TaskDefinitionMountPointArray{ TaskDefinitionMountPointArgs{...} } +type TaskDefinitionMountPointArrayInput interface { + pulumi.Input + + ToTaskDefinitionMountPointArrayOutput() TaskDefinitionMountPointArrayOutput + ToTaskDefinitionMountPointArrayOutputWithContext(context.Context) TaskDefinitionMountPointArrayOutput +} + +type TaskDefinitionMountPointArray []TaskDefinitionMountPointInput + +func (TaskDefinitionMountPointArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionMountPoint)(nil)).Elem() +} + +func (i TaskDefinitionMountPointArray) ToTaskDefinitionMountPointArrayOutput() TaskDefinitionMountPointArrayOutput { + return i.ToTaskDefinitionMountPointArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionMountPointArray) ToTaskDefinitionMountPointArrayOutputWithContext(ctx context.Context) TaskDefinitionMountPointArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionMountPointArrayOutput) +} + +type TaskDefinitionMountPointOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionMountPointOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionMountPoint)(nil)).Elem() +} + +func (o TaskDefinitionMountPointOutput) ToTaskDefinitionMountPointOutput() TaskDefinitionMountPointOutput { + return o +} + +func (o TaskDefinitionMountPointOutput) ToTaskDefinitionMountPointOutputWithContext(ctx context.Context) TaskDefinitionMountPointOutput { + return o +} + +func (o TaskDefinitionMountPointOutput) ContainerPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionMountPoint) *string { return v.ContainerPath }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionMountPointOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionMountPoint) *bool { return v.ReadOnly }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionMountPointOutput) SourceVolume() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionMountPoint) *string { return v.SourceVolume }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionMountPointArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionMountPointArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionMountPoint)(nil)).Elem() +} + +func (o TaskDefinitionMountPointArrayOutput) ToTaskDefinitionMountPointArrayOutput() TaskDefinitionMountPointArrayOutput { + return o +} + +func (o TaskDefinitionMountPointArrayOutput) ToTaskDefinitionMountPointArrayOutputWithContext(ctx context.Context) TaskDefinitionMountPointArrayOutput { + return o +} + +func (o TaskDefinitionMountPointArrayOutput) Index(i pulumi.IntInput) TaskDefinitionMountPointOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionMountPoint { + return vs[0].([]TaskDefinitionMountPoint)[vs[1].(int)] + }).(TaskDefinitionMountPointOutput) +} + +type TaskDefinitionPortMapping struct { + AppProtocol *TaskDefinitionPortMappingAppProtocol `pulumi:"appProtocol"` + ContainerPort *int `pulumi:"containerPort"` + ContainerPortRange *string `pulumi:"containerPortRange"` + HostPort *int `pulumi:"hostPort"` + Name *string `pulumi:"name"` + Protocol *string `pulumi:"protocol"` + TargetGroup *lb.TargetGroup `pulumi:"targetGroup"` +} + +// TaskDefinitionPortMappingInput is an input type that accepts TaskDefinitionPortMappingArgs and TaskDefinitionPortMappingOutput values. +// You can construct a concrete instance of `TaskDefinitionPortMappingInput` via: +// +// TaskDefinitionPortMappingArgs{...} +type TaskDefinitionPortMappingInput interface { + pulumi.Input + + ToTaskDefinitionPortMappingOutput() TaskDefinitionPortMappingOutput + ToTaskDefinitionPortMappingOutputWithContext(context.Context) TaskDefinitionPortMappingOutput +} + +type TaskDefinitionPortMappingArgs struct { + AppProtocol TaskDefinitionPortMappingAppProtocolPtrInput `pulumi:"appProtocol"` + ContainerPort pulumi.IntPtrInput `pulumi:"containerPort"` + ContainerPortRange pulumi.StringPtrInput `pulumi:"containerPortRange"` + HostPort pulumi.IntPtrInput `pulumi:"hostPort"` + Name pulumi.StringPtrInput `pulumi:"name"` + Protocol pulumi.StringPtrInput `pulumi:"protocol"` + TargetGroup lb.TargetGroupInput `pulumi:"targetGroup"` +} + +func (TaskDefinitionPortMappingArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionPortMapping)(nil)).Elem() +} + +func (i TaskDefinitionPortMappingArgs) ToTaskDefinitionPortMappingOutput() TaskDefinitionPortMappingOutput { + return i.ToTaskDefinitionPortMappingOutputWithContext(context.Background()) +} + +func (i TaskDefinitionPortMappingArgs) ToTaskDefinitionPortMappingOutputWithContext(ctx context.Context) TaskDefinitionPortMappingOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionPortMappingOutput) +} + +// TaskDefinitionPortMappingArrayInput is an input type that accepts TaskDefinitionPortMappingArray and TaskDefinitionPortMappingArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionPortMappingArrayInput` via: +// +// TaskDefinitionPortMappingArray{ TaskDefinitionPortMappingArgs{...} } +type TaskDefinitionPortMappingArrayInput interface { + pulumi.Input + + ToTaskDefinitionPortMappingArrayOutput() TaskDefinitionPortMappingArrayOutput + ToTaskDefinitionPortMappingArrayOutputWithContext(context.Context) TaskDefinitionPortMappingArrayOutput +} + +type TaskDefinitionPortMappingArray []TaskDefinitionPortMappingInput + +func (TaskDefinitionPortMappingArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionPortMapping)(nil)).Elem() +} + +func (i TaskDefinitionPortMappingArray) ToTaskDefinitionPortMappingArrayOutput() TaskDefinitionPortMappingArrayOutput { + return i.ToTaskDefinitionPortMappingArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionPortMappingArray) ToTaskDefinitionPortMappingArrayOutputWithContext(ctx context.Context) TaskDefinitionPortMappingArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionPortMappingArrayOutput) +} + +type TaskDefinitionPortMappingOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionPortMappingOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionPortMapping)(nil)).Elem() +} + +func (o TaskDefinitionPortMappingOutput) ToTaskDefinitionPortMappingOutput() TaskDefinitionPortMappingOutput { + return o +} + +func (o TaskDefinitionPortMappingOutput) ToTaskDefinitionPortMappingOutputWithContext(ctx context.Context) TaskDefinitionPortMappingOutput { + return o +} + +func (o TaskDefinitionPortMappingOutput) AppProtocol() TaskDefinitionPortMappingAppProtocolPtrOutput { + return o.ApplyT(func(v TaskDefinitionPortMapping) *TaskDefinitionPortMappingAppProtocol { return v.AppProtocol }).(TaskDefinitionPortMappingAppProtocolPtrOutput) +} + +func (o TaskDefinitionPortMappingOutput) ContainerPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionPortMapping) *int { return v.ContainerPort }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionPortMappingOutput) ContainerPortRange() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionPortMapping) *string { return v.ContainerPortRange }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionPortMappingOutput) HostPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v TaskDefinitionPortMapping) *int { return v.HostPort }).(pulumi.IntPtrOutput) +} + +func (o TaskDefinitionPortMappingOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionPortMapping) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionPortMappingOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionPortMapping) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionPortMappingOutput) TargetGroup() lb.TargetGroupOutput { + return o.ApplyT(func(v TaskDefinitionPortMapping) *lb.TargetGroup { return v.TargetGroup }).(lb.TargetGroupOutput) +} + +type TaskDefinitionPortMappingArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionPortMappingArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionPortMapping)(nil)).Elem() +} + +func (o TaskDefinitionPortMappingArrayOutput) ToTaskDefinitionPortMappingArrayOutput() TaskDefinitionPortMappingArrayOutput { + return o +} + +func (o TaskDefinitionPortMappingArrayOutput) ToTaskDefinitionPortMappingArrayOutputWithContext(ctx context.Context) TaskDefinitionPortMappingArrayOutput { + return o +} + +func (o TaskDefinitionPortMappingArrayOutput) Index(i pulumi.IntInput) TaskDefinitionPortMappingOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionPortMapping { + return vs[0].([]TaskDefinitionPortMapping)[vs[1].(int)] + }).(TaskDefinitionPortMappingOutput) +} + +type TaskDefinitionRepositoryCredentials struct { + CredentialsParameter *string `pulumi:"credentialsParameter"` +} + +// TaskDefinitionRepositoryCredentialsInput is an input type that accepts TaskDefinitionRepositoryCredentialsArgs and TaskDefinitionRepositoryCredentialsOutput values. +// You can construct a concrete instance of `TaskDefinitionRepositoryCredentialsInput` via: +// +// TaskDefinitionRepositoryCredentialsArgs{...} +type TaskDefinitionRepositoryCredentialsInput interface { + pulumi.Input + + ToTaskDefinitionRepositoryCredentialsOutput() TaskDefinitionRepositoryCredentialsOutput + ToTaskDefinitionRepositoryCredentialsOutputWithContext(context.Context) TaskDefinitionRepositoryCredentialsOutput +} + +type TaskDefinitionRepositoryCredentialsArgs struct { + CredentialsParameter pulumi.StringPtrInput `pulumi:"credentialsParameter"` +} + +func (TaskDefinitionRepositoryCredentialsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionRepositoryCredentials)(nil)).Elem() +} + +func (i TaskDefinitionRepositoryCredentialsArgs) ToTaskDefinitionRepositoryCredentialsOutput() TaskDefinitionRepositoryCredentialsOutput { + return i.ToTaskDefinitionRepositoryCredentialsOutputWithContext(context.Background()) +} + +func (i TaskDefinitionRepositoryCredentialsArgs) ToTaskDefinitionRepositoryCredentialsOutputWithContext(ctx context.Context) TaskDefinitionRepositoryCredentialsOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionRepositoryCredentialsOutput) +} + +func (i TaskDefinitionRepositoryCredentialsArgs) ToTaskDefinitionRepositoryCredentialsPtrOutput() TaskDefinitionRepositoryCredentialsPtrOutput { + return i.ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(context.Background()) +} + +func (i TaskDefinitionRepositoryCredentialsArgs) ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(ctx context.Context) TaskDefinitionRepositoryCredentialsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionRepositoryCredentialsOutput).ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(ctx) +} + +// TaskDefinitionRepositoryCredentialsPtrInput is an input type that accepts TaskDefinitionRepositoryCredentialsArgs, TaskDefinitionRepositoryCredentialsPtr and TaskDefinitionRepositoryCredentialsPtrOutput values. +// You can construct a concrete instance of `TaskDefinitionRepositoryCredentialsPtrInput` via: +// +// TaskDefinitionRepositoryCredentialsArgs{...} +// +// or: +// +// nil +type TaskDefinitionRepositoryCredentialsPtrInput interface { + pulumi.Input + + ToTaskDefinitionRepositoryCredentialsPtrOutput() TaskDefinitionRepositoryCredentialsPtrOutput + ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(context.Context) TaskDefinitionRepositoryCredentialsPtrOutput +} + +type taskDefinitionRepositoryCredentialsPtrType TaskDefinitionRepositoryCredentialsArgs + +func TaskDefinitionRepositoryCredentialsPtr(v *TaskDefinitionRepositoryCredentialsArgs) TaskDefinitionRepositoryCredentialsPtrInput { + return (*taskDefinitionRepositoryCredentialsPtrType)(v) +} + +func (*taskDefinitionRepositoryCredentialsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionRepositoryCredentials)(nil)).Elem() +} + +func (i *taskDefinitionRepositoryCredentialsPtrType) ToTaskDefinitionRepositoryCredentialsPtrOutput() TaskDefinitionRepositoryCredentialsPtrOutput { + return i.ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(context.Background()) +} + +func (i *taskDefinitionRepositoryCredentialsPtrType) ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(ctx context.Context) TaskDefinitionRepositoryCredentialsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionRepositoryCredentialsPtrOutput) +} + +type TaskDefinitionRepositoryCredentialsOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionRepositoryCredentialsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionRepositoryCredentials)(nil)).Elem() +} + +func (o TaskDefinitionRepositoryCredentialsOutput) ToTaskDefinitionRepositoryCredentialsOutput() TaskDefinitionRepositoryCredentialsOutput { + return o +} + +func (o TaskDefinitionRepositoryCredentialsOutput) ToTaskDefinitionRepositoryCredentialsOutputWithContext(ctx context.Context) TaskDefinitionRepositoryCredentialsOutput { + return o +} + +func (o TaskDefinitionRepositoryCredentialsOutput) ToTaskDefinitionRepositoryCredentialsPtrOutput() TaskDefinitionRepositoryCredentialsPtrOutput { + return o.ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(context.Background()) +} + +func (o TaskDefinitionRepositoryCredentialsOutput) ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(ctx context.Context) TaskDefinitionRepositoryCredentialsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v TaskDefinitionRepositoryCredentials) *TaskDefinitionRepositoryCredentials { + return &v + }).(TaskDefinitionRepositoryCredentialsPtrOutput) +} + +func (o TaskDefinitionRepositoryCredentialsOutput) CredentialsParameter() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionRepositoryCredentials) *string { return v.CredentialsParameter }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionRepositoryCredentialsPtrOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionRepositoryCredentialsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**TaskDefinitionRepositoryCredentials)(nil)).Elem() +} + +func (o TaskDefinitionRepositoryCredentialsPtrOutput) ToTaskDefinitionRepositoryCredentialsPtrOutput() TaskDefinitionRepositoryCredentialsPtrOutput { + return o +} + +func (o TaskDefinitionRepositoryCredentialsPtrOutput) ToTaskDefinitionRepositoryCredentialsPtrOutputWithContext(ctx context.Context) TaskDefinitionRepositoryCredentialsPtrOutput { + return o +} + +func (o TaskDefinitionRepositoryCredentialsPtrOutput) Elem() TaskDefinitionRepositoryCredentialsOutput { + return o.ApplyT(func(v *TaskDefinitionRepositoryCredentials) TaskDefinitionRepositoryCredentials { + if v != nil { + return *v + } + var ret TaskDefinitionRepositoryCredentials + return ret + }).(TaskDefinitionRepositoryCredentialsOutput) +} + +func (o TaskDefinitionRepositoryCredentialsPtrOutput) CredentialsParameter() pulumi.StringPtrOutput { + return o.ApplyT(func(v *TaskDefinitionRepositoryCredentials) *string { + if v == nil { + return nil + } + return v.CredentialsParameter + }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionResourceRequirement struct { + Type string `pulumi:"type"` + Value string `pulumi:"value"` +} + +// TaskDefinitionResourceRequirementInput is an input type that accepts TaskDefinitionResourceRequirementArgs and TaskDefinitionResourceRequirementOutput values. +// You can construct a concrete instance of `TaskDefinitionResourceRequirementInput` via: +// +// TaskDefinitionResourceRequirementArgs{...} +type TaskDefinitionResourceRequirementInput interface { + pulumi.Input + + ToTaskDefinitionResourceRequirementOutput() TaskDefinitionResourceRequirementOutput + ToTaskDefinitionResourceRequirementOutputWithContext(context.Context) TaskDefinitionResourceRequirementOutput +} + +type TaskDefinitionResourceRequirementArgs struct { + Type pulumi.StringInput `pulumi:"type"` + Value pulumi.StringInput `pulumi:"value"` +} + +func (TaskDefinitionResourceRequirementArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionResourceRequirement)(nil)).Elem() +} + +func (i TaskDefinitionResourceRequirementArgs) ToTaskDefinitionResourceRequirementOutput() TaskDefinitionResourceRequirementOutput { + return i.ToTaskDefinitionResourceRequirementOutputWithContext(context.Background()) +} + +func (i TaskDefinitionResourceRequirementArgs) ToTaskDefinitionResourceRequirementOutputWithContext(ctx context.Context) TaskDefinitionResourceRequirementOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionResourceRequirementOutput) +} + +// TaskDefinitionResourceRequirementArrayInput is an input type that accepts TaskDefinitionResourceRequirementArray and TaskDefinitionResourceRequirementArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionResourceRequirementArrayInput` via: +// +// TaskDefinitionResourceRequirementArray{ TaskDefinitionResourceRequirementArgs{...} } +type TaskDefinitionResourceRequirementArrayInput interface { + pulumi.Input + + ToTaskDefinitionResourceRequirementArrayOutput() TaskDefinitionResourceRequirementArrayOutput + ToTaskDefinitionResourceRequirementArrayOutputWithContext(context.Context) TaskDefinitionResourceRequirementArrayOutput +} + +type TaskDefinitionResourceRequirementArray []TaskDefinitionResourceRequirementInput + +func (TaskDefinitionResourceRequirementArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionResourceRequirement)(nil)).Elem() +} + +func (i TaskDefinitionResourceRequirementArray) ToTaskDefinitionResourceRequirementArrayOutput() TaskDefinitionResourceRequirementArrayOutput { + return i.ToTaskDefinitionResourceRequirementArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionResourceRequirementArray) ToTaskDefinitionResourceRequirementArrayOutputWithContext(ctx context.Context) TaskDefinitionResourceRequirementArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionResourceRequirementArrayOutput) +} + +type TaskDefinitionResourceRequirementOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionResourceRequirementOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionResourceRequirement)(nil)).Elem() +} + +func (o TaskDefinitionResourceRequirementOutput) ToTaskDefinitionResourceRequirementOutput() TaskDefinitionResourceRequirementOutput { + return o +} + +func (o TaskDefinitionResourceRequirementOutput) ToTaskDefinitionResourceRequirementOutputWithContext(ctx context.Context) TaskDefinitionResourceRequirementOutput { + return o +} + +func (o TaskDefinitionResourceRequirementOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionResourceRequirement) string { return v.Type }).(pulumi.StringOutput) +} + +func (o TaskDefinitionResourceRequirementOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionResourceRequirement) string { return v.Value }).(pulumi.StringOutput) +} + +type TaskDefinitionResourceRequirementArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionResourceRequirementArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionResourceRequirement)(nil)).Elem() +} + +func (o TaskDefinitionResourceRequirementArrayOutput) ToTaskDefinitionResourceRequirementArrayOutput() TaskDefinitionResourceRequirementArrayOutput { + return o +} + +func (o TaskDefinitionResourceRequirementArrayOutput) ToTaskDefinitionResourceRequirementArrayOutputWithContext(ctx context.Context) TaskDefinitionResourceRequirementArrayOutput { + return o +} + +func (o TaskDefinitionResourceRequirementArrayOutput) Index(i pulumi.IntInput) TaskDefinitionResourceRequirementOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionResourceRequirement { + return vs[0].([]TaskDefinitionResourceRequirement)[vs[1].(int)] + }).(TaskDefinitionResourceRequirementOutput) +} + +type TaskDefinitionSecret struct { + Name string `pulumi:"name"` + ValueFrom string `pulumi:"valueFrom"` +} + +// TaskDefinitionSecretInput is an input type that accepts TaskDefinitionSecretArgs and TaskDefinitionSecretOutput values. +// You can construct a concrete instance of `TaskDefinitionSecretInput` via: +// +// TaskDefinitionSecretArgs{...} +type TaskDefinitionSecretInput interface { + pulumi.Input + + ToTaskDefinitionSecretOutput() TaskDefinitionSecretOutput + ToTaskDefinitionSecretOutputWithContext(context.Context) TaskDefinitionSecretOutput +} + +type TaskDefinitionSecretArgs struct { + Name pulumi.StringInput `pulumi:"name"` + ValueFrom pulumi.StringInput `pulumi:"valueFrom"` +} + +func (TaskDefinitionSecretArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionSecret)(nil)).Elem() +} + +func (i TaskDefinitionSecretArgs) ToTaskDefinitionSecretOutput() TaskDefinitionSecretOutput { + return i.ToTaskDefinitionSecretOutputWithContext(context.Background()) +} + +func (i TaskDefinitionSecretArgs) ToTaskDefinitionSecretOutputWithContext(ctx context.Context) TaskDefinitionSecretOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionSecretOutput) +} + +// TaskDefinitionSecretArrayInput is an input type that accepts TaskDefinitionSecretArray and TaskDefinitionSecretArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionSecretArrayInput` via: +// +// TaskDefinitionSecretArray{ TaskDefinitionSecretArgs{...} } +type TaskDefinitionSecretArrayInput interface { + pulumi.Input + + ToTaskDefinitionSecretArrayOutput() TaskDefinitionSecretArrayOutput + ToTaskDefinitionSecretArrayOutputWithContext(context.Context) TaskDefinitionSecretArrayOutput +} + +type TaskDefinitionSecretArray []TaskDefinitionSecretInput + +func (TaskDefinitionSecretArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionSecret)(nil)).Elem() +} + +func (i TaskDefinitionSecretArray) ToTaskDefinitionSecretArrayOutput() TaskDefinitionSecretArrayOutput { + return i.ToTaskDefinitionSecretArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionSecretArray) ToTaskDefinitionSecretArrayOutputWithContext(ctx context.Context) TaskDefinitionSecretArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionSecretArrayOutput) +} + +type TaskDefinitionSecretOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionSecretOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionSecret)(nil)).Elem() +} + +func (o TaskDefinitionSecretOutput) ToTaskDefinitionSecretOutput() TaskDefinitionSecretOutput { + return o +} + +func (o TaskDefinitionSecretOutput) ToTaskDefinitionSecretOutputWithContext(ctx context.Context) TaskDefinitionSecretOutput { + return o +} + +func (o TaskDefinitionSecretOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionSecret) string { return v.Name }).(pulumi.StringOutput) +} + +func (o TaskDefinitionSecretOutput) ValueFrom() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionSecret) string { return v.ValueFrom }).(pulumi.StringOutput) +} + +type TaskDefinitionSecretArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionSecretArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionSecret)(nil)).Elem() +} + +func (o TaskDefinitionSecretArrayOutput) ToTaskDefinitionSecretArrayOutput() TaskDefinitionSecretArrayOutput { + return o +} + +func (o TaskDefinitionSecretArrayOutput) ToTaskDefinitionSecretArrayOutputWithContext(ctx context.Context) TaskDefinitionSecretArrayOutput { + return o +} + +func (o TaskDefinitionSecretArrayOutput) Index(i pulumi.IntInput) TaskDefinitionSecretOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionSecret { + return vs[0].([]TaskDefinitionSecret)[vs[1].(int)] + }).(TaskDefinitionSecretOutput) +} + +type TaskDefinitionSystemControl struct { + Namespace *string `pulumi:"namespace"` + Value *string `pulumi:"value"` +} + +// TaskDefinitionSystemControlInput is an input type that accepts TaskDefinitionSystemControlArgs and TaskDefinitionSystemControlOutput values. +// You can construct a concrete instance of `TaskDefinitionSystemControlInput` via: +// +// TaskDefinitionSystemControlArgs{...} +type TaskDefinitionSystemControlInput interface { + pulumi.Input + + ToTaskDefinitionSystemControlOutput() TaskDefinitionSystemControlOutput + ToTaskDefinitionSystemControlOutputWithContext(context.Context) TaskDefinitionSystemControlOutput +} + +type TaskDefinitionSystemControlArgs struct { + Namespace pulumi.StringPtrInput `pulumi:"namespace"` + Value pulumi.StringPtrInput `pulumi:"value"` +} + +func (TaskDefinitionSystemControlArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionSystemControl)(nil)).Elem() +} + +func (i TaskDefinitionSystemControlArgs) ToTaskDefinitionSystemControlOutput() TaskDefinitionSystemControlOutput { + return i.ToTaskDefinitionSystemControlOutputWithContext(context.Background()) +} + +func (i TaskDefinitionSystemControlArgs) ToTaskDefinitionSystemControlOutputWithContext(ctx context.Context) TaskDefinitionSystemControlOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionSystemControlOutput) +} + +// TaskDefinitionSystemControlArrayInput is an input type that accepts TaskDefinitionSystemControlArray and TaskDefinitionSystemControlArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionSystemControlArrayInput` via: +// +// TaskDefinitionSystemControlArray{ TaskDefinitionSystemControlArgs{...} } +type TaskDefinitionSystemControlArrayInput interface { + pulumi.Input + + ToTaskDefinitionSystemControlArrayOutput() TaskDefinitionSystemControlArrayOutput + ToTaskDefinitionSystemControlArrayOutputWithContext(context.Context) TaskDefinitionSystemControlArrayOutput +} + +type TaskDefinitionSystemControlArray []TaskDefinitionSystemControlInput + +func (TaskDefinitionSystemControlArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionSystemControl)(nil)).Elem() +} + +func (i TaskDefinitionSystemControlArray) ToTaskDefinitionSystemControlArrayOutput() TaskDefinitionSystemControlArrayOutput { + return i.ToTaskDefinitionSystemControlArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionSystemControlArray) ToTaskDefinitionSystemControlArrayOutputWithContext(ctx context.Context) TaskDefinitionSystemControlArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionSystemControlArrayOutput) +} + +type TaskDefinitionSystemControlOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionSystemControlOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionSystemControl)(nil)).Elem() +} + +func (o TaskDefinitionSystemControlOutput) ToTaskDefinitionSystemControlOutput() TaskDefinitionSystemControlOutput { + return o +} + +func (o TaskDefinitionSystemControlOutput) ToTaskDefinitionSystemControlOutputWithContext(ctx context.Context) TaskDefinitionSystemControlOutput { + return o +} + +func (o TaskDefinitionSystemControlOutput) Namespace() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionSystemControl) *string { return v.Namespace }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionSystemControlOutput) Value() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionSystemControl) *string { return v.Value }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionSystemControlArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionSystemControlArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionSystemControl)(nil)).Elem() +} + +func (o TaskDefinitionSystemControlArrayOutput) ToTaskDefinitionSystemControlArrayOutput() TaskDefinitionSystemControlArrayOutput { + return o +} + +func (o TaskDefinitionSystemControlArrayOutput) ToTaskDefinitionSystemControlArrayOutputWithContext(ctx context.Context) TaskDefinitionSystemControlArrayOutput { + return o +} + +func (o TaskDefinitionSystemControlArrayOutput) Index(i pulumi.IntInput) TaskDefinitionSystemControlOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionSystemControl { + return vs[0].([]TaskDefinitionSystemControl)[vs[1].(int)] + }).(TaskDefinitionSystemControlOutput) +} + +type TaskDefinitionTmpfs struct { + ContainerPath *string `pulumi:"containerPath"` + MountOptions []string `pulumi:"mountOptions"` + Size int `pulumi:"size"` +} + +// TaskDefinitionTmpfsInput is an input type that accepts TaskDefinitionTmpfsArgs and TaskDefinitionTmpfsOutput values. +// You can construct a concrete instance of `TaskDefinitionTmpfsInput` via: +// +// TaskDefinitionTmpfsArgs{...} +type TaskDefinitionTmpfsInput interface { + pulumi.Input + + ToTaskDefinitionTmpfsOutput() TaskDefinitionTmpfsOutput + ToTaskDefinitionTmpfsOutputWithContext(context.Context) TaskDefinitionTmpfsOutput +} + +type TaskDefinitionTmpfsArgs struct { + ContainerPath pulumi.StringPtrInput `pulumi:"containerPath"` + MountOptions pulumi.StringArrayInput `pulumi:"mountOptions"` + Size pulumi.IntInput `pulumi:"size"` +} + +func (TaskDefinitionTmpfsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionTmpfs)(nil)).Elem() +} + +func (i TaskDefinitionTmpfsArgs) ToTaskDefinitionTmpfsOutput() TaskDefinitionTmpfsOutput { + return i.ToTaskDefinitionTmpfsOutputWithContext(context.Background()) +} + +func (i TaskDefinitionTmpfsArgs) ToTaskDefinitionTmpfsOutputWithContext(ctx context.Context) TaskDefinitionTmpfsOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionTmpfsOutput) +} + +// TaskDefinitionTmpfsArrayInput is an input type that accepts TaskDefinitionTmpfsArray and TaskDefinitionTmpfsArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionTmpfsArrayInput` via: +// +// TaskDefinitionTmpfsArray{ TaskDefinitionTmpfsArgs{...} } +type TaskDefinitionTmpfsArrayInput interface { + pulumi.Input + + ToTaskDefinitionTmpfsArrayOutput() TaskDefinitionTmpfsArrayOutput + ToTaskDefinitionTmpfsArrayOutputWithContext(context.Context) TaskDefinitionTmpfsArrayOutput +} + +type TaskDefinitionTmpfsArray []TaskDefinitionTmpfsInput + +func (TaskDefinitionTmpfsArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionTmpfs)(nil)).Elem() +} + +func (i TaskDefinitionTmpfsArray) ToTaskDefinitionTmpfsArrayOutput() TaskDefinitionTmpfsArrayOutput { + return i.ToTaskDefinitionTmpfsArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionTmpfsArray) ToTaskDefinitionTmpfsArrayOutputWithContext(ctx context.Context) TaskDefinitionTmpfsArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionTmpfsArrayOutput) +} + +type TaskDefinitionTmpfsOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionTmpfsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionTmpfs)(nil)).Elem() +} + +func (o TaskDefinitionTmpfsOutput) ToTaskDefinitionTmpfsOutput() TaskDefinitionTmpfsOutput { + return o +} + +func (o TaskDefinitionTmpfsOutput) ToTaskDefinitionTmpfsOutputWithContext(ctx context.Context) TaskDefinitionTmpfsOutput { + return o +} + +func (o TaskDefinitionTmpfsOutput) ContainerPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionTmpfs) *string { return v.ContainerPath }).(pulumi.StringPtrOutput) +} + +func (o TaskDefinitionTmpfsOutput) MountOptions() pulumi.StringArrayOutput { + return o.ApplyT(func(v TaskDefinitionTmpfs) []string { return v.MountOptions }).(pulumi.StringArrayOutput) +} + +func (o TaskDefinitionTmpfsOutput) Size() pulumi.IntOutput { + return o.ApplyT(func(v TaskDefinitionTmpfs) int { return v.Size }).(pulumi.IntOutput) +} + +type TaskDefinitionTmpfsArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionTmpfsArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionTmpfs)(nil)).Elem() +} + +func (o TaskDefinitionTmpfsArrayOutput) ToTaskDefinitionTmpfsArrayOutput() TaskDefinitionTmpfsArrayOutput { + return o +} + +func (o TaskDefinitionTmpfsArrayOutput) ToTaskDefinitionTmpfsArrayOutputWithContext(ctx context.Context) TaskDefinitionTmpfsArrayOutput { + return o +} + +func (o TaskDefinitionTmpfsArrayOutput) Index(i pulumi.IntInput) TaskDefinitionTmpfsOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionTmpfs { + return vs[0].([]TaskDefinitionTmpfs)[vs[1].(int)] + }).(TaskDefinitionTmpfsOutput) +} + +type TaskDefinitionUlimit struct { + HardLimit int `pulumi:"hardLimit"` + Name string `pulumi:"name"` + SoftLimit int `pulumi:"softLimit"` +} + +// TaskDefinitionUlimitInput is an input type that accepts TaskDefinitionUlimitArgs and TaskDefinitionUlimitOutput values. +// You can construct a concrete instance of `TaskDefinitionUlimitInput` via: +// +// TaskDefinitionUlimitArgs{...} +type TaskDefinitionUlimitInput interface { + pulumi.Input + + ToTaskDefinitionUlimitOutput() TaskDefinitionUlimitOutput + ToTaskDefinitionUlimitOutputWithContext(context.Context) TaskDefinitionUlimitOutput +} + +type TaskDefinitionUlimitArgs struct { + HardLimit pulumi.IntInput `pulumi:"hardLimit"` + Name pulumi.StringInput `pulumi:"name"` + SoftLimit pulumi.IntInput `pulumi:"softLimit"` +} + +func (TaskDefinitionUlimitArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionUlimit)(nil)).Elem() +} + +func (i TaskDefinitionUlimitArgs) ToTaskDefinitionUlimitOutput() TaskDefinitionUlimitOutput { + return i.ToTaskDefinitionUlimitOutputWithContext(context.Background()) +} + +func (i TaskDefinitionUlimitArgs) ToTaskDefinitionUlimitOutputWithContext(ctx context.Context) TaskDefinitionUlimitOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionUlimitOutput) +} + +// TaskDefinitionUlimitArrayInput is an input type that accepts TaskDefinitionUlimitArray and TaskDefinitionUlimitArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionUlimitArrayInput` via: +// +// TaskDefinitionUlimitArray{ TaskDefinitionUlimitArgs{...} } +type TaskDefinitionUlimitArrayInput interface { + pulumi.Input + + ToTaskDefinitionUlimitArrayOutput() TaskDefinitionUlimitArrayOutput + ToTaskDefinitionUlimitArrayOutputWithContext(context.Context) TaskDefinitionUlimitArrayOutput +} + +type TaskDefinitionUlimitArray []TaskDefinitionUlimitInput + +func (TaskDefinitionUlimitArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionUlimit)(nil)).Elem() +} + +func (i TaskDefinitionUlimitArray) ToTaskDefinitionUlimitArrayOutput() TaskDefinitionUlimitArrayOutput { + return i.ToTaskDefinitionUlimitArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionUlimitArray) ToTaskDefinitionUlimitArrayOutputWithContext(ctx context.Context) TaskDefinitionUlimitArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionUlimitArrayOutput) +} + +type TaskDefinitionUlimitOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionUlimitOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionUlimit)(nil)).Elem() +} + +func (o TaskDefinitionUlimitOutput) ToTaskDefinitionUlimitOutput() TaskDefinitionUlimitOutput { + return o +} + +func (o TaskDefinitionUlimitOutput) ToTaskDefinitionUlimitOutputWithContext(ctx context.Context) TaskDefinitionUlimitOutput { + return o +} + +func (o TaskDefinitionUlimitOutput) HardLimit() pulumi.IntOutput { + return o.ApplyT(func(v TaskDefinitionUlimit) int { return v.HardLimit }).(pulumi.IntOutput) +} + +func (o TaskDefinitionUlimitOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v TaskDefinitionUlimit) string { return v.Name }).(pulumi.StringOutput) +} + +func (o TaskDefinitionUlimitOutput) SoftLimit() pulumi.IntOutput { + return o.ApplyT(func(v TaskDefinitionUlimit) int { return v.SoftLimit }).(pulumi.IntOutput) +} + +type TaskDefinitionUlimitArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionUlimitArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionUlimit)(nil)).Elem() +} + +func (o TaskDefinitionUlimitArrayOutput) ToTaskDefinitionUlimitArrayOutput() TaskDefinitionUlimitArrayOutput { + return o +} + +func (o TaskDefinitionUlimitArrayOutput) ToTaskDefinitionUlimitArrayOutputWithContext(ctx context.Context) TaskDefinitionUlimitArrayOutput { + return o +} + +func (o TaskDefinitionUlimitArrayOutput) Index(i pulumi.IntInput) TaskDefinitionUlimitOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionUlimit { + return vs[0].([]TaskDefinitionUlimit)[vs[1].(int)] + }).(TaskDefinitionUlimitOutput) +} + +type TaskDefinitionVolumeFrom struct { + ReadOnly *bool `pulumi:"readOnly"` + SourceContainer *string `pulumi:"sourceContainer"` +} + +// TaskDefinitionVolumeFromInput is an input type that accepts TaskDefinitionVolumeFromArgs and TaskDefinitionVolumeFromOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeFromInput` via: +// +// TaskDefinitionVolumeFromArgs{...} +type TaskDefinitionVolumeFromInput interface { + pulumi.Input + + ToTaskDefinitionVolumeFromOutput() TaskDefinitionVolumeFromOutput + ToTaskDefinitionVolumeFromOutputWithContext(context.Context) TaskDefinitionVolumeFromOutput +} + +type TaskDefinitionVolumeFromArgs struct { + ReadOnly pulumi.BoolPtrInput `pulumi:"readOnly"` + SourceContainer pulumi.StringPtrInput `pulumi:"sourceContainer"` +} + +func (TaskDefinitionVolumeFromArgs) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeFrom)(nil)).Elem() +} + +func (i TaskDefinitionVolumeFromArgs) ToTaskDefinitionVolumeFromOutput() TaskDefinitionVolumeFromOutput { + return i.ToTaskDefinitionVolumeFromOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeFromArgs) ToTaskDefinitionVolumeFromOutputWithContext(ctx context.Context) TaskDefinitionVolumeFromOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFromOutput) +} + +// TaskDefinitionVolumeFromArrayInput is an input type that accepts TaskDefinitionVolumeFromArray and TaskDefinitionVolumeFromArrayOutput values. +// You can construct a concrete instance of `TaskDefinitionVolumeFromArrayInput` via: +// +// TaskDefinitionVolumeFromArray{ TaskDefinitionVolumeFromArgs{...} } +type TaskDefinitionVolumeFromArrayInput interface { + pulumi.Input + + ToTaskDefinitionVolumeFromArrayOutput() TaskDefinitionVolumeFromArrayOutput + ToTaskDefinitionVolumeFromArrayOutputWithContext(context.Context) TaskDefinitionVolumeFromArrayOutput +} + +type TaskDefinitionVolumeFromArray []TaskDefinitionVolumeFromInput + +func (TaskDefinitionVolumeFromArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionVolumeFrom)(nil)).Elem() +} + +func (i TaskDefinitionVolumeFromArray) ToTaskDefinitionVolumeFromArrayOutput() TaskDefinitionVolumeFromArrayOutput { + return i.ToTaskDefinitionVolumeFromArrayOutputWithContext(context.Background()) +} + +func (i TaskDefinitionVolumeFromArray) ToTaskDefinitionVolumeFromArrayOutputWithContext(ctx context.Context) TaskDefinitionVolumeFromArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TaskDefinitionVolumeFromArrayOutput) +} + +type TaskDefinitionVolumeFromOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeFromOutput) ElementType() reflect.Type { + return reflect.TypeOf((*TaskDefinitionVolumeFrom)(nil)).Elem() +} + +func (o TaskDefinitionVolumeFromOutput) ToTaskDefinitionVolumeFromOutput() TaskDefinitionVolumeFromOutput { + return o +} + +func (o TaskDefinitionVolumeFromOutput) ToTaskDefinitionVolumeFromOutputWithContext(ctx context.Context) TaskDefinitionVolumeFromOutput { + return o +} + +func (o TaskDefinitionVolumeFromOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeFrom) *bool { return v.ReadOnly }).(pulumi.BoolPtrOutput) +} + +func (o TaskDefinitionVolumeFromOutput) SourceContainer() pulumi.StringPtrOutput { + return o.ApplyT(func(v TaskDefinitionVolumeFrom) *string { return v.SourceContainer }).(pulumi.StringPtrOutput) +} + +type TaskDefinitionVolumeFromArrayOutput struct{ *pulumi.OutputState } + +func (TaskDefinitionVolumeFromArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]TaskDefinitionVolumeFrom)(nil)).Elem() +} + +func (o TaskDefinitionVolumeFromArrayOutput) ToTaskDefinitionVolumeFromArrayOutput() TaskDefinitionVolumeFromArrayOutput { + return o +} + +func (o TaskDefinitionVolumeFromArrayOutput) ToTaskDefinitionVolumeFromArrayOutputWithContext(ctx context.Context) TaskDefinitionVolumeFromArrayOutput { + return o +} + +func (o TaskDefinitionVolumeFromArrayOutput) Index(i pulumi.IntInput) TaskDefinitionVolumeFromOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) TaskDefinitionVolumeFrom { + return vs[0].([]TaskDefinitionVolumeFrom)[vs[1].(int)] + }).(TaskDefinitionVolumeFromOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*EC2ServiceTaskDefinitionInput)(nil)).Elem(), EC2ServiceTaskDefinitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*EC2ServiceTaskDefinitionPtrInput)(nil)).Elem(), EC2ServiceTaskDefinitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*FargateServiceTaskDefinitionInput)(nil)).Elem(), FargateServiceTaskDefinitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*FargateServiceTaskDefinitionPtrInput)(nil)).Elem(), FargateServiceTaskDefinitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionContainerDefinitionInput)(nil)).Elem(), TaskDefinitionContainerDefinitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionContainerDefinitionPtrInput)(nil)).Elem(), TaskDefinitionContainerDefinitionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionContainerDefinitionMapInput)(nil)).Elem(), TaskDefinitionContainerDefinitionMap{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionContainerDependencyInput)(nil)).Elem(), TaskDefinitionContainerDependencyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionContainerDependencyArrayInput)(nil)).Elem(), TaskDefinitionContainerDependencyArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionDeviceInput)(nil)).Elem(), TaskDefinitionDeviceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionDeviceArrayInput)(nil)).Elem(), TaskDefinitionDeviceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionEnvironmentFileInput)(nil)).Elem(), TaskDefinitionEnvironmentFileArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionEnvironmentFileArrayInput)(nil)).Elem(), TaskDefinitionEnvironmentFileArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionFirelensConfigurationInput)(nil)).Elem(), TaskDefinitionFirelensConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionFirelensConfigurationPtrInput)(nil)).Elem(), TaskDefinitionFirelensConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionHealthCheckInput)(nil)).Elem(), TaskDefinitionHealthCheckArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionHealthCheckPtrInput)(nil)).Elem(), TaskDefinitionHealthCheckArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionHostEntryInput)(nil)).Elem(), TaskDefinitionHostEntryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionHostEntryArrayInput)(nil)).Elem(), TaskDefinitionHostEntryArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionKernelCapabilitiesInput)(nil)).Elem(), TaskDefinitionKernelCapabilitiesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionKernelCapabilitiesPtrInput)(nil)).Elem(), TaskDefinitionKernelCapabilitiesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionKeyValuePairInput)(nil)).Elem(), TaskDefinitionKeyValuePairArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionKeyValuePairArrayInput)(nil)).Elem(), TaskDefinitionKeyValuePairArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionLinuxParametersInput)(nil)).Elem(), TaskDefinitionLinuxParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionLinuxParametersPtrInput)(nil)).Elem(), TaskDefinitionLinuxParametersArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionLogConfigurationInput)(nil)).Elem(), TaskDefinitionLogConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionLogConfigurationPtrInput)(nil)).Elem(), TaskDefinitionLogConfigurationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionMountPointInput)(nil)).Elem(), TaskDefinitionMountPointArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionMountPointArrayInput)(nil)).Elem(), TaskDefinitionMountPointArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionPortMappingInput)(nil)).Elem(), TaskDefinitionPortMappingArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionPortMappingArrayInput)(nil)).Elem(), TaskDefinitionPortMappingArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionRepositoryCredentialsInput)(nil)).Elem(), TaskDefinitionRepositoryCredentialsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionRepositoryCredentialsPtrInput)(nil)).Elem(), TaskDefinitionRepositoryCredentialsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionResourceRequirementInput)(nil)).Elem(), TaskDefinitionResourceRequirementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionResourceRequirementArrayInput)(nil)).Elem(), TaskDefinitionResourceRequirementArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionSecretInput)(nil)).Elem(), TaskDefinitionSecretArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionSecretArrayInput)(nil)).Elem(), TaskDefinitionSecretArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionSystemControlInput)(nil)).Elem(), TaskDefinitionSystemControlArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionSystemControlArrayInput)(nil)).Elem(), TaskDefinitionSystemControlArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionTmpfsInput)(nil)).Elem(), TaskDefinitionTmpfsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionTmpfsArrayInput)(nil)).Elem(), TaskDefinitionTmpfsArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionUlimitInput)(nil)).Elem(), TaskDefinitionUlimitArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionUlimitArrayInput)(nil)).Elem(), TaskDefinitionUlimitArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeFromInput)(nil)).Elem(), TaskDefinitionVolumeFromArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*TaskDefinitionVolumeFromArrayInput)(nil)).Elem(), TaskDefinitionVolumeFromArray{}) + pulumi.RegisterOutputType(EC2ServiceTaskDefinitionOutput{}) + pulumi.RegisterOutputType(EC2ServiceTaskDefinitionPtrOutput{}) + pulumi.RegisterOutputType(FargateServiceTaskDefinitionOutput{}) + pulumi.RegisterOutputType(FargateServiceTaskDefinitionPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionContainerDefinitionOutput{}) + pulumi.RegisterOutputType(TaskDefinitionContainerDefinitionPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionContainerDefinitionMapOutput{}) + pulumi.RegisterOutputType(TaskDefinitionContainerDependencyOutput{}) + pulumi.RegisterOutputType(TaskDefinitionContainerDependencyArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionDeviceOutput{}) + pulumi.RegisterOutputType(TaskDefinitionDeviceArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionEnvironmentFileOutput{}) + pulumi.RegisterOutputType(TaskDefinitionEnvironmentFileArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionFirelensConfigurationOutput{}) + pulumi.RegisterOutputType(TaskDefinitionFirelensConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionHealthCheckOutput{}) + pulumi.RegisterOutputType(TaskDefinitionHealthCheckPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionHostEntryOutput{}) + pulumi.RegisterOutputType(TaskDefinitionHostEntryArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionKernelCapabilitiesOutput{}) + pulumi.RegisterOutputType(TaskDefinitionKernelCapabilitiesPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionKeyValuePairOutput{}) + pulumi.RegisterOutputType(TaskDefinitionKeyValuePairArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionLinuxParametersOutput{}) + pulumi.RegisterOutputType(TaskDefinitionLinuxParametersPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionLogConfigurationOutput{}) + pulumi.RegisterOutputType(TaskDefinitionLogConfigurationPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionMountPointOutput{}) + pulumi.RegisterOutputType(TaskDefinitionMountPointArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionPortMappingOutput{}) + pulumi.RegisterOutputType(TaskDefinitionPortMappingArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionRepositoryCredentialsOutput{}) + pulumi.RegisterOutputType(TaskDefinitionRepositoryCredentialsPtrOutput{}) + pulumi.RegisterOutputType(TaskDefinitionResourceRequirementOutput{}) + pulumi.RegisterOutputType(TaskDefinitionResourceRequirementArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionSecretOutput{}) + pulumi.RegisterOutputType(TaskDefinitionSecretArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionSystemControlOutput{}) + pulumi.RegisterOutputType(TaskDefinitionSystemControlArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionTmpfsOutput{}) + pulumi.RegisterOutputType(TaskDefinitionTmpfsArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionUlimitOutput{}) + pulumi.RegisterOutputType(TaskDefinitionUlimitArrayOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeFromOutput{}) + pulumi.RegisterOutputType(TaskDefinitionVolumeFromArrayOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiUtilities.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiUtilities.go new file mode 100644 index 000000000..dfbbc40ef --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiUtilities.go @@ -0,0 +1,184 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package internal + +import ( + "fmt" + "os" + "reflect" + "regexp" + "strconv" + "strings" + + "github.com/blang/semver" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +import ( + "github.com/pulumi/pulumi/sdk/v3/go/pulumi/internals" +) + +type envParser func(v string) interface{} + +func ParseEnvBool(v string) interface{} { + b, err := strconv.ParseBool(v) + if err != nil { + return nil + } + return b +} + +func ParseEnvInt(v string) interface{} { + i, err := strconv.ParseInt(v, 0, 0) + if err != nil { + return nil + } + return int(i) +} + +func ParseEnvFloat(v string) interface{} { + f, err := strconv.ParseFloat(v, 64) + if err != nil { + return nil + } + return f +} + +func ParseEnvStringArray(v string) interface{} { + var result pulumi.StringArray + for _, item := range strings.Split(v, ";") { + result = append(result, pulumi.String(item)) + } + return result +} + +func GetEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} { + for _, v := range vars { + if value, ok := os.LookupEnv(v); ok { + if parser != nil { + return parser(value) + } + return value + } + } + return def +} + +// PkgVersion uses reflection to determine the version of the current package. +// If a version cannot be determined, v1 will be assumed. The second return +// value is always nil. +func PkgVersion() (semver.Version, error) { + // emptyVersion defaults to v0.0.0 + if !SdkVersion.Equals(semver.Version{}) { + return SdkVersion, nil + } + type sentinal struct{} + pkgPath := reflect.TypeOf(sentinal{}).PkgPath() + re := regexp.MustCompile("^.*/pulumi-awsx/sdk(/v\\d+)?") + if match := re.FindStringSubmatch(pkgPath); match != nil { + vStr := match[1] + if len(vStr) == 0 { // If the version capture group was empty, default to v1. + return semver.Version{Major: 1}, nil + } + return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil + } + return semver.Version{Major: 1}, nil +} + +// isZero is a null safe check for if a value is it's types zero value. +func IsZero(v interface{}) bool { + if v == nil { + return true + } + return reflect.ValueOf(v).IsZero() +} + +func CallPlain( + ctx *pulumi.Context, + tok string, + args pulumi.Input, + output pulumi.Output, + self pulumi.Resource, + property string, + resultPtr reflect.Value, + errorPtr *error, + opts ...pulumi.InvokeOption, +) { + res, err := callPlainInner(ctx, tok, args, output, self, opts...) + if err != nil { + *errorPtr = err + return + } + + v := reflect.ValueOf(res) + + // extract res.property field if asked to do so + if property != "" { + v = v.FieldByName("Res") + } + + // return by setting the result pointer; this style of returns shortens the generated code without generics + resultPtr.Elem().Set(v) +} + +func callPlainInner( + ctx *pulumi.Context, + tok string, + args pulumi.Input, + output pulumi.Output, + self pulumi.Resource, + opts ...pulumi.InvokeOption, +) (any, error) { + o, err := ctx.Call(tok, args, output, self, opts...) + if err != nil { + return nil, err + } + + outputData, err := internals.UnsafeAwaitOutput(ctx.Context(), o) + if err != nil { + return nil, err + } + + // Ingoring deps silently. They are typically non-empty, r.f() calls include r as a dependency. + known := outputData.Known + value := outputData.Value + secret := outputData.Secret + + problem := "" + if !known { + problem = "an unknown value" + } else if secret { + problem = "a secret value" + } + + if problem != "" { + return nil, fmt.Errorf("Plain resource method %q incorrectly returned %s. "+ + "This is an error in the provider, please report this to the provider developer.", + tok, problem) + } + + return value, nil +} + +// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource. +func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption { + defaults := []pulumi.ResourceOption{} + + version := semver.MustParse("2.19.0") + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} + +// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke. +func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption { + defaults := []pulumi.InvokeOption{} + + version := semver.MustParse("2.19.0") + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} diff --git a/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiVersion.go b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiVersion.go new file mode 100644 index 000000000..b1b5493e4 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal/pulumiVersion.go @@ -0,0 +1,11 @@ +// Code generated by pulumi-gen-awsx DO NOT EDIT. +// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** + +package internal + +import ( + "github.com/blang/semver" +) + +var SdkVersion semver.Version = semver.Version{} +var pluginDownloadURL string = "" diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/LICENSE b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/LICENSE new file mode 100644 index 000000000..d64569567 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/container.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/container.go new file mode 100644 index 000000000..432c3f736 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/container.go @@ -0,0 +1,1282 @@ +// 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 docker + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// +// Manages the lifecycle of a Docker container. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// ubuntuRemoteImage, err := docker.NewRemoteImage(ctx, "ubuntuRemoteImage", &docker.RemoteImageArgs{ +// Name: pulumi.String("ubuntu:precise"), +// }) +// if err != nil { +// return err +// } +// _, err = docker.NewContainer(ctx, "ubuntuContainer", &docker.ContainerArgs{ +// Image: ubuntuRemoteImage.ImageId, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// ### Example Assuming you created a `container` as follows #!/bin/bash docker run --name foo -p8080:80 -d nginx +// +// prints the container ID +// +// 9a550c0f0163d39d77222d3efd58701b625d47676c25c686c95b5b92d1cba6fd you provide the definition for the resource as follows terraform resource "docker_container" "foo" { +// +// name +// +// = "foo" +// +// image = "nginx" +// +// ports { +// +// internal = "80" +// +// external = "8080" +// +// } } then the import command is as follows #!/bin/bash +// +// ```sh +// +// $ pulumi import docker:index/container:Container foo 9a550c0f0163d39d77222d3efd58701b625d47676c25c686c95b5b92d1cba6fd +// +// ``` +type Container struct { + pulumi.CustomResourceState + + // If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`. + Attach pulumi.BoolPtrOutput `pulumi:"attach"` + // The network bridge of the container as read from its NetworkSettings. + Bridge pulumi.StringOutput `pulumi:"bridge"` + // Add or drop certrain linux capabilities. + Capabilities ContainerCapabilitiesPtrOutput `pulumi:"capabilities"` + // Cgroup namespace mode to use for the container. Possible values are: `private`, `host`. + CgroupnsMode pulumi.StringPtrOutput `pulumi:"cgroupnsMode"` + // The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`. + Command pulumi.StringArrayOutput `pulumi:"command"` + // The logs of the container if its execution is done (`attach` must be disabled). + ContainerLogs pulumi.StringOutput `pulumi:"containerLogs"` + // The total number of milliseconds to wait for the container to reach status 'running' + ContainerReadRefreshTimeoutMilliseconds pulumi.IntPtrOutput `pulumi:"containerReadRefreshTimeoutMilliseconds"` + // A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`. + CpuSet pulumi.StringPtrOutput `pulumi:"cpuSet"` + // CPU shares (relative weight) for the container. + CpuShares pulumi.IntPtrOutput `pulumi:"cpuShares"` + // If defined will attempt to stop the container before destroying. Container will be destroyed after `n` seconds or on successful stop. + DestroyGraceSeconds pulumi.IntPtrOutput `pulumi:"destroyGraceSeconds"` + // Bind devices to the container. + Devices ContainerDeviceArrayOutput `pulumi:"devices"` + // DNS servers to use. + Dns pulumi.StringArrayOutput `pulumi:"dns"` + // DNS options used by the DNS provider(s), see `resolv.conf` documentation for valid list of options. + DnsOpts pulumi.StringArrayOutput `pulumi:"dnsOpts"` + // DNS search domains that are used when bare unqualified hostnames are used inside of the container. + DnsSearches pulumi.StringArrayOutput `pulumi:"dnsSearches"` + // Domain name of the container. + Domainname pulumi.StringPtrOutput `pulumi:"domainname"` + // The command to use as the Entrypoint for the container. The Entrypoint allows you to configure a container to run as an executable. For example, to run `/usr/bin/myprogram` when starting a container, set the entrypoint to be `"/usr/bin/myprogra"]`. + Entrypoints pulumi.StringArrayOutput `pulumi:"entrypoints"` + // Environment variables to set in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs pulumi.StringArrayOutput `pulumi:"envs"` + // The exit code of the container if its execution is done (`mustRun` must be disabled). + ExitCode pulumi.IntOutput `pulumi:"exitCode"` + // GPU devices to add to the container. Currently, only the value `all` is supported. Passing any other value will result in unexpected behavior. + Gpus pulumi.StringPtrOutput `pulumi:"gpus"` + // Additional groups for the container user + GroupAdds pulumi.StringArrayOutput `pulumi:"groupAdds"` + // A test to perform to check that the container is healthy + Healthcheck ContainerHealthcheckOutput `pulumi:"healthcheck"` + // Hostname of the container. + Hostname pulumi.StringOutput `pulumi:"hostname"` + // Additional hosts to add to the container. + Hosts ContainerHostArrayOutput `pulumi:"hosts"` + // The ID of the image to back this container. The easiest way to get this value is to use the `RemoteImage` resource as is shown in the example. + Image pulumi.StringOutput `pulumi:"image"` + // Configured whether an init process should be injected for this container. If unset this will default to the `dockerd` defaults. + Init pulumi.BoolOutput `pulumi:"init"` + // IPC sharing mode for the container. Possible values are: `none`, `private`, `shareable`, `container:` or `host`. + IpcMode pulumi.StringOutput `pulumi:"ipcMode"` + // User-defined key/value metadata + Labels ContainerLabelArrayOutput `pulumi:"labels"` + // The logging driver to use for the container. + LogDriver pulumi.StringOutput `pulumi:"logDriver"` + // Key/value pairs to use as options for the logging driver. + LogOpts pulumi.MapOutput `pulumi:"logOpts"` + // Save the container logs (`attach` must be enabled). Defaults to `false`. + Logs pulumi.BoolPtrOutput `pulumi:"logs"` + // The maximum amount of times to an attempt a restart when `restart` is set to 'on-failure'. + MaxRetryCount pulumi.IntPtrOutput `pulumi:"maxRetryCount"` + // The memory limit for the container in MBs. + Memory pulumi.IntPtrOutput `pulumi:"memory"` + // The total memory limit (memory + swap) for the container in MBs. This setting may compute to `-1` after `pulumi up` if the target host doesn't support memory swap, when that is the case docker will use a soft limitation. + MemorySwap pulumi.IntPtrOutput `pulumi:"memorySwap"` + // Specification for mounts to be added to containers created as part of the service. + Mounts ContainerMountArrayOutput `pulumi:"mounts"` + // If `true`, then the Docker container will be kept running. If `false`, then as long as the container exists, Terraform + // assumes it is successful. Defaults to `true`. + MustRun pulumi.BoolPtrOutput `pulumi:"mustRun"` + // The name of the container. + Name pulumi.StringOutput `pulumi:"name"` + // The data of the networks the container is connected to. + NetworkDatas ContainerNetworkDataArrayOutput `pulumi:"networkDatas"` + // Network mode of the container. + NetworkMode pulumi.StringPtrOutput `pulumi:"networkMode"` + // The networks the container is attached to + NetworksAdvanced ContainerNetworksAdvancedArrayOutput `pulumi:"networksAdvanced"` + // he PID (Process) Namespace mode for the container. Either `container:` or `host`. + PidMode pulumi.StringPtrOutput `pulumi:"pidMode"` + // Publish a container's port(s) to the host. + Ports ContainerPortArrayOutput `pulumi:"ports"` + // If `true`, the container runs in privileged mode. + Privileged pulumi.BoolPtrOutput `pulumi:"privileged"` + // Publish all ports of the container. + PublishAllPorts pulumi.BoolPtrOutput `pulumi:"publishAllPorts"` + // If `true`, the container will be started as readonly. Defaults to `false`. + ReadOnly pulumi.BoolPtrOutput `pulumi:"readOnly"` + // If `true`, it will remove anonymous volumes associated with the container. Defaults to `true`. + RemoveVolumes pulumi.BoolPtrOutput `pulumi:"removeVolumes"` + // The restart policy for the container. Must be one of 'no', 'on-failure', 'always', 'unless-stopped'. Defaults to `no`. + Restart pulumi.StringPtrOutput `pulumi:"restart"` + // If `true`, then the container will be automatically removed when it exits. Defaults to `false`. + Rm pulumi.BoolPtrOutput `pulumi:"rm"` + // Runtime to use for the container. + Runtime pulumi.StringOutput `pulumi:"runtime"` + // List of string values to customize labels for MLS systems, such as SELinux. See https://docs.docker.com/engine/reference/run/#security-configuration. + SecurityOpts pulumi.StringArrayOutput `pulumi:"securityOpts"` + // Size of `/dev/shm` in MBs. + ShmSize pulumi.IntOutput `pulumi:"shmSize"` + // If `true`, then the Docker container will be started after creation. If `false`, then the container is only created. Defaults to `true`. + Start pulumi.BoolPtrOutput `pulumi:"start"` + // If `true`, keep STDIN open even if not attached (`docker run -i`). Defaults to `false`. + StdinOpen pulumi.BoolPtrOutput `pulumi:"stdinOpen"` + // Signal to stop a container (default `SIGTERM`). + StopSignal pulumi.StringOutput `pulumi:"stopSignal"` + // Timeout (in seconds) to stop a container. + StopTimeout pulumi.IntOutput `pulumi:"stopTimeout"` + // Key/value pairs for the storage driver options, e.g. `size`: `120G` + StorageOpts pulumi.MapOutput `pulumi:"storageOpts"` + // A map of kernel parameters (sysctls) to set in the container. + Sysctls pulumi.MapOutput `pulumi:"sysctls"` + // A map of container directories which should be replaced by `tmpfs mounts`, and their corresponding mount options. + Tmpfs pulumi.MapOutput `pulumi:"tmpfs"` + // If `true`, allocate a pseudo-tty (`docker run -t`). Defaults to `false`. + Tty pulumi.BoolPtrOutput `pulumi:"tty"` + // Ulimit options to add. + Ulimits ContainerUlimitArrayOutput `pulumi:"ulimits"` + // Specifies files to upload to the container before starting it. Only one of `content` or `contentBase64` can be set and at least one of them has to be set. + Uploads ContainerUploadArrayOutput `pulumi:"uploads"` + // User used for run the first process. Format is `user` or `user:group` which user and group can be passed literraly or by name. + User pulumi.StringPtrOutput `pulumi:"user"` + // Sets the usernamespace mode for the container when usernamespace remapping option is enabled. + UsernsMode pulumi.StringPtrOutput `pulumi:"usernsMode"` + // Spec for mounting volumes in the container. + Volumes ContainerVolumeArrayOutput `pulumi:"volumes"` + // If `true`, then the Docker container is waited for being healthy state after creation. If `false`, then the container health state is not checked. Defaults to `false`. + Wait pulumi.BoolPtrOutput `pulumi:"wait"` + // The timeout in seconds to wait the container to be healthy after creation. Defaults to `60`. + WaitTimeout pulumi.IntPtrOutput `pulumi:"waitTimeout"` + // The working directory for commands to run in. + WorkingDir pulumi.StringPtrOutput `pulumi:"workingDir"` +} + +// NewContainer registers a new resource with the given unique name, arguments, and options. +func NewContainer(ctx *pulumi.Context, + name string, args *ContainerArgs, opts ...pulumi.ResourceOption) (*Container, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Image == nil { + return nil, errors.New("invalid value for required argument 'Image'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Container + err := ctx.RegisterResource("docker:index/container:Container", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetContainer gets an existing Container 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 GetContainer(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ContainerState, opts ...pulumi.ResourceOption) (*Container, error) { + var resource Container + err := ctx.ReadResource("docker:index/container:Container", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Container resources. +type containerState struct { + // If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`. + Attach *bool `pulumi:"attach"` + // The network bridge of the container as read from its NetworkSettings. + Bridge *string `pulumi:"bridge"` + // Add or drop certrain linux capabilities. + Capabilities *ContainerCapabilities `pulumi:"capabilities"` + // Cgroup namespace mode to use for the container. Possible values are: `private`, `host`. + CgroupnsMode *string `pulumi:"cgroupnsMode"` + // The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`. + Command []string `pulumi:"command"` + // The logs of the container if its execution is done (`attach` must be disabled). + ContainerLogs *string `pulumi:"containerLogs"` + // The total number of milliseconds to wait for the container to reach status 'running' + ContainerReadRefreshTimeoutMilliseconds *int `pulumi:"containerReadRefreshTimeoutMilliseconds"` + // A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`. + CpuSet *string `pulumi:"cpuSet"` + // CPU shares (relative weight) for the container. + CpuShares *int `pulumi:"cpuShares"` + // If defined will attempt to stop the container before destroying. Container will be destroyed after `n` seconds or on successful stop. + DestroyGraceSeconds *int `pulumi:"destroyGraceSeconds"` + // Bind devices to the container. + Devices []ContainerDevice `pulumi:"devices"` + // DNS servers to use. + Dns []string `pulumi:"dns"` + // DNS options used by the DNS provider(s), see `resolv.conf` documentation for valid list of options. + DnsOpts []string `pulumi:"dnsOpts"` + // DNS search domains that are used when bare unqualified hostnames are used inside of the container. + DnsSearches []string `pulumi:"dnsSearches"` + // Domain name of the container. + Domainname *string `pulumi:"domainname"` + // The command to use as the Entrypoint for the container. The Entrypoint allows you to configure a container to run as an executable. For example, to run `/usr/bin/myprogram` when starting a container, set the entrypoint to be `"/usr/bin/myprogra"]`. + Entrypoints []string `pulumi:"entrypoints"` + // Environment variables to set in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs []string `pulumi:"envs"` + // The exit code of the container if its execution is done (`mustRun` must be disabled). + ExitCode *int `pulumi:"exitCode"` + // GPU devices to add to the container. Currently, only the value `all` is supported. Passing any other value will result in unexpected behavior. + Gpus *string `pulumi:"gpus"` + // Additional groups for the container user + GroupAdds []string `pulumi:"groupAdds"` + // A test to perform to check that the container is healthy + Healthcheck *ContainerHealthcheck `pulumi:"healthcheck"` + // Hostname of the container. + Hostname *string `pulumi:"hostname"` + // Additional hosts to add to the container. + Hosts []ContainerHost `pulumi:"hosts"` + // The ID of the image to back this container. The easiest way to get this value is to use the `RemoteImage` resource as is shown in the example. + Image *string `pulumi:"image"` + // Configured whether an init process should be injected for this container. If unset this will default to the `dockerd` defaults. + Init *bool `pulumi:"init"` + // IPC sharing mode for the container. Possible values are: `none`, `private`, `shareable`, `container:` or `host`. + IpcMode *string `pulumi:"ipcMode"` + // User-defined key/value metadata + Labels []ContainerLabel `pulumi:"labels"` + // The logging driver to use for the container. + LogDriver *string `pulumi:"logDriver"` + // Key/value pairs to use as options for the logging driver. + LogOpts map[string]interface{} `pulumi:"logOpts"` + // Save the container logs (`attach` must be enabled). Defaults to `false`. + Logs *bool `pulumi:"logs"` + // The maximum amount of times to an attempt a restart when `restart` is set to 'on-failure'. + MaxRetryCount *int `pulumi:"maxRetryCount"` + // The memory limit for the container in MBs. + Memory *int `pulumi:"memory"` + // The total memory limit (memory + swap) for the container in MBs. This setting may compute to `-1` after `pulumi up` if the target host doesn't support memory swap, when that is the case docker will use a soft limitation. + MemorySwap *int `pulumi:"memorySwap"` + // Specification for mounts to be added to containers created as part of the service. + Mounts []ContainerMount `pulumi:"mounts"` + // If `true`, then the Docker container will be kept running. If `false`, then as long as the container exists, Terraform + // assumes it is successful. Defaults to `true`. + MustRun *bool `pulumi:"mustRun"` + // The name of the container. + Name *string `pulumi:"name"` + // The data of the networks the container is connected to. + NetworkDatas []ContainerNetworkData `pulumi:"networkDatas"` + // Network mode of the container. + NetworkMode *string `pulumi:"networkMode"` + // The networks the container is attached to + NetworksAdvanced []ContainerNetworksAdvanced `pulumi:"networksAdvanced"` + // he PID (Process) Namespace mode for the container. Either `container:` or `host`. + PidMode *string `pulumi:"pidMode"` + // Publish a container's port(s) to the host. + Ports []ContainerPort `pulumi:"ports"` + // If `true`, the container runs in privileged mode. + Privileged *bool `pulumi:"privileged"` + // Publish all ports of the container. + PublishAllPorts *bool `pulumi:"publishAllPorts"` + // If `true`, the container will be started as readonly. Defaults to `false`. + ReadOnly *bool `pulumi:"readOnly"` + // If `true`, it will remove anonymous volumes associated with the container. Defaults to `true`. + RemoveVolumes *bool `pulumi:"removeVolumes"` + // The restart policy for the container. Must be one of 'no', 'on-failure', 'always', 'unless-stopped'. Defaults to `no`. + Restart *string `pulumi:"restart"` + // If `true`, then the container will be automatically removed when it exits. Defaults to `false`. + Rm *bool `pulumi:"rm"` + // Runtime to use for the container. + Runtime *string `pulumi:"runtime"` + // List of string values to customize labels for MLS systems, such as SELinux. See https://docs.docker.com/engine/reference/run/#security-configuration. + SecurityOpts []string `pulumi:"securityOpts"` + // Size of `/dev/shm` in MBs. + ShmSize *int `pulumi:"shmSize"` + // If `true`, then the Docker container will be started after creation. If `false`, then the container is only created. Defaults to `true`. + Start *bool `pulumi:"start"` + // If `true`, keep STDIN open even if not attached (`docker run -i`). Defaults to `false`. + StdinOpen *bool `pulumi:"stdinOpen"` + // Signal to stop a container (default `SIGTERM`). + StopSignal *string `pulumi:"stopSignal"` + // Timeout (in seconds) to stop a container. + StopTimeout *int `pulumi:"stopTimeout"` + // Key/value pairs for the storage driver options, e.g. `size`: `120G` + StorageOpts map[string]interface{} `pulumi:"storageOpts"` + // A map of kernel parameters (sysctls) to set in the container. + Sysctls map[string]interface{} `pulumi:"sysctls"` + // A map of container directories which should be replaced by `tmpfs mounts`, and their corresponding mount options. + Tmpfs map[string]interface{} `pulumi:"tmpfs"` + // If `true`, allocate a pseudo-tty (`docker run -t`). Defaults to `false`. + Tty *bool `pulumi:"tty"` + // Ulimit options to add. + Ulimits []ContainerUlimit `pulumi:"ulimits"` + // Specifies files to upload to the container before starting it. Only one of `content` or `contentBase64` can be set and at least one of them has to be set. + Uploads []ContainerUpload `pulumi:"uploads"` + // User used for run the first process. Format is `user` or `user:group` which user and group can be passed literraly or by name. + User *string `pulumi:"user"` + // Sets the usernamespace mode for the container when usernamespace remapping option is enabled. + UsernsMode *string `pulumi:"usernsMode"` + // Spec for mounting volumes in the container. + Volumes []ContainerVolume `pulumi:"volumes"` + // If `true`, then the Docker container is waited for being healthy state after creation. If `false`, then the container health state is not checked. Defaults to `false`. + Wait *bool `pulumi:"wait"` + // The timeout in seconds to wait the container to be healthy after creation. Defaults to `60`. + WaitTimeout *int `pulumi:"waitTimeout"` + // The working directory for commands to run in. + WorkingDir *string `pulumi:"workingDir"` +} + +type ContainerState struct { + // If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`. + Attach pulumi.BoolPtrInput + // The network bridge of the container as read from its NetworkSettings. + Bridge pulumi.StringPtrInput + // Add or drop certrain linux capabilities. + Capabilities ContainerCapabilitiesPtrInput + // Cgroup namespace mode to use for the container. Possible values are: `private`, `host`. + CgroupnsMode pulumi.StringPtrInput + // The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`. + Command pulumi.StringArrayInput + // The logs of the container if its execution is done (`attach` must be disabled). + ContainerLogs pulumi.StringPtrInput + // The total number of milliseconds to wait for the container to reach status 'running' + ContainerReadRefreshTimeoutMilliseconds pulumi.IntPtrInput + // A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`. + CpuSet pulumi.StringPtrInput + // CPU shares (relative weight) for the container. + CpuShares pulumi.IntPtrInput + // If defined will attempt to stop the container before destroying. Container will be destroyed after `n` seconds or on successful stop. + DestroyGraceSeconds pulumi.IntPtrInput + // Bind devices to the container. + Devices ContainerDeviceArrayInput + // DNS servers to use. + Dns pulumi.StringArrayInput + // DNS options used by the DNS provider(s), see `resolv.conf` documentation for valid list of options. + DnsOpts pulumi.StringArrayInput + // DNS search domains that are used when bare unqualified hostnames are used inside of the container. + DnsSearches pulumi.StringArrayInput + // Domain name of the container. + Domainname pulumi.StringPtrInput + // The command to use as the Entrypoint for the container. The Entrypoint allows you to configure a container to run as an executable. For example, to run `/usr/bin/myprogram` when starting a container, set the entrypoint to be `"/usr/bin/myprogra"]`. + Entrypoints pulumi.StringArrayInput + // Environment variables to set in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs pulumi.StringArrayInput + // The exit code of the container if its execution is done (`mustRun` must be disabled). + ExitCode pulumi.IntPtrInput + // GPU devices to add to the container. Currently, only the value `all` is supported. Passing any other value will result in unexpected behavior. + Gpus pulumi.StringPtrInput + // Additional groups for the container user + GroupAdds pulumi.StringArrayInput + // A test to perform to check that the container is healthy + Healthcheck ContainerHealthcheckPtrInput + // Hostname of the container. + Hostname pulumi.StringPtrInput + // Additional hosts to add to the container. + Hosts ContainerHostArrayInput + // The ID of the image to back this container. The easiest way to get this value is to use the `RemoteImage` resource as is shown in the example. + Image pulumi.StringPtrInput + // Configured whether an init process should be injected for this container. If unset this will default to the `dockerd` defaults. + Init pulumi.BoolPtrInput + // IPC sharing mode for the container. Possible values are: `none`, `private`, `shareable`, `container:` or `host`. + IpcMode pulumi.StringPtrInput + // User-defined key/value metadata + Labels ContainerLabelArrayInput + // The logging driver to use for the container. + LogDriver pulumi.StringPtrInput + // Key/value pairs to use as options for the logging driver. + LogOpts pulumi.MapInput + // Save the container logs (`attach` must be enabled). Defaults to `false`. + Logs pulumi.BoolPtrInput + // The maximum amount of times to an attempt a restart when `restart` is set to 'on-failure'. + MaxRetryCount pulumi.IntPtrInput + // The memory limit for the container in MBs. + Memory pulumi.IntPtrInput + // The total memory limit (memory + swap) for the container in MBs. This setting may compute to `-1` after `pulumi up` if the target host doesn't support memory swap, when that is the case docker will use a soft limitation. + MemorySwap pulumi.IntPtrInput + // Specification for mounts to be added to containers created as part of the service. + Mounts ContainerMountArrayInput + // If `true`, then the Docker container will be kept running. If `false`, then as long as the container exists, Terraform + // assumes it is successful. Defaults to `true`. + MustRun pulumi.BoolPtrInput + // The name of the container. + Name pulumi.StringPtrInput + // The data of the networks the container is connected to. + NetworkDatas ContainerNetworkDataArrayInput + // Network mode of the container. + NetworkMode pulumi.StringPtrInput + // The networks the container is attached to + NetworksAdvanced ContainerNetworksAdvancedArrayInput + // he PID (Process) Namespace mode for the container. Either `container:` or `host`. + PidMode pulumi.StringPtrInput + // Publish a container's port(s) to the host. + Ports ContainerPortArrayInput + // If `true`, the container runs in privileged mode. + Privileged pulumi.BoolPtrInput + // Publish all ports of the container. + PublishAllPorts pulumi.BoolPtrInput + // If `true`, the container will be started as readonly. Defaults to `false`. + ReadOnly pulumi.BoolPtrInput + // If `true`, it will remove anonymous volumes associated with the container. Defaults to `true`. + RemoveVolumes pulumi.BoolPtrInput + // The restart policy for the container. Must be one of 'no', 'on-failure', 'always', 'unless-stopped'. Defaults to `no`. + Restart pulumi.StringPtrInput + // If `true`, then the container will be automatically removed when it exits. Defaults to `false`. + Rm pulumi.BoolPtrInput + // Runtime to use for the container. + Runtime pulumi.StringPtrInput + // List of string values to customize labels for MLS systems, such as SELinux. See https://docs.docker.com/engine/reference/run/#security-configuration. + SecurityOpts pulumi.StringArrayInput + // Size of `/dev/shm` in MBs. + ShmSize pulumi.IntPtrInput + // If `true`, then the Docker container will be started after creation. If `false`, then the container is only created. Defaults to `true`. + Start pulumi.BoolPtrInput + // If `true`, keep STDIN open even if not attached (`docker run -i`). Defaults to `false`. + StdinOpen pulumi.BoolPtrInput + // Signal to stop a container (default `SIGTERM`). + StopSignal pulumi.StringPtrInput + // Timeout (in seconds) to stop a container. + StopTimeout pulumi.IntPtrInput + // Key/value pairs for the storage driver options, e.g. `size`: `120G` + StorageOpts pulumi.MapInput + // A map of kernel parameters (sysctls) to set in the container. + Sysctls pulumi.MapInput + // A map of container directories which should be replaced by `tmpfs mounts`, and their corresponding mount options. + Tmpfs pulumi.MapInput + // If `true`, allocate a pseudo-tty (`docker run -t`). Defaults to `false`. + Tty pulumi.BoolPtrInput + // Ulimit options to add. + Ulimits ContainerUlimitArrayInput + // Specifies files to upload to the container before starting it. Only one of `content` or `contentBase64` can be set and at least one of them has to be set. + Uploads ContainerUploadArrayInput + // User used for run the first process. Format is `user` or `user:group` which user and group can be passed literraly or by name. + User pulumi.StringPtrInput + // Sets the usernamespace mode for the container when usernamespace remapping option is enabled. + UsernsMode pulumi.StringPtrInput + // Spec for mounting volumes in the container. + Volumes ContainerVolumeArrayInput + // If `true`, then the Docker container is waited for being healthy state after creation. If `false`, then the container health state is not checked. Defaults to `false`. + Wait pulumi.BoolPtrInput + // The timeout in seconds to wait the container to be healthy after creation. Defaults to `60`. + WaitTimeout pulumi.IntPtrInput + // The working directory for commands to run in. + WorkingDir pulumi.StringPtrInput +} + +func (ContainerState) ElementType() reflect.Type { + return reflect.TypeOf((*containerState)(nil)).Elem() +} + +type containerArgs struct { + // If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`. + Attach *bool `pulumi:"attach"` + // Add or drop certrain linux capabilities. + Capabilities *ContainerCapabilities `pulumi:"capabilities"` + // Cgroup namespace mode to use for the container. Possible values are: `private`, `host`. + CgroupnsMode *string `pulumi:"cgroupnsMode"` + // The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`. + Command []string `pulumi:"command"` + // The total number of milliseconds to wait for the container to reach status 'running' + ContainerReadRefreshTimeoutMilliseconds *int `pulumi:"containerReadRefreshTimeoutMilliseconds"` + // A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`. + CpuSet *string `pulumi:"cpuSet"` + // CPU shares (relative weight) for the container. + CpuShares *int `pulumi:"cpuShares"` + // If defined will attempt to stop the container before destroying. Container will be destroyed after `n` seconds or on successful stop. + DestroyGraceSeconds *int `pulumi:"destroyGraceSeconds"` + // Bind devices to the container. + Devices []ContainerDevice `pulumi:"devices"` + // DNS servers to use. + Dns []string `pulumi:"dns"` + // DNS options used by the DNS provider(s), see `resolv.conf` documentation for valid list of options. + DnsOpts []string `pulumi:"dnsOpts"` + // DNS search domains that are used when bare unqualified hostnames are used inside of the container. + DnsSearches []string `pulumi:"dnsSearches"` + // Domain name of the container. + Domainname *string `pulumi:"domainname"` + // The command to use as the Entrypoint for the container. The Entrypoint allows you to configure a container to run as an executable. For example, to run `/usr/bin/myprogram` when starting a container, set the entrypoint to be `"/usr/bin/myprogra"]`. + Entrypoints []string `pulumi:"entrypoints"` + // Environment variables to set in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs []string `pulumi:"envs"` + // GPU devices to add to the container. Currently, only the value `all` is supported. Passing any other value will result in unexpected behavior. + Gpus *string `pulumi:"gpus"` + // Additional groups for the container user + GroupAdds []string `pulumi:"groupAdds"` + // A test to perform to check that the container is healthy + Healthcheck *ContainerHealthcheck `pulumi:"healthcheck"` + // Hostname of the container. + Hostname *string `pulumi:"hostname"` + // Additional hosts to add to the container. + Hosts []ContainerHost `pulumi:"hosts"` + // The ID of the image to back this container. The easiest way to get this value is to use the `RemoteImage` resource as is shown in the example. + Image string `pulumi:"image"` + // Configured whether an init process should be injected for this container. If unset this will default to the `dockerd` defaults. + Init *bool `pulumi:"init"` + // IPC sharing mode for the container. Possible values are: `none`, `private`, `shareable`, `container:` or `host`. + IpcMode *string `pulumi:"ipcMode"` + // User-defined key/value metadata + Labels []ContainerLabel `pulumi:"labels"` + // The logging driver to use for the container. + LogDriver *string `pulumi:"logDriver"` + // Key/value pairs to use as options for the logging driver. + LogOpts map[string]interface{} `pulumi:"logOpts"` + // Save the container logs (`attach` must be enabled). Defaults to `false`. + Logs *bool `pulumi:"logs"` + // The maximum amount of times to an attempt a restart when `restart` is set to 'on-failure'. + MaxRetryCount *int `pulumi:"maxRetryCount"` + // The memory limit for the container in MBs. + Memory *int `pulumi:"memory"` + // The total memory limit (memory + swap) for the container in MBs. This setting may compute to `-1` after `pulumi up` if the target host doesn't support memory swap, when that is the case docker will use a soft limitation. + MemorySwap *int `pulumi:"memorySwap"` + // Specification for mounts to be added to containers created as part of the service. + Mounts []ContainerMount `pulumi:"mounts"` + // If `true`, then the Docker container will be kept running. If `false`, then as long as the container exists, Terraform + // assumes it is successful. Defaults to `true`. + MustRun *bool `pulumi:"mustRun"` + // The name of the container. + Name *string `pulumi:"name"` + // Network mode of the container. + NetworkMode *string `pulumi:"networkMode"` + // The networks the container is attached to + NetworksAdvanced []ContainerNetworksAdvanced `pulumi:"networksAdvanced"` + // he PID (Process) Namespace mode for the container. Either `container:` or `host`. + PidMode *string `pulumi:"pidMode"` + // Publish a container's port(s) to the host. + Ports []ContainerPort `pulumi:"ports"` + // If `true`, the container runs in privileged mode. + Privileged *bool `pulumi:"privileged"` + // Publish all ports of the container. + PublishAllPorts *bool `pulumi:"publishAllPorts"` + // If `true`, the container will be started as readonly. Defaults to `false`. + ReadOnly *bool `pulumi:"readOnly"` + // If `true`, it will remove anonymous volumes associated with the container. Defaults to `true`. + RemoveVolumes *bool `pulumi:"removeVolumes"` + // The restart policy for the container. Must be one of 'no', 'on-failure', 'always', 'unless-stopped'. Defaults to `no`. + Restart *string `pulumi:"restart"` + // If `true`, then the container will be automatically removed when it exits. Defaults to `false`. + Rm *bool `pulumi:"rm"` + // Runtime to use for the container. + Runtime *string `pulumi:"runtime"` + // List of string values to customize labels for MLS systems, such as SELinux. See https://docs.docker.com/engine/reference/run/#security-configuration. + SecurityOpts []string `pulumi:"securityOpts"` + // Size of `/dev/shm` in MBs. + ShmSize *int `pulumi:"shmSize"` + // If `true`, then the Docker container will be started after creation. If `false`, then the container is only created. Defaults to `true`. + Start *bool `pulumi:"start"` + // If `true`, keep STDIN open even if not attached (`docker run -i`). Defaults to `false`. + StdinOpen *bool `pulumi:"stdinOpen"` + // Signal to stop a container (default `SIGTERM`). + StopSignal *string `pulumi:"stopSignal"` + // Timeout (in seconds) to stop a container. + StopTimeout *int `pulumi:"stopTimeout"` + // Key/value pairs for the storage driver options, e.g. `size`: `120G` + StorageOpts map[string]interface{} `pulumi:"storageOpts"` + // A map of kernel parameters (sysctls) to set in the container. + Sysctls map[string]interface{} `pulumi:"sysctls"` + // A map of container directories which should be replaced by `tmpfs mounts`, and their corresponding mount options. + Tmpfs map[string]interface{} `pulumi:"tmpfs"` + // If `true`, allocate a pseudo-tty (`docker run -t`). Defaults to `false`. + Tty *bool `pulumi:"tty"` + // Ulimit options to add. + Ulimits []ContainerUlimit `pulumi:"ulimits"` + // Specifies files to upload to the container before starting it. Only one of `content` or `contentBase64` can be set and at least one of them has to be set. + Uploads []ContainerUpload `pulumi:"uploads"` + // User used for run the first process. Format is `user` or `user:group` which user and group can be passed literraly or by name. + User *string `pulumi:"user"` + // Sets the usernamespace mode for the container when usernamespace remapping option is enabled. + UsernsMode *string `pulumi:"usernsMode"` + // Spec for mounting volumes in the container. + Volumes []ContainerVolume `pulumi:"volumes"` + // If `true`, then the Docker container is waited for being healthy state after creation. If `false`, then the container health state is not checked. Defaults to `false`. + Wait *bool `pulumi:"wait"` + // The timeout in seconds to wait the container to be healthy after creation. Defaults to `60`. + WaitTimeout *int `pulumi:"waitTimeout"` + // The working directory for commands to run in. + WorkingDir *string `pulumi:"workingDir"` +} + +// The set of arguments for constructing a Container resource. +type ContainerArgs struct { + // If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`. + Attach pulumi.BoolPtrInput + // Add or drop certrain linux capabilities. + Capabilities ContainerCapabilitiesPtrInput + // Cgroup namespace mode to use for the container. Possible values are: `private`, `host`. + CgroupnsMode pulumi.StringPtrInput + // The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`. + Command pulumi.StringArrayInput + // The total number of milliseconds to wait for the container to reach status 'running' + ContainerReadRefreshTimeoutMilliseconds pulumi.IntPtrInput + // A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`. + CpuSet pulumi.StringPtrInput + // CPU shares (relative weight) for the container. + CpuShares pulumi.IntPtrInput + // If defined will attempt to stop the container before destroying. Container will be destroyed after `n` seconds or on successful stop. + DestroyGraceSeconds pulumi.IntPtrInput + // Bind devices to the container. + Devices ContainerDeviceArrayInput + // DNS servers to use. + Dns pulumi.StringArrayInput + // DNS options used by the DNS provider(s), see `resolv.conf` documentation for valid list of options. + DnsOpts pulumi.StringArrayInput + // DNS search domains that are used when bare unqualified hostnames are used inside of the container. + DnsSearches pulumi.StringArrayInput + // Domain name of the container. + Domainname pulumi.StringPtrInput + // The command to use as the Entrypoint for the container. The Entrypoint allows you to configure a container to run as an executable. For example, to run `/usr/bin/myprogram` when starting a container, set the entrypoint to be `"/usr/bin/myprogra"]`. + Entrypoints pulumi.StringArrayInput + // Environment variables to set in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs pulumi.StringArrayInput + // GPU devices to add to the container. Currently, only the value `all` is supported. Passing any other value will result in unexpected behavior. + Gpus pulumi.StringPtrInput + // Additional groups for the container user + GroupAdds pulumi.StringArrayInput + // A test to perform to check that the container is healthy + Healthcheck ContainerHealthcheckPtrInput + // Hostname of the container. + Hostname pulumi.StringPtrInput + // Additional hosts to add to the container. + Hosts ContainerHostArrayInput + // The ID of the image to back this container. The easiest way to get this value is to use the `RemoteImage` resource as is shown in the example. + Image pulumi.StringInput + // Configured whether an init process should be injected for this container. If unset this will default to the `dockerd` defaults. + Init pulumi.BoolPtrInput + // IPC sharing mode for the container. Possible values are: `none`, `private`, `shareable`, `container:` or `host`. + IpcMode pulumi.StringPtrInput + // User-defined key/value metadata + Labels ContainerLabelArrayInput + // The logging driver to use for the container. + LogDriver pulumi.StringPtrInput + // Key/value pairs to use as options for the logging driver. + LogOpts pulumi.MapInput + // Save the container logs (`attach` must be enabled). Defaults to `false`. + Logs pulumi.BoolPtrInput + // The maximum amount of times to an attempt a restart when `restart` is set to 'on-failure'. + MaxRetryCount pulumi.IntPtrInput + // The memory limit for the container in MBs. + Memory pulumi.IntPtrInput + // The total memory limit (memory + swap) for the container in MBs. This setting may compute to `-1` after `pulumi up` if the target host doesn't support memory swap, when that is the case docker will use a soft limitation. + MemorySwap pulumi.IntPtrInput + // Specification for mounts to be added to containers created as part of the service. + Mounts ContainerMountArrayInput + // If `true`, then the Docker container will be kept running. If `false`, then as long as the container exists, Terraform + // assumes it is successful. Defaults to `true`. + MustRun pulumi.BoolPtrInput + // The name of the container. + Name pulumi.StringPtrInput + // Network mode of the container. + NetworkMode pulumi.StringPtrInput + // The networks the container is attached to + NetworksAdvanced ContainerNetworksAdvancedArrayInput + // he PID (Process) Namespace mode for the container. Either `container:` or `host`. + PidMode pulumi.StringPtrInput + // Publish a container's port(s) to the host. + Ports ContainerPortArrayInput + // If `true`, the container runs in privileged mode. + Privileged pulumi.BoolPtrInput + // Publish all ports of the container. + PublishAllPorts pulumi.BoolPtrInput + // If `true`, the container will be started as readonly. Defaults to `false`. + ReadOnly pulumi.BoolPtrInput + // If `true`, it will remove anonymous volumes associated with the container. Defaults to `true`. + RemoveVolumes pulumi.BoolPtrInput + // The restart policy for the container. Must be one of 'no', 'on-failure', 'always', 'unless-stopped'. Defaults to `no`. + Restart pulumi.StringPtrInput + // If `true`, then the container will be automatically removed when it exits. Defaults to `false`. + Rm pulumi.BoolPtrInput + // Runtime to use for the container. + Runtime pulumi.StringPtrInput + // List of string values to customize labels for MLS systems, such as SELinux. See https://docs.docker.com/engine/reference/run/#security-configuration. + SecurityOpts pulumi.StringArrayInput + // Size of `/dev/shm` in MBs. + ShmSize pulumi.IntPtrInput + // If `true`, then the Docker container will be started after creation. If `false`, then the container is only created. Defaults to `true`. + Start pulumi.BoolPtrInput + // If `true`, keep STDIN open even if not attached (`docker run -i`). Defaults to `false`. + StdinOpen pulumi.BoolPtrInput + // Signal to stop a container (default `SIGTERM`). + StopSignal pulumi.StringPtrInput + // Timeout (in seconds) to stop a container. + StopTimeout pulumi.IntPtrInput + // Key/value pairs for the storage driver options, e.g. `size`: `120G` + StorageOpts pulumi.MapInput + // A map of kernel parameters (sysctls) to set in the container. + Sysctls pulumi.MapInput + // A map of container directories which should be replaced by `tmpfs mounts`, and their corresponding mount options. + Tmpfs pulumi.MapInput + // If `true`, allocate a pseudo-tty (`docker run -t`). Defaults to `false`. + Tty pulumi.BoolPtrInput + // Ulimit options to add. + Ulimits ContainerUlimitArrayInput + // Specifies files to upload to the container before starting it. Only one of `content` or `contentBase64` can be set and at least one of them has to be set. + Uploads ContainerUploadArrayInput + // User used for run the first process. Format is `user` or `user:group` which user and group can be passed literraly or by name. + User pulumi.StringPtrInput + // Sets the usernamespace mode for the container when usernamespace remapping option is enabled. + UsernsMode pulumi.StringPtrInput + // Spec for mounting volumes in the container. + Volumes ContainerVolumeArrayInput + // If `true`, then the Docker container is waited for being healthy state after creation. If `false`, then the container health state is not checked. Defaults to `false`. + Wait pulumi.BoolPtrInput + // The timeout in seconds to wait the container to be healthy after creation. Defaults to `60`. + WaitTimeout pulumi.IntPtrInput + // The working directory for commands to run in. + WorkingDir pulumi.StringPtrInput +} + +func (ContainerArgs) ElementType() reflect.Type { + return reflect.TypeOf((*containerArgs)(nil)).Elem() +} + +type ContainerInput interface { + pulumi.Input + + ToContainerOutput() ContainerOutput + ToContainerOutputWithContext(ctx context.Context) ContainerOutput +} + +func (*Container) ElementType() reflect.Type { + return reflect.TypeOf((**Container)(nil)).Elem() +} + +func (i *Container) ToContainerOutput() ContainerOutput { + return i.ToContainerOutputWithContext(context.Background()) +} + +func (i *Container) ToContainerOutputWithContext(ctx context.Context) ContainerOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerOutput) +} + +func (i *Container) ToOutput(ctx context.Context) pulumix.Output[*Container] { + return pulumix.Output[*Container]{ + OutputState: i.ToContainerOutputWithContext(ctx).OutputState, + } +} + +// ContainerArrayInput is an input type that accepts ContainerArray and ContainerArrayOutput values. +// You can construct a concrete instance of `ContainerArrayInput` via: +// +// ContainerArray{ ContainerArgs{...} } +type ContainerArrayInput interface { + pulumi.Input + + ToContainerArrayOutput() ContainerArrayOutput + ToContainerArrayOutputWithContext(context.Context) ContainerArrayOutput +} + +type ContainerArray []ContainerInput + +func (ContainerArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Container)(nil)).Elem() +} + +func (i ContainerArray) ToContainerArrayOutput() ContainerArrayOutput { + return i.ToContainerArrayOutputWithContext(context.Background()) +} + +func (i ContainerArray) ToContainerArrayOutputWithContext(ctx context.Context) ContainerArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerArrayOutput) +} + +func (i ContainerArray) ToOutput(ctx context.Context) pulumix.Output[[]*Container] { + return pulumix.Output[[]*Container]{ + OutputState: i.ToContainerArrayOutputWithContext(ctx).OutputState, + } +} + +// ContainerMapInput is an input type that accepts ContainerMap and ContainerMapOutput values. +// You can construct a concrete instance of `ContainerMapInput` via: +// +// ContainerMap{ "key": ContainerArgs{...} } +type ContainerMapInput interface { + pulumi.Input + + ToContainerMapOutput() ContainerMapOutput + ToContainerMapOutputWithContext(context.Context) ContainerMapOutput +} + +type ContainerMap map[string]ContainerInput + +func (ContainerMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Container)(nil)).Elem() +} + +func (i ContainerMap) ToContainerMapOutput() ContainerMapOutput { + return i.ToContainerMapOutputWithContext(context.Background()) +} + +func (i ContainerMap) ToContainerMapOutputWithContext(ctx context.Context) ContainerMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMapOutput) +} + +func (i ContainerMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Container] { + return pulumix.Output[map[string]*Container]{ + OutputState: i.ToContainerMapOutputWithContext(ctx).OutputState, + } +} + +type ContainerOutput struct{ *pulumi.OutputState } + +func (ContainerOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Container)(nil)).Elem() +} + +func (o ContainerOutput) ToContainerOutput() ContainerOutput { + return o +} + +func (o ContainerOutput) ToContainerOutputWithContext(ctx context.Context) ContainerOutput { + return o +} + +func (o ContainerOutput) ToOutput(ctx context.Context) pulumix.Output[*Container] { + return pulumix.Output[*Container]{ + OutputState: o.OutputState, + } +} + +// If `true` attach to the container after its creation and waits the end of its execution. Defaults to `false`. +func (o ContainerOutput) Attach() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.Attach }).(pulumi.BoolPtrOutput) +} + +// The network bridge of the container as read from its NetworkSettings. +func (o ContainerOutput) Bridge() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.Bridge }).(pulumi.StringOutput) +} + +// Add or drop certrain linux capabilities. +func (o ContainerOutput) Capabilities() ContainerCapabilitiesPtrOutput { + return o.ApplyT(func(v *Container) ContainerCapabilitiesPtrOutput { return v.Capabilities }).(ContainerCapabilitiesPtrOutput) +} + +// Cgroup namespace mode to use for the container. Possible values are: `private`, `host`. +func (o ContainerOutput) CgroupnsMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.CgroupnsMode }).(pulumi.StringPtrOutput) +} + +// The command to use to start the container. For example, to run `/usr/bin/myprogram -f baz.conf` set the command to be `["/usr/bin/myprogram","-f","baz.con"]`. +func (o ContainerOutput) Command() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.Command }).(pulumi.StringArrayOutput) +} + +// The logs of the container if its execution is done (`attach` must be disabled). +func (o ContainerOutput) ContainerLogs() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.ContainerLogs }).(pulumi.StringOutput) +} + +// The total number of milliseconds to wait for the container to reach status 'running' +func (o ContainerOutput) ContainerReadRefreshTimeoutMilliseconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Container) pulumi.IntPtrOutput { return v.ContainerReadRefreshTimeoutMilliseconds }).(pulumi.IntPtrOutput) +} + +// A comma-separated list or hyphen-separated range of CPUs a container can use, e.g. `0-1`. +func (o ContainerOutput) CpuSet() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.CpuSet }).(pulumi.StringPtrOutput) +} + +// CPU shares (relative weight) for the container. +func (o ContainerOutput) CpuShares() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Container) pulumi.IntPtrOutput { return v.CpuShares }).(pulumi.IntPtrOutput) +} + +// If defined will attempt to stop the container before destroying. Container will be destroyed after `n` seconds or on successful stop. +func (o ContainerOutput) DestroyGraceSeconds() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Container) pulumi.IntPtrOutput { return v.DestroyGraceSeconds }).(pulumi.IntPtrOutput) +} + +// Bind devices to the container. +func (o ContainerOutput) Devices() ContainerDeviceArrayOutput { + return o.ApplyT(func(v *Container) ContainerDeviceArrayOutput { return v.Devices }).(ContainerDeviceArrayOutput) +} + +// DNS servers to use. +func (o ContainerOutput) Dns() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.Dns }).(pulumi.StringArrayOutput) +} + +// DNS options used by the DNS provider(s), see `resolv.conf` documentation for valid list of options. +func (o ContainerOutput) DnsOpts() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.DnsOpts }).(pulumi.StringArrayOutput) +} + +// DNS search domains that are used when bare unqualified hostnames are used inside of the container. +func (o ContainerOutput) DnsSearches() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.DnsSearches }).(pulumi.StringArrayOutput) +} + +// Domain name of the container. +func (o ContainerOutput) Domainname() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.Domainname }).(pulumi.StringPtrOutput) +} + +// The command to use as the Entrypoint for the container. The Entrypoint allows you to configure a container to run as an executable. For example, to run `/usr/bin/myprogram` when starting a container, set the entrypoint to be `"/usr/bin/myprogra"]`. +func (o ContainerOutput) Entrypoints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.Entrypoints }).(pulumi.StringArrayOutput) +} + +// Environment variables to set in the form of `KEY=VALUE`, e.g. `DEBUG=0` +func (o ContainerOutput) Envs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.Envs }).(pulumi.StringArrayOutput) +} + +// The exit code of the container if its execution is done (`mustRun` must be disabled). +func (o ContainerOutput) ExitCode() pulumi.IntOutput { + return o.ApplyT(func(v *Container) pulumi.IntOutput { return v.ExitCode }).(pulumi.IntOutput) +} + +// GPU devices to add to the container. Currently, only the value `all` is supported. Passing any other value will result in unexpected behavior. +func (o ContainerOutput) Gpus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.Gpus }).(pulumi.StringPtrOutput) +} + +// Additional groups for the container user +func (o ContainerOutput) GroupAdds() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.GroupAdds }).(pulumi.StringArrayOutput) +} + +// A test to perform to check that the container is healthy +func (o ContainerOutput) Healthcheck() ContainerHealthcheckOutput { + return o.ApplyT(func(v *Container) ContainerHealthcheckOutput { return v.Healthcheck }).(ContainerHealthcheckOutput) +} + +// Hostname of the container. +func (o ContainerOutput) Hostname() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.Hostname }).(pulumi.StringOutput) +} + +// Additional hosts to add to the container. +func (o ContainerOutput) Hosts() ContainerHostArrayOutput { + return o.ApplyT(func(v *Container) ContainerHostArrayOutput { return v.Hosts }).(ContainerHostArrayOutput) +} + +// The ID of the image to back this container. The easiest way to get this value is to use the `RemoteImage` resource as is shown in the example. +func (o ContainerOutput) Image() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.Image }).(pulumi.StringOutput) +} + +// Configured whether an init process should be injected for this container. If unset this will default to the `dockerd` defaults. +func (o ContainerOutput) Init() pulumi.BoolOutput { + return o.ApplyT(func(v *Container) pulumi.BoolOutput { return v.Init }).(pulumi.BoolOutput) +} + +// IPC sharing mode for the container. Possible values are: `none`, `private`, `shareable`, `container:` or `host`. +func (o ContainerOutput) IpcMode() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.IpcMode }).(pulumi.StringOutput) +} + +// User-defined key/value metadata +func (o ContainerOutput) Labels() ContainerLabelArrayOutput { + return o.ApplyT(func(v *Container) ContainerLabelArrayOutput { return v.Labels }).(ContainerLabelArrayOutput) +} + +// The logging driver to use for the container. +func (o ContainerOutput) LogDriver() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.LogDriver }).(pulumi.StringOutput) +} + +// Key/value pairs to use as options for the logging driver. +func (o ContainerOutput) LogOpts() pulumi.MapOutput { + return o.ApplyT(func(v *Container) pulumi.MapOutput { return v.LogOpts }).(pulumi.MapOutput) +} + +// Save the container logs (`attach` must be enabled). Defaults to `false`. +func (o ContainerOutput) Logs() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.Logs }).(pulumi.BoolPtrOutput) +} + +// The maximum amount of times to an attempt a restart when `restart` is set to 'on-failure'. +func (o ContainerOutput) MaxRetryCount() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Container) pulumi.IntPtrOutput { return v.MaxRetryCount }).(pulumi.IntPtrOutput) +} + +// The memory limit for the container in MBs. +func (o ContainerOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Container) pulumi.IntPtrOutput { return v.Memory }).(pulumi.IntPtrOutput) +} + +// The total memory limit (memory + swap) for the container in MBs. This setting may compute to `-1` after `pulumi up` if the target host doesn't support memory swap, when that is the case docker will use a soft limitation. +func (o ContainerOutput) MemorySwap() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Container) pulumi.IntPtrOutput { return v.MemorySwap }).(pulumi.IntPtrOutput) +} + +// Specification for mounts to be added to containers created as part of the service. +func (o ContainerOutput) Mounts() ContainerMountArrayOutput { + return o.ApplyT(func(v *Container) ContainerMountArrayOutput { return v.Mounts }).(ContainerMountArrayOutput) +} + +// If `true`, then the Docker container will be kept running. If `false`, then as long as the container exists, Terraform +// assumes it is successful. Defaults to `true`. +func (o ContainerOutput) MustRun() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.MustRun }).(pulumi.BoolPtrOutput) +} + +// The name of the container. +func (o ContainerOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The data of the networks the container is connected to. +func (o ContainerOutput) NetworkDatas() ContainerNetworkDataArrayOutput { + return o.ApplyT(func(v *Container) ContainerNetworkDataArrayOutput { return v.NetworkDatas }).(ContainerNetworkDataArrayOutput) +} + +// Network mode of the container. +func (o ContainerOutput) NetworkMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.NetworkMode }).(pulumi.StringPtrOutput) +} + +// The networks the container is attached to +func (o ContainerOutput) NetworksAdvanced() ContainerNetworksAdvancedArrayOutput { + return o.ApplyT(func(v *Container) ContainerNetworksAdvancedArrayOutput { return v.NetworksAdvanced }).(ContainerNetworksAdvancedArrayOutput) +} + +// he PID (Process) Namespace mode for the container. Either `container:` or `host`. +func (o ContainerOutput) PidMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.PidMode }).(pulumi.StringPtrOutput) +} + +// Publish a container's port(s) to the host. +func (o ContainerOutput) Ports() ContainerPortArrayOutput { + return o.ApplyT(func(v *Container) ContainerPortArrayOutput { return v.Ports }).(ContainerPortArrayOutput) +} + +// If `true`, the container runs in privileged mode. +func (o ContainerOutput) Privileged() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.Privileged }).(pulumi.BoolPtrOutput) +} + +// Publish all ports of the container. +func (o ContainerOutput) PublishAllPorts() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.PublishAllPorts }).(pulumi.BoolPtrOutput) +} + +// If `true`, the container will be started as readonly. Defaults to `false`. +func (o ContainerOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.ReadOnly }).(pulumi.BoolPtrOutput) +} + +// If `true`, it will remove anonymous volumes associated with the container. Defaults to `true`. +func (o ContainerOutput) RemoveVolumes() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.RemoveVolumes }).(pulumi.BoolPtrOutput) +} + +// The restart policy for the container. Must be one of 'no', 'on-failure', 'always', 'unless-stopped'. Defaults to `no`. +func (o ContainerOutput) Restart() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.Restart }).(pulumi.StringPtrOutput) +} + +// If `true`, then the container will be automatically removed when it exits. Defaults to `false`. +func (o ContainerOutput) Rm() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.Rm }).(pulumi.BoolPtrOutput) +} + +// Runtime to use for the container. +func (o ContainerOutput) Runtime() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.Runtime }).(pulumi.StringOutput) +} + +// List of string values to customize labels for MLS systems, such as SELinux. See https://docs.docker.com/engine/reference/run/#security-configuration. +func (o ContainerOutput) SecurityOpts() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Container) pulumi.StringArrayOutput { return v.SecurityOpts }).(pulumi.StringArrayOutput) +} + +// Size of `/dev/shm` in MBs. +func (o ContainerOutput) ShmSize() pulumi.IntOutput { + return o.ApplyT(func(v *Container) pulumi.IntOutput { return v.ShmSize }).(pulumi.IntOutput) +} + +// If `true`, then the Docker container will be started after creation. If `false`, then the container is only created. Defaults to `true`. +func (o ContainerOutput) Start() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.Start }).(pulumi.BoolPtrOutput) +} + +// If `true`, keep STDIN open even if not attached (`docker run -i`). Defaults to `false`. +func (o ContainerOutput) StdinOpen() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.StdinOpen }).(pulumi.BoolPtrOutput) +} + +// Signal to stop a container (default `SIGTERM`). +func (o ContainerOutput) StopSignal() pulumi.StringOutput { + return o.ApplyT(func(v *Container) pulumi.StringOutput { return v.StopSignal }).(pulumi.StringOutput) +} + +// Timeout (in seconds) to stop a container. +func (o ContainerOutput) StopTimeout() pulumi.IntOutput { + return o.ApplyT(func(v *Container) pulumi.IntOutput { return v.StopTimeout }).(pulumi.IntOutput) +} + +// Key/value pairs for the storage driver options, e.g. `size`: `120G` +func (o ContainerOutput) StorageOpts() pulumi.MapOutput { + return o.ApplyT(func(v *Container) pulumi.MapOutput { return v.StorageOpts }).(pulumi.MapOutput) +} + +// A map of kernel parameters (sysctls) to set in the container. +func (o ContainerOutput) Sysctls() pulumi.MapOutput { + return o.ApplyT(func(v *Container) pulumi.MapOutput { return v.Sysctls }).(pulumi.MapOutput) +} + +// A map of container directories which should be replaced by `tmpfs mounts`, and their corresponding mount options. +func (o ContainerOutput) Tmpfs() pulumi.MapOutput { + return o.ApplyT(func(v *Container) pulumi.MapOutput { return v.Tmpfs }).(pulumi.MapOutput) +} + +// If `true`, allocate a pseudo-tty (`docker run -t`). Defaults to `false`. +func (o ContainerOutput) Tty() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.Tty }).(pulumi.BoolPtrOutput) +} + +// Ulimit options to add. +func (o ContainerOutput) Ulimits() ContainerUlimitArrayOutput { + return o.ApplyT(func(v *Container) ContainerUlimitArrayOutput { return v.Ulimits }).(ContainerUlimitArrayOutput) +} + +// Specifies files to upload to the container before starting it. Only one of `content` or `contentBase64` can be set and at least one of them has to be set. +func (o ContainerOutput) Uploads() ContainerUploadArrayOutput { + return o.ApplyT(func(v *Container) ContainerUploadArrayOutput { return v.Uploads }).(ContainerUploadArrayOutput) +} + +// User used for run the first process. Format is `user` or `user:group` which user and group can be passed literraly or by name. +func (o ContainerOutput) User() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.User }).(pulumi.StringPtrOutput) +} + +// Sets the usernamespace mode for the container when usernamespace remapping option is enabled. +func (o ContainerOutput) UsernsMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.UsernsMode }).(pulumi.StringPtrOutput) +} + +// Spec for mounting volumes in the container. +func (o ContainerOutput) Volumes() ContainerVolumeArrayOutput { + return o.ApplyT(func(v *Container) ContainerVolumeArrayOutput { return v.Volumes }).(ContainerVolumeArrayOutput) +} + +// If `true`, then the Docker container is waited for being healthy state after creation. If `false`, then the container health state is not checked. Defaults to `false`. +func (o ContainerOutput) Wait() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Container) pulumi.BoolPtrOutput { return v.Wait }).(pulumi.BoolPtrOutput) +} + +// The timeout in seconds to wait the container to be healthy after creation. Defaults to `60`. +func (o ContainerOutput) WaitTimeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Container) pulumi.IntPtrOutput { return v.WaitTimeout }).(pulumi.IntPtrOutput) +} + +// The working directory for commands to run in. +func (o ContainerOutput) WorkingDir() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Container) pulumi.StringPtrOutput { return v.WorkingDir }).(pulumi.StringPtrOutput) +} + +type ContainerArrayOutput struct{ *pulumi.OutputState } + +func (ContainerArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Container)(nil)).Elem() +} + +func (o ContainerArrayOutput) ToContainerArrayOutput() ContainerArrayOutput { + return o +} + +func (o ContainerArrayOutput) ToContainerArrayOutputWithContext(ctx context.Context) ContainerArrayOutput { + return o +} + +func (o ContainerArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Container] { + return pulumix.Output[[]*Container]{ + OutputState: o.OutputState, + } +} + +func (o ContainerArrayOutput) Index(i pulumi.IntInput) ContainerOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Container { + return vs[0].([]*Container)[vs[1].(int)] + }).(ContainerOutput) +} + +type ContainerMapOutput struct{ *pulumi.OutputState } + +func (ContainerMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Container)(nil)).Elem() +} + +func (o ContainerMapOutput) ToContainerMapOutput() ContainerMapOutput { + return o +} + +func (o ContainerMapOutput) ToContainerMapOutputWithContext(ctx context.Context) ContainerMapOutput { + return o +} + +func (o ContainerMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Container] { + return pulumix.Output[map[string]*Container]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMapOutput) MapIndex(k pulumi.StringInput) ContainerOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Container { + return vs[0].(map[string]*Container)[vs[1].(string)] + }).(ContainerOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ContainerInput)(nil)).Elem(), &Container{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerArrayInput)(nil)).Elem(), ContainerArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMapInput)(nil)).Elem(), ContainerMap{}) + pulumi.RegisterOutputType(ContainerOutput{}) + pulumi.RegisterOutputType(ContainerArrayOutput{}) + pulumi.RegisterOutputType(ContainerMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/doc.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/doc.go new file mode 100644 index 000000000..3191ef14a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/doc.go @@ -0,0 +1,2 @@ +// A Pulumi package for interacting with Docker in Pulumi programs +package docker diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getLogs.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getLogs.go new file mode 100644 index 000000000..1f31631c6 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getLogs.go @@ -0,0 +1,181 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// `getLogs` provides logs from specific container +func GetLogs(ctx *pulumi.Context, args *GetLogsArgs, opts ...pulumi.InvokeOption) (*GetLogsResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv GetLogsResult + err := ctx.Invoke("docker:index/getLogs:getLogs", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getLogs. +type GetLogsArgs struct { + Details *bool `pulumi:"details"` + // Discard headers that docker appends to each log entry + DiscardHeaders *bool `pulumi:"discardHeaders"` + Follow *bool `pulumi:"follow"` + // If true populate computed value `logsListString` + LogsListStringEnabled *bool `pulumi:"logsListStringEnabled"` + // The name of the Docker Container + Name string `pulumi:"name"` + ShowStderr *bool `pulumi:"showStderr"` + ShowStdout *bool `pulumi:"showStdout"` + Since *string `pulumi:"since"` + Tail *string `pulumi:"tail"` + Timestamps *bool `pulumi:"timestamps"` + Until *string `pulumi:"until"` +} + +// A collection of values returned by getLogs. +type GetLogsResult struct { + Details *bool `pulumi:"details"` + // Discard headers that docker appends to each log entry + DiscardHeaders *bool `pulumi:"discardHeaders"` + Follow *bool `pulumi:"follow"` + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // If true populate computed value `logsListString` + LogsListStringEnabled *bool `pulumi:"logsListStringEnabled"` + // List of container logs, each element is a line. + LogsListStrings []string `pulumi:"logsListStrings"` + // The name of the Docker Container + Name string `pulumi:"name"` + ShowStderr *bool `pulumi:"showStderr"` + ShowStdout *bool `pulumi:"showStdout"` + Since *string `pulumi:"since"` + Tail *string `pulumi:"tail"` + Timestamps *bool `pulumi:"timestamps"` + Until *string `pulumi:"until"` +} + +func GetLogsOutput(ctx *pulumi.Context, args GetLogsOutputArgs, opts ...pulumi.InvokeOption) GetLogsResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (GetLogsResult, error) { + args := v.(GetLogsArgs) + r, err := GetLogs(ctx, &args, opts...) + var s GetLogsResult + if r != nil { + s = *r + } + return s, err + }).(GetLogsResultOutput) +} + +// A collection of arguments for invoking getLogs. +type GetLogsOutputArgs struct { + Details pulumi.BoolPtrInput `pulumi:"details"` + // Discard headers that docker appends to each log entry + DiscardHeaders pulumi.BoolPtrInput `pulumi:"discardHeaders"` + Follow pulumi.BoolPtrInput `pulumi:"follow"` + // If true populate computed value `logsListString` + LogsListStringEnabled pulumi.BoolPtrInput `pulumi:"logsListStringEnabled"` + // The name of the Docker Container + Name pulumi.StringInput `pulumi:"name"` + ShowStderr pulumi.BoolPtrInput `pulumi:"showStderr"` + ShowStdout pulumi.BoolPtrInput `pulumi:"showStdout"` + Since pulumi.StringPtrInput `pulumi:"since"` + Tail pulumi.StringPtrInput `pulumi:"tail"` + Timestamps pulumi.BoolPtrInput `pulumi:"timestamps"` + Until pulumi.StringPtrInput `pulumi:"until"` +} + +func (GetLogsOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogsArgs)(nil)).Elem() +} + +// A collection of values returned by getLogs. +type GetLogsResultOutput struct{ *pulumi.OutputState } + +func (GetLogsResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetLogsResult)(nil)).Elem() +} + +func (o GetLogsResultOutput) ToGetLogsResultOutput() GetLogsResultOutput { + return o +} + +func (o GetLogsResultOutput) ToGetLogsResultOutputWithContext(ctx context.Context) GetLogsResultOutput { + return o +} + +func (o GetLogsResultOutput) ToOutput(ctx context.Context) pulumix.Output[GetLogsResult] { + return pulumix.Output[GetLogsResult]{ + OutputState: o.OutputState, + } +} + +func (o GetLogsResultOutput) Details() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetLogsResult) *bool { return v.Details }).(pulumi.BoolPtrOutput) +} + +// Discard headers that docker appends to each log entry +func (o GetLogsResultOutput) DiscardHeaders() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetLogsResult) *bool { return v.DiscardHeaders }).(pulumi.BoolPtrOutput) +} + +func (o GetLogsResultOutput) Follow() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetLogsResult) *bool { return v.Follow }).(pulumi.BoolPtrOutput) +} + +// The provider-assigned unique ID for this managed resource. +func (o GetLogsResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v GetLogsResult) string { return v.Id }).(pulumi.StringOutput) +} + +// If true populate computed value `logsListString` +func (o GetLogsResultOutput) LogsListStringEnabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetLogsResult) *bool { return v.LogsListStringEnabled }).(pulumi.BoolPtrOutput) +} + +// List of container logs, each element is a line. +func (o GetLogsResultOutput) LogsListStrings() pulumi.StringArrayOutput { + return o.ApplyT(func(v GetLogsResult) []string { return v.LogsListStrings }).(pulumi.StringArrayOutput) +} + +// The name of the Docker Container +func (o GetLogsResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v GetLogsResult) string { return v.Name }).(pulumi.StringOutput) +} + +func (o GetLogsResultOutput) ShowStderr() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetLogsResult) *bool { return v.ShowStderr }).(pulumi.BoolPtrOutput) +} + +func (o GetLogsResultOutput) ShowStdout() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetLogsResult) *bool { return v.ShowStdout }).(pulumi.BoolPtrOutput) +} + +func (o GetLogsResultOutput) Since() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetLogsResult) *string { return v.Since }).(pulumi.StringPtrOutput) +} + +func (o GetLogsResultOutput) Tail() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetLogsResult) *string { return v.Tail }).(pulumi.StringPtrOutput) +} + +func (o GetLogsResultOutput) Timestamps() pulumi.BoolPtrOutput { + return o.ApplyT(func(v GetLogsResult) *bool { return v.Timestamps }).(pulumi.BoolPtrOutput) +} + +func (o GetLogsResultOutput) Until() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetLogsResult) *string { return v.Until }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterOutputType(GetLogsResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getNetwork.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getNetwork.go new file mode 100644 index 000000000..3dc091747 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getNetwork.go @@ -0,0 +1,157 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// `Network` provides details about a specific Docker Network. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := docker.LookupNetwork(ctx, &docker.LookupNetworkArgs{ +// Name: "main", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupNetwork(ctx *pulumi.Context, args *LookupNetworkArgs, opts ...pulumi.InvokeOption) (*LookupNetworkResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupNetworkResult + err := ctx.Invoke("docker:index/getNetwork:getNetwork", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getNetwork. +type LookupNetworkArgs struct { + // The name of the Docker network. + Name string `pulumi:"name"` +} + +// A collection of values returned by getNetwork. +type LookupNetworkResult struct { + // The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. + Driver string `pulumi:"driver"` + // The ID of this resource. + Id string `pulumi:"id"` + // If `true`, the network is internal. + Internal bool `pulumi:"internal"` + // The IPAM configuration options + IpamConfigs []GetNetworkIpamConfig `pulumi:"ipamConfigs"` + // The name of the Docker network. + Name string `pulumi:"name"` + // Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. + Options map[string]interface{} `pulumi:"options"` + // Scope of the network. One of `swarm`, `global`, or `local`. + Scope string `pulumi:"scope"` +} + +func LookupNetworkOutput(ctx *pulumi.Context, args LookupNetworkOutputArgs, opts ...pulumi.InvokeOption) LookupNetworkResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupNetworkResult, error) { + args := v.(LookupNetworkArgs) + r, err := LookupNetwork(ctx, &args, opts...) + var s LookupNetworkResult + if r != nil { + s = *r + } + return s, err + }).(LookupNetworkResultOutput) +} + +// A collection of arguments for invoking getNetwork. +type LookupNetworkOutputArgs struct { + // The name of the Docker network. + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupNetworkOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupNetworkArgs)(nil)).Elem() +} + +// A collection of values returned by getNetwork. +type LookupNetworkResultOutput struct{ *pulumi.OutputState } + +func (LookupNetworkResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupNetworkResult)(nil)).Elem() +} + +func (o LookupNetworkResultOutput) ToLookupNetworkResultOutput() LookupNetworkResultOutput { + return o +} + +func (o LookupNetworkResultOutput) ToLookupNetworkResultOutputWithContext(ctx context.Context) LookupNetworkResultOutput { + return o +} + +func (o LookupNetworkResultOutput) ToOutput(ctx context.Context) pulumix.Output[LookupNetworkResult] { + return pulumix.Output[LookupNetworkResult]{ + OutputState: o.OutputState, + } +} + +// The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. +func (o LookupNetworkResultOutput) Driver() pulumi.StringOutput { + return o.ApplyT(func(v LookupNetworkResult) string { return v.Driver }).(pulumi.StringOutput) +} + +// The ID of this resource. +func (o LookupNetworkResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupNetworkResult) string { return v.Id }).(pulumi.StringOutput) +} + +// If `true`, the network is internal. +func (o LookupNetworkResultOutput) Internal() pulumi.BoolOutput { + return o.ApplyT(func(v LookupNetworkResult) bool { return v.Internal }).(pulumi.BoolOutput) +} + +// The IPAM configuration options +func (o LookupNetworkResultOutput) IpamConfigs() GetNetworkIpamConfigArrayOutput { + return o.ApplyT(func(v LookupNetworkResult) []GetNetworkIpamConfig { return v.IpamConfigs }).(GetNetworkIpamConfigArrayOutput) +} + +// The name of the Docker network. +func (o LookupNetworkResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupNetworkResult) string { return v.Name }).(pulumi.StringOutput) +} + +// Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. +func (o LookupNetworkResultOutput) Options() pulumi.MapOutput { + return o.ApplyT(func(v LookupNetworkResult) map[string]interface{} { return v.Options }).(pulumi.MapOutput) +} + +// Scope of the network. One of `swarm`, `global`, or `local`. +func (o LookupNetworkResultOutput) Scope() pulumi.StringOutput { + return o.ApplyT(func(v LookupNetworkResult) string { return v.Scope }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupNetworkResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getPlugin.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getPlugin.go new file mode 100644 index 000000000..88d915d0b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getPlugin.go @@ -0,0 +1,143 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// Reads the local Docker plugin. The plugin must be installed locally. +// +// ## Example Usage +// +// ### With alias +// +// data "Plugin" "byAlias" { +// alias = "sample-volume-plugin:latest" +// } +func LookupPlugin(ctx *pulumi.Context, args *LookupPluginArgs, opts ...pulumi.InvokeOption) (*LookupPluginResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupPluginResult + err := ctx.Invoke("docker:index/getPlugin:getPlugin", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getPlugin. +type LookupPluginArgs struct { + // The alias of the Docker plugin. If the tag is omitted, `:latest` is complemented to the attribute value. + Alias *string `pulumi:"alias"` + // The ID of the plugin, which has precedence over the `alias` of both are given + Id *string `pulumi:"id"` +} + +// A collection of values returned by getPlugin. +type LookupPluginResult struct { + // The alias of the Docker plugin. If the tag is omitted, `:latest` is complemented to the attribute value. + Alias *string `pulumi:"alias"` + // If `true` the plugin is enabled + Enabled bool `pulumi:"enabled"` + // The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs []string `pulumi:"envs"` + // If true, grant all permissions necessary to run the plugin + GrantAllPermissions bool `pulumi:"grantAllPermissions"` + // The ID of the plugin, which has precedence over the `alias` of both are given + Id *string `pulumi:"id"` + // The plugin name. If the tag is omitted, `:latest` is complemented to the attribute value. + Name string `pulumi:"name"` + // The Docker Plugin Reference + PluginReference string `pulumi:"pluginReference"` +} + +func LookupPluginOutput(ctx *pulumi.Context, args LookupPluginOutputArgs, opts ...pulumi.InvokeOption) LookupPluginResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupPluginResult, error) { + args := v.(LookupPluginArgs) + r, err := LookupPlugin(ctx, &args, opts...) + var s LookupPluginResult + if r != nil { + s = *r + } + return s, err + }).(LookupPluginResultOutput) +} + +// A collection of arguments for invoking getPlugin. +type LookupPluginOutputArgs struct { + // The alias of the Docker plugin. If the tag is omitted, `:latest` is complemented to the attribute value. + Alias pulumi.StringPtrInput `pulumi:"alias"` + // The ID of the plugin, which has precedence over the `alias` of both are given + Id pulumi.StringPtrInput `pulumi:"id"` +} + +func (LookupPluginOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupPluginArgs)(nil)).Elem() +} + +// A collection of values returned by getPlugin. +type LookupPluginResultOutput struct{ *pulumi.OutputState } + +func (LookupPluginResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupPluginResult)(nil)).Elem() +} + +func (o LookupPluginResultOutput) ToLookupPluginResultOutput() LookupPluginResultOutput { + return o +} + +func (o LookupPluginResultOutput) ToLookupPluginResultOutputWithContext(ctx context.Context) LookupPluginResultOutput { + return o +} + +func (o LookupPluginResultOutput) ToOutput(ctx context.Context) pulumix.Output[LookupPluginResult] { + return pulumix.Output[LookupPluginResult]{ + OutputState: o.OutputState, + } +} + +// The alias of the Docker plugin. If the tag is omitted, `:latest` is complemented to the attribute value. +func (o LookupPluginResultOutput) Alias() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupPluginResult) *string { return v.Alias }).(pulumi.StringPtrOutput) +} + +// If `true` the plugin is enabled +func (o LookupPluginResultOutput) Enabled() pulumi.BoolOutput { + return o.ApplyT(func(v LookupPluginResult) bool { return v.Enabled }).(pulumi.BoolOutput) +} + +// The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` +func (o LookupPluginResultOutput) Envs() pulumi.StringArrayOutput { + return o.ApplyT(func(v LookupPluginResult) []string { return v.Envs }).(pulumi.StringArrayOutput) +} + +// If true, grant all permissions necessary to run the plugin +func (o LookupPluginResultOutput) GrantAllPermissions() pulumi.BoolOutput { + return o.ApplyT(func(v LookupPluginResult) bool { return v.GrantAllPermissions }).(pulumi.BoolOutput) +} + +// The ID of the plugin, which has precedence over the `alias` of both are given +func (o LookupPluginResultOutput) Id() pulumi.StringPtrOutput { + return o.ApplyT(func(v LookupPluginResult) *string { return v.Id }).(pulumi.StringPtrOutput) +} + +// The plugin name. If the tag is omitted, `:latest` is complemented to the attribute value. +func (o LookupPluginResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupPluginResult) string { return v.Name }).(pulumi.StringOutput) +} + +// The Docker Plugin Reference +func (o LookupPluginResultOutput) PluginReference() pulumi.StringOutput { + return o.ApplyT(func(v LookupPluginResult) string { return v.PluginReference }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupPluginResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRegistryImage.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRegistryImage.go new file mode 100644 index 000000000..c20670b96 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRegistryImage.go @@ -0,0 +1,149 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// Reads the image metadata from a Docker Registry. Used in conjunction with the RemoteImage resource to keep an image up to date on the latest available version of the tag. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// ubuntuRegistryImage, err := docker.LookupRegistryImage(ctx, &docker.LookupRegistryImageArgs{ +// Name: "ubuntu:precise", +// }, nil) +// if err != nil { +// return err +// } +// _, err = docker.NewRemoteImage(ctx, "ubuntuRemoteImage", &docker.RemoteImageArgs{ +// Name: *pulumi.String(ubuntuRegistryImage.Name), +// PullTriggers: pulumi.StringArray{ +// *pulumi.String(ubuntuRegistryImage.Sha256Digest), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupRegistryImage(ctx *pulumi.Context, args *LookupRegistryImageArgs, opts ...pulumi.InvokeOption) (*LookupRegistryImageResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupRegistryImageResult + err := ctx.Invoke("docker:index/getRegistryImage:getRegistryImage", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getRegistryImage. +type LookupRegistryImageArgs struct { + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"` + // The name of the Docker image, including any tags. e.g. `alpine:latest` + Name string `pulumi:"name"` +} + +// A collection of values returned by getRegistryImage. +type LookupRegistryImageResult struct { + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"` + // The name of the Docker image, including any tags. e.g. `alpine:latest` + Name string `pulumi:"name"` + // The content digest of the image, as stored in the registry. + Sha256Digest string `pulumi:"sha256Digest"` +} + +func LookupRegistryImageOutput(ctx *pulumi.Context, args LookupRegistryImageOutputArgs, opts ...pulumi.InvokeOption) LookupRegistryImageResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupRegistryImageResult, error) { + args := v.(LookupRegistryImageArgs) + r, err := LookupRegistryImage(ctx, &args, opts...) + var s LookupRegistryImageResult + if r != nil { + s = *r + } + return s, err + }).(LookupRegistryImageResultOutput) +} + +// A collection of arguments for invoking getRegistryImage. +type LookupRegistryImageOutputArgs struct { + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify pulumi.BoolPtrInput `pulumi:"insecureSkipVerify"` + // The name of the Docker image, including any tags. e.g. `alpine:latest` + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupRegistryImageOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRegistryImageArgs)(nil)).Elem() +} + +// A collection of values returned by getRegistryImage. +type LookupRegistryImageResultOutput struct{ *pulumi.OutputState } + +func (LookupRegistryImageResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRegistryImageResult)(nil)).Elem() +} + +func (o LookupRegistryImageResultOutput) ToLookupRegistryImageResultOutput() LookupRegistryImageResultOutput { + return o +} + +func (o LookupRegistryImageResultOutput) ToLookupRegistryImageResultOutputWithContext(ctx context.Context) LookupRegistryImageResultOutput { + return o +} + +func (o LookupRegistryImageResultOutput) ToOutput(ctx context.Context) pulumix.Output[LookupRegistryImageResult] { + return pulumix.Output[LookupRegistryImageResult]{ + OutputState: o.OutputState, + } +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupRegistryImageResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupRegistryImageResult) string { return v.Id }).(pulumi.StringOutput) +} + +// If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` +func (o LookupRegistryImageResultOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v LookupRegistryImageResult) *bool { return v.InsecureSkipVerify }).(pulumi.BoolPtrOutput) +} + +// The name of the Docker image, including any tags. e.g. `alpine:latest` +func (o LookupRegistryImageResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupRegistryImageResult) string { return v.Name }).(pulumi.StringOutput) +} + +// The content digest of the image, as stored in the registry. +func (o LookupRegistryImageResultOutput) Sha256Digest() pulumi.StringOutput { + return o.ApplyT(func(v LookupRegistryImageResult) string { return v.Sha256Digest }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupRegistryImageResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRemoteImage.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRemoteImage.go new file mode 100644 index 000000000..58607d363 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/getRemoteImage.go @@ -0,0 +1,147 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// `RemoteImage` provides details about a specific Docker Image which need to be presend on the Docker Host +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := docker.LookupRemoteImage(ctx, &docker.LookupRemoteImageArgs{ +// Name: "nginx", +// }, nil) +// if err != nil { +// return err +// } +// _, err = docker.LookupRemoteImage(ctx, &docker.LookupRemoteImageArgs{ +// Name: "nginx:1.17.6", +// }, nil) +// if err != nil { +// return err +// } +// _, err = docker.LookupRemoteImage(ctx, &docker.LookupRemoteImageArgs{ +// Name: "nginx@sha256:36b74457bccb56fbf8b05f79c85569501b721d4db813b684391d63e02287c0b2", +// }, nil) +// if err != nil { +// return err +// } +// _, err = docker.LookupRemoteImage(ctx, &docker.LookupRemoteImageArgs{ +// Name: "nginx:1.19.1@sha256:36b74457bccb56fbf8b05f79c85569501b721d4db813b684391d63e02287c0b2", +// }, nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +func LookupRemoteImage(ctx *pulumi.Context, args *LookupRemoteImageArgs, opts ...pulumi.InvokeOption) (*LookupRemoteImageResult, error) { + opts = internal.PkgInvokeDefaultOpts(opts) + var rv LookupRemoteImageResult + err := ctx.Invoke("docker:index/getRemoteImage:getRemoteImage", args, &rv, opts...) + if err != nil { + return nil, err + } + return &rv, nil +} + +// A collection of arguments for invoking getRemoteImage. +type LookupRemoteImageArgs struct { + // The name of the Docker image, including any tags or SHA256 repo digests. + Name string `pulumi:"name"` +} + +// A collection of values returned by getRemoteImage. +type LookupRemoteImageResult struct { + // The provider-assigned unique ID for this managed resource. + Id string `pulumi:"id"` + // The name of the Docker image, including any tags or SHA256 repo digests. + Name string `pulumi:"name"` + // The image sha256 digest in the form of `repo[:tag]@sha256:`. It may be empty in the edge case where the local image was pulled from a repo, tagged locally, and then referred to in the data source by that local name/tag. + RepoDigest string `pulumi:"repoDigest"` +} + +func LookupRemoteImageOutput(ctx *pulumi.Context, args LookupRemoteImageOutputArgs, opts ...pulumi.InvokeOption) LookupRemoteImageResultOutput { + return pulumi.ToOutputWithContext(context.Background(), args). + ApplyT(func(v interface{}) (LookupRemoteImageResult, error) { + args := v.(LookupRemoteImageArgs) + r, err := LookupRemoteImage(ctx, &args, opts...) + var s LookupRemoteImageResult + if r != nil { + s = *r + } + return s, err + }).(LookupRemoteImageResultOutput) +} + +// A collection of arguments for invoking getRemoteImage. +type LookupRemoteImageOutputArgs struct { + // The name of the Docker image, including any tags or SHA256 repo digests. + Name pulumi.StringInput `pulumi:"name"` +} + +func (LookupRemoteImageOutputArgs) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRemoteImageArgs)(nil)).Elem() +} + +// A collection of values returned by getRemoteImage. +type LookupRemoteImageResultOutput struct{ *pulumi.OutputState } + +func (LookupRemoteImageResultOutput) ElementType() reflect.Type { + return reflect.TypeOf((*LookupRemoteImageResult)(nil)).Elem() +} + +func (o LookupRemoteImageResultOutput) ToLookupRemoteImageResultOutput() LookupRemoteImageResultOutput { + return o +} + +func (o LookupRemoteImageResultOutput) ToLookupRemoteImageResultOutputWithContext(ctx context.Context) LookupRemoteImageResultOutput { + return o +} + +func (o LookupRemoteImageResultOutput) ToOutput(ctx context.Context) pulumix.Output[LookupRemoteImageResult] { + return pulumix.Output[LookupRemoteImageResult]{ + OutputState: o.OutputState, + } +} + +// The provider-assigned unique ID for this managed resource. +func (o LookupRemoteImageResultOutput) Id() pulumi.StringOutput { + return o.ApplyT(func(v LookupRemoteImageResult) string { return v.Id }).(pulumi.StringOutput) +} + +// The name of the Docker image, including any tags or SHA256 repo digests. +func (o LookupRemoteImageResultOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v LookupRemoteImageResult) string { return v.Name }).(pulumi.StringOutput) +} + +// The image sha256 digest in the form of `repo[:tag]@sha256:`. It may be empty in the edge case where the local image was pulled from a repo, tagged locally, and then referred to in the data source by that local name/tag. +func (o LookupRemoteImageResultOutput) RepoDigest() pulumi.StringOutput { + return o.ApplyT(func(v LookupRemoteImageResult) string { return v.RepoDigest }).(pulumi.StringOutput) +} + +func init() { + pulumi.RegisterOutputType(LookupRemoteImageResultOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/image.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/image.go new file mode 100644 index 000000000..0e1dfb0b1 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/image.go @@ -0,0 +1,474 @@ +// 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 docker + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// `Image` builds a Docker image and pushes it Docker and OCI compatible registries. +// This resource enables running Docker builds as part of a Pulumi deployment. +// +// Note: This resource does not delete tags, locally or remotely, when destroyed. +// +// ## Image name +// +// The Image resource uses `imageName` to refer to a fully qualified Docker image name, by the format `repository:tag`. +// Note that this does not include any digest information and thus will not cause any updates when passed to dependencies, +// even when using `latest` tag. To trigger such updates, e.g. when referencing pushed images in container orchestration +// and management resources, please use the `repoDigest` Output instead, which is of the format +// `repository@:` and unique per build/push. +// Note that `repoDigest` is not available for local Images. For a local Image not pushed to a registry, you may want to +// give `imageName` a unique tag per pulumi update. +// +// ## Cross-platform builds +// +// The Image resource supports cross-platform builds when the [Docker engine has cross-platform support enabled via emulators](https://docs.docker.com/build/building/multi-platform/#building-multi-platform-images). +// The Image resource currently supports providing only a single operating system and architecture in the `platform` field, e.g.: `linux/amd64`. +// To enable this support, you may need to install the emulators in the environment running your Pulumi program. +// +// If you are using Linux, you may be using Docker Engine or Docker Desktop for Linux, depending on how you have installed Docker. The [FAQ for Docker Desktop for Linux](https://docs.docker.com/desktop/faqs/linuxfaqs/#context) describes the differences and how to select which Docker context is in use. +// +// * For local development using Docker Desktop, this is enabled by default. +// * For systems using Docker Engine, install the QEMU binaries and register them with using the docker image from [github.com/tonistiigi/binfmt](https://github.com/tonistiigi/binfmt): +// * In a GitHub Actions workflow, the [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) can be used instead by adding this step to your workflow file. Example workflow usage: +// +// ## Example Usage +// ### A Docker image build +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// demoImage, err := docker.NewImage(ctx, "demo-image", &docker.ImageArgs{ +// Build: &docker.DockerBuildArgs{ +// Args: pulumi.StringMap{ +// "platform": pulumi.String("linux/amd64"), +// }, +// Context: pulumi.String("."), +// Dockerfile: pulumi.String("Dockerfile"), +// }, +// ImageName: pulumi.String("username/image:tag1"), +// SkipPush: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// ctx.Export("imageName", demoImage.ImageName) +// return nil +// }) +// } +// +// ``` +// ### A Docker image build and push +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// demoPushImage, err := docker.NewImage(ctx, "demo-push-image", &docker.ImageArgs{ +// Build: &docker.DockerBuildArgs{ +// Context: pulumi.String("."), +// Dockerfile: pulumi.String("Dockerfile"), +// }, +// ImageName: pulumi.String("docker.io/username/push-image:tag1"), +// }) +// if err != nil { +// return err +// } +// ctx.Export("imageName", demoPushImage.ImageName) +// ctx.Export("repoDigest", demoPushImage.RepoDigest) +// return nil +// }) +// } +// +// ``` +// ### Docker image build using caching with AWS Elastic Container Registry +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ecr" +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// ecrRepository, err := ecr.NewRepository(ctx, "ecr-repository", &ecr.RepositoryArgs{ +// Name: pulumi.String("docker-repository"), +// }) +// if err != nil { +// return err +// } +// authToken := ecr.GetAuthorizationTokenOutput(ctx, ecr.GetAuthorizationTokenOutputArgs{ +// RegistryId: ecrRepository.RegistryId, +// }, nil) +// myAppImage, err := docker.NewImage(ctx, "my-app-image", &docker.ImageArgs{ +// Build: &docker.DockerBuildArgs{ +// Args: pulumi.StringMap{ +// "BUILDKIT_INLINE_CACHE": pulumi.String("1"), +// }, +// CacheFrom: &docker.CacheFromArgs{ +// Images: pulumi.StringArray{ +// ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { +// return fmt.Sprintf("%v:latest", repositoryUrl), nil +// }).(pulumi.StringOutput), +// }, +// }, +// Context: pulumi.String("app/"), +// Dockerfile: pulumi.String("Dockerfile"), +// }, +// ImageName: ecrRepository.RepositoryUrl.ApplyT(func(repositoryUrl string) (string, error) { +// return fmt.Sprintf("%v:latest", repositoryUrl), nil +// }).(pulumi.StringOutput), +// Registry: &docker.RegistryArgs{ +// Password: pulumi.ToSecret(authToken.ApplyT(func(authToken ecr.GetAuthorizationTokenResult) (*string, error) { +// return &authToken.Password, nil +// }).(pulumi.StringPtrOutput)).(*pulumi.StringOutput), +// Server: ecrRepository.RepositoryUrl, +// }, +// }) +// if err != nil { +// return err +// } +// ctx.Export("imageName", myAppImage.ImageName) +// return nil +// }) +// } +// +// ``` +type Image struct { + pulumi.CustomResourceState + + // The fully qualified image name that was pushed to the registry. + BaseImageName pulumi.StringOutput `pulumi:"baseImageName"` + // The path to the build context to use. + Context pulumi.StringOutput `pulumi:"context"` + // The location of the Dockerfile relative to the docker build context. + Dockerfile pulumi.StringOutput `pulumi:"dockerfile"` + // The fully qualified image name + ImageName pulumi.StringOutput `pulumi:"imageName"` + // The name of the registry server hosting the image. + RegistryServer pulumi.StringOutput `pulumi:"registryServer"` + // **For pushed images:** + // The manifest digest of an image pushed to a registry, of the format repository@:, e.g. `username/demo-image@sha256:a6ae6dd8d39c5bb02320e41abf00cd4cb35905fec540e37d306c878be8d38bd3`. + // This reference is unique per image build and push. + // Only available for images pushed to a registry. + // Use when passing a reference to a pushed image to container management resources. + // + // **Local-only images**For local images, this field is the image ID of the built local image, of the format :, e.g `sha256:826a130323165bb0ccb0374ae774f885c067a951b51a6ee133577f4e5dbc4119` + RepoDigest pulumi.StringOutput `pulumi:"repoDigest"` +} + +// NewImage registers a new resource with the given unique name, arguments, and options. +func NewImage(ctx *pulumi.Context, + name string, args *ImageArgs, opts ...pulumi.ResourceOption) (*Image, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.ImageName == nil { + return nil, errors.New("invalid value for required argument 'ImageName'") + } + if args.Build != nil { + args.Build = args.Build.ToDockerBuildPtrOutput().ApplyT(func(v *DockerBuild) *DockerBuild { return v.Defaults() }).(DockerBuildPtrOutput) + } + if args.SkipPush == nil { + args.SkipPush = pulumi.BoolPtr(false) + } + aliases := pulumi.Aliases([]pulumi.Alias{ + { + Type: pulumi.String("docker:image:Image"), + }, + }) + opts = append(opts, aliases) + opts = internal.PkgResourceDefaultOpts(opts) + var resource Image + err := ctx.RegisterResource("docker:index/image:Image", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetImage gets an existing Image 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 GetImage(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ImageState, opts ...pulumi.ResourceOption) (*Image, error) { + var resource Image + err := ctx.ReadResource("docker:index/image:Image", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Image resources. +type imageState struct { +} + +type ImageState struct { +} + +func (ImageState) ElementType() reflect.Type { + return reflect.TypeOf((*imageState)(nil)).Elem() +} + +type imageArgs struct { + // The Docker build context + Build *DockerBuild `pulumi:"build"` + // The image name, of the format repository[:tag], e.g. `docker.io/username/demo-image:v1`. + // This reference is not unique to each build and push.For the unique manifest SHA of a pushed docker image, or the local image ID, please use `repoDigest`. + ImageName string `pulumi:"imageName"` + // The registry to push the image to + Registry *Registry `pulumi:"registry"` + // A flag to skip a registry push. + SkipPush *bool `pulumi:"skipPush"` +} + +// The set of arguments for constructing a Image resource. +type ImageArgs struct { + // The Docker build context + Build DockerBuildPtrInput + // The image name, of the format repository[:tag], e.g. `docker.io/username/demo-image:v1`. + // This reference is not unique to each build and push.For the unique manifest SHA of a pushed docker image, or the local image ID, please use `repoDigest`. + ImageName pulumi.StringInput + // The registry to push the image to + Registry RegistryPtrInput + // A flag to skip a registry push. + SkipPush pulumi.BoolPtrInput +} + +func (ImageArgs) ElementType() reflect.Type { + return reflect.TypeOf((*imageArgs)(nil)).Elem() +} + +type ImageInput interface { + pulumi.Input + + ToImageOutput() ImageOutput + ToImageOutputWithContext(ctx context.Context) ImageOutput +} + +func (*Image) ElementType() reflect.Type { + return reflect.TypeOf((**Image)(nil)).Elem() +} + +func (i *Image) ToImageOutput() ImageOutput { + return i.ToImageOutputWithContext(context.Background()) +} + +func (i *Image) ToImageOutputWithContext(ctx context.Context) ImageOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageOutput) +} + +func (i *Image) ToOutput(ctx context.Context) pulumix.Output[*Image] { + return pulumix.Output[*Image]{ + OutputState: i.ToImageOutputWithContext(ctx).OutputState, + } +} + +// ImageArrayInput is an input type that accepts ImageArray and ImageArrayOutput values. +// You can construct a concrete instance of `ImageArrayInput` via: +// +// ImageArray{ ImageArgs{...} } +type ImageArrayInput interface { + pulumi.Input + + ToImageArrayOutput() ImageArrayOutput + ToImageArrayOutputWithContext(context.Context) ImageArrayOutput +} + +type ImageArray []ImageInput + +func (ImageArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Image)(nil)).Elem() +} + +func (i ImageArray) ToImageArrayOutput() ImageArrayOutput { + return i.ToImageArrayOutputWithContext(context.Background()) +} + +func (i ImageArray) ToImageArrayOutputWithContext(ctx context.Context) ImageArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageArrayOutput) +} + +func (i ImageArray) ToOutput(ctx context.Context) pulumix.Output[[]*Image] { + return pulumix.Output[[]*Image]{ + OutputState: i.ToImageArrayOutputWithContext(ctx).OutputState, + } +} + +// ImageMapInput is an input type that accepts ImageMap and ImageMapOutput values. +// You can construct a concrete instance of `ImageMapInput` via: +// +// ImageMap{ "key": ImageArgs{...} } +type ImageMapInput interface { + pulumi.Input + + ToImageMapOutput() ImageMapOutput + ToImageMapOutputWithContext(context.Context) ImageMapOutput +} + +type ImageMap map[string]ImageInput + +func (ImageMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Image)(nil)).Elem() +} + +func (i ImageMap) ToImageMapOutput() ImageMapOutput { + return i.ToImageMapOutputWithContext(context.Background()) +} + +func (i ImageMap) ToImageMapOutputWithContext(ctx context.Context) ImageMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ImageMapOutput) +} + +func (i ImageMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Image] { + return pulumix.Output[map[string]*Image]{ + OutputState: i.ToImageMapOutputWithContext(ctx).OutputState, + } +} + +type ImageOutput struct{ *pulumi.OutputState } + +func (ImageOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Image)(nil)).Elem() +} + +func (o ImageOutput) ToImageOutput() ImageOutput { + return o +} + +func (o ImageOutput) ToImageOutputWithContext(ctx context.Context) ImageOutput { + return o +} + +func (o ImageOutput) ToOutput(ctx context.Context) pulumix.Output[*Image] { + return pulumix.Output[*Image]{ + OutputState: o.OutputState, + } +} + +// The fully qualified image name that was pushed to the registry. +func (o ImageOutput) BaseImageName() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.BaseImageName }).(pulumi.StringOutput) +} + +// The path to the build context to use. +func (o ImageOutput) Context() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.Context }).(pulumi.StringOutput) +} + +// The location of the Dockerfile relative to the docker build context. +func (o ImageOutput) Dockerfile() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.Dockerfile }).(pulumi.StringOutput) +} + +// The fully qualified image name +func (o ImageOutput) ImageName() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.ImageName }).(pulumi.StringOutput) +} + +// The name of the registry server hosting the image. +func (o ImageOutput) RegistryServer() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.RegistryServer }).(pulumi.StringOutput) +} + +// **For pushed images:** +// The manifest digest of an image pushed to a registry, of the format repository@:, e.g. `username/demo-image@sha256:a6ae6dd8d39c5bb02320e41abf00cd4cb35905fec540e37d306c878be8d38bd3`. +// This reference is unique per image build and push. +// Only available for images pushed to a registry. +// Use when passing a reference to a pushed image to container management resources. +// +// **Local-only images**For local images, this field is the image ID of the built local image, of the format :, e.g `sha256:826a130323165bb0ccb0374ae774f885c067a951b51a6ee133577f4e5dbc4119` +func (o ImageOutput) RepoDigest() pulumi.StringOutput { + return o.ApplyT(func(v *Image) pulumi.StringOutput { return v.RepoDigest }).(pulumi.StringOutput) +} + +type ImageArrayOutput struct{ *pulumi.OutputState } + +func (ImageArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Image)(nil)).Elem() +} + +func (o ImageArrayOutput) ToImageArrayOutput() ImageArrayOutput { + return o +} + +func (o ImageArrayOutput) ToImageArrayOutputWithContext(ctx context.Context) ImageArrayOutput { + return o +} + +func (o ImageArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Image] { + return pulumix.Output[[]*Image]{ + OutputState: o.OutputState, + } +} + +func (o ImageArrayOutput) Index(i pulumi.IntInput) ImageOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Image { + return vs[0].([]*Image)[vs[1].(int)] + }).(ImageOutput) +} + +type ImageMapOutput struct{ *pulumi.OutputState } + +func (ImageMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Image)(nil)).Elem() +} + +func (o ImageMapOutput) ToImageMapOutput() ImageMapOutput { + return o +} + +func (o ImageMapOutput) ToImageMapOutputWithContext(ctx context.Context) ImageMapOutput { + return o +} + +func (o ImageMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Image] { + return pulumix.Output[map[string]*Image]{ + OutputState: o.OutputState, + } +} + +func (o ImageMapOutput) MapIndex(k pulumi.StringInput) ImageOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Image { + return vs[0].(map[string]*Image)[vs[1].(string)] + }).(ImageOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ImageInput)(nil)).Elem(), &Image{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageArrayInput)(nil)).Elem(), ImageArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ImageMapInput)(nil)).Elem(), ImageMap{}) + pulumi.RegisterOutputType(ImageOutput{}) + pulumi.RegisterOutputType(ImageArrayOutput{}) + pulumi.RegisterOutputType(ImageMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/init.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/init.go new file mode 100644 index 000000000..585c74841 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/init.go @@ -0,0 +1,136 @@ +// 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 docker + +import ( + "fmt" + + "github.com/blang/semver" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type module struct { + version semver.Version +} + +func (m *module) Version() semver.Version { + return m.version +} + +func (m *module) Construct(ctx *pulumi.Context, name, typ, urn string) (r pulumi.Resource, err error) { + switch typ { + case "docker:index/container:Container": + r = &Container{} + case "docker:index/image:Image": + r = &Image{} + case "docker:index/network:Network": + r = &Network{} + case "docker:index/plugin:Plugin": + r = &Plugin{} + case "docker:index/registryImage:RegistryImage": + r = &RegistryImage{} + case "docker:index/remoteImage:RemoteImage": + r = &RemoteImage{} + case "docker:index/secret:Secret": + r = &Secret{} + case "docker:index/service:Service": + r = &Service{} + case "docker:index/serviceConfig:ServiceConfig": + r = &ServiceConfig{} + case "docker:index/tag:Tag": + r = &Tag{} + case "docker:index/volume:Volume": + r = &Volume{} + default: + return nil, fmt.Errorf("unknown resource type: %s", typ) + } + + err = ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return +} + +type pkg struct { + version semver.Version +} + +func (p *pkg) Version() semver.Version { + return p.version +} + +func (p *pkg) ConstructProvider(ctx *pulumi.Context, name, typ, urn string) (pulumi.ProviderResource, error) { + if typ != "pulumi:providers:docker" { + return nil, fmt.Errorf("unknown provider type: %s", typ) + } + + r := &Provider{} + err := ctx.RegisterResource(typ, name, nil, r, pulumi.URN_(urn)) + return r, err +} + +func init() { + version, err := internal.PkgVersion() + if err != nil { + version = semver.Version{Major: 1} + } + pulumi.RegisterResourceModule( + "docker", + "index/container", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/image", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/network", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/plugin", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/registryImage", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/remoteImage", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/secret", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/service", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/serviceConfig", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/tag", + &module{version}, + ) + pulumi.RegisterResourceModule( + "docker", + "index/volume", + &module{version}, + ) + pulumi.RegisterResourcePackage( + "docker", + &pkg{version}, + ) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiUtilities.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiUtilities.go new file mode 100644 index 000000000..aa4653801 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiUtilities.go @@ -0,0 +1,113 @@ +// 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 internal + +import ( + "fmt" + "os" + "reflect" + "regexp" + "strconv" + "strings" + + "github.com/blang/semver" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +) + +type envParser func(v string) interface{} + +func ParseEnvBool(v string) interface{} { + b, err := strconv.ParseBool(v) + if err != nil { + return nil + } + return b +} + +func ParseEnvInt(v string) interface{} { + i, err := strconv.ParseInt(v, 0, 0) + if err != nil { + return nil + } + return int(i) +} + +func ParseEnvFloat(v string) interface{} { + f, err := strconv.ParseFloat(v, 64) + if err != nil { + return nil + } + return f +} + +func ParseEnvStringArray(v string) interface{} { + var result pulumi.StringArray + for _, item := range strings.Split(v, ";") { + result = append(result, pulumi.String(item)) + } + return result +} + +func GetEnvOrDefault(def interface{}, parser envParser, vars ...string) interface{} { + for _, v := range vars { + if value, ok := os.LookupEnv(v); ok { + if parser != nil { + return parser(value) + } + return value + } + } + return def +} + +// PkgVersion uses reflection to determine the version of the current package. +// If a version cannot be determined, v1 will be assumed. The second return +// value is always nil. +func PkgVersion() (semver.Version, error) { + // emptyVersion defaults to v0.0.0 + if !SdkVersion.Equals(semver.Version{}) { + return SdkVersion, nil + } + type sentinal struct{} + pkgPath := reflect.TypeOf(sentinal{}).PkgPath() + re := regexp.MustCompile("^.*/pulumi-docker/sdk(/v\\d+)?") + if match := re.FindStringSubmatch(pkgPath); match != nil { + vStr := match[1] + if len(vStr) == 0 { // If the version capture group was empty, default to v1. + return semver.Version{Major: 1}, nil + } + return semver.MustParse(fmt.Sprintf("%s.0.0", vStr[2:])), nil + } + return semver.Version{Major: 1}, nil +} + +// isZero is a null safe check for if a value is it's types zero value. +func IsZero(v interface{}) bool { + if v == nil { + return true + } + return reflect.ValueOf(v).IsZero() +} + +// PkgResourceDefaultOpts provides package level defaults to pulumi.OptionResource. +func PkgResourceDefaultOpts(opts []pulumi.ResourceOption) []pulumi.ResourceOption { + defaults := []pulumi.ResourceOption{} + + version := SdkVersion + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} + +// PkgInvokeDefaultOpts provides package level defaults to pulumi.OptionInvoke. +func PkgInvokeDefaultOpts(opts []pulumi.InvokeOption) []pulumi.InvokeOption { + defaults := []pulumi.InvokeOption{} + + version := SdkVersion + if !version.Equals(semver.Version{}) { + defaults = append(defaults, pulumi.Version(version.String())) + } + return append(defaults, opts...) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiVersion.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiVersion.go new file mode 100644 index 000000000..d59168766 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal/pulumiVersion.go @@ -0,0 +1,11 @@ +// 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 internal + +import ( + "github.com/blang/semver" +) + +var SdkVersion semver.Version = semver.Version{} +var pluginDownloadURL string = "" diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/network.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/network.go new file mode 100644 index 000000000..e2519e641 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/network.go @@ -0,0 +1,465 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// +// `Network` provides a docker network resource. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := docker.NewNetwork(ctx, "privateNetwork", nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// ### Example Assuming you created a `network` as follows #!/bin/bash docker network create foo prints the long ID 87b57a9b91ecab2db2a6dbf38df74c67d7c7108cbe479d6576574ec2cd8c2d73 you provide the definition for the resource as follows terraform resource "docker_network" "foo" { +// +// name = "foo" } then the import command is as follows #!/bin/bash +// +// ```sh +// +// $ pulumi import docker:index/network:Network foo 87b57a9b91ecab2db2a6dbf38df74c67d7c7108cbe479d6576574ec2cd8c2d73 +// +// ``` +type Network struct { + pulumi.CustomResourceState + + // Enable manual container attachment to the network. + Attachable pulumi.BoolPtrOutput `pulumi:"attachable"` + // Requests daemon to check for networks with same name. + CheckDuplicate pulumi.BoolPtrOutput `pulumi:"checkDuplicate"` + // The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. + Driver pulumi.StringOutput `pulumi:"driver"` + // Create swarm routing-mesh network. Defaults to `false`. + Ingress pulumi.BoolPtrOutput `pulumi:"ingress"` + // Whether the network is internal. + Internal pulumi.BoolOutput `pulumi:"internal"` + // The IPAM configuration options + IpamConfigs NetworkIpamConfigArrayOutput `pulumi:"ipamConfigs"` + // Driver used by the custom IP scheme of the network. Defaults to `default` + IpamDriver pulumi.StringPtrOutput `pulumi:"ipamDriver"` + // Provide explicit options to the IPAM driver. Valid options vary with `ipamDriver` and refer to that driver's documentation for more details. + IpamOptions pulumi.MapOutput `pulumi:"ipamOptions"` + // Enable IPv6 networking. Defaults to `false`. + Ipv6 pulumi.BoolPtrOutput `pulumi:"ipv6"` + // User-defined key/value metadata + Labels NetworkLabelArrayOutput `pulumi:"labels"` + // The name of the Docker network. + Name pulumi.StringOutput `pulumi:"name"` + // Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. + Options pulumi.MapOutput `pulumi:"options"` + // Scope of the network. One of `swarm`, `global`, or `local`. + Scope pulumi.StringOutput `pulumi:"scope"` +} + +// NewNetwork registers a new resource with the given unique name, arguments, and options. +func NewNetwork(ctx *pulumi.Context, + name string, args *NetworkArgs, opts ...pulumi.ResourceOption) (*Network, error) { + if args == nil { + args = &NetworkArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Network + err := ctx.RegisterResource("docker:index/network:Network", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetNetwork gets an existing Network 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 GetNetwork(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *NetworkState, opts ...pulumi.ResourceOption) (*Network, error) { + var resource Network + err := ctx.ReadResource("docker:index/network:Network", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Network resources. +type networkState struct { + // Enable manual container attachment to the network. + Attachable *bool `pulumi:"attachable"` + // Requests daemon to check for networks with same name. + CheckDuplicate *bool `pulumi:"checkDuplicate"` + // The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. + Driver *string `pulumi:"driver"` + // Create swarm routing-mesh network. Defaults to `false`. + Ingress *bool `pulumi:"ingress"` + // Whether the network is internal. + Internal *bool `pulumi:"internal"` + // The IPAM configuration options + IpamConfigs []NetworkIpamConfig `pulumi:"ipamConfigs"` + // Driver used by the custom IP scheme of the network. Defaults to `default` + IpamDriver *string `pulumi:"ipamDriver"` + // Provide explicit options to the IPAM driver. Valid options vary with `ipamDriver` and refer to that driver's documentation for more details. + IpamOptions map[string]interface{} `pulumi:"ipamOptions"` + // Enable IPv6 networking. Defaults to `false`. + Ipv6 *bool `pulumi:"ipv6"` + // User-defined key/value metadata + Labels []NetworkLabel `pulumi:"labels"` + // The name of the Docker network. + Name *string `pulumi:"name"` + // Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. + Options map[string]interface{} `pulumi:"options"` + // Scope of the network. One of `swarm`, `global`, or `local`. + Scope *string `pulumi:"scope"` +} + +type NetworkState struct { + // Enable manual container attachment to the network. + Attachable pulumi.BoolPtrInput + // Requests daemon to check for networks with same name. + CheckDuplicate pulumi.BoolPtrInput + // The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. + Driver pulumi.StringPtrInput + // Create swarm routing-mesh network. Defaults to `false`. + Ingress pulumi.BoolPtrInput + // Whether the network is internal. + Internal pulumi.BoolPtrInput + // The IPAM configuration options + IpamConfigs NetworkIpamConfigArrayInput + // Driver used by the custom IP scheme of the network. Defaults to `default` + IpamDriver pulumi.StringPtrInput + // Provide explicit options to the IPAM driver. Valid options vary with `ipamDriver` and refer to that driver's documentation for more details. + IpamOptions pulumi.MapInput + // Enable IPv6 networking. Defaults to `false`. + Ipv6 pulumi.BoolPtrInput + // User-defined key/value metadata + Labels NetworkLabelArrayInput + // The name of the Docker network. + Name pulumi.StringPtrInput + // Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. + Options pulumi.MapInput + // Scope of the network. One of `swarm`, `global`, or `local`. + Scope pulumi.StringPtrInput +} + +func (NetworkState) ElementType() reflect.Type { + return reflect.TypeOf((*networkState)(nil)).Elem() +} + +type networkArgs struct { + // Enable manual container attachment to the network. + Attachable *bool `pulumi:"attachable"` + // Requests daemon to check for networks with same name. + CheckDuplicate *bool `pulumi:"checkDuplicate"` + // The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. + Driver *string `pulumi:"driver"` + // Create swarm routing-mesh network. Defaults to `false`. + Ingress *bool `pulumi:"ingress"` + // Whether the network is internal. + Internal *bool `pulumi:"internal"` + // The IPAM configuration options + IpamConfigs []NetworkIpamConfig `pulumi:"ipamConfigs"` + // Driver used by the custom IP scheme of the network. Defaults to `default` + IpamDriver *string `pulumi:"ipamDriver"` + // Provide explicit options to the IPAM driver. Valid options vary with `ipamDriver` and refer to that driver's documentation for more details. + IpamOptions map[string]interface{} `pulumi:"ipamOptions"` + // Enable IPv6 networking. Defaults to `false`. + Ipv6 *bool `pulumi:"ipv6"` + // User-defined key/value metadata + Labels []NetworkLabel `pulumi:"labels"` + // The name of the Docker network. + Name *string `pulumi:"name"` + // Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. + Options map[string]interface{} `pulumi:"options"` +} + +// The set of arguments for constructing a Network resource. +type NetworkArgs struct { + // Enable manual container attachment to the network. + Attachable pulumi.BoolPtrInput + // Requests daemon to check for networks with same name. + CheckDuplicate pulumi.BoolPtrInput + // The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. + Driver pulumi.StringPtrInput + // Create swarm routing-mesh network. Defaults to `false`. + Ingress pulumi.BoolPtrInput + // Whether the network is internal. + Internal pulumi.BoolPtrInput + // The IPAM configuration options + IpamConfigs NetworkIpamConfigArrayInput + // Driver used by the custom IP scheme of the network. Defaults to `default` + IpamDriver pulumi.StringPtrInput + // Provide explicit options to the IPAM driver. Valid options vary with `ipamDriver` and refer to that driver's documentation for more details. + IpamOptions pulumi.MapInput + // Enable IPv6 networking. Defaults to `false`. + Ipv6 pulumi.BoolPtrInput + // User-defined key/value metadata + Labels NetworkLabelArrayInput + // The name of the Docker network. + Name pulumi.StringPtrInput + // Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. + Options pulumi.MapInput +} + +func (NetworkArgs) ElementType() reflect.Type { + return reflect.TypeOf((*networkArgs)(nil)).Elem() +} + +type NetworkInput interface { + pulumi.Input + + ToNetworkOutput() NetworkOutput + ToNetworkOutputWithContext(ctx context.Context) NetworkOutput +} + +func (*Network) ElementType() reflect.Type { + return reflect.TypeOf((**Network)(nil)).Elem() +} + +func (i *Network) ToNetworkOutput() NetworkOutput { + return i.ToNetworkOutputWithContext(context.Background()) +} + +func (i *Network) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkOutput) +} + +func (i *Network) ToOutput(ctx context.Context) pulumix.Output[*Network] { + return pulumix.Output[*Network]{ + OutputState: i.ToNetworkOutputWithContext(ctx).OutputState, + } +} + +// NetworkArrayInput is an input type that accepts NetworkArray and NetworkArrayOutput values. +// You can construct a concrete instance of `NetworkArrayInput` via: +// +// NetworkArray{ NetworkArgs{...} } +type NetworkArrayInput interface { + pulumi.Input + + ToNetworkArrayOutput() NetworkArrayOutput + ToNetworkArrayOutputWithContext(context.Context) NetworkArrayOutput +} + +type NetworkArray []NetworkInput + +func (NetworkArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Network)(nil)).Elem() +} + +func (i NetworkArray) ToNetworkArrayOutput() NetworkArrayOutput { + return i.ToNetworkArrayOutputWithContext(context.Background()) +} + +func (i NetworkArray) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkArrayOutput) +} + +func (i NetworkArray) ToOutput(ctx context.Context) pulumix.Output[[]*Network] { + return pulumix.Output[[]*Network]{ + OutputState: i.ToNetworkArrayOutputWithContext(ctx).OutputState, + } +} + +// NetworkMapInput is an input type that accepts NetworkMap and NetworkMapOutput values. +// You can construct a concrete instance of `NetworkMapInput` via: +// +// NetworkMap{ "key": NetworkArgs{...} } +type NetworkMapInput interface { + pulumi.Input + + ToNetworkMapOutput() NetworkMapOutput + ToNetworkMapOutputWithContext(context.Context) NetworkMapOutput +} + +type NetworkMap map[string]NetworkInput + +func (NetworkMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Network)(nil)).Elem() +} + +func (i NetworkMap) ToNetworkMapOutput() NetworkMapOutput { + return i.ToNetworkMapOutputWithContext(context.Background()) +} + +func (i NetworkMap) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkMapOutput) +} + +func (i NetworkMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Network] { + return pulumix.Output[map[string]*Network]{ + OutputState: i.ToNetworkMapOutputWithContext(ctx).OutputState, + } +} + +type NetworkOutput struct{ *pulumi.OutputState } + +func (NetworkOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Network)(nil)).Elem() +} + +func (o NetworkOutput) ToNetworkOutput() NetworkOutput { + return o +} + +func (o NetworkOutput) ToNetworkOutputWithContext(ctx context.Context) NetworkOutput { + return o +} + +func (o NetworkOutput) ToOutput(ctx context.Context) pulumix.Output[*Network] { + return pulumix.Output[*Network]{ + OutputState: o.OutputState, + } +} + +// Enable manual container attachment to the network. +func (o NetworkOutput) Attachable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Network) pulumi.BoolPtrOutput { return v.Attachable }).(pulumi.BoolPtrOutput) +} + +// Requests daemon to check for networks with same name. +func (o NetworkOutput) CheckDuplicate() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Network) pulumi.BoolPtrOutput { return v.CheckDuplicate }).(pulumi.BoolPtrOutput) +} + +// The driver of the Docker network. Possible values are `bridge`, `host`, `overlay`, `macvlan`. See [network docs](https://docs.docker.com/network/#network-drivers) for more details. +func (o NetworkOutput) Driver() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Driver }).(pulumi.StringOutput) +} + +// Create swarm routing-mesh network. Defaults to `false`. +func (o NetworkOutput) Ingress() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Network) pulumi.BoolPtrOutput { return v.Ingress }).(pulumi.BoolPtrOutput) +} + +// Whether the network is internal. +func (o NetworkOutput) Internal() pulumi.BoolOutput { + return o.ApplyT(func(v *Network) pulumi.BoolOutput { return v.Internal }).(pulumi.BoolOutput) +} + +// The IPAM configuration options +func (o NetworkOutput) IpamConfigs() NetworkIpamConfigArrayOutput { + return o.ApplyT(func(v *Network) NetworkIpamConfigArrayOutput { return v.IpamConfigs }).(NetworkIpamConfigArrayOutput) +} + +// Driver used by the custom IP scheme of the network. Defaults to `default` +func (o NetworkOutput) IpamDriver() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Network) pulumi.StringPtrOutput { return v.IpamDriver }).(pulumi.StringPtrOutput) +} + +// Provide explicit options to the IPAM driver. Valid options vary with `ipamDriver` and refer to that driver's documentation for more details. +func (o NetworkOutput) IpamOptions() pulumi.MapOutput { + return o.ApplyT(func(v *Network) pulumi.MapOutput { return v.IpamOptions }).(pulumi.MapOutput) +} + +// Enable IPv6 networking. Defaults to `false`. +func (o NetworkOutput) Ipv6() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Network) pulumi.BoolPtrOutput { return v.Ipv6 }).(pulumi.BoolPtrOutput) +} + +// User-defined key/value metadata +func (o NetworkOutput) Labels() NetworkLabelArrayOutput { + return o.ApplyT(func(v *Network) NetworkLabelArrayOutput { return v.Labels }).(NetworkLabelArrayOutput) +} + +// The name of the Docker network. +func (o NetworkOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Only available with bridge networks. See [bridge options docs](https://docs.docker.com/engine/reference/commandline/network_create/#bridge-driver-options) for more details. +func (o NetworkOutput) Options() pulumi.MapOutput { + return o.ApplyT(func(v *Network) pulumi.MapOutput { return v.Options }).(pulumi.MapOutput) +} + +// Scope of the network. One of `swarm`, `global`, or `local`. +func (o NetworkOutput) Scope() pulumi.StringOutput { + return o.ApplyT(func(v *Network) pulumi.StringOutput { return v.Scope }).(pulumi.StringOutput) +} + +type NetworkArrayOutput struct{ *pulumi.OutputState } + +func (NetworkArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Network)(nil)).Elem() +} + +func (o NetworkArrayOutput) ToNetworkArrayOutput() NetworkArrayOutput { + return o +} + +func (o NetworkArrayOutput) ToNetworkArrayOutputWithContext(ctx context.Context) NetworkArrayOutput { + return o +} + +func (o NetworkArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Network] { + return pulumix.Output[[]*Network]{ + OutputState: o.OutputState, + } +} + +func (o NetworkArrayOutput) Index(i pulumi.IntInput) NetworkOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Network { + return vs[0].([]*Network)[vs[1].(int)] + }).(NetworkOutput) +} + +type NetworkMapOutput struct{ *pulumi.OutputState } + +func (NetworkMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Network)(nil)).Elem() +} + +func (o NetworkMapOutput) ToNetworkMapOutput() NetworkMapOutput { + return o +} + +func (o NetworkMapOutput) ToNetworkMapOutputWithContext(ctx context.Context) NetworkMapOutput { + return o +} + +func (o NetworkMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Network] { + return pulumix.Output[map[string]*Network]{ + OutputState: o.OutputState, + } +} + +func (o NetworkMapOutput) MapIndex(k pulumi.StringInput) NetworkOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Network { + return vs[0].(map[string]*Network)[vs[1].(string)] + }).(NetworkOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*NetworkInput)(nil)).Elem(), &Network{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkArrayInput)(nil)).Elem(), NetworkArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkMapInput)(nil)).Elem(), NetworkMap{}) + pulumi.RegisterOutputType(NetworkOutput{}) + pulumi.RegisterOutputType(NetworkArrayOutput{}) + pulumi.RegisterOutputType(NetworkMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/plugin.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/plugin.go new file mode 100644 index 000000000..41f466c99 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/plugin.go @@ -0,0 +1,428 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// +// Manages the lifecycle of a Docker plugin. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := docker.NewPlugin(ctx, "sample-volume-plugin", &docker.PluginArgs{ +// Alias: pulumi.String("sample-volume-plugin"), +// EnableTimeout: pulumi.Int(60), +// Enabled: pulumi.Bool(false), +// Envs: pulumi.StringArray{ +// pulumi.String("DEBUG=1"), +// }, +// ForceDestroy: pulumi.Bool(true), +// ForceDisable: pulumi.Bool(true), +// GrantAllPermissions: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// #!/bin/bash +// +// ```sh +// +// $ pulumi import docker:index/plugin:Plugin sample-volume-plugin "$(docker plugin inspect -f {{.ID}} tiborvass/sample-volume-plugin:latest)" +// +// ``` +type Plugin struct { + pulumi.CustomResourceState + + // Docker Plugin alias + Alias pulumi.StringOutput `pulumi:"alias"` + // HTTP client timeout to enable the plugin + EnableTimeout pulumi.IntPtrOutput `pulumi:"enableTimeout"` + // If `true` the plugin is enabled. Defaults to `true` + Enabled pulumi.BoolPtrOutput `pulumi:"enabled"` + // The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs pulumi.StringArrayOutput `pulumi:"envs"` + // If true, then the plugin is destroyed forcibly + ForceDestroy pulumi.BoolPtrOutput `pulumi:"forceDestroy"` + // If true, then the plugin is disabled forcibly + ForceDisable pulumi.BoolPtrOutput `pulumi:"forceDisable"` + // If true, grant all permissions necessary to run the plugin + GrantAllPermissions pulumi.BoolPtrOutput `pulumi:"grantAllPermissions"` + // Grant specific permissions only + GrantPermissions PluginGrantPermissionArrayOutput `pulumi:"grantPermissions"` + // Docker Plugin name + Name pulumi.StringOutput `pulumi:"name"` + // Docker Plugin Reference + PluginReference pulumi.StringOutput `pulumi:"pluginReference"` +} + +// NewPlugin registers a new resource with the given unique name, arguments, and options. +func NewPlugin(ctx *pulumi.Context, + name string, args *PluginArgs, opts ...pulumi.ResourceOption) (*Plugin, error) { + if args == nil { + args = &PluginArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Plugin + err := ctx.RegisterResource("docker:index/plugin:Plugin", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetPlugin gets an existing Plugin 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 GetPlugin(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *PluginState, opts ...pulumi.ResourceOption) (*Plugin, error) { + var resource Plugin + err := ctx.ReadResource("docker:index/plugin:Plugin", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Plugin resources. +type pluginState struct { + // Docker Plugin alias + Alias *string `pulumi:"alias"` + // HTTP client timeout to enable the plugin + EnableTimeout *int `pulumi:"enableTimeout"` + // If `true` the plugin is enabled. Defaults to `true` + Enabled *bool `pulumi:"enabled"` + // The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs []string `pulumi:"envs"` + // If true, then the plugin is destroyed forcibly + ForceDestroy *bool `pulumi:"forceDestroy"` + // If true, then the plugin is disabled forcibly + ForceDisable *bool `pulumi:"forceDisable"` + // If true, grant all permissions necessary to run the plugin + GrantAllPermissions *bool `pulumi:"grantAllPermissions"` + // Grant specific permissions only + GrantPermissions []PluginGrantPermission `pulumi:"grantPermissions"` + // Docker Plugin name + Name *string `pulumi:"name"` + // Docker Plugin Reference + PluginReference *string `pulumi:"pluginReference"` +} + +type PluginState struct { + // Docker Plugin alias + Alias pulumi.StringPtrInput + // HTTP client timeout to enable the plugin + EnableTimeout pulumi.IntPtrInput + // If `true` the plugin is enabled. Defaults to `true` + Enabled pulumi.BoolPtrInput + // The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs pulumi.StringArrayInput + // If true, then the plugin is destroyed forcibly + ForceDestroy pulumi.BoolPtrInput + // If true, then the plugin is disabled forcibly + ForceDisable pulumi.BoolPtrInput + // If true, grant all permissions necessary to run the plugin + GrantAllPermissions pulumi.BoolPtrInput + // Grant specific permissions only + GrantPermissions PluginGrantPermissionArrayInput + // Docker Plugin name + Name pulumi.StringPtrInput + // Docker Plugin Reference + PluginReference pulumi.StringPtrInput +} + +func (PluginState) ElementType() reflect.Type { + return reflect.TypeOf((*pluginState)(nil)).Elem() +} + +type pluginArgs struct { + // Docker Plugin alias + Alias *string `pulumi:"alias"` + // HTTP client timeout to enable the plugin + EnableTimeout *int `pulumi:"enableTimeout"` + // If `true` the plugin is enabled. Defaults to `true` + Enabled *bool `pulumi:"enabled"` + // The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs []string `pulumi:"envs"` + // If true, then the plugin is destroyed forcibly + ForceDestroy *bool `pulumi:"forceDestroy"` + // If true, then the plugin is disabled forcibly + ForceDisable *bool `pulumi:"forceDisable"` + // If true, grant all permissions necessary to run the plugin + GrantAllPermissions *bool `pulumi:"grantAllPermissions"` + // Grant specific permissions only + GrantPermissions []PluginGrantPermission `pulumi:"grantPermissions"` + // Docker Plugin name + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a Plugin resource. +type PluginArgs struct { + // Docker Plugin alias + Alias pulumi.StringPtrInput + // HTTP client timeout to enable the plugin + EnableTimeout pulumi.IntPtrInput + // If `true` the plugin is enabled. Defaults to `true` + Enabled pulumi.BoolPtrInput + // The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` + Envs pulumi.StringArrayInput + // If true, then the plugin is destroyed forcibly + ForceDestroy pulumi.BoolPtrInput + // If true, then the plugin is disabled forcibly + ForceDisable pulumi.BoolPtrInput + // If true, grant all permissions necessary to run the plugin + GrantAllPermissions pulumi.BoolPtrInput + // Grant specific permissions only + GrantPermissions PluginGrantPermissionArrayInput + // Docker Plugin name + Name pulumi.StringPtrInput +} + +func (PluginArgs) ElementType() reflect.Type { + return reflect.TypeOf((*pluginArgs)(nil)).Elem() +} + +type PluginInput interface { + pulumi.Input + + ToPluginOutput() PluginOutput + ToPluginOutputWithContext(ctx context.Context) PluginOutput +} + +func (*Plugin) ElementType() reflect.Type { + return reflect.TypeOf((**Plugin)(nil)).Elem() +} + +func (i *Plugin) ToPluginOutput() PluginOutput { + return i.ToPluginOutputWithContext(context.Background()) +} + +func (i *Plugin) ToPluginOutputWithContext(ctx context.Context) PluginOutput { + return pulumi.ToOutputWithContext(ctx, i).(PluginOutput) +} + +func (i *Plugin) ToOutput(ctx context.Context) pulumix.Output[*Plugin] { + return pulumix.Output[*Plugin]{ + OutputState: i.ToPluginOutputWithContext(ctx).OutputState, + } +} + +// PluginArrayInput is an input type that accepts PluginArray and PluginArrayOutput values. +// You can construct a concrete instance of `PluginArrayInput` via: +// +// PluginArray{ PluginArgs{...} } +type PluginArrayInput interface { + pulumi.Input + + ToPluginArrayOutput() PluginArrayOutput + ToPluginArrayOutputWithContext(context.Context) PluginArrayOutput +} + +type PluginArray []PluginInput + +func (PluginArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Plugin)(nil)).Elem() +} + +func (i PluginArray) ToPluginArrayOutput() PluginArrayOutput { + return i.ToPluginArrayOutputWithContext(context.Background()) +} + +func (i PluginArray) ToPluginArrayOutputWithContext(ctx context.Context) PluginArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(PluginArrayOutput) +} + +func (i PluginArray) ToOutput(ctx context.Context) pulumix.Output[[]*Plugin] { + return pulumix.Output[[]*Plugin]{ + OutputState: i.ToPluginArrayOutputWithContext(ctx).OutputState, + } +} + +// PluginMapInput is an input type that accepts PluginMap and PluginMapOutput values. +// You can construct a concrete instance of `PluginMapInput` via: +// +// PluginMap{ "key": PluginArgs{...} } +type PluginMapInput interface { + pulumi.Input + + ToPluginMapOutput() PluginMapOutput + ToPluginMapOutputWithContext(context.Context) PluginMapOutput +} + +type PluginMap map[string]PluginInput + +func (PluginMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Plugin)(nil)).Elem() +} + +func (i PluginMap) ToPluginMapOutput() PluginMapOutput { + return i.ToPluginMapOutputWithContext(context.Background()) +} + +func (i PluginMap) ToPluginMapOutputWithContext(ctx context.Context) PluginMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(PluginMapOutput) +} + +func (i PluginMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Plugin] { + return pulumix.Output[map[string]*Plugin]{ + OutputState: i.ToPluginMapOutputWithContext(ctx).OutputState, + } +} + +type PluginOutput struct{ *pulumi.OutputState } + +func (PluginOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Plugin)(nil)).Elem() +} + +func (o PluginOutput) ToPluginOutput() PluginOutput { + return o +} + +func (o PluginOutput) ToPluginOutputWithContext(ctx context.Context) PluginOutput { + return o +} + +func (o PluginOutput) ToOutput(ctx context.Context) pulumix.Output[*Plugin] { + return pulumix.Output[*Plugin]{ + OutputState: o.OutputState, + } +} + +// Docker Plugin alias +func (o PluginOutput) Alias() pulumi.StringOutput { + return o.ApplyT(func(v *Plugin) pulumi.StringOutput { return v.Alias }).(pulumi.StringOutput) +} + +// HTTP client timeout to enable the plugin +func (o PluginOutput) EnableTimeout() pulumi.IntPtrOutput { + return o.ApplyT(func(v *Plugin) pulumi.IntPtrOutput { return v.EnableTimeout }).(pulumi.IntPtrOutput) +} + +// If `true` the plugin is enabled. Defaults to `true` +func (o PluginOutput) Enabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Plugin) pulumi.BoolPtrOutput { return v.Enabled }).(pulumi.BoolPtrOutput) +} + +// The environment variables in the form of `KEY=VALUE`, e.g. `DEBUG=0` +func (o PluginOutput) Envs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *Plugin) pulumi.StringArrayOutput { return v.Envs }).(pulumi.StringArrayOutput) +} + +// If true, then the plugin is destroyed forcibly +func (o PluginOutput) ForceDestroy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Plugin) pulumi.BoolPtrOutput { return v.ForceDestroy }).(pulumi.BoolPtrOutput) +} + +// If true, then the plugin is disabled forcibly +func (o PluginOutput) ForceDisable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Plugin) pulumi.BoolPtrOutput { return v.ForceDisable }).(pulumi.BoolPtrOutput) +} + +// If true, grant all permissions necessary to run the plugin +func (o PluginOutput) GrantAllPermissions() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *Plugin) pulumi.BoolPtrOutput { return v.GrantAllPermissions }).(pulumi.BoolPtrOutput) +} + +// Grant specific permissions only +func (o PluginOutput) GrantPermissions() PluginGrantPermissionArrayOutput { + return o.ApplyT(func(v *Plugin) PluginGrantPermissionArrayOutput { return v.GrantPermissions }).(PluginGrantPermissionArrayOutput) +} + +// Docker Plugin name +func (o PluginOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Plugin) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Docker Plugin Reference +func (o PluginOutput) PluginReference() pulumi.StringOutput { + return o.ApplyT(func(v *Plugin) pulumi.StringOutput { return v.PluginReference }).(pulumi.StringOutput) +} + +type PluginArrayOutput struct{ *pulumi.OutputState } + +func (PluginArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Plugin)(nil)).Elem() +} + +func (o PluginArrayOutput) ToPluginArrayOutput() PluginArrayOutput { + return o +} + +func (o PluginArrayOutput) ToPluginArrayOutputWithContext(ctx context.Context) PluginArrayOutput { + return o +} + +func (o PluginArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Plugin] { + return pulumix.Output[[]*Plugin]{ + OutputState: o.OutputState, + } +} + +func (o PluginArrayOutput) Index(i pulumi.IntInput) PluginOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Plugin { + return vs[0].([]*Plugin)[vs[1].(int)] + }).(PluginOutput) +} + +type PluginMapOutput struct{ *pulumi.OutputState } + +func (PluginMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Plugin)(nil)).Elem() +} + +func (o PluginMapOutput) ToPluginMapOutput() PluginMapOutput { + return o +} + +func (o PluginMapOutput) ToPluginMapOutputWithContext(ctx context.Context) PluginMapOutput { + return o +} + +func (o PluginMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Plugin] { + return pulumix.Output[map[string]*Plugin]{ + OutputState: o.OutputState, + } +} + +func (o PluginMapOutput) MapIndex(k pulumi.StringInput) PluginOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Plugin { + return vs[0].(map[string]*Plugin)[vs[1].(string)] + }).(PluginOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*PluginInput)(nil)).Elem(), &Plugin{}) + pulumi.RegisterInputType(reflect.TypeOf((*PluginArrayInput)(nil)).Elem(), PluginArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*PluginMapInput)(nil)).Elem(), PluginMap{}) + pulumi.RegisterOutputType(PluginOutput{}) + pulumi.RegisterOutputType(PluginArrayOutput{}) + pulumi.RegisterOutputType(PluginMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/provider.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/provider.go new file mode 100644 index 000000000..f04786df7 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/provider.go @@ -0,0 +1,165 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// The provider type for the docker package. By default, resources use package-wide configuration +// settings, however an explicit `Provider` instance may be created and passed during resource +// construction to achieve fine-grained programmatic control over provider settings. See the +// [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information. +type Provider struct { + pulumi.ProviderResourceState + + // PEM-encoded content of Docker host CA certificate + CaMaterial pulumi.StringPtrOutput `pulumi:"caMaterial"` + // PEM-encoded content of Docker client certificate + CertMaterial pulumi.StringPtrOutput `pulumi:"certMaterial"` + // Path to directory with Docker TLS config + CertPath pulumi.StringPtrOutput `pulumi:"certPath"` + // The Docker daemon address + Host pulumi.StringPtrOutput `pulumi:"host"` + // PEM-encoded content of Docker client private key + KeyMaterial pulumi.StringPtrOutput `pulumi:"keyMaterial"` +} + +// NewProvider registers a new resource with the given unique name, arguments, and options. +func NewProvider(ctx *pulumi.Context, + name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) { + if args == nil { + args = &ProviderArgs{} + } + + if args.Host == nil { + if d := internal.GetEnvOrDefault(nil, nil, "DOCKER_HOST"); d != nil { + args.Host = pulumi.StringPtr(d.(string)) + } + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Provider + err := ctx.RegisterResource("pulumi:providers:docker", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +type providerArgs struct { + // PEM-encoded content of Docker host CA certificate + CaMaterial *string `pulumi:"caMaterial"` + // PEM-encoded content of Docker client certificate + CertMaterial *string `pulumi:"certMaterial"` + // Path to directory with Docker TLS config + CertPath *string `pulumi:"certPath"` + // The Docker daemon address + Host *string `pulumi:"host"` + // PEM-encoded content of Docker client private key + KeyMaterial *string `pulumi:"keyMaterial"` + RegistryAuth []ProviderRegistryAuth `pulumi:"registryAuth"` + // Additional SSH option flags to be appended when using `ssh://` protocol + SshOpts []string `pulumi:"sshOpts"` +} + +// The set of arguments for constructing a Provider resource. +type ProviderArgs struct { + // PEM-encoded content of Docker host CA certificate + CaMaterial pulumi.StringPtrInput + // PEM-encoded content of Docker client certificate + CertMaterial pulumi.StringPtrInput + // Path to directory with Docker TLS config + CertPath pulumi.StringPtrInput + // The Docker daemon address + Host pulumi.StringPtrInput + // PEM-encoded content of Docker client private key + KeyMaterial pulumi.StringPtrInput + RegistryAuth ProviderRegistryAuthArrayInput + // Additional SSH option flags to be appended when using `ssh://` protocol + SshOpts pulumi.StringArrayInput +} + +func (ProviderArgs) ElementType() reflect.Type { + return reflect.TypeOf((*providerArgs)(nil)).Elem() +} + +type ProviderInput interface { + pulumi.Input + + ToProviderOutput() ProviderOutput + ToProviderOutputWithContext(ctx context.Context) ProviderOutput +} + +func (*Provider) ElementType() reflect.Type { + return reflect.TypeOf((**Provider)(nil)).Elem() +} + +func (i *Provider) ToProviderOutput() ProviderOutput { + return i.ToProviderOutputWithContext(context.Background()) +} + +func (i *Provider) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderOutput) +} + +func (i *Provider) ToOutput(ctx context.Context) pulumix.Output[*Provider] { + return pulumix.Output[*Provider]{ + OutputState: i.ToProviderOutputWithContext(ctx).OutputState, + } +} + +type ProviderOutput struct{ *pulumi.OutputState } + +func (ProviderOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Provider)(nil)).Elem() +} + +func (o ProviderOutput) ToProviderOutput() ProviderOutput { + return o +} + +func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput { + return o +} + +func (o ProviderOutput) ToOutput(ctx context.Context) pulumix.Output[*Provider] { + return pulumix.Output[*Provider]{ + OutputState: o.OutputState, + } +} + +// PEM-encoded content of Docker host CA certificate +func (o ProviderOutput) CaMaterial() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CaMaterial }).(pulumi.StringPtrOutput) +} + +// PEM-encoded content of Docker client certificate +func (o ProviderOutput) CertMaterial() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CertMaterial }).(pulumi.StringPtrOutput) +} + +// Path to directory with Docker TLS config +func (o ProviderOutput) CertPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CertPath }).(pulumi.StringPtrOutput) +} + +// The Docker daemon address +func (o ProviderOutput) Host() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Host }).(pulumi.StringPtrOutput) +} + +// PEM-encoded content of Docker client private key +func (o ProviderOutput) KeyMaterial() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.KeyMaterial }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ProviderInput)(nil)).Elem(), &Provider{}) + pulumi.RegisterOutputType(ProviderOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumi-plugin.json b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumi-plugin.json new file mode 100644 index 000000000..cf18e9129 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumi-plugin.json @@ -0,0 +1,4 @@ +{ + "resource": true, + "name": "docker" +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiEnums.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiEnums.go new file mode 100644 index 000000000..48381fca9 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiEnums.go @@ -0,0 +1,204 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// The version of the Docker builder. +type BuilderVersion string + +const ( + // The first generation builder for Docker Daemon + BuilderVersionBuilderV1 = BuilderVersion("BuilderV1") + // The builder based on moby/buildkit project + BuilderVersionBuilderBuildKit = BuilderVersion("BuilderBuildKit") +) + +func (BuilderVersion) ElementType() reflect.Type { + return reflect.TypeOf((*BuilderVersion)(nil)).Elem() +} + +func (e BuilderVersion) ToBuilderVersionOutput() BuilderVersionOutput { + return pulumi.ToOutput(e).(BuilderVersionOutput) +} + +func (e BuilderVersion) ToBuilderVersionOutputWithContext(ctx context.Context) BuilderVersionOutput { + return pulumi.ToOutputWithContext(ctx, e).(BuilderVersionOutput) +} + +func (e BuilderVersion) ToBuilderVersionPtrOutput() BuilderVersionPtrOutput { + return e.ToBuilderVersionPtrOutputWithContext(context.Background()) +} + +func (e BuilderVersion) ToBuilderVersionPtrOutputWithContext(ctx context.Context) BuilderVersionPtrOutput { + return BuilderVersion(e).ToBuilderVersionOutputWithContext(ctx).ToBuilderVersionPtrOutputWithContext(ctx) +} + +func (e BuilderVersion) ToStringOutput() pulumi.StringOutput { + return pulumi.ToOutput(pulumi.String(e)).(pulumi.StringOutput) +} + +func (e BuilderVersion) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return pulumi.ToOutputWithContext(ctx, pulumi.String(e)).(pulumi.StringOutput) +} + +func (e BuilderVersion) ToStringPtrOutput() pulumi.StringPtrOutput { + return pulumi.String(e).ToStringPtrOutputWithContext(context.Background()) +} + +func (e BuilderVersion) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return pulumi.String(e).ToStringOutputWithContext(ctx).ToStringPtrOutputWithContext(ctx) +} + +type BuilderVersionOutput struct{ *pulumi.OutputState } + +func (BuilderVersionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*BuilderVersion)(nil)).Elem() +} + +func (o BuilderVersionOutput) ToBuilderVersionOutput() BuilderVersionOutput { + return o +} + +func (o BuilderVersionOutput) ToBuilderVersionOutputWithContext(ctx context.Context) BuilderVersionOutput { + return o +} + +func (o BuilderVersionOutput) ToBuilderVersionPtrOutput() BuilderVersionPtrOutput { + return o.ToBuilderVersionPtrOutputWithContext(context.Background()) +} + +func (o BuilderVersionOutput) ToBuilderVersionPtrOutputWithContext(ctx context.Context) BuilderVersionPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v BuilderVersion) *BuilderVersion { + return &v + }).(BuilderVersionPtrOutput) +} + +func (o BuilderVersionOutput) ToOutput(ctx context.Context) pulumix.Output[BuilderVersion] { + return pulumix.Output[BuilderVersion]{ + OutputState: o.OutputState, + } +} + +func (o BuilderVersionOutput) ToStringOutput() pulumi.StringOutput { + return o.ToStringOutputWithContext(context.Background()) +} + +func (o BuilderVersionOutput) ToStringOutputWithContext(ctx context.Context) pulumi.StringOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e BuilderVersion) string { + return string(e) + }).(pulumi.StringOutput) +} + +func (o BuilderVersionOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o BuilderVersionOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e BuilderVersion) *string { + v := string(e) + return &v + }).(pulumi.StringPtrOutput) +} + +type BuilderVersionPtrOutput struct{ *pulumi.OutputState } + +func (BuilderVersionPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**BuilderVersion)(nil)).Elem() +} + +func (o BuilderVersionPtrOutput) ToBuilderVersionPtrOutput() BuilderVersionPtrOutput { + return o +} + +func (o BuilderVersionPtrOutput) ToBuilderVersionPtrOutputWithContext(ctx context.Context) BuilderVersionPtrOutput { + return o +} + +func (o BuilderVersionPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*BuilderVersion] { + return pulumix.Output[*BuilderVersion]{ + OutputState: o.OutputState, + } +} + +func (o BuilderVersionPtrOutput) Elem() BuilderVersionOutput { + return o.ApplyT(func(v *BuilderVersion) BuilderVersion { + if v != nil { + return *v + } + var ret BuilderVersion + return ret + }).(BuilderVersionOutput) +} + +func (o BuilderVersionPtrOutput) ToStringPtrOutput() pulumi.StringPtrOutput { + return o.ToStringPtrOutputWithContext(context.Background()) +} + +func (o BuilderVersionPtrOutput) ToStringPtrOutputWithContext(ctx context.Context) pulumi.StringPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, e *BuilderVersion) *string { + if e == nil { + return nil + } + v := string(*e) + return &v + }).(pulumi.StringPtrOutput) +} + +// BuilderVersionInput is an input type that accepts BuilderVersionArgs and BuilderVersionOutput values. +// You can construct a concrete instance of `BuilderVersionInput` via: +// +// BuilderVersionArgs{...} +type BuilderVersionInput interface { + pulumi.Input + + ToBuilderVersionOutput() BuilderVersionOutput + ToBuilderVersionOutputWithContext(context.Context) BuilderVersionOutput +} + +var builderVersionPtrType = reflect.TypeOf((**BuilderVersion)(nil)).Elem() + +type BuilderVersionPtrInput interface { + pulumi.Input + + ToBuilderVersionPtrOutput() BuilderVersionPtrOutput + ToBuilderVersionPtrOutputWithContext(context.Context) BuilderVersionPtrOutput +} + +type builderVersionPtr string + +func BuilderVersionPtr(v string) BuilderVersionPtrInput { + return (*builderVersionPtr)(&v) +} + +func (*builderVersionPtr) ElementType() reflect.Type { + return builderVersionPtrType +} + +func (in *builderVersionPtr) ToBuilderVersionPtrOutput() BuilderVersionPtrOutput { + return pulumi.ToOutput(in).(BuilderVersionPtrOutput) +} + +func (in *builderVersionPtr) ToBuilderVersionPtrOutputWithContext(ctx context.Context) BuilderVersionPtrOutput { + return pulumi.ToOutputWithContext(ctx, in).(BuilderVersionPtrOutput) +} + +func (in *builderVersionPtr) ToOutput(ctx context.Context) pulumix.Output[*BuilderVersion] { + return pulumix.Output[*BuilderVersion]{ + OutputState: in.ToBuilderVersionPtrOutputWithContext(ctx).OutputState, + } +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*BuilderVersionInput)(nil)).Elem(), BuilderVersion("BuilderV1")) + pulumi.RegisterInputType(reflect.TypeOf((*BuilderVersionPtrInput)(nil)).Elem(), BuilderVersion("BuilderV1")) + pulumi.RegisterOutputType(BuilderVersionOutput{}) + pulumi.RegisterOutputType(BuilderVersionPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiTypes.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiTypes.go new file mode 100644 index 000000000..de130d3f0 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/pulumiTypes.go @@ -0,0 +1,11891 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +var _ = internal.GetEnvOrDefault + +type ContainerCapabilities struct { + // List of linux capabilities to add. + Adds []string `pulumi:"adds"` + // List of linux capabilities to drop. + Drops []string `pulumi:"drops"` +} + +// ContainerCapabilitiesInput is an input type that accepts ContainerCapabilitiesArgs and ContainerCapabilitiesOutput values. +// You can construct a concrete instance of `ContainerCapabilitiesInput` via: +// +// ContainerCapabilitiesArgs{...} +type ContainerCapabilitiesInput interface { + pulumi.Input + + ToContainerCapabilitiesOutput() ContainerCapabilitiesOutput + ToContainerCapabilitiesOutputWithContext(context.Context) ContainerCapabilitiesOutput +} + +type ContainerCapabilitiesArgs struct { + // List of linux capabilities to add. + Adds pulumi.StringArrayInput `pulumi:"adds"` + // List of linux capabilities to drop. + Drops pulumi.StringArrayInput `pulumi:"drops"` +} + +func (ContainerCapabilitiesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerCapabilities)(nil)).Elem() +} + +func (i ContainerCapabilitiesArgs) ToContainerCapabilitiesOutput() ContainerCapabilitiesOutput { + return i.ToContainerCapabilitiesOutputWithContext(context.Background()) +} + +func (i ContainerCapabilitiesArgs) ToContainerCapabilitiesOutputWithContext(ctx context.Context) ContainerCapabilitiesOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerCapabilitiesOutput) +} + +func (i ContainerCapabilitiesArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerCapabilities] { + return pulumix.Output[ContainerCapabilities]{ + OutputState: i.ToContainerCapabilitiesOutputWithContext(ctx).OutputState, + } +} + +func (i ContainerCapabilitiesArgs) ToContainerCapabilitiesPtrOutput() ContainerCapabilitiesPtrOutput { + return i.ToContainerCapabilitiesPtrOutputWithContext(context.Background()) +} + +func (i ContainerCapabilitiesArgs) ToContainerCapabilitiesPtrOutputWithContext(ctx context.Context) ContainerCapabilitiesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerCapabilitiesOutput).ToContainerCapabilitiesPtrOutputWithContext(ctx) +} + +// ContainerCapabilitiesPtrInput is an input type that accepts ContainerCapabilitiesArgs, ContainerCapabilitiesPtr and ContainerCapabilitiesPtrOutput values. +// You can construct a concrete instance of `ContainerCapabilitiesPtrInput` via: +// +// ContainerCapabilitiesArgs{...} +// +// or: +// +// nil +type ContainerCapabilitiesPtrInput interface { + pulumi.Input + + ToContainerCapabilitiesPtrOutput() ContainerCapabilitiesPtrOutput + ToContainerCapabilitiesPtrOutputWithContext(context.Context) ContainerCapabilitiesPtrOutput +} + +type containerCapabilitiesPtrType ContainerCapabilitiesArgs + +func ContainerCapabilitiesPtr(v *ContainerCapabilitiesArgs) ContainerCapabilitiesPtrInput { + return (*containerCapabilitiesPtrType)(v) +} + +func (*containerCapabilitiesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerCapabilities)(nil)).Elem() +} + +func (i *containerCapabilitiesPtrType) ToContainerCapabilitiesPtrOutput() ContainerCapabilitiesPtrOutput { + return i.ToContainerCapabilitiesPtrOutputWithContext(context.Background()) +} + +func (i *containerCapabilitiesPtrType) ToContainerCapabilitiesPtrOutputWithContext(ctx context.Context) ContainerCapabilitiesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerCapabilitiesPtrOutput) +} + +func (i *containerCapabilitiesPtrType) ToOutput(ctx context.Context) pulumix.Output[*ContainerCapabilities] { + return pulumix.Output[*ContainerCapabilities]{ + OutputState: i.ToContainerCapabilitiesPtrOutputWithContext(ctx).OutputState, + } +} + +type ContainerCapabilitiesOutput struct{ *pulumi.OutputState } + +func (ContainerCapabilitiesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerCapabilities)(nil)).Elem() +} + +func (o ContainerCapabilitiesOutput) ToContainerCapabilitiesOutput() ContainerCapabilitiesOutput { + return o +} + +func (o ContainerCapabilitiesOutput) ToContainerCapabilitiesOutputWithContext(ctx context.Context) ContainerCapabilitiesOutput { + return o +} + +func (o ContainerCapabilitiesOutput) ToContainerCapabilitiesPtrOutput() ContainerCapabilitiesPtrOutput { + return o.ToContainerCapabilitiesPtrOutputWithContext(context.Background()) +} + +func (o ContainerCapabilitiesOutput) ToContainerCapabilitiesPtrOutputWithContext(ctx context.Context) ContainerCapabilitiesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ContainerCapabilities) *ContainerCapabilities { + return &v + }).(ContainerCapabilitiesPtrOutput) +} + +func (o ContainerCapabilitiesOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerCapabilities] { + return pulumix.Output[ContainerCapabilities]{ + OutputState: o.OutputState, + } +} + +// List of linux capabilities to add. +func (o ContainerCapabilitiesOutput) Adds() pulumi.StringArrayOutput { + return o.ApplyT(func(v ContainerCapabilities) []string { return v.Adds }).(pulumi.StringArrayOutput) +} + +// List of linux capabilities to drop. +func (o ContainerCapabilitiesOutput) Drops() pulumi.StringArrayOutput { + return o.ApplyT(func(v ContainerCapabilities) []string { return v.Drops }).(pulumi.StringArrayOutput) +} + +type ContainerCapabilitiesPtrOutput struct{ *pulumi.OutputState } + +func (ContainerCapabilitiesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerCapabilities)(nil)).Elem() +} + +func (o ContainerCapabilitiesPtrOutput) ToContainerCapabilitiesPtrOutput() ContainerCapabilitiesPtrOutput { + return o +} + +func (o ContainerCapabilitiesPtrOutput) ToContainerCapabilitiesPtrOutputWithContext(ctx context.Context) ContainerCapabilitiesPtrOutput { + return o +} + +func (o ContainerCapabilitiesPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ContainerCapabilities] { + return pulumix.Output[*ContainerCapabilities]{ + OutputState: o.OutputState, + } +} + +func (o ContainerCapabilitiesPtrOutput) Elem() ContainerCapabilitiesOutput { + return o.ApplyT(func(v *ContainerCapabilities) ContainerCapabilities { + if v != nil { + return *v + } + var ret ContainerCapabilities + return ret + }).(ContainerCapabilitiesOutput) +} + +// List of linux capabilities to add. +func (o ContainerCapabilitiesPtrOutput) Adds() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ContainerCapabilities) []string { + if v == nil { + return nil + } + return v.Adds + }).(pulumi.StringArrayOutput) +} + +// List of linux capabilities to drop. +func (o ContainerCapabilitiesPtrOutput) Drops() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ContainerCapabilities) []string { + if v == nil { + return nil + } + return v.Drops + }).(pulumi.StringArrayOutput) +} + +type ContainerDevice struct { + // The path in the container where the device will be bound. + ContainerPath *string `pulumi:"containerPath"` + // The path on the host where the device is located. + HostPath string `pulumi:"hostPath"` + // The cgroup permissions given to the container to access the device. Defaults to `rwm`. + Permissions *string `pulumi:"permissions"` +} + +// ContainerDeviceInput is an input type that accepts ContainerDeviceArgs and ContainerDeviceOutput values. +// You can construct a concrete instance of `ContainerDeviceInput` via: +// +// ContainerDeviceArgs{...} +type ContainerDeviceInput interface { + pulumi.Input + + ToContainerDeviceOutput() ContainerDeviceOutput + ToContainerDeviceOutputWithContext(context.Context) ContainerDeviceOutput +} + +type ContainerDeviceArgs struct { + // The path in the container where the device will be bound. + ContainerPath pulumi.StringPtrInput `pulumi:"containerPath"` + // The path on the host where the device is located. + HostPath pulumi.StringInput `pulumi:"hostPath"` + // The cgroup permissions given to the container to access the device. Defaults to `rwm`. + Permissions pulumi.StringPtrInput `pulumi:"permissions"` +} + +func (ContainerDeviceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerDevice)(nil)).Elem() +} + +func (i ContainerDeviceArgs) ToContainerDeviceOutput() ContainerDeviceOutput { + return i.ToContainerDeviceOutputWithContext(context.Background()) +} + +func (i ContainerDeviceArgs) ToContainerDeviceOutputWithContext(ctx context.Context) ContainerDeviceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerDeviceOutput) +} + +func (i ContainerDeviceArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerDevice] { + return pulumix.Output[ContainerDevice]{ + OutputState: i.ToContainerDeviceOutputWithContext(ctx).OutputState, + } +} + +// ContainerDeviceArrayInput is an input type that accepts ContainerDeviceArray and ContainerDeviceArrayOutput values. +// You can construct a concrete instance of `ContainerDeviceArrayInput` via: +// +// ContainerDeviceArray{ ContainerDeviceArgs{...} } +type ContainerDeviceArrayInput interface { + pulumi.Input + + ToContainerDeviceArrayOutput() ContainerDeviceArrayOutput + ToContainerDeviceArrayOutputWithContext(context.Context) ContainerDeviceArrayOutput +} + +type ContainerDeviceArray []ContainerDeviceInput + +func (ContainerDeviceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerDevice)(nil)).Elem() +} + +func (i ContainerDeviceArray) ToContainerDeviceArrayOutput() ContainerDeviceArrayOutput { + return i.ToContainerDeviceArrayOutputWithContext(context.Background()) +} + +func (i ContainerDeviceArray) ToContainerDeviceArrayOutputWithContext(ctx context.Context) ContainerDeviceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerDeviceArrayOutput) +} + +func (i ContainerDeviceArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerDevice] { + return pulumix.Output[[]ContainerDevice]{ + OutputState: i.ToContainerDeviceArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerDeviceOutput struct{ *pulumi.OutputState } + +func (ContainerDeviceOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerDevice)(nil)).Elem() +} + +func (o ContainerDeviceOutput) ToContainerDeviceOutput() ContainerDeviceOutput { + return o +} + +func (o ContainerDeviceOutput) ToContainerDeviceOutputWithContext(ctx context.Context) ContainerDeviceOutput { + return o +} + +func (o ContainerDeviceOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerDevice] { + return pulumix.Output[ContainerDevice]{ + OutputState: o.OutputState, + } +} + +// The path in the container where the device will be bound. +func (o ContainerDeviceOutput) ContainerPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerDevice) *string { return v.ContainerPath }).(pulumi.StringPtrOutput) +} + +// The path on the host where the device is located. +func (o ContainerDeviceOutput) HostPath() pulumi.StringOutput { + return o.ApplyT(func(v ContainerDevice) string { return v.HostPath }).(pulumi.StringOutput) +} + +// The cgroup permissions given to the container to access the device. Defaults to `rwm`. +func (o ContainerDeviceOutput) Permissions() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerDevice) *string { return v.Permissions }).(pulumi.StringPtrOutput) +} + +type ContainerDeviceArrayOutput struct{ *pulumi.OutputState } + +func (ContainerDeviceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerDevice)(nil)).Elem() +} + +func (o ContainerDeviceArrayOutput) ToContainerDeviceArrayOutput() ContainerDeviceArrayOutput { + return o +} + +func (o ContainerDeviceArrayOutput) ToContainerDeviceArrayOutputWithContext(ctx context.Context) ContainerDeviceArrayOutput { + return o +} + +func (o ContainerDeviceArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerDevice] { + return pulumix.Output[[]ContainerDevice]{ + OutputState: o.OutputState, + } +} + +func (o ContainerDeviceArrayOutput) Index(i pulumi.IntInput) ContainerDeviceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerDevice { + return vs[0].([]ContainerDevice)[vs[1].(int)] + }).(ContainerDeviceOutput) +} + +type ContainerHealthcheck struct { + // Time between running the check (ms|s|m|h). Defaults to `0s`. + Interval *string `pulumi:"interval"` + // Consecutive failures needed to report unhealthy. Defaults to `0`. + Retries *int `pulumi:"retries"` + // Start period for the container to initialize before counting retries towards unstable (ms|s|m|h). Defaults to `0s`. + StartPeriod *string `pulumi:"startPeriod"` + // Command to run to check health. For example, to run `curl -f localhost/health` set the command to be `["CMD", "curl", "-f", "localhost/health"]`. + Tests []string `pulumi:"tests"` + // Maximum time to allow one check to run (ms|s|m|h). Defaults to `0s`. + Timeout *string `pulumi:"timeout"` +} + +// ContainerHealthcheckInput is an input type that accepts ContainerHealthcheckArgs and ContainerHealthcheckOutput values. +// You can construct a concrete instance of `ContainerHealthcheckInput` via: +// +// ContainerHealthcheckArgs{...} +type ContainerHealthcheckInput interface { + pulumi.Input + + ToContainerHealthcheckOutput() ContainerHealthcheckOutput + ToContainerHealthcheckOutputWithContext(context.Context) ContainerHealthcheckOutput +} + +type ContainerHealthcheckArgs struct { + // Time between running the check (ms|s|m|h). Defaults to `0s`. + Interval pulumi.StringPtrInput `pulumi:"interval"` + // Consecutive failures needed to report unhealthy. Defaults to `0`. + Retries pulumi.IntPtrInput `pulumi:"retries"` + // Start period for the container to initialize before counting retries towards unstable (ms|s|m|h). Defaults to `0s`. + StartPeriod pulumi.StringPtrInput `pulumi:"startPeriod"` + // Command to run to check health. For example, to run `curl -f localhost/health` set the command to be `["CMD", "curl", "-f", "localhost/health"]`. + Tests pulumi.StringArrayInput `pulumi:"tests"` + // Maximum time to allow one check to run (ms|s|m|h). Defaults to `0s`. + Timeout pulumi.StringPtrInput `pulumi:"timeout"` +} + +func (ContainerHealthcheckArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerHealthcheck)(nil)).Elem() +} + +func (i ContainerHealthcheckArgs) ToContainerHealthcheckOutput() ContainerHealthcheckOutput { + return i.ToContainerHealthcheckOutputWithContext(context.Background()) +} + +func (i ContainerHealthcheckArgs) ToContainerHealthcheckOutputWithContext(ctx context.Context) ContainerHealthcheckOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerHealthcheckOutput) +} + +func (i ContainerHealthcheckArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerHealthcheck] { + return pulumix.Output[ContainerHealthcheck]{ + OutputState: i.ToContainerHealthcheckOutputWithContext(ctx).OutputState, + } +} + +func (i ContainerHealthcheckArgs) ToContainerHealthcheckPtrOutput() ContainerHealthcheckPtrOutput { + return i.ToContainerHealthcheckPtrOutputWithContext(context.Background()) +} + +func (i ContainerHealthcheckArgs) ToContainerHealthcheckPtrOutputWithContext(ctx context.Context) ContainerHealthcheckPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerHealthcheckOutput).ToContainerHealthcheckPtrOutputWithContext(ctx) +} + +// ContainerHealthcheckPtrInput is an input type that accepts ContainerHealthcheckArgs, ContainerHealthcheckPtr and ContainerHealthcheckPtrOutput values. +// You can construct a concrete instance of `ContainerHealthcheckPtrInput` via: +// +// ContainerHealthcheckArgs{...} +// +// or: +// +// nil +type ContainerHealthcheckPtrInput interface { + pulumi.Input + + ToContainerHealthcheckPtrOutput() ContainerHealthcheckPtrOutput + ToContainerHealthcheckPtrOutputWithContext(context.Context) ContainerHealthcheckPtrOutput +} + +type containerHealthcheckPtrType ContainerHealthcheckArgs + +func ContainerHealthcheckPtr(v *ContainerHealthcheckArgs) ContainerHealthcheckPtrInput { + return (*containerHealthcheckPtrType)(v) +} + +func (*containerHealthcheckPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerHealthcheck)(nil)).Elem() +} + +func (i *containerHealthcheckPtrType) ToContainerHealthcheckPtrOutput() ContainerHealthcheckPtrOutput { + return i.ToContainerHealthcheckPtrOutputWithContext(context.Background()) +} + +func (i *containerHealthcheckPtrType) ToContainerHealthcheckPtrOutputWithContext(ctx context.Context) ContainerHealthcheckPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerHealthcheckPtrOutput) +} + +func (i *containerHealthcheckPtrType) ToOutput(ctx context.Context) pulumix.Output[*ContainerHealthcheck] { + return pulumix.Output[*ContainerHealthcheck]{ + OutputState: i.ToContainerHealthcheckPtrOutputWithContext(ctx).OutputState, + } +} + +type ContainerHealthcheckOutput struct{ *pulumi.OutputState } + +func (ContainerHealthcheckOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerHealthcheck)(nil)).Elem() +} + +func (o ContainerHealthcheckOutput) ToContainerHealthcheckOutput() ContainerHealthcheckOutput { + return o +} + +func (o ContainerHealthcheckOutput) ToContainerHealthcheckOutputWithContext(ctx context.Context) ContainerHealthcheckOutput { + return o +} + +func (o ContainerHealthcheckOutput) ToContainerHealthcheckPtrOutput() ContainerHealthcheckPtrOutput { + return o.ToContainerHealthcheckPtrOutputWithContext(context.Background()) +} + +func (o ContainerHealthcheckOutput) ToContainerHealthcheckPtrOutputWithContext(ctx context.Context) ContainerHealthcheckPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ContainerHealthcheck) *ContainerHealthcheck { + return &v + }).(ContainerHealthcheckPtrOutput) +} + +func (o ContainerHealthcheckOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerHealthcheck] { + return pulumix.Output[ContainerHealthcheck]{ + OutputState: o.OutputState, + } +} + +// Time between running the check (ms|s|m|h). Defaults to `0s`. +func (o ContainerHealthcheckOutput) Interval() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerHealthcheck) *string { return v.Interval }).(pulumi.StringPtrOutput) +} + +// Consecutive failures needed to report unhealthy. Defaults to `0`. +func (o ContainerHealthcheckOutput) Retries() pulumi.IntPtrOutput { + return o.ApplyT(func(v ContainerHealthcheck) *int { return v.Retries }).(pulumi.IntPtrOutput) +} + +// Start period for the container to initialize before counting retries towards unstable (ms|s|m|h). Defaults to `0s`. +func (o ContainerHealthcheckOutput) StartPeriod() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerHealthcheck) *string { return v.StartPeriod }).(pulumi.StringPtrOutput) +} + +// Command to run to check health. For example, to run `curl -f localhost/health` set the command to be `["CMD", "curl", "-f", "localhost/health"]`. +func (o ContainerHealthcheckOutput) Tests() pulumi.StringArrayOutput { + return o.ApplyT(func(v ContainerHealthcheck) []string { return v.Tests }).(pulumi.StringArrayOutput) +} + +// Maximum time to allow one check to run (ms|s|m|h). Defaults to `0s`. +func (o ContainerHealthcheckOutput) Timeout() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerHealthcheck) *string { return v.Timeout }).(pulumi.StringPtrOutput) +} + +type ContainerHealthcheckPtrOutput struct{ *pulumi.OutputState } + +func (ContainerHealthcheckPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerHealthcheck)(nil)).Elem() +} + +func (o ContainerHealthcheckPtrOutput) ToContainerHealthcheckPtrOutput() ContainerHealthcheckPtrOutput { + return o +} + +func (o ContainerHealthcheckPtrOutput) ToContainerHealthcheckPtrOutputWithContext(ctx context.Context) ContainerHealthcheckPtrOutput { + return o +} + +func (o ContainerHealthcheckPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ContainerHealthcheck] { + return pulumix.Output[*ContainerHealthcheck]{ + OutputState: o.OutputState, + } +} + +func (o ContainerHealthcheckPtrOutput) Elem() ContainerHealthcheckOutput { + return o.ApplyT(func(v *ContainerHealthcheck) ContainerHealthcheck { + if v != nil { + return *v + } + var ret ContainerHealthcheck + return ret + }).(ContainerHealthcheckOutput) +} + +// Time between running the check (ms|s|m|h). Defaults to `0s`. +func (o ContainerHealthcheckPtrOutput) Interval() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ContainerHealthcheck) *string { + if v == nil { + return nil + } + return v.Interval + }).(pulumi.StringPtrOutput) +} + +// Consecutive failures needed to report unhealthy. Defaults to `0`. +func (o ContainerHealthcheckPtrOutput) Retries() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ContainerHealthcheck) *int { + if v == nil { + return nil + } + return v.Retries + }).(pulumi.IntPtrOutput) +} + +// Start period for the container to initialize before counting retries towards unstable (ms|s|m|h). Defaults to `0s`. +func (o ContainerHealthcheckPtrOutput) StartPeriod() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ContainerHealthcheck) *string { + if v == nil { + return nil + } + return v.StartPeriod + }).(pulumi.StringPtrOutput) +} + +// Command to run to check health. For example, to run `curl -f localhost/health` set the command to be `["CMD", "curl", "-f", "localhost/health"]`. +func (o ContainerHealthcheckPtrOutput) Tests() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ContainerHealthcheck) []string { + if v == nil { + return nil + } + return v.Tests + }).(pulumi.StringArrayOutput) +} + +// Maximum time to allow one check to run (ms|s|m|h). Defaults to `0s`. +func (o ContainerHealthcheckPtrOutput) Timeout() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ContainerHealthcheck) *string { + if v == nil { + return nil + } + return v.Timeout + }).(pulumi.StringPtrOutput) +} + +type ContainerHost struct { + // Hostname to add + Host string `pulumi:"host"` + // IP address this hostname should resolve to. + Ip string `pulumi:"ip"` +} + +// ContainerHostInput is an input type that accepts ContainerHostArgs and ContainerHostOutput values. +// You can construct a concrete instance of `ContainerHostInput` via: +// +// ContainerHostArgs{...} +type ContainerHostInput interface { + pulumi.Input + + ToContainerHostOutput() ContainerHostOutput + ToContainerHostOutputWithContext(context.Context) ContainerHostOutput +} + +type ContainerHostArgs struct { + // Hostname to add + Host pulumi.StringInput `pulumi:"host"` + // IP address this hostname should resolve to. + Ip pulumi.StringInput `pulumi:"ip"` +} + +func (ContainerHostArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerHost)(nil)).Elem() +} + +func (i ContainerHostArgs) ToContainerHostOutput() ContainerHostOutput { + return i.ToContainerHostOutputWithContext(context.Background()) +} + +func (i ContainerHostArgs) ToContainerHostOutputWithContext(ctx context.Context) ContainerHostOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerHostOutput) +} + +func (i ContainerHostArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerHost] { + return pulumix.Output[ContainerHost]{ + OutputState: i.ToContainerHostOutputWithContext(ctx).OutputState, + } +} + +// ContainerHostArrayInput is an input type that accepts ContainerHostArray and ContainerHostArrayOutput values. +// You can construct a concrete instance of `ContainerHostArrayInput` via: +// +// ContainerHostArray{ ContainerHostArgs{...} } +type ContainerHostArrayInput interface { + pulumi.Input + + ToContainerHostArrayOutput() ContainerHostArrayOutput + ToContainerHostArrayOutputWithContext(context.Context) ContainerHostArrayOutput +} + +type ContainerHostArray []ContainerHostInput + +func (ContainerHostArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerHost)(nil)).Elem() +} + +func (i ContainerHostArray) ToContainerHostArrayOutput() ContainerHostArrayOutput { + return i.ToContainerHostArrayOutputWithContext(context.Background()) +} + +func (i ContainerHostArray) ToContainerHostArrayOutputWithContext(ctx context.Context) ContainerHostArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerHostArrayOutput) +} + +func (i ContainerHostArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerHost] { + return pulumix.Output[[]ContainerHost]{ + OutputState: i.ToContainerHostArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerHostOutput struct{ *pulumi.OutputState } + +func (ContainerHostOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerHost)(nil)).Elem() +} + +func (o ContainerHostOutput) ToContainerHostOutput() ContainerHostOutput { + return o +} + +func (o ContainerHostOutput) ToContainerHostOutputWithContext(ctx context.Context) ContainerHostOutput { + return o +} + +func (o ContainerHostOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerHost] { + return pulumix.Output[ContainerHost]{ + OutputState: o.OutputState, + } +} + +// Hostname to add +func (o ContainerHostOutput) Host() pulumi.StringOutput { + return o.ApplyT(func(v ContainerHost) string { return v.Host }).(pulumi.StringOutput) +} + +// IP address this hostname should resolve to. +func (o ContainerHostOutput) Ip() pulumi.StringOutput { + return o.ApplyT(func(v ContainerHost) string { return v.Ip }).(pulumi.StringOutput) +} + +type ContainerHostArrayOutput struct{ *pulumi.OutputState } + +func (ContainerHostArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerHost)(nil)).Elem() +} + +func (o ContainerHostArrayOutput) ToContainerHostArrayOutput() ContainerHostArrayOutput { + return o +} + +func (o ContainerHostArrayOutput) ToContainerHostArrayOutputWithContext(ctx context.Context) ContainerHostArrayOutput { + return o +} + +func (o ContainerHostArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerHost] { + return pulumix.Output[[]ContainerHost]{ + OutputState: o.OutputState, + } +} + +func (o ContainerHostArrayOutput) Index(i pulumi.IntInput) ContainerHostOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerHost { + return vs[0].([]ContainerHost)[vs[1].(int)] + }).(ContainerHostOutput) +} + +type ContainerLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// ContainerLabelInput is an input type that accepts ContainerLabelArgs and ContainerLabelOutput values. +// You can construct a concrete instance of `ContainerLabelInput` via: +// +// ContainerLabelArgs{...} +type ContainerLabelInput interface { + pulumi.Input + + ToContainerLabelOutput() ContainerLabelOutput + ToContainerLabelOutputWithContext(context.Context) ContainerLabelOutput +} + +type ContainerLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (ContainerLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerLabel)(nil)).Elem() +} + +func (i ContainerLabelArgs) ToContainerLabelOutput() ContainerLabelOutput { + return i.ToContainerLabelOutputWithContext(context.Background()) +} + +func (i ContainerLabelArgs) ToContainerLabelOutputWithContext(ctx context.Context) ContainerLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerLabelOutput) +} + +func (i ContainerLabelArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerLabel] { + return pulumix.Output[ContainerLabel]{ + OutputState: i.ToContainerLabelOutputWithContext(ctx).OutputState, + } +} + +// ContainerLabelArrayInput is an input type that accepts ContainerLabelArray and ContainerLabelArrayOutput values. +// You can construct a concrete instance of `ContainerLabelArrayInput` via: +// +// ContainerLabelArray{ ContainerLabelArgs{...} } +type ContainerLabelArrayInput interface { + pulumi.Input + + ToContainerLabelArrayOutput() ContainerLabelArrayOutput + ToContainerLabelArrayOutputWithContext(context.Context) ContainerLabelArrayOutput +} + +type ContainerLabelArray []ContainerLabelInput + +func (ContainerLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerLabel)(nil)).Elem() +} + +func (i ContainerLabelArray) ToContainerLabelArrayOutput() ContainerLabelArrayOutput { + return i.ToContainerLabelArrayOutputWithContext(context.Background()) +} + +func (i ContainerLabelArray) ToContainerLabelArrayOutputWithContext(ctx context.Context) ContainerLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerLabelArrayOutput) +} + +func (i ContainerLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerLabel] { + return pulumix.Output[[]ContainerLabel]{ + OutputState: i.ToContainerLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerLabelOutput struct{ *pulumi.OutputState } + +func (ContainerLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerLabel)(nil)).Elem() +} + +func (o ContainerLabelOutput) ToContainerLabelOutput() ContainerLabelOutput { + return o +} + +func (o ContainerLabelOutput) ToContainerLabelOutputWithContext(ctx context.Context) ContainerLabelOutput { + return o +} + +func (o ContainerLabelOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerLabel] { + return pulumix.Output[ContainerLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o ContainerLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v ContainerLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o ContainerLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v ContainerLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type ContainerLabelArrayOutput struct{ *pulumi.OutputState } + +func (ContainerLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerLabel)(nil)).Elem() +} + +func (o ContainerLabelArrayOutput) ToContainerLabelArrayOutput() ContainerLabelArrayOutput { + return o +} + +func (o ContainerLabelArrayOutput) ToContainerLabelArrayOutputWithContext(ctx context.Context) ContainerLabelArrayOutput { + return o +} + +func (o ContainerLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerLabel] { + return pulumix.Output[[]ContainerLabel]{ + OutputState: o.OutputState, + } +} + +func (o ContainerLabelArrayOutput) Index(i pulumi.IntInput) ContainerLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerLabel { + return vs[0].([]ContainerLabel)[vs[1].(int)] + }).(ContainerLabelOutput) +} + +type ContainerMount struct { + // Optional configuration for the bind type. + BindOptions *ContainerMountBindOptions `pulumi:"bindOptions"` + // Whether the mount should be read-only. + ReadOnly *bool `pulumi:"readOnly"` + // Mount source (e.g. a volume name, a host path). + Source *string `pulumi:"source"` + // Container path + Target string `pulumi:"target"` + // Optional configuration for the tmpfs type. + TmpfsOptions *ContainerMountTmpfsOptions `pulumi:"tmpfsOptions"` + // The mount type + Type string `pulumi:"type"` + // Optional configuration for the volume type. + VolumeOptions *ContainerMountVolumeOptions `pulumi:"volumeOptions"` +} + +// ContainerMountInput is an input type that accepts ContainerMountArgs and ContainerMountOutput values. +// You can construct a concrete instance of `ContainerMountInput` via: +// +// ContainerMountArgs{...} +type ContainerMountInput interface { + pulumi.Input + + ToContainerMountOutput() ContainerMountOutput + ToContainerMountOutputWithContext(context.Context) ContainerMountOutput +} + +type ContainerMountArgs struct { + // Optional configuration for the bind type. + BindOptions ContainerMountBindOptionsPtrInput `pulumi:"bindOptions"` + // Whether the mount should be read-only. + ReadOnly pulumi.BoolPtrInput `pulumi:"readOnly"` + // Mount source (e.g. a volume name, a host path). + Source pulumi.StringPtrInput `pulumi:"source"` + // Container path + Target pulumi.StringInput `pulumi:"target"` + // Optional configuration for the tmpfs type. + TmpfsOptions ContainerMountTmpfsOptionsPtrInput `pulumi:"tmpfsOptions"` + // The mount type + Type pulumi.StringInput `pulumi:"type"` + // Optional configuration for the volume type. + VolumeOptions ContainerMountVolumeOptionsPtrInput `pulumi:"volumeOptions"` +} + +func (ContainerMountArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMount)(nil)).Elem() +} + +func (i ContainerMountArgs) ToContainerMountOutput() ContainerMountOutput { + return i.ToContainerMountOutputWithContext(context.Background()) +} + +func (i ContainerMountArgs) ToContainerMountOutputWithContext(ctx context.Context) ContainerMountOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountOutput) +} + +func (i ContainerMountArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerMount] { + return pulumix.Output[ContainerMount]{ + OutputState: i.ToContainerMountOutputWithContext(ctx).OutputState, + } +} + +// ContainerMountArrayInput is an input type that accepts ContainerMountArray and ContainerMountArrayOutput values. +// You can construct a concrete instance of `ContainerMountArrayInput` via: +// +// ContainerMountArray{ ContainerMountArgs{...} } +type ContainerMountArrayInput interface { + pulumi.Input + + ToContainerMountArrayOutput() ContainerMountArrayOutput + ToContainerMountArrayOutputWithContext(context.Context) ContainerMountArrayOutput +} + +type ContainerMountArray []ContainerMountInput + +func (ContainerMountArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerMount)(nil)).Elem() +} + +func (i ContainerMountArray) ToContainerMountArrayOutput() ContainerMountArrayOutput { + return i.ToContainerMountArrayOutputWithContext(context.Background()) +} + +func (i ContainerMountArray) ToContainerMountArrayOutputWithContext(ctx context.Context) ContainerMountArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountArrayOutput) +} + +func (i ContainerMountArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerMount] { + return pulumix.Output[[]ContainerMount]{ + OutputState: i.ToContainerMountArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerMountOutput struct{ *pulumi.OutputState } + +func (ContainerMountOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMount)(nil)).Elem() +} + +func (o ContainerMountOutput) ToContainerMountOutput() ContainerMountOutput { + return o +} + +func (o ContainerMountOutput) ToContainerMountOutputWithContext(ctx context.Context) ContainerMountOutput { + return o +} + +func (o ContainerMountOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerMount] { + return pulumix.Output[ContainerMount]{ + OutputState: o.OutputState, + } +} + +// Optional configuration for the bind type. +func (o ContainerMountOutput) BindOptions() ContainerMountBindOptionsPtrOutput { + return o.ApplyT(func(v ContainerMount) *ContainerMountBindOptions { return v.BindOptions }).(ContainerMountBindOptionsPtrOutput) +} + +// Whether the mount should be read-only. +func (o ContainerMountOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ContainerMount) *bool { return v.ReadOnly }).(pulumi.BoolPtrOutput) +} + +// Mount source (e.g. a volume name, a host path). +func (o ContainerMountOutput) Source() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerMount) *string { return v.Source }).(pulumi.StringPtrOutput) +} + +// Container path +func (o ContainerMountOutput) Target() pulumi.StringOutput { + return o.ApplyT(func(v ContainerMount) string { return v.Target }).(pulumi.StringOutput) +} + +// Optional configuration for the tmpfs type. +func (o ContainerMountOutput) TmpfsOptions() ContainerMountTmpfsOptionsPtrOutput { + return o.ApplyT(func(v ContainerMount) *ContainerMountTmpfsOptions { return v.TmpfsOptions }).(ContainerMountTmpfsOptionsPtrOutput) +} + +// The mount type +func (o ContainerMountOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ContainerMount) string { return v.Type }).(pulumi.StringOutput) +} + +// Optional configuration for the volume type. +func (o ContainerMountOutput) VolumeOptions() ContainerMountVolumeOptionsPtrOutput { + return o.ApplyT(func(v ContainerMount) *ContainerMountVolumeOptions { return v.VolumeOptions }).(ContainerMountVolumeOptionsPtrOutput) +} + +type ContainerMountArrayOutput struct{ *pulumi.OutputState } + +func (ContainerMountArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerMount)(nil)).Elem() +} + +func (o ContainerMountArrayOutput) ToContainerMountArrayOutput() ContainerMountArrayOutput { + return o +} + +func (o ContainerMountArrayOutput) ToContainerMountArrayOutputWithContext(ctx context.Context) ContainerMountArrayOutput { + return o +} + +func (o ContainerMountArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerMount] { + return pulumix.Output[[]ContainerMount]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountArrayOutput) Index(i pulumi.IntInput) ContainerMountOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerMount { + return vs[0].([]ContainerMount)[vs[1].(int)] + }).(ContainerMountOutput) +} + +type ContainerMountBindOptions struct { + Propagation *string `pulumi:"propagation"` +} + +// ContainerMountBindOptionsInput is an input type that accepts ContainerMountBindOptionsArgs and ContainerMountBindOptionsOutput values. +// You can construct a concrete instance of `ContainerMountBindOptionsInput` via: +// +// ContainerMountBindOptionsArgs{...} +type ContainerMountBindOptionsInput interface { + pulumi.Input + + ToContainerMountBindOptionsOutput() ContainerMountBindOptionsOutput + ToContainerMountBindOptionsOutputWithContext(context.Context) ContainerMountBindOptionsOutput +} + +type ContainerMountBindOptionsArgs struct { + Propagation pulumi.StringPtrInput `pulumi:"propagation"` +} + +func (ContainerMountBindOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountBindOptions)(nil)).Elem() +} + +func (i ContainerMountBindOptionsArgs) ToContainerMountBindOptionsOutput() ContainerMountBindOptionsOutput { + return i.ToContainerMountBindOptionsOutputWithContext(context.Background()) +} + +func (i ContainerMountBindOptionsArgs) ToContainerMountBindOptionsOutputWithContext(ctx context.Context) ContainerMountBindOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountBindOptionsOutput) +} + +func (i ContainerMountBindOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerMountBindOptions] { + return pulumix.Output[ContainerMountBindOptions]{ + OutputState: i.ToContainerMountBindOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i ContainerMountBindOptionsArgs) ToContainerMountBindOptionsPtrOutput() ContainerMountBindOptionsPtrOutput { + return i.ToContainerMountBindOptionsPtrOutputWithContext(context.Background()) +} + +func (i ContainerMountBindOptionsArgs) ToContainerMountBindOptionsPtrOutputWithContext(ctx context.Context) ContainerMountBindOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountBindOptionsOutput).ToContainerMountBindOptionsPtrOutputWithContext(ctx) +} + +// ContainerMountBindOptionsPtrInput is an input type that accepts ContainerMountBindOptionsArgs, ContainerMountBindOptionsPtr and ContainerMountBindOptionsPtrOutput values. +// You can construct a concrete instance of `ContainerMountBindOptionsPtrInput` via: +// +// ContainerMountBindOptionsArgs{...} +// +// or: +// +// nil +type ContainerMountBindOptionsPtrInput interface { + pulumi.Input + + ToContainerMountBindOptionsPtrOutput() ContainerMountBindOptionsPtrOutput + ToContainerMountBindOptionsPtrOutputWithContext(context.Context) ContainerMountBindOptionsPtrOutput +} + +type containerMountBindOptionsPtrType ContainerMountBindOptionsArgs + +func ContainerMountBindOptionsPtr(v *ContainerMountBindOptionsArgs) ContainerMountBindOptionsPtrInput { + return (*containerMountBindOptionsPtrType)(v) +} + +func (*containerMountBindOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerMountBindOptions)(nil)).Elem() +} + +func (i *containerMountBindOptionsPtrType) ToContainerMountBindOptionsPtrOutput() ContainerMountBindOptionsPtrOutput { + return i.ToContainerMountBindOptionsPtrOutputWithContext(context.Background()) +} + +func (i *containerMountBindOptionsPtrType) ToContainerMountBindOptionsPtrOutputWithContext(ctx context.Context) ContainerMountBindOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountBindOptionsPtrOutput) +} + +func (i *containerMountBindOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ContainerMountBindOptions] { + return pulumix.Output[*ContainerMountBindOptions]{ + OutputState: i.ToContainerMountBindOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +type ContainerMountBindOptionsOutput struct{ *pulumi.OutputState } + +func (ContainerMountBindOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountBindOptions)(nil)).Elem() +} + +func (o ContainerMountBindOptionsOutput) ToContainerMountBindOptionsOutput() ContainerMountBindOptionsOutput { + return o +} + +func (o ContainerMountBindOptionsOutput) ToContainerMountBindOptionsOutputWithContext(ctx context.Context) ContainerMountBindOptionsOutput { + return o +} + +func (o ContainerMountBindOptionsOutput) ToContainerMountBindOptionsPtrOutput() ContainerMountBindOptionsPtrOutput { + return o.ToContainerMountBindOptionsPtrOutputWithContext(context.Background()) +} + +func (o ContainerMountBindOptionsOutput) ToContainerMountBindOptionsPtrOutputWithContext(ctx context.Context) ContainerMountBindOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ContainerMountBindOptions) *ContainerMountBindOptions { + return &v + }).(ContainerMountBindOptionsPtrOutput) +} + +func (o ContainerMountBindOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerMountBindOptions] { + return pulumix.Output[ContainerMountBindOptions]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountBindOptionsOutput) Propagation() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerMountBindOptions) *string { return v.Propagation }).(pulumi.StringPtrOutput) +} + +type ContainerMountBindOptionsPtrOutput struct{ *pulumi.OutputState } + +func (ContainerMountBindOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerMountBindOptions)(nil)).Elem() +} + +func (o ContainerMountBindOptionsPtrOutput) ToContainerMountBindOptionsPtrOutput() ContainerMountBindOptionsPtrOutput { + return o +} + +func (o ContainerMountBindOptionsPtrOutput) ToContainerMountBindOptionsPtrOutputWithContext(ctx context.Context) ContainerMountBindOptionsPtrOutput { + return o +} + +func (o ContainerMountBindOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ContainerMountBindOptions] { + return pulumix.Output[*ContainerMountBindOptions]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountBindOptionsPtrOutput) Elem() ContainerMountBindOptionsOutput { + return o.ApplyT(func(v *ContainerMountBindOptions) ContainerMountBindOptions { + if v != nil { + return *v + } + var ret ContainerMountBindOptions + return ret + }).(ContainerMountBindOptionsOutput) +} + +func (o ContainerMountBindOptionsPtrOutput) Propagation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ContainerMountBindOptions) *string { + if v == nil { + return nil + } + return v.Propagation + }).(pulumi.StringPtrOutput) +} + +type ContainerMountTmpfsOptions struct { + Mode *int `pulumi:"mode"` + SizeBytes *int `pulumi:"sizeBytes"` +} + +// ContainerMountTmpfsOptionsInput is an input type that accepts ContainerMountTmpfsOptionsArgs and ContainerMountTmpfsOptionsOutput values. +// You can construct a concrete instance of `ContainerMountTmpfsOptionsInput` via: +// +// ContainerMountTmpfsOptionsArgs{...} +type ContainerMountTmpfsOptionsInput interface { + pulumi.Input + + ToContainerMountTmpfsOptionsOutput() ContainerMountTmpfsOptionsOutput + ToContainerMountTmpfsOptionsOutputWithContext(context.Context) ContainerMountTmpfsOptionsOutput +} + +type ContainerMountTmpfsOptionsArgs struct { + Mode pulumi.IntPtrInput `pulumi:"mode"` + SizeBytes pulumi.IntPtrInput `pulumi:"sizeBytes"` +} + +func (ContainerMountTmpfsOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountTmpfsOptions)(nil)).Elem() +} + +func (i ContainerMountTmpfsOptionsArgs) ToContainerMountTmpfsOptionsOutput() ContainerMountTmpfsOptionsOutput { + return i.ToContainerMountTmpfsOptionsOutputWithContext(context.Background()) +} + +func (i ContainerMountTmpfsOptionsArgs) ToContainerMountTmpfsOptionsOutputWithContext(ctx context.Context) ContainerMountTmpfsOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountTmpfsOptionsOutput) +} + +func (i ContainerMountTmpfsOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerMountTmpfsOptions] { + return pulumix.Output[ContainerMountTmpfsOptions]{ + OutputState: i.ToContainerMountTmpfsOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i ContainerMountTmpfsOptionsArgs) ToContainerMountTmpfsOptionsPtrOutput() ContainerMountTmpfsOptionsPtrOutput { + return i.ToContainerMountTmpfsOptionsPtrOutputWithContext(context.Background()) +} + +func (i ContainerMountTmpfsOptionsArgs) ToContainerMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ContainerMountTmpfsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountTmpfsOptionsOutput).ToContainerMountTmpfsOptionsPtrOutputWithContext(ctx) +} + +// ContainerMountTmpfsOptionsPtrInput is an input type that accepts ContainerMountTmpfsOptionsArgs, ContainerMountTmpfsOptionsPtr and ContainerMountTmpfsOptionsPtrOutput values. +// You can construct a concrete instance of `ContainerMountTmpfsOptionsPtrInput` via: +// +// ContainerMountTmpfsOptionsArgs{...} +// +// or: +// +// nil +type ContainerMountTmpfsOptionsPtrInput interface { + pulumi.Input + + ToContainerMountTmpfsOptionsPtrOutput() ContainerMountTmpfsOptionsPtrOutput + ToContainerMountTmpfsOptionsPtrOutputWithContext(context.Context) ContainerMountTmpfsOptionsPtrOutput +} + +type containerMountTmpfsOptionsPtrType ContainerMountTmpfsOptionsArgs + +func ContainerMountTmpfsOptionsPtr(v *ContainerMountTmpfsOptionsArgs) ContainerMountTmpfsOptionsPtrInput { + return (*containerMountTmpfsOptionsPtrType)(v) +} + +func (*containerMountTmpfsOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerMountTmpfsOptions)(nil)).Elem() +} + +func (i *containerMountTmpfsOptionsPtrType) ToContainerMountTmpfsOptionsPtrOutput() ContainerMountTmpfsOptionsPtrOutput { + return i.ToContainerMountTmpfsOptionsPtrOutputWithContext(context.Background()) +} + +func (i *containerMountTmpfsOptionsPtrType) ToContainerMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ContainerMountTmpfsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountTmpfsOptionsPtrOutput) +} + +func (i *containerMountTmpfsOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ContainerMountTmpfsOptions] { + return pulumix.Output[*ContainerMountTmpfsOptions]{ + OutputState: i.ToContainerMountTmpfsOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +type ContainerMountTmpfsOptionsOutput struct{ *pulumi.OutputState } + +func (ContainerMountTmpfsOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountTmpfsOptions)(nil)).Elem() +} + +func (o ContainerMountTmpfsOptionsOutput) ToContainerMountTmpfsOptionsOutput() ContainerMountTmpfsOptionsOutput { + return o +} + +func (o ContainerMountTmpfsOptionsOutput) ToContainerMountTmpfsOptionsOutputWithContext(ctx context.Context) ContainerMountTmpfsOptionsOutput { + return o +} + +func (o ContainerMountTmpfsOptionsOutput) ToContainerMountTmpfsOptionsPtrOutput() ContainerMountTmpfsOptionsPtrOutput { + return o.ToContainerMountTmpfsOptionsPtrOutputWithContext(context.Background()) +} + +func (o ContainerMountTmpfsOptionsOutput) ToContainerMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ContainerMountTmpfsOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ContainerMountTmpfsOptions) *ContainerMountTmpfsOptions { + return &v + }).(ContainerMountTmpfsOptionsPtrOutput) +} + +func (o ContainerMountTmpfsOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerMountTmpfsOptions] { + return pulumix.Output[ContainerMountTmpfsOptions]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountTmpfsOptionsOutput) Mode() pulumi.IntPtrOutput { + return o.ApplyT(func(v ContainerMountTmpfsOptions) *int { return v.Mode }).(pulumi.IntPtrOutput) +} + +func (o ContainerMountTmpfsOptionsOutput) SizeBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v ContainerMountTmpfsOptions) *int { return v.SizeBytes }).(pulumi.IntPtrOutput) +} + +type ContainerMountTmpfsOptionsPtrOutput struct{ *pulumi.OutputState } + +func (ContainerMountTmpfsOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerMountTmpfsOptions)(nil)).Elem() +} + +func (o ContainerMountTmpfsOptionsPtrOutput) ToContainerMountTmpfsOptionsPtrOutput() ContainerMountTmpfsOptionsPtrOutput { + return o +} + +func (o ContainerMountTmpfsOptionsPtrOutput) ToContainerMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ContainerMountTmpfsOptionsPtrOutput { + return o +} + +func (o ContainerMountTmpfsOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ContainerMountTmpfsOptions] { + return pulumix.Output[*ContainerMountTmpfsOptions]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountTmpfsOptionsPtrOutput) Elem() ContainerMountTmpfsOptionsOutput { + return o.ApplyT(func(v *ContainerMountTmpfsOptions) ContainerMountTmpfsOptions { + if v != nil { + return *v + } + var ret ContainerMountTmpfsOptions + return ret + }).(ContainerMountTmpfsOptionsOutput) +} + +func (o ContainerMountTmpfsOptionsPtrOutput) Mode() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ContainerMountTmpfsOptions) *int { + if v == nil { + return nil + } + return v.Mode + }).(pulumi.IntPtrOutput) +} + +func (o ContainerMountTmpfsOptionsPtrOutput) SizeBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ContainerMountTmpfsOptions) *int { + if v == nil { + return nil + } + return v.SizeBytes + }).(pulumi.IntPtrOutput) +} + +type ContainerMountVolumeOptions struct { + DriverName *string `pulumi:"driverName"` + DriverOptions map[string]string `pulumi:"driverOptions"` + // User-defined key/value metadata + Labels []ContainerMountVolumeOptionsLabel `pulumi:"labels"` + NoCopy *bool `pulumi:"noCopy"` +} + +// ContainerMountVolumeOptionsInput is an input type that accepts ContainerMountVolumeOptionsArgs and ContainerMountVolumeOptionsOutput values. +// You can construct a concrete instance of `ContainerMountVolumeOptionsInput` via: +// +// ContainerMountVolumeOptionsArgs{...} +type ContainerMountVolumeOptionsInput interface { + pulumi.Input + + ToContainerMountVolumeOptionsOutput() ContainerMountVolumeOptionsOutput + ToContainerMountVolumeOptionsOutputWithContext(context.Context) ContainerMountVolumeOptionsOutput +} + +type ContainerMountVolumeOptionsArgs struct { + DriverName pulumi.StringPtrInput `pulumi:"driverName"` + DriverOptions pulumi.StringMapInput `pulumi:"driverOptions"` + // User-defined key/value metadata + Labels ContainerMountVolumeOptionsLabelArrayInput `pulumi:"labels"` + NoCopy pulumi.BoolPtrInput `pulumi:"noCopy"` +} + +func (ContainerMountVolumeOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountVolumeOptions)(nil)).Elem() +} + +func (i ContainerMountVolumeOptionsArgs) ToContainerMountVolumeOptionsOutput() ContainerMountVolumeOptionsOutput { + return i.ToContainerMountVolumeOptionsOutputWithContext(context.Background()) +} + +func (i ContainerMountVolumeOptionsArgs) ToContainerMountVolumeOptionsOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountVolumeOptionsOutput) +} + +func (i ContainerMountVolumeOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerMountVolumeOptions] { + return pulumix.Output[ContainerMountVolumeOptions]{ + OutputState: i.ToContainerMountVolumeOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i ContainerMountVolumeOptionsArgs) ToContainerMountVolumeOptionsPtrOutput() ContainerMountVolumeOptionsPtrOutput { + return i.ToContainerMountVolumeOptionsPtrOutputWithContext(context.Background()) +} + +func (i ContainerMountVolumeOptionsArgs) ToContainerMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountVolumeOptionsOutput).ToContainerMountVolumeOptionsPtrOutputWithContext(ctx) +} + +// ContainerMountVolumeOptionsPtrInput is an input type that accepts ContainerMountVolumeOptionsArgs, ContainerMountVolumeOptionsPtr and ContainerMountVolumeOptionsPtrOutput values. +// You can construct a concrete instance of `ContainerMountVolumeOptionsPtrInput` via: +// +// ContainerMountVolumeOptionsArgs{...} +// +// or: +// +// nil +type ContainerMountVolumeOptionsPtrInput interface { + pulumi.Input + + ToContainerMountVolumeOptionsPtrOutput() ContainerMountVolumeOptionsPtrOutput + ToContainerMountVolumeOptionsPtrOutputWithContext(context.Context) ContainerMountVolumeOptionsPtrOutput +} + +type containerMountVolumeOptionsPtrType ContainerMountVolumeOptionsArgs + +func ContainerMountVolumeOptionsPtr(v *ContainerMountVolumeOptionsArgs) ContainerMountVolumeOptionsPtrInput { + return (*containerMountVolumeOptionsPtrType)(v) +} + +func (*containerMountVolumeOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerMountVolumeOptions)(nil)).Elem() +} + +func (i *containerMountVolumeOptionsPtrType) ToContainerMountVolumeOptionsPtrOutput() ContainerMountVolumeOptionsPtrOutput { + return i.ToContainerMountVolumeOptionsPtrOutputWithContext(context.Background()) +} + +func (i *containerMountVolumeOptionsPtrType) ToContainerMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountVolumeOptionsPtrOutput) +} + +func (i *containerMountVolumeOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ContainerMountVolumeOptions] { + return pulumix.Output[*ContainerMountVolumeOptions]{ + OutputState: i.ToContainerMountVolumeOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +type ContainerMountVolumeOptionsOutput struct{ *pulumi.OutputState } + +func (ContainerMountVolumeOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountVolumeOptions)(nil)).Elem() +} + +func (o ContainerMountVolumeOptionsOutput) ToContainerMountVolumeOptionsOutput() ContainerMountVolumeOptionsOutput { + return o +} + +func (o ContainerMountVolumeOptionsOutput) ToContainerMountVolumeOptionsOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsOutput { + return o +} + +func (o ContainerMountVolumeOptionsOutput) ToContainerMountVolumeOptionsPtrOutput() ContainerMountVolumeOptionsPtrOutput { + return o.ToContainerMountVolumeOptionsPtrOutputWithContext(context.Background()) +} + +func (o ContainerMountVolumeOptionsOutput) ToContainerMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ContainerMountVolumeOptions) *ContainerMountVolumeOptions { + return &v + }).(ContainerMountVolumeOptionsPtrOutput) +} + +func (o ContainerMountVolumeOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerMountVolumeOptions] { + return pulumix.Output[ContainerMountVolumeOptions]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountVolumeOptionsOutput) DriverName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerMountVolumeOptions) *string { return v.DriverName }).(pulumi.StringPtrOutput) +} + +func (o ContainerMountVolumeOptionsOutput) DriverOptions() pulumi.StringMapOutput { + return o.ApplyT(func(v ContainerMountVolumeOptions) map[string]string { return v.DriverOptions }).(pulumi.StringMapOutput) +} + +// User-defined key/value metadata +func (o ContainerMountVolumeOptionsOutput) Labels() ContainerMountVolumeOptionsLabelArrayOutput { + return o.ApplyT(func(v ContainerMountVolumeOptions) []ContainerMountVolumeOptionsLabel { return v.Labels }).(ContainerMountVolumeOptionsLabelArrayOutput) +} + +func (o ContainerMountVolumeOptionsOutput) NoCopy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ContainerMountVolumeOptions) *bool { return v.NoCopy }).(pulumi.BoolPtrOutput) +} + +type ContainerMountVolumeOptionsPtrOutput struct{ *pulumi.OutputState } + +func (ContainerMountVolumeOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ContainerMountVolumeOptions)(nil)).Elem() +} + +func (o ContainerMountVolumeOptionsPtrOutput) ToContainerMountVolumeOptionsPtrOutput() ContainerMountVolumeOptionsPtrOutput { + return o +} + +func (o ContainerMountVolumeOptionsPtrOutput) ToContainerMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsPtrOutput { + return o +} + +func (o ContainerMountVolumeOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ContainerMountVolumeOptions] { + return pulumix.Output[*ContainerMountVolumeOptions]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountVolumeOptionsPtrOutput) Elem() ContainerMountVolumeOptionsOutput { + return o.ApplyT(func(v *ContainerMountVolumeOptions) ContainerMountVolumeOptions { + if v != nil { + return *v + } + var ret ContainerMountVolumeOptions + return ret + }).(ContainerMountVolumeOptionsOutput) +} + +func (o ContainerMountVolumeOptionsPtrOutput) DriverName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ContainerMountVolumeOptions) *string { + if v == nil { + return nil + } + return v.DriverName + }).(pulumi.StringPtrOutput) +} + +func (o ContainerMountVolumeOptionsPtrOutput) DriverOptions() pulumi.StringMapOutput { + return o.ApplyT(func(v *ContainerMountVolumeOptions) map[string]string { + if v == nil { + return nil + } + return v.DriverOptions + }).(pulumi.StringMapOutput) +} + +// User-defined key/value metadata +func (o ContainerMountVolumeOptionsPtrOutput) Labels() ContainerMountVolumeOptionsLabelArrayOutput { + return o.ApplyT(func(v *ContainerMountVolumeOptions) []ContainerMountVolumeOptionsLabel { + if v == nil { + return nil + } + return v.Labels + }).(ContainerMountVolumeOptionsLabelArrayOutput) +} + +func (o ContainerMountVolumeOptionsPtrOutput) NoCopy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ContainerMountVolumeOptions) *bool { + if v == nil { + return nil + } + return v.NoCopy + }).(pulumi.BoolPtrOutput) +} + +type ContainerMountVolumeOptionsLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// ContainerMountVolumeOptionsLabelInput is an input type that accepts ContainerMountVolumeOptionsLabelArgs and ContainerMountVolumeOptionsLabelOutput values. +// You can construct a concrete instance of `ContainerMountVolumeOptionsLabelInput` via: +// +// ContainerMountVolumeOptionsLabelArgs{...} +type ContainerMountVolumeOptionsLabelInput interface { + pulumi.Input + + ToContainerMountVolumeOptionsLabelOutput() ContainerMountVolumeOptionsLabelOutput + ToContainerMountVolumeOptionsLabelOutputWithContext(context.Context) ContainerMountVolumeOptionsLabelOutput +} + +type ContainerMountVolumeOptionsLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (ContainerMountVolumeOptionsLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountVolumeOptionsLabel)(nil)).Elem() +} + +func (i ContainerMountVolumeOptionsLabelArgs) ToContainerMountVolumeOptionsLabelOutput() ContainerMountVolumeOptionsLabelOutput { + return i.ToContainerMountVolumeOptionsLabelOutputWithContext(context.Background()) +} + +func (i ContainerMountVolumeOptionsLabelArgs) ToContainerMountVolumeOptionsLabelOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountVolumeOptionsLabelOutput) +} + +func (i ContainerMountVolumeOptionsLabelArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerMountVolumeOptionsLabel] { + return pulumix.Output[ContainerMountVolumeOptionsLabel]{ + OutputState: i.ToContainerMountVolumeOptionsLabelOutputWithContext(ctx).OutputState, + } +} + +// ContainerMountVolumeOptionsLabelArrayInput is an input type that accepts ContainerMountVolumeOptionsLabelArray and ContainerMountVolumeOptionsLabelArrayOutput values. +// You can construct a concrete instance of `ContainerMountVolumeOptionsLabelArrayInput` via: +// +// ContainerMountVolumeOptionsLabelArray{ ContainerMountVolumeOptionsLabelArgs{...} } +type ContainerMountVolumeOptionsLabelArrayInput interface { + pulumi.Input + + ToContainerMountVolumeOptionsLabelArrayOutput() ContainerMountVolumeOptionsLabelArrayOutput + ToContainerMountVolumeOptionsLabelArrayOutputWithContext(context.Context) ContainerMountVolumeOptionsLabelArrayOutput +} + +type ContainerMountVolumeOptionsLabelArray []ContainerMountVolumeOptionsLabelInput + +func (ContainerMountVolumeOptionsLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerMountVolumeOptionsLabel)(nil)).Elem() +} + +func (i ContainerMountVolumeOptionsLabelArray) ToContainerMountVolumeOptionsLabelArrayOutput() ContainerMountVolumeOptionsLabelArrayOutput { + return i.ToContainerMountVolumeOptionsLabelArrayOutputWithContext(context.Background()) +} + +func (i ContainerMountVolumeOptionsLabelArray) ToContainerMountVolumeOptionsLabelArrayOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerMountVolumeOptionsLabelArrayOutput) +} + +func (i ContainerMountVolumeOptionsLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerMountVolumeOptionsLabel] { + return pulumix.Output[[]ContainerMountVolumeOptionsLabel]{ + OutputState: i.ToContainerMountVolumeOptionsLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerMountVolumeOptionsLabelOutput struct{ *pulumi.OutputState } + +func (ContainerMountVolumeOptionsLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerMountVolumeOptionsLabel)(nil)).Elem() +} + +func (o ContainerMountVolumeOptionsLabelOutput) ToContainerMountVolumeOptionsLabelOutput() ContainerMountVolumeOptionsLabelOutput { + return o +} + +func (o ContainerMountVolumeOptionsLabelOutput) ToContainerMountVolumeOptionsLabelOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsLabelOutput { + return o +} + +func (o ContainerMountVolumeOptionsLabelOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerMountVolumeOptionsLabel] { + return pulumix.Output[ContainerMountVolumeOptionsLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o ContainerMountVolumeOptionsLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v ContainerMountVolumeOptionsLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o ContainerMountVolumeOptionsLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v ContainerMountVolumeOptionsLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type ContainerMountVolumeOptionsLabelArrayOutput struct{ *pulumi.OutputState } + +func (ContainerMountVolumeOptionsLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerMountVolumeOptionsLabel)(nil)).Elem() +} + +func (o ContainerMountVolumeOptionsLabelArrayOutput) ToContainerMountVolumeOptionsLabelArrayOutput() ContainerMountVolumeOptionsLabelArrayOutput { + return o +} + +func (o ContainerMountVolumeOptionsLabelArrayOutput) ToContainerMountVolumeOptionsLabelArrayOutputWithContext(ctx context.Context) ContainerMountVolumeOptionsLabelArrayOutput { + return o +} + +func (o ContainerMountVolumeOptionsLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerMountVolumeOptionsLabel] { + return pulumix.Output[[]ContainerMountVolumeOptionsLabel]{ + OutputState: o.OutputState, + } +} + +func (o ContainerMountVolumeOptionsLabelArrayOutput) Index(i pulumi.IntInput) ContainerMountVolumeOptionsLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerMountVolumeOptionsLabel { + return vs[0].([]ContainerMountVolumeOptionsLabel)[vs[1].(int)] + }).(ContainerMountVolumeOptionsLabelOutput) +} + +type ContainerNetworkData struct { + Gateway *string `pulumi:"gateway"` + GlobalIpv6Address *string `pulumi:"globalIpv6Address"` + GlobalIpv6PrefixLength *int `pulumi:"globalIpv6PrefixLength"` + IpAddress *string `pulumi:"ipAddress"` + IpPrefixLength *int `pulumi:"ipPrefixLength"` + Ipv6Gateway *string `pulumi:"ipv6Gateway"` + MacAddress *string `pulumi:"macAddress"` + NetworkName *string `pulumi:"networkName"` +} + +// ContainerNetworkDataInput is an input type that accepts ContainerNetworkDataArgs and ContainerNetworkDataOutput values. +// You can construct a concrete instance of `ContainerNetworkDataInput` via: +// +// ContainerNetworkDataArgs{...} +type ContainerNetworkDataInput interface { + pulumi.Input + + ToContainerNetworkDataOutput() ContainerNetworkDataOutput + ToContainerNetworkDataOutputWithContext(context.Context) ContainerNetworkDataOutput +} + +type ContainerNetworkDataArgs struct { + Gateway pulumi.StringPtrInput `pulumi:"gateway"` + GlobalIpv6Address pulumi.StringPtrInput `pulumi:"globalIpv6Address"` + GlobalIpv6PrefixLength pulumi.IntPtrInput `pulumi:"globalIpv6PrefixLength"` + IpAddress pulumi.StringPtrInput `pulumi:"ipAddress"` + IpPrefixLength pulumi.IntPtrInput `pulumi:"ipPrefixLength"` + Ipv6Gateway pulumi.StringPtrInput `pulumi:"ipv6Gateway"` + MacAddress pulumi.StringPtrInput `pulumi:"macAddress"` + NetworkName pulumi.StringPtrInput `pulumi:"networkName"` +} + +func (ContainerNetworkDataArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerNetworkData)(nil)).Elem() +} + +func (i ContainerNetworkDataArgs) ToContainerNetworkDataOutput() ContainerNetworkDataOutput { + return i.ToContainerNetworkDataOutputWithContext(context.Background()) +} + +func (i ContainerNetworkDataArgs) ToContainerNetworkDataOutputWithContext(ctx context.Context) ContainerNetworkDataOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerNetworkDataOutput) +} + +func (i ContainerNetworkDataArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerNetworkData] { + return pulumix.Output[ContainerNetworkData]{ + OutputState: i.ToContainerNetworkDataOutputWithContext(ctx).OutputState, + } +} + +// ContainerNetworkDataArrayInput is an input type that accepts ContainerNetworkDataArray and ContainerNetworkDataArrayOutput values. +// You can construct a concrete instance of `ContainerNetworkDataArrayInput` via: +// +// ContainerNetworkDataArray{ ContainerNetworkDataArgs{...} } +type ContainerNetworkDataArrayInput interface { + pulumi.Input + + ToContainerNetworkDataArrayOutput() ContainerNetworkDataArrayOutput + ToContainerNetworkDataArrayOutputWithContext(context.Context) ContainerNetworkDataArrayOutput +} + +type ContainerNetworkDataArray []ContainerNetworkDataInput + +func (ContainerNetworkDataArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerNetworkData)(nil)).Elem() +} + +func (i ContainerNetworkDataArray) ToContainerNetworkDataArrayOutput() ContainerNetworkDataArrayOutput { + return i.ToContainerNetworkDataArrayOutputWithContext(context.Background()) +} + +func (i ContainerNetworkDataArray) ToContainerNetworkDataArrayOutputWithContext(ctx context.Context) ContainerNetworkDataArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerNetworkDataArrayOutput) +} + +func (i ContainerNetworkDataArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerNetworkData] { + return pulumix.Output[[]ContainerNetworkData]{ + OutputState: i.ToContainerNetworkDataArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerNetworkDataOutput struct{ *pulumi.OutputState } + +func (ContainerNetworkDataOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerNetworkData)(nil)).Elem() +} + +func (o ContainerNetworkDataOutput) ToContainerNetworkDataOutput() ContainerNetworkDataOutput { + return o +} + +func (o ContainerNetworkDataOutput) ToContainerNetworkDataOutputWithContext(ctx context.Context) ContainerNetworkDataOutput { + return o +} + +func (o ContainerNetworkDataOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerNetworkData] { + return pulumix.Output[ContainerNetworkData]{ + OutputState: o.OutputState, + } +} + +func (o ContainerNetworkDataOutput) Gateway() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *string { return v.Gateway }).(pulumi.StringPtrOutput) +} + +func (o ContainerNetworkDataOutput) GlobalIpv6Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *string { return v.GlobalIpv6Address }).(pulumi.StringPtrOutput) +} + +func (o ContainerNetworkDataOutput) GlobalIpv6PrefixLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *int { return v.GlobalIpv6PrefixLength }).(pulumi.IntPtrOutput) +} + +func (o ContainerNetworkDataOutput) IpAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *string { return v.IpAddress }).(pulumi.StringPtrOutput) +} + +func (o ContainerNetworkDataOutput) IpPrefixLength() pulumi.IntPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *int { return v.IpPrefixLength }).(pulumi.IntPtrOutput) +} + +func (o ContainerNetworkDataOutput) Ipv6Gateway() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *string { return v.Ipv6Gateway }).(pulumi.StringPtrOutput) +} + +func (o ContainerNetworkDataOutput) MacAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *string { return v.MacAddress }).(pulumi.StringPtrOutput) +} + +func (o ContainerNetworkDataOutput) NetworkName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworkData) *string { return v.NetworkName }).(pulumi.StringPtrOutput) +} + +type ContainerNetworkDataArrayOutput struct{ *pulumi.OutputState } + +func (ContainerNetworkDataArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerNetworkData)(nil)).Elem() +} + +func (o ContainerNetworkDataArrayOutput) ToContainerNetworkDataArrayOutput() ContainerNetworkDataArrayOutput { + return o +} + +func (o ContainerNetworkDataArrayOutput) ToContainerNetworkDataArrayOutputWithContext(ctx context.Context) ContainerNetworkDataArrayOutput { + return o +} + +func (o ContainerNetworkDataArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerNetworkData] { + return pulumix.Output[[]ContainerNetworkData]{ + OutputState: o.OutputState, + } +} + +func (o ContainerNetworkDataArrayOutput) Index(i pulumi.IntInput) ContainerNetworkDataOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerNetworkData { + return vs[0].([]ContainerNetworkData)[vs[1].(int)] + }).(ContainerNetworkDataOutput) +} + +type ContainerNetworksAdvanced struct { + // The network aliases of the container in the specific network. + Aliases []string `pulumi:"aliases"` + // The IPV4 address of the container in the specific network. + Ipv4Address *string `pulumi:"ipv4Address"` + // The IPV6 address of the container in the specific network. + Ipv6Address *string `pulumi:"ipv6Address"` + // The name or id of the network to use. You can use `name` or `id` attribute from a `Network` resource. + Name string `pulumi:"name"` +} + +// ContainerNetworksAdvancedInput is an input type that accepts ContainerNetworksAdvancedArgs and ContainerNetworksAdvancedOutput values. +// You can construct a concrete instance of `ContainerNetworksAdvancedInput` via: +// +// ContainerNetworksAdvancedArgs{...} +type ContainerNetworksAdvancedInput interface { + pulumi.Input + + ToContainerNetworksAdvancedOutput() ContainerNetworksAdvancedOutput + ToContainerNetworksAdvancedOutputWithContext(context.Context) ContainerNetworksAdvancedOutput +} + +type ContainerNetworksAdvancedArgs struct { + // The network aliases of the container in the specific network. + Aliases pulumi.StringArrayInput `pulumi:"aliases"` + // The IPV4 address of the container in the specific network. + Ipv4Address pulumi.StringPtrInput `pulumi:"ipv4Address"` + // The IPV6 address of the container in the specific network. + Ipv6Address pulumi.StringPtrInput `pulumi:"ipv6Address"` + // The name or id of the network to use. You can use `name` or `id` attribute from a `Network` resource. + Name pulumi.StringInput `pulumi:"name"` +} + +func (ContainerNetworksAdvancedArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerNetworksAdvanced)(nil)).Elem() +} + +func (i ContainerNetworksAdvancedArgs) ToContainerNetworksAdvancedOutput() ContainerNetworksAdvancedOutput { + return i.ToContainerNetworksAdvancedOutputWithContext(context.Background()) +} + +func (i ContainerNetworksAdvancedArgs) ToContainerNetworksAdvancedOutputWithContext(ctx context.Context) ContainerNetworksAdvancedOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerNetworksAdvancedOutput) +} + +func (i ContainerNetworksAdvancedArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerNetworksAdvanced] { + return pulumix.Output[ContainerNetworksAdvanced]{ + OutputState: i.ToContainerNetworksAdvancedOutputWithContext(ctx).OutputState, + } +} + +// ContainerNetworksAdvancedArrayInput is an input type that accepts ContainerNetworksAdvancedArray and ContainerNetworksAdvancedArrayOutput values. +// You can construct a concrete instance of `ContainerNetworksAdvancedArrayInput` via: +// +// ContainerNetworksAdvancedArray{ ContainerNetworksAdvancedArgs{...} } +type ContainerNetworksAdvancedArrayInput interface { + pulumi.Input + + ToContainerNetworksAdvancedArrayOutput() ContainerNetworksAdvancedArrayOutput + ToContainerNetworksAdvancedArrayOutputWithContext(context.Context) ContainerNetworksAdvancedArrayOutput +} + +type ContainerNetworksAdvancedArray []ContainerNetworksAdvancedInput + +func (ContainerNetworksAdvancedArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerNetworksAdvanced)(nil)).Elem() +} + +func (i ContainerNetworksAdvancedArray) ToContainerNetworksAdvancedArrayOutput() ContainerNetworksAdvancedArrayOutput { + return i.ToContainerNetworksAdvancedArrayOutputWithContext(context.Background()) +} + +func (i ContainerNetworksAdvancedArray) ToContainerNetworksAdvancedArrayOutputWithContext(ctx context.Context) ContainerNetworksAdvancedArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerNetworksAdvancedArrayOutput) +} + +func (i ContainerNetworksAdvancedArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerNetworksAdvanced] { + return pulumix.Output[[]ContainerNetworksAdvanced]{ + OutputState: i.ToContainerNetworksAdvancedArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerNetworksAdvancedOutput struct{ *pulumi.OutputState } + +func (ContainerNetworksAdvancedOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerNetworksAdvanced)(nil)).Elem() +} + +func (o ContainerNetworksAdvancedOutput) ToContainerNetworksAdvancedOutput() ContainerNetworksAdvancedOutput { + return o +} + +func (o ContainerNetworksAdvancedOutput) ToContainerNetworksAdvancedOutputWithContext(ctx context.Context) ContainerNetworksAdvancedOutput { + return o +} + +func (o ContainerNetworksAdvancedOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerNetworksAdvanced] { + return pulumix.Output[ContainerNetworksAdvanced]{ + OutputState: o.OutputState, + } +} + +// The network aliases of the container in the specific network. +func (o ContainerNetworksAdvancedOutput) Aliases() pulumi.StringArrayOutput { + return o.ApplyT(func(v ContainerNetworksAdvanced) []string { return v.Aliases }).(pulumi.StringArrayOutput) +} + +// The IPV4 address of the container in the specific network. +func (o ContainerNetworksAdvancedOutput) Ipv4Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworksAdvanced) *string { return v.Ipv4Address }).(pulumi.StringPtrOutput) +} + +// The IPV6 address of the container in the specific network. +func (o ContainerNetworksAdvancedOutput) Ipv6Address() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerNetworksAdvanced) *string { return v.Ipv6Address }).(pulumi.StringPtrOutput) +} + +// The name or id of the network to use. You can use `name` or `id` attribute from a `Network` resource. +func (o ContainerNetworksAdvancedOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ContainerNetworksAdvanced) string { return v.Name }).(pulumi.StringOutput) +} + +type ContainerNetworksAdvancedArrayOutput struct{ *pulumi.OutputState } + +func (ContainerNetworksAdvancedArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerNetworksAdvanced)(nil)).Elem() +} + +func (o ContainerNetworksAdvancedArrayOutput) ToContainerNetworksAdvancedArrayOutput() ContainerNetworksAdvancedArrayOutput { + return o +} + +func (o ContainerNetworksAdvancedArrayOutput) ToContainerNetworksAdvancedArrayOutputWithContext(ctx context.Context) ContainerNetworksAdvancedArrayOutput { + return o +} + +func (o ContainerNetworksAdvancedArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerNetworksAdvanced] { + return pulumix.Output[[]ContainerNetworksAdvanced]{ + OutputState: o.OutputState, + } +} + +func (o ContainerNetworksAdvancedArrayOutput) Index(i pulumi.IntInput) ContainerNetworksAdvancedOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerNetworksAdvanced { + return vs[0].([]ContainerNetworksAdvanced)[vs[1].(int)] + }).(ContainerNetworksAdvancedOutput) +} + +type ContainerPort struct { + // Port exposed out of the container. If not given a free random port `>= 32768` will be used. + External *int `pulumi:"external"` + // Port within the container. + Internal int `pulumi:"internal"` + // IP address/mask that can access this port. Defaults to `0.0.0.0`. + Ip *string `pulumi:"ip"` + // Protocol that can be used over this port. Defaults to `tcp`. + Protocol *string `pulumi:"protocol"` +} + +// ContainerPortInput is an input type that accepts ContainerPortArgs and ContainerPortOutput values. +// You can construct a concrete instance of `ContainerPortInput` via: +// +// ContainerPortArgs{...} +type ContainerPortInput interface { + pulumi.Input + + ToContainerPortOutput() ContainerPortOutput + ToContainerPortOutputWithContext(context.Context) ContainerPortOutput +} + +type ContainerPortArgs struct { + // Port exposed out of the container. If not given a free random port `>= 32768` will be used. + External pulumi.IntPtrInput `pulumi:"external"` + // Port within the container. + Internal pulumi.IntInput `pulumi:"internal"` + // IP address/mask that can access this port. Defaults to `0.0.0.0`. + Ip pulumi.StringPtrInput `pulumi:"ip"` + // Protocol that can be used over this port. Defaults to `tcp`. + Protocol pulumi.StringPtrInput `pulumi:"protocol"` +} + +func (ContainerPortArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerPort)(nil)).Elem() +} + +func (i ContainerPortArgs) ToContainerPortOutput() ContainerPortOutput { + return i.ToContainerPortOutputWithContext(context.Background()) +} + +func (i ContainerPortArgs) ToContainerPortOutputWithContext(ctx context.Context) ContainerPortOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerPortOutput) +} + +func (i ContainerPortArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerPort] { + return pulumix.Output[ContainerPort]{ + OutputState: i.ToContainerPortOutputWithContext(ctx).OutputState, + } +} + +// ContainerPortArrayInput is an input type that accepts ContainerPortArray and ContainerPortArrayOutput values. +// You can construct a concrete instance of `ContainerPortArrayInput` via: +// +// ContainerPortArray{ ContainerPortArgs{...} } +type ContainerPortArrayInput interface { + pulumi.Input + + ToContainerPortArrayOutput() ContainerPortArrayOutput + ToContainerPortArrayOutputWithContext(context.Context) ContainerPortArrayOutput +} + +type ContainerPortArray []ContainerPortInput + +func (ContainerPortArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerPort)(nil)).Elem() +} + +func (i ContainerPortArray) ToContainerPortArrayOutput() ContainerPortArrayOutput { + return i.ToContainerPortArrayOutputWithContext(context.Background()) +} + +func (i ContainerPortArray) ToContainerPortArrayOutputWithContext(ctx context.Context) ContainerPortArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerPortArrayOutput) +} + +func (i ContainerPortArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerPort] { + return pulumix.Output[[]ContainerPort]{ + OutputState: i.ToContainerPortArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerPortOutput struct{ *pulumi.OutputState } + +func (ContainerPortOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerPort)(nil)).Elem() +} + +func (o ContainerPortOutput) ToContainerPortOutput() ContainerPortOutput { + return o +} + +func (o ContainerPortOutput) ToContainerPortOutputWithContext(ctx context.Context) ContainerPortOutput { + return o +} + +func (o ContainerPortOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerPort] { + return pulumix.Output[ContainerPort]{ + OutputState: o.OutputState, + } +} + +// Port exposed out of the container. If not given a free random port `>= 32768` will be used. +func (o ContainerPortOutput) External() pulumi.IntPtrOutput { + return o.ApplyT(func(v ContainerPort) *int { return v.External }).(pulumi.IntPtrOutput) +} + +// Port within the container. +func (o ContainerPortOutput) Internal() pulumi.IntOutput { + return o.ApplyT(func(v ContainerPort) int { return v.Internal }).(pulumi.IntOutput) +} + +// IP address/mask that can access this port. Defaults to `0.0.0.0`. +func (o ContainerPortOutput) Ip() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerPort) *string { return v.Ip }).(pulumi.StringPtrOutput) +} + +// Protocol that can be used over this port. Defaults to `tcp`. +func (o ContainerPortOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerPort) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +type ContainerPortArrayOutput struct{ *pulumi.OutputState } + +func (ContainerPortArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerPort)(nil)).Elem() +} + +func (o ContainerPortArrayOutput) ToContainerPortArrayOutput() ContainerPortArrayOutput { + return o +} + +func (o ContainerPortArrayOutput) ToContainerPortArrayOutputWithContext(ctx context.Context) ContainerPortArrayOutput { + return o +} + +func (o ContainerPortArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerPort] { + return pulumix.Output[[]ContainerPort]{ + OutputState: o.OutputState, + } +} + +func (o ContainerPortArrayOutput) Index(i pulumi.IntInput) ContainerPortOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerPort { + return vs[0].([]ContainerPort)[vs[1].(int)] + }).(ContainerPortOutput) +} + +type ContainerUlimit struct { + // The hard limit + Hard int `pulumi:"hard"` + // The name of the ulimit + Name string `pulumi:"name"` + // The soft limit + Soft int `pulumi:"soft"` +} + +// ContainerUlimitInput is an input type that accepts ContainerUlimitArgs and ContainerUlimitOutput values. +// You can construct a concrete instance of `ContainerUlimitInput` via: +// +// ContainerUlimitArgs{...} +type ContainerUlimitInput interface { + pulumi.Input + + ToContainerUlimitOutput() ContainerUlimitOutput + ToContainerUlimitOutputWithContext(context.Context) ContainerUlimitOutput +} + +type ContainerUlimitArgs struct { + // The hard limit + Hard pulumi.IntInput `pulumi:"hard"` + // The name of the ulimit + Name pulumi.StringInput `pulumi:"name"` + // The soft limit + Soft pulumi.IntInput `pulumi:"soft"` +} + +func (ContainerUlimitArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerUlimit)(nil)).Elem() +} + +func (i ContainerUlimitArgs) ToContainerUlimitOutput() ContainerUlimitOutput { + return i.ToContainerUlimitOutputWithContext(context.Background()) +} + +func (i ContainerUlimitArgs) ToContainerUlimitOutputWithContext(ctx context.Context) ContainerUlimitOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerUlimitOutput) +} + +func (i ContainerUlimitArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerUlimit] { + return pulumix.Output[ContainerUlimit]{ + OutputState: i.ToContainerUlimitOutputWithContext(ctx).OutputState, + } +} + +// ContainerUlimitArrayInput is an input type that accepts ContainerUlimitArray and ContainerUlimitArrayOutput values. +// You can construct a concrete instance of `ContainerUlimitArrayInput` via: +// +// ContainerUlimitArray{ ContainerUlimitArgs{...} } +type ContainerUlimitArrayInput interface { + pulumi.Input + + ToContainerUlimitArrayOutput() ContainerUlimitArrayOutput + ToContainerUlimitArrayOutputWithContext(context.Context) ContainerUlimitArrayOutput +} + +type ContainerUlimitArray []ContainerUlimitInput + +func (ContainerUlimitArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerUlimit)(nil)).Elem() +} + +func (i ContainerUlimitArray) ToContainerUlimitArrayOutput() ContainerUlimitArrayOutput { + return i.ToContainerUlimitArrayOutputWithContext(context.Background()) +} + +func (i ContainerUlimitArray) ToContainerUlimitArrayOutputWithContext(ctx context.Context) ContainerUlimitArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerUlimitArrayOutput) +} + +func (i ContainerUlimitArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerUlimit] { + return pulumix.Output[[]ContainerUlimit]{ + OutputState: i.ToContainerUlimitArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerUlimitOutput struct{ *pulumi.OutputState } + +func (ContainerUlimitOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerUlimit)(nil)).Elem() +} + +func (o ContainerUlimitOutput) ToContainerUlimitOutput() ContainerUlimitOutput { + return o +} + +func (o ContainerUlimitOutput) ToContainerUlimitOutputWithContext(ctx context.Context) ContainerUlimitOutput { + return o +} + +func (o ContainerUlimitOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerUlimit] { + return pulumix.Output[ContainerUlimit]{ + OutputState: o.OutputState, + } +} + +// The hard limit +func (o ContainerUlimitOutput) Hard() pulumi.IntOutput { + return o.ApplyT(func(v ContainerUlimit) int { return v.Hard }).(pulumi.IntOutput) +} + +// The name of the ulimit +func (o ContainerUlimitOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ContainerUlimit) string { return v.Name }).(pulumi.StringOutput) +} + +// The soft limit +func (o ContainerUlimitOutput) Soft() pulumi.IntOutput { + return o.ApplyT(func(v ContainerUlimit) int { return v.Soft }).(pulumi.IntOutput) +} + +type ContainerUlimitArrayOutput struct{ *pulumi.OutputState } + +func (ContainerUlimitArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerUlimit)(nil)).Elem() +} + +func (o ContainerUlimitArrayOutput) ToContainerUlimitArrayOutput() ContainerUlimitArrayOutput { + return o +} + +func (o ContainerUlimitArrayOutput) ToContainerUlimitArrayOutputWithContext(ctx context.Context) ContainerUlimitArrayOutput { + return o +} + +func (o ContainerUlimitArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerUlimit] { + return pulumix.Output[[]ContainerUlimit]{ + OutputState: o.OutputState, + } +} + +func (o ContainerUlimitArrayOutput) Index(i pulumi.IntInput) ContainerUlimitOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerUlimit { + return vs[0].([]ContainerUlimit)[vs[1].(int)] + }).(ContainerUlimitOutput) +} + +type ContainerUpload struct { + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. Conflicts with `contentBase64` & `source` + Content *string `pulumi:"content"` + ContentBase64 *string `pulumi:"contentBase64"` + // If `true`, the file will be uploaded with user executable permission. Defaults to `false`. + Executable *bool `pulumi:"executable"` + // Path to the file in the container where is upload goes to + File string `pulumi:"file"` + // A filename that references a file which will be uploaded as the object content. This allows for large file uploads that do not get stored in state. Conflicts with `content` & `contentBase64` + Source *string `pulumi:"source"` + // If using `source`, this will force an update if the file content has updated but the filename has not. + SourceHash *string `pulumi:"sourceHash"` +} + +// ContainerUploadInput is an input type that accepts ContainerUploadArgs and ContainerUploadOutput values. +// You can construct a concrete instance of `ContainerUploadInput` via: +// +// ContainerUploadArgs{...} +type ContainerUploadInput interface { + pulumi.Input + + ToContainerUploadOutput() ContainerUploadOutput + ToContainerUploadOutputWithContext(context.Context) ContainerUploadOutput +} + +type ContainerUploadArgs struct { + // Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. Conflicts with `contentBase64` & `source` + Content pulumi.StringPtrInput `pulumi:"content"` + ContentBase64 pulumi.StringPtrInput `pulumi:"contentBase64"` + // If `true`, the file will be uploaded with user executable permission. Defaults to `false`. + Executable pulumi.BoolPtrInput `pulumi:"executable"` + // Path to the file in the container where is upload goes to + File pulumi.StringInput `pulumi:"file"` + // A filename that references a file which will be uploaded as the object content. This allows for large file uploads that do not get stored in state. Conflicts with `content` & `contentBase64` + Source pulumi.StringPtrInput `pulumi:"source"` + // If using `source`, this will force an update if the file content has updated but the filename has not. + SourceHash pulumi.StringPtrInput `pulumi:"sourceHash"` +} + +func (ContainerUploadArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerUpload)(nil)).Elem() +} + +func (i ContainerUploadArgs) ToContainerUploadOutput() ContainerUploadOutput { + return i.ToContainerUploadOutputWithContext(context.Background()) +} + +func (i ContainerUploadArgs) ToContainerUploadOutputWithContext(ctx context.Context) ContainerUploadOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerUploadOutput) +} + +func (i ContainerUploadArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerUpload] { + return pulumix.Output[ContainerUpload]{ + OutputState: i.ToContainerUploadOutputWithContext(ctx).OutputState, + } +} + +// ContainerUploadArrayInput is an input type that accepts ContainerUploadArray and ContainerUploadArrayOutput values. +// You can construct a concrete instance of `ContainerUploadArrayInput` via: +// +// ContainerUploadArray{ ContainerUploadArgs{...} } +type ContainerUploadArrayInput interface { + pulumi.Input + + ToContainerUploadArrayOutput() ContainerUploadArrayOutput + ToContainerUploadArrayOutputWithContext(context.Context) ContainerUploadArrayOutput +} + +type ContainerUploadArray []ContainerUploadInput + +func (ContainerUploadArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerUpload)(nil)).Elem() +} + +func (i ContainerUploadArray) ToContainerUploadArrayOutput() ContainerUploadArrayOutput { + return i.ToContainerUploadArrayOutputWithContext(context.Background()) +} + +func (i ContainerUploadArray) ToContainerUploadArrayOutputWithContext(ctx context.Context) ContainerUploadArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerUploadArrayOutput) +} + +func (i ContainerUploadArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerUpload] { + return pulumix.Output[[]ContainerUpload]{ + OutputState: i.ToContainerUploadArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerUploadOutput struct{ *pulumi.OutputState } + +func (ContainerUploadOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerUpload)(nil)).Elem() +} + +func (o ContainerUploadOutput) ToContainerUploadOutput() ContainerUploadOutput { + return o +} + +func (o ContainerUploadOutput) ToContainerUploadOutputWithContext(ctx context.Context) ContainerUploadOutput { + return o +} + +func (o ContainerUploadOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerUpload] { + return pulumix.Output[ContainerUpload]{ + OutputState: o.OutputState, + } +} + +// Literal string value to use as the object content, which will be uploaded as UTF-8-encoded text. Conflicts with `contentBase64` & `source` +func (o ContainerUploadOutput) Content() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerUpload) *string { return v.Content }).(pulumi.StringPtrOutput) +} + +func (o ContainerUploadOutput) ContentBase64() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerUpload) *string { return v.ContentBase64 }).(pulumi.StringPtrOutput) +} + +// If `true`, the file will be uploaded with user executable permission. Defaults to `false`. +func (o ContainerUploadOutput) Executable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ContainerUpload) *bool { return v.Executable }).(pulumi.BoolPtrOutput) +} + +// Path to the file in the container where is upload goes to +func (o ContainerUploadOutput) File() pulumi.StringOutput { + return o.ApplyT(func(v ContainerUpload) string { return v.File }).(pulumi.StringOutput) +} + +// A filename that references a file which will be uploaded as the object content. This allows for large file uploads that do not get stored in state. Conflicts with `content` & `contentBase64` +func (o ContainerUploadOutput) Source() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerUpload) *string { return v.Source }).(pulumi.StringPtrOutput) +} + +// If using `source`, this will force an update if the file content has updated but the filename has not. +func (o ContainerUploadOutput) SourceHash() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerUpload) *string { return v.SourceHash }).(pulumi.StringPtrOutput) +} + +type ContainerUploadArrayOutput struct{ *pulumi.OutputState } + +func (ContainerUploadArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerUpload)(nil)).Elem() +} + +func (o ContainerUploadArrayOutput) ToContainerUploadArrayOutput() ContainerUploadArrayOutput { + return o +} + +func (o ContainerUploadArrayOutput) ToContainerUploadArrayOutputWithContext(ctx context.Context) ContainerUploadArrayOutput { + return o +} + +func (o ContainerUploadArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerUpload] { + return pulumix.Output[[]ContainerUpload]{ + OutputState: o.OutputState, + } +} + +func (o ContainerUploadArrayOutput) Index(i pulumi.IntInput) ContainerUploadOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerUpload { + return vs[0].([]ContainerUpload)[vs[1].(int)] + }).(ContainerUploadOutput) +} + +type ContainerVolume struct { + // The path in the container where the volume will be mounted. + ContainerPath *string `pulumi:"containerPath"` + // The container where the volume is coming from. + FromContainer *string `pulumi:"fromContainer"` + // The path on the host where the volume is coming from. + HostPath *string `pulumi:"hostPath"` + // If `true`, this volume will be readonly. Defaults to `false`. + ReadOnly *bool `pulumi:"readOnly"` + // The name of the docker volume which should be mounted. + VolumeName *string `pulumi:"volumeName"` +} + +// ContainerVolumeInput is an input type that accepts ContainerVolumeArgs and ContainerVolumeOutput values. +// You can construct a concrete instance of `ContainerVolumeInput` via: +// +// ContainerVolumeArgs{...} +type ContainerVolumeInput interface { + pulumi.Input + + ToContainerVolumeOutput() ContainerVolumeOutput + ToContainerVolumeOutputWithContext(context.Context) ContainerVolumeOutput +} + +type ContainerVolumeArgs struct { + // The path in the container where the volume will be mounted. + ContainerPath pulumi.StringPtrInput `pulumi:"containerPath"` + // The container where the volume is coming from. + FromContainer pulumi.StringPtrInput `pulumi:"fromContainer"` + // The path on the host where the volume is coming from. + HostPath pulumi.StringPtrInput `pulumi:"hostPath"` + // If `true`, this volume will be readonly. Defaults to `false`. + ReadOnly pulumi.BoolPtrInput `pulumi:"readOnly"` + // The name of the docker volume which should be mounted. + VolumeName pulumi.StringPtrInput `pulumi:"volumeName"` +} + +func (ContainerVolumeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerVolume)(nil)).Elem() +} + +func (i ContainerVolumeArgs) ToContainerVolumeOutput() ContainerVolumeOutput { + return i.ToContainerVolumeOutputWithContext(context.Background()) +} + +func (i ContainerVolumeArgs) ToContainerVolumeOutputWithContext(ctx context.Context) ContainerVolumeOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerVolumeOutput) +} + +func (i ContainerVolumeArgs) ToOutput(ctx context.Context) pulumix.Output[ContainerVolume] { + return pulumix.Output[ContainerVolume]{ + OutputState: i.ToContainerVolumeOutputWithContext(ctx).OutputState, + } +} + +// ContainerVolumeArrayInput is an input type that accepts ContainerVolumeArray and ContainerVolumeArrayOutput values. +// You can construct a concrete instance of `ContainerVolumeArrayInput` via: +// +// ContainerVolumeArray{ ContainerVolumeArgs{...} } +type ContainerVolumeArrayInput interface { + pulumi.Input + + ToContainerVolumeArrayOutput() ContainerVolumeArrayOutput + ToContainerVolumeArrayOutputWithContext(context.Context) ContainerVolumeArrayOutput +} + +type ContainerVolumeArray []ContainerVolumeInput + +func (ContainerVolumeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerVolume)(nil)).Elem() +} + +func (i ContainerVolumeArray) ToContainerVolumeArrayOutput() ContainerVolumeArrayOutput { + return i.ToContainerVolumeArrayOutputWithContext(context.Background()) +} + +func (i ContainerVolumeArray) ToContainerVolumeArrayOutputWithContext(ctx context.Context) ContainerVolumeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ContainerVolumeArrayOutput) +} + +func (i ContainerVolumeArray) ToOutput(ctx context.Context) pulumix.Output[[]ContainerVolume] { + return pulumix.Output[[]ContainerVolume]{ + OutputState: i.ToContainerVolumeArrayOutputWithContext(ctx).OutputState, + } +} + +type ContainerVolumeOutput struct{ *pulumi.OutputState } + +func (ContainerVolumeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ContainerVolume)(nil)).Elem() +} + +func (o ContainerVolumeOutput) ToContainerVolumeOutput() ContainerVolumeOutput { + return o +} + +func (o ContainerVolumeOutput) ToContainerVolumeOutputWithContext(ctx context.Context) ContainerVolumeOutput { + return o +} + +func (o ContainerVolumeOutput) ToOutput(ctx context.Context) pulumix.Output[ContainerVolume] { + return pulumix.Output[ContainerVolume]{ + OutputState: o.OutputState, + } +} + +// The path in the container where the volume will be mounted. +func (o ContainerVolumeOutput) ContainerPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerVolume) *string { return v.ContainerPath }).(pulumi.StringPtrOutput) +} + +// The container where the volume is coming from. +func (o ContainerVolumeOutput) FromContainer() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerVolume) *string { return v.FromContainer }).(pulumi.StringPtrOutput) +} + +// The path on the host where the volume is coming from. +func (o ContainerVolumeOutput) HostPath() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerVolume) *string { return v.HostPath }).(pulumi.StringPtrOutput) +} + +// If `true`, this volume will be readonly. Defaults to `false`. +func (o ContainerVolumeOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ContainerVolume) *bool { return v.ReadOnly }).(pulumi.BoolPtrOutput) +} + +// The name of the docker volume which should be mounted. +func (o ContainerVolumeOutput) VolumeName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ContainerVolume) *string { return v.VolumeName }).(pulumi.StringPtrOutput) +} + +type ContainerVolumeArrayOutput struct{ *pulumi.OutputState } + +func (ContainerVolumeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ContainerVolume)(nil)).Elem() +} + +func (o ContainerVolumeArrayOutput) ToContainerVolumeArrayOutput() ContainerVolumeArrayOutput { + return o +} + +func (o ContainerVolumeArrayOutput) ToContainerVolumeArrayOutputWithContext(ctx context.Context) ContainerVolumeArrayOutput { + return o +} + +func (o ContainerVolumeArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ContainerVolume] { + return pulumix.Output[[]ContainerVolume]{ + OutputState: o.OutputState, + } +} + +func (o ContainerVolumeArrayOutput) Index(i pulumi.IntInput) ContainerVolumeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ContainerVolume { + return vs[0].([]ContainerVolume)[vs[1].(int)] + }).(ContainerVolumeOutput) +} + +type NetworkIpamConfig struct { + // Auxiliary IPv4 or IPv6 addresses used by Network driver + AuxAddress map[string]interface{} `pulumi:"auxAddress"` + // The IP address of the gateway + Gateway *string `pulumi:"gateway"` + // The ip range in CIDR form + IpRange *string `pulumi:"ipRange"` + // The subnet in CIDR form + Subnet *string `pulumi:"subnet"` +} + +// NetworkIpamConfigInput is an input type that accepts NetworkIpamConfigArgs and NetworkIpamConfigOutput values. +// You can construct a concrete instance of `NetworkIpamConfigInput` via: +// +// NetworkIpamConfigArgs{...} +type NetworkIpamConfigInput interface { + pulumi.Input + + ToNetworkIpamConfigOutput() NetworkIpamConfigOutput + ToNetworkIpamConfigOutputWithContext(context.Context) NetworkIpamConfigOutput +} + +type NetworkIpamConfigArgs struct { + // Auxiliary IPv4 or IPv6 addresses used by Network driver + AuxAddress pulumi.MapInput `pulumi:"auxAddress"` + // The IP address of the gateway + Gateway pulumi.StringPtrInput `pulumi:"gateway"` + // The ip range in CIDR form + IpRange pulumi.StringPtrInput `pulumi:"ipRange"` + // The subnet in CIDR form + Subnet pulumi.StringPtrInput `pulumi:"subnet"` +} + +func (NetworkIpamConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkIpamConfig)(nil)).Elem() +} + +func (i NetworkIpamConfigArgs) ToNetworkIpamConfigOutput() NetworkIpamConfigOutput { + return i.ToNetworkIpamConfigOutputWithContext(context.Background()) +} + +func (i NetworkIpamConfigArgs) ToNetworkIpamConfigOutputWithContext(ctx context.Context) NetworkIpamConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkIpamConfigOutput) +} + +func (i NetworkIpamConfigArgs) ToOutput(ctx context.Context) pulumix.Output[NetworkIpamConfig] { + return pulumix.Output[NetworkIpamConfig]{ + OutputState: i.ToNetworkIpamConfigOutputWithContext(ctx).OutputState, + } +} + +// NetworkIpamConfigArrayInput is an input type that accepts NetworkIpamConfigArray and NetworkIpamConfigArrayOutput values. +// You can construct a concrete instance of `NetworkIpamConfigArrayInput` via: +// +// NetworkIpamConfigArray{ NetworkIpamConfigArgs{...} } +type NetworkIpamConfigArrayInput interface { + pulumi.Input + + ToNetworkIpamConfigArrayOutput() NetworkIpamConfigArrayOutput + ToNetworkIpamConfigArrayOutputWithContext(context.Context) NetworkIpamConfigArrayOutput +} + +type NetworkIpamConfigArray []NetworkIpamConfigInput + +func (NetworkIpamConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkIpamConfig)(nil)).Elem() +} + +func (i NetworkIpamConfigArray) ToNetworkIpamConfigArrayOutput() NetworkIpamConfigArrayOutput { + return i.ToNetworkIpamConfigArrayOutputWithContext(context.Background()) +} + +func (i NetworkIpamConfigArray) ToNetworkIpamConfigArrayOutputWithContext(ctx context.Context) NetworkIpamConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkIpamConfigArrayOutput) +} + +func (i NetworkIpamConfigArray) ToOutput(ctx context.Context) pulumix.Output[[]NetworkIpamConfig] { + return pulumix.Output[[]NetworkIpamConfig]{ + OutputState: i.ToNetworkIpamConfigArrayOutputWithContext(ctx).OutputState, + } +} + +type NetworkIpamConfigOutput struct{ *pulumi.OutputState } + +func (NetworkIpamConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkIpamConfig)(nil)).Elem() +} + +func (o NetworkIpamConfigOutput) ToNetworkIpamConfigOutput() NetworkIpamConfigOutput { + return o +} + +func (o NetworkIpamConfigOutput) ToNetworkIpamConfigOutputWithContext(ctx context.Context) NetworkIpamConfigOutput { + return o +} + +func (o NetworkIpamConfigOutput) ToOutput(ctx context.Context) pulumix.Output[NetworkIpamConfig] { + return pulumix.Output[NetworkIpamConfig]{ + OutputState: o.OutputState, + } +} + +// Auxiliary IPv4 or IPv6 addresses used by Network driver +func (o NetworkIpamConfigOutput) AuxAddress() pulumi.MapOutput { + return o.ApplyT(func(v NetworkIpamConfig) map[string]interface{} { return v.AuxAddress }).(pulumi.MapOutput) +} + +// The IP address of the gateway +func (o NetworkIpamConfigOutput) Gateway() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkIpamConfig) *string { return v.Gateway }).(pulumi.StringPtrOutput) +} + +// The ip range in CIDR form +func (o NetworkIpamConfigOutput) IpRange() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkIpamConfig) *string { return v.IpRange }).(pulumi.StringPtrOutput) +} + +// The subnet in CIDR form +func (o NetworkIpamConfigOutput) Subnet() pulumi.StringPtrOutput { + return o.ApplyT(func(v NetworkIpamConfig) *string { return v.Subnet }).(pulumi.StringPtrOutput) +} + +type NetworkIpamConfigArrayOutput struct{ *pulumi.OutputState } + +func (NetworkIpamConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkIpamConfig)(nil)).Elem() +} + +func (o NetworkIpamConfigArrayOutput) ToNetworkIpamConfigArrayOutput() NetworkIpamConfigArrayOutput { + return o +} + +func (o NetworkIpamConfigArrayOutput) ToNetworkIpamConfigArrayOutputWithContext(ctx context.Context) NetworkIpamConfigArrayOutput { + return o +} + +func (o NetworkIpamConfigArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]NetworkIpamConfig] { + return pulumix.Output[[]NetworkIpamConfig]{ + OutputState: o.OutputState, + } +} + +func (o NetworkIpamConfigArrayOutput) Index(i pulumi.IntInput) NetworkIpamConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkIpamConfig { + return vs[0].([]NetworkIpamConfig)[vs[1].(int)] + }).(NetworkIpamConfigOutput) +} + +type NetworkLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// NetworkLabelInput is an input type that accepts NetworkLabelArgs and NetworkLabelOutput values. +// You can construct a concrete instance of `NetworkLabelInput` via: +// +// NetworkLabelArgs{...} +type NetworkLabelInput interface { + pulumi.Input + + ToNetworkLabelOutput() NetworkLabelOutput + ToNetworkLabelOutputWithContext(context.Context) NetworkLabelOutput +} + +type NetworkLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (NetworkLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkLabel)(nil)).Elem() +} + +func (i NetworkLabelArgs) ToNetworkLabelOutput() NetworkLabelOutput { + return i.ToNetworkLabelOutputWithContext(context.Background()) +} + +func (i NetworkLabelArgs) ToNetworkLabelOutputWithContext(ctx context.Context) NetworkLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLabelOutput) +} + +func (i NetworkLabelArgs) ToOutput(ctx context.Context) pulumix.Output[NetworkLabel] { + return pulumix.Output[NetworkLabel]{ + OutputState: i.ToNetworkLabelOutputWithContext(ctx).OutputState, + } +} + +// NetworkLabelArrayInput is an input type that accepts NetworkLabelArray and NetworkLabelArrayOutput values. +// You can construct a concrete instance of `NetworkLabelArrayInput` via: +// +// NetworkLabelArray{ NetworkLabelArgs{...} } +type NetworkLabelArrayInput interface { + pulumi.Input + + ToNetworkLabelArrayOutput() NetworkLabelArrayOutput + ToNetworkLabelArrayOutputWithContext(context.Context) NetworkLabelArrayOutput +} + +type NetworkLabelArray []NetworkLabelInput + +func (NetworkLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkLabel)(nil)).Elem() +} + +func (i NetworkLabelArray) ToNetworkLabelArrayOutput() NetworkLabelArrayOutput { + return i.ToNetworkLabelArrayOutputWithContext(context.Background()) +} + +func (i NetworkLabelArray) ToNetworkLabelArrayOutputWithContext(ctx context.Context) NetworkLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(NetworkLabelArrayOutput) +} + +func (i NetworkLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]NetworkLabel] { + return pulumix.Output[[]NetworkLabel]{ + OutputState: i.ToNetworkLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type NetworkLabelOutput struct{ *pulumi.OutputState } + +func (NetworkLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*NetworkLabel)(nil)).Elem() +} + +func (o NetworkLabelOutput) ToNetworkLabelOutput() NetworkLabelOutput { + return o +} + +func (o NetworkLabelOutput) ToNetworkLabelOutputWithContext(ctx context.Context) NetworkLabelOutput { + return o +} + +func (o NetworkLabelOutput) ToOutput(ctx context.Context) pulumix.Output[NetworkLabel] { + return pulumix.Output[NetworkLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o NetworkLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v NetworkLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o NetworkLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v NetworkLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type NetworkLabelArrayOutput struct{ *pulumi.OutputState } + +func (NetworkLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]NetworkLabel)(nil)).Elem() +} + +func (o NetworkLabelArrayOutput) ToNetworkLabelArrayOutput() NetworkLabelArrayOutput { + return o +} + +func (o NetworkLabelArrayOutput) ToNetworkLabelArrayOutputWithContext(ctx context.Context) NetworkLabelArrayOutput { + return o +} + +func (o NetworkLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]NetworkLabel] { + return pulumix.Output[[]NetworkLabel]{ + OutputState: o.OutputState, + } +} + +func (o NetworkLabelArrayOutput) Index(i pulumi.IntInput) NetworkLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) NetworkLabel { + return vs[0].([]NetworkLabel)[vs[1].(int)] + }).(NetworkLabelOutput) +} + +type PluginGrantPermission struct { + // The name of the permission + Name string `pulumi:"name"` + // The value of the permission + Values []string `pulumi:"values"` +} + +// PluginGrantPermissionInput is an input type that accepts PluginGrantPermissionArgs and PluginGrantPermissionOutput values. +// You can construct a concrete instance of `PluginGrantPermissionInput` via: +// +// PluginGrantPermissionArgs{...} +type PluginGrantPermissionInput interface { + pulumi.Input + + ToPluginGrantPermissionOutput() PluginGrantPermissionOutput + ToPluginGrantPermissionOutputWithContext(context.Context) PluginGrantPermissionOutput +} + +type PluginGrantPermissionArgs struct { + // The name of the permission + Name pulumi.StringInput `pulumi:"name"` + // The value of the permission + Values pulumi.StringArrayInput `pulumi:"values"` +} + +func (PluginGrantPermissionArgs) ElementType() reflect.Type { + return reflect.TypeOf((*PluginGrantPermission)(nil)).Elem() +} + +func (i PluginGrantPermissionArgs) ToPluginGrantPermissionOutput() PluginGrantPermissionOutput { + return i.ToPluginGrantPermissionOutputWithContext(context.Background()) +} + +func (i PluginGrantPermissionArgs) ToPluginGrantPermissionOutputWithContext(ctx context.Context) PluginGrantPermissionOutput { + return pulumi.ToOutputWithContext(ctx, i).(PluginGrantPermissionOutput) +} + +func (i PluginGrantPermissionArgs) ToOutput(ctx context.Context) pulumix.Output[PluginGrantPermission] { + return pulumix.Output[PluginGrantPermission]{ + OutputState: i.ToPluginGrantPermissionOutputWithContext(ctx).OutputState, + } +} + +// PluginGrantPermissionArrayInput is an input type that accepts PluginGrantPermissionArray and PluginGrantPermissionArrayOutput values. +// You can construct a concrete instance of `PluginGrantPermissionArrayInput` via: +// +// PluginGrantPermissionArray{ PluginGrantPermissionArgs{...} } +type PluginGrantPermissionArrayInput interface { + pulumi.Input + + ToPluginGrantPermissionArrayOutput() PluginGrantPermissionArrayOutput + ToPluginGrantPermissionArrayOutputWithContext(context.Context) PluginGrantPermissionArrayOutput +} + +type PluginGrantPermissionArray []PluginGrantPermissionInput + +func (PluginGrantPermissionArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]PluginGrantPermission)(nil)).Elem() +} + +func (i PluginGrantPermissionArray) ToPluginGrantPermissionArrayOutput() PluginGrantPermissionArrayOutput { + return i.ToPluginGrantPermissionArrayOutputWithContext(context.Background()) +} + +func (i PluginGrantPermissionArray) ToPluginGrantPermissionArrayOutputWithContext(ctx context.Context) PluginGrantPermissionArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(PluginGrantPermissionArrayOutput) +} + +func (i PluginGrantPermissionArray) ToOutput(ctx context.Context) pulumix.Output[[]PluginGrantPermission] { + return pulumix.Output[[]PluginGrantPermission]{ + OutputState: i.ToPluginGrantPermissionArrayOutputWithContext(ctx).OutputState, + } +} + +type PluginGrantPermissionOutput struct{ *pulumi.OutputState } + +func (PluginGrantPermissionOutput) ElementType() reflect.Type { + return reflect.TypeOf((*PluginGrantPermission)(nil)).Elem() +} + +func (o PluginGrantPermissionOutput) ToPluginGrantPermissionOutput() PluginGrantPermissionOutput { + return o +} + +func (o PluginGrantPermissionOutput) ToPluginGrantPermissionOutputWithContext(ctx context.Context) PluginGrantPermissionOutput { + return o +} + +func (o PluginGrantPermissionOutput) ToOutput(ctx context.Context) pulumix.Output[PluginGrantPermission] { + return pulumix.Output[PluginGrantPermission]{ + OutputState: o.OutputState, + } +} + +// The name of the permission +func (o PluginGrantPermissionOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v PluginGrantPermission) string { return v.Name }).(pulumi.StringOutput) +} + +// The value of the permission +func (o PluginGrantPermissionOutput) Values() pulumi.StringArrayOutput { + return o.ApplyT(func(v PluginGrantPermission) []string { return v.Values }).(pulumi.StringArrayOutput) +} + +type PluginGrantPermissionArrayOutput struct{ *pulumi.OutputState } + +func (PluginGrantPermissionArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]PluginGrantPermission)(nil)).Elem() +} + +func (o PluginGrantPermissionArrayOutput) ToPluginGrantPermissionArrayOutput() PluginGrantPermissionArrayOutput { + return o +} + +func (o PluginGrantPermissionArrayOutput) ToPluginGrantPermissionArrayOutputWithContext(ctx context.Context) PluginGrantPermissionArrayOutput { + return o +} + +func (o PluginGrantPermissionArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]PluginGrantPermission] { + return pulumix.Output[[]PluginGrantPermission]{ + OutputState: o.OutputState, + } +} + +func (o PluginGrantPermissionArrayOutput) Index(i pulumi.IntInput) PluginGrantPermissionOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) PluginGrantPermission { + return vs[0].([]PluginGrantPermission)[vs[1].(int)] + }).(PluginGrantPermissionOutput) +} + +type ProviderRegistryAuth struct { + Address string `pulumi:"address"` + AuthDisabled *bool `pulumi:"authDisabled"` + ConfigFile *string `pulumi:"configFile"` + ConfigFileContent *string `pulumi:"configFileContent"` + Password *string `pulumi:"password"` + Username *string `pulumi:"username"` +} + +// ProviderRegistryAuthInput is an input type that accepts ProviderRegistryAuthArgs and ProviderRegistryAuthOutput values. +// You can construct a concrete instance of `ProviderRegistryAuthInput` via: +// +// ProviderRegistryAuthArgs{...} +type ProviderRegistryAuthInput interface { + pulumi.Input + + ToProviderRegistryAuthOutput() ProviderRegistryAuthOutput + ToProviderRegistryAuthOutputWithContext(context.Context) ProviderRegistryAuthOutput +} + +type ProviderRegistryAuthArgs struct { + Address pulumi.StringInput `pulumi:"address"` + AuthDisabled pulumi.BoolPtrInput `pulumi:"authDisabled"` + ConfigFile pulumi.StringPtrInput `pulumi:"configFile"` + ConfigFileContent pulumi.StringPtrInput `pulumi:"configFileContent"` + Password pulumi.StringPtrInput `pulumi:"password"` + Username pulumi.StringPtrInput `pulumi:"username"` +} + +func (ProviderRegistryAuthArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderRegistryAuth)(nil)).Elem() +} + +func (i ProviderRegistryAuthArgs) ToProviderRegistryAuthOutput() ProviderRegistryAuthOutput { + return i.ToProviderRegistryAuthOutputWithContext(context.Background()) +} + +func (i ProviderRegistryAuthArgs) ToProviderRegistryAuthOutputWithContext(ctx context.Context) ProviderRegistryAuthOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderRegistryAuthOutput) +} + +func (i ProviderRegistryAuthArgs) ToOutput(ctx context.Context) pulumix.Output[ProviderRegistryAuth] { + return pulumix.Output[ProviderRegistryAuth]{ + OutputState: i.ToProviderRegistryAuthOutputWithContext(ctx).OutputState, + } +} + +// ProviderRegistryAuthArrayInput is an input type that accepts ProviderRegistryAuthArray and ProviderRegistryAuthArrayOutput values. +// You can construct a concrete instance of `ProviderRegistryAuthArrayInput` via: +// +// ProviderRegistryAuthArray{ ProviderRegistryAuthArgs{...} } +type ProviderRegistryAuthArrayInput interface { + pulumi.Input + + ToProviderRegistryAuthArrayOutput() ProviderRegistryAuthArrayOutput + ToProviderRegistryAuthArrayOutputWithContext(context.Context) ProviderRegistryAuthArrayOutput +} + +type ProviderRegistryAuthArray []ProviderRegistryAuthInput + +func (ProviderRegistryAuthArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProviderRegistryAuth)(nil)).Elem() +} + +func (i ProviderRegistryAuthArray) ToProviderRegistryAuthArrayOutput() ProviderRegistryAuthArrayOutput { + return i.ToProviderRegistryAuthArrayOutputWithContext(context.Background()) +} + +func (i ProviderRegistryAuthArray) ToProviderRegistryAuthArrayOutputWithContext(ctx context.Context) ProviderRegistryAuthArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ProviderRegistryAuthArrayOutput) +} + +func (i ProviderRegistryAuthArray) ToOutput(ctx context.Context) pulumix.Output[[]ProviderRegistryAuth] { + return pulumix.Output[[]ProviderRegistryAuth]{ + OutputState: i.ToProviderRegistryAuthArrayOutputWithContext(ctx).OutputState, + } +} + +type ProviderRegistryAuthOutput struct{ *pulumi.OutputState } + +func (ProviderRegistryAuthOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ProviderRegistryAuth)(nil)).Elem() +} + +func (o ProviderRegistryAuthOutput) ToProviderRegistryAuthOutput() ProviderRegistryAuthOutput { + return o +} + +func (o ProviderRegistryAuthOutput) ToProviderRegistryAuthOutputWithContext(ctx context.Context) ProviderRegistryAuthOutput { + return o +} + +func (o ProviderRegistryAuthOutput) ToOutput(ctx context.Context) pulumix.Output[ProviderRegistryAuth] { + return pulumix.Output[ProviderRegistryAuth]{ + OutputState: o.OutputState, + } +} + +func (o ProviderRegistryAuthOutput) Address() pulumi.StringOutput { + return o.ApplyT(func(v ProviderRegistryAuth) string { return v.Address }).(pulumi.StringOutput) +} + +func (o ProviderRegistryAuthOutput) AuthDisabled() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ProviderRegistryAuth) *bool { return v.AuthDisabled }).(pulumi.BoolPtrOutput) +} + +func (o ProviderRegistryAuthOutput) ConfigFile() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRegistryAuth) *string { return v.ConfigFile }).(pulumi.StringPtrOutput) +} + +func (o ProviderRegistryAuthOutput) ConfigFileContent() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRegistryAuth) *string { return v.ConfigFileContent }).(pulumi.StringPtrOutput) +} + +func (o ProviderRegistryAuthOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRegistryAuth) *string { return v.Password }).(pulumi.StringPtrOutput) +} + +func (o ProviderRegistryAuthOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v ProviderRegistryAuth) *string { return v.Username }).(pulumi.StringPtrOutput) +} + +type ProviderRegistryAuthArrayOutput struct{ *pulumi.OutputState } + +func (ProviderRegistryAuthArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ProviderRegistryAuth)(nil)).Elem() +} + +func (o ProviderRegistryAuthArrayOutput) ToProviderRegistryAuthArrayOutput() ProviderRegistryAuthArrayOutput { + return o +} + +func (o ProviderRegistryAuthArrayOutput) ToProviderRegistryAuthArrayOutputWithContext(ctx context.Context) ProviderRegistryAuthArrayOutput { + return o +} + +func (o ProviderRegistryAuthArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ProviderRegistryAuth] { + return pulumix.Output[[]ProviderRegistryAuth]{ + OutputState: o.OutputState, + } +} + +func (o ProviderRegistryAuthArrayOutput) Index(i pulumi.IntInput) ProviderRegistryAuthOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ProviderRegistryAuth { + return vs[0].([]ProviderRegistryAuth)[vs[1].(int)] + }).(ProviderRegistryAuthOutput) +} + +type RemoteImageBuild struct { + // The configuration for the authentication + AuthConfigs []RemoteImageBuildAuthConfig `pulumi:"authConfigs"` + // Set build-time variables + BuildArg map[string]string `pulumi:"buildArg"` + // Pairs for build-time variables in the form TODO + BuildArgs map[string]string `pulumi:"buildArgs"` + // BuildID is an optional identifier that can be passed together with the build request. The same identifier can be used to gracefully cancel the build with the cancel request. + BuildId *string `pulumi:"buildId"` + // Images to consider as cache sources + CacheFroms []string `pulumi:"cacheFroms"` + // Optional parent cgroup for the container + CgroupParent *string `pulumi:"cgroupParent"` + // Value to specify the build context. Currently, only a `PATH` context is supported. You can use the helper function '${path.cwd}/context-dir'. Please see https://docs.docker.com/build/building/context/ for more information about build contexts. + Context string `pulumi:"context"` + // The length of a CPU period in microseconds + CpuPeriod *int `pulumi:"cpuPeriod"` + // Microseconds of CPU time that the container can get in a CPU period + CpuQuota *int `pulumi:"cpuQuota"` + // CPUs in which to allow execution (e.g., `0-3`, `0`, `1`) + CpuSetCpus *string `pulumi:"cpuSetCpus"` + // MEMs in which to allow execution (`0-3`, `0`, `1`) + CpuSetMems *string `pulumi:"cpuSetMems"` + // CPU shares (relative weight) + CpuShares *int `pulumi:"cpuShares"` + // Name of the Dockerfile. Defaults to `Dockerfile`. + Dockerfile *string `pulumi:"dockerfile"` + // A list of hostnames/IP mappings to add to the container’s /etc/hosts file. Specified in the form ["hostname:IP"] + ExtraHosts []string `pulumi:"extraHosts"` + // Always remove intermediate containers + ForceRemove *bool `pulumi:"forceRemove"` + // Isolation represents the isolation technology of a container. The supported values are + Isolation *string `pulumi:"isolation"` + // Set metadata for an image + Label map[string]string `pulumi:"label"` + // User-defined key/value metadata + Labels map[string]string `pulumi:"labels"` + // Set memory limit for build + Memory *int `pulumi:"memory"` + // Total memory (memory + swap), -1 to enable unlimited swap + MemorySwap *int `pulumi:"memorySwap"` + // Set the networking mode for the RUN instructions during build + NetworkMode *string `pulumi:"networkMode"` + // Do not use the cache when building the image + NoCache *bool `pulumi:"noCache"` + // Set platform if server is multi-platform capable + Platform *string `pulumi:"platform"` + // Attempt to pull the image even if an older image exists locally + PullParent *bool `pulumi:"pullParent"` + // A Git repository URI or HTTP/HTTPS context URI + RemoteContext *string `pulumi:"remoteContext"` + // Remove intermediate containers after a successful build. Defaults to `true`. + Remove *bool `pulumi:"remove"` + // The security options + SecurityOpts []string `pulumi:"securityOpts"` + // Set an ID for the build session + SessionId *string `pulumi:"sessionId"` + // Size of /dev/shm in bytes. The size must be greater than 0 + ShmSize *int `pulumi:"shmSize"` + // If true the new layers are squashed into a new image with a single new layer + Squash *bool `pulumi:"squash"` + // Suppress the build output and print image ID on success + SuppressOutput *bool `pulumi:"suppressOutput"` + // Name and optionally a tag in the 'name:tag' format + Tags []string `pulumi:"tags"` + // Set the target build stage to build + Target *string `pulumi:"target"` + // Configuration for ulimits + Ulimits []RemoteImageBuildUlimit `pulumi:"ulimits"` + // Version of the underlying builder to use + Version *string `pulumi:"version"` +} + +// RemoteImageBuildInput is an input type that accepts RemoteImageBuildArgs and RemoteImageBuildOutput values. +// You can construct a concrete instance of `RemoteImageBuildInput` via: +// +// RemoteImageBuildArgs{...} +type RemoteImageBuildInput interface { + pulumi.Input + + ToRemoteImageBuildOutput() RemoteImageBuildOutput + ToRemoteImageBuildOutputWithContext(context.Context) RemoteImageBuildOutput +} + +type RemoteImageBuildArgs struct { + // The configuration for the authentication + AuthConfigs RemoteImageBuildAuthConfigArrayInput `pulumi:"authConfigs"` + // Set build-time variables + BuildArg pulumi.StringMapInput `pulumi:"buildArg"` + // Pairs for build-time variables in the form TODO + BuildArgs pulumi.StringMapInput `pulumi:"buildArgs"` + // BuildID is an optional identifier that can be passed together with the build request. The same identifier can be used to gracefully cancel the build with the cancel request. + BuildId pulumi.StringPtrInput `pulumi:"buildId"` + // Images to consider as cache sources + CacheFroms pulumi.StringArrayInput `pulumi:"cacheFroms"` + // Optional parent cgroup for the container + CgroupParent pulumi.StringPtrInput `pulumi:"cgroupParent"` + // Value to specify the build context. Currently, only a `PATH` context is supported. You can use the helper function '${path.cwd}/context-dir'. Please see https://docs.docker.com/build/building/context/ for more information about build contexts. + Context pulumi.StringInput `pulumi:"context"` + // The length of a CPU period in microseconds + CpuPeriod pulumi.IntPtrInput `pulumi:"cpuPeriod"` + // Microseconds of CPU time that the container can get in a CPU period + CpuQuota pulumi.IntPtrInput `pulumi:"cpuQuota"` + // CPUs in which to allow execution (e.g., `0-3`, `0`, `1`) + CpuSetCpus pulumi.StringPtrInput `pulumi:"cpuSetCpus"` + // MEMs in which to allow execution (`0-3`, `0`, `1`) + CpuSetMems pulumi.StringPtrInput `pulumi:"cpuSetMems"` + // CPU shares (relative weight) + CpuShares pulumi.IntPtrInput `pulumi:"cpuShares"` + // Name of the Dockerfile. Defaults to `Dockerfile`. + Dockerfile pulumi.StringPtrInput `pulumi:"dockerfile"` + // A list of hostnames/IP mappings to add to the container’s /etc/hosts file. Specified in the form ["hostname:IP"] + ExtraHosts pulumi.StringArrayInput `pulumi:"extraHosts"` + // Always remove intermediate containers + ForceRemove pulumi.BoolPtrInput `pulumi:"forceRemove"` + // Isolation represents the isolation technology of a container. The supported values are + Isolation pulumi.StringPtrInput `pulumi:"isolation"` + // Set metadata for an image + Label pulumi.StringMapInput `pulumi:"label"` + // User-defined key/value metadata + Labels pulumi.StringMapInput `pulumi:"labels"` + // Set memory limit for build + Memory pulumi.IntPtrInput `pulumi:"memory"` + // Total memory (memory + swap), -1 to enable unlimited swap + MemorySwap pulumi.IntPtrInput `pulumi:"memorySwap"` + // Set the networking mode for the RUN instructions during build + NetworkMode pulumi.StringPtrInput `pulumi:"networkMode"` + // Do not use the cache when building the image + NoCache pulumi.BoolPtrInput `pulumi:"noCache"` + // Set platform if server is multi-platform capable + Platform pulumi.StringPtrInput `pulumi:"platform"` + // Attempt to pull the image even if an older image exists locally + PullParent pulumi.BoolPtrInput `pulumi:"pullParent"` + // A Git repository URI or HTTP/HTTPS context URI + RemoteContext pulumi.StringPtrInput `pulumi:"remoteContext"` + // Remove intermediate containers after a successful build. Defaults to `true`. + Remove pulumi.BoolPtrInput `pulumi:"remove"` + // The security options + SecurityOpts pulumi.StringArrayInput `pulumi:"securityOpts"` + // Set an ID for the build session + SessionId pulumi.StringPtrInput `pulumi:"sessionId"` + // Size of /dev/shm in bytes. The size must be greater than 0 + ShmSize pulumi.IntPtrInput `pulumi:"shmSize"` + // If true the new layers are squashed into a new image with a single new layer + Squash pulumi.BoolPtrInput `pulumi:"squash"` + // Suppress the build output and print image ID on success + SuppressOutput pulumi.BoolPtrInput `pulumi:"suppressOutput"` + // Name and optionally a tag in the 'name:tag' format + Tags pulumi.StringArrayInput `pulumi:"tags"` + // Set the target build stage to build + Target pulumi.StringPtrInput `pulumi:"target"` + // Configuration for ulimits + Ulimits RemoteImageBuildUlimitArrayInput `pulumi:"ulimits"` + // Version of the underlying builder to use + Version pulumi.StringPtrInput `pulumi:"version"` +} + +func (RemoteImageBuildArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RemoteImageBuild)(nil)).Elem() +} + +func (i RemoteImageBuildArgs) ToRemoteImageBuildOutput() RemoteImageBuildOutput { + return i.ToRemoteImageBuildOutputWithContext(context.Background()) +} + +func (i RemoteImageBuildArgs) ToRemoteImageBuildOutputWithContext(ctx context.Context) RemoteImageBuildOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageBuildOutput) +} + +func (i RemoteImageBuildArgs) ToOutput(ctx context.Context) pulumix.Output[RemoteImageBuild] { + return pulumix.Output[RemoteImageBuild]{ + OutputState: i.ToRemoteImageBuildOutputWithContext(ctx).OutputState, + } +} + +func (i RemoteImageBuildArgs) ToRemoteImageBuildPtrOutput() RemoteImageBuildPtrOutput { + return i.ToRemoteImageBuildPtrOutputWithContext(context.Background()) +} + +func (i RemoteImageBuildArgs) ToRemoteImageBuildPtrOutputWithContext(ctx context.Context) RemoteImageBuildPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageBuildOutput).ToRemoteImageBuildPtrOutputWithContext(ctx) +} + +// RemoteImageBuildPtrInput is an input type that accepts RemoteImageBuildArgs, RemoteImageBuildPtr and RemoteImageBuildPtrOutput values. +// You can construct a concrete instance of `RemoteImageBuildPtrInput` via: +// +// RemoteImageBuildArgs{...} +// +// or: +// +// nil +type RemoteImageBuildPtrInput interface { + pulumi.Input + + ToRemoteImageBuildPtrOutput() RemoteImageBuildPtrOutput + ToRemoteImageBuildPtrOutputWithContext(context.Context) RemoteImageBuildPtrOutput +} + +type remoteImageBuildPtrType RemoteImageBuildArgs + +func RemoteImageBuildPtr(v *RemoteImageBuildArgs) RemoteImageBuildPtrInput { + return (*remoteImageBuildPtrType)(v) +} + +func (*remoteImageBuildPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**RemoteImageBuild)(nil)).Elem() +} + +func (i *remoteImageBuildPtrType) ToRemoteImageBuildPtrOutput() RemoteImageBuildPtrOutput { + return i.ToRemoteImageBuildPtrOutputWithContext(context.Background()) +} + +func (i *remoteImageBuildPtrType) ToRemoteImageBuildPtrOutputWithContext(ctx context.Context) RemoteImageBuildPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageBuildPtrOutput) +} + +func (i *remoteImageBuildPtrType) ToOutput(ctx context.Context) pulumix.Output[*RemoteImageBuild] { + return pulumix.Output[*RemoteImageBuild]{ + OutputState: i.ToRemoteImageBuildPtrOutputWithContext(ctx).OutputState, + } +} + +type RemoteImageBuildOutput struct{ *pulumi.OutputState } + +func (RemoteImageBuildOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RemoteImageBuild)(nil)).Elem() +} + +func (o RemoteImageBuildOutput) ToRemoteImageBuildOutput() RemoteImageBuildOutput { + return o +} + +func (o RemoteImageBuildOutput) ToRemoteImageBuildOutputWithContext(ctx context.Context) RemoteImageBuildOutput { + return o +} + +func (o RemoteImageBuildOutput) ToRemoteImageBuildPtrOutput() RemoteImageBuildPtrOutput { + return o.ToRemoteImageBuildPtrOutputWithContext(context.Background()) +} + +func (o RemoteImageBuildOutput) ToRemoteImageBuildPtrOutputWithContext(ctx context.Context) RemoteImageBuildPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v RemoteImageBuild) *RemoteImageBuild { + return &v + }).(RemoteImageBuildPtrOutput) +} + +func (o RemoteImageBuildOutput) ToOutput(ctx context.Context) pulumix.Output[RemoteImageBuild] { + return pulumix.Output[RemoteImageBuild]{ + OutputState: o.OutputState, + } +} + +// The configuration for the authentication +func (o RemoteImageBuildOutput) AuthConfigs() RemoteImageBuildAuthConfigArrayOutput { + return o.ApplyT(func(v RemoteImageBuild) []RemoteImageBuildAuthConfig { return v.AuthConfigs }).(RemoteImageBuildAuthConfigArrayOutput) +} + +// Set build-time variables +func (o RemoteImageBuildOutput) BuildArg() pulumi.StringMapOutput { + return o.ApplyT(func(v RemoteImageBuild) map[string]string { return v.BuildArg }).(pulumi.StringMapOutput) +} + +// Pairs for build-time variables in the form TODO +func (o RemoteImageBuildOutput) BuildArgs() pulumi.StringMapOutput { + return o.ApplyT(func(v RemoteImageBuild) map[string]string { return v.BuildArgs }).(pulumi.StringMapOutput) +} + +// BuildID is an optional identifier that can be passed together with the build request. The same identifier can be used to gracefully cancel the build with the cancel request. +func (o RemoteImageBuildOutput) BuildId() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.BuildId }).(pulumi.StringPtrOutput) +} + +// Images to consider as cache sources +func (o RemoteImageBuildOutput) CacheFroms() pulumi.StringArrayOutput { + return o.ApplyT(func(v RemoteImageBuild) []string { return v.CacheFroms }).(pulumi.StringArrayOutput) +} + +// Optional parent cgroup for the container +func (o RemoteImageBuildOutput) CgroupParent() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.CgroupParent }).(pulumi.StringPtrOutput) +} + +// Value to specify the build context. Currently, only a `PATH` context is supported. You can use the helper function '${path.cwd}/context-dir'. Please see https://docs.docker.com/build/building/context/ for more information about build contexts. +func (o RemoteImageBuildOutput) Context() pulumi.StringOutput { + return o.ApplyT(func(v RemoteImageBuild) string { return v.Context }).(pulumi.StringOutput) +} + +// The length of a CPU period in microseconds +func (o RemoteImageBuildOutput) CpuPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *int { return v.CpuPeriod }).(pulumi.IntPtrOutput) +} + +// Microseconds of CPU time that the container can get in a CPU period +func (o RemoteImageBuildOutput) CpuQuota() pulumi.IntPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *int { return v.CpuQuota }).(pulumi.IntPtrOutput) +} + +// CPUs in which to allow execution (e.g., `0-3`, `0`, `1`) +func (o RemoteImageBuildOutput) CpuSetCpus() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.CpuSetCpus }).(pulumi.StringPtrOutput) +} + +// MEMs in which to allow execution (`0-3`, `0`, `1`) +func (o RemoteImageBuildOutput) CpuSetMems() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.CpuSetMems }).(pulumi.StringPtrOutput) +} + +// CPU shares (relative weight) +func (o RemoteImageBuildOutput) CpuShares() pulumi.IntPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *int { return v.CpuShares }).(pulumi.IntPtrOutput) +} + +// Name of the Dockerfile. Defaults to `Dockerfile`. +func (o RemoteImageBuildOutput) Dockerfile() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.Dockerfile }).(pulumi.StringPtrOutput) +} + +// A list of hostnames/IP mappings to add to the container’s /etc/hosts file. Specified in the form ["hostname:IP"] +func (o RemoteImageBuildOutput) ExtraHosts() pulumi.StringArrayOutput { + return o.ApplyT(func(v RemoteImageBuild) []string { return v.ExtraHosts }).(pulumi.StringArrayOutput) +} + +// Always remove intermediate containers +func (o RemoteImageBuildOutput) ForceRemove() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *bool { return v.ForceRemove }).(pulumi.BoolPtrOutput) +} + +// Isolation represents the isolation technology of a container. The supported values are +func (o RemoteImageBuildOutput) Isolation() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.Isolation }).(pulumi.StringPtrOutput) +} + +// Set metadata for an image +func (o RemoteImageBuildOutput) Label() pulumi.StringMapOutput { + return o.ApplyT(func(v RemoteImageBuild) map[string]string { return v.Label }).(pulumi.StringMapOutput) +} + +// User-defined key/value metadata +func (o RemoteImageBuildOutput) Labels() pulumi.StringMapOutput { + return o.ApplyT(func(v RemoteImageBuild) map[string]string { return v.Labels }).(pulumi.StringMapOutput) +} + +// Set memory limit for build +func (o RemoteImageBuildOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *int { return v.Memory }).(pulumi.IntPtrOutput) +} + +// Total memory (memory + swap), -1 to enable unlimited swap +func (o RemoteImageBuildOutput) MemorySwap() pulumi.IntPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *int { return v.MemorySwap }).(pulumi.IntPtrOutput) +} + +// Set the networking mode for the RUN instructions during build +func (o RemoteImageBuildOutput) NetworkMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.NetworkMode }).(pulumi.StringPtrOutput) +} + +// Do not use the cache when building the image +func (o RemoteImageBuildOutput) NoCache() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *bool { return v.NoCache }).(pulumi.BoolPtrOutput) +} + +// Set platform if server is multi-platform capable +func (o RemoteImageBuildOutput) Platform() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.Platform }).(pulumi.StringPtrOutput) +} + +// Attempt to pull the image even if an older image exists locally +func (o RemoteImageBuildOutput) PullParent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *bool { return v.PullParent }).(pulumi.BoolPtrOutput) +} + +// A Git repository URI or HTTP/HTTPS context URI +func (o RemoteImageBuildOutput) RemoteContext() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.RemoteContext }).(pulumi.StringPtrOutput) +} + +// Remove intermediate containers after a successful build. Defaults to `true`. +func (o RemoteImageBuildOutput) Remove() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *bool { return v.Remove }).(pulumi.BoolPtrOutput) +} + +// The security options +func (o RemoteImageBuildOutput) SecurityOpts() pulumi.StringArrayOutput { + return o.ApplyT(func(v RemoteImageBuild) []string { return v.SecurityOpts }).(pulumi.StringArrayOutput) +} + +// Set an ID for the build session +func (o RemoteImageBuildOutput) SessionId() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.SessionId }).(pulumi.StringPtrOutput) +} + +// Size of /dev/shm in bytes. The size must be greater than 0 +func (o RemoteImageBuildOutput) ShmSize() pulumi.IntPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *int { return v.ShmSize }).(pulumi.IntPtrOutput) +} + +// If true the new layers are squashed into a new image with a single new layer +func (o RemoteImageBuildOutput) Squash() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *bool { return v.Squash }).(pulumi.BoolPtrOutput) +} + +// Suppress the build output and print image ID on success +func (o RemoteImageBuildOutput) SuppressOutput() pulumi.BoolPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *bool { return v.SuppressOutput }).(pulumi.BoolPtrOutput) +} + +// Name and optionally a tag in the 'name:tag' format +func (o RemoteImageBuildOutput) Tags() pulumi.StringArrayOutput { + return o.ApplyT(func(v RemoteImageBuild) []string { return v.Tags }).(pulumi.StringArrayOutput) +} + +// Set the target build stage to build +func (o RemoteImageBuildOutput) Target() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.Target }).(pulumi.StringPtrOutput) +} + +// Configuration for ulimits +func (o RemoteImageBuildOutput) Ulimits() RemoteImageBuildUlimitArrayOutput { + return o.ApplyT(func(v RemoteImageBuild) []RemoteImageBuildUlimit { return v.Ulimits }).(RemoteImageBuildUlimitArrayOutput) +} + +// Version of the underlying builder to use +func (o RemoteImageBuildOutput) Version() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuild) *string { return v.Version }).(pulumi.StringPtrOutput) +} + +type RemoteImageBuildPtrOutput struct{ *pulumi.OutputState } + +func (RemoteImageBuildPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RemoteImageBuild)(nil)).Elem() +} + +func (o RemoteImageBuildPtrOutput) ToRemoteImageBuildPtrOutput() RemoteImageBuildPtrOutput { + return o +} + +func (o RemoteImageBuildPtrOutput) ToRemoteImageBuildPtrOutputWithContext(ctx context.Context) RemoteImageBuildPtrOutput { + return o +} + +func (o RemoteImageBuildPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*RemoteImageBuild] { + return pulumix.Output[*RemoteImageBuild]{ + OutputState: o.OutputState, + } +} + +func (o RemoteImageBuildPtrOutput) Elem() RemoteImageBuildOutput { + return o.ApplyT(func(v *RemoteImageBuild) RemoteImageBuild { + if v != nil { + return *v + } + var ret RemoteImageBuild + return ret + }).(RemoteImageBuildOutput) +} + +// The configuration for the authentication +func (o RemoteImageBuildPtrOutput) AuthConfigs() RemoteImageBuildAuthConfigArrayOutput { + return o.ApplyT(func(v *RemoteImageBuild) []RemoteImageBuildAuthConfig { + if v == nil { + return nil + } + return v.AuthConfigs + }).(RemoteImageBuildAuthConfigArrayOutput) +} + +// Set build-time variables +func (o RemoteImageBuildPtrOutput) BuildArg() pulumi.StringMapOutput { + return o.ApplyT(func(v *RemoteImageBuild) map[string]string { + if v == nil { + return nil + } + return v.BuildArg + }).(pulumi.StringMapOutput) +} + +// Pairs for build-time variables in the form TODO +func (o RemoteImageBuildPtrOutput) BuildArgs() pulumi.StringMapOutput { + return o.ApplyT(func(v *RemoteImageBuild) map[string]string { + if v == nil { + return nil + } + return v.BuildArgs + }).(pulumi.StringMapOutput) +} + +// BuildID is an optional identifier that can be passed together with the build request. The same identifier can be used to gracefully cancel the build with the cancel request. +func (o RemoteImageBuildPtrOutput) BuildId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.BuildId + }).(pulumi.StringPtrOutput) +} + +// Images to consider as cache sources +func (o RemoteImageBuildPtrOutput) CacheFroms() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RemoteImageBuild) []string { + if v == nil { + return nil + } + return v.CacheFroms + }).(pulumi.StringArrayOutput) +} + +// Optional parent cgroup for the container +func (o RemoteImageBuildPtrOutput) CgroupParent() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.CgroupParent + }).(pulumi.StringPtrOutput) +} + +// Value to specify the build context. Currently, only a `PATH` context is supported. You can use the helper function '${path.cwd}/context-dir'. Please see https://docs.docker.com/build/building/context/ for more information about build contexts. +func (o RemoteImageBuildPtrOutput) Context() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return &v.Context + }).(pulumi.StringPtrOutput) +} + +// The length of a CPU period in microseconds +func (o RemoteImageBuildPtrOutput) CpuPeriod() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *int { + if v == nil { + return nil + } + return v.CpuPeriod + }).(pulumi.IntPtrOutput) +} + +// Microseconds of CPU time that the container can get in a CPU period +func (o RemoteImageBuildPtrOutput) CpuQuota() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *int { + if v == nil { + return nil + } + return v.CpuQuota + }).(pulumi.IntPtrOutput) +} + +// CPUs in which to allow execution (e.g., `0-3`, `0`, `1`) +func (o RemoteImageBuildPtrOutput) CpuSetCpus() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.CpuSetCpus + }).(pulumi.StringPtrOutput) +} + +// MEMs in which to allow execution (`0-3`, `0`, `1`) +func (o RemoteImageBuildPtrOutput) CpuSetMems() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.CpuSetMems + }).(pulumi.StringPtrOutput) +} + +// CPU shares (relative weight) +func (o RemoteImageBuildPtrOutput) CpuShares() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *int { + if v == nil { + return nil + } + return v.CpuShares + }).(pulumi.IntPtrOutput) +} + +// Name of the Dockerfile. Defaults to `Dockerfile`. +func (o RemoteImageBuildPtrOutput) Dockerfile() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.Dockerfile + }).(pulumi.StringPtrOutput) +} + +// A list of hostnames/IP mappings to add to the container’s /etc/hosts file. Specified in the form ["hostname:IP"] +func (o RemoteImageBuildPtrOutput) ExtraHosts() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RemoteImageBuild) []string { + if v == nil { + return nil + } + return v.ExtraHosts + }).(pulumi.StringArrayOutput) +} + +// Always remove intermediate containers +func (o RemoteImageBuildPtrOutput) ForceRemove() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *bool { + if v == nil { + return nil + } + return v.ForceRemove + }).(pulumi.BoolPtrOutput) +} + +// Isolation represents the isolation technology of a container. The supported values are +func (o RemoteImageBuildPtrOutput) Isolation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.Isolation + }).(pulumi.StringPtrOutput) +} + +// Set metadata for an image +func (o RemoteImageBuildPtrOutput) Label() pulumi.StringMapOutput { + return o.ApplyT(func(v *RemoteImageBuild) map[string]string { + if v == nil { + return nil + } + return v.Label + }).(pulumi.StringMapOutput) +} + +// User-defined key/value metadata +func (o RemoteImageBuildPtrOutput) Labels() pulumi.StringMapOutput { + return o.ApplyT(func(v *RemoteImageBuild) map[string]string { + if v == nil { + return nil + } + return v.Labels + }).(pulumi.StringMapOutput) +} + +// Set memory limit for build +func (o RemoteImageBuildPtrOutput) Memory() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *int { + if v == nil { + return nil + } + return v.Memory + }).(pulumi.IntPtrOutput) +} + +// Total memory (memory + swap), -1 to enable unlimited swap +func (o RemoteImageBuildPtrOutput) MemorySwap() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *int { + if v == nil { + return nil + } + return v.MemorySwap + }).(pulumi.IntPtrOutput) +} + +// Set the networking mode for the RUN instructions during build +func (o RemoteImageBuildPtrOutput) NetworkMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.NetworkMode + }).(pulumi.StringPtrOutput) +} + +// Do not use the cache when building the image +func (o RemoteImageBuildPtrOutput) NoCache() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *bool { + if v == nil { + return nil + } + return v.NoCache + }).(pulumi.BoolPtrOutput) +} + +// Set platform if server is multi-platform capable +func (o RemoteImageBuildPtrOutput) Platform() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.Platform + }).(pulumi.StringPtrOutput) +} + +// Attempt to pull the image even if an older image exists locally +func (o RemoteImageBuildPtrOutput) PullParent() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *bool { + if v == nil { + return nil + } + return v.PullParent + }).(pulumi.BoolPtrOutput) +} + +// A Git repository URI or HTTP/HTTPS context URI +func (o RemoteImageBuildPtrOutput) RemoteContext() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.RemoteContext + }).(pulumi.StringPtrOutput) +} + +// Remove intermediate containers after a successful build. Defaults to `true`. +func (o RemoteImageBuildPtrOutput) Remove() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *bool { + if v == nil { + return nil + } + return v.Remove + }).(pulumi.BoolPtrOutput) +} + +// The security options +func (o RemoteImageBuildPtrOutput) SecurityOpts() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RemoteImageBuild) []string { + if v == nil { + return nil + } + return v.SecurityOpts + }).(pulumi.StringArrayOutput) +} + +// Set an ID for the build session +func (o RemoteImageBuildPtrOutput) SessionId() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.SessionId + }).(pulumi.StringPtrOutput) +} + +// Size of /dev/shm in bytes. The size must be greater than 0 +func (o RemoteImageBuildPtrOutput) ShmSize() pulumi.IntPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *int { + if v == nil { + return nil + } + return v.ShmSize + }).(pulumi.IntPtrOutput) +} + +// If true the new layers are squashed into a new image with a single new layer +func (o RemoteImageBuildPtrOutput) Squash() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *bool { + if v == nil { + return nil + } + return v.Squash + }).(pulumi.BoolPtrOutput) +} + +// Suppress the build output and print image ID on success +func (o RemoteImageBuildPtrOutput) SuppressOutput() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *bool { + if v == nil { + return nil + } + return v.SuppressOutput + }).(pulumi.BoolPtrOutput) +} + +// Name and optionally a tag in the 'name:tag' format +func (o RemoteImageBuildPtrOutput) Tags() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RemoteImageBuild) []string { + if v == nil { + return nil + } + return v.Tags + }).(pulumi.StringArrayOutput) +} + +// Set the target build stage to build +func (o RemoteImageBuildPtrOutput) Target() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.Target + }).(pulumi.StringPtrOutput) +} + +// Configuration for ulimits +func (o RemoteImageBuildPtrOutput) Ulimits() RemoteImageBuildUlimitArrayOutput { + return o.ApplyT(func(v *RemoteImageBuild) []RemoteImageBuildUlimit { + if v == nil { + return nil + } + return v.Ulimits + }).(RemoteImageBuildUlimitArrayOutput) +} + +// Version of the underlying builder to use +func (o RemoteImageBuildPtrOutput) Version() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImageBuild) *string { + if v == nil { + return nil + } + return v.Version + }).(pulumi.StringPtrOutput) +} + +type RemoteImageBuildAuthConfig struct { + Auth *string `pulumi:"auth"` + Email *string `pulumi:"email"` + HostName string `pulumi:"hostName"` + IdentityToken *string `pulumi:"identityToken"` + Password *string `pulumi:"password"` + RegistryToken *string `pulumi:"registryToken"` + ServerAddress *string `pulumi:"serverAddress"` + UserName *string `pulumi:"userName"` +} + +// RemoteImageBuildAuthConfigInput is an input type that accepts RemoteImageBuildAuthConfigArgs and RemoteImageBuildAuthConfigOutput values. +// You can construct a concrete instance of `RemoteImageBuildAuthConfigInput` via: +// +// RemoteImageBuildAuthConfigArgs{...} +type RemoteImageBuildAuthConfigInput interface { + pulumi.Input + + ToRemoteImageBuildAuthConfigOutput() RemoteImageBuildAuthConfigOutput + ToRemoteImageBuildAuthConfigOutputWithContext(context.Context) RemoteImageBuildAuthConfigOutput +} + +type RemoteImageBuildAuthConfigArgs struct { + Auth pulumi.StringPtrInput `pulumi:"auth"` + Email pulumi.StringPtrInput `pulumi:"email"` + HostName pulumi.StringInput `pulumi:"hostName"` + IdentityToken pulumi.StringPtrInput `pulumi:"identityToken"` + Password pulumi.StringPtrInput `pulumi:"password"` + RegistryToken pulumi.StringPtrInput `pulumi:"registryToken"` + ServerAddress pulumi.StringPtrInput `pulumi:"serverAddress"` + UserName pulumi.StringPtrInput `pulumi:"userName"` +} + +func (RemoteImageBuildAuthConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RemoteImageBuildAuthConfig)(nil)).Elem() +} + +func (i RemoteImageBuildAuthConfigArgs) ToRemoteImageBuildAuthConfigOutput() RemoteImageBuildAuthConfigOutput { + return i.ToRemoteImageBuildAuthConfigOutputWithContext(context.Background()) +} + +func (i RemoteImageBuildAuthConfigArgs) ToRemoteImageBuildAuthConfigOutputWithContext(ctx context.Context) RemoteImageBuildAuthConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageBuildAuthConfigOutput) +} + +func (i RemoteImageBuildAuthConfigArgs) ToOutput(ctx context.Context) pulumix.Output[RemoteImageBuildAuthConfig] { + return pulumix.Output[RemoteImageBuildAuthConfig]{ + OutputState: i.ToRemoteImageBuildAuthConfigOutputWithContext(ctx).OutputState, + } +} + +// RemoteImageBuildAuthConfigArrayInput is an input type that accepts RemoteImageBuildAuthConfigArray and RemoteImageBuildAuthConfigArrayOutput values. +// You can construct a concrete instance of `RemoteImageBuildAuthConfigArrayInput` via: +// +// RemoteImageBuildAuthConfigArray{ RemoteImageBuildAuthConfigArgs{...} } +type RemoteImageBuildAuthConfigArrayInput interface { + pulumi.Input + + ToRemoteImageBuildAuthConfigArrayOutput() RemoteImageBuildAuthConfigArrayOutput + ToRemoteImageBuildAuthConfigArrayOutputWithContext(context.Context) RemoteImageBuildAuthConfigArrayOutput +} + +type RemoteImageBuildAuthConfigArray []RemoteImageBuildAuthConfigInput + +func (RemoteImageBuildAuthConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]RemoteImageBuildAuthConfig)(nil)).Elem() +} + +func (i RemoteImageBuildAuthConfigArray) ToRemoteImageBuildAuthConfigArrayOutput() RemoteImageBuildAuthConfigArrayOutput { + return i.ToRemoteImageBuildAuthConfigArrayOutputWithContext(context.Background()) +} + +func (i RemoteImageBuildAuthConfigArray) ToRemoteImageBuildAuthConfigArrayOutputWithContext(ctx context.Context) RemoteImageBuildAuthConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageBuildAuthConfigArrayOutput) +} + +func (i RemoteImageBuildAuthConfigArray) ToOutput(ctx context.Context) pulumix.Output[[]RemoteImageBuildAuthConfig] { + return pulumix.Output[[]RemoteImageBuildAuthConfig]{ + OutputState: i.ToRemoteImageBuildAuthConfigArrayOutputWithContext(ctx).OutputState, + } +} + +type RemoteImageBuildAuthConfigOutput struct{ *pulumi.OutputState } + +func (RemoteImageBuildAuthConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RemoteImageBuildAuthConfig)(nil)).Elem() +} + +func (o RemoteImageBuildAuthConfigOutput) ToRemoteImageBuildAuthConfigOutput() RemoteImageBuildAuthConfigOutput { + return o +} + +func (o RemoteImageBuildAuthConfigOutput) ToRemoteImageBuildAuthConfigOutputWithContext(ctx context.Context) RemoteImageBuildAuthConfigOutput { + return o +} + +func (o RemoteImageBuildAuthConfigOutput) ToOutput(ctx context.Context) pulumix.Output[RemoteImageBuildAuthConfig] { + return pulumix.Output[RemoteImageBuildAuthConfig]{ + OutputState: o.OutputState, + } +} + +func (o RemoteImageBuildAuthConfigOutput) Auth() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) *string { return v.Auth }).(pulumi.StringPtrOutput) +} + +func (o RemoteImageBuildAuthConfigOutput) Email() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) *string { return v.Email }).(pulumi.StringPtrOutput) +} + +func (o RemoteImageBuildAuthConfigOutput) HostName() pulumi.StringOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) string { return v.HostName }).(pulumi.StringOutput) +} + +func (o RemoteImageBuildAuthConfigOutput) IdentityToken() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) *string { return v.IdentityToken }).(pulumi.StringPtrOutput) +} + +func (o RemoteImageBuildAuthConfigOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) *string { return v.Password }).(pulumi.StringPtrOutput) +} + +func (o RemoteImageBuildAuthConfigOutput) RegistryToken() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) *string { return v.RegistryToken }).(pulumi.StringPtrOutput) +} + +func (o RemoteImageBuildAuthConfigOutput) ServerAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) *string { return v.ServerAddress }).(pulumi.StringPtrOutput) +} + +func (o RemoteImageBuildAuthConfigOutput) UserName() pulumi.StringPtrOutput { + return o.ApplyT(func(v RemoteImageBuildAuthConfig) *string { return v.UserName }).(pulumi.StringPtrOutput) +} + +type RemoteImageBuildAuthConfigArrayOutput struct{ *pulumi.OutputState } + +func (RemoteImageBuildAuthConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]RemoteImageBuildAuthConfig)(nil)).Elem() +} + +func (o RemoteImageBuildAuthConfigArrayOutput) ToRemoteImageBuildAuthConfigArrayOutput() RemoteImageBuildAuthConfigArrayOutput { + return o +} + +func (o RemoteImageBuildAuthConfigArrayOutput) ToRemoteImageBuildAuthConfigArrayOutputWithContext(ctx context.Context) RemoteImageBuildAuthConfigArrayOutput { + return o +} + +func (o RemoteImageBuildAuthConfigArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]RemoteImageBuildAuthConfig] { + return pulumix.Output[[]RemoteImageBuildAuthConfig]{ + OutputState: o.OutputState, + } +} + +func (o RemoteImageBuildAuthConfigArrayOutput) Index(i pulumi.IntInput) RemoteImageBuildAuthConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) RemoteImageBuildAuthConfig { + return vs[0].([]RemoteImageBuildAuthConfig)[vs[1].(int)] + }).(RemoteImageBuildAuthConfigOutput) +} + +type RemoteImageBuildUlimit struct { + Hard int `pulumi:"hard"` + // The name of the Docker image, including any tags or SHA256 repo digests. + Name string `pulumi:"name"` + Soft int `pulumi:"soft"` +} + +// RemoteImageBuildUlimitInput is an input type that accepts RemoteImageBuildUlimitArgs and RemoteImageBuildUlimitOutput values. +// You can construct a concrete instance of `RemoteImageBuildUlimitInput` via: +// +// RemoteImageBuildUlimitArgs{...} +type RemoteImageBuildUlimitInput interface { + pulumi.Input + + ToRemoteImageBuildUlimitOutput() RemoteImageBuildUlimitOutput + ToRemoteImageBuildUlimitOutputWithContext(context.Context) RemoteImageBuildUlimitOutput +} + +type RemoteImageBuildUlimitArgs struct { + Hard pulumi.IntInput `pulumi:"hard"` + // The name of the Docker image, including any tags or SHA256 repo digests. + Name pulumi.StringInput `pulumi:"name"` + Soft pulumi.IntInput `pulumi:"soft"` +} + +func (RemoteImageBuildUlimitArgs) ElementType() reflect.Type { + return reflect.TypeOf((*RemoteImageBuildUlimit)(nil)).Elem() +} + +func (i RemoteImageBuildUlimitArgs) ToRemoteImageBuildUlimitOutput() RemoteImageBuildUlimitOutput { + return i.ToRemoteImageBuildUlimitOutputWithContext(context.Background()) +} + +func (i RemoteImageBuildUlimitArgs) ToRemoteImageBuildUlimitOutputWithContext(ctx context.Context) RemoteImageBuildUlimitOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageBuildUlimitOutput) +} + +func (i RemoteImageBuildUlimitArgs) ToOutput(ctx context.Context) pulumix.Output[RemoteImageBuildUlimit] { + return pulumix.Output[RemoteImageBuildUlimit]{ + OutputState: i.ToRemoteImageBuildUlimitOutputWithContext(ctx).OutputState, + } +} + +// RemoteImageBuildUlimitArrayInput is an input type that accepts RemoteImageBuildUlimitArray and RemoteImageBuildUlimitArrayOutput values. +// You can construct a concrete instance of `RemoteImageBuildUlimitArrayInput` via: +// +// RemoteImageBuildUlimitArray{ RemoteImageBuildUlimitArgs{...} } +type RemoteImageBuildUlimitArrayInput interface { + pulumi.Input + + ToRemoteImageBuildUlimitArrayOutput() RemoteImageBuildUlimitArrayOutput + ToRemoteImageBuildUlimitArrayOutputWithContext(context.Context) RemoteImageBuildUlimitArrayOutput +} + +type RemoteImageBuildUlimitArray []RemoteImageBuildUlimitInput + +func (RemoteImageBuildUlimitArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]RemoteImageBuildUlimit)(nil)).Elem() +} + +func (i RemoteImageBuildUlimitArray) ToRemoteImageBuildUlimitArrayOutput() RemoteImageBuildUlimitArrayOutput { + return i.ToRemoteImageBuildUlimitArrayOutputWithContext(context.Background()) +} + +func (i RemoteImageBuildUlimitArray) ToRemoteImageBuildUlimitArrayOutputWithContext(ctx context.Context) RemoteImageBuildUlimitArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageBuildUlimitArrayOutput) +} + +func (i RemoteImageBuildUlimitArray) ToOutput(ctx context.Context) pulumix.Output[[]RemoteImageBuildUlimit] { + return pulumix.Output[[]RemoteImageBuildUlimit]{ + OutputState: i.ToRemoteImageBuildUlimitArrayOutputWithContext(ctx).OutputState, + } +} + +type RemoteImageBuildUlimitOutput struct{ *pulumi.OutputState } + +func (RemoteImageBuildUlimitOutput) ElementType() reflect.Type { + return reflect.TypeOf((*RemoteImageBuildUlimit)(nil)).Elem() +} + +func (o RemoteImageBuildUlimitOutput) ToRemoteImageBuildUlimitOutput() RemoteImageBuildUlimitOutput { + return o +} + +func (o RemoteImageBuildUlimitOutput) ToRemoteImageBuildUlimitOutputWithContext(ctx context.Context) RemoteImageBuildUlimitOutput { + return o +} + +func (o RemoteImageBuildUlimitOutput) ToOutput(ctx context.Context) pulumix.Output[RemoteImageBuildUlimit] { + return pulumix.Output[RemoteImageBuildUlimit]{ + OutputState: o.OutputState, + } +} + +func (o RemoteImageBuildUlimitOutput) Hard() pulumi.IntOutput { + return o.ApplyT(func(v RemoteImageBuildUlimit) int { return v.Hard }).(pulumi.IntOutput) +} + +// The name of the Docker image, including any tags or SHA256 repo digests. +func (o RemoteImageBuildUlimitOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v RemoteImageBuildUlimit) string { return v.Name }).(pulumi.StringOutput) +} + +func (o RemoteImageBuildUlimitOutput) Soft() pulumi.IntOutput { + return o.ApplyT(func(v RemoteImageBuildUlimit) int { return v.Soft }).(pulumi.IntOutput) +} + +type RemoteImageBuildUlimitArrayOutput struct{ *pulumi.OutputState } + +func (RemoteImageBuildUlimitArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]RemoteImageBuildUlimit)(nil)).Elem() +} + +func (o RemoteImageBuildUlimitArrayOutput) ToRemoteImageBuildUlimitArrayOutput() RemoteImageBuildUlimitArrayOutput { + return o +} + +func (o RemoteImageBuildUlimitArrayOutput) ToRemoteImageBuildUlimitArrayOutputWithContext(ctx context.Context) RemoteImageBuildUlimitArrayOutput { + return o +} + +func (o RemoteImageBuildUlimitArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]RemoteImageBuildUlimit] { + return pulumix.Output[[]RemoteImageBuildUlimit]{ + OutputState: o.OutputState, + } +} + +func (o RemoteImageBuildUlimitArrayOutput) Index(i pulumi.IntInput) RemoteImageBuildUlimitOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) RemoteImageBuildUlimit { + return vs[0].([]RemoteImageBuildUlimit)[vs[1].(int)] + }).(RemoteImageBuildUlimitOutput) +} + +type SecretLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// SecretLabelInput is an input type that accepts SecretLabelArgs and SecretLabelOutput values. +// You can construct a concrete instance of `SecretLabelInput` via: +// +// SecretLabelArgs{...} +type SecretLabelInput interface { + pulumi.Input + + ToSecretLabelOutput() SecretLabelOutput + ToSecretLabelOutputWithContext(context.Context) SecretLabelOutput +} + +type SecretLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (SecretLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*SecretLabel)(nil)).Elem() +} + +func (i SecretLabelArgs) ToSecretLabelOutput() SecretLabelOutput { + return i.ToSecretLabelOutputWithContext(context.Background()) +} + +func (i SecretLabelArgs) ToSecretLabelOutputWithContext(ctx context.Context) SecretLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecretLabelOutput) +} + +func (i SecretLabelArgs) ToOutput(ctx context.Context) pulumix.Output[SecretLabel] { + return pulumix.Output[SecretLabel]{ + OutputState: i.ToSecretLabelOutputWithContext(ctx).OutputState, + } +} + +// SecretLabelArrayInput is an input type that accepts SecretLabelArray and SecretLabelArrayOutput values. +// You can construct a concrete instance of `SecretLabelArrayInput` via: +// +// SecretLabelArray{ SecretLabelArgs{...} } +type SecretLabelArrayInput interface { + pulumi.Input + + ToSecretLabelArrayOutput() SecretLabelArrayOutput + ToSecretLabelArrayOutputWithContext(context.Context) SecretLabelArrayOutput +} + +type SecretLabelArray []SecretLabelInput + +func (SecretLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecretLabel)(nil)).Elem() +} + +func (i SecretLabelArray) ToSecretLabelArrayOutput() SecretLabelArrayOutput { + return i.ToSecretLabelArrayOutputWithContext(context.Background()) +} + +func (i SecretLabelArray) ToSecretLabelArrayOutputWithContext(ctx context.Context) SecretLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecretLabelArrayOutput) +} + +func (i SecretLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]SecretLabel] { + return pulumix.Output[[]SecretLabel]{ + OutputState: i.ToSecretLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type SecretLabelOutput struct{ *pulumi.OutputState } + +func (SecretLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*SecretLabel)(nil)).Elem() +} + +func (o SecretLabelOutput) ToSecretLabelOutput() SecretLabelOutput { + return o +} + +func (o SecretLabelOutput) ToSecretLabelOutputWithContext(ctx context.Context) SecretLabelOutput { + return o +} + +func (o SecretLabelOutput) ToOutput(ctx context.Context) pulumix.Output[SecretLabel] { + return pulumix.Output[SecretLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o SecretLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v SecretLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o SecretLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v SecretLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type SecretLabelArrayOutput struct{ *pulumi.OutputState } + +func (SecretLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]SecretLabel)(nil)).Elem() +} + +func (o SecretLabelArrayOutput) ToSecretLabelArrayOutput() SecretLabelArrayOutput { + return o +} + +func (o SecretLabelArrayOutput) ToSecretLabelArrayOutputWithContext(ctx context.Context) SecretLabelArrayOutput { + return o +} + +func (o SecretLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]SecretLabel] { + return pulumix.Output[[]SecretLabel]{ + OutputState: o.OutputState, + } +} + +func (o SecretLabelArrayOutput) Index(i pulumi.IntInput) SecretLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) SecretLabel { + return vs[0].([]SecretLabel)[vs[1].(int)] + }).(SecretLabelOutput) +} + +type ServiceAuth struct { + // The password + Password *string `pulumi:"password"` + // The address of the server for the authentication + ServerAddress string `pulumi:"serverAddress"` + // The username + Username *string `pulumi:"username"` +} + +// ServiceAuthInput is an input type that accepts ServiceAuthArgs and ServiceAuthOutput values. +// You can construct a concrete instance of `ServiceAuthInput` via: +// +// ServiceAuthArgs{...} +type ServiceAuthInput interface { + pulumi.Input + + ToServiceAuthOutput() ServiceAuthOutput + ToServiceAuthOutputWithContext(context.Context) ServiceAuthOutput +} + +type ServiceAuthArgs struct { + // The password + Password pulumi.StringPtrInput `pulumi:"password"` + // The address of the server for the authentication + ServerAddress pulumi.StringInput `pulumi:"serverAddress"` + // The username + Username pulumi.StringPtrInput `pulumi:"username"` +} + +func (ServiceAuthArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceAuth)(nil)).Elem() +} + +func (i ServiceAuthArgs) ToServiceAuthOutput() ServiceAuthOutput { + return i.ToServiceAuthOutputWithContext(context.Background()) +} + +func (i ServiceAuthArgs) ToServiceAuthOutputWithContext(ctx context.Context) ServiceAuthOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceAuthOutput) +} + +func (i ServiceAuthArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceAuth] { + return pulumix.Output[ServiceAuth]{ + OutputState: i.ToServiceAuthOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceAuthArgs) ToServiceAuthPtrOutput() ServiceAuthPtrOutput { + return i.ToServiceAuthPtrOutputWithContext(context.Background()) +} + +func (i ServiceAuthArgs) ToServiceAuthPtrOutputWithContext(ctx context.Context) ServiceAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceAuthOutput).ToServiceAuthPtrOutputWithContext(ctx) +} + +// ServiceAuthPtrInput is an input type that accepts ServiceAuthArgs, ServiceAuthPtr and ServiceAuthPtrOutput values. +// You can construct a concrete instance of `ServiceAuthPtrInput` via: +// +// ServiceAuthArgs{...} +// +// or: +// +// nil +type ServiceAuthPtrInput interface { + pulumi.Input + + ToServiceAuthPtrOutput() ServiceAuthPtrOutput + ToServiceAuthPtrOutputWithContext(context.Context) ServiceAuthPtrOutput +} + +type serviceAuthPtrType ServiceAuthArgs + +func ServiceAuthPtr(v *ServiceAuthArgs) ServiceAuthPtrInput { + return (*serviceAuthPtrType)(v) +} + +func (*serviceAuthPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceAuth)(nil)).Elem() +} + +func (i *serviceAuthPtrType) ToServiceAuthPtrOutput() ServiceAuthPtrOutput { + return i.ToServiceAuthPtrOutputWithContext(context.Background()) +} + +func (i *serviceAuthPtrType) ToServiceAuthPtrOutputWithContext(ctx context.Context) ServiceAuthPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceAuthPtrOutput) +} + +func (i *serviceAuthPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceAuth] { + return pulumix.Output[*ServiceAuth]{ + OutputState: i.ToServiceAuthPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceAuthOutput struct{ *pulumi.OutputState } + +func (ServiceAuthOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceAuth)(nil)).Elem() +} + +func (o ServiceAuthOutput) ToServiceAuthOutput() ServiceAuthOutput { + return o +} + +func (o ServiceAuthOutput) ToServiceAuthOutputWithContext(ctx context.Context) ServiceAuthOutput { + return o +} + +func (o ServiceAuthOutput) ToServiceAuthPtrOutput() ServiceAuthPtrOutput { + return o.ToServiceAuthPtrOutputWithContext(context.Background()) +} + +func (o ServiceAuthOutput) ToServiceAuthPtrOutputWithContext(ctx context.Context) ServiceAuthPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceAuth) *ServiceAuth { + return &v + }).(ServiceAuthPtrOutput) +} + +func (o ServiceAuthOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceAuth] { + return pulumix.Output[ServiceAuth]{ + OutputState: o.OutputState, + } +} + +// The password +func (o ServiceAuthOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceAuth) *string { return v.Password }).(pulumi.StringPtrOutput) +} + +// The address of the server for the authentication +func (o ServiceAuthOutput) ServerAddress() pulumi.StringOutput { + return o.ApplyT(func(v ServiceAuth) string { return v.ServerAddress }).(pulumi.StringOutput) +} + +// The username +func (o ServiceAuthOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceAuth) *string { return v.Username }).(pulumi.StringPtrOutput) +} + +type ServiceAuthPtrOutput struct{ *pulumi.OutputState } + +func (ServiceAuthPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceAuth)(nil)).Elem() +} + +func (o ServiceAuthPtrOutput) ToServiceAuthPtrOutput() ServiceAuthPtrOutput { + return o +} + +func (o ServiceAuthPtrOutput) ToServiceAuthPtrOutputWithContext(ctx context.Context) ServiceAuthPtrOutput { + return o +} + +func (o ServiceAuthPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceAuth] { + return pulumix.Output[*ServiceAuth]{ + OutputState: o.OutputState, + } +} + +func (o ServiceAuthPtrOutput) Elem() ServiceAuthOutput { + return o.ApplyT(func(v *ServiceAuth) ServiceAuth { + if v != nil { + return *v + } + var ret ServiceAuth + return ret + }).(ServiceAuthOutput) +} + +// The password +func (o ServiceAuthPtrOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceAuth) *string { + if v == nil { + return nil + } + return v.Password + }).(pulumi.StringPtrOutput) +} + +// The address of the server for the authentication +func (o ServiceAuthPtrOutput) ServerAddress() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceAuth) *string { + if v == nil { + return nil + } + return &v.ServerAddress + }).(pulumi.StringPtrOutput) +} + +// The username +func (o ServiceAuthPtrOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceAuth) *string { + if v == nil { + return nil + } + return v.Username + }).(pulumi.StringPtrOutput) +} + +type ServiceConvergeConfig struct { + // The interval to check if the desired state is reached `(ms|s)`. Defaults to `7s`. + Delay *string `pulumi:"delay"` + // The timeout of the service to reach the desired state `(s|m)`. Defaults to `3m` + Timeout *string `pulumi:"timeout"` +} + +// ServiceConvergeConfigInput is an input type that accepts ServiceConvergeConfigArgs and ServiceConvergeConfigOutput values. +// You can construct a concrete instance of `ServiceConvergeConfigInput` via: +// +// ServiceConvergeConfigArgs{...} +type ServiceConvergeConfigInput interface { + pulumi.Input + + ToServiceConvergeConfigOutput() ServiceConvergeConfigOutput + ToServiceConvergeConfigOutputWithContext(context.Context) ServiceConvergeConfigOutput +} + +type ServiceConvergeConfigArgs struct { + // The interval to check if the desired state is reached `(ms|s)`. Defaults to `7s`. + Delay pulumi.StringPtrInput `pulumi:"delay"` + // The timeout of the service to reach the desired state `(s|m)`. Defaults to `3m` + Timeout pulumi.StringPtrInput `pulumi:"timeout"` +} + +func (ServiceConvergeConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceConvergeConfig)(nil)).Elem() +} + +func (i ServiceConvergeConfigArgs) ToServiceConvergeConfigOutput() ServiceConvergeConfigOutput { + return i.ToServiceConvergeConfigOutputWithContext(context.Background()) +} + +func (i ServiceConvergeConfigArgs) ToServiceConvergeConfigOutputWithContext(ctx context.Context) ServiceConvergeConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceConvergeConfigOutput) +} + +func (i ServiceConvergeConfigArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceConvergeConfig] { + return pulumix.Output[ServiceConvergeConfig]{ + OutputState: i.ToServiceConvergeConfigOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceConvergeConfigArgs) ToServiceConvergeConfigPtrOutput() ServiceConvergeConfigPtrOutput { + return i.ToServiceConvergeConfigPtrOutputWithContext(context.Background()) +} + +func (i ServiceConvergeConfigArgs) ToServiceConvergeConfigPtrOutputWithContext(ctx context.Context) ServiceConvergeConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceConvergeConfigOutput).ToServiceConvergeConfigPtrOutputWithContext(ctx) +} + +// ServiceConvergeConfigPtrInput is an input type that accepts ServiceConvergeConfigArgs, ServiceConvergeConfigPtr and ServiceConvergeConfigPtrOutput values. +// You can construct a concrete instance of `ServiceConvergeConfigPtrInput` via: +// +// ServiceConvergeConfigArgs{...} +// +// or: +// +// nil +type ServiceConvergeConfigPtrInput interface { + pulumi.Input + + ToServiceConvergeConfigPtrOutput() ServiceConvergeConfigPtrOutput + ToServiceConvergeConfigPtrOutputWithContext(context.Context) ServiceConvergeConfigPtrOutput +} + +type serviceConvergeConfigPtrType ServiceConvergeConfigArgs + +func ServiceConvergeConfigPtr(v *ServiceConvergeConfigArgs) ServiceConvergeConfigPtrInput { + return (*serviceConvergeConfigPtrType)(v) +} + +func (*serviceConvergeConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceConvergeConfig)(nil)).Elem() +} + +func (i *serviceConvergeConfigPtrType) ToServiceConvergeConfigPtrOutput() ServiceConvergeConfigPtrOutput { + return i.ToServiceConvergeConfigPtrOutputWithContext(context.Background()) +} + +func (i *serviceConvergeConfigPtrType) ToServiceConvergeConfigPtrOutputWithContext(ctx context.Context) ServiceConvergeConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceConvergeConfigPtrOutput) +} + +func (i *serviceConvergeConfigPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceConvergeConfig] { + return pulumix.Output[*ServiceConvergeConfig]{ + OutputState: i.ToServiceConvergeConfigPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceConvergeConfigOutput struct{ *pulumi.OutputState } + +func (ServiceConvergeConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceConvergeConfig)(nil)).Elem() +} + +func (o ServiceConvergeConfigOutput) ToServiceConvergeConfigOutput() ServiceConvergeConfigOutput { + return o +} + +func (o ServiceConvergeConfigOutput) ToServiceConvergeConfigOutputWithContext(ctx context.Context) ServiceConvergeConfigOutput { + return o +} + +func (o ServiceConvergeConfigOutput) ToServiceConvergeConfigPtrOutput() ServiceConvergeConfigPtrOutput { + return o.ToServiceConvergeConfigPtrOutputWithContext(context.Background()) +} + +func (o ServiceConvergeConfigOutput) ToServiceConvergeConfigPtrOutputWithContext(ctx context.Context) ServiceConvergeConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceConvergeConfig) *ServiceConvergeConfig { + return &v + }).(ServiceConvergeConfigPtrOutput) +} + +func (o ServiceConvergeConfigOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceConvergeConfig] { + return pulumix.Output[ServiceConvergeConfig]{ + OutputState: o.OutputState, + } +} + +// The interval to check if the desired state is reached `(ms|s)`. Defaults to `7s`. +func (o ServiceConvergeConfigOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceConvergeConfig) *string { return v.Delay }).(pulumi.StringPtrOutput) +} + +// The timeout of the service to reach the desired state `(s|m)`. Defaults to `3m` +func (o ServiceConvergeConfigOutput) Timeout() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceConvergeConfig) *string { return v.Timeout }).(pulumi.StringPtrOutput) +} + +type ServiceConvergeConfigPtrOutput struct{ *pulumi.OutputState } + +func (ServiceConvergeConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceConvergeConfig)(nil)).Elem() +} + +func (o ServiceConvergeConfigPtrOutput) ToServiceConvergeConfigPtrOutput() ServiceConvergeConfigPtrOutput { + return o +} + +func (o ServiceConvergeConfigPtrOutput) ToServiceConvergeConfigPtrOutputWithContext(ctx context.Context) ServiceConvergeConfigPtrOutput { + return o +} + +func (o ServiceConvergeConfigPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceConvergeConfig] { + return pulumix.Output[*ServiceConvergeConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceConvergeConfigPtrOutput) Elem() ServiceConvergeConfigOutput { + return o.ApplyT(func(v *ServiceConvergeConfig) ServiceConvergeConfig { + if v != nil { + return *v + } + var ret ServiceConvergeConfig + return ret + }).(ServiceConvergeConfigOutput) +} + +// The interval to check if the desired state is reached `(ms|s)`. Defaults to `7s`. +func (o ServiceConvergeConfigPtrOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceConvergeConfig) *string { + if v == nil { + return nil + } + return v.Delay + }).(pulumi.StringPtrOutput) +} + +// The timeout of the service to reach the desired state `(s|m)`. Defaults to `3m` +func (o ServiceConvergeConfigPtrOutput) Timeout() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceConvergeConfig) *string { + if v == nil { + return nil + } + return v.Timeout + }).(pulumi.StringPtrOutput) +} + +type ServiceEndpointSpec struct { + // The mode of resolution to use for internal load balancing between tasks + Mode *string `pulumi:"mode"` + // List of exposed ports that this service is accessible on from the outside. Ports can only be provided if 'vip' resolution mode is used + Ports []ServiceEndpointSpecPort `pulumi:"ports"` +} + +// ServiceEndpointSpecInput is an input type that accepts ServiceEndpointSpecArgs and ServiceEndpointSpecOutput values. +// You can construct a concrete instance of `ServiceEndpointSpecInput` via: +// +// ServiceEndpointSpecArgs{...} +type ServiceEndpointSpecInput interface { + pulumi.Input + + ToServiceEndpointSpecOutput() ServiceEndpointSpecOutput + ToServiceEndpointSpecOutputWithContext(context.Context) ServiceEndpointSpecOutput +} + +type ServiceEndpointSpecArgs struct { + // The mode of resolution to use for internal load balancing between tasks + Mode pulumi.StringPtrInput `pulumi:"mode"` + // List of exposed ports that this service is accessible on from the outside. Ports can only be provided if 'vip' resolution mode is used + Ports ServiceEndpointSpecPortArrayInput `pulumi:"ports"` +} + +func (ServiceEndpointSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceEndpointSpec)(nil)).Elem() +} + +func (i ServiceEndpointSpecArgs) ToServiceEndpointSpecOutput() ServiceEndpointSpecOutput { + return i.ToServiceEndpointSpecOutputWithContext(context.Background()) +} + +func (i ServiceEndpointSpecArgs) ToServiceEndpointSpecOutputWithContext(ctx context.Context) ServiceEndpointSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceEndpointSpecOutput) +} + +func (i ServiceEndpointSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceEndpointSpec] { + return pulumix.Output[ServiceEndpointSpec]{ + OutputState: i.ToServiceEndpointSpecOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceEndpointSpecArgs) ToServiceEndpointSpecPtrOutput() ServiceEndpointSpecPtrOutput { + return i.ToServiceEndpointSpecPtrOutputWithContext(context.Background()) +} + +func (i ServiceEndpointSpecArgs) ToServiceEndpointSpecPtrOutputWithContext(ctx context.Context) ServiceEndpointSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceEndpointSpecOutput).ToServiceEndpointSpecPtrOutputWithContext(ctx) +} + +// ServiceEndpointSpecPtrInput is an input type that accepts ServiceEndpointSpecArgs, ServiceEndpointSpecPtr and ServiceEndpointSpecPtrOutput values. +// You can construct a concrete instance of `ServiceEndpointSpecPtrInput` via: +// +// ServiceEndpointSpecArgs{...} +// +// or: +// +// nil +type ServiceEndpointSpecPtrInput interface { + pulumi.Input + + ToServiceEndpointSpecPtrOutput() ServiceEndpointSpecPtrOutput + ToServiceEndpointSpecPtrOutputWithContext(context.Context) ServiceEndpointSpecPtrOutput +} + +type serviceEndpointSpecPtrType ServiceEndpointSpecArgs + +func ServiceEndpointSpecPtr(v *ServiceEndpointSpecArgs) ServiceEndpointSpecPtrInput { + return (*serviceEndpointSpecPtrType)(v) +} + +func (*serviceEndpointSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceEndpointSpec)(nil)).Elem() +} + +func (i *serviceEndpointSpecPtrType) ToServiceEndpointSpecPtrOutput() ServiceEndpointSpecPtrOutput { + return i.ToServiceEndpointSpecPtrOutputWithContext(context.Background()) +} + +func (i *serviceEndpointSpecPtrType) ToServiceEndpointSpecPtrOutputWithContext(ctx context.Context) ServiceEndpointSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceEndpointSpecPtrOutput) +} + +func (i *serviceEndpointSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceEndpointSpec] { + return pulumix.Output[*ServiceEndpointSpec]{ + OutputState: i.ToServiceEndpointSpecPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceEndpointSpecOutput struct{ *pulumi.OutputState } + +func (ServiceEndpointSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceEndpointSpec)(nil)).Elem() +} + +func (o ServiceEndpointSpecOutput) ToServiceEndpointSpecOutput() ServiceEndpointSpecOutput { + return o +} + +func (o ServiceEndpointSpecOutput) ToServiceEndpointSpecOutputWithContext(ctx context.Context) ServiceEndpointSpecOutput { + return o +} + +func (o ServiceEndpointSpecOutput) ToServiceEndpointSpecPtrOutput() ServiceEndpointSpecPtrOutput { + return o.ToServiceEndpointSpecPtrOutputWithContext(context.Background()) +} + +func (o ServiceEndpointSpecOutput) ToServiceEndpointSpecPtrOutputWithContext(ctx context.Context) ServiceEndpointSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceEndpointSpec) *ServiceEndpointSpec { + return &v + }).(ServiceEndpointSpecPtrOutput) +} + +func (o ServiceEndpointSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceEndpointSpec] { + return pulumix.Output[ServiceEndpointSpec]{ + OutputState: o.OutputState, + } +} + +// The mode of resolution to use for internal load balancing between tasks +func (o ServiceEndpointSpecOutput) Mode() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceEndpointSpec) *string { return v.Mode }).(pulumi.StringPtrOutput) +} + +// List of exposed ports that this service is accessible on from the outside. Ports can only be provided if 'vip' resolution mode is used +func (o ServiceEndpointSpecOutput) Ports() ServiceEndpointSpecPortArrayOutput { + return o.ApplyT(func(v ServiceEndpointSpec) []ServiceEndpointSpecPort { return v.Ports }).(ServiceEndpointSpecPortArrayOutput) +} + +type ServiceEndpointSpecPtrOutput struct{ *pulumi.OutputState } + +func (ServiceEndpointSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceEndpointSpec)(nil)).Elem() +} + +func (o ServiceEndpointSpecPtrOutput) ToServiceEndpointSpecPtrOutput() ServiceEndpointSpecPtrOutput { + return o +} + +func (o ServiceEndpointSpecPtrOutput) ToServiceEndpointSpecPtrOutputWithContext(ctx context.Context) ServiceEndpointSpecPtrOutput { + return o +} + +func (o ServiceEndpointSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceEndpointSpec] { + return pulumix.Output[*ServiceEndpointSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServiceEndpointSpecPtrOutput) Elem() ServiceEndpointSpecOutput { + return o.ApplyT(func(v *ServiceEndpointSpec) ServiceEndpointSpec { + if v != nil { + return *v + } + var ret ServiceEndpointSpec + return ret + }).(ServiceEndpointSpecOutput) +} + +// The mode of resolution to use for internal load balancing between tasks +func (o ServiceEndpointSpecPtrOutput) Mode() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceEndpointSpec) *string { + if v == nil { + return nil + } + return v.Mode + }).(pulumi.StringPtrOutput) +} + +// List of exposed ports that this service is accessible on from the outside. Ports can only be provided if 'vip' resolution mode is used +func (o ServiceEndpointSpecPtrOutput) Ports() ServiceEndpointSpecPortArrayOutput { + return o.ApplyT(func(v *ServiceEndpointSpec) []ServiceEndpointSpecPort { + if v == nil { + return nil + } + return v.Ports + }).(ServiceEndpointSpecPortArrayOutput) +} + +type ServiceEndpointSpecPort struct { + // Name of the service + Name *string `pulumi:"name"` + Protocol *string `pulumi:"protocol"` + PublishMode *string `pulumi:"publishMode"` + PublishedPort *int `pulumi:"publishedPort"` + TargetPort int `pulumi:"targetPort"` +} + +// ServiceEndpointSpecPortInput is an input type that accepts ServiceEndpointSpecPortArgs and ServiceEndpointSpecPortOutput values. +// You can construct a concrete instance of `ServiceEndpointSpecPortInput` via: +// +// ServiceEndpointSpecPortArgs{...} +type ServiceEndpointSpecPortInput interface { + pulumi.Input + + ToServiceEndpointSpecPortOutput() ServiceEndpointSpecPortOutput + ToServiceEndpointSpecPortOutputWithContext(context.Context) ServiceEndpointSpecPortOutput +} + +type ServiceEndpointSpecPortArgs struct { + // Name of the service + Name pulumi.StringPtrInput `pulumi:"name"` + Protocol pulumi.StringPtrInput `pulumi:"protocol"` + PublishMode pulumi.StringPtrInput `pulumi:"publishMode"` + PublishedPort pulumi.IntPtrInput `pulumi:"publishedPort"` + TargetPort pulumi.IntInput `pulumi:"targetPort"` +} + +func (ServiceEndpointSpecPortArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceEndpointSpecPort)(nil)).Elem() +} + +func (i ServiceEndpointSpecPortArgs) ToServiceEndpointSpecPortOutput() ServiceEndpointSpecPortOutput { + return i.ToServiceEndpointSpecPortOutputWithContext(context.Background()) +} + +func (i ServiceEndpointSpecPortArgs) ToServiceEndpointSpecPortOutputWithContext(ctx context.Context) ServiceEndpointSpecPortOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceEndpointSpecPortOutput) +} + +func (i ServiceEndpointSpecPortArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceEndpointSpecPort] { + return pulumix.Output[ServiceEndpointSpecPort]{ + OutputState: i.ToServiceEndpointSpecPortOutputWithContext(ctx).OutputState, + } +} + +// ServiceEndpointSpecPortArrayInput is an input type that accepts ServiceEndpointSpecPortArray and ServiceEndpointSpecPortArrayOutput values. +// You can construct a concrete instance of `ServiceEndpointSpecPortArrayInput` via: +// +// ServiceEndpointSpecPortArray{ ServiceEndpointSpecPortArgs{...} } +type ServiceEndpointSpecPortArrayInput interface { + pulumi.Input + + ToServiceEndpointSpecPortArrayOutput() ServiceEndpointSpecPortArrayOutput + ToServiceEndpointSpecPortArrayOutputWithContext(context.Context) ServiceEndpointSpecPortArrayOutput +} + +type ServiceEndpointSpecPortArray []ServiceEndpointSpecPortInput + +func (ServiceEndpointSpecPortArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceEndpointSpecPort)(nil)).Elem() +} + +func (i ServiceEndpointSpecPortArray) ToServiceEndpointSpecPortArrayOutput() ServiceEndpointSpecPortArrayOutput { + return i.ToServiceEndpointSpecPortArrayOutputWithContext(context.Background()) +} + +func (i ServiceEndpointSpecPortArray) ToServiceEndpointSpecPortArrayOutputWithContext(ctx context.Context) ServiceEndpointSpecPortArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceEndpointSpecPortArrayOutput) +} + +func (i ServiceEndpointSpecPortArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceEndpointSpecPort] { + return pulumix.Output[[]ServiceEndpointSpecPort]{ + OutputState: i.ToServiceEndpointSpecPortArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceEndpointSpecPortOutput struct{ *pulumi.OutputState } + +func (ServiceEndpointSpecPortOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceEndpointSpecPort)(nil)).Elem() +} + +func (o ServiceEndpointSpecPortOutput) ToServiceEndpointSpecPortOutput() ServiceEndpointSpecPortOutput { + return o +} + +func (o ServiceEndpointSpecPortOutput) ToServiceEndpointSpecPortOutputWithContext(ctx context.Context) ServiceEndpointSpecPortOutput { + return o +} + +func (o ServiceEndpointSpecPortOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceEndpointSpecPort] { + return pulumix.Output[ServiceEndpointSpecPort]{ + OutputState: o.OutputState, + } +} + +// Name of the service +func (o ServiceEndpointSpecPortOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceEndpointSpecPort) *string { return v.Name }).(pulumi.StringPtrOutput) +} + +func (o ServiceEndpointSpecPortOutput) Protocol() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceEndpointSpecPort) *string { return v.Protocol }).(pulumi.StringPtrOutput) +} + +func (o ServiceEndpointSpecPortOutput) PublishMode() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceEndpointSpecPort) *string { return v.PublishMode }).(pulumi.StringPtrOutput) +} + +func (o ServiceEndpointSpecPortOutput) PublishedPort() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceEndpointSpecPort) *int { return v.PublishedPort }).(pulumi.IntPtrOutput) +} + +func (o ServiceEndpointSpecPortOutput) TargetPort() pulumi.IntOutput { + return o.ApplyT(func(v ServiceEndpointSpecPort) int { return v.TargetPort }).(pulumi.IntOutput) +} + +type ServiceEndpointSpecPortArrayOutput struct{ *pulumi.OutputState } + +func (ServiceEndpointSpecPortArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceEndpointSpecPort)(nil)).Elem() +} + +func (o ServiceEndpointSpecPortArrayOutput) ToServiceEndpointSpecPortArrayOutput() ServiceEndpointSpecPortArrayOutput { + return o +} + +func (o ServiceEndpointSpecPortArrayOutput) ToServiceEndpointSpecPortArrayOutputWithContext(ctx context.Context) ServiceEndpointSpecPortArrayOutput { + return o +} + +func (o ServiceEndpointSpecPortArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceEndpointSpecPort] { + return pulumix.Output[[]ServiceEndpointSpecPort]{ + OutputState: o.OutputState, + } +} + +func (o ServiceEndpointSpecPortArrayOutput) Index(i pulumi.IntInput) ServiceEndpointSpecPortOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceEndpointSpecPort { + return vs[0].([]ServiceEndpointSpecPort)[vs[1].(int)] + }).(ServiceEndpointSpecPortOutput) +} + +type ServiceLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// ServiceLabelInput is an input type that accepts ServiceLabelArgs and ServiceLabelOutput values. +// You can construct a concrete instance of `ServiceLabelInput` via: +// +// ServiceLabelArgs{...} +type ServiceLabelInput interface { + pulumi.Input + + ToServiceLabelOutput() ServiceLabelOutput + ToServiceLabelOutputWithContext(context.Context) ServiceLabelOutput +} + +type ServiceLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (ServiceLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLabel)(nil)).Elem() +} + +func (i ServiceLabelArgs) ToServiceLabelOutput() ServiceLabelOutput { + return i.ToServiceLabelOutputWithContext(context.Background()) +} + +func (i ServiceLabelArgs) ToServiceLabelOutputWithContext(ctx context.Context) ServiceLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLabelOutput) +} + +func (i ServiceLabelArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceLabel] { + return pulumix.Output[ServiceLabel]{ + OutputState: i.ToServiceLabelOutputWithContext(ctx).OutputState, + } +} + +// ServiceLabelArrayInput is an input type that accepts ServiceLabelArray and ServiceLabelArrayOutput values. +// You can construct a concrete instance of `ServiceLabelArrayInput` via: +// +// ServiceLabelArray{ ServiceLabelArgs{...} } +type ServiceLabelArrayInput interface { + pulumi.Input + + ToServiceLabelArrayOutput() ServiceLabelArrayOutput + ToServiceLabelArrayOutputWithContext(context.Context) ServiceLabelArrayOutput +} + +type ServiceLabelArray []ServiceLabelInput + +func (ServiceLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceLabel)(nil)).Elem() +} + +func (i ServiceLabelArray) ToServiceLabelArrayOutput() ServiceLabelArrayOutput { + return i.ToServiceLabelArrayOutputWithContext(context.Background()) +} + +func (i ServiceLabelArray) ToServiceLabelArrayOutputWithContext(ctx context.Context) ServiceLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceLabelArrayOutput) +} + +func (i ServiceLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceLabel] { + return pulumix.Output[[]ServiceLabel]{ + OutputState: i.ToServiceLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceLabelOutput struct{ *pulumi.OutputState } + +func (ServiceLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceLabel)(nil)).Elem() +} + +func (o ServiceLabelOutput) ToServiceLabelOutput() ServiceLabelOutput { + return o +} + +func (o ServiceLabelOutput) ToServiceLabelOutputWithContext(ctx context.Context) ServiceLabelOutput { + return o +} + +func (o ServiceLabelOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceLabel] { + return pulumix.Output[ServiceLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o ServiceLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o ServiceLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v ServiceLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type ServiceLabelArrayOutput struct{ *pulumi.OutputState } + +func (ServiceLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceLabel)(nil)).Elem() +} + +func (o ServiceLabelArrayOutput) ToServiceLabelArrayOutput() ServiceLabelArrayOutput { + return o +} + +func (o ServiceLabelArrayOutput) ToServiceLabelArrayOutputWithContext(ctx context.Context) ServiceLabelArrayOutput { + return o +} + +func (o ServiceLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceLabel] { + return pulumix.Output[[]ServiceLabel]{ + OutputState: o.OutputState, + } +} + +func (o ServiceLabelArrayOutput) Index(i pulumi.IntInput) ServiceLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceLabel { + return vs[0].([]ServiceLabel)[vs[1].(int)] + }).(ServiceLabelOutput) +} + +type ServiceMode struct { + // The global service mode. Defaults to `false` + Global *bool `pulumi:"global"` + // The replicated service mode + Replicated *ServiceModeReplicated `pulumi:"replicated"` +} + +// ServiceModeInput is an input type that accepts ServiceModeArgs and ServiceModeOutput values. +// You can construct a concrete instance of `ServiceModeInput` via: +// +// ServiceModeArgs{...} +type ServiceModeInput interface { + pulumi.Input + + ToServiceModeOutput() ServiceModeOutput + ToServiceModeOutputWithContext(context.Context) ServiceModeOutput +} + +type ServiceModeArgs struct { + // The global service mode. Defaults to `false` + Global pulumi.BoolPtrInput `pulumi:"global"` + // The replicated service mode + Replicated ServiceModeReplicatedPtrInput `pulumi:"replicated"` +} + +func (ServiceModeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceMode)(nil)).Elem() +} + +func (i ServiceModeArgs) ToServiceModeOutput() ServiceModeOutput { + return i.ToServiceModeOutputWithContext(context.Background()) +} + +func (i ServiceModeArgs) ToServiceModeOutputWithContext(ctx context.Context) ServiceModeOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceModeOutput) +} + +func (i ServiceModeArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceMode] { + return pulumix.Output[ServiceMode]{ + OutputState: i.ToServiceModeOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceModeArgs) ToServiceModePtrOutput() ServiceModePtrOutput { + return i.ToServiceModePtrOutputWithContext(context.Background()) +} + +func (i ServiceModeArgs) ToServiceModePtrOutputWithContext(ctx context.Context) ServiceModePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceModeOutput).ToServiceModePtrOutputWithContext(ctx) +} + +// ServiceModePtrInput is an input type that accepts ServiceModeArgs, ServiceModePtr and ServiceModePtrOutput values. +// You can construct a concrete instance of `ServiceModePtrInput` via: +// +// ServiceModeArgs{...} +// +// or: +// +// nil +type ServiceModePtrInput interface { + pulumi.Input + + ToServiceModePtrOutput() ServiceModePtrOutput + ToServiceModePtrOutputWithContext(context.Context) ServiceModePtrOutput +} + +type serviceModePtrType ServiceModeArgs + +func ServiceModePtr(v *ServiceModeArgs) ServiceModePtrInput { + return (*serviceModePtrType)(v) +} + +func (*serviceModePtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceMode)(nil)).Elem() +} + +func (i *serviceModePtrType) ToServiceModePtrOutput() ServiceModePtrOutput { + return i.ToServiceModePtrOutputWithContext(context.Background()) +} + +func (i *serviceModePtrType) ToServiceModePtrOutputWithContext(ctx context.Context) ServiceModePtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceModePtrOutput) +} + +func (i *serviceModePtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceMode] { + return pulumix.Output[*ServiceMode]{ + OutputState: i.ToServiceModePtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceModeOutput struct{ *pulumi.OutputState } + +func (ServiceModeOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceMode)(nil)).Elem() +} + +func (o ServiceModeOutput) ToServiceModeOutput() ServiceModeOutput { + return o +} + +func (o ServiceModeOutput) ToServiceModeOutputWithContext(ctx context.Context) ServiceModeOutput { + return o +} + +func (o ServiceModeOutput) ToServiceModePtrOutput() ServiceModePtrOutput { + return o.ToServiceModePtrOutputWithContext(context.Background()) +} + +func (o ServiceModeOutput) ToServiceModePtrOutputWithContext(ctx context.Context) ServiceModePtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceMode) *ServiceMode { + return &v + }).(ServiceModePtrOutput) +} + +func (o ServiceModeOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceMode] { + return pulumix.Output[ServiceMode]{ + OutputState: o.OutputState, + } +} + +// The global service mode. Defaults to `false` +func (o ServiceModeOutput) Global() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServiceMode) *bool { return v.Global }).(pulumi.BoolPtrOutput) +} + +// The replicated service mode +func (o ServiceModeOutput) Replicated() ServiceModeReplicatedPtrOutput { + return o.ApplyT(func(v ServiceMode) *ServiceModeReplicated { return v.Replicated }).(ServiceModeReplicatedPtrOutput) +} + +type ServiceModePtrOutput struct{ *pulumi.OutputState } + +func (ServiceModePtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceMode)(nil)).Elem() +} + +func (o ServiceModePtrOutput) ToServiceModePtrOutput() ServiceModePtrOutput { + return o +} + +func (o ServiceModePtrOutput) ToServiceModePtrOutputWithContext(ctx context.Context) ServiceModePtrOutput { + return o +} + +func (o ServiceModePtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceMode] { + return pulumix.Output[*ServiceMode]{ + OutputState: o.OutputState, + } +} + +func (o ServiceModePtrOutput) Elem() ServiceModeOutput { + return o.ApplyT(func(v *ServiceMode) ServiceMode { + if v != nil { + return *v + } + var ret ServiceMode + return ret + }).(ServiceModeOutput) +} + +// The global service mode. Defaults to `false` +func (o ServiceModePtrOutput) Global() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceMode) *bool { + if v == nil { + return nil + } + return v.Global + }).(pulumi.BoolPtrOutput) +} + +// The replicated service mode +func (o ServiceModePtrOutput) Replicated() ServiceModeReplicatedPtrOutput { + return o.ApplyT(func(v *ServiceMode) *ServiceModeReplicated { + if v == nil { + return nil + } + return v.Replicated + }).(ServiceModeReplicatedPtrOutput) +} + +type ServiceModeReplicated struct { + Replicas *int `pulumi:"replicas"` +} + +// ServiceModeReplicatedInput is an input type that accepts ServiceModeReplicatedArgs and ServiceModeReplicatedOutput values. +// You can construct a concrete instance of `ServiceModeReplicatedInput` via: +// +// ServiceModeReplicatedArgs{...} +type ServiceModeReplicatedInput interface { + pulumi.Input + + ToServiceModeReplicatedOutput() ServiceModeReplicatedOutput + ToServiceModeReplicatedOutputWithContext(context.Context) ServiceModeReplicatedOutput +} + +type ServiceModeReplicatedArgs struct { + Replicas pulumi.IntPtrInput `pulumi:"replicas"` +} + +func (ServiceModeReplicatedArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceModeReplicated)(nil)).Elem() +} + +func (i ServiceModeReplicatedArgs) ToServiceModeReplicatedOutput() ServiceModeReplicatedOutput { + return i.ToServiceModeReplicatedOutputWithContext(context.Background()) +} + +func (i ServiceModeReplicatedArgs) ToServiceModeReplicatedOutputWithContext(ctx context.Context) ServiceModeReplicatedOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceModeReplicatedOutput) +} + +func (i ServiceModeReplicatedArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceModeReplicated] { + return pulumix.Output[ServiceModeReplicated]{ + OutputState: i.ToServiceModeReplicatedOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceModeReplicatedArgs) ToServiceModeReplicatedPtrOutput() ServiceModeReplicatedPtrOutput { + return i.ToServiceModeReplicatedPtrOutputWithContext(context.Background()) +} + +func (i ServiceModeReplicatedArgs) ToServiceModeReplicatedPtrOutputWithContext(ctx context.Context) ServiceModeReplicatedPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceModeReplicatedOutput).ToServiceModeReplicatedPtrOutputWithContext(ctx) +} + +// ServiceModeReplicatedPtrInput is an input type that accepts ServiceModeReplicatedArgs, ServiceModeReplicatedPtr and ServiceModeReplicatedPtrOutput values. +// You can construct a concrete instance of `ServiceModeReplicatedPtrInput` via: +// +// ServiceModeReplicatedArgs{...} +// +// or: +// +// nil +type ServiceModeReplicatedPtrInput interface { + pulumi.Input + + ToServiceModeReplicatedPtrOutput() ServiceModeReplicatedPtrOutput + ToServiceModeReplicatedPtrOutputWithContext(context.Context) ServiceModeReplicatedPtrOutput +} + +type serviceModeReplicatedPtrType ServiceModeReplicatedArgs + +func ServiceModeReplicatedPtr(v *ServiceModeReplicatedArgs) ServiceModeReplicatedPtrInput { + return (*serviceModeReplicatedPtrType)(v) +} + +func (*serviceModeReplicatedPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceModeReplicated)(nil)).Elem() +} + +func (i *serviceModeReplicatedPtrType) ToServiceModeReplicatedPtrOutput() ServiceModeReplicatedPtrOutput { + return i.ToServiceModeReplicatedPtrOutputWithContext(context.Background()) +} + +func (i *serviceModeReplicatedPtrType) ToServiceModeReplicatedPtrOutputWithContext(ctx context.Context) ServiceModeReplicatedPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceModeReplicatedPtrOutput) +} + +func (i *serviceModeReplicatedPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceModeReplicated] { + return pulumix.Output[*ServiceModeReplicated]{ + OutputState: i.ToServiceModeReplicatedPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceModeReplicatedOutput struct{ *pulumi.OutputState } + +func (ServiceModeReplicatedOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceModeReplicated)(nil)).Elem() +} + +func (o ServiceModeReplicatedOutput) ToServiceModeReplicatedOutput() ServiceModeReplicatedOutput { + return o +} + +func (o ServiceModeReplicatedOutput) ToServiceModeReplicatedOutputWithContext(ctx context.Context) ServiceModeReplicatedOutput { + return o +} + +func (o ServiceModeReplicatedOutput) ToServiceModeReplicatedPtrOutput() ServiceModeReplicatedPtrOutput { + return o.ToServiceModeReplicatedPtrOutputWithContext(context.Background()) +} + +func (o ServiceModeReplicatedOutput) ToServiceModeReplicatedPtrOutputWithContext(ctx context.Context) ServiceModeReplicatedPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceModeReplicated) *ServiceModeReplicated { + return &v + }).(ServiceModeReplicatedPtrOutput) +} + +func (o ServiceModeReplicatedOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceModeReplicated] { + return pulumix.Output[ServiceModeReplicated]{ + OutputState: o.OutputState, + } +} + +func (o ServiceModeReplicatedOutput) Replicas() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceModeReplicated) *int { return v.Replicas }).(pulumi.IntPtrOutput) +} + +type ServiceModeReplicatedPtrOutput struct{ *pulumi.OutputState } + +func (ServiceModeReplicatedPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceModeReplicated)(nil)).Elem() +} + +func (o ServiceModeReplicatedPtrOutput) ToServiceModeReplicatedPtrOutput() ServiceModeReplicatedPtrOutput { + return o +} + +func (o ServiceModeReplicatedPtrOutput) ToServiceModeReplicatedPtrOutputWithContext(ctx context.Context) ServiceModeReplicatedPtrOutput { + return o +} + +func (o ServiceModeReplicatedPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceModeReplicated] { + return pulumix.Output[*ServiceModeReplicated]{ + OutputState: o.OutputState, + } +} + +func (o ServiceModeReplicatedPtrOutput) Elem() ServiceModeReplicatedOutput { + return o.ApplyT(func(v *ServiceModeReplicated) ServiceModeReplicated { + if v != nil { + return *v + } + var ret ServiceModeReplicated + return ret + }).(ServiceModeReplicatedOutput) +} + +func (o ServiceModeReplicatedPtrOutput) Replicas() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceModeReplicated) *int { + if v == nil { + return nil + } + return v.Replicas + }).(pulumi.IntPtrOutput) +} + +type ServiceRollbackConfig struct { + // Delay between task rollbacks (ns|us|ms|s|m|h). Defaults to `0s`. + Delay *string `pulumi:"delay"` + // Action on rollback failure: pause | continue. Defaults to `pause`. + FailureAction *string `pulumi:"failureAction"` + // Failure rate to tolerate during a rollback. Defaults to `0.0`. + MaxFailureRatio *string `pulumi:"maxFailureRatio"` + // Duration after each task rollback to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. + Monitor *string `pulumi:"monitor"` + // Rollback order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. + Order *string `pulumi:"order"` + // Maximum number of tasks to be rollbacked in one iteration. Defaults to `1` + Parallelism *int `pulumi:"parallelism"` +} + +// ServiceRollbackConfigInput is an input type that accepts ServiceRollbackConfigArgs and ServiceRollbackConfigOutput values. +// You can construct a concrete instance of `ServiceRollbackConfigInput` via: +// +// ServiceRollbackConfigArgs{...} +type ServiceRollbackConfigInput interface { + pulumi.Input + + ToServiceRollbackConfigOutput() ServiceRollbackConfigOutput + ToServiceRollbackConfigOutputWithContext(context.Context) ServiceRollbackConfigOutput +} + +type ServiceRollbackConfigArgs struct { + // Delay between task rollbacks (ns|us|ms|s|m|h). Defaults to `0s`. + Delay pulumi.StringPtrInput `pulumi:"delay"` + // Action on rollback failure: pause | continue. Defaults to `pause`. + FailureAction pulumi.StringPtrInput `pulumi:"failureAction"` + // Failure rate to tolerate during a rollback. Defaults to `0.0`. + MaxFailureRatio pulumi.StringPtrInput `pulumi:"maxFailureRatio"` + // Duration after each task rollback to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. + Monitor pulumi.StringPtrInput `pulumi:"monitor"` + // Rollback order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. + Order pulumi.StringPtrInput `pulumi:"order"` + // Maximum number of tasks to be rollbacked in one iteration. Defaults to `1` + Parallelism pulumi.IntPtrInput `pulumi:"parallelism"` +} + +func (ServiceRollbackConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceRollbackConfig)(nil)).Elem() +} + +func (i ServiceRollbackConfigArgs) ToServiceRollbackConfigOutput() ServiceRollbackConfigOutput { + return i.ToServiceRollbackConfigOutputWithContext(context.Background()) +} + +func (i ServiceRollbackConfigArgs) ToServiceRollbackConfigOutputWithContext(ctx context.Context) ServiceRollbackConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceRollbackConfigOutput) +} + +func (i ServiceRollbackConfigArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceRollbackConfig] { + return pulumix.Output[ServiceRollbackConfig]{ + OutputState: i.ToServiceRollbackConfigOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceRollbackConfigArgs) ToServiceRollbackConfigPtrOutput() ServiceRollbackConfigPtrOutput { + return i.ToServiceRollbackConfigPtrOutputWithContext(context.Background()) +} + +func (i ServiceRollbackConfigArgs) ToServiceRollbackConfigPtrOutputWithContext(ctx context.Context) ServiceRollbackConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceRollbackConfigOutput).ToServiceRollbackConfigPtrOutputWithContext(ctx) +} + +// ServiceRollbackConfigPtrInput is an input type that accepts ServiceRollbackConfigArgs, ServiceRollbackConfigPtr and ServiceRollbackConfigPtrOutput values. +// You can construct a concrete instance of `ServiceRollbackConfigPtrInput` via: +// +// ServiceRollbackConfigArgs{...} +// +// or: +// +// nil +type ServiceRollbackConfigPtrInput interface { + pulumi.Input + + ToServiceRollbackConfigPtrOutput() ServiceRollbackConfigPtrOutput + ToServiceRollbackConfigPtrOutputWithContext(context.Context) ServiceRollbackConfigPtrOutput +} + +type serviceRollbackConfigPtrType ServiceRollbackConfigArgs + +func ServiceRollbackConfigPtr(v *ServiceRollbackConfigArgs) ServiceRollbackConfigPtrInput { + return (*serviceRollbackConfigPtrType)(v) +} + +func (*serviceRollbackConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceRollbackConfig)(nil)).Elem() +} + +func (i *serviceRollbackConfigPtrType) ToServiceRollbackConfigPtrOutput() ServiceRollbackConfigPtrOutput { + return i.ToServiceRollbackConfigPtrOutputWithContext(context.Background()) +} + +func (i *serviceRollbackConfigPtrType) ToServiceRollbackConfigPtrOutputWithContext(ctx context.Context) ServiceRollbackConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceRollbackConfigPtrOutput) +} + +func (i *serviceRollbackConfigPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceRollbackConfig] { + return pulumix.Output[*ServiceRollbackConfig]{ + OutputState: i.ToServiceRollbackConfigPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceRollbackConfigOutput struct{ *pulumi.OutputState } + +func (ServiceRollbackConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceRollbackConfig)(nil)).Elem() +} + +func (o ServiceRollbackConfigOutput) ToServiceRollbackConfigOutput() ServiceRollbackConfigOutput { + return o +} + +func (o ServiceRollbackConfigOutput) ToServiceRollbackConfigOutputWithContext(ctx context.Context) ServiceRollbackConfigOutput { + return o +} + +func (o ServiceRollbackConfigOutput) ToServiceRollbackConfigPtrOutput() ServiceRollbackConfigPtrOutput { + return o.ToServiceRollbackConfigPtrOutputWithContext(context.Background()) +} + +func (o ServiceRollbackConfigOutput) ToServiceRollbackConfigPtrOutputWithContext(ctx context.Context) ServiceRollbackConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceRollbackConfig) *ServiceRollbackConfig { + return &v + }).(ServiceRollbackConfigPtrOutput) +} + +func (o ServiceRollbackConfigOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceRollbackConfig] { + return pulumix.Output[ServiceRollbackConfig]{ + OutputState: o.OutputState, + } +} + +// Delay between task rollbacks (ns|us|ms|s|m|h). Defaults to `0s`. +func (o ServiceRollbackConfigOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceRollbackConfig) *string { return v.Delay }).(pulumi.StringPtrOutput) +} + +// Action on rollback failure: pause | continue. Defaults to `pause`. +func (o ServiceRollbackConfigOutput) FailureAction() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceRollbackConfig) *string { return v.FailureAction }).(pulumi.StringPtrOutput) +} + +// Failure rate to tolerate during a rollback. Defaults to `0.0`. +func (o ServiceRollbackConfigOutput) MaxFailureRatio() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceRollbackConfig) *string { return v.MaxFailureRatio }).(pulumi.StringPtrOutput) +} + +// Duration after each task rollback to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. +func (o ServiceRollbackConfigOutput) Monitor() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceRollbackConfig) *string { return v.Monitor }).(pulumi.StringPtrOutput) +} + +// Rollback order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. +func (o ServiceRollbackConfigOutput) Order() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceRollbackConfig) *string { return v.Order }).(pulumi.StringPtrOutput) +} + +// Maximum number of tasks to be rollbacked in one iteration. Defaults to `1` +func (o ServiceRollbackConfigOutput) Parallelism() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceRollbackConfig) *int { return v.Parallelism }).(pulumi.IntPtrOutput) +} + +type ServiceRollbackConfigPtrOutput struct{ *pulumi.OutputState } + +func (ServiceRollbackConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceRollbackConfig)(nil)).Elem() +} + +func (o ServiceRollbackConfigPtrOutput) ToServiceRollbackConfigPtrOutput() ServiceRollbackConfigPtrOutput { + return o +} + +func (o ServiceRollbackConfigPtrOutput) ToServiceRollbackConfigPtrOutputWithContext(ctx context.Context) ServiceRollbackConfigPtrOutput { + return o +} + +func (o ServiceRollbackConfigPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceRollbackConfig] { + return pulumix.Output[*ServiceRollbackConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceRollbackConfigPtrOutput) Elem() ServiceRollbackConfigOutput { + return o.ApplyT(func(v *ServiceRollbackConfig) ServiceRollbackConfig { + if v != nil { + return *v + } + var ret ServiceRollbackConfig + return ret + }).(ServiceRollbackConfigOutput) +} + +// Delay between task rollbacks (ns|us|ms|s|m|h). Defaults to `0s`. +func (o ServiceRollbackConfigPtrOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceRollbackConfig) *string { + if v == nil { + return nil + } + return v.Delay + }).(pulumi.StringPtrOutput) +} + +// Action on rollback failure: pause | continue. Defaults to `pause`. +func (o ServiceRollbackConfigPtrOutput) FailureAction() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceRollbackConfig) *string { + if v == nil { + return nil + } + return v.FailureAction + }).(pulumi.StringPtrOutput) +} + +// Failure rate to tolerate during a rollback. Defaults to `0.0`. +func (o ServiceRollbackConfigPtrOutput) MaxFailureRatio() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceRollbackConfig) *string { + if v == nil { + return nil + } + return v.MaxFailureRatio + }).(pulumi.StringPtrOutput) +} + +// Duration after each task rollback to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. +func (o ServiceRollbackConfigPtrOutput) Monitor() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceRollbackConfig) *string { + if v == nil { + return nil + } + return v.Monitor + }).(pulumi.StringPtrOutput) +} + +// Rollback order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. +func (o ServiceRollbackConfigPtrOutput) Order() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceRollbackConfig) *string { + if v == nil { + return nil + } + return v.Order + }).(pulumi.StringPtrOutput) +} + +// Maximum number of tasks to be rollbacked in one iteration. Defaults to `1` +func (o ServiceRollbackConfigPtrOutput) Parallelism() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceRollbackConfig) *int { + if v == nil { + return nil + } + return v.Parallelism + }).(pulumi.IntPtrOutput) +} + +type ServiceTaskSpec struct { + // The spec for each container + ContainerSpec ServiceTaskSpecContainerSpec `pulumi:"containerSpec"` + // A counter that triggers an update even if no relevant parameters have been changed. See the [spec](https://github.com/docker/swarmkit/blob/master/api/specs.proto#L126). + ForceUpdate *int `pulumi:"forceUpdate"` + // Specifies the log driver to use for tasks created from this spec. If not present, the default one for the swarm will be used, finally falling back to the engine default if not specified + LogDriver *ServiceTaskSpecLogDriver `pulumi:"logDriver"` + // The networks the container is attached to + NetworksAdvanceds []ServiceTaskSpecNetworksAdvanced `pulumi:"networksAdvanceds"` + // The placement preferences + Placement *ServiceTaskSpecPlacement `pulumi:"placement"` + // Resource requirements which apply to each individual container created as part of the service + Resources *ServiceTaskSpecResources `pulumi:"resources"` + // Specification for the restart policy which applies to containers created as part of this service. + RestartPolicy *ServiceTaskSpecRestartPolicy `pulumi:"restartPolicy"` + // Runtime is the type of runtime specified for the task executor. See the [types](https://github.com/moby/moby/blob/master/api/types/swarm/runtime.go). + Runtime *string `pulumi:"runtime"` +} + +// ServiceTaskSpecInput is an input type that accepts ServiceTaskSpecArgs and ServiceTaskSpecOutput values. +// You can construct a concrete instance of `ServiceTaskSpecInput` via: +// +// ServiceTaskSpecArgs{...} +type ServiceTaskSpecInput interface { + pulumi.Input + + ToServiceTaskSpecOutput() ServiceTaskSpecOutput + ToServiceTaskSpecOutputWithContext(context.Context) ServiceTaskSpecOutput +} + +type ServiceTaskSpecArgs struct { + // The spec for each container + ContainerSpec ServiceTaskSpecContainerSpecInput `pulumi:"containerSpec"` + // A counter that triggers an update even if no relevant parameters have been changed. See the [spec](https://github.com/docker/swarmkit/blob/master/api/specs.proto#L126). + ForceUpdate pulumi.IntPtrInput `pulumi:"forceUpdate"` + // Specifies the log driver to use for tasks created from this spec. If not present, the default one for the swarm will be used, finally falling back to the engine default if not specified + LogDriver ServiceTaskSpecLogDriverPtrInput `pulumi:"logDriver"` + // The networks the container is attached to + NetworksAdvanceds ServiceTaskSpecNetworksAdvancedArrayInput `pulumi:"networksAdvanceds"` + // The placement preferences + Placement ServiceTaskSpecPlacementPtrInput `pulumi:"placement"` + // Resource requirements which apply to each individual container created as part of the service + Resources ServiceTaskSpecResourcesPtrInput `pulumi:"resources"` + // Specification for the restart policy which applies to containers created as part of this service. + RestartPolicy ServiceTaskSpecRestartPolicyPtrInput `pulumi:"restartPolicy"` + // Runtime is the type of runtime specified for the task executor. See the [types](https://github.com/moby/moby/blob/master/api/types/swarm/runtime.go). + Runtime pulumi.StringPtrInput `pulumi:"runtime"` +} + +func (ServiceTaskSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpec)(nil)).Elem() +} + +func (i ServiceTaskSpecArgs) ToServiceTaskSpecOutput() ServiceTaskSpecOutput { + return i.ToServiceTaskSpecOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecArgs) ToServiceTaskSpecOutputWithContext(ctx context.Context) ServiceTaskSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecOutput) +} + +func (i ServiceTaskSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpec] { + return pulumix.Output[ServiceTaskSpec]{ + OutputState: i.ToServiceTaskSpecOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecArgs) ToServiceTaskSpecPtrOutput() ServiceTaskSpecPtrOutput { + return i.ToServiceTaskSpecPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecArgs) ToServiceTaskSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecOutput).ToServiceTaskSpecPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecPtrInput is an input type that accepts ServiceTaskSpecArgs, ServiceTaskSpecPtr and ServiceTaskSpecPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecPtrInput` via: +// +// ServiceTaskSpecArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecPtrInput interface { + pulumi.Input + + ToServiceTaskSpecPtrOutput() ServiceTaskSpecPtrOutput + ToServiceTaskSpecPtrOutputWithContext(context.Context) ServiceTaskSpecPtrOutput +} + +type serviceTaskSpecPtrType ServiceTaskSpecArgs + +func ServiceTaskSpecPtr(v *ServiceTaskSpecArgs) ServiceTaskSpecPtrInput { + return (*serviceTaskSpecPtrType)(v) +} + +func (*serviceTaskSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpec)(nil)).Elem() +} + +func (i *serviceTaskSpecPtrType) ToServiceTaskSpecPtrOutput() ServiceTaskSpecPtrOutput { + return i.ToServiceTaskSpecPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecPtrType) ToServiceTaskSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecPtrOutput) +} + +func (i *serviceTaskSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpec] { + return pulumix.Output[*ServiceTaskSpec]{ + OutputState: i.ToServiceTaskSpecPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpec)(nil)).Elem() +} + +func (o ServiceTaskSpecOutput) ToServiceTaskSpecOutput() ServiceTaskSpecOutput { + return o +} + +func (o ServiceTaskSpecOutput) ToServiceTaskSpecOutputWithContext(ctx context.Context) ServiceTaskSpecOutput { + return o +} + +func (o ServiceTaskSpecOutput) ToServiceTaskSpecPtrOutput() ServiceTaskSpecPtrOutput { + return o.ToServiceTaskSpecPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecOutput) ToServiceTaskSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpec) *ServiceTaskSpec { + return &v + }).(ServiceTaskSpecPtrOutput) +} + +func (o ServiceTaskSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpec] { + return pulumix.Output[ServiceTaskSpec]{ + OutputState: o.OutputState, + } +} + +// The spec for each container +func (o ServiceTaskSpecOutput) ContainerSpec() ServiceTaskSpecContainerSpecOutput { + return o.ApplyT(func(v ServiceTaskSpec) ServiceTaskSpecContainerSpec { return v.ContainerSpec }).(ServiceTaskSpecContainerSpecOutput) +} + +// A counter that triggers an update even if no relevant parameters have been changed. See the [spec](https://github.com/docker/swarmkit/blob/master/api/specs.proto#L126). +func (o ServiceTaskSpecOutput) ForceUpdate() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpec) *int { return v.ForceUpdate }).(pulumi.IntPtrOutput) +} + +// Specifies the log driver to use for tasks created from this spec. If not present, the default one for the swarm will be used, finally falling back to the engine default if not specified +func (o ServiceTaskSpecOutput) LogDriver() ServiceTaskSpecLogDriverPtrOutput { + return o.ApplyT(func(v ServiceTaskSpec) *ServiceTaskSpecLogDriver { return v.LogDriver }).(ServiceTaskSpecLogDriverPtrOutput) +} + +// The networks the container is attached to +func (o ServiceTaskSpecOutput) NetworksAdvanceds() ServiceTaskSpecNetworksAdvancedArrayOutput { + return o.ApplyT(func(v ServiceTaskSpec) []ServiceTaskSpecNetworksAdvanced { return v.NetworksAdvanceds }).(ServiceTaskSpecNetworksAdvancedArrayOutput) +} + +// The placement preferences +func (o ServiceTaskSpecOutput) Placement() ServiceTaskSpecPlacementPtrOutput { + return o.ApplyT(func(v ServiceTaskSpec) *ServiceTaskSpecPlacement { return v.Placement }).(ServiceTaskSpecPlacementPtrOutput) +} + +// Resource requirements which apply to each individual container created as part of the service +func (o ServiceTaskSpecOutput) Resources() ServiceTaskSpecResourcesPtrOutput { + return o.ApplyT(func(v ServiceTaskSpec) *ServiceTaskSpecResources { return v.Resources }).(ServiceTaskSpecResourcesPtrOutput) +} + +// Specification for the restart policy which applies to containers created as part of this service. +func (o ServiceTaskSpecOutput) RestartPolicy() ServiceTaskSpecRestartPolicyPtrOutput { + return o.ApplyT(func(v ServiceTaskSpec) *ServiceTaskSpecRestartPolicy { return v.RestartPolicy }).(ServiceTaskSpecRestartPolicyPtrOutput) +} + +// Runtime is the type of runtime specified for the task executor. See the [types](https://github.com/moby/moby/blob/master/api/types/swarm/runtime.go). +func (o ServiceTaskSpecOutput) Runtime() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpec) *string { return v.Runtime }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpec)(nil)).Elem() +} + +func (o ServiceTaskSpecPtrOutput) ToServiceTaskSpecPtrOutput() ServiceTaskSpecPtrOutput { + return o +} + +func (o ServiceTaskSpecPtrOutput) ToServiceTaskSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPtrOutput { + return o +} + +func (o ServiceTaskSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpec] { + return pulumix.Output[*ServiceTaskSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecPtrOutput) Elem() ServiceTaskSpecOutput { + return o.ApplyT(func(v *ServiceTaskSpec) ServiceTaskSpec { + if v != nil { + return *v + } + var ret ServiceTaskSpec + return ret + }).(ServiceTaskSpecOutput) +} + +// The spec for each container +func (o ServiceTaskSpecPtrOutput) ContainerSpec() ServiceTaskSpecContainerSpecPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpec) *ServiceTaskSpecContainerSpec { + if v == nil { + return nil + } + return &v.ContainerSpec + }).(ServiceTaskSpecContainerSpecPtrOutput) +} + +// A counter that triggers an update even if no relevant parameters have been changed. See the [spec](https://github.com/docker/swarmkit/blob/master/api/specs.proto#L126). +func (o ServiceTaskSpecPtrOutput) ForceUpdate() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpec) *int { + if v == nil { + return nil + } + return v.ForceUpdate + }).(pulumi.IntPtrOutput) +} + +// Specifies the log driver to use for tasks created from this spec. If not present, the default one for the swarm will be used, finally falling back to the engine default if not specified +func (o ServiceTaskSpecPtrOutput) LogDriver() ServiceTaskSpecLogDriverPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpec) *ServiceTaskSpecLogDriver { + if v == nil { + return nil + } + return v.LogDriver + }).(ServiceTaskSpecLogDriverPtrOutput) +} + +// The networks the container is attached to +func (o ServiceTaskSpecPtrOutput) NetworksAdvanceds() ServiceTaskSpecNetworksAdvancedArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpec) []ServiceTaskSpecNetworksAdvanced { + if v == nil { + return nil + } + return v.NetworksAdvanceds + }).(ServiceTaskSpecNetworksAdvancedArrayOutput) +} + +// The placement preferences +func (o ServiceTaskSpecPtrOutput) Placement() ServiceTaskSpecPlacementPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpec) *ServiceTaskSpecPlacement { + if v == nil { + return nil + } + return v.Placement + }).(ServiceTaskSpecPlacementPtrOutput) +} + +// Resource requirements which apply to each individual container created as part of the service +func (o ServiceTaskSpecPtrOutput) Resources() ServiceTaskSpecResourcesPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpec) *ServiceTaskSpecResources { + if v == nil { + return nil + } + return v.Resources + }).(ServiceTaskSpecResourcesPtrOutput) +} + +// Specification for the restart policy which applies to containers created as part of this service. +func (o ServiceTaskSpecPtrOutput) RestartPolicy() ServiceTaskSpecRestartPolicyPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpec) *ServiceTaskSpecRestartPolicy { + if v == nil { + return nil + } + return v.RestartPolicy + }).(ServiceTaskSpecRestartPolicyPtrOutput) +} + +// Runtime is the type of runtime specified for the task executor. See the [types](https://github.com/moby/moby/blob/master/api/types/swarm/runtime.go). +func (o ServiceTaskSpecPtrOutput) Runtime() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpec) *string { + if v == nil { + return nil + } + return v.Runtime + }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpec struct { + Args []string `pulumi:"args"` + Commands []string `pulumi:"commands"` + Configs []ServiceTaskSpecContainerSpecConfig `pulumi:"configs"` + Dir *string `pulumi:"dir"` + DnsConfig *ServiceTaskSpecContainerSpecDnsConfig `pulumi:"dnsConfig"` + Env map[string]string `pulumi:"env"` + Groups []string `pulumi:"groups"` + Healthcheck *ServiceTaskSpecContainerSpecHealthcheck `pulumi:"healthcheck"` + Hostname *string `pulumi:"hostname"` + Hosts []ServiceTaskSpecContainerSpecHost `pulumi:"hosts"` + Image string `pulumi:"image"` + Isolation *string `pulumi:"isolation"` + // User-defined key/value metadata + Labels []ServiceTaskSpecContainerSpecLabel `pulumi:"labels"` + Mounts []ServiceTaskSpecContainerSpecMount `pulumi:"mounts"` + Privileges *ServiceTaskSpecContainerSpecPrivileges `pulumi:"privileges"` + ReadOnly *bool `pulumi:"readOnly"` + Secrets []ServiceTaskSpecContainerSpecSecret `pulumi:"secrets"` + StopGracePeriod *string `pulumi:"stopGracePeriod"` + StopSignal *string `pulumi:"stopSignal"` + Sysctl map[string]interface{} `pulumi:"sysctl"` + User *string `pulumi:"user"` +} + +// ServiceTaskSpecContainerSpecInput is an input type that accepts ServiceTaskSpecContainerSpecArgs and ServiceTaskSpecContainerSpecOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecInput` via: +// +// ServiceTaskSpecContainerSpecArgs{...} +type ServiceTaskSpecContainerSpecInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecOutput() ServiceTaskSpecContainerSpecOutput + ToServiceTaskSpecContainerSpecOutputWithContext(context.Context) ServiceTaskSpecContainerSpecOutput +} + +type ServiceTaskSpecContainerSpecArgs struct { + Args pulumi.StringArrayInput `pulumi:"args"` + Commands pulumi.StringArrayInput `pulumi:"commands"` + Configs ServiceTaskSpecContainerSpecConfigArrayInput `pulumi:"configs"` + Dir pulumi.StringPtrInput `pulumi:"dir"` + DnsConfig ServiceTaskSpecContainerSpecDnsConfigPtrInput `pulumi:"dnsConfig"` + Env pulumi.StringMapInput `pulumi:"env"` + Groups pulumi.StringArrayInput `pulumi:"groups"` + Healthcheck ServiceTaskSpecContainerSpecHealthcheckPtrInput `pulumi:"healthcheck"` + Hostname pulumi.StringPtrInput `pulumi:"hostname"` + Hosts ServiceTaskSpecContainerSpecHostArrayInput `pulumi:"hosts"` + Image pulumi.StringInput `pulumi:"image"` + Isolation pulumi.StringPtrInput `pulumi:"isolation"` + // User-defined key/value metadata + Labels ServiceTaskSpecContainerSpecLabelArrayInput `pulumi:"labels"` + Mounts ServiceTaskSpecContainerSpecMountArrayInput `pulumi:"mounts"` + Privileges ServiceTaskSpecContainerSpecPrivilegesPtrInput `pulumi:"privileges"` + ReadOnly pulumi.BoolPtrInput `pulumi:"readOnly"` + Secrets ServiceTaskSpecContainerSpecSecretArrayInput `pulumi:"secrets"` + StopGracePeriod pulumi.StringPtrInput `pulumi:"stopGracePeriod"` + StopSignal pulumi.StringPtrInput `pulumi:"stopSignal"` + Sysctl pulumi.MapInput `pulumi:"sysctl"` + User pulumi.StringPtrInput `pulumi:"user"` +} + +func (ServiceTaskSpecContainerSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpec)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecArgs) ToServiceTaskSpecContainerSpecOutput() ServiceTaskSpecContainerSpecOutput { + return i.ToServiceTaskSpecContainerSpecOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecArgs) ToServiceTaskSpecContainerSpecOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecOutput) +} + +func (i ServiceTaskSpecContainerSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpec] { + return pulumix.Output[ServiceTaskSpecContainerSpec]{ + OutputState: i.ToServiceTaskSpecContainerSpecOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecArgs) ToServiceTaskSpecContainerSpecPtrOutput() ServiceTaskSpecContainerSpecPtrOutput { + return i.ToServiceTaskSpecContainerSpecPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecArgs) ToServiceTaskSpecContainerSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecOutput).ToServiceTaskSpecContainerSpecPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecPtrInput is an input type that accepts ServiceTaskSpecContainerSpecArgs, ServiceTaskSpecContainerSpecPtr and ServiceTaskSpecContainerSpecPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecPtrInput` via: +// +// ServiceTaskSpecContainerSpecArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecPtrOutput() ServiceTaskSpecContainerSpecPtrOutput + ToServiceTaskSpecContainerSpecPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecPtrOutput +} + +type serviceTaskSpecContainerSpecPtrType ServiceTaskSpecContainerSpecArgs + +func ServiceTaskSpecContainerSpecPtr(v *ServiceTaskSpecContainerSpecArgs) ServiceTaskSpecContainerSpecPtrInput { + return (*serviceTaskSpecContainerSpecPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpec)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecPtrType) ToServiceTaskSpecContainerSpecPtrOutput() ServiceTaskSpecContainerSpecPtrOutput { + return i.ToServiceTaskSpecContainerSpecPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecPtrType) ToServiceTaskSpecContainerSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpec] { + return pulumix.Output[*ServiceTaskSpecContainerSpec]{ + OutputState: i.ToServiceTaskSpecContainerSpecPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpec)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecOutput) ToServiceTaskSpecContainerSpecOutput() ServiceTaskSpecContainerSpecOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecOutput) ToServiceTaskSpecContainerSpecOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecOutput) ToServiceTaskSpecContainerSpecPtrOutput() ServiceTaskSpecContainerSpecPtrOutput { + return o.ToServiceTaskSpecContainerSpecPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecOutput) ToServiceTaskSpecContainerSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpec) *ServiceTaskSpecContainerSpec { + return &v + }).(ServiceTaskSpecContainerSpecPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpec] { + return pulumix.Output[ServiceTaskSpecContainerSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecOutput) Args() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []string { return v.Args }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Commands() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []string { return v.Commands }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Configs() ServiceTaskSpecContainerSpecConfigArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecConfig { return v.Configs }).(ServiceTaskSpecContainerSpecConfigArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Dir() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *string { return v.Dir }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) DnsConfig() ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *ServiceTaskSpecContainerSpecDnsConfig { return v.DnsConfig }).(ServiceTaskSpecContainerSpecDnsConfigPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Env() pulumi.StringMapOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) map[string]string { return v.Env }).(pulumi.StringMapOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Groups() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []string { return v.Groups }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Healthcheck() ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *ServiceTaskSpecContainerSpecHealthcheck { return v.Healthcheck }).(ServiceTaskSpecContainerSpecHealthcheckPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Hostname() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *string { return v.Hostname }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Hosts() ServiceTaskSpecContainerSpecHostArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecHost { return v.Hosts }).(ServiceTaskSpecContainerSpecHostArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Image() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) string { return v.Image }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Isolation() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *string { return v.Isolation }).(pulumi.StringPtrOutput) +} + +// User-defined key/value metadata +func (o ServiceTaskSpecContainerSpecOutput) Labels() ServiceTaskSpecContainerSpecLabelArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecLabel { return v.Labels }).(ServiceTaskSpecContainerSpecLabelArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Mounts() ServiceTaskSpecContainerSpecMountArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecMount { return v.Mounts }).(ServiceTaskSpecContainerSpecMountArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Privileges() ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *ServiceTaskSpecContainerSpecPrivileges { return v.Privileges }).(ServiceTaskSpecContainerSpecPrivilegesPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *bool { return v.ReadOnly }).(pulumi.BoolPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Secrets() ServiceTaskSpecContainerSpecSecretArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecSecret { return v.Secrets }).(ServiceTaskSpecContainerSpecSecretArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) StopGracePeriod() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *string { return v.StopGracePeriod }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) StopSignal() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *string { return v.StopSignal }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) Sysctl() pulumi.MapOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) map[string]interface{} { return v.Sysctl }).(pulumi.MapOutput) +} + +func (o ServiceTaskSpecContainerSpecOutput) User() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpec) *string { return v.User }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpec)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) ToServiceTaskSpecContainerSpecPtrOutput() ServiceTaskSpecContainerSpecPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) ToServiceTaskSpecContainerSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpec] { + return pulumix.Output[*ServiceTaskSpecContainerSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Elem() ServiceTaskSpecContainerSpecOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) ServiceTaskSpecContainerSpec { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpec + return ret + }).(ServiceTaskSpecContainerSpecOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Args() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []string { + if v == nil { + return nil + } + return v.Args + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Commands() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []string { + if v == nil { + return nil + } + return v.Commands + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Configs() ServiceTaskSpecContainerSpecConfigArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecConfig { + if v == nil { + return nil + } + return v.Configs + }).(ServiceTaskSpecContainerSpecConfigArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Dir() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *string { + if v == nil { + return nil + } + return v.Dir + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) DnsConfig() ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *ServiceTaskSpecContainerSpecDnsConfig { + if v == nil { + return nil + } + return v.DnsConfig + }).(ServiceTaskSpecContainerSpecDnsConfigPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Env() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) map[string]string { + if v == nil { + return nil + } + return v.Env + }).(pulumi.StringMapOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Groups() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []string { + if v == nil { + return nil + } + return v.Groups + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Healthcheck() ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *ServiceTaskSpecContainerSpecHealthcheck { + if v == nil { + return nil + } + return v.Healthcheck + }).(ServiceTaskSpecContainerSpecHealthcheckPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Hostname() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *string { + if v == nil { + return nil + } + return v.Hostname + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Hosts() ServiceTaskSpecContainerSpecHostArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecHost { + if v == nil { + return nil + } + return v.Hosts + }).(ServiceTaskSpecContainerSpecHostArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Image() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *string { + if v == nil { + return nil + } + return &v.Image + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Isolation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *string { + if v == nil { + return nil + } + return v.Isolation + }).(pulumi.StringPtrOutput) +} + +// User-defined key/value metadata +func (o ServiceTaskSpecContainerSpecPtrOutput) Labels() ServiceTaskSpecContainerSpecLabelArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecLabel { + if v == nil { + return nil + } + return v.Labels + }).(ServiceTaskSpecContainerSpecLabelArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Mounts() ServiceTaskSpecContainerSpecMountArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecMount { + if v == nil { + return nil + } + return v.Mounts + }).(ServiceTaskSpecContainerSpecMountArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Privileges() ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *ServiceTaskSpecContainerSpecPrivileges { + if v == nil { + return nil + } + return v.Privileges + }).(ServiceTaskSpecContainerSpecPrivilegesPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *bool { + if v == nil { + return nil + } + return v.ReadOnly + }).(pulumi.BoolPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Secrets() ServiceTaskSpecContainerSpecSecretArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) []ServiceTaskSpecContainerSpecSecret { + if v == nil { + return nil + } + return v.Secrets + }).(ServiceTaskSpecContainerSpecSecretArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) StopGracePeriod() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *string { + if v == nil { + return nil + } + return v.StopGracePeriod + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) StopSignal() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *string { + if v == nil { + return nil + } + return v.StopSignal + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) Sysctl() pulumi.MapOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) map[string]interface{} { + if v == nil { + return nil + } + return v.Sysctl + }).(pulumi.MapOutput) +} + +func (o ServiceTaskSpecContainerSpecPtrOutput) User() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpec) *string { + if v == nil { + return nil + } + return v.User + }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecConfig struct { + ConfigId string `pulumi:"configId"` + ConfigName *string `pulumi:"configName"` + FileGid *string `pulumi:"fileGid"` + FileMode *int `pulumi:"fileMode"` + FileName string `pulumi:"fileName"` + FileUid *string `pulumi:"fileUid"` +} + +// ServiceTaskSpecContainerSpecConfigInput is an input type that accepts ServiceTaskSpecContainerSpecConfigArgs and ServiceTaskSpecContainerSpecConfigOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecConfigInput` via: +// +// ServiceTaskSpecContainerSpecConfigArgs{...} +type ServiceTaskSpecContainerSpecConfigInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecConfigOutput() ServiceTaskSpecContainerSpecConfigOutput + ToServiceTaskSpecContainerSpecConfigOutputWithContext(context.Context) ServiceTaskSpecContainerSpecConfigOutput +} + +type ServiceTaskSpecContainerSpecConfigArgs struct { + ConfigId pulumi.StringInput `pulumi:"configId"` + ConfigName pulumi.StringPtrInput `pulumi:"configName"` + FileGid pulumi.StringPtrInput `pulumi:"fileGid"` + FileMode pulumi.IntPtrInput `pulumi:"fileMode"` + FileName pulumi.StringInput `pulumi:"fileName"` + FileUid pulumi.StringPtrInput `pulumi:"fileUid"` +} + +func (ServiceTaskSpecContainerSpecConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecConfig)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecConfigArgs) ToServiceTaskSpecContainerSpecConfigOutput() ServiceTaskSpecContainerSpecConfigOutput { + return i.ToServiceTaskSpecContainerSpecConfigOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecConfigArgs) ToServiceTaskSpecContainerSpecConfigOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecConfigOutput) +} + +func (i ServiceTaskSpecContainerSpecConfigArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecConfig] { + return pulumix.Output[ServiceTaskSpecContainerSpecConfig]{ + OutputState: i.ToServiceTaskSpecContainerSpecConfigOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecContainerSpecConfigArrayInput is an input type that accepts ServiceTaskSpecContainerSpecConfigArray and ServiceTaskSpecContainerSpecConfigArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecConfigArrayInput` via: +// +// ServiceTaskSpecContainerSpecConfigArray{ ServiceTaskSpecContainerSpecConfigArgs{...} } +type ServiceTaskSpecContainerSpecConfigArrayInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecConfigArrayOutput() ServiceTaskSpecContainerSpecConfigArrayOutput + ToServiceTaskSpecContainerSpecConfigArrayOutputWithContext(context.Context) ServiceTaskSpecContainerSpecConfigArrayOutput +} + +type ServiceTaskSpecContainerSpecConfigArray []ServiceTaskSpecContainerSpecConfigInput + +func (ServiceTaskSpecContainerSpecConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecConfig)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecConfigArray) ToServiceTaskSpecContainerSpecConfigArrayOutput() ServiceTaskSpecContainerSpecConfigArrayOutput { + return i.ToServiceTaskSpecContainerSpecConfigArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecConfigArray) ToServiceTaskSpecContainerSpecConfigArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecConfigArrayOutput) +} + +func (i ServiceTaskSpecContainerSpecConfigArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecConfig] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecConfig]{ + OutputState: i.ToServiceTaskSpecContainerSpecConfigArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecConfigOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecConfig)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) ToServiceTaskSpecContainerSpecConfigOutput() ServiceTaskSpecContainerSpecConfigOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) ToServiceTaskSpecContainerSpecConfigOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecConfigOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecConfig] { + return pulumix.Output[ServiceTaskSpecContainerSpecConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) ConfigId() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecConfig) string { return v.ConfigId }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) ConfigName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecConfig) *string { return v.ConfigName }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) FileGid() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecConfig) *string { return v.FileGid }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) FileMode() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecConfig) *int { return v.FileMode }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) FileName() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecConfig) string { return v.FileName }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecConfigOutput) FileUid() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecConfig) *string { return v.FileUid }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecConfigArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecConfig)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecConfigArrayOutput) ToServiceTaskSpecContainerSpecConfigArrayOutput() ServiceTaskSpecContainerSpecConfigArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecConfigArrayOutput) ToServiceTaskSpecContainerSpecConfigArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecConfigArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecConfigArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecConfig] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecConfigArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecContainerSpecConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecContainerSpecConfig { + return vs[0].([]ServiceTaskSpecContainerSpecConfig)[vs[1].(int)] + }).(ServiceTaskSpecContainerSpecConfigOutput) +} + +type ServiceTaskSpecContainerSpecDnsConfig struct { + Nameservers []string `pulumi:"nameservers"` + Options []string `pulumi:"options"` + Searches []string `pulumi:"searches"` +} + +// ServiceTaskSpecContainerSpecDnsConfigInput is an input type that accepts ServiceTaskSpecContainerSpecDnsConfigArgs and ServiceTaskSpecContainerSpecDnsConfigOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecDnsConfigInput` via: +// +// ServiceTaskSpecContainerSpecDnsConfigArgs{...} +type ServiceTaskSpecContainerSpecDnsConfigInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecDnsConfigOutput() ServiceTaskSpecContainerSpecDnsConfigOutput + ToServiceTaskSpecContainerSpecDnsConfigOutputWithContext(context.Context) ServiceTaskSpecContainerSpecDnsConfigOutput +} + +type ServiceTaskSpecContainerSpecDnsConfigArgs struct { + Nameservers pulumi.StringArrayInput `pulumi:"nameservers"` + Options pulumi.StringArrayInput `pulumi:"options"` + Searches pulumi.StringArrayInput `pulumi:"searches"` +} + +func (ServiceTaskSpecContainerSpecDnsConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecDnsConfig)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecDnsConfigArgs) ToServiceTaskSpecContainerSpecDnsConfigOutput() ServiceTaskSpecContainerSpecDnsConfigOutput { + return i.ToServiceTaskSpecContainerSpecDnsConfigOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecDnsConfigArgs) ToServiceTaskSpecContainerSpecDnsConfigOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecDnsConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecDnsConfigOutput) +} + +func (i ServiceTaskSpecContainerSpecDnsConfigArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecDnsConfig] { + return pulumix.Output[ServiceTaskSpecContainerSpecDnsConfig]{ + OutputState: i.ToServiceTaskSpecContainerSpecDnsConfigOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecDnsConfigArgs) ToServiceTaskSpecContainerSpecDnsConfigPtrOutput() ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return i.ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecDnsConfigArgs) ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecDnsConfigOutput).ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecDnsConfigPtrInput is an input type that accepts ServiceTaskSpecContainerSpecDnsConfigArgs, ServiceTaskSpecContainerSpecDnsConfigPtr and ServiceTaskSpecContainerSpecDnsConfigPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecDnsConfigPtrInput` via: +// +// ServiceTaskSpecContainerSpecDnsConfigArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecDnsConfigPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecDnsConfigPtrOutput() ServiceTaskSpecContainerSpecDnsConfigPtrOutput + ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecDnsConfigPtrOutput +} + +type serviceTaskSpecContainerSpecDnsConfigPtrType ServiceTaskSpecContainerSpecDnsConfigArgs + +func ServiceTaskSpecContainerSpecDnsConfigPtr(v *ServiceTaskSpecContainerSpecDnsConfigArgs) ServiceTaskSpecContainerSpecDnsConfigPtrInput { + return (*serviceTaskSpecContainerSpecDnsConfigPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecDnsConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecDnsConfig)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecDnsConfigPtrType) ToServiceTaskSpecContainerSpecDnsConfigPtrOutput() ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return i.ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecDnsConfigPtrType) ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecDnsConfigPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecDnsConfigPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecDnsConfig] { + return pulumix.Output[*ServiceTaskSpecContainerSpecDnsConfig]{ + OutputState: i.ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecDnsConfigOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecDnsConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecDnsConfig)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) ToServiceTaskSpecContainerSpecDnsConfigOutput() ServiceTaskSpecContainerSpecDnsConfigOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) ToServiceTaskSpecContainerSpecDnsConfigOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecDnsConfigOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) ToServiceTaskSpecContainerSpecDnsConfigPtrOutput() ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return o.ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecDnsConfig) *ServiceTaskSpecContainerSpecDnsConfig { + return &v + }).(ServiceTaskSpecContainerSpecDnsConfigPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecDnsConfig] { + return pulumix.Output[ServiceTaskSpecContainerSpecDnsConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) Nameservers() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecDnsConfig) []string { return v.Nameservers }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) Options() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecDnsConfig) []string { return v.Options }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecDnsConfigOutput) Searches() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecDnsConfig) []string { return v.Searches }).(pulumi.StringArrayOutput) +} + +type ServiceTaskSpecContainerSpecDnsConfigPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecDnsConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecDnsConfig)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecDnsConfigPtrOutput) ToServiceTaskSpecContainerSpecDnsConfigPtrOutput() ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecDnsConfigPtrOutput) ToServiceTaskSpecContainerSpecDnsConfigPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecDnsConfigPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecDnsConfigPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecDnsConfig] { + return pulumix.Output[*ServiceTaskSpecContainerSpecDnsConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecDnsConfigPtrOutput) Elem() ServiceTaskSpecContainerSpecDnsConfigOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecDnsConfig) ServiceTaskSpecContainerSpecDnsConfig { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecDnsConfig + return ret + }).(ServiceTaskSpecContainerSpecDnsConfigOutput) +} + +func (o ServiceTaskSpecContainerSpecDnsConfigPtrOutput) Nameservers() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecDnsConfig) []string { + if v == nil { + return nil + } + return v.Nameservers + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecDnsConfigPtrOutput) Options() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecDnsConfig) []string { + if v == nil { + return nil + } + return v.Options + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecDnsConfigPtrOutput) Searches() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecDnsConfig) []string { + if v == nil { + return nil + } + return v.Searches + }).(pulumi.StringArrayOutput) +} + +type ServiceTaskSpecContainerSpecHealthcheck struct { + Interval *string `pulumi:"interval"` + Retries *int `pulumi:"retries"` + StartPeriod *string `pulumi:"startPeriod"` + Tests []string `pulumi:"tests"` + Timeout *string `pulumi:"timeout"` +} + +// ServiceTaskSpecContainerSpecHealthcheckInput is an input type that accepts ServiceTaskSpecContainerSpecHealthcheckArgs and ServiceTaskSpecContainerSpecHealthcheckOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecHealthcheckInput` via: +// +// ServiceTaskSpecContainerSpecHealthcheckArgs{...} +type ServiceTaskSpecContainerSpecHealthcheckInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecHealthcheckOutput() ServiceTaskSpecContainerSpecHealthcheckOutput + ToServiceTaskSpecContainerSpecHealthcheckOutputWithContext(context.Context) ServiceTaskSpecContainerSpecHealthcheckOutput +} + +type ServiceTaskSpecContainerSpecHealthcheckArgs struct { + Interval pulumi.StringPtrInput `pulumi:"interval"` + Retries pulumi.IntPtrInput `pulumi:"retries"` + StartPeriod pulumi.StringPtrInput `pulumi:"startPeriod"` + Tests pulumi.StringArrayInput `pulumi:"tests"` + Timeout pulumi.StringPtrInput `pulumi:"timeout"` +} + +func (ServiceTaskSpecContainerSpecHealthcheckArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecHealthcheck)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecHealthcheckArgs) ToServiceTaskSpecContainerSpecHealthcheckOutput() ServiceTaskSpecContainerSpecHealthcheckOutput { + return i.ToServiceTaskSpecContainerSpecHealthcheckOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecHealthcheckArgs) ToServiceTaskSpecContainerSpecHealthcheckOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHealthcheckOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecHealthcheckOutput) +} + +func (i ServiceTaskSpecContainerSpecHealthcheckArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecHealthcheck] { + return pulumix.Output[ServiceTaskSpecContainerSpecHealthcheck]{ + OutputState: i.ToServiceTaskSpecContainerSpecHealthcheckOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecHealthcheckArgs) ToServiceTaskSpecContainerSpecHealthcheckPtrOutput() ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return i.ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecHealthcheckArgs) ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecHealthcheckOutput).ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecHealthcheckPtrInput is an input type that accepts ServiceTaskSpecContainerSpecHealthcheckArgs, ServiceTaskSpecContainerSpecHealthcheckPtr and ServiceTaskSpecContainerSpecHealthcheckPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecHealthcheckPtrInput` via: +// +// ServiceTaskSpecContainerSpecHealthcheckArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecHealthcheckPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecHealthcheckPtrOutput() ServiceTaskSpecContainerSpecHealthcheckPtrOutput + ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecHealthcheckPtrOutput +} + +type serviceTaskSpecContainerSpecHealthcheckPtrType ServiceTaskSpecContainerSpecHealthcheckArgs + +func ServiceTaskSpecContainerSpecHealthcheckPtr(v *ServiceTaskSpecContainerSpecHealthcheckArgs) ServiceTaskSpecContainerSpecHealthcheckPtrInput { + return (*serviceTaskSpecContainerSpecHealthcheckPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecHealthcheckPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecHealthcheck)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecHealthcheckPtrType) ToServiceTaskSpecContainerSpecHealthcheckPtrOutput() ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return i.ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecHealthcheckPtrType) ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecHealthcheckPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecHealthcheckPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecHealthcheck] { + return pulumix.Output[*ServiceTaskSpecContainerSpecHealthcheck]{ + OutputState: i.ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecHealthcheckOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecHealthcheckOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecHealthcheck)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) ToServiceTaskSpecContainerSpecHealthcheckOutput() ServiceTaskSpecContainerSpecHealthcheckOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) ToServiceTaskSpecContainerSpecHealthcheckOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHealthcheckOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) ToServiceTaskSpecContainerSpecHealthcheckPtrOutput() ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return o.ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecHealthcheck) *ServiceTaskSpecContainerSpecHealthcheck { + return &v + }).(ServiceTaskSpecContainerSpecHealthcheckPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecHealthcheck] { + return pulumix.Output[ServiceTaskSpecContainerSpecHealthcheck]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) Interval() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecHealthcheck) *string { return v.Interval }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) Retries() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecHealthcheck) *int { return v.Retries }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) StartPeriod() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecHealthcheck) *string { return v.StartPeriod }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) Tests() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecHealthcheck) []string { return v.Tests }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckOutput) Timeout() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecHealthcheck) *string { return v.Timeout }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecHealthcheckPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecHealthcheckPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecHealthcheck)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) ToServiceTaskSpecContainerSpecHealthcheckPtrOutput() ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) ToServiceTaskSpecContainerSpecHealthcheckPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHealthcheckPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecHealthcheck] { + return pulumix.Output[*ServiceTaskSpecContainerSpecHealthcheck]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) Elem() ServiceTaskSpecContainerSpecHealthcheckOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecHealthcheck) ServiceTaskSpecContainerSpecHealthcheck { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecHealthcheck + return ret + }).(ServiceTaskSpecContainerSpecHealthcheckOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) Interval() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecHealthcheck) *string { + if v == nil { + return nil + } + return v.Interval + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) Retries() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecHealthcheck) *int { + if v == nil { + return nil + } + return v.Retries + }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) StartPeriod() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecHealthcheck) *string { + if v == nil { + return nil + } + return v.StartPeriod + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) Tests() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecHealthcheck) []string { + if v == nil { + return nil + } + return v.Tests + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecHealthcheckPtrOutput) Timeout() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecHealthcheck) *string { + if v == nil { + return nil + } + return v.Timeout + }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecHost struct { + Host string `pulumi:"host"` + Ip string `pulumi:"ip"` +} + +// ServiceTaskSpecContainerSpecHostInput is an input type that accepts ServiceTaskSpecContainerSpecHostArgs and ServiceTaskSpecContainerSpecHostOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecHostInput` via: +// +// ServiceTaskSpecContainerSpecHostArgs{...} +type ServiceTaskSpecContainerSpecHostInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecHostOutput() ServiceTaskSpecContainerSpecHostOutput + ToServiceTaskSpecContainerSpecHostOutputWithContext(context.Context) ServiceTaskSpecContainerSpecHostOutput +} + +type ServiceTaskSpecContainerSpecHostArgs struct { + Host pulumi.StringInput `pulumi:"host"` + Ip pulumi.StringInput `pulumi:"ip"` +} + +func (ServiceTaskSpecContainerSpecHostArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecHost)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecHostArgs) ToServiceTaskSpecContainerSpecHostOutput() ServiceTaskSpecContainerSpecHostOutput { + return i.ToServiceTaskSpecContainerSpecHostOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecHostArgs) ToServiceTaskSpecContainerSpecHostOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHostOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecHostOutput) +} + +func (i ServiceTaskSpecContainerSpecHostArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecHost] { + return pulumix.Output[ServiceTaskSpecContainerSpecHost]{ + OutputState: i.ToServiceTaskSpecContainerSpecHostOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecContainerSpecHostArrayInput is an input type that accepts ServiceTaskSpecContainerSpecHostArray and ServiceTaskSpecContainerSpecHostArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecHostArrayInput` via: +// +// ServiceTaskSpecContainerSpecHostArray{ ServiceTaskSpecContainerSpecHostArgs{...} } +type ServiceTaskSpecContainerSpecHostArrayInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecHostArrayOutput() ServiceTaskSpecContainerSpecHostArrayOutput + ToServiceTaskSpecContainerSpecHostArrayOutputWithContext(context.Context) ServiceTaskSpecContainerSpecHostArrayOutput +} + +type ServiceTaskSpecContainerSpecHostArray []ServiceTaskSpecContainerSpecHostInput + +func (ServiceTaskSpecContainerSpecHostArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecHost)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecHostArray) ToServiceTaskSpecContainerSpecHostArrayOutput() ServiceTaskSpecContainerSpecHostArrayOutput { + return i.ToServiceTaskSpecContainerSpecHostArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecHostArray) ToServiceTaskSpecContainerSpecHostArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHostArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecHostArrayOutput) +} + +func (i ServiceTaskSpecContainerSpecHostArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecHost] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecHost]{ + OutputState: i.ToServiceTaskSpecContainerSpecHostArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecHostOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecHostOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecHost)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecHostOutput) ToServiceTaskSpecContainerSpecHostOutput() ServiceTaskSpecContainerSpecHostOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHostOutput) ToServiceTaskSpecContainerSpecHostOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHostOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHostOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecHost] { + return pulumix.Output[ServiceTaskSpecContainerSpecHost]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecHostOutput) Host() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecHost) string { return v.Host }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecHostOutput) Ip() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecHost) string { return v.Ip }).(pulumi.StringOutput) +} + +type ServiceTaskSpecContainerSpecHostArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecHostArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecHost)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecHostArrayOutput) ToServiceTaskSpecContainerSpecHostArrayOutput() ServiceTaskSpecContainerSpecHostArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHostArrayOutput) ToServiceTaskSpecContainerSpecHostArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecHostArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecHostArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecHost] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecHost]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecHostArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecContainerSpecHostOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecContainerSpecHost { + return vs[0].([]ServiceTaskSpecContainerSpecHost)[vs[1].(int)] + }).(ServiceTaskSpecContainerSpecHostOutput) +} + +type ServiceTaskSpecContainerSpecLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// ServiceTaskSpecContainerSpecLabelInput is an input type that accepts ServiceTaskSpecContainerSpecLabelArgs and ServiceTaskSpecContainerSpecLabelOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecLabelInput` via: +// +// ServiceTaskSpecContainerSpecLabelArgs{...} +type ServiceTaskSpecContainerSpecLabelInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecLabelOutput() ServiceTaskSpecContainerSpecLabelOutput + ToServiceTaskSpecContainerSpecLabelOutputWithContext(context.Context) ServiceTaskSpecContainerSpecLabelOutput +} + +type ServiceTaskSpecContainerSpecLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (ServiceTaskSpecContainerSpecLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecLabel)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecLabelArgs) ToServiceTaskSpecContainerSpecLabelOutput() ServiceTaskSpecContainerSpecLabelOutput { + return i.ToServiceTaskSpecContainerSpecLabelOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecLabelArgs) ToServiceTaskSpecContainerSpecLabelOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecLabelOutput) +} + +func (i ServiceTaskSpecContainerSpecLabelArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecLabel] { + return pulumix.Output[ServiceTaskSpecContainerSpecLabel]{ + OutputState: i.ToServiceTaskSpecContainerSpecLabelOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecContainerSpecLabelArrayInput is an input type that accepts ServiceTaskSpecContainerSpecLabelArray and ServiceTaskSpecContainerSpecLabelArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecLabelArrayInput` via: +// +// ServiceTaskSpecContainerSpecLabelArray{ ServiceTaskSpecContainerSpecLabelArgs{...} } +type ServiceTaskSpecContainerSpecLabelArrayInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecLabelArrayOutput() ServiceTaskSpecContainerSpecLabelArrayOutput + ToServiceTaskSpecContainerSpecLabelArrayOutputWithContext(context.Context) ServiceTaskSpecContainerSpecLabelArrayOutput +} + +type ServiceTaskSpecContainerSpecLabelArray []ServiceTaskSpecContainerSpecLabelInput + +func (ServiceTaskSpecContainerSpecLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecLabel)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecLabelArray) ToServiceTaskSpecContainerSpecLabelArrayOutput() ServiceTaskSpecContainerSpecLabelArrayOutput { + return i.ToServiceTaskSpecContainerSpecLabelArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecLabelArray) ToServiceTaskSpecContainerSpecLabelArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecLabelArrayOutput) +} + +func (i ServiceTaskSpecContainerSpecLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecLabel] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecLabel]{ + OutputState: i.ToServiceTaskSpecContainerSpecLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecLabelOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecLabel)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecLabelOutput) ToServiceTaskSpecContainerSpecLabelOutput() ServiceTaskSpecContainerSpecLabelOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecLabelOutput) ToServiceTaskSpecContainerSpecLabelOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecLabelOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecLabelOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecLabel] { + return pulumix.Output[ServiceTaskSpecContainerSpecLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o ServiceTaskSpecContainerSpecLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o ServiceTaskSpecContainerSpecLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type ServiceTaskSpecContainerSpecLabelArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecLabel)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecLabelArrayOutput) ToServiceTaskSpecContainerSpecLabelArrayOutput() ServiceTaskSpecContainerSpecLabelArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecLabelArrayOutput) ToServiceTaskSpecContainerSpecLabelArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecLabelArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecLabel] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecLabel]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecLabelArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecContainerSpecLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecContainerSpecLabel { + return vs[0].([]ServiceTaskSpecContainerSpecLabel)[vs[1].(int)] + }).(ServiceTaskSpecContainerSpecLabelOutput) +} + +type ServiceTaskSpecContainerSpecMount struct { + BindOptions *ServiceTaskSpecContainerSpecMountBindOptions `pulumi:"bindOptions"` + ReadOnly *bool `pulumi:"readOnly"` + Source *string `pulumi:"source"` + Target string `pulumi:"target"` + TmpfsOptions *ServiceTaskSpecContainerSpecMountTmpfsOptions `pulumi:"tmpfsOptions"` + Type string `pulumi:"type"` + VolumeOptions *ServiceTaskSpecContainerSpecMountVolumeOptions `pulumi:"volumeOptions"` +} + +// ServiceTaskSpecContainerSpecMountInput is an input type that accepts ServiceTaskSpecContainerSpecMountArgs and ServiceTaskSpecContainerSpecMountOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountInput` via: +// +// ServiceTaskSpecContainerSpecMountArgs{...} +type ServiceTaskSpecContainerSpecMountInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountOutput() ServiceTaskSpecContainerSpecMountOutput + ToServiceTaskSpecContainerSpecMountOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountOutput +} + +type ServiceTaskSpecContainerSpecMountArgs struct { + BindOptions ServiceTaskSpecContainerSpecMountBindOptionsPtrInput `pulumi:"bindOptions"` + ReadOnly pulumi.BoolPtrInput `pulumi:"readOnly"` + Source pulumi.StringPtrInput `pulumi:"source"` + Target pulumi.StringInput `pulumi:"target"` + TmpfsOptions ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrInput `pulumi:"tmpfsOptions"` + Type pulumi.StringInput `pulumi:"type"` + VolumeOptions ServiceTaskSpecContainerSpecMountVolumeOptionsPtrInput `pulumi:"volumeOptions"` +} + +func (ServiceTaskSpecContainerSpecMountArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMount)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecMountArgs) ToServiceTaskSpecContainerSpecMountOutput() ServiceTaskSpecContainerSpecMountOutput { + return i.ToServiceTaskSpecContainerSpecMountOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountArgs) ToServiceTaskSpecContainerSpecMountOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountOutput) +} + +func (i ServiceTaskSpecContainerSpecMountArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMount] { + return pulumix.Output[ServiceTaskSpecContainerSpecMount]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecContainerSpecMountArrayInput is an input type that accepts ServiceTaskSpecContainerSpecMountArray and ServiceTaskSpecContainerSpecMountArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountArrayInput` via: +// +// ServiceTaskSpecContainerSpecMountArray{ ServiceTaskSpecContainerSpecMountArgs{...} } +type ServiceTaskSpecContainerSpecMountArrayInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountArrayOutput() ServiceTaskSpecContainerSpecMountArrayOutput + ToServiceTaskSpecContainerSpecMountArrayOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountArrayOutput +} + +type ServiceTaskSpecContainerSpecMountArray []ServiceTaskSpecContainerSpecMountInput + +func (ServiceTaskSpecContainerSpecMountArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecMount)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecMountArray) ToServiceTaskSpecContainerSpecMountArrayOutput() ServiceTaskSpecContainerSpecMountArrayOutput { + return i.ToServiceTaskSpecContainerSpecMountArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountArray) ToServiceTaskSpecContainerSpecMountArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountArrayOutput) +} + +func (i ServiceTaskSpecContainerSpecMountArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecMount] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecMount]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecMountOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMount)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountOutput) ToServiceTaskSpecContainerSpecMountOutput() ServiceTaskSpecContainerSpecMountOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountOutput) ToServiceTaskSpecContainerSpecMountOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMount] { + return pulumix.Output[ServiceTaskSpecContainerSpecMount]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountOutput) BindOptions() ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMount) *ServiceTaskSpecContainerSpecMountBindOptions { + return v.BindOptions + }).(ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountOutput) ReadOnly() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMount) *bool { return v.ReadOnly }).(pulumi.BoolPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountOutput) Source() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMount) *string { return v.Source }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountOutput) Target() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMount) string { return v.Target }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecMountOutput) TmpfsOptions() ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMount) *ServiceTaskSpecContainerSpecMountTmpfsOptions { + return v.TmpfsOptions + }).(ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountOutput) Type() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMount) string { return v.Type }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecMountOutput) VolumeOptions() ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMount) *ServiceTaskSpecContainerSpecMountVolumeOptions { + return v.VolumeOptions + }).(ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) +} + +type ServiceTaskSpecContainerSpecMountArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecMount)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountArrayOutput) ToServiceTaskSpecContainerSpecMountArrayOutput() ServiceTaskSpecContainerSpecMountArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountArrayOutput) ToServiceTaskSpecContainerSpecMountArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecMount] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecMount]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecContainerSpecMountOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecContainerSpecMount { + return vs[0].([]ServiceTaskSpecContainerSpecMount)[vs[1].(int)] + }).(ServiceTaskSpecContainerSpecMountOutput) +} + +type ServiceTaskSpecContainerSpecMountBindOptions struct { + Propagation *string `pulumi:"propagation"` +} + +// ServiceTaskSpecContainerSpecMountBindOptionsInput is an input type that accepts ServiceTaskSpecContainerSpecMountBindOptionsArgs and ServiceTaskSpecContainerSpecMountBindOptionsOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountBindOptionsInput` via: +// +// ServiceTaskSpecContainerSpecMountBindOptionsArgs{...} +type ServiceTaskSpecContainerSpecMountBindOptionsInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountBindOptionsOutput() ServiceTaskSpecContainerSpecMountBindOptionsOutput + ToServiceTaskSpecContainerSpecMountBindOptionsOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountBindOptionsOutput +} + +type ServiceTaskSpecContainerSpecMountBindOptionsArgs struct { + Propagation pulumi.StringPtrInput `pulumi:"propagation"` +} + +func (ServiceTaskSpecContainerSpecMountBindOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountBindOptions)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecMountBindOptionsArgs) ToServiceTaskSpecContainerSpecMountBindOptionsOutput() ServiceTaskSpecContainerSpecMountBindOptionsOutput { + return i.ToServiceTaskSpecContainerSpecMountBindOptionsOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountBindOptionsArgs) ToServiceTaskSpecContainerSpecMountBindOptionsOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountBindOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountBindOptionsOutput) +} + +func (i ServiceTaskSpecContainerSpecMountBindOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountBindOptions] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountBindOptions]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountBindOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecMountBindOptionsArgs) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutput() ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return i.ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountBindOptionsArgs) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountBindOptionsOutput).ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecMountBindOptionsPtrInput is an input type that accepts ServiceTaskSpecContainerSpecMountBindOptionsArgs, ServiceTaskSpecContainerSpecMountBindOptionsPtr and ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountBindOptionsPtrInput` via: +// +// ServiceTaskSpecContainerSpecMountBindOptionsArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecMountBindOptionsPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutput() ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput + ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput +} + +type serviceTaskSpecContainerSpecMountBindOptionsPtrType ServiceTaskSpecContainerSpecMountBindOptionsArgs + +func ServiceTaskSpecContainerSpecMountBindOptionsPtr(v *ServiceTaskSpecContainerSpecMountBindOptionsArgs) ServiceTaskSpecContainerSpecMountBindOptionsPtrInput { + return (*serviceTaskSpecContainerSpecMountBindOptionsPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecMountBindOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecMountBindOptions)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecMountBindOptionsPtrType) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutput() ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return i.ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecMountBindOptionsPtrType) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecMountBindOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecMountBindOptions] { + return pulumix.Output[*ServiceTaskSpecContainerSpecMountBindOptions]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecMountBindOptionsOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountBindOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountBindOptions)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsOutput) ToServiceTaskSpecContainerSpecMountBindOptionsOutput() ServiceTaskSpecContainerSpecMountBindOptionsOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsOutput) ToServiceTaskSpecContainerSpecMountBindOptionsOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountBindOptionsOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsOutput) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutput() ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return o.ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsOutput) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecMountBindOptions) *ServiceTaskSpecContainerSpecMountBindOptions { + return &v + }).(ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountBindOptions] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountBindOptions]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsOutput) Propagation() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountBindOptions) *string { return v.Propagation }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecMountBindOptions)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutput() ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) ToServiceTaskSpecContainerSpecMountBindOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecMountBindOptions] { + return pulumix.Output[*ServiceTaskSpecContainerSpecMountBindOptions]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) Elem() ServiceTaskSpecContainerSpecMountBindOptionsOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountBindOptions) ServiceTaskSpecContainerSpecMountBindOptions { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecMountBindOptions + return ret + }).(ServiceTaskSpecContainerSpecMountBindOptionsOutput) +} + +func (o ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput) Propagation() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountBindOptions) *string { + if v == nil { + return nil + } + return v.Propagation + }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecMountTmpfsOptions struct { + // Scheduling mode for the service + Mode *int `pulumi:"mode"` + SizeBytes *int `pulumi:"sizeBytes"` +} + +// ServiceTaskSpecContainerSpecMountTmpfsOptionsInput is an input type that accepts ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs and ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountTmpfsOptionsInput` via: +// +// ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs{...} +type ServiceTaskSpecContainerSpecMountTmpfsOptionsInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput + ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput +} + +type ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs struct { + // Scheduling mode for the service + Mode pulumi.IntPtrInput `pulumi:"mode"` + SizeBytes pulumi.IntPtrInput `pulumi:"sizeBytes"` +} + +func (ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountTmpfsOptions)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs) ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput { + return i.ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs) ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) +} + +func (i ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountTmpfsOptions] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountTmpfsOptions]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return i.ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput).ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrInput is an input type that accepts ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs, ServiceTaskSpecContainerSpecMountTmpfsOptionsPtr and ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrInput` via: +// +// ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput + ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput +} + +type serviceTaskSpecContainerSpecMountTmpfsOptionsPtrType ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs + +func ServiceTaskSpecContainerSpecMountTmpfsOptionsPtr(v *ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs) ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrInput { + return (*serviceTaskSpecContainerSpecMountTmpfsOptionsPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecMountTmpfsOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecMountTmpfsOptions)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecMountTmpfsOptionsPtrType) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return i.ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecMountTmpfsOptionsPtrType) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecMountTmpfsOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecMountTmpfsOptions] { + return pulumix.Output[*ServiceTaskSpecContainerSpecMountTmpfsOptions]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountTmpfsOptions)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) ToServiceTaskSpecContainerSpecMountTmpfsOptionsOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return o.ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecMountTmpfsOptions) *ServiceTaskSpecContainerSpecMountTmpfsOptions { + return &v + }).(ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountTmpfsOptions] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountTmpfsOptions]{ + OutputState: o.OutputState, + } +} + +// Scheduling mode for the service +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) Mode() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountTmpfsOptions) *int { return v.Mode }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) SizeBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountTmpfsOptions) *int { return v.SizeBytes }).(pulumi.IntPtrOutput) +} + +type ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecMountTmpfsOptions)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput() ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) ToServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecMountTmpfsOptions] { + return pulumix.Output[*ServiceTaskSpecContainerSpecMountTmpfsOptions]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) Elem() ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountTmpfsOptions) ServiceTaskSpecContainerSpecMountTmpfsOptions { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecMountTmpfsOptions + return ret + }).(ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput) +} + +// Scheduling mode for the service +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) Mode() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountTmpfsOptions) *int { + if v == nil { + return nil + } + return v.Mode + }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput) SizeBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountTmpfsOptions) *int { + if v == nil { + return nil + } + return v.SizeBytes + }).(pulumi.IntPtrOutput) +} + +type ServiceTaskSpecContainerSpecMountVolumeOptions struct { + DriverName *string `pulumi:"driverName"` + DriverOptions map[string]string `pulumi:"driverOptions"` + // User-defined key/value metadata + Labels []ServiceTaskSpecContainerSpecMountVolumeOptionsLabel `pulumi:"labels"` + NoCopy *bool `pulumi:"noCopy"` +} + +// ServiceTaskSpecContainerSpecMountVolumeOptionsInput is an input type that accepts ServiceTaskSpecContainerSpecMountVolumeOptionsArgs and ServiceTaskSpecContainerSpecMountVolumeOptionsOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountVolumeOptionsInput` via: +// +// ServiceTaskSpecContainerSpecMountVolumeOptionsArgs{...} +type ServiceTaskSpecContainerSpecMountVolumeOptionsInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountVolumeOptionsOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsOutput + ToServiceTaskSpecContainerSpecMountVolumeOptionsOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsOutput +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsArgs struct { + DriverName pulumi.StringPtrInput `pulumi:"driverName"` + DriverOptions pulumi.StringMapInput `pulumi:"driverOptions"` + // User-defined key/value metadata + Labels ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayInput `pulumi:"labels"` + NoCopy pulumi.BoolPtrInput `pulumi:"noCopy"` +} + +func (ServiceTaskSpecContainerSpecMountVolumeOptionsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptions)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsArgs) ToServiceTaskSpecContainerSpecMountVolumeOptionsOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsOutput { + return i.ToServiceTaskSpecContainerSpecMountVolumeOptionsOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsArgs) ToServiceTaskSpecContainerSpecMountVolumeOptionsOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptions] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptions]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountVolumeOptionsOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsArgs) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return i.ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsArgs) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountVolumeOptionsOutput).ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecMountVolumeOptionsPtrInput is an input type that accepts ServiceTaskSpecContainerSpecMountVolumeOptionsArgs, ServiceTaskSpecContainerSpecMountVolumeOptionsPtr and ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountVolumeOptionsPtrInput` via: +// +// ServiceTaskSpecContainerSpecMountVolumeOptionsArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecMountVolumeOptionsPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput + ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput +} + +type serviceTaskSpecContainerSpecMountVolumeOptionsPtrType ServiceTaskSpecContainerSpecMountVolumeOptionsArgs + +func ServiceTaskSpecContainerSpecMountVolumeOptionsPtr(v *ServiceTaskSpecContainerSpecMountVolumeOptionsArgs) ServiceTaskSpecContainerSpecMountVolumeOptionsPtrInput { + return (*serviceTaskSpecContainerSpecMountVolumeOptionsPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecMountVolumeOptionsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecMountVolumeOptions)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecMountVolumeOptionsPtrType) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return i.ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecMountVolumeOptionsPtrType) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecMountVolumeOptionsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecMountVolumeOptions] { + return pulumix.Output[*ServiceTaskSpecContainerSpecMountVolumeOptions]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptions)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return o.ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecMountVolumeOptions) *ServiceTaskSpecContainerSpecMountVolumeOptions { + return &v + }).(ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptions] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptions]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) DriverName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountVolumeOptions) *string { return v.DriverName }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) DriverOptions() pulumi.StringMapOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountVolumeOptions) map[string]string { return v.DriverOptions }).(pulumi.StringMapOutput) +} + +// User-defined key/value metadata +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) Labels() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountVolumeOptions) []ServiceTaskSpecContainerSpecMountVolumeOptionsLabel { + return v.Labels + }).(ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) NoCopy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountVolumeOptions) *bool { return v.NoCopy }).(pulumi.BoolPtrOutput) +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecMountVolumeOptions)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecMountVolumeOptions] { + return pulumix.Output[*ServiceTaskSpecContainerSpecMountVolumeOptions]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) Elem() ServiceTaskSpecContainerSpecMountVolumeOptionsOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountVolumeOptions) ServiceTaskSpecContainerSpecMountVolumeOptions { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecMountVolumeOptions + return ret + }).(ServiceTaskSpecContainerSpecMountVolumeOptionsOutput) +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) DriverName() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountVolumeOptions) *string { + if v == nil { + return nil + } + return v.DriverName + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) DriverOptions() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountVolumeOptions) map[string]string { + if v == nil { + return nil + } + return v.DriverOptions + }).(pulumi.StringMapOutput) +} + +// User-defined key/value metadata +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) Labels() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountVolumeOptions) []ServiceTaskSpecContainerSpecMountVolumeOptionsLabel { + if v == nil { + return nil + } + return v.Labels + }).(ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput) NoCopy() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecMountVolumeOptions) *bool { + if v == nil { + return nil + } + return v.NoCopy + }).(pulumi.BoolPtrOutput) +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// ServiceTaskSpecContainerSpecMountVolumeOptionsLabelInput is an input type that accepts ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs and ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountVolumeOptionsLabelInput` via: +// +// ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs{...} +type ServiceTaskSpecContainerSpecMountVolumeOptionsLabelInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput + ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptionsLabel)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput { + return i.ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptionsLabel] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptionsLabel]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayInput is an input type that accepts ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray and ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayInput` via: +// +// ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray{ ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs{...} } +type ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput + ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutputWithContext(context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray []ServiceTaskSpecContainerSpecMountVolumeOptionsLabelInput + +func (ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecMountVolumeOptionsLabel)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput { + return i.ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) +} + +func (i ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecMountVolumeOptionsLabel] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecMountVolumeOptionsLabel]{ + OutputState: i.ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptionsLabel)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptionsLabel] { + return pulumix.Output[ServiceTaskSpecContainerSpecMountVolumeOptionsLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountVolumeOptionsLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecMountVolumeOptionsLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecMountVolumeOptionsLabel)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput() ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) ToServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecMountVolumeOptionsLabel] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecMountVolumeOptionsLabel]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecContainerSpecMountVolumeOptionsLabel { + return vs[0].([]ServiceTaskSpecContainerSpecMountVolumeOptionsLabel)[vs[1].(int)] + }).(ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput) +} + +type ServiceTaskSpecContainerSpecPrivileges struct { + CredentialSpec *ServiceTaskSpecContainerSpecPrivilegesCredentialSpec `pulumi:"credentialSpec"` + SeLinuxContext *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext `pulumi:"seLinuxContext"` +} + +// ServiceTaskSpecContainerSpecPrivilegesInput is an input type that accepts ServiceTaskSpecContainerSpecPrivilegesArgs and ServiceTaskSpecContainerSpecPrivilegesOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecPrivilegesInput` via: +// +// ServiceTaskSpecContainerSpecPrivilegesArgs{...} +type ServiceTaskSpecContainerSpecPrivilegesInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecPrivilegesOutput() ServiceTaskSpecContainerSpecPrivilegesOutput + ToServiceTaskSpecContainerSpecPrivilegesOutputWithContext(context.Context) ServiceTaskSpecContainerSpecPrivilegesOutput +} + +type ServiceTaskSpecContainerSpecPrivilegesArgs struct { + CredentialSpec ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrInput `pulumi:"credentialSpec"` + SeLinuxContext ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrInput `pulumi:"seLinuxContext"` +} + +func (ServiceTaskSpecContainerSpecPrivilegesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivileges)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecPrivilegesArgs) ToServiceTaskSpecContainerSpecPrivilegesOutput() ServiceTaskSpecContainerSpecPrivilegesOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesArgs) ToServiceTaskSpecContainerSpecPrivilegesOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesOutput) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecPrivileges] { + return pulumix.Output[ServiceTaskSpecContainerSpecPrivileges]{ + OutputState: i.ToServiceTaskSpecContainerSpecPrivilegesOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecPrivilegesArgs) ToServiceTaskSpecContainerSpecPrivilegesPtrOutput() ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesArgs) ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesOutput).ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecPrivilegesPtrInput is an input type that accepts ServiceTaskSpecContainerSpecPrivilegesArgs, ServiceTaskSpecContainerSpecPrivilegesPtr and ServiceTaskSpecContainerSpecPrivilegesPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecPrivilegesPtrInput` via: +// +// ServiceTaskSpecContainerSpecPrivilegesArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecPrivilegesPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecPrivilegesPtrOutput() ServiceTaskSpecContainerSpecPrivilegesPtrOutput + ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecPrivilegesPtrOutput +} + +type serviceTaskSpecContainerSpecPrivilegesPtrType ServiceTaskSpecContainerSpecPrivilegesArgs + +func ServiceTaskSpecContainerSpecPrivilegesPtr(v *ServiceTaskSpecContainerSpecPrivilegesArgs) ServiceTaskSpecContainerSpecPrivilegesPtrInput { + return (*serviceTaskSpecContainerSpecPrivilegesPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecPrivilegesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecPrivileges)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecPrivilegesPtrType) ToServiceTaskSpecContainerSpecPrivilegesPtrOutput() ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecPrivilegesPtrType) ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecPrivilegesPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecPrivileges] { + return pulumix.Output[*ServiceTaskSpecContainerSpecPrivileges]{ + OutputState: i.ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecPrivilegesOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecPrivilegesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivileges)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecPrivilegesOutput) ToServiceTaskSpecContainerSpecPrivilegesOutput() ServiceTaskSpecContainerSpecPrivilegesOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesOutput) ToServiceTaskSpecContainerSpecPrivilegesOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesOutput) ToServiceTaskSpecContainerSpecPrivilegesPtrOutput() ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return o.ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesOutput) ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecPrivileges) *ServiceTaskSpecContainerSpecPrivileges { + return &v + }).(ServiceTaskSpecContainerSpecPrivilegesPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecPrivileges] { + return pulumix.Output[ServiceTaskSpecContainerSpecPrivileges]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecPrivilegesOutput) CredentialSpec() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivileges) *ServiceTaskSpecContainerSpecPrivilegesCredentialSpec { + return v.CredentialSpec + }).(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesOutput) SeLinuxContext() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivileges) *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext { + return v.SeLinuxContext + }).(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) +} + +type ServiceTaskSpecContainerSpecPrivilegesPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecPrivilegesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecPrivileges)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecPrivilegesPtrOutput) ToServiceTaskSpecContainerSpecPrivilegesPtrOutput() ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesPtrOutput) ToServiceTaskSpecContainerSpecPrivilegesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecPrivileges] { + return pulumix.Output[*ServiceTaskSpecContainerSpecPrivileges]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecPrivilegesPtrOutput) Elem() ServiceTaskSpecContainerSpecPrivilegesOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivileges) ServiceTaskSpecContainerSpecPrivileges { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecPrivileges + return ret + }).(ServiceTaskSpecContainerSpecPrivilegesOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesPtrOutput) CredentialSpec() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivileges) *ServiceTaskSpecContainerSpecPrivilegesCredentialSpec { + if v == nil { + return nil + } + return v.CredentialSpec + }).(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesPtrOutput) SeLinuxContext() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivileges) *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext { + if v == nil { + return nil + } + return v.SeLinuxContext + }).(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) +} + +type ServiceTaskSpecContainerSpecPrivilegesCredentialSpec struct { + File *string `pulumi:"file"` + Registry *string `pulumi:"registry"` +} + +// ServiceTaskSpecContainerSpecPrivilegesCredentialSpecInput is an input type that accepts ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs and ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecPrivilegesCredentialSpecInput` via: +// +// ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs{...} +type ServiceTaskSpecContainerSpecPrivilegesCredentialSpecInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput + ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutputWithContext(context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput +} + +type ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs struct { + File pulumi.StringPtrInput `pulumi:"file"` + Registry pulumi.StringPtrInput `pulumi:"registry"` +} + +func (ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesCredentialSpec)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesCredentialSpec] { + return pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesCredentialSpec]{ + OutputState: i.ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput).ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrInput is an input type that accepts ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs, ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtr and ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrInput` via: +// +// ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput + ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput +} + +type serviceTaskSpecContainerSpecPrivilegesCredentialSpecPtrType ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs + +func ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtr(v *ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrInput { + return (*serviceTaskSpecContainerSpecPrivilegesCredentialSpecPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecPrivilegesCredentialSpecPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecPrivilegesCredentialSpec)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecPrivilegesCredentialSpecPtrType) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecPrivilegesCredentialSpecPtrType) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecPrivilegesCredentialSpecPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesCredentialSpec] { + return pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesCredentialSpec]{ + OutputState: i.ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesCredentialSpec)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return o.ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecPrivilegesCredentialSpec) *ServiceTaskSpecContainerSpecPrivilegesCredentialSpec { + return &v + }).(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesCredentialSpec] { + return pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesCredentialSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) File() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivilegesCredentialSpec) *string { return v.File }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) Registry() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivilegesCredentialSpec) *string { return v.Registry }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecPrivilegesCredentialSpec)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) ToServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesCredentialSpec] { + return pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesCredentialSpec]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) Elem() ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesCredentialSpec) ServiceTaskSpecContainerSpecPrivilegesCredentialSpec { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecPrivilegesCredentialSpec + return ret + }).(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) File() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesCredentialSpec) *string { + if v == nil { + return nil + } + return v.File + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput) Registry() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesCredentialSpec) *string { + if v == nil { + return nil + } + return v.Registry + }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext struct { + Disable *bool `pulumi:"disable"` + Level *string `pulumi:"level"` + Role *string `pulumi:"role"` + Type *string `pulumi:"type"` + User *string `pulumi:"user"` +} + +// ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextInput is an input type that accepts ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs and ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextInput` via: +// +// ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs{...} +type ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput + ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutputWithContext(context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput +} + +type ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs struct { + Disable pulumi.BoolPtrInput `pulumi:"disable"` + Level pulumi.StringPtrInput `pulumi:"level"` + Role pulumi.StringPtrInput `pulumi:"role"` + Type pulumi.StringPtrInput `pulumi:"type"` + User pulumi.StringPtrInput `pulumi:"user"` +} + +func (ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext] { + return pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext]{ + OutputState: i.ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput).ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrInput is an input type that accepts ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs, ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtr and ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrInput` via: +// +// ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput + ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput +} + +type serviceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrType ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs + +func ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtr(v *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrInput { + return (*serviceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrType)(v) +} + +func (*serviceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext)(nil)).Elem() +} + +func (i *serviceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrType) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return i.ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrType) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) +} + +func (i *serviceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext] { + return pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext]{ + OutputState: i.ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return o.ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext { + return &v + }).(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext] { + return pulumix.Output[ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) Disable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *bool { return v.Disable }).(pulumi.BoolPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) Level() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { return v.Level }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) Role() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { return v.Role }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { return v.Type }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) User() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { return v.User }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) ToServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext] { + return pulumix.Output[*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) Elem() ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext { + if v != nil { + return *v + } + var ret ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext + return ret + }).(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) Disable() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *bool { + if v == nil { + return nil + } + return v.Disable + }).(pulumi.BoolPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) Level() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { + if v == nil { + return nil + } + return v.Level + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) Role() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { + if v == nil { + return nil + } + return v.Role + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) Type() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { + if v == nil { + return nil + } + return v.Type + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput) User() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecContainerSpecPrivilegesSeLinuxContext) *string { + if v == nil { + return nil + } + return v.User + }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecSecret struct { + FileGid *string `pulumi:"fileGid"` + FileMode *int `pulumi:"fileMode"` + FileName string `pulumi:"fileName"` + FileUid *string `pulumi:"fileUid"` + SecretId string `pulumi:"secretId"` + SecretName *string `pulumi:"secretName"` +} + +// ServiceTaskSpecContainerSpecSecretInput is an input type that accepts ServiceTaskSpecContainerSpecSecretArgs and ServiceTaskSpecContainerSpecSecretOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecSecretInput` via: +// +// ServiceTaskSpecContainerSpecSecretArgs{...} +type ServiceTaskSpecContainerSpecSecretInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecSecretOutput() ServiceTaskSpecContainerSpecSecretOutput + ToServiceTaskSpecContainerSpecSecretOutputWithContext(context.Context) ServiceTaskSpecContainerSpecSecretOutput +} + +type ServiceTaskSpecContainerSpecSecretArgs struct { + FileGid pulumi.StringPtrInput `pulumi:"fileGid"` + FileMode pulumi.IntPtrInput `pulumi:"fileMode"` + FileName pulumi.StringInput `pulumi:"fileName"` + FileUid pulumi.StringPtrInput `pulumi:"fileUid"` + SecretId pulumi.StringInput `pulumi:"secretId"` + SecretName pulumi.StringPtrInput `pulumi:"secretName"` +} + +func (ServiceTaskSpecContainerSpecSecretArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecSecret)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecSecretArgs) ToServiceTaskSpecContainerSpecSecretOutput() ServiceTaskSpecContainerSpecSecretOutput { + return i.ToServiceTaskSpecContainerSpecSecretOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecSecretArgs) ToServiceTaskSpecContainerSpecSecretOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecSecretOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecSecretOutput) +} + +func (i ServiceTaskSpecContainerSpecSecretArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecSecret] { + return pulumix.Output[ServiceTaskSpecContainerSpecSecret]{ + OutputState: i.ToServiceTaskSpecContainerSpecSecretOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecContainerSpecSecretArrayInput is an input type that accepts ServiceTaskSpecContainerSpecSecretArray and ServiceTaskSpecContainerSpecSecretArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecContainerSpecSecretArrayInput` via: +// +// ServiceTaskSpecContainerSpecSecretArray{ ServiceTaskSpecContainerSpecSecretArgs{...} } +type ServiceTaskSpecContainerSpecSecretArrayInput interface { + pulumi.Input + + ToServiceTaskSpecContainerSpecSecretArrayOutput() ServiceTaskSpecContainerSpecSecretArrayOutput + ToServiceTaskSpecContainerSpecSecretArrayOutputWithContext(context.Context) ServiceTaskSpecContainerSpecSecretArrayOutput +} + +type ServiceTaskSpecContainerSpecSecretArray []ServiceTaskSpecContainerSpecSecretInput + +func (ServiceTaskSpecContainerSpecSecretArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecSecret)(nil)).Elem() +} + +func (i ServiceTaskSpecContainerSpecSecretArray) ToServiceTaskSpecContainerSpecSecretArrayOutput() ServiceTaskSpecContainerSpecSecretArrayOutput { + return i.ToServiceTaskSpecContainerSpecSecretArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecContainerSpecSecretArray) ToServiceTaskSpecContainerSpecSecretArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecSecretArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecContainerSpecSecretArrayOutput) +} + +func (i ServiceTaskSpecContainerSpecSecretArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecSecret] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecSecret]{ + OutputState: i.ToServiceTaskSpecContainerSpecSecretArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecContainerSpecSecretOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecSecretOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecContainerSpecSecret)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) ToServiceTaskSpecContainerSpecSecretOutput() ServiceTaskSpecContainerSpecSecretOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) ToServiceTaskSpecContainerSpecSecretOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecSecretOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecContainerSpecSecret] { + return pulumix.Output[ServiceTaskSpecContainerSpecSecret]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) FileGid() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecSecret) *string { return v.FileGid }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) FileMode() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecSecret) *int { return v.FileMode }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) FileName() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecSecret) string { return v.FileName }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) FileUid() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecSecret) *string { return v.FileUid }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) SecretId() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecSecret) string { return v.SecretId }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecContainerSpecSecretOutput) SecretName() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecContainerSpecSecret) *string { return v.SecretName }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecContainerSpecSecretArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecContainerSpecSecretArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecContainerSpecSecret)(nil)).Elem() +} + +func (o ServiceTaskSpecContainerSpecSecretArrayOutput) ToServiceTaskSpecContainerSpecSecretArrayOutput() ServiceTaskSpecContainerSpecSecretArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecSecretArrayOutput) ToServiceTaskSpecContainerSpecSecretArrayOutputWithContext(ctx context.Context) ServiceTaskSpecContainerSpecSecretArrayOutput { + return o +} + +func (o ServiceTaskSpecContainerSpecSecretArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecContainerSpecSecret] { + return pulumix.Output[[]ServiceTaskSpecContainerSpecSecret]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecContainerSpecSecretArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecContainerSpecSecretOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecContainerSpecSecret { + return vs[0].([]ServiceTaskSpecContainerSpecSecret)[vs[1].(int)] + }).(ServiceTaskSpecContainerSpecSecretOutput) +} + +type ServiceTaskSpecLogDriver struct { + // Name of the service + Name string `pulumi:"name"` + Options map[string]string `pulumi:"options"` +} + +// ServiceTaskSpecLogDriverInput is an input type that accepts ServiceTaskSpecLogDriverArgs and ServiceTaskSpecLogDriverOutput values. +// You can construct a concrete instance of `ServiceTaskSpecLogDriverInput` via: +// +// ServiceTaskSpecLogDriverArgs{...} +type ServiceTaskSpecLogDriverInput interface { + pulumi.Input + + ToServiceTaskSpecLogDriverOutput() ServiceTaskSpecLogDriverOutput + ToServiceTaskSpecLogDriverOutputWithContext(context.Context) ServiceTaskSpecLogDriverOutput +} + +type ServiceTaskSpecLogDriverArgs struct { + // Name of the service + Name pulumi.StringInput `pulumi:"name"` + Options pulumi.StringMapInput `pulumi:"options"` +} + +func (ServiceTaskSpecLogDriverArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecLogDriver)(nil)).Elem() +} + +func (i ServiceTaskSpecLogDriverArgs) ToServiceTaskSpecLogDriverOutput() ServiceTaskSpecLogDriverOutput { + return i.ToServiceTaskSpecLogDriverOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecLogDriverArgs) ToServiceTaskSpecLogDriverOutputWithContext(ctx context.Context) ServiceTaskSpecLogDriverOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecLogDriverOutput) +} + +func (i ServiceTaskSpecLogDriverArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecLogDriver] { + return pulumix.Output[ServiceTaskSpecLogDriver]{ + OutputState: i.ToServiceTaskSpecLogDriverOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecLogDriverArgs) ToServiceTaskSpecLogDriverPtrOutput() ServiceTaskSpecLogDriverPtrOutput { + return i.ToServiceTaskSpecLogDriverPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecLogDriverArgs) ToServiceTaskSpecLogDriverPtrOutputWithContext(ctx context.Context) ServiceTaskSpecLogDriverPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecLogDriverOutput).ToServiceTaskSpecLogDriverPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecLogDriverPtrInput is an input type that accepts ServiceTaskSpecLogDriverArgs, ServiceTaskSpecLogDriverPtr and ServiceTaskSpecLogDriverPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecLogDriverPtrInput` via: +// +// ServiceTaskSpecLogDriverArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecLogDriverPtrInput interface { + pulumi.Input + + ToServiceTaskSpecLogDriverPtrOutput() ServiceTaskSpecLogDriverPtrOutput + ToServiceTaskSpecLogDriverPtrOutputWithContext(context.Context) ServiceTaskSpecLogDriverPtrOutput +} + +type serviceTaskSpecLogDriverPtrType ServiceTaskSpecLogDriverArgs + +func ServiceTaskSpecLogDriverPtr(v *ServiceTaskSpecLogDriverArgs) ServiceTaskSpecLogDriverPtrInput { + return (*serviceTaskSpecLogDriverPtrType)(v) +} + +func (*serviceTaskSpecLogDriverPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecLogDriver)(nil)).Elem() +} + +func (i *serviceTaskSpecLogDriverPtrType) ToServiceTaskSpecLogDriverPtrOutput() ServiceTaskSpecLogDriverPtrOutput { + return i.ToServiceTaskSpecLogDriverPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecLogDriverPtrType) ToServiceTaskSpecLogDriverPtrOutputWithContext(ctx context.Context) ServiceTaskSpecLogDriverPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecLogDriverPtrOutput) +} + +func (i *serviceTaskSpecLogDriverPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecLogDriver] { + return pulumix.Output[*ServiceTaskSpecLogDriver]{ + OutputState: i.ToServiceTaskSpecLogDriverPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecLogDriverOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecLogDriverOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecLogDriver)(nil)).Elem() +} + +func (o ServiceTaskSpecLogDriverOutput) ToServiceTaskSpecLogDriverOutput() ServiceTaskSpecLogDriverOutput { + return o +} + +func (o ServiceTaskSpecLogDriverOutput) ToServiceTaskSpecLogDriverOutputWithContext(ctx context.Context) ServiceTaskSpecLogDriverOutput { + return o +} + +func (o ServiceTaskSpecLogDriverOutput) ToServiceTaskSpecLogDriverPtrOutput() ServiceTaskSpecLogDriverPtrOutput { + return o.ToServiceTaskSpecLogDriverPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecLogDriverOutput) ToServiceTaskSpecLogDriverPtrOutputWithContext(ctx context.Context) ServiceTaskSpecLogDriverPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecLogDriver) *ServiceTaskSpecLogDriver { + return &v + }).(ServiceTaskSpecLogDriverPtrOutput) +} + +func (o ServiceTaskSpecLogDriverOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecLogDriver] { + return pulumix.Output[ServiceTaskSpecLogDriver]{ + OutputState: o.OutputState, + } +} + +// Name of the service +func (o ServiceTaskSpecLogDriverOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecLogDriver) string { return v.Name }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecLogDriverOutput) Options() pulumi.StringMapOutput { + return o.ApplyT(func(v ServiceTaskSpecLogDriver) map[string]string { return v.Options }).(pulumi.StringMapOutput) +} + +type ServiceTaskSpecLogDriverPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecLogDriverPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecLogDriver)(nil)).Elem() +} + +func (o ServiceTaskSpecLogDriverPtrOutput) ToServiceTaskSpecLogDriverPtrOutput() ServiceTaskSpecLogDriverPtrOutput { + return o +} + +func (o ServiceTaskSpecLogDriverPtrOutput) ToServiceTaskSpecLogDriverPtrOutputWithContext(ctx context.Context) ServiceTaskSpecLogDriverPtrOutput { + return o +} + +func (o ServiceTaskSpecLogDriverPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecLogDriver] { + return pulumix.Output[*ServiceTaskSpecLogDriver]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecLogDriverPtrOutput) Elem() ServiceTaskSpecLogDriverOutput { + return o.ApplyT(func(v *ServiceTaskSpecLogDriver) ServiceTaskSpecLogDriver { + if v != nil { + return *v + } + var ret ServiceTaskSpecLogDriver + return ret + }).(ServiceTaskSpecLogDriverOutput) +} + +// Name of the service +func (o ServiceTaskSpecLogDriverPtrOutput) Name() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecLogDriver) *string { + if v == nil { + return nil + } + return &v.Name + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecLogDriverPtrOutput) Options() pulumi.StringMapOutput { + return o.ApplyT(func(v *ServiceTaskSpecLogDriver) map[string]string { + if v == nil { + return nil + } + return v.Options + }).(pulumi.StringMapOutput) +} + +type ServiceTaskSpecNetworksAdvanced struct { + Aliases []string `pulumi:"aliases"` + DriverOpts []string `pulumi:"driverOpts"` + // Name of the service + Name string `pulumi:"name"` +} + +// ServiceTaskSpecNetworksAdvancedInput is an input type that accepts ServiceTaskSpecNetworksAdvancedArgs and ServiceTaskSpecNetworksAdvancedOutput values. +// You can construct a concrete instance of `ServiceTaskSpecNetworksAdvancedInput` via: +// +// ServiceTaskSpecNetworksAdvancedArgs{...} +type ServiceTaskSpecNetworksAdvancedInput interface { + pulumi.Input + + ToServiceTaskSpecNetworksAdvancedOutput() ServiceTaskSpecNetworksAdvancedOutput + ToServiceTaskSpecNetworksAdvancedOutputWithContext(context.Context) ServiceTaskSpecNetworksAdvancedOutput +} + +type ServiceTaskSpecNetworksAdvancedArgs struct { + Aliases pulumi.StringArrayInput `pulumi:"aliases"` + DriverOpts pulumi.StringArrayInput `pulumi:"driverOpts"` + // Name of the service + Name pulumi.StringInput `pulumi:"name"` +} + +func (ServiceTaskSpecNetworksAdvancedArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecNetworksAdvanced)(nil)).Elem() +} + +func (i ServiceTaskSpecNetworksAdvancedArgs) ToServiceTaskSpecNetworksAdvancedOutput() ServiceTaskSpecNetworksAdvancedOutput { + return i.ToServiceTaskSpecNetworksAdvancedOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecNetworksAdvancedArgs) ToServiceTaskSpecNetworksAdvancedOutputWithContext(ctx context.Context) ServiceTaskSpecNetworksAdvancedOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecNetworksAdvancedOutput) +} + +func (i ServiceTaskSpecNetworksAdvancedArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecNetworksAdvanced] { + return pulumix.Output[ServiceTaskSpecNetworksAdvanced]{ + OutputState: i.ToServiceTaskSpecNetworksAdvancedOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecNetworksAdvancedArrayInput is an input type that accepts ServiceTaskSpecNetworksAdvancedArray and ServiceTaskSpecNetworksAdvancedArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecNetworksAdvancedArrayInput` via: +// +// ServiceTaskSpecNetworksAdvancedArray{ ServiceTaskSpecNetworksAdvancedArgs{...} } +type ServiceTaskSpecNetworksAdvancedArrayInput interface { + pulumi.Input + + ToServiceTaskSpecNetworksAdvancedArrayOutput() ServiceTaskSpecNetworksAdvancedArrayOutput + ToServiceTaskSpecNetworksAdvancedArrayOutputWithContext(context.Context) ServiceTaskSpecNetworksAdvancedArrayOutput +} + +type ServiceTaskSpecNetworksAdvancedArray []ServiceTaskSpecNetworksAdvancedInput + +func (ServiceTaskSpecNetworksAdvancedArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecNetworksAdvanced)(nil)).Elem() +} + +func (i ServiceTaskSpecNetworksAdvancedArray) ToServiceTaskSpecNetworksAdvancedArrayOutput() ServiceTaskSpecNetworksAdvancedArrayOutput { + return i.ToServiceTaskSpecNetworksAdvancedArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecNetworksAdvancedArray) ToServiceTaskSpecNetworksAdvancedArrayOutputWithContext(ctx context.Context) ServiceTaskSpecNetworksAdvancedArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecNetworksAdvancedArrayOutput) +} + +func (i ServiceTaskSpecNetworksAdvancedArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecNetworksAdvanced] { + return pulumix.Output[[]ServiceTaskSpecNetworksAdvanced]{ + OutputState: i.ToServiceTaskSpecNetworksAdvancedArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecNetworksAdvancedOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecNetworksAdvancedOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecNetworksAdvanced)(nil)).Elem() +} + +func (o ServiceTaskSpecNetworksAdvancedOutput) ToServiceTaskSpecNetworksAdvancedOutput() ServiceTaskSpecNetworksAdvancedOutput { + return o +} + +func (o ServiceTaskSpecNetworksAdvancedOutput) ToServiceTaskSpecNetworksAdvancedOutputWithContext(ctx context.Context) ServiceTaskSpecNetworksAdvancedOutput { + return o +} + +func (o ServiceTaskSpecNetworksAdvancedOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecNetworksAdvanced] { + return pulumix.Output[ServiceTaskSpecNetworksAdvanced]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecNetworksAdvancedOutput) Aliases() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecNetworksAdvanced) []string { return v.Aliases }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecNetworksAdvancedOutput) DriverOpts() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecNetworksAdvanced) []string { return v.DriverOpts }).(pulumi.StringArrayOutput) +} + +// Name of the service +func (o ServiceTaskSpecNetworksAdvancedOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecNetworksAdvanced) string { return v.Name }).(pulumi.StringOutput) +} + +type ServiceTaskSpecNetworksAdvancedArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecNetworksAdvancedArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecNetworksAdvanced)(nil)).Elem() +} + +func (o ServiceTaskSpecNetworksAdvancedArrayOutput) ToServiceTaskSpecNetworksAdvancedArrayOutput() ServiceTaskSpecNetworksAdvancedArrayOutput { + return o +} + +func (o ServiceTaskSpecNetworksAdvancedArrayOutput) ToServiceTaskSpecNetworksAdvancedArrayOutputWithContext(ctx context.Context) ServiceTaskSpecNetworksAdvancedArrayOutput { + return o +} + +func (o ServiceTaskSpecNetworksAdvancedArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecNetworksAdvanced] { + return pulumix.Output[[]ServiceTaskSpecNetworksAdvanced]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecNetworksAdvancedArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecNetworksAdvancedOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecNetworksAdvanced { + return vs[0].([]ServiceTaskSpecNetworksAdvanced)[vs[1].(int)] + }).(ServiceTaskSpecNetworksAdvancedOutput) +} + +type ServiceTaskSpecPlacement struct { + Constraints []string `pulumi:"constraints"` + MaxReplicas *int `pulumi:"maxReplicas"` + Platforms []ServiceTaskSpecPlacementPlatform `pulumi:"platforms"` + Prefs []string `pulumi:"prefs"` +} + +// ServiceTaskSpecPlacementInput is an input type that accepts ServiceTaskSpecPlacementArgs and ServiceTaskSpecPlacementOutput values. +// You can construct a concrete instance of `ServiceTaskSpecPlacementInput` via: +// +// ServiceTaskSpecPlacementArgs{...} +type ServiceTaskSpecPlacementInput interface { + pulumi.Input + + ToServiceTaskSpecPlacementOutput() ServiceTaskSpecPlacementOutput + ToServiceTaskSpecPlacementOutputWithContext(context.Context) ServiceTaskSpecPlacementOutput +} + +type ServiceTaskSpecPlacementArgs struct { + Constraints pulumi.StringArrayInput `pulumi:"constraints"` + MaxReplicas pulumi.IntPtrInput `pulumi:"maxReplicas"` + Platforms ServiceTaskSpecPlacementPlatformArrayInput `pulumi:"platforms"` + Prefs pulumi.StringArrayInput `pulumi:"prefs"` +} + +func (ServiceTaskSpecPlacementArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecPlacement)(nil)).Elem() +} + +func (i ServiceTaskSpecPlacementArgs) ToServiceTaskSpecPlacementOutput() ServiceTaskSpecPlacementOutput { + return i.ToServiceTaskSpecPlacementOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecPlacementArgs) ToServiceTaskSpecPlacementOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecPlacementOutput) +} + +func (i ServiceTaskSpecPlacementArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecPlacement] { + return pulumix.Output[ServiceTaskSpecPlacement]{ + OutputState: i.ToServiceTaskSpecPlacementOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecPlacementArgs) ToServiceTaskSpecPlacementPtrOutput() ServiceTaskSpecPlacementPtrOutput { + return i.ToServiceTaskSpecPlacementPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecPlacementArgs) ToServiceTaskSpecPlacementPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecPlacementOutput).ToServiceTaskSpecPlacementPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecPlacementPtrInput is an input type that accepts ServiceTaskSpecPlacementArgs, ServiceTaskSpecPlacementPtr and ServiceTaskSpecPlacementPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecPlacementPtrInput` via: +// +// ServiceTaskSpecPlacementArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecPlacementPtrInput interface { + pulumi.Input + + ToServiceTaskSpecPlacementPtrOutput() ServiceTaskSpecPlacementPtrOutput + ToServiceTaskSpecPlacementPtrOutputWithContext(context.Context) ServiceTaskSpecPlacementPtrOutput +} + +type serviceTaskSpecPlacementPtrType ServiceTaskSpecPlacementArgs + +func ServiceTaskSpecPlacementPtr(v *ServiceTaskSpecPlacementArgs) ServiceTaskSpecPlacementPtrInput { + return (*serviceTaskSpecPlacementPtrType)(v) +} + +func (*serviceTaskSpecPlacementPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecPlacement)(nil)).Elem() +} + +func (i *serviceTaskSpecPlacementPtrType) ToServiceTaskSpecPlacementPtrOutput() ServiceTaskSpecPlacementPtrOutput { + return i.ToServiceTaskSpecPlacementPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecPlacementPtrType) ToServiceTaskSpecPlacementPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecPlacementPtrOutput) +} + +func (i *serviceTaskSpecPlacementPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecPlacement] { + return pulumix.Output[*ServiceTaskSpecPlacement]{ + OutputState: i.ToServiceTaskSpecPlacementPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecPlacementOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecPlacementOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecPlacement)(nil)).Elem() +} + +func (o ServiceTaskSpecPlacementOutput) ToServiceTaskSpecPlacementOutput() ServiceTaskSpecPlacementOutput { + return o +} + +func (o ServiceTaskSpecPlacementOutput) ToServiceTaskSpecPlacementOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementOutput { + return o +} + +func (o ServiceTaskSpecPlacementOutput) ToServiceTaskSpecPlacementPtrOutput() ServiceTaskSpecPlacementPtrOutput { + return o.ToServiceTaskSpecPlacementPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecPlacementOutput) ToServiceTaskSpecPlacementPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecPlacement) *ServiceTaskSpecPlacement { + return &v + }).(ServiceTaskSpecPlacementPtrOutput) +} + +func (o ServiceTaskSpecPlacementOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecPlacement] { + return pulumix.Output[ServiceTaskSpecPlacement]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecPlacementOutput) Constraints() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecPlacement) []string { return v.Constraints }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecPlacementOutput) MaxReplicas() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecPlacement) *int { return v.MaxReplicas }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecPlacementOutput) Platforms() ServiceTaskSpecPlacementPlatformArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecPlacement) []ServiceTaskSpecPlacementPlatform { return v.Platforms }).(ServiceTaskSpecPlacementPlatformArrayOutput) +} + +func (o ServiceTaskSpecPlacementOutput) Prefs() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecPlacement) []string { return v.Prefs }).(pulumi.StringArrayOutput) +} + +type ServiceTaskSpecPlacementPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecPlacementPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecPlacement)(nil)).Elem() +} + +func (o ServiceTaskSpecPlacementPtrOutput) ToServiceTaskSpecPlacementPtrOutput() ServiceTaskSpecPlacementPtrOutput { + return o +} + +func (o ServiceTaskSpecPlacementPtrOutput) ToServiceTaskSpecPlacementPtrOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPtrOutput { + return o +} + +func (o ServiceTaskSpecPlacementPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecPlacement] { + return pulumix.Output[*ServiceTaskSpecPlacement]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecPlacementPtrOutput) Elem() ServiceTaskSpecPlacementOutput { + return o.ApplyT(func(v *ServiceTaskSpecPlacement) ServiceTaskSpecPlacement { + if v != nil { + return *v + } + var ret ServiceTaskSpecPlacement + return ret + }).(ServiceTaskSpecPlacementOutput) +} + +func (o ServiceTaskSpecPlacementPtrOutput) Constraints() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecPlacement) []string { + if v == nil { + return nil + } + return v.Constraints + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecPlacementPtrOutput) MaxReplicas() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecPlacement) *int { + if v == nil { + return nil + } + return v.MaxReplicas + }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecPlacementPtrOutput) Platforms() ServiceTaskSpecPlacementPlatformArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecPlacement) []ServiceTaskSpecPlacementPlatform { + if v == nil { + return nil + } + return v.Platforms + }).(ServiceTaskSpecPlacementPlatformArrayOutput) +} + +func (o ServiceTaskSpecPlacementPtrOutput) Prefs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecPlacement) []string { + if v == nil { + return nil + } + return v.Prefs + }).(pulumi.StringArrayOutput) +} + +type ServiceTaskSpecPlacementPlatform struct { + Architecture string `pulumi:"architecture"` + Os string `pulumi:"os"` +} + +// ServiceTaskSpecPlacementPlatformInput is an input type that accepts ServiceTaskSpecPlacementPlatformArgs and ServiceTaskSpecPlacementPlatformOutput values. +// You can construct a concrete instance of `ServiceTaskSpecPlacementPlatformInput` via: +// +// ServiceTaskSpecPlacementPlatformArgs{...} +type ServiceTaskSpecPlacementPlatformInput interface { + pulumi.Input + + ToServiceTaskSpecPlacementPlatformOutput() ServiceTaskSpecPlacementPlatformOutput + ToServiceTaskSpecPlacementPlatformOutputWithContext(context.Context) ServiceTaskSpecPlacementPlatformOutput +} + +type ServiceTaskSpecPlacementPlatformArgs struct { + Architecture pulumi.StringInput `pulumi:"architecture"` + Os pulumi.StringInput `pulumi:"os"` +} + +func (ServiceTaskSpecPlacementPlatformArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecPlacementPlatform)(nil)).Elem() +} + +func (i ServiceTaskSpecPlacementPlatformArgs) ToServiceTaskSpecPlacementPlatformOutput() ServiceTaskSpecPlacementPlatformOutput { + return i.ToServiceTaskSpecPlacementPlatformOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecPlacementPlatformArgs) ToServiceTaskSpecPlacementPlatformOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPlatformOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecPlacementPlatformOutput) +} + +func (i ServiceTaskSpecPlacementPlatformArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecPlacementPlatform] { + return pulumix.Output[ServiceTaskSpecPlacementPlatform]{ + OutputState: i.ToServiceTaskSpecPlacementPlatformOutputWithContext(ctx).OutputState, + } +} + +// ServiceTaskSpecPlacementPlatformArrayInput is an input type that accepts ServiceTaskSpecPlacementPlatformArray and ServiceTaskSpecPlacementPlatformArrayOutput values. +// You can construct a concrete instance of `ServiceTaskSpecPlacementPlatformArrayInput` via: +// +// ServiceTaskSpecPlacementPlatformArray{ ServiceTaskSpecPlacementPlatformArgs{...} } +type ServiceTaskSpecPlacementPlatformArrayInput interface { + pulumi.Input + + ToServiceTaskSpecPlacementPlatformArrayOutput() ServiceTaskSpecPlacementPlatformArrayOutput + ToServiceTaskSpecPlacementPlatformArrayOutputWithContext(context.Context) ServiceTaskSpecPlacementPlatformArrayOutput +} + +type ServiceTaskSpecPlacementPlatformArray []ServiceTaskSpecPlacementPlatformInput + +func (ServiceTaskSpecPlacementPlatformArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecPlacementPlatform)(nil)).Elem() +} + +func (i ServiceTaskSpecPlacementPlatformArray) ToServiceTaskSpecPlacementPlatformArrayOutput() ServiceTaskSpecPlacementPlatformArrayOutput { + return i.ToServiceTaskSpecPlacementPlatformArrayOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecPlacementPlatformArray) ToServiceTaskSpecPlacementPlatformArrayOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPlatformArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecPlacementPlatformArrayOutput) +} + +func (i ServiceTaskSpecPlacementPlatformArray) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecPlacementPlatform] { + return pulumix.Output[[]ServiceTaskSpecPlacementPlatform]{ + OutputState: i.ToServiceTaskSpecPlacementPlatformArrayOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecPlacementPlatformOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecPlacementPlatformOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecPlacementPlatform)(nil)).Elem() +} + +func (o ServiceTaskSpecPlacementPlatformOutput) ToServiceTaskSpecPlacementPlatformOutput() ServiceTaskSpecPlacementPlatformOutput { + return o +} + +func (o ServiceTaskSpecPlacementPlatformOutput) ToServiceTaskSpecPlacementPlatformOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPlatformOutput { + return o +} + +func (o ServiceTaskSpecPlacementPlatformOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecPlacementPlatform] { + return pulumix.Output[ServiceTaskSpecPlacementPlatform]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecPlacementPlatformOutput) Architecture() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecPlacementPlatform) string { return v.Architecture }).(pulumi.StringOutput) +} + +func (o ServiceTaskSpecPlacementPlatformOutput) Os() pulumi.StringOutput { + return o.ApplyT(func(v ServiceTaskSpecPlacementPlatform) string { return v.Os }).(pulumi.StringOutput) +} + +type ServiceTaskSpecPlacementPlatformArrayOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecPlacementPlatformArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]ServiceTaskSpecPlacementPlatform)(nil)).Elem() +} + +func (o ServiceTaskSpecPlacementPlatformArrayOutput) ToServiceTaskSpecPlacementPlatformArrayOutput() ServiceTaskSpecPlacementPlatformArrayOutput { + return o +} + +func (o ServiceTaskSpecPlacementPlatformArrayOutput) ToServiceTaskSpecPlacementPlatformArrayOutputWithContext(ctx context.Context) ServiceTaskSpecPlacementPlatformArrayOutput { + return o +} + +func (o ServiceTaskSpecPlacementPlatformArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]ServiceTaskSpecPlacementPlatform] { + return pulumix.Output[[]ServiceTaskSpecPlacementPlatform]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecPlacementPlatformArrayOutput) Index(i pulumi.IntInput) ServiceTaskSpecPlacementPlatformOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) ServiceTaskSpecPlacementPlatform { + return vs[0].([]ServiceTaskSpecPlacementPlatform)[vs[1].(int)] + }).(ServiceTaskSpecPlacementPlatformOutput) +} + +type ServiceTaskSpecResources struct { + Limits *ServiceTaskSpecResourcesLimits `pulumi:"limits"` + Reservation *ServiceTaskSpecResourcesReservation `pulumi:"reservation"` +} + +// ServiceTaskSpecResourcesInput is an input type that accepts ServiceTaskSpecResourcesArgs and ServiceTaskSpecResourcesOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesInput` via: +// +// ServiceTaskSpecResourcesArgs{...} +type ServiceTaskSpecResourcesInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesOutput() ServiceTaskSpecResourcesOutput + ToServiceTaskSpecResourcesOutputWithContext(context.Context) ServiceTaskSpecResourcesOutput +} + +type ServiceTaskSpecResourcesArgs struct { + Limits ServiceTaskSpecResourcesLimitsPtrInput `pulumi:"limits"` + Reservation ServiceTaskSpecResourcesReservationPtrInput `pulumi:"reservation"` +} + +func (ServiceTaskSpecResourcesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResources)(nil)).Elem() +} + +func (i ServiceTaskSpecResourcesArgs) ToServiceTaskSpecResourcesOutput() ServiceTaskSpecResourcesOutput { + return i.ToServiceTaskSpecResourcesOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesArgs) ToServiceTaskSpecResourcesOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesOutput) +} + +func (i ServiceTaskSpecResourcesArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResources] { + return pulumix.Output[ServiceTaskSpecResources]{ + OutputState: i.ToServiceTaskSpecResourcesOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecResourcesArgs) ToServiceTaskSpecResourcesPtrOutput() ServiceTaskSpecResourcesPtrOutput { + return i.ToServiceTaskSpecResourcesPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesArgs) ToServiceTaskSpecResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesOutput).ToServiceTaskSpecResourcesPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecResourcesPtrInput is an input type that accepts ServiceTaskSpecResourcesArgs, ServiceTaskSpecResourcesPtr and ServiceTaskSpecResourcesPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesPtrInput` via: +// +// ServiceTaskSpecResourcesArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecResourcesPtrInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesPtrOutput() ServiceTaskSpecResourcesPtrOutput + ToServiceTaskSpecResourcesPtrOutputWithContext(context.Context) ServiceTaskSpecResourcesPtrOutput +} + +type serviceTaskSpecResourcesPtrType ServiceTaskSpecResourcesArgs + +func ServiceTaskSpecResourcesPtr(v *ServiceTaskSpecResourcesArgs) ServiceTaskSpecResourcesPtrInput { + return (*serviceTaskSpecResourcesPtrType)(v) +} + +func (*serviceTaskSpecResourcesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResources)(nil)).Elem() +} + +func (i *serviceTaskSpecResourcesPtrType) ToServiceTaskSpecResourcesPtrOutput() ServiceTaskSpecResourcesPtrOutput { + return i.ToServiceTaskSpecResourcesPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecResourcesPtrType) ToServiceTaskSpecResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesPtrOutput) +} + +func (i *serviceTaskSpecResourcesPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResources] { + return pulumix.Output[*ServiceTaskSpecResources]{ + OutputState: i.ToServiceTaskSpecResourcesPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecResourcesOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResources)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesOutput) ToServiceTaskSpecResourcesOutput() ServiceTaskSpecResourcesOutput { + return o +} + +func (o ServiceTaskSpecResourcesOutput) ToServiceTaskSpecResourcesOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesOutput { + return o +} + +func (o ServiceTaskSpecResourcesOutput) ToServiceTaskSpecResourcesPtrOutput() ServiceTaskSpecResourcesPtrOutput { + return o.ToServiceTaskSpecResourcesPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecResourcesOutput) ToServiceTaskSpecResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecResources) *ServiceTaskSpecResources { + return &v + }).(ServiceTaskSpecResourcesPtrOutput) +} + +func (o ServiceTaskSpecResourcesOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResources] { + return pulumix.Output[ServiceTaskSpecResources]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesOutput) Limits() ServiceTaskSpecResourcesLimitsPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecResources) *ServiceTaskSpecResourcesLimits { return v.Limits }).(ServiceTaskSpecResourcesLimitsPtrOutput) +} + +func (o ServiceTaskSpecResourcesOutput) Reservation() ServiceTaskSpecResourcesReservationPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecResources) *ServiceTaskSpecResourcesReservation { return v.Reservation }).(ServiceTaskSpecResourcesReservationPtrOutput) +} + +type ServiceTaskSpecResourcesPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResources)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesPtrOutput) ToServiceTaskSpecResourcesPtrOutput() ServiceTaskSpecResourcesPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesPtrOutput) ToServiceTaskSpecResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResources] { + return pulumix.Output[*ServiceTaskSpecResources]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesPtrOutput) Elem() ServiceTaskSpecResourcesOutput { + return o.ApplyT(func(v *ServiceTaskSpecResources) ServiceTaskSpecResources { + if v != nil { + return *v + } + var ret ServiceTaskSpecResources + return ret + }).(ServiceTaskSpecResourcesOutput) +} + +func (o ServiceTaskSpecResourcesPtrOutput) Limits() ServiceTaskSpecResourcesLimitsPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecResources) *ServiceTaskSpecResourcesLimits { + if v == nil { + return nil + } + return v.Limits + }).(ServiceTaskSpecResourcesLimitsPtrOutput) +} + +func (o ServiceTaskSpecResourcesPtrOutput) Reservation() ServiceTaskSpecResourcesReservationPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecResources) *ServiceTaskSpecResourcesReservation { + if v == nil { + return nil + } + return v.Reservation + }).(ServiceTaskSpecResourcesReservationPtrOutput) +} + +type ServiceTaskSpecResourcesLimits struct { + MemoryBytes *int `pulumi:"memoryBytes"` + NanoCpus *int `pulumi:"nanoCpus"` +} + +// ServiceTaskSpecResourcesLimitsInput is an input type that accepts ServiceTaskSpecResourcesLimitsArgs and ServiceTaskSpecResourcesLimitsOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesLimitsInput` via: +// +// ServiceTaskSpecResourcesLimitsArgs{...} +type ServiceTaskSpecResourcesLimitsInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesLimitsOutput() ServiceTaskSpecResourcesLimitsOutput + ToServiceTaskSpecResourcesLimitsOutputWithContext(context.Context) ServiceTaskSpecResourcesLimitsOutput +} + +type ServiceTaskSpecResourcesLimitsArgs struct { + MemoryBytes pulumi.IntPtrInput `pulumi:"memoryBytes"` + NanoCpus pulumi.IntPtrInput `pulumi:"nanoCpus"` +} + +func (ServiceTaskSpecResourcesLimitsArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResourcesLimits)(nil)).Elem() +} + +func (i ServiceTaskSpecResourcesLimitsArgs) ToServiceTaskSpecResourcesLimitsOutput() ServiceTaskSpecResourcesLimitsOutput { + return i.ToServiceTaskSpecResourcesLimitsOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesLimitsArgs) ToServiceTaskSpecResourcesLimitsOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesLimitsOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesLimitsOutput) +} + +func (i ServiceTaskSpecResourcesLimitsArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResourcesLimits] { + return pulumix.Output[ServiceTaskSpecResourcesLimits]{ + OutputState: i.ToServiceTaskSpecResourcesLimitsOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecResourcesLimitsArgs) ToServiceTaskSpecResourcesLimitsPtrOutput() ServiceTaskSpecResourcesLimitsPtrOutput { + return i.ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesLimitsArgs) ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesLimitsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesLimitsOutput).ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecResourcesLimitsPtrInput is an input type that accepts ServiceTaskSpecResourcesLimitsArgs, ServiceTaskSpecResourcesLimitsPtr and ServiceTaskSpecResourcesLimitsPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesLimitsPtrInput` via: +// +// ServiceTaskSpecResourcesLimitsArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecResourcesLimitsPtrInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesLimitsPtrOutput() ServiceTaskSpecResourcesLimitsPtrOutput + ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(context.Context) ServiceTaskSpecResourcesLimitsPtrOutput +} + +type serviceTaskSpecResourcesLimitsPtrType ServiceTaskSpecResourcesLimitsArgs + +func ServiceTaskSpecResourcesLimitsPtr(v *ServiceTaskSpecResourcesLimitsArgs) ServiceTaskSpecResourcesLimitsPtrInput { + return (*serviceTaskSpecResourcesLimitsPtrType)(v) +} + +func (*serviceTaskSpecResourcesLimitsPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResourcesLimits)(nil)).Elem() +} + +func (i *serviceTaskSpecResourcesLimitsPtrType) ToServiceTaskSpecResourcesLimitsPtrOutput() ServiceTaskSpecResourcesLimitsPtrOutput { + return i.ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecResourcesLimitsPtrType) ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesLimitsPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesLimitsPtrOutput) +} + +func (i *serviceTaskSpecResourcesLimitsPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResourcesLimits] { + return pulumix.Output[*ServiceTaskSpecResourcesLimits]{ + OutputState: i.ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecResourcesLimitsOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesLimitsOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResourcesLimits)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesLimitsOutput) ToServiceTaskSpecResourcesLimitsOutput() ServiceTaskSpecResourcesLimitsOutput { + return o +} + +func (o ServiceTaskSpecResourcesLimitsOutput) ToServiceTaskSpecResourcesLimitsOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesLimitsOutput { + return o +} + +func (o ServiceTaskSpecResourcesLimitsOutput) ToServiceTaskSpecResourcesLimitsPtrOutput() ServiceTaskSpecResourcesLimitsPtrOutput { + return o.ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecResourcesLimitsOutput) ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesLimitsPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecResourcesLimits) *ServiceTaskSpecResourcesLimits { + return &v + }).(ServiceTaskSpecResourcesLimitsPtrOutput) +} + +func (o ServiceTaskSpecResourcesLimitsOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResourcesLimits] { + return pulumix.Output[ServiceTaskSpecResourcesLimits]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesLimitsOutput) MemoryBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecResourcesLimits) *int { return v.MemoryBytes }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecResourcesLimitsOutput) NanoCpus() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecResourcesLimits) *int { return v.NanoCpus }).(pulumi.IntPtrOutput) +} + +type ServiceTaskSpecResourcesLimitsPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesLimitsPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResourcesLimits)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesLimitsPtrOutput) ToServiceTaskSpecResourcesLimitsPtrOutput() ServiceTaskSpecResourcesLimitsPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesLimitsPtrOutput) ToServiceTaskSpecResourcesLimitsPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesLimitsPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesLimitsPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResourcesLimits] { + return pulumix.Output[*ServiceTaskSpecResourcesLimits]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesLimitsPtrOutput) Elem() ServiceTaskSpecResourcesLimitsOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesLimits) ServiceTaskSpecResourcesLimits { + if v != nil { + return *v + } + var ret ServiceTaskSpecResourcesLimits + return ret + }).(ServiceTaskSpecResourcesLimitsOutput) +} + +func (o ServiceTaskSpecResourcesLimitsPtrOutput) MemoryBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesLimits) *int { + if v == nil { + return nil + } + return v.MemoryBytes + }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecResourcesLimitsPtrOutput) NanoCpus() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesLimits) *int { + if v == nil { + return nil + } + return v.NanoCpus + }).(pulumi.IntPtrOutput) +} + +type ServiceTaskSpecResourcesReservation struct { + GenericResources *ServiceTaskSpecResourcesReservationGenericResources `pulumi:"genericResources"` + MemoryBytes *int `pulumi:"memoryBytes"` + NanoCpus *int `pulumi:"nanoCpus"` +} + +// ServiceTaskSpecResourcesReservationInput is an input type that accepts ServiceTaskSpecResourcesReservationArgs and ServiceTaskSpecResourcesReservationOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesReservationInput` via: +// +// ServiceTaskSpecResourcesReservationArgs{...} +type ServiceTaskSpecResourcesReservationInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesReservationOutput() ServiceTaskSpecResourcesReservationOutput + ToServiceTaskSpecResourcesReservationOutputWithContext(context.Context) ServiceTaskSpecResourcesReservationOutput +} + +type ServiceTaskSpecResourcesReservationArgs struct { + GenericResources ServiceTaskSpecResourcesReservationGenericResourcesPtrInput `pulumi:"genericResources"` + MemoryBytes pulumi.IntPtrInput `pulumi:"memoryBytes"` + NanoCpus pulumi.IntPtrInput `pulumi:"nanoCpus"` +} + +func (ServiceTaskSpecResourcesReservationArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResourcesReservation)(nil)).Elem() +} + +func (i ServiceTaskSpecResourcesReservationArgs) ToServiceTaskSpecResourcesReservationOutput() ServiceTaskSpecResourcesReservationOutput { + return i.ToServiceTaskSpecResourcesReservationOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesReservationArgs) ToServiceTaskSpecResourcesReservationOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesReservationOutput) +} + +func (i ServiceTaskSpecResourcesReservationArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResourcesReservation] { + return pulumix.Output[ServiceTaskSpecResourcesReservation]{ + OutputState: i.ToServiceTaskSpecResourcesReservationOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecResourcesReservationArgs) ToServiceTaskSpecResourcesReservationPtrOutput() ServiceTaskSpecResourcesReservationPtrOutput { + return i.ToServiceTaskSpecResourcesReservationPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesReservationArgs) ToServiceTaskSpecResourcesReservationPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesReservationOutput).ToServiceTaskSpecResourcesReservationPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecResourcesReservationPtrInput is an input type that accepts ServiceTaskSpecResourcesReservationArgs, ServiceTaskSpecResourcesReservationPtr and ServiceTaskSpecResourcesReservationPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesReservationPtrInput` via: +// +// ServiceTaskSpecResourcesReservationArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecResourcesReservationPtrInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesReservationPtrOutput() ServiceTaskSpecResourcesReservationPtrOutput + ToServiceTaskSpecResourcesReservationPtrOutputWithContext(context.Context) ServiceTaskSpecResourcesReservationPtrOutput +} + +type serviceTaskSpecResourcesReservationPtrType ServiceTaskSpecResourcesReservationArgs + +func ServiceTaskSpecResourcesReservationPtr(v *ServiceTaskSpecResourcesReservationArgs) ServiceTaskSpecResourcesReservationPtrInput { + return (*serviceTaskSpecResourcesReservationPtrType)(v) +} + +func (*serviceTaskSpecResourcesReservationPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResourcesReservation)(nil)).Elem() +} + +func (i *serviceTaskSpecResourcesReservationPtrType) ToServiceTaskSpecResourcesReservationPtrOutput() ServiceTaskSpecResourcesReservationPtrOutput { + return i.ToServiceTaskSpecResourcesReservationPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecResourcesReservationPtrType) ToServiceTaskSpecResourcesReservationPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesReservationPtrOutput) +} + +func (i *serviceTaskSpecResourcesReservationPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResourcesReservation] { + return pulumix.Output[*ServiceTaskSpecResourcesReservation]{ + OutputState: i.ToServiceTaskSpecResourcesReservationPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecResourcesReservationOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesReservationOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResourcesReservation)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesReservationOutput) ToServiceTaskSpecResourcesReservationOutput() ServiceTaskSpecResourcesReservationOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationOutput) ToServiceTaskSpecResourcesReservationOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationOutput) ToServiceTaskSpecResourcesReservationPtrOutput() ServiceTaskSpecResourcesReservationPtrOutput { + return o.ToServiceTaskSpecResourcesReservationPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecResourcesReservationOutput) ToServiceTaskSpecResourcesReservationPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecResourcesReservation) *ServiceTaskSpecResourcesReservation { + return &v + }).(ServiceTaskSpecResourcesReservationPtrOutput) +} + +func (o ServiceTaskSpecResourcesReservationOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResourcesReservation] { + return pulumix.Output[ServiceTaskSpecResourcesReservation]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesReservationOutput) GenericResources() ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecResourcesReservation) *ServiceTaskSpecResourcesReservationGenericResources { + return v.GenericResources + }).(ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) +} + +func (o ServiceTaskSpecResourcesReservationOutput) MemoryBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecResourcesReservation) *int { return v.MemoryBytes }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecResourcesReservationOutput) NanoCpus() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecResourcesReservation) *int { return v.NanoCpus }).(pulumi.IntPtrOutput) +} + +type ServiceTaskSpecResourcesReservationPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesReservationPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResourcesReservation)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesReservationPtrOutput) ToServiceTaskSpecResourcesReservationPtrOutput() ServiceTaskSpecResourcesReservationPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationPtrOutput) ToServiceTaskSpecResourcesReservationPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResourcesReservation] { + return pulumix.Output[*ServiceTaskSpecResourcesReservation]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesReservationPtrOutput) Elem() ServiceTaskSpecResourcesReservationOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesReservation) ServiceTaskSpecResourcesReservation { + if v != nil { + return *v + } + var ret ServiceTaskSpecResourcesReservation + return ret + }).(ServiceTaskSpecResourcesReservationOutput) +} + +func (o ServiceTaskSpecResourcesReservationPtrOutput) GenericResources() ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesReservation) *ServiceTaskSpecResourcesReservationGenericResources { + if v == nil { + return nil + } + return v.GenericResources + }).(ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) +} + +func (o ServiceTaskSpecResourcesReservationPtrOutput) MemoryBytes() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesReservation) *int { + if v == nil { + return nil + } + return v.MemoryBytes + }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecResourcesReservationPtrOutput) NanoCpus() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesReservation) *int { + if v == nil { + return nil + } + return v.NanoCpus + }).(pulumi.IntPtrOutput) +} + +type ServiceTaskSpecResourcesReservationGenericResources struct { + DiscreteResourcesSpecs []string `pulumi:"discreteResourcesSpecs"` + NamedResourcesSpecs []string `pulumi:"namedResourcesSpecs"` +} + +// ServiceTaskSpecResourcesReservationGenericResourcesInput is an input type that accepts ServiceTaskSpecResourcesReservationGenericResourcesArgs and ServiceTaskSpecResourcesReservationGenericResourcesOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesReservationGenericResourcesInput` via: +// +// ServiceTaskSpecResourcesReservationGenericResourcesArgs{...} +type ServiceTaskSpecResourcesReservationGenericResourcesInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesReservationGenericResourcesOutput() ServiceTaskSpecResourcesReservationGenericResourcesOutput + ToServiceTaskSpecResourcesReservationGenericResourcesOutputWithContext(context.Context) ServiceTaskSpecResourcesReservationGenericResourcesOutput +} + +type ServiceTaskSpecResourcesReservationGenericResourcesArgs struct { + DiscreteResourcesSpecs pulumi.StringArrayInput `pulumi:"discreteResourcesSpecs"` + NamedResourcesSpecs pulumi.StringArrayInput `pulumi:"namedResourcesSpecs"` +} + +func (ServiceTaskSpecResourcesReservationGenericResourcesArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResourcesReservationGenericResources)(nil)).Elem() +} + +func (i ServiceTaskSpecResourcesReservationGenericResourcesArgs) ToServiceTaskSpecResourcesReservationGenericResourcesOutput() ServiceTaskSpecResourcesReservationGenericResourcesOutput { + return i.ToServiceTaskSpecResourcesReservationGenericResourcesOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesReservationGenericResourcesArgs) ToServiceTaskSpecResourcesReservationGenericResourcesOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationGenericResourcesOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesReservationGenericResourcesOutput) +} + +func (i ServiceTaskSpecResourcesReservationGenericResourcesArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResourcesReservationGenericResources] { + return pulumix.Output[ServiceTaskSpecResourcesReservationGenericResources]{ + OutputState: i.ToServiceTaskSpecResourcesReservationGenericResourcesOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecResourcesReservationGenericResourcesArgs) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutput() ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return i.ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecResourcesReservationGenericResourcesArgs) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesReservationGenericResourcesOutput).ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecResourcesReservationGenericResourcesPtrInput is an input type that accepts ServiceTaskSpecResourcesReservationGenericResourcesArgs, ServiceTaskSpecResourcesReservationGenericResourcesPtr and ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecResourcesReservationGenericResourcesPtrInput` via: +// +// ServiceTaskSpecResourcesReservationGenericResourcesArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecResourcesReservationGenericResourcesPtrInput interface { + pulumi.Input + + ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutput() ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput + ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(context.Context) ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput +} + +type serviceTaskSpecResourcesReservationGenericResourcesPtrType ServiceTaskSpecResourcesReservationGenericResourcesArgs + +func ServiceTaskSpecResourcesReservationGenericResourcesPtr(v *ServiceTaskSpecResourcesReservationGenericResourcesArgs) ServiceTaskSpecResourcesReservationGenericResourcesPtrInput { + return (*serviceTaskSpecResourcesReservationGenericResourcesPtrType)(v) +} + +func (*serviceTaskSpecResourcesReservationGenericResourcesPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResourcesReservationGenericResources)(nil)).Elem() +} + +func (i *serviceTaskSpecResourcesReservationGenericResourcesPtrType) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutput() ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return i.ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecResourcesReservationGenericResourcesPtrType) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) +} + +func (i *serviceTaskSpecResourcesReservationGenericResourcesPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResourcesReservationGenericResources] { + return pulumix.Output[*ServiceTaskSpecResourcesReservationGenericResources]{ + OutputState: i.ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecResourcesReservationGenericResourcesOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesReservationGenericResourcesOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecResourcesReservationGenericResources)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesOutput) ToServiceTaskSpecResourcesReservationGenericResourcesOutput() ServiceTaskSpecResourcesReservationGenericResourcesOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesOutput) ToServiceTaskSpecResourcesReservationGenericResourcesOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationGenericResourcesOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesOutput) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutput() ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return o.ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesOutput) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecResourcesReservationGenericResources) *ServiceTaskSpecResourcesReservationGenericResources { + return &v + }).(ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecResourcesReservationGenericResources] { + return pulumix.Output[ServiceTaskSpecResourcesReservationGenericResources]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesOutput) DiscreteResourcesSpecs() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecResourcesReservationGenericResources) []string { return v.DiscreteResourcesSpecs }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesOutput) NamedResourcesSpecs() pulumi.StringArrayOutput { + return o.ApplyT(func(v ServiceTaskSpecResourcesReservationGenericResources) []string { return v.NamedResourcesSpecs }).(pulumi.StringArrayOutput) +} + +type ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecResourcesReservationGenericResources)(nil)).Elem() +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutput() ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) ToServiceTaskSpecResourcesReservationGenericResourcesPtrOutputWithContext(ctx context.Context) ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput { + return o +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecResourcesReservationGenericResources] { + return pulumix.Output[*ServiceTaskSpecResourcesReservationGenericResources]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) Elem() ServiceTaskSpecResourcesReservationGenericResourcesOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesReservationGenericResources) ServiceTaskSpecResourcesReservationGenericResources { + if v != nil { + return *v + } + var ret ServiceTaskSpecResourcesReservationGenericResources + return ret + }).(ServiceTaskSpecResourcesReservationGenericResourcesOutput) +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) DiscreteResourcesSpecs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesReservationGenericResources) []string { + if v == nil { + return nil + } + return v.DiscreteResourcesSpecs + }).(pulumi.StringArrayOutput) +} + +func (o ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput) NamedResourcesSpecs() pulumi.StringArrayOutput { + return o.ApplyT(func(v *ServiceTaskSpecResourcesReservationGenericResources) []string { + if v == nil { + return nil + } + return v.NamedResourcesSpecs + }).(pulumi.StringArrayOutput) +} + +type ServiceTaskSpecRestartPolicy struct { + Condition *string `pulumi:"condition"` + Delay *string `pulumi:"delay"` + MaxAttempts *int `pulumi:"maxAttempts"` + Window *string `pulumi:"window"` +} + +// ServiceTaskSpecRestartPolicyInput is an input type that accepts ServiceTaskSpecRestartPolicyArgs and ServiceTaskSpecRestartPolicyOutput values. +// You can construct a concrete instance of `ServiceTaskSpecRestartPolicyInput` via: +// +// ServiceTaskSpecRestartPolicyArgs{...} +type ServiceTaskSpecRestartPolicyInput interface { + pulumi.Input + + ToServiceTaskSpecRestartPolicyOutput() ServiceTaskSpecRestartPolicyOutput + ToServiceTaskSpecRestartPolicyOutputWithContext(context.Context) ServiceTaskSpecRestartPolicyOutput +} + +type ServiceTaskSpecRestartPolicyArgs struct { + Condition pulumi.StringPtrInput `pulumi:"condition"` + Delay pulumi.StringPtrInput `pulumi:"delay"` + MaxAttempts pulumi.IntPtrInput `pulumi:"maxAttempts"` + Window pulumi.StringPtrInput `pulumi:"window"` +} + +func (ServiceTaskSpecRestartPolicyArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecRestartPolicy)(nil)).Elem() +} + +func (i ServiceTaskSpecRestartPolicyArgs) ToServiceTaskSpecRestartPolicyOutput() ServiceTaskSpecRestartPolicyOutput { + return i.ToServiceTaskSpecRestartPolicyOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecRestartPolicyArgs) ToServiceTaskSpecRestartPolicyOutputWithContext(ctx context.Context) ServiceTaskSpecRestartPolicyOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecRestartPolicyOutput) +} + +func (i ServiceTaskSpecRestartPolicyArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecRestartPolicy] { + return pulumix.Output[ServiceTaskSpecRestartPolicy]{ + OutputState: i.ToServiceTaskSpecRestartPolicyOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceTaskSpecRestartPolicyArgs) ToServiceTaskSpecRestartPolicyPtrOutput() ServiceTaskSpecRestartPolicyPtrOutput { + return i.ToServiceTaskSpecRestartPolicyPtrOutputWithContext(context.Background()) +} + +func (i ServiceTaskSpecRestartPolicyArgs) ToServiceTaskSpecRestartPolicyPtrOutputWithContext(ctx context.Context) ServiceTaskSpecRestartPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecRestartPolicyOutput).ToServiceTaskSpecRestartPolicyPtrOutputWithContext(ctx) +} + +// ServiceTaskSpecRestartPolicyPtrInput is an input type that accepts ServiceTaskSpecRestartPolicyArgs, ServiceTaskSpecRestartPolicyPtr and ServiceTaskSpecRestartPolicyPtrOutput values. +// You can construct a concrete instance of `ServiceTaskSpecRestartPolicyPtrInput` via: +// +// ServiceTaskSpecRestartPolicyArgs{...} +// +// or: +// +// nil +type ServiceTaskSpecRestartPolicyPtrInput interface { + pulumi.Input + + ToServiceTaskSpecRestartPolicyPtrOutput() ServiceTaskSpecRestartPolicyPtrOutput + ToServiceTaskSpecRestartPolicyPtrOutputWithContext(context.Context) ServiceTaskSpecRestartPolicyPtrOutput +} + +type serviceTaskSpecRestartPolicyPtrType ServiceTaskSpecRestartPolicyArgs + +func ServiceTaskSpecRestartPolicyPtr(v *ServiceTaskSpecRestartPolicyArgs) ServiceTaskSpecRestartPolicyPtrInput { + return (*serviceTaskSpecRestartPolicyPtrType)(v) +} + +func (*serviceTaskSpecRestartPolicyPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecRestartPolicy)(nil)).Elem() +} + +func (i *serviceTaskSpecRestartPolicyPtrType) ToServiceTaskSpecRestartPolicyPtrOutput() ServiceTaskSpecRestartPolicyPtrOutput { + return i.ToServiceTaskSpecRestartPolicyPtrOutputWithContext(context.Background()) +} + +func (i *serviceTaskSpecRestartPolicyPtrType) ToServiceTaskSpecRestartPolicyPtrOutputWithContext(ctx context.Context) ServiceTaskSpecRestartPolicyPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceTaskSpecRestartPolicyPtrOutput) +} + +func (i *serviceTaskSpecRestartPolicyPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecRestartPolicy] { + return pulumix.Output[*ServiceTaskSpecRestartPolicy]{ + OutputState: i.ToServiceTaskSpecRestartPolicyPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceTaskSpecRestartPolicyOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecRestartPolicyOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceTaskSpecRestartPolicy)(nil)).Elem() +} + +func (o ServiceTaskSpecRestartPolicyOutput) ToServiceTaskSpecRestartPolicyOutput() ServiceTaskSpecRestartPolicyOutput { + return o +} + +func (o ServiceTaskSpecRestartPolicyOutput) ToServiceTaskSpecRestartPolicyOutputWithContext(ctx context.Context) ServiceTaskSpecRestartPolicyOutput { + return o +} + +func (o ServiceTaskSpecRestartPolicyOutput) ToServiceTaskSpecRestartPolicyPtrOutput() ServiceTaskSpecRestartPolicyPtrOutput { + return o.ToServiceTaskSpecRestartPolicyPtrOutputWithContext(context.Background()) +} + +func (o ServiceTaskSpecRestartPolicyOutput) ToServiceTaskSpecRestartPolicyPtrOutputWithContext(ctx context.Context) ServiceTaskSpecRestartPolicyPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceTaskSpecRestartPolicy) *ServiceTaskSpecRestartPolicy { + return &v + }).(ServiceTaskSpecRestartPolicyPtrOutput) +} + +func (o ServiceTaskSpecRestartPolicyOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceTaskSpecRestartPolicy] { + return pulumix.Output[ServiceTaskSpecRestartPolicy]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecRestartPolicyOutput) Condition() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecRestartPolicy) *string { return v.Condition }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecRestartPolicyOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecRestartPolicy) *string { return v.Delay }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecRestartPolicyOutput) MaxAttempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecRestartPolicy) *int { return v.MaxAttempts }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecRestartPolicyOutput) Window() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceTaskSpecRestartPolicy) *string { return v.Window }).(pulumi.StringPtrOutput) +} + +type ServiceTaskSpecRestartPolicyPtrOutput struct{ *pulumi.OutputState } + +func (ServiceTaskSpecRestartPolicyPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceTaskSpecRestartPolicy)(nil)).Elem() +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) ToServiceTaskSpecRestartPolicyPtrOutput() ServiceTaskSpecRestartPolicyPtrOutput { + return o +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) ToServiceTaskSpecRestartPolicyPtrOutputWithContext(ctx context.Context) ServiceTaskSpecRestartPolicyPtrOutput { + return o +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceTaskSpecRestartPolicy] { + return pulumix.Output[*ServiceTaskSpecRestartPolicy]{ + OutputState: o.OutputState, + } +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) Elem() ServiceTaskSpecRestartPolicyOutput { + return o.ApplyT(func(v *ServiceTaskSpecRestartPolicy) ServiceTaskSpecRestartPolicy { + if v != nil { + return *v + } + var ret ServiceTaskSpecRestartPolicy + return ret + }).(ServiceTaskSpecRestartPolicyOutput) +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) Condition() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecRestartPolicy) *string { + if v == nil { + return nil + } + return v.Condition + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecRestartPolicy) *string { + if v == nil { + return nil + } + return v.Delay + }).(pulumi.StringPtrOutput) +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) MaxAttempts() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecRestartPolicy) *int { + if v == nil { + return nil + } + return v.MaxAttempts + }).(pulumi.IntPtrOutput) +} + +func (o ServiceTaskSpecRestartPolicyPtrOutput) Window() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceTaskSpecRestartPolicy) *string { + if v == nil { + return nil + } + return v.Window + }).(pulumi.StringPtrOutput) +} + +type ServiceUpdateConfig struct { + // Delay between task updates `(ns|us|ms|s|m|h)`. Defaults to `0s`. + Delay *string `pulumi:"delay"` + // Action on update failure: `pause`, `continue` or `rollback`. Defaults to `pause`. + FailureAction *string `pulumi:"failureAction"` + // Failure rate to tolerate during an update. Defaults to `0.0`. + MaxFailureRatio *string `pulumi:"maxFailureRatio"` + // Duration after each task update to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. + Monitor *string `pulumi:"monitor"` + // Update order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. + Order *string `pulumi:"order"` + // Maximum number of tasks to be updated in one iteration. Defaults to `1` + Parallelism *int `pulumi:"parallelism"` +} + +// ServiceUpdateConfigInput is an input type that accepts ServiceUpdateConfigArgs and ServiceUpdateConfigOutput values. +// You can construct a concrete instance of `ServiceUpdateConfigInput` via: +// +// ServiceUpdateConfigArgs{...} +type ServiceUpdateConfigInput interface { + pulumi.Input + + ToServiceUpdateConfigOutput() ServiceUpdateConfigOutput + ToServiceUpdateConfigOutputWithContext(context.Context) ServiceUpdateConfigOutput +} + +type ServiceUpdateConfigArgs struct { + // Delay between task updates `(ns|us|ms|s|m|h)`. Defaults to `0s`. + Delay pulumi.StringPtrInput `pulumi:"delay"` + // Action on update failure: `pause`, `continue` or `rollback`. Defaults to `pause`. + FailureAction pulumi.StringPtrInput `pulumi:"failureAction"` + // Failure rate to tolerate during an update. Defaults to `0.0`. + MaxFailureRatio pulumi.StringPtrInput `pulumi:"maxFailureRatio"` + // Duration after each task update to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. + Monitor pulumi.StringPtrInput `pulumi:"monitor"` + // Update order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. + Order pulumi.StringPtrInput `pulumi:"order"` + // Maximum number of tasks to be updated in one iteration. Defaults to `1` + Parallelism pulumi.IntPtrInput `pulumi:"parallelism"` +} + +func (ServiceUpdateConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceUpdateConfig)(nil)).Elem() +} + +func (i ServiceUpdateConfigArgs) ToServiceUpdateConfigOutput() ServiceUpdateConfigOutput { + return i.ToServiceUpdateConfigOutputWithContext(context.Background()) +} + +func (i ServiceUpdateConfigArgs) ToServiceUpdateConfigOutputWithContext(ctx context.Context) ServiceUpdateConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceUpdateConfigOutput) +} + +func (i ServiceUpdateConfigArgs) ToOutput(ctx context.Context) pulumix.Output[ServiceUpdateConfig] { + return pulumix.Output[ServiceUpdateConfig]{ + OutputState: i.ToServiceUpdateConfigOutputWithContext(ctx).OutputState, + } +} + +func (i ServiceUpdateConfigArgs) ToServiceUpdateConfigPtrOutput() ServiceUpdateConfigPtrOutput { + return i.ToServiceUpdateConfigPtrOutputWithContext(context.Background()) +} + +func (i ServiceUpdateConfigArgs) ToServiceUpdateConfigPtrOutputWithContext(ctx context.Context) ServiceUpdateConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceUpdateConfigOutput).ToServiceUpdateConfigPtrOutputWithContext(ctx) +} + +// ServiceUpdateConfigPtrInput is an input type that accepts ServiceUpdateConfigArgs, ServiceUpdateConfigPtr and ServiceUpdateConfigPtrOutput values. +// You can construct a concrete instance of `ServiceUpdateConfigPtrInput` via: +// +// ServiceUpdateConfigArgs{...} +// +// or: +// +// nil +type ServiceUpdateConfigPtrInput interface { + pulumi.Input + + ToServiceUpdateConfigPtrOutput() ServiceUpdateConfigPtrOutput + ToServiceUpdateConfigPtrOutputWithContext(context.Context) ServiceUpdateConfigPtrOutput +} + +type serviceUpdateConfigPtrType ServiceUpdateConfigArgs + +func ServiceUpdateConfigPtr(v *ServiceUpdateConfigArgs) ServiceUpdateConfigPtrInput { + return (*serviceUpdateConfigPtrType)(v) +} + +func (*serviceUpdateConfigPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceUpdateConfig)(nil)).Elem() +} + +func (i *serviceUpdateConfigPtrType) ToServiceUpdateConfigPtrOutput() ServiceUpdateConfigPtrOutput { + return i.ToServiceUpdateConfigPtrOutputWithContext(context.Background()) +} + +func (i *serviceUpdateConfigPtrType) ToServiceUpdateConfigPtrOutputWithContext(ctx context.Context) ServiceUpdateConfigPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceUpdateConfigPtrOutput) +} + +func (i *serviceUpdateConfigPtrType) ToOutput(ctx context.Context) pulumix.Output[*ServiceUpdateConfig] { + return pulumix.Output[*ServiceUpdateConfig]{ + OutputState: i.ToServiceUpdateConfigPtrOutputWithContext(ctx).OutputState, + } +} + +type ServiceUpdateConfigOutput struct{ *pulumi.OutputState } + +func (ServiceUpdateConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*ServiceUpdateConfig)(nil)).Elem() +} + +func (o ServiceUpdateConfigOutput) ToServiceUpdateConfigOutput() ServiceUpdateConfigOutput { + return o +} + +func (o ServiceUpdateConfigOutput) ToServiceUpdateConfigOutputWithContext(ctx context.Context) ServiceUpdateConfigOutput { + return o +} + +func (o ServiceUpdateConfigOutput) ToServiceUpdateConfigPtrOutput() ServiceUpdateConfigPtrOutput { + return o.ToServiceUpdateConfigPtrOutputWithContext(context.Background()) +} + +func (o ServiceUpdateConfigOutput) ToServiceUpdateConfigPtrOutputWithContext(ctx context.Context) ServiceUpdateConfigPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v ServiceUpdateConfig) *ServiceUpdateConfig { + return &v + }).(ServiceUpdateConfigPtrOutput) +} + +func (o ServiceUpdateConfigOutput) ToOutput(ctx context.Context) pulumix.Output[ServiceUpdateConfig] { + return pulumix.Output[ServiceUpdateConfig]{ + OutputState: o.OutputState, + } +} + +// Delay between task updates `(ns|us|ms|s|m|h)`. Defaults to `0s`. +func (o ServiceUpdateConfigOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceUpdateConfig) *string { return v.Delay }).(pulumi.StringPtrOutput) +} + +// Action on update failure: `pause`, `continue` or `rollback`. Defaults to `pause`. +func (o ServiceUpdateConfigOutput) FailureAction() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceUpdateConfig) *string { return v.FailureAction }).(pulumi.StringPtrOutput) +} + +// Failure rate to tolerate during an update. Defaults to `0.0`. +func (o ServiceUpdateConfigOutput) MaxFailureRatio() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceUpdateConfig) *string { return v.MaxFailureRatio }).(pulumi.StringPtrOutput) +} + +// Duration after each task update to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. +func (o ServiceUpdateConfigOutput) Monitor() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceUpdateConfig) *string { return v.Monitor }).(pulumi.StringPtrOutput) +} + +// Update order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. +func (o ServiceUpdateConfigOutput) Order() pulumi.StringPtrOutput { + return o.ApplyT(func(v ServiceUpdateConfig) *string { return v.Order }).(pulumi.StringPtrOutput) +} + +// Maximum number of tasks to be updated in one iteration. Defaults to `1` +func (o ServiceUpdateConfigOutput) Parallelism() pulumi.IntPtrOutput { + return o.ApplyT(func(v ServiceUpdateConfig) *int { return v.Parallelism }).(pulumi.IntPtrOutput) +} + +type ServiceUpdateConfigPtrOutput struct{ *pulumi.OutputState } + +func (ServiceUpdateConfigPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceUpdateConfig)(nil)).Elem() +} + +func (o ServiceUpdateConfigPtrOutput) ToServiceUpdateConfigPtrOutput() ServiceUpdateConfigPtrOutput { + return o +} + +func (o ServiceUpdateConfigPtrOutput) ToServiceUpdateConfigPtrOutputWithContext(ctx context.Context) ServiceUpdateConfigPtrOutput { + return o +} + +func (o ServiceUpdateConfigPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceUpdateConfig] { + return pulumix.Output[*ServiceUpdateConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceUpdateConfigPtrOutput) Elem() ServiceUpdateConfigOutput { + return o.ApplyT(func(v *ServiceUpdateConfig) ServiceUpdateConfig { + if v != nil { + return *v + } + var ret ServiceUpdateConfig + return ret + }).(ServiceUpdateConfigOutput) +} + +// Delay between task updates `(ns|us|ms|s|m|h)`. Defaults to `0s`. +func (o ServiceUpdateConfigPtrOutput) Delay() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceUpdateConfig) *string { + if v == nil { + return nil + } + return v.Delay + }).(pulumi.StringPtrOutput) +} + +// Action on update failure: `pause`, `continue` or `rollback`. Defaults to `pause`. +func (o ServiceUpdateConfigPtrOutput) FailureAction() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceUpdateConfig) *string { + if v == nil { + return nil + } + return v.FailureAction + }).(pulumi.StringPtrOutput) +} + +// Failure rate to tolerate during an update. Defaults to `0.0`. +func (o ServiceUpdateConfigPtrOutput) MaxFailureRatio() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceUpdateConfig) *string { + if v == nil { + return nil + } + return v.MaxFailureRatio + }).(pulumi.StringPtrOutput) +} + +// Duration after each task update to monitor for failure (ns|us|ms|s|m|h). Defaults to `5s`. +func (o ServiceUpdateConfigPtrOutput) Monitor() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceUpdateConfig) *string { + if v == nil { + return nil + } + return v.Monitor + }).(pulumi.StringPtrOutput) +} + +// Update order: either 'stop-first' or 'start-first'. Defaults to `stop-first`. +func (o ServiceUpdateConfigPtrOutput) Order() pulumi.StringPtrOutput { + return o.ApplyT(func(v *ServiceUpdateConfig) *string { + if v == nil { + return nil + } + return v.Order + }).(pulumi.StringPtrOutput) +} + +// Maximum number of tasks to be updated in one iteration. Defaults to `1` +func (o ServiceUpdateConfigPtrOutput) Parallelism() pulumi.IntPtrOutput { + return o.ApplyT(func(v *ServiceUpdateConfig) *int { + if v == nil { + return nil + } + return v.Parallelism + }).(pulumi.IntPtrOutput) +} + +type VolumeLabel struct { + // Name of the label + Label string `pulumi:"label"` + // Value of the label + Value string `pulumi:"value"` +} + +// VolumeLabelInput is an input type that accepts VolumeLabelArgs and VolumeLabelOutput values. +// You can construct a concrete instance of `VolumeLabelInput` via: +// +// VolumeLabelArgs{...} +type VolumeLabelInput interface { + pulumi.Input + + ToVolumeLabelOutput() VolumeLabelOutput + ToVolumeLabelOutputWithContext(context.Context) VolumeLabelOutput +} + +type VolumeLabelArgs struct { + // Name of the label + Label pulumi.StringInput `pulumi:"label"` + // Value of the label + Value pulumi.StringInput `pulumi:"value"` +} + +func (VolumeLabelArgs) ElementType() reflect.Type { + return reflect.TypeOf((*VolumeLabel)(nil)).Elem() +} + +func (i VolumeLabelArgs) ToVolumeLabelOutput() VolumeLabelOutput { + return i.ToVolumeLabelOutputWithContext(context.Background()) +} + +func (i VolumeLabelArgs) ToVolumeLabelOutputWithContext(ctx context.Context) VolumeLabelOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeLabelOutput) +} + +func (i VolumeLabelArgs) ToOutput(ctx context.Context) pulumix.Output[VolumeLabel] { + return pulumix.Output[VolumeLabel]{ + OutputState: i.ToVolumeLabelOutputWithContext(ctx).OutputState, + } +} + +// VolumeLabelArrayInput is an input type that accepts VolumeLabelArray and VolumeLabelArrayOutput values. +// You can construct a concrete instance of `VolumeLabelArrayInput` via: +// +// VolumeLabelArray{ VolumeLabelArgs{...} } +type VolumeLabelArrayInput interface { + pulumi.Input + + ToVolumeLabelArrayOutput() VolumeLabelArrayOutput + ToVolumeLabelArrayOutputWithContext(context.Context) VolumeLabelArrayOutput +} + +type VolumeLabelArray []VolumeLabelInput + +func (VolumeLabelArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]VolumeLabel)(nil)).Elem() +} + +func (i VolumeLabelArray) ToVolumeLabelArrayOutput() VolumeLabelArrayOutput { + return i.ToVolumeLabelArrayOutputWithContext(context.Background()) +} + +func (i VolumeLabelArray) ToVolumeLabelArrayOutputWithContext(ctx context.Context) VolumeLabelArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeLabelArrayOutput) +} + +func (i VolumeLabelArray) ToOutput(ctx context.Context) pulumix.Output[[]VolumeLabel] { + return pulumix.Output[[]VolumeLabel]{ + OutputState: i.ToVolumeLabelArrayOutputWithContext(ctx).OutputState, + } +} + +type VolumeLabelOutput struct{ *pulumi.OutputState } + +func (VolumeLabelOutput) ElementType() reflect.Type { + return reflect.TypeOf((*VolumeLabel)(nil)).Elem() +} + +func (o VolumeLabelOutput) ToVolumeLabelOutput() VolumeLabelOutput { + return o +} + +func (o VolumeLabelOutput) ToVolumeLabelOutputWithContext(ctx context.Context) VolumeLabelOutput { + return o +} + +func (o VolumeLabelOutput) ToOutput(ctx context.Context) pulumix.Output[VolumeLabel] { + return pulumix.Output[VolumeLabel]{ + OutputState: o.OutputState, + } +} + +// Name of the label +func (o VolumeLabelOutput) Label() pulumi.StringOutput { + return o.ApplyT(func(v VolumeLabel) string { return v.Label }).(pulumi.StringOutput) +} + +// Value of the label +func (o VolumeLabelOutput) Value() pulumi.StringOutput { + return o.ApplyT(func(v VolumeLabel) string { return v.Value }).(pulumi.StringOutput) +} + +type VolumeLabelArrayOutput struct{ *pulumi.OutputState } + +func (VolumeLabelArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]VolumeLabel)(nil)).Elem() +} + +func (o VolumeLabelArrayOutput) ToVolumeLabelArrayOutput() VolumeLabelArrayOutput { + return o +} + +func (o VolumeLabelArrayOutput) ToVolumeLabelArrayOutputWithContext(ctx context.Context) VolumeLabelArrayOutput { + return o +} + +func (o VolumeLabelArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]VolumeLabel] { + return pulumix.Output[[]VolumeLabel]{ + OutputState: o.OutputState, + } +} + +func (o VolumeLabelArrayOutput) Index(i pulumi.IntInput) VolumeLabelOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) VolumeLabel { + return vs[0].([]VolumeLabel)[vs[1].(int)] + }).(VolumeLabelOutput) +} + +// Contains a list of images to reference when building using a cache +type CacheFrom struct { + // Specifies cached images + Images []string `pulumi:"images"` +} + +// CacheFromInput is an input type that accepts CacheFromArgs and CacheFromOutput values. +// You can construct a concrete instance of `CacheFromInput` via: +// +// CacheFromArgs{...} +type CacheFromInput interface { + pulumi.Input + + ToCacheFromOutput() CacheFromOutput + ToCacheFromOutputWithContext(context.Context) CacheFromOutput +} + +// Contains a list of images to reference when building using a cache +type CacheFromArgs struct { + // Specifies cached images + Images pulumi.StringArrayInput `pulumi:"images"` +} + +func (CacheFromArgs) ElementType() reflect.Type { + return reflect.TypeOf((*CacheFrom)(nil)).Elem() +} + +func (i CacheFromArgs) ToCacheFromOutput() CacheFromOutput { + return i.ToCacheFromOutputWithContext(context.Background()) +} + +func (i CacheFromArgs) ToCacheFromOutputWithContext(ctx context.Context) CacheFromOutput { + return pulumi.ToOutputWithContext(ctx, i).(CacheFromOutput) +} + +func (i CacheFromArgs) ToOutput(ctx context.Context) pulumix.Output[CacheFrom] { + return pulumix.Output[CacheFrom]{ + OutputState: i.ToCacheFromOutputWithContext(ctx).OutputState, + } +} + +func (i CacheFromArgs) ToCacheFromPtrOutput() CacheFromPtrOutput { + return i.ToCacheFromPtrOutputWithContext(context.Background()) +} + +func (i CacheFromArgs) ToCacheFromPtrOutputWithContext(ctx context.Context) CacheFromPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CacheFromOutput).ToCacheFromPtrOutputWithContext(ctx) +} + +// CacheFromPtrInput is an input type that accepts CacheFromArgs, CacheFromPtr and CacheFromPtrOutput values. +// You can construct a concrete instance of `CacheFromPtrInput` via: +// +// CacheFromArgs{...} +// +// or: +// +// nil +type CacheFromPtrInput interface { + pulumi.Input + + ToCacheFromPtrOutput() CacheFromPtrOutput + ToCacheFromPtrOutputWithContext(context.Context) CacheFromPtrOutput +} + +type cacheFromPtrType CacheFromArgs + +func CacheFromPtr(v *CacheFromArgs) CacheFromPtrInput { + return (*cacheFromPtrType)(v) +} + +func (*cacheFromPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**CacheFrom)(nil)).Elem() +} + +func (i *cacheFromPtrType) ToCacheFromPtrOutput() CacheFromPtrOutput { + return i.ToCacheFromPtrOutputWithContext(context.Background()) +} + +func (i *cacheFromPtrType) ToCacheFromPtrOutputWithContext(ctx context.Context) CacheFromPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(CacheFromPtrOutput) +} + +func (i *cacheFromPtrType) ToOutput(ctx context.Context) pulumix.Output[*CacheFrom] { + return pulumix.Output[*CacheFrom]{ + OutputState: i.ToCacheFromPtrOutputWithContext(ctx).OutputState, + } +} + +// Contains a list of images to reference when building using a cache +type CacheFromOutput struct{ *pulumi.OutputState } + +func (CacheFromOutput) ElementType() reflect.Type { + return reflect.TypeOf((*CacheFrom)(nil)).Elem() +} + +func (o CacheFromOutput) ToCacheFromOutput() CacheFromOutput { + return o +} + +func (o CacheFromOutput) ToCacheFromOutputWithContext(ctx context.Context) CacheFromOutput { + return o +} + +func (o CacheFromOutput) ToCacheFromPtrOutput() CacheFromPtrOutput { + return o.ToCacheFromPtrOutputWithContext(context.Background()) +} + +func (o CacheFromOutput) ToCacheFromPtrOutputWithContext(ctx context.Context) CacheFromPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v CacheFrom) *CacheFrom { + return &v + }).(CacheFromPtrOutput) +} + +func (o CacheFromOutput) ToOutput(ctx context.Context) pulumix.Output[CacheFrom] { + return pulumix.Output[CacheFrom]{ + OutputState: o.OutputState, + } +} + +// Specifies cached images +func (o CacheFromOutput) Images() pulumi.StringArrayOutput { + return o.ApplyT(func(v CacheFrom) []string { return v.Images }).(pulumi.StringArrayOutput) +} + +type CacheFromPtrOutput struct{ *pulumi.OutputState } + +func (CacheFromPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**CacheFrom)(nil)).Elem() +} + +func (o CacheFromPtrOutput) ToCacheFromPtrOutput() CacheFromPtrOutput { + return o +} + +func (o CacheFromPtrOutput) ToCacheFromPtrOutputWithContext(ctx context.Context) CacheFromPtrOutput { + return o +} + +func (o CacheFromPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*CacheFrom] { + return pulumix.Output[*CacheFrom]{ + OutputState: o.OutputState, + } +} + +func (o CacheFromPtrOutput) Elem() CacheFromOutput { + return o.ApplyT(func(v *CacheFrom) CacheFrom { + if v != nil { + return *v + } + var ret CacheFrom + return ret + }).(CacheFromOutput) +} + +// Specifies cached images +func (o CacheFromPtrOutput) Images() pulumi.StringArrayOutput { + return o.ApplyT(func(v *CacheFrom) []string { + if v == nil { + return nil + } + return v.Images + }).(pulumi.StringArrayOutput) +} + +// The Docker build context +type DockerBuild struct { + // An optional map of named build-time argument variables to set during the Docker build. This flag allows you to pass build-time variablesthat can be accessed like environment variables inside the RUN instruction. + Args map[string]string `pulumi:"args"` + // The version of the Docker builder. + BuilderVersion *BuilderVersion `pulumi:"builderVersion"` + // A list of image names to use as build cache. Images provided must have a cache manifest. Must provide authentication to cache registry. + CacheFrom *CacheFrom `pulumi:"cacheFrom"` + // The path to the build context to use. + Context *string `pulumi:"context"` + // The path to the Dockerfile to use. + Dockerfile *string `pulumi:"dockerfile"` + // The architecture of the platform you want to build this image for, e.g. `linux/arm64`. + Platform *string `pulumi:"platform"` + // The target of the Dockerfile to build + Target *string `pulumi:"target"` +} + +// Defaults sets the appropriate defaults for DockerBuild +func (val *DockerBuild) Defaults() *DockerBuild { + if val == nil { + return nil + } + tmp := *val + if tmp.BuilderVersion == nil { + builderVersion_ := BuilderVersion("BuilderBuildKit") + tmp.BuilderVersion = &builderVersion_ + } + return &tmp +} + +// DockerBuildInput is an input type that accepts DockerBuildArgs and DockerBuildOutput values. +// You can construct a concrete instance of `DockerBuildInput` via: +// +// DockerBuildArgs{...} +type DockerBuildInput interface { + pulumi.Input + + ToDockerBuildOutput() DockerBuildOutput + ToDockerBuildOutputWithContext(context.Context) DockerBuildOutput +} + +// The Docker build context +type DockerBuildArgs struct { + // An optional map of named build-time argument variables to set during the Docker build. This flag allows you to pass build-time variablesthat can be accessed like environment variables inside the RUN instruction. + Args pulumi.StringMapInput `pulumi:"args"` + // The version of the Docker builder. + BuilderVersion BuilderVersionPtrInput `pulumi:"builderVersion"` + // A list of image names to use as build cache. Images provided must have a cache manifest. Must provide authentication to cache registry. + CacheFrom CacheFromPtrInput `pulumi:"cacheFrom"` + // The path to the build context to use. + Context pulumi.StringPtrInput `pulumi:"context"` + // The path to the Dockerfile to use. + Dockerfile pulumi.StringPtrInput `pulumi:"dockerfile"` + // The architecture of the platform you want to build this image for, e.g. `linux/arm64`. + Platform pulumi.StringPtrInput `pulumi:"platform"` + // The target of the Dockerfile to build + Target pulumi.StringPtrInput `pulumi:"target"` +} + +// Defaults sets the appropriate defaults for DockerBuildArgs +func (val *DockerBuildArgs) Defaults() *DockerBuildArgs { + if val == nil { + return nil + } + tmp := *val + if tmp.BuilderVersion == nil { + tmp.BuilderVersion = BuilderVersion("BuilderBuildKit") + } + return &tmp +} +func (DockerBuildArgs) ElementType() reflect.Type { + return reflect.TypeOf((*DockerBuild)(nil)).Elem() +} + +func (i DockerBuildArgs) ToDockerBuildOutput() DockerBuildOutput { + return i.ToDockerBuildOutputWithContext(context.Background()) +} + +func (i DockerBuildArgs) ToDockerBuildOutputWithContext(ctx context.Context) DockerBuildOutput { + return pulumi.ToOutputWithContext(ctx, i).(DockerBuildOutput) +} + +func (i DockerBuildArgs) ToOutput(ctx context.Context) pulumix.Output[DockerBuild] { + return pulumix.Output[DockerBuild]{ + OutputState: i.ToDockerBuildOutputWithContext(ctx).OutputState, + } +} + +func (i DockerBuildArgs) ToDockerBuildPtrOutput() DockerBuildPtrOutput { + return i.ToDockerBuildPtrOutputWithContext(context.Background()) +} + +func (i DockerBuildArgs) ToDockerBuildPtrOutputWithContext(ctx context.Context) DockerBuildPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DockerBuildOutput).ToDockerBuildPtrOutputWithContext(ctx) +} + +// DockerBuildPtrInput is an input type that accepts DockerBuildArgs, DockerBuildPtr and DockerBuildPtrOutput values. +// You can construct a concrete instance of `DockerBuildPtrInput` via: +// +// DockerBuildArgs{...} +// +// or: +// +// nil +type DockerBuildPtrInput interface { + pulumi.Input + + ToDockerBuildPtrOutput() DockerBuildPtrOutput + ToDockerBuildPtrOutputWithContext(context.Context) DockerBuildPtrOutput +} + +type dockerBuildPtrType DockerBuildArgs + +func DockerBuildPtr(v *DockerBuildArgs) DockerBuildPtrInput { + return (*dockerBuildPtrType)(v) +} + +func (*dockerBuildPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**DockerBuild)(nil)).Elem() +} + +func (i *dockerBuildPtrType) ToDockerBuildPtrOutput() DockerBuildPtrOutput { + return i.ToDockerBuildPtrOutputWithContext(context.Background()) +} + +func (i *dockerBuildPtrType) ToDockerBuildPtrOutputWithContext(ctx context.Context) DockerBuildPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(DockerBuildPtrOutput) +} + +func (i *dockerBuildPtrType) ToOutput(ctx context.Context) pulumix.Output[*DockerBuild] { + return pulumix.Output[*DockerBuild]{ + OutputState: i.ToDockerBuildPtrOutputWithContext(ctx).OutputState, + } +} + +// The Docker build context +type DockerBuildOutput struct{ *pulumi.OutputState } + +func (DockerBuildOutput) ElementType() reflect.Type { + return reflect.TypeOf((*DockerBuild)(nil)).Elem() +} + +func (o DockerBuildOutput) ToDockerBuildOutput() DockerBuildOutput { + return o +} + +func (o DockerBuildOutput) ToDockerBuildOutputWithContext(ctx context.Context) DockerBuildOutput { + return o +} + +func (o DockerBuildOutput) ToDockerBuildPtrOutput() DockerBuildPtrOutput { + return o.ToDockerBuildPtrOutputWithContext(context.Background()) +} + +func (o DockerBuildOutput) ToDockerBuildPtrOutputWithContext(ctx context.Context) DockerBuildPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v DockerBuild) *DockerBuild { + return &v + }).(DockerBuildPtrOutput) +} + +func (o DockerBuildOutput) ToOutput(ctx context.Context) pulumix.Output[DockerBuild] { + return pulumix.Output[DockerBuild]{ + OutputState: o.OutputState, + } +} + +// An optional map of named build-time argument variables to set during the Docker build. This flag allows you to pass build-time variablesthat can be accessed like environment variables inside the RUN instruction. +func (o DockerBuildOutput) Args() pulumi.StringMapOutput { + return o.ApplyT(func(v DockerBuild) map[string]string { return v.Args }).(pulumi.StringMapOutput) +} + +// The version of the Docker builder. +func (o DockerBuildOutput) BuilderVersion() BuilderVersionPtrOutput { + return o.ApplyT(func(v DockerBuild) *BuilderVersion { return v.BuilderVersion }).(BuilderVersionPtrOutput) +} + +// A list of image names to use as build cache. Images provided must have a cache manifest. Must provide authentication to cache registry. +func (o DockerBuildOutput) CacheFrom() CacheFromPtrOutput { + return o.ApplyT(func(v DockerBuild) *CacheFrom { return v.CacheFrom }).(CacheFromPtrOutput) +} + +// The path to the build context to use. +func (o DockerBuildOutput) Context() pulumi.StringPtrOutput { + return o.ApplyT(func(v DockerBuild) *string { return v.Context }).(pulumi.StringPtrOutput) +} + +// The path to the Dockerfile to use. +func (o DockerBuildOutput) Dockerfile() pulumi.StringPtrOutput { + return o.ApplyT(func(v DockerBuild) *string { return v.Dockerfile }).(pulumi.StringPtrOutput) +} + +// The architecture of the platform you want to build this image for, e.g. `linux/arm64`. +func (o DockerBuildOutput) Platform() pulumi.StringPtrOutput { + return o.ApplyT(func(v DockerBuild) *string { return v.Platform }).(pulumi.StringPtrOutput) +} + +// The target of the Dockerfile to build +func (o DockerBuildOutput) Target() pulumi.StringPtrOutput { + return o.ApplyT(func(v DockerBuild) *string { return v.Target }).(pulumi.StringPtrOutput) +} + +type DockerBuildPtrOutput struct{ *pulumi.OutputState } + +func (DockerBuildPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**DockerBuild)(nil)).Elem() +} + +func (o DockerBuildPtrOutput) ToDockerBuildPtrOutput() DockerBuildPtrOutput { + return o +} + +func (o DockerBuildPtrOutput) ToDockerBuildPtrOutputWithContext(ctx context.Context) DockerBuildPtrOutput { + return o +} + +func (o DockerBuildPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*DockerBuild] { + return pulumix.Output[*DockerBuild]{ + OutputState: o.OutputState, + } +} + +func (o DockerBuildPtrOutput) Elem() DockerBuildOutput { + return o.ApplyT(func(v *DockerBuild) DockerBuild { + if v != nil { + return *v + } + var ret DockerBuild + return ret + }).(DockerBuildOutput) +} + +// An optional map of named build-time argument variables to set during the Docker build. This flag allows you to pass build-time variablesthat can be accessed like environment variables inside the RUN instruction. +func (o DockerBuildPtrOutput) Args() pulumi.StringMapOutput { + return o.ApplyT(func(v *DockerBuild) map[string]string { + if v == nil { + return nil + } + return v.Args + }).(pulumi.StringMapOutput) +} + +// The version of the Docker builder. +func (o DockerBuildPtrOutput) BuilderVersion() BuilderVersionPtrOutput { + return o.ApplyT(func(v *DockerBuild) *BuilderVersion { + if v == nil { + return nil + } + return v.BuilderVersion + }).(BuilderVersionPtrOutput) +} + +// A list of image names to use as build cache. Images provided must have a cache manifest. Must provide authentication to cache registry. +func (o DockerBuildPtrOutput) CacheFrom() CacheFromPtrOutput { + return o.ApplyT(func(v *DockerBuild) *CacheFrom { + if v == nil { + return nil + } + return v.CacheFrom + }).(CacheFromPtrOutput) +} + +// The path to the build context to use. +func (o DockerBuildPtrOutput) Context() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DockerBuild) *string { + if v == nil { + return nil + } + return v.Context + }).(pulumi.StringPtrOutput) +} + +// The path to the Dockerfile to use. +func (o DockerBuildPtrOutput) Dockerfile() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DockerBuild) *string { + if v == nil { + return nil + } + return v.Dockerfile + }).(pulumi.StringPtrOutput) +} + +// The architecture of the platform you want to build this image for, e.g. `linux/arm64`. +func (o DockerBuildPtrOutput) Platform() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DockerBuild) *string { + if v == nil { + return nil + } + return v.Platform + }).(pulumi.StringPtrOutput) +} + +// The target of the Dockerfile to build +func (o DockerBuildPtrOutput) Target() pulumi.StringPtrOutput { + return o.ApplyT(func(v *DockerBuild) *string { + if v == nil { + return nil + } + return v.Target + }).(pulumi.StringPtrOutput) +} + +type GetNetworkIpamConfig struct { + AuxAddress map[string]interface{} `pulumi:"auxAddress"` + Gateway *string `pulumi:"gateway"` + IpRange *string `pulumi:"ipRange"` + Subnet *string `pulumi:"subnet"` +} + +// GetNetworkIpamConfigInput is an input type that accepts GetNetworkIpamConfigArgs and GetNetworkIpamConfigOutput values. +// You can construct a concrete instance of `GetNetworkIpamConfigInput` via: +// +// GetNetworkIpamConfigArgs{...} +type GetNetworkIpamConfigInput interface { + pulumi.Input + + ToGetNetworkIpamConfigOutput() GetNetworkIpamConfigOutput + ToGetNetworkIpamConfigOutputWithContext(context.Context) GetNetworkIpamConfigOutput +} + +type GetNetworkIpamConfigArgs struct { + AuxAddress pulumi.MapInput `pulumi:"auxAddress"` + Gateway pulumi.StringPtrInput `pulumi:"gateway"` + IpRange pulumi.StringPtrInput `pulumi:"ipRange"` + Subnet pulumi.StringPtrInput `pulumi:"subnet"` +} + +func (GetNetworkIpamConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*GetNetworkIpamConfig)(nil)).Elem() +} + +func (i GetNetworkIpamConfigArgs) ToGetNetworkIpamConfigOutput() GetNetworkIpamConfigOutput { + return i.ToGetNetworkIpamConfigOutputWithContext(context.Background()) +} + +func (i GetNetworkIpamConfigArgs) ToGetNetworkIpamConfigOutputWithContext(ctx context.Context) GetNetworkIpamConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetNetworkIpamConfigOutput) +} + +func (i GetNetworkIpamConfigArgs) ToOutput(ctx context.Context) pulumix.Output[GetNetworkIpamConfig] { + return pulumix.Output[GetNetworkIpamConfig]{ + OutputState: i.ToGetNetworkIpamConfigOutputWithContext(ctx).OutputState, + } +} + +// GetNetworkIpamConfigArrayInput is an input type that accepts GetNetworkIpamConfigArray and GetNetworkIpamConfigArrayOutput values. +// You can construct a concrete instance of `GetNetworkIpamConfigArrayInput` via: +// +// GetNetworkIpamConfigArray{ GetNetworkIpamConfigArgs{...} } +type GetNetworkIpamConfigArrayInput interface { + pulumi.Input + + ToGetNetworkIpamConfigArrayOutput() GetNetworkIpamConfigArrayOutput + ToGetNetworkIpamConfigArrayOutputWithContext(context.Context) GetNetworkIpamConfigArrayOutput +} + +type GetNetworkIpamConfigArray []GetNetworkIpamConfigInput + +func (GetNetworkIpamConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetNetworkIpamConfig)(nil)).Elem() +} + +func (i GetNetworkIpamConfigArray) ToGetNetworkIpamConfigArrayOutput() GetNetworkIpamConfigArrayOutput { + return i.ToGetNetworkIpamConfigArrayOutputWithContext(context.Background()) +} + +func (i GetNetworkIpamConfigArray) ToGetNetworkIpamConfigArrayOutputWithContext(ctx context.Context) GetNetworkIpamConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(GetNetworkIpamConfigArrayOutput) +} + +func (i GetNetworkIpamConfigArray) ToOutput(ctx context.Context) pulumix.Output[[]GetNetworkIpamConfig] { + return pulumix.Output[[]GetNetworkIpamConfig]{ + OutputState: i.ToGetNetworkIpamConfigArrayOutputWithContext(ctx).OutputState, + } +} + +type GetNetworkIpamConfigOutput struct{ *pulumi.OutputState } + +func (GetNetworkIpamConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((*GetNetworkIpamConfig)(nil)).Elem() +} + +func (o GetNetworkIpamConfigOutput) ToGetNetworkIpamConfigOutput() GetNetworkIpamConfigOutput { + return o +} + +func (o GetNetworkIpamConfigOutput) ToGetNetworkIpamConfigOutputWithContext(ctx context.Context) GetNetworkIpamConfigOutput { + return o +} + +func (o GetNetworkIpamConfigOutput) ToOutput(ctx context.Context) pulumix.Output[GetNetworkIpamConfig] { + return pulumix.Output[GetNetworkIpamConfig]{ + OutputState: o.OutputState, + } +} + +func (o GetNetworkIpamConfigOutput) AuxAddress() pulumi.MapOutput { + return o.ApplyT(func(v GetNetworkIpamConfig) map[string]interface{} { return v.AuxAddress }).(pulumi.MapOutput) +} + +func (o GetNetworkIpamConfigOutput) Gateway() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetNetworkIpamConfig) *string { return v.Gateway }).(pulumi.StringPtrOutput) +} + +func (o GetNetworkIpamConfigOutput) IpRange() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetNetworkIpamConfig) *string { return v.IpRange }).(pulumi.StringPtrOutput) +} + +func (o GetNetworkIpamConfigOutput) Subnet() pulumi.StringPtrOutput { + return o.ApplyT(func(v GetNetworkIpamConfig) *string { return v.Subnet }).(pulumi.StringPtrOutput) +} + +type GetNetworkIpamConfigArrayOutput struct{ *pulumi.OutputState } + +func (GetNetworkIpamConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]GetNetworkIpamConfig)(nil)).Elem() +} + +func (o GetNetworkIpamConfigArrayOutput) ToGetNetworkIpamConfigArrayOutput() GetNetworkIpamConfigArrayOutput { + return o +} + +func (o GetNetworkIpamConfigArrayOutput) ToGetNetworkIpamConfigArrayOutputWithContext(ctx context.Context) GetNetworkIpamConfigArrayOutput { + return o +} + +func (o GetNetworkIpamConfigArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]GetNetworkIpamConfig] { + return pulumix.Output[[]GetNetworkIpamConfig]{ + OutputState: o.OutputState, + } +} + +func (o GetNetworkIpamConfigArrayOutput) Index(i pulumi.IntInput) GetNetworkIpamConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) GetNetworkIpamConfig { + return vs[0].([]GetNetworkIpamConfig)[vs[1].(int)] + }).(GetNetworkIpamConfigOutput) +} + +// Describes a Docker container registry +type Registry struct { + // The password to authenticate to the registry. Does not cause image rebuild when changed. + Password *string `pulumi:"password"` + // The URL of the Docker registry server + Server *string `pulumi:"server"` + // The username to authenticate to the registry. Does not cause image rebuild when changed. + Username *string `pulumi:"username"` +} + +// RegistryInput is an input type that accepts RegistryArgs and RegistryOutput values. +// You can construct a concrete instance of `RegistryInput` via: +// +// RegistryArgs{...} +type RegistryInput interface { + pulumi.Input + + ToRegistryOutput() RegistryOutput + ToRegistryOutputWithContext(context.Context) RegistryOutput +} + +// Describes a Docker container registry +type RegistryArgs struct { + // The password to authenticate to the registry. Does not cause image rebuild when changed. + Password pulumi.StringPtrInput `pulumi:"password"` + // The URL of the Docker registry server + Server pulumi.StringPtrInput `pulumi:"server"` + // The username to authenticate to the registry. Does not cause image rebuild when changed. + Username pulumi.StringPtrInput `pulumi:"username"` +} + +func (RegistryArgs) ElementType() reflect.Type { + return reflect.TypeOf((*Registry)(nil)).Elem() +} + +func (i RegistryArgs) ToRegistryOutput() RegistryOutput { + return i.ToRegistryOutputWithContext(context.Background()) +} + +func (i RegistryArgs) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegistryOutput) +} + +func (i RegistryArgs) ToOutput(ctx context.Context) pulumix.Output[Registry] { + return pulumix.Output[Registry]{ + OutputState: i.ToRegistryOutputWithContext(ctx).OutputState, + } +} + +func (i RegistryArgs) ToRegistryPtrOutput() RegistryPtrOutput { + return i.ToRegistryPtrOutputWithContext(context.Background()) +} + +func (i RegistryArgs) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegistryOutput).ToRegistryPtrOutputWithContext(ctx) +} + +// RegistryPtrInput is an input type that accepts RegistryArgs, RegistryPtr and RegistryPtrOutput values. +// You can construct a concrete instance of `RegistryPtrInput` via: +// +// RegistryArgs{...} +// +// or: +// +// nil +type RegistryPtrInput interface { + pulumi.Input + + ToRegistryPtrOutput() RegistryPtrOutput + ToRegistryPtrOutputWithContext(context.Context) RegistryPtrOutput +} + +type registryPtrType RegistryArgs + +func RegistryPtr(v *RegistryArgs) RegistryPtrInput { + return (*registryPtrType)(v) +} + +func (*registryPtrType) ElementType() reflect.Type { + return reflect.TypeOf((**Registry)(nil)).Elem() +} + +func (i *registryPtrType) ToRegistryPtrOutput() RegistryPtrOutput { + return i.ToRegistryPtrOutputWithContext(context.Background()) +} + +func (i *registryPtrType) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegistryPtrOutput) +} + +func (i *registryPtrType) ToOutput(ctx context.Context) pulumix.Output[*Registry] { + return pulumix.Output[*Registry]{ + OutputState: i.ToRegistryPtrOutputWithContext(ctx).OutputState, + } +} + +// Describes a Docker container registry +type RegistryOutput struct{ *pulumi.OutputState } + +func (RegistryOutput) ElementType() reflect.Type { + return reflect.TypeOf((*Registry)(nil)).Elem() +} + +func (o RegistryOutput) ToRegistryOutput() RegistryOutput { + return o +} + +func (o RegistryOutput) ToRegistryOutputWithContext(ctx context.Context) RegistryOutput { + return o +} + +func (o RegistryOutput) ToRegistryPtrOutput() RegistryPtrOutput { + return o.ToRegistryPtrOutputWithContext(context.Background()) +} + +func (o RegistryOutput) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { + return o.ApplyTWithContext(ctx, func(_ context.Context, v Registry) *Registry { + return &v + }).(RegistryPtrOutput) +} + +func (o RegistryOutput) ToOutput(ctx context.Context) pulumix.Output[Registry] { + return pulumix.Output[Registry]{ + OutputState: o.OutputState, + } +} + +// The password to authenticate to the registry. Does not cause image rebuild when changed. +func (o RegistryOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v Registry) *string { return v.Password }).(pulumi.StringPtrOutput) +} + +// The URL of the Docker registry server +func (o RegistryOutput) Server() pulumi.StringPtrOutput { + return o.ApplyT(func(v Registry) *string { return v.Server }).(pulumi.StringPtrOutput) +} + +// The username to authenticate to the registry. Does not cause image rebuild when changed. +func (o RegistryOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v Registry) *string { return v.Username }).(pulumi.StringPtrOutput) +} + +type RegistryPtrOutput struct{ *pulumi.OutputState } + +func (RegistryPtrOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Registry)(nil)).Elem() +} + +func (o RegistryPtrOutput) ToRegistryPtrOutput() RegistryPtrOutput { + return o +} + +func (o RegistryPtrOutput) ToRegistryPtrOutputWithContext(ctx context.Context) RegistryPtrOutput { + return o +} + +func (o RegistryPtrOutput) ToOutput(ctx context.Context) pulumix.Output[*Registry] { + return pulumix.Output[*Registry]{ + OutputState: o.OutputState, + } +} + +func (o RegistryPtrOutput) Elem() RegistryOutput { + return o.ApplyT(func(v *Registry) Registry { + if v != nil { + return *v + } + var ret Registry + return ret + }).(RegistryOutput) +} + +// The password to authenticate to the registry. Does not cause image rebuild when changed. +func (o RegistryPtrOutput) Password() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Registry) *string { + if v == nil { + return nil + } + return v.Password + }).(pulumi.StringPtrOutput) +} + +// The URL of the Docker registry server +func (o RegistryPtrOutput) Server() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Registry) *string { + if v == nil { + return nil + } + return v.Server + }).(pulumi.StringPtrOutput) +} + +// The username to authenticate to the registry. Does not cause image rebuild when changed. +func (o RegistryPtrOutput) Username() pulumi.StringPtrOutput { + return o.ApplyT(func(v *Registry) *string { + if v == nil { + return nil + } + return v.Username + }).(pulumi.StringPtrOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ContainerCapabilitiesInput)(nil)).Elem(), ContainerCapabilitiesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerCapabilitiesPtrInput)(nil)).Elem(), ContainerCapabilitiesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerDeviceInput)(nil)).Elem(), ContainerDeviceArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerDeviceArrayInput)(nil)).Elem(), ContainerDeviceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerHealthcheckInput)(nil)).Elem(), ContainerHealthcheckArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerHealthcheckPtrInput)(nil)).Elem(), ContainerHealthcheckArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerHostInput)(nil)).Elem(), ContainerHostArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerHostArrayInput)(nil)).Elem(), ContainerHostArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerLabelInput)(nil)).Elem(), ContainerLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerLabelArrayInput)(nil)).Elem(), ContainerLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountInput)(nil)).Elem(), ContainerMountArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountArrayInput)(nil)).Elem(), ContainerMountArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountBindOptionsInput)(nil)).Elem(), ContainerMountBindOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountBindOptionsPtrInput)(nil)).Elem(), ContainerMountBindOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountTmpfsOptionsInput)(nil)).Elem(), ContainerMountTmpfsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountTmpfsOptionsPtrInput)(nil)).Elem(), ContainerMountTmpfsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountVolumeOptionsInput)(nil)).Elem(), ContainerMountVolumeOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountVolumeOptionsPtrInput)(nil)).Elem(), ContainerMountVolumeOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountVolumeOptionsLabelInput)(nil)).Elem(), ContainerMountVolumeOptionsLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerMountVolumeOptionsLabelArrayInput)(nil)).Elem(), ContainerMountVolumeOptionsLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerNetworkDataInput)(nil)).Elem(), ContainerNetworkDataArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerNetworkDataArrayInput)(nil)).Elem(), ContainerNetworkDataArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerNetworksAdvancedInput)(nil)).Elem(), ContainerNetworksAdvancedArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerNetworksAdvancedArrayInput)(nil)).Elem(), ContainerNetworksAdvancedArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerPortInput)(nil)).Elem(), ContainerPortArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerPortArrayInput)(nil)).Elem(), ContainerPortArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerUlimitInput)(nil)).Elem(), ContainerUlimitArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerUlimitArrayInput)(nil)).Elem(), ContainerUlimitArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerUploadInput)(nil)).Elem(), ContainerUploadArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerUploadArrayInput)(nil)).Elem(), ContainerUploadArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerVolumeInput)(nil)).Elem(), ContainerVolumeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ContainerVolumeArrayInput)(nil)).Elem(), ContainerVolumeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkIpamConfigInput)(nil)).Elem(), NetworkIpamConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkIpamConfigArrayInput)(nil)).Elem(), NetworkIpamConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLabelInput)(nil)).Elem(), NetworkLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*NetworkLabelArrayInput)(nil)).Elem(), NetworkLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*PluginGrantPermissionInput)(nil)).Elem(), PluginGrantPermissionArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*PluginGrantPermissionArrayInput)(nil)).Elem(), PluginGrantPermissionArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderRegistryAuthInput)(nil)).Elem(), ProviderRegistryAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ProviderRegistryAuthArrayInput)(nil)).Elem(), ProviderRegistryAuthArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageBuildInput)(nil)).Elem(), RemoteImageBuildArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageBuildPtrInput)(nil)).Elem(), RemoteImageBuildArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageBuildAuthConfigInput)(nil)).Elem(), RemoteImageBuildAuthConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageBuildAuthConfigArrayInput)(nil)).Elem(), RemoteImageBuildAuthConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageBuildUlimitInput)(nil)).Elem(), RemoteImageBuildUlimitArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageBuildUlimitArrayInput)(nil)).Elem(), RemoteImageBuildUlimitArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecretLabelInput)(nil)).Elem(), SecretLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecretLabelArrayInput)(nil)).Elem(), SecretLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceAuthInput)(nil)).Elem(), ServiceAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceAuthPtrInput)(nil)).Elem(), ServiceAuthArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceConvergeConfigInput)(nil)).Elem(), ServiceConvergeConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceConvergeConfigPtrInput)(nil)).Elem(), ServiceConvergeConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceEndpointSpecInput)(nil)).Elem(), ServiceEndpointSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceEndpointSpecPtrInput)(nil)).Elem(), ServiceEndpointSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceEndpointSpecPortInput)(nil)).Elem(), ServiceEndpointSpecPortArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceEndpointSpecPortArrayInput)(nil)).Elem(), ServiceEndpointSpecPortArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLabelInput)(nil)).Elem(), ServiceLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceLabelArrayInput)(nil)).Elem(), ServiceLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceModeInput)(nil)).Elem(), ServiceModeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceModePtrInput)(nil)).Elem(), ServiceModeArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceModeReplicatedInput)(nil)).Elem(), ServiceModeReplicatedArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceModeReplicatedPtrInput)(nil)).Elem(), ServiceModeReplicatedArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceRollbackConfigInput)(nil)).Elem(), ServiceRollbackConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceRollbackConfigPtrInput)(nil)).Elem(), ServiceRollbackConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecInput)(nil)).Elem(), ServiceTaskSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecPtrInput)(nil)).Elem(), ServiceTaskSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecInput)(nil)).Elem(), ServiceTaskSpecContainerSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecConfigInput)(nil)).Elem(), ServiceTaskSpecContainerSpecConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecConfigArrayInput)(nil)).Elem(), ServiceTaskSpecContainerSpecConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecDnsConfigInput)(nil)).Elem(), ServiceTaskSpecContainerSpecDnsConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecDnsConfigPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecDnsConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecHealthcheckInput)(nil)).Elem(), ServiceTaskSpecContainerSpecHealthcheckArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecHealthcheckPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecHealthcheckArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecHostInput)(nil)).Elem(), ServiceTaskSpecContainerSpecHostArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecHostArrayInput)(nil)).Elem(), ServiceTaskSpecContainerSpecHostArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecLabelInput)(nil)).Elem(), ServiceTaskSpecContainerSpecLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecLabelArrayInput)(nil)).Elem(), ServiceTaskSpecContainerSpecLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountArrayInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountBindOptionsInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountBindOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountBindOptionsPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountBindOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountTmpfsOptionsInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountTmpfsOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptionsInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountVolumeOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptionsPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountVolumeOptionsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptionsLabelInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayInput)(nil)).Elem(), ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesInput)(nil)).Elem(), ServiceTaskSpecContainerSpecPrivilegesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecPrivilegesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesCredentialSpecInput)(nil)).Elem(), ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecPrivilegesCredentialSpecArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextInput)(nil)).Elem(), ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrInput)(nil)).Elem(), ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecSecretInput)(nil)).Elem(), ServiceTaskSpecContainerSpecSecretArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecContainerSpecSecretArrayInput)(nil)).Elem(), ServiceTaskSpecContainerSpecSecretArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecLogDriverInput)(nil)).Elem(), ServiceTaskSpecLogDriverArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecLogDriverPtrInput)(nil)).Elem(), ServiceTaskSpecLogDriverArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecNetworksAdvancedInput)(nil)).Elem(), ServiceTaskSpecNetworksAdvancedArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecNetworksAdvancedArrayInput)(nil)).Elem(), ServiceTaskSpecNetworksAdvancedArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecPlacementInput)(nil)).Elem(), ServiceTaskSpecPlacementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecPlacementPtrInput)(nil)).Elem(), ServiceTaskSpecPlacementArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecPlacementPlatformInput)(nil)).Elem(), ServiceTaskSpecPlacementPlatformArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecPlacementPlatformArrayInput)(nil)).Elem(), ServiceTaskSpecPlacementPlatformArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesInput)(nil)).Elem(), ServiceTaskSpecResourcesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesPtrInput)(nil)).Elem(), ServiceTaskSpecResourcesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesLimitsInput)(nil)).Elem(), ServiceTaskSpecResourcesLimitsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesLimitsPtrInput)(nil)).Elem(), ServiceTaskSpecResourcesLimitsArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesReservationInput)(nil)).Elem(), ServiceTaskSpecResourcesReservationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesReservationPtrInput)(nil)).Elem(), ServiceTaskSpecResourcesReservationArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesReservationGenericResourcesInput)(nil)).Elem(), ServiceTaskSpecResourcesReservationGenericResourcesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecResourcesReservationGenericResourcesPtrInput)(nil)).Elem(), ServiceTaskSpecResourcesReservationGenericResourcesArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecRestartPolicyInput)(nil)).Elem(), ServiceTaskSpecRestartPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceTaskSpecRestartPolicyPtrInput)(nil)).Elem(), ServiceTaskSpecRestartPolicyArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceUpdateConfigInput)(nil)).Elem(), ServiceUpdateConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceUpdateConfigPtrInput)(nil)).Elem(), ServiceUpdateConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VolumeLabelInput)(nil)).Elem(), VolumeLabelArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*VolumeLabelArrayInput)(nil)).Elem(), VolumeLabelArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*CacheFromInput)(nil)).Elem(), CacheFromArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*CacheFromPtrInput)(nil)).Elem(), CacheFromArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DockerBuildInput)(nil)).Elem(), DockerBuildArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*DockerBuildPtrInput)(nil)).Elem(), DockerBuildArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetNetworkIpamConfigInput)(nil)).Elem(), GetNetworkIpamConfigArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*GetNetworkIpamConfigArrayInput)(nil)).Elem(), GetNetworkIpamConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegistryInput)(nil)).Elem(), RegistryArgs{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegistryPtrInput)(nil)).Elem(), RegistryArgs{}) + pulumi.RegisterOutputType(ContainerCapabilitiesOutput{}) + pulumi.RegisterOutputType(ContainerCapabilitiesPtrOutput{}) + pulumi.RegisterOutputType(ContainerDeviceOutput{}) + pulumi.RegisterOutputType(ContainerDeviceArrayOutput{}) + pulumi.RegisterOutputType(ContainerHealthcheckOutput{}) + pulumi.RegisterOutputType(ContainerHealthcheckPtrOutput{}) + pulumi.RegisterOutputType(ContainerHostOutput{}) + pulumi.RegisterOutputType(ContainerHostArrayOutput{}) + pulumi.RegisterOutputType(ContainerLabelOutput{}) + pulumi.RegisterOutputType(ContainerLabelArrayOutput{}) + pulumi.RegisterOutputType(ContainerMountOutput{}) + pulumi.RegisterOutputType(ContainerMountArrayOutput{}) + pulumi.RegisterOutputType(ContainerMountBindOptionsOutput{}) + pulumi.RegisterOutputType(ContainerMountBindOptionsPtrOutput{}) + pulumi.RegisterOutputType(ContainerMountTmpfsOptionsOutput{}) + pulumi.RegisterOutputType(ContainerMountTmpfsOptionsPtrOutput{}) + pulumi.RegisterOutputType(ContainerMountVolumeOptionsOutput{}) + pulumi.RegisterOutputType(ContainerMountVolumeOptionsPtrOutput{}) + pulumi.RegisterOutputType(ContainerMountVolumeOptionsLabelOutput{}) + pulumi.RegisterOutputType(ContainerMountVolumeOptionsLabelArrayOutput{}) + pulumi.RegisterOutputType(ContainerNetworkDataOutput{}) + pulumi.RegisterOutputType(ContainerNetworkDataArrayOutput{}) + pulumi.RegisterOutputType(ContainerNetworksAdvancedOutput{}) + pulumi.RegisterOutputType(ContainerNetworksAdvancedArrayOutput{}) + pulumi.RegisterOutputType(ContainerPortOutput{}) + pulumi.RegisterOutputType(ContainerPortArrayOutput{}) + pulumi.RegisterOutputType(ContainerUlimitOutput{}) + pulumi.RegisterOutputType(ContainerUlimitArrayOutput{}) + pulumi.RegisterOutputType(ContainerUploadOutput{}) + pulumi.RegisterOutputType(ContainerUploadArrayOutput{}) + pulumi.RegisterOutputType(ContainerVolumeOutput{}) + pulumi.RegisterOutputType(ContainerVolumeArrayOutput{}) + pulumi.RegisterOutputType(NetworkIpamConfigOutput{}) + pulumi.RegisterOutputType(NetworkIpamConfigArrayOutput{}) + pulumi.RegisterOutputType(NetworkLabelOutput{}) + pulumi.RegisterOutputType(NetworkLabelArrayOutput{}) + pulumi.RegisterOutputType(PluginGrantPermissionOutput{}) + pulumi.RegisterOutputType(PluginGrantPermissionArrayOutput{}) + pulumi.RegisterOutputType(ProviderRegistryAuthOutput{}) + pulumi.RegisterOutputType(ProviderRegistryAuthArrayOutput{}) + pulumi.RegisterOutputType(RemoteImageBuildOutput{}) + pulumi.RegisterOutputType(RemoteImageBuildPtrOutput{}) + pulumi.RegisterOutputType(RemoteImageBuildAuthConfigOutput{}) + pulumi.RegisterOutputType(RemoteImageBuildAuthConfigArrayOutput{}) + pulumi.RegisterOutputType(RemoteImageBuildUlimitOutput{}) + pulumi.RegisterOutputType(RemoteImageBuildUlimitArrayOutput{}) + pulumi.RegisterOutputType(SecretLabelOutput{}) + pulumi.RegisterOutputType(SecretLabelArrayOutput{}) + pulumi.RegisterOutputType(ServiceAuthOutput{}) + pulumi.RegisterOutputType(ServiceAuthPtrOutput{}) + pulumi.RegisterOutputType(ServiceConvergeConfigOutput{}) + pulumi.RegisterOutputType(ServiceConvergeConfigPtrOutput{}) + pulumi.RegisterOutputType(ServiceEndpointSpecOutput{}) + pulumi.RegisterOutputType(ServiceEndpointSpecPtrOutput{}) + pulumi.RegisterOutputType(ServiceEndpointSpecPortOutput{}) + pulumi.RegisterOutputType(ServiceEndpointSpecPortArrayOutput{}) + pulumi.RegisterOutputType(ServiceLabelOutput{}) + pulumi.RegisterOutputType(ServiceLabelArrayOutput{}) + pulumi.RegisterOutputType(ServiceModeOutput{}) + pulumi.RegisterOutputType(ServiceModePtrOutput{}) + pulumi.RegisterOutputType(ServiceModeReplicatedOutput{}) + pulumi.RegisterOutputType(ServiceModeReplicatedPtrOutput{}) + pulumi.RegisterOutputType(ServiceRollbackConfigOutput{}) + pulumi.RegisterOutputType(ServiceRollbackConfigPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecConfigOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecConfigArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecDnsConfigOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecDnsConfigPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecHealthcheckOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecHealthcheckPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecHostOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecHostArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecLabelOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecLabelArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountBindOptionsOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountBindOptionsPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountTmpfsOptionsOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountTmpfsOptionsPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountVolumeOptionsOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountVolumeOptionsPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountVolumeOptionsLabelOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecMountVolumeOptionsLabelArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecPrivilegesOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecPrivilegesPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecPrivilegesCredentialSpecPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecPrivilegesSeLinuxContextPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecSecretOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecContainerSpecSecretArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecLogDriverOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecLogDriverPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecNetworksAdvancedOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecNetworksAdvancedArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecPlacementOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecPlacementPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecPlacementPlatformOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecPlacementPlatformArrayOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesLimitsOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesLimitsPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesReservationOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesReservationPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesReservationGenericResourcesOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecResourcesReservationGenericResourcesPtrOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecRestartPolicyOutput{}) + pulumi.RegisterOutputType(ServiceTaskSpecRestartPolicyPtrOutput{}) + pulumi.RegisterOutputType(ServiceUpdateConfigOutput{}) + pulumi.RegisterOutputType(ServiceUpdateConfigPtrOutput{}) + pulumi.RegisterOutputType(VolumeLabelOutput{}) + pulumi.RegisterOutputType(VolumeLabelArrayOutput{}) + pulumi.RegisterOutputType(CacheFromOutput{}) + pulumi.RegisterOutputType(CacheFromPtrOutput{}) + pulumi.RegisterOutputType(DockerBuildOutput{}) + pulumi.RegisterOutputType(DockerBuildPtrOutput{}) + pulumi.RegisterOutputType(GetNetworkIpamConfigOutput{}) + pulumi.RegisterOutputType(GetNetworkIpamConfigArrayOutput{}) + pulumi.RegisterOutputType(RegistryOutput{}) + pulumi.RegisterOutputType(RegistryPtrOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/registryImage.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/registryImage.go new file mode 100644 index 000000000..2da579f4b --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/registryImage.go @@ -0,0 +1,348 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// +// Manages the lifecycle of docker image in a registry. You can upload images to a registry (= `docker push`) and also delete them again +// +// ## Example Usage +// +// Build an image with the `RemoteImage` resource and then push it to a registry: +// +// ```go +// package main +// +// import ( +// +// "fmt" +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := docker.NewRegistryImage(ctx, "helloworld", &docker.RegistryImageArgs{ +// KeepRemotely: pulumi.Bool(true), +// }) +// if err != nil { +// return err +// } +// _, err = docker.NewRemoteImage(ctx, "image", &docker.RemoteImageArgs{ +// Name: pulumi.String("registry.com/somename:1.0"), +// Build: &docker.RemoteImageBuildArgs{ +// Context: pulumi.String(fmt.Sprintf("%v/absolutePathToContextFolder", path.Cwd)), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type RegistryImage struct { + pulumi.CustomResourceState + + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify pulumi.BoolPtrOutput `pulumi:"insecureSkipVerify"` + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker registry on destroy operation. Defaults to `false` + KeepRemotely pulumi.BoolPtrOutput `pulumi:"keepRemotely"` + // The name of the Docker image. + Name pulumi.StringOutput `pulumi:"name"` + // The sha256 digest of the image. + Sha256Digest pulumi.StringOutput `pulumi:"sha256Digest"` + // A map of arbitrary strings that, when changed, will force the `RegistryImage` resource to be replaced. This can be used to repush a local image + Triggers pulumi.MapOutput `pulumi:"triggers"` +} + +// NewRegistryImage registers a new resource with the given unique name, arguments, and options. +func NewRegistryImage(ctx *pulumi.Context, + name string, args *RegistryImageArgs, opts ...pulumi.ResourceOption) (*RegistryImage, error) { + if args == nil { + args = &RegistryImageArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource RegistryImage + err := ctx.RegisterResource("docker:index/registryImage:RegistryImage", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRegistryImage gets an existing RegistryImage 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 GetRegistryImage(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RegistryImageState, opts ...pulumi.ResourceOption) (*RegistryImage, error) { + var resource RegistryImage + err := ctx.ReadResource("docker:index/registryImage:RegistryImage", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RegistryImage resources. +type registryImageState struct { + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"` + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker registry on destroy operation. Defaults to `false` + KeepRemotely *bool `pulumi:"keepRemotely"` + // The name of the Docker image. + Name *string `pulumi:"name"` + // The sha256 digest of the image. + Sha256Digest *string `pulumi:"sha256Digest"` + // A map of arbitrary strings that, when changed, will force the `RegistryImage` resource to be replaced. This can be used to repush a local image + Triggers map[string]interface{} `pulumi:"triggers"` +} + +type RegistryImageState struct { + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify pulumi.BoolPtrInput + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker registry on destroy operation. Defaults to `false` + KeepRemotely pulumi.BoolPtrInput + // The name of the Docker image. + Name pulumi.StringPtrInput + // The sha256 digest of the image. + Sha256Digest pulumi.StringPtrInput + // A map of arbitrary strings that, when changed, will force the `RegistryImage` resource to be replaced. This can be used to repush a local image + Triggers pulumi.MapInput +} + +func (RegistryImageState) ElementType() reflect.Type { + return reflect.TypeOf((*registryImageState)(nil)).Elem() +} + +type registryImageArgs struct { + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"` + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker registry on destroy operation. Defaults to `false` + KeepRemotely *bool `pulumi:"keepRemotely"` + // The name of the Docker image. + Name *string `pulumi:"name"` + // A map of arbitrary strings that, when changed, will force the `RegistryImage` resource to be replaced. This can be used to repush a local image + Triggers map[string]interface{} `pulumi:"triggers"` +} + +// The set of arguments for constructing a RegistryImage resource. +type RegistryImageArgs struct { + // If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` + InsecureSkipVerify pulumi.BoolPtrInput + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker registry on destroy operation. Defaults to `false` + KeepRemotely pulumi.BoolPtrInput + // The name of the Docker image. + Name pulumi.StringPtrInput + // A map of arbitrary strings that, when changed, will force the `RegistryImage` resource to be replaced. This can be used to repush a local image + Triggers pulumi.MapInput +} + +func (RegistryImageArgs) ElementType() reflect.Type { + return reflect.TypeOf((*registryImageArgs)(nil)).Elem() +} + +type RegistryImageInput interface { + pulumi.Input + + ToRegistryImageOutput() RegistryImageOutput + ToRegistryImageOutputWithContext(ctx context.Context) RegistryImageOutput +} + +func (*RegistryImage) ElementType() reflect.Type { + return reflect.TypeOf((**RegistryImage)(nil)).Elem() +} + +func (i *RegistryImage) ToRegistryImageOutput() RegistryImageOutput { + return i.ToRegistryImageOutputWithContext(context.Background()) +} + +func (i *RegistryImage) ToRegistryImageOutputWithContext(ctx context.Context) RegistryImageOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegistryImageOutput) +} + +func (i *RegistryImage) ToOutput(ctx context.Context) pulumix.Output[*RegistryImage] { + return pulumix.Output[*RegistryImage]{ + OutputState: i.ToRegistryImageOutputWithContext(ctx).OutputState, + } +} + +// RegistryImageArrayInput is an input type that accepts RegistryImageArray and RegistryImageArrayOutput values. +// You can construct a concrete instance of `RegistryImageArrayInput` via: +// +// RegistryImageArray{ RegistryImageArgs{...} } +type RegistryImageArrayInput interface { + pulumi.Input + + ToRegistryImageArrayOutput() RegistryImageArrayOutput + ToRegistryImageArrayOutputWithContext(context.Context) RegistryImageArrayOutput +} + +type RegistryImageArray []RegistryImageInput + +func (RegistryImageArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RegistryImage)(nil)).Elem() +} + +func (i RegistryImageArray) ToRegistryImageArrayOutput() RegistryImageArrayOutput { + return i.ToRegistryImageArrayOutputWithContext(context.Background()) +} + +func (i RegistryImageArray) ToRegistryImageArrayOutputWithContext(ctx context.Context) RegistryImageArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegistryImageArrayOutput) +} + +func (i RegistryImageArray) ToOutput(ctx context.Context) pulumix.Output[[]*RegistryImage] { + return pulumix.Output[[]*RegistryImage]{ + OutputState: i.ToRegistryImageArrayOutputWithContext(ctx).OutputState, + } +} + +// RegistryImageMapInput is an input type that accepts RegistryImageMap and RegistryImageMapOutput values. +// You can construct a concrete instance of `RegistryImageMapInput` via: +// +// RegistryImageMap{ "key": RegistryImageArgs{...} } +type RegistryImageMapInput interface { + pulumi.Input + + ToRegistryImageMapOutput() RegistryImageMapOutput + ToRegistryImageMapOutputWithContext(context.Context) RegistryImageMapOutput +} + +type RegistryImageMap map[string]RegistryImageInput + +func (RegistryImageMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RegistryImage)(nil)).Elem() +} + +func (i RegistryImageMap) ToRegistryImageMapOutput() RegistryImageMapOutput { + return i.ToRegistryImageMapOutputWithContext(context.Background()) +} + +func (i RegistryImageMap) ToRegistryImageMapOutputWithContext(ctx context.Context) RegistryImageMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RegistryImageMapOutput) +} + +func (i RegistryImageMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*RegistryImage] { + return pulumix.Output[map[string]*RegistryImage]{ + OutputState: i.ToRegistryImageMapOutputWithContext(ctx).OutputState, + } +} + +type RegistryImageOutput struct{ *pulumi.OutputState } + +func (RegistryImageOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RegistryImage)(nil)).Elem() +} + +func (o RegistryImageOutput) ToRegistryImageOutput() RegistryImageOutput { + return o +} + +func (o RegistryImageOutput) ToRegistryImageOutputWithContext(ctx context.Context) RegistryImageOutput { + return o +} + +func (o RegistryImageOutput) ToOutput(ctx context.Context) pulumix.Output[*RegistryImage] { + return pulumix.Output[*RegistryImage]{ + OutputState: o.OutputState, + } +} + +// If `true`, the verification of TLS certificates of the server/registry is disabled. Defaults to `false` +func (o RegistryImageOutput) InsecureSkipVerify() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RegistryImage) pulumi.BoolPtrOutput { return v.InsecureSkipVerify }).(pulumi.BoolPtrOutput) +} + +// If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker registry on destroy operation. Defaults to `false` +func (o RegistryImageOutput) KeepRemotely() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RegistryImage) pulumi.BoolPtrOutput { return v.KeepRemotely }).(pulumi.BoolPtrOutput) +} + +// The name of the Docker image. +func (o RegistryImageOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *RegistryImage) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The sha256 digest of the image. +func (o RegistryImageOutput) Sha256Digest() pulumi.StringOutput { + return o.ApplyT(func(v *RegistryImage) pulumi.StringOutput { return v.Sha256Digest }).(pulumi.StringOutput) +} + +// A map of arbitrary strings that, when changed, will force the `RegistryImage` resource to be replaced. This can be used to repush a local image +func (o RegistryImageOutput) Triggers() pulumi.MapOutput { + return o.ApplyT(func(v *RegistryImage) pulumi.MapOutput { return v.Triggers }).(pulumi.MapOutput) +} + +type RegistryImageArrayOutput struct{ *pulumi.OutputState } + +func (RegistryImageArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RegistryImage)(nil)).Elem() +} + +func (o RegistryImageArrayOutput) ToRegistryImageArrayOutput() RegistryImageArrayOutput { + return o +} + +func (o RegistryImageArrayOutput) ToRegistryImageArrayOutputWithContext(ctx context.Context) RegistryImageArrayOutput { + return o +} + +func (o RegistryImageArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*RegistryImage] { + return pulumix.Output[[]*RegistryImage]{ + OutputState: o.OutputState, + } +} + +func (o RegistryImageArrayOutput) Index(i pulumi.IntInput) RegistryImageOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RegistryImage { + return vs[0].([]*RegistryImage)[vs[1].(int)] + }).(RegistryImageOutput) +} + +type RegistryImageMapOutput struct{ *pulumi.OutputState } + +func (RegistryImageMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RegistryImage)(nil)).Elem() +} + +func (o RegistryImageMapOutput) ToRegistryImageMapOutput() RegistryImageMapOutput { + return o +} + +func (o RegistryImageMapOutput) ToRegistryImageMapOutputWithContext(ctx context.Context) RegistryImageMapOutput { + return o +} + +func (o RegistryImageMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*RegistryImage] { + return pulumix.Output[map[string]*RegistryImage]{ + OutputState: o.OutputState, + } +} + +func (o RegistryImageMapOutput) MapIndex(k pulumi.StringInput) RegistryImageOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RegistryImage { + return vs[0].(map[string]*RegistryImage)[vs[1].(string)] + }).(RegistryImageOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RegistryImageInput)(nil)).Elem(), &RegistryImage{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegistryImageArrayInput)(nil)).Elem(), RegistryImageArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RegistryImageMapInput)(nil)).Elem(), RegistryImageMap{}) + pulumi.RegisterOutputType(RegistryImageOutput{}) + pulumi.RegisterOutputType(RegistryImageArrayOutput{}) + pulumi.RegisterOutputType(RegistryImageMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/remoteImage.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/remoteImage.go new file mode 100644 index 000000000..4d2db4ad8 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/remoteImage.go @@ -0,0 +1,438 @@ +// 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 docker + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// +// Pulls a Docker image to a given Docker host from a Docker Registry. +// +// This resource will *not* pull new layers of the image automatically unless used in conjunction with RegistryImage data source to update the `pullTriggers` field. +// +// ## Example Usage +// ### Basic +// +// Finds and downloads the latest `ubuntu:precise` image but does not check +// for further updates of the image +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := docker.NewRemoteImage(ctx, "ubuntu", &docker.RemoteImageArgs{ +// Name: pulumi.String("ubuntu:precise"), +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// ### Dynamic updates +// +// To be able to update an image dynamically when the `sha256` sum changes, +// you need to use it in combination with `RegistryImage` as follows: +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// ubuntuRegistryImage, err := docker.LookupRegistryImage(ctx, &docker.LookupRegistryImageArgs{ +// Name: "ubuntu:precise", +// }, nil) +// if err != nil { +// return err +// } +// _, err = docker.NewRemoteImage(ctx, "ubuntuRemoteImage", &docker.RemoteImageArgs{ +// Name: *pulumi.String(ubuntuRegistryImage.Name), +// PullTriggers: pulumi.StringArray{ +// *pulumi.String(ubuntuRegistryImage.Sha256Digest), +// }, +// }) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +type RemoteImage struct { + pulumi.CustomResourceState + + // Configuration to build an image. Please see [docker build command reference](https://docs.docker.com/engine/reference/commandline/build/#options) too. + Build RemoteImageBuildPtrOutput `pulumi:"build"` + // If true, then the image is removed forcibly when the resource is destroyed. + ForceRemove pulumi.BoolPtrOutput `pulumi:"forceRemove"` + // The ID of the image (as seen when executing `docker inspect` on the image). Can be used to reference the image via its ID in other resources. + ImageId pulumi.StringOutput `pulumi:"imageId"` + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker local storage on destroy operation. + KeepLocally pulumi.BoolPtrOutput `pulumi:"keepLocally"` + // The name of the Docker image, including any tags or SHA256 repo digests. + Name pulumi.StringOutput `pulumi:"name"` + // The platform to use when pulling the image. Defaults to the platform of the current machine. + Platform pulumi.StringPtrOutput `pulumi:"platform"` + // List of values which cause an image pull when changed. This is used to store the image digest from the registry when using the docker*registry*image. + PullTriggers pulumi.StringArrayOutput `pulumi:"pullTriggers"` + // The image sha256 digest in the form of `repo[:tag]@sha256:`. + RepoDigest pulumi.StringOutput `pulumi:"repoDigest"` + // A map of arbitrary strings that, when changed, will force the `RemoteImage` resource to be replaced. This can be used to rebuild an image when contents of source code folders change + Triggers pulumi.MapOutput `pulumi:"triggers"` +} + +// NewRemoteImage registers a new resource with the given unique name, arguments, and options. +func NewRemoteImage(ctx *pulumi.Context, + name string, args *RemoteImageArgs, opts ...pulumi.ResourceOption) (*RemoteImage, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Name == nil { + return nil, errors.New("invalid value for required argument 'Name'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource RemoteImage + err := ctx.RegisterResource("docker:index/remoteImage:RemoteImage", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetRemoteImage gets an existing RemoteImage 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 GetRemoteImage(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *RemoteImageState, opts ...pulumi.ResourceOption) (*RemoteImage, error) { + var resource RemoteImage + err := ctx.ReadResource("docker:index/remoteImage:RemoteImage", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering RemoteImage resources. +type remoteImageState struct { + // Configuration to build an image. Please see [docker build command reference](https://docs.docker.com/engine/reference/commandline/build/#options) too. + Build *RemoteImageBuild `pulumi:"build"` + // If true, then the image is removed forcibly when the resource is destroyed. + ForceRemove *bool `pulumi:"forceRemove"` + // The ID of the image (as seen when executing `docker inspect` on the image). Can be used to reference the image via its ID in other resources. + ImageId *string `pulumi:"imageId"` + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker local storage on destroy operation. + KeepLocally *bool `pulumi:"keepLocally"` + // The name of the Docker image, including any tags or SHA256 repo digests. + Name *string `pulumi:"name"` + // The platform to use when pulling the image. Defaults to the platform of the current machine. + Platform *string `pulumi:"platform"` + // List of values which cause an image pull when changed. This is used to store the image digest from the registry when using the docker*registry*image. + PullTriggers []string `pulumi:"pullTriggers"` + // The image sha256 digest in the form of `repo[:tag]@sha256:`. + RepoDigest *string `pulumi:"repoDigest"` + // A map of arbitrary strings that, when changed, will force the `RemoteImage` resource to be replaced. This can be used to rebuild an image when contents of source code folders change + Triggers map[string]interface{} `pulumi:"triggers"` +} + +type RemoteImageState struct { + // Configuration to build an image. Please see [docker build command reference](https://docs.docker.com/engine/reference/commandline/build/#options) too. + Build RemoteImageBuildPtrInput + // If true, then the image is removed forcibly when the resource is destroyed. + ForceRemove pulumi.BoolPtrInput + // The ID of the image (as seen when executing `docker inspect` on the image). Can be used to reference the image via its ID in other resources. + ImageId pulumi.StringPtrInput + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker local storage on destroy operation. + KeepLocally pulumi.BoolPtrInput + // The name of the Docker image, including any tags or SHA256 repo digests. + Name pulumi.StringPtrInput + // The platform to use when pulling the image. Defaults to the platform of the current machine. + Platform pulumi.StringPtrInput + // List of values which cause an image pull when changed. This is used to store the image digest from the registry when using the docker*registry*image. + PullTriggers pulumi.StringArrayInput + // The image sha256 digest in the form of `repo[:tag]@sha256:`. + RepoDigest pulumi.StringPtrInput + // A map of arbitrary strings that, when changed, will force the `RemoteImage` resource to be replaced. This can be used to rebuild an image when contents of source code folders change + Triggers pulumi.MapInput +} + +func (RemoteImageState) ElementType() reflect.Type { + return reflect.TypeOf((*remoteImageState)(nil)).Elem() +} + +type remoteImageArgs struct { + // Configuration to build an image. Please see [docker build command reference](https://docs.docker.com/engine/reference/commandline/build/#options) too. + Build *RemoteImageBuild `pulumi:"build"` + // If true, then the image is removed forcibly when the resource is destroyed. + ForceRemove *bool `pulumi:"forceRemove"` + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker local storage on destroy operation. + KeepLocally *bool `pulumi:"keepLocally"` + // The name of the Docker image, including any tags or SHA256 repo digests. + Name string `pulumi:"name"` + // The platform to use when pulling the image. Defaults to the platform of the current machine. + Platform *string `pulumi:"platform"` + // List of values which cause an image pull when changed. This is used to store the image digest from the registry when using the docker*registry*image. + PullTriggers []string `pulumi:"pullTriggers"` + // A map of arbitrary strings that, when changed, will force the `RemoteImage` resource to be replaced. This can be used to rebuild an image when contents of source code folders change + Triggers map[string]interface{} `pulumi:"triggers"` +} + +// The set of arguments for constructing a RemoteImage resource. +type RemoteImageArgs struct { + // Configuration to build an image. Please see [docker build command reference](https://docs.docker.com/engine/reference/commandline/build/#options) too. + Build RemoteImageBuildPtrInput + // If true, then the image is removed forcibly when the resource is destroyed. + ForceRemove pulumi.BoolPtrInput + // If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker local storage on destroy operation. + KeepLocally pulumi.BoolPtrInput + // The name of the Docker image, including any tags or SHA256 repo digests. + Name pulumi.StringInput + // The platform to use when pulling the image. Defaults to the platform of the current machine. + Platform pulumi.StringPtrInput + // List of values which cause an image pull when changed. This is used to store the image digest from the registry when using the docker*registry*image. + PullTriggers pulumi.StringArrayInput + // A map of arbitrary strings that, when changed, will force the `RemoteImage` resource to be replaced. This can be used to rebuild an image when contents of source code folders change + Triggers pulumi.MapInput +} + +func (RemoteImageArgs) ElementType() reflect.Type { + return reflect.TypeOf((*remoteImageArgs)(nil)).Elem() +} + +type RemoteImageInput interface { + pulumi.Input + + ToRemoteImageOutput() RemoteImageOutput + ToRemoteImageOutputWithContext(ctx context.Context) RemoteImageOutput +} + +func (*RemoteImage) ElementType() reflect.Type { + return reflect.TypeOf((**RemoteImage)(nil)).Elem() +} + +func (i *RemoteImage) ToRemoteImageOutput() RemoteImageOutput { + return i.ToRemoteImageOutputWithContext(context.Background()) +} + +func (i *RemoteImage) ToRemoteImageOutputWithContext(ctx context.Context) RemoteImageOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageOutput) +} + +func (i *RemoteImage) ToOutput(ctx context.Context) pulumix.Output[*RemoteImage] { + return pulumix.Output[*RemoteImage]{ + OutputState: i.ToRemoteImageOutputWithContext(ctx).OutputState, + } +} + +// RemoteImageArrayInput is an input type that accepts RemoteImageArray and RemoteImageArrayOutput values. +// You can construct a concrete instance of `RemoteImageArrayInput` via: +// +// RemoteImageArray{ RemoteImageArgs{...} } +type RemoteImageArrayInput interface { + pulumi.Input + + ToRemoteImageArrayOutput() RemoteImageArrayOutput + ToRemoteImageArrayOutputWithContext(context.Context) RemoteImageArrayOutput +} + +type RemoteImageArray []RemoteImageInput + +func (RemoteImageArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RemoteImage)(nil)).Elem() +} + +func (i RemoteImageArray) ToRemoteImageArrayOutput() RemoteImageArrayOutput { + return i.ToRemoteImageArrayOutputWithContext(context.Background()) +} + +func (i RemoteImageArray) ToRemoteImageArrayOutputWithContext(ctx context.Context) RemoteImageArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageArrayOutput) +} + +func (i RemoteImageArray) ToOutput(ctx context.Context) pulumix.Output[[]*RemoteImage] { + return pulumix.Output[[]*RemoteImage]{ + OutputState: i.ToRemoteImageArrayOutputWithContext(ctx).OutputState, + } +} + +// RemoteImageMapInput is an input type that accepts RemoteImageMap and RemoteImageMapOutput values. +// You can construct a concrete instance of `RemoteImageMapInput` via: +// +// RemoteImageMap{ "key": RemoteImageArgs{...} } +type RemoteImageMapInput interface { + pulumi.Input + + ToRemoteImageMapOutput() RemoteImageMapOutput + ToRemoteImageMapOutputWithContext(context.Context) RemoteImageMapOutput +} + +type RemoteImageMap map[string]RemoteImageInput + +func (RemoteImageMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RemoteImage)(nil)).Elem() +} + +func (i RemoteImageMap) ToRemoteImageMapOutput() RemoteImageMapOutput { + return i.ToRemoteImageMapOutputWithContext(context.Background()) +} + +func (i RemoteImageMap) ToRemoteImageMapOutputWithContext(ctx context.Context) RemoteImageMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(RemoteImageMapOutput) +} + +func (i RemoteImageMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*RemoteImage] { + return pulumix.Output[map[string]*RemoteImage]{ + OutputState: i.ToRemoteImageMapOutputWithContext(ctx).OutputState, + } +} + +type RemoteImageOutput struct{ *pulumi.OutputState } + +func (RemoteImageOutput) ElementType() reflect.Type { + return reflect.TypeOf((**RemoteImage)(nil)).Elem() +} + +func (o RemoteImageOutput) ToRemoteImageOutput() RemoteImageOutput { + return o +} + +func (o RemoteImageOutput) ToRemoteImageOutputWithContext(ctx context.Context) RemoteImageOutput { + return o +} + +func (o RemoteImageOutput) ToOutput(ctx context.Context) pulumix.Output[*RemoteImage] { + return pulumix.Output[*RemoteImage]{ + OutputState: o.OutputState, + } +} + +// Configuration to build an image. Please see [docker build command reference](https://docs.docker.com/engine/reference/commandline/build/#options) too. +func (o RemoteImageOutput) Build() RemoteImageBuildPtrOutput { + return o.ApplyT(func(v *RemoteImage) RemoteImageBuildPtrOutput { return v.Build }).(RemoteImageBuildPtrOutput) +} + +// If true, then the image is removed forcibly when the resource is destroyed. +func (o RemoteImageOutput) ForceRemove() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.BoolPtrOutput { return v.ForceRemove }).(pulumi.BoolPtrOutput) +} + +// The ID of the image (as seen when executing `docker inspect` on the image). Can be used to reference the image via its ID in other resources. +func (o RemoteImageOutput) ImageId() pulumi.StringOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.StringOutput { return v.ImageId }).(pulumi.StringOutput) +} + +// If true, then the Docker image won't be deleted on destroy operation. If this is false, it will delete the image from the docker local storage on destroy operation. +func (o RemoteImageOutput) KeepLocally() pulumi.BoolPtrOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.BoolPtrOutput { return v.KeepLocally }).(pulumi.BoolPtrOutput) +} + +// The name of the Docker image, including any tags or SHA256 repo digests. +func (o RemoteImageOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// The platform to use when pulling the image. Defaults to the platform of the current machine. +func (o RemoteImageOutput) Platform() pulumi.StringPtrOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.StringPtrOutput { return v.Platform }).(pulumi.StringPtrOutput) +} + +// List of values which cause an image pull when changed. This is used to store the image digest from the registry when using the docker*registry*image. +func (o RemoteImageOutput) PullTriggers() pulumi.StringArrayOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.StringArrayOutput { return v.PullTriggers }).(pulumi.StringArrayOutput) +} + +// The image sha256 digest in the form of `repo[:tag]@sha256:`. +func (o RemoteImageOutput) RepoDigest() pulumi.StringOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.StringOutput { return v.RepoDigest }).(pulumi.StringOutput) +} + +// A map of arbitrary strings that, when changed, will force the `RemoteImage` resource to be replaced. This can be used to rebuild an image when contents of source code folders change +func (o RemoteImageOutput) Triggers() pulumi.MapOutput { + return o.ApplyT(func(v *RemoteImage) pulumi.MapOutput { return v.Triggers }).(pulumi.MapOutput) +} + +type RemoteImageArrayOutput struct{ *pulumi.OutputState } + +func (RemoteImageArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*RemoteImage)(nil)).Elem() +} + +func (o RemoteImageArrayOutput) ToRemoteImageArrayOutput() RemoteImageArrayOutput { + return o +} + +func (o RemoteImageArrayOutput) ToRemoteImageArrayOutputWithContext(ctx context.Context) RemoteImageArrayOutput { + return o +} + +func (o RemoteImageArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*RemoteImage] { + return pulumix.Output[[]*RemoteImage]{ + OutputState: o.OutputState, + } +} + +func (o RemoteImageArrayOutput) Index(i pulumi.IntInput) RemoteImageOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RemoteImage { + return vs[0].([]*RemoteImage)[vs[1].(int)] + }).(RemoteImageOutput) +} + +type RemoteImageMapOutput struct{ *pulumi.OutputState } + +func (RemoteImageMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*RemoteImage)(nil)).Elem() +} + +func (o RemoteImageMapOutput) ToRemoteImageMapOutput() RemoteImageMapOutput { + return o +} + +func (o RemoteImageMapOutput) ToRemoteImageMapOutputWithContext(ctx context.Context) RemoteImageMapOutput { + return o +} + +func (o RemoteImageMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*RemoteImage] { + return pulumix.Output[map[string]*RemoteImage]{ + OutputState: o.OutputState, + } +} + +func (o RemoteImageMapOutput) MapIndex(k pulumi.StringInput) RemoteImageOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RemoteImage { + return vs[0].(map[string]*RemoteImage)[vs[1].(string)] + }).(RemoteImageOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageInput)(nil)).Elem(), &RemoteImage{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageArrayInput)(nil)).Elem(), RemoteImageArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*RemoteImageMapInput)(nil)).Elem(), RemoteImageMap{}) + pulumi.RegisterOutputType(RemoteImageOutput{}) + pulumi.RegisterOutputType(RemoteImageArrayOutput{}) + pulumi.RegisterOutputType(RemoteImageMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/secret.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/secret.go new file mode 100644 index 000000000..35672a2d1 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/secret.go @@ -0,0 +1,295 @@ +// 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 docker + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// ## Import +// +// #!/bin/bash Docker secret cannot be imported as the secret data, once set, is never exposed again. +type Secret struct { + pulumi.CustomResourceState + + // Base64-url-safe-encoded secret data + Data pulumi.StringOutput `pulumi:"data"` + // User-defined key/value metadata + Labels SecretLabelArrayOutput `pulumi:"labels"` + // User-defined name of the secret + Name pulumi.StringOutput `pulumi:"name"` +} + +// NewSecret registers a new resource with the given unique name, arguments, and options. +func NewSecret(ctx *pulumi.Context, + name string, args *SecretArgs, opts ...pulumi.ResourceOption) (*Secret, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Data == nil { + return nil, errors.New("invalid value for required argument 'Data'") + } + if args.Data != nil { + args.Data = pulumi.ToSecret(args.Data).(pulumi.StringInput) + } + secrets := pulumi.AdditionalSecretOutputs([]string{ + "data", + }) + opts = append(opts, secrets) + opts = internal.PkgResourceDefaultOpts(opts) + var resource Secret + err := ctx.RegisterResource("docker:index/secret:Secret", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetSecret gets an existing Secret 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 GetSecret(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *SecretState, opts ...pulumi.ResourceOption) (*Secret, error) { + var resource Secret + err := ctx.ReadResource("docker:index/secret:Secret", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Secret resources. +type secretState struct { + // Base64-url-safe-encoded secret data + Data *string `pulumi:"data"` + // User-defined key/value metadata + Labels []SecretLabel `pulumi:"labels"` + // User-defined name of the secret + Name *string `pulumi:"name"` +} + +type SecretState struct { + // Base64-url-safe-encoded secret data + Data pulumi.StringPtrInput + // User-defined key/value metadata + Labels SecretLabelArrayInput + // User-defined name of the secret + Name pulumi.StringPtrInput +} + +func (SecretState) ElementType() reflect.Type { + return reflect.TypeOf((*secretState)(nil)).Elem() +} + +type secretArgs struct { + // Base64-url-safe-encoded secret data + Data string `pulumi:"data"` + // User-defined key/value metadata + Labels []SecretLabel `pulumi:"labels"` + // User-defined name of the secret + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a Secret resource. +type SecretArgs struct { + // Base64-url-safe-encoded secret data + Data pulumi.StringInput + // User-defined key/value metadata + Labels SecretLabelArrayInput + // User-defined name of the secret + Name pulumi.StringPtrInput +} + +func (SecretArgs) ElementType() reflect.Type { + return reflect.TypeOf((*secretArgs)(nil)).Elem() +} + +type SecretInput interface { + pulumi.Input + + ToSecretOutput() SecretOutput + ToSecretOutputWithContext(ctx context.Context) SecretOutput +} + +func (*Secret) ElementType() reflect.Type { + return reflect.TypeOf((**Secret)(nil)).Elem() +} + +func (i *Secret) ToSecretOutput() SecretOutput { + return i.ToSecretOutputWithContext(context.Background()) +} + +func (i *Secret) ToSecretOutputWithContext(ctx context.Context) SecretOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecretOutput) +} + +func (i *Secret) ToOutput(ctx context.Context) pulumix.Output[*Secret] { + return pulumix.Output[*Secret]{ + OutputState: i.ToSecretOutputWithContext(ctx).OutputState, + } +} + +// SecretArrayInput is an input type that accepts SecretArray and SecretArrayOutput values. +// You can construct a concrete instance of `SecretArrayInput` via: +// +// SecretArray{ SecretArgs{...} } +type SecretArrayInput interface { + pulumi.Input + + ToSecretArrayOutput() SecretArrayOutput + ToSecretArrayOutputWithContext(context.Context) SecretArrayOutput +} + +type SecretArray []SecretInput + +func (SecretArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Secret)(nil)).Elem() +} + +func (i SecretArray) ToSecretArrayOutput() SecretArrayOutput { + return i.ToSecretArrayOutputWithContext(context.Background()) +} + +func (i SecretArray) ToSecretArrayOutputWithContext(ctx context.Context) SecretArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecretArrayOutput) +} + +func (i SecretArray) ToOutput(ctx context.Context) pulumix.Output[[]*Secret] { + return pulumix.Output[[]*Secret]{ + OutputState: i.ToSecretArrayOutputWithContext(ctx).OutputState, + } +} + +// SecretMapInput is an input type that accepts SecretMap and SecretMapOutput values. +// You can construct a concrete instance of `SecretMapInput` via: +// +// SecretMap{ "key": SecretArgs{...} } +type SecretMapInput interface { + pulumi.Input + + ToSecretMapOutput() SecretMapOutput + ToSecretMapOutputWithContext(context.Context) SecretMapOutput +} + +type SecretMap map[string]SecretInput + +func (SecretMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Secret)(nil)).Elem() +} + +func (i SecretMap) ToSecretMapOutput() SecretMapOutput { + return i.ToSecretMapOutputWithContext(context.Background()) +} + +func (i SecretMap) ToSecretMapOutputWithContext(ctx context.Context) SecretMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(SecretMapOutput) +} + +func (i SecretMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Secret] { + return pulumix.Output[map[string]*Secret]{ + OutputState: i.ToSecretMapOutputWithContext(ctx).OutputState, + } +} + +type SecretOutput struct{ *pulumi.OutputState } + +func (SecretOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Secret)(nil)).Elem() +} + +func (o SecretOutput) ToSecretOutput() SecretOutput { + return o +} + +func (o SecretOutput) ToSecretOutputWithContext(ctx context.Context) SecretOutput { + return o +} + +func (o SecretOutput) ToOutput(ctx context.Context) pulumix.Output[*Secret] { + return pulumix.Output[*Secret]{ + OutputState: o.OutputState, + } +} + +// Base64-url-safe-encoded secret data +func (o SecretOutput) Data() pulumi.StringOutput { + return o.ApplyT(func(v *Secret) pulumi.StringOutput { return v.Data }).(pulumi.StringOutput) +} + +// User-defined key/value metadata +func (o SecretOutput) Labels() SecretLabelArrayOutput { + return o.ApplyT(func(v *Secret) SecretLabelArrayOutput { return v.Labels }).(SecretLabelArrayOutput) +} + +// User-defined name of the secret +func (o SecretOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Secret) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +type SecretArrayOutput struct{ *pulumi.OutputState } + +func (SecretArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Secret)(nil)).Elem() +} + +func (o SecretArrayOutput) ToSecretArrayOutput() SecretArrayOutput { + return o +} + +func (o SecretArrayOutput) ToSecretArrayOutputWithContext(ctx context.Context) SecretArrayOutput { + return o +} + +func (o SecretArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Secret] { + return pulumix.Output[[]*Secret]{ + OutputState: o.OutputState, + } +} + +func (o SecretArrayOutput) Index(i pulumi.IntInput) SecretOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Secret { + return vs[0].([]*Secret)[vs[1].(int)] + }).(SecretOutput) +} + +type SecretMapOutput struct{ *pulumi.OutputState } + +func (SecretMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Secret)(nil)).Elem() +} + +func (o SecretMapOutput) ToSecretMapOutput() SecretMapOutput { + return o +} + +func (o SecretMapOutput) ToSecretMapOutputWithContext(ctx context.Context) SecretMapOutput { + return o +} + +func (o SecretMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Secret] { + return pulumix.Output[map[string]*Secret]{ + OutputState: o.OutputState, + } +} + +func (o SecretMapOutput) MapIndex(k pulumi.StringInput) SecretOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Secret { + return vs[0].(map[string]*Secret)[vs[1].(string)] + }).(SecretOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*SecretInput)(nil)).Elem(), &Secret{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecretArrayInput)(nil)).Elem(), SecretArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*SecretMapInput)(nil)).Elem(), SecretMap{}) + pulumi.RegisterOutputType(SecretOutput{}) + pulumi.RegisterOutputType(SecretArrayOutput{}) + pulumi.RegisterOutputType(SecretMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/service.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/service.go new file mode 100644 index 000000000..2c38947fe --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/service.go @@ -0,0 +1,410 @@ +// 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 docker + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// ## Import +// +// ### Example Assuming you created a `service` as follows #!/bin/bash docker service create --name foo -p 8080:80 nginx prints th ID 4pcphbxkfn2rffhbhe6czytgi you provide the definition for the resource as follows terraform resource "docker_service" "foo" { +// +// name = "foo" +// +// task_spec { +// +// container_spec { +// +// image = "nginx" +// +// } +// +// } +// +// endpoint_spec { +// +// ports { +// +// target_port +// +// = "80" +// +// published_port = "8080" +// +// } +// +// } } then the import command is as follows #!/bin/bash +// +// ```sh +// +// $ pulumi import docker:index/service:Service foo 4pcphbxkfn2rffhbhe6czytgi +// +// ``` +type Service struct { + pulumi.CustomResourceState + + // Configuration for the authentication for pulling the images of the service + Auth ServiceAuthPtrOutput `pulumi:"auth"` + // A configuration to ensure that a service converges aka reaches the desired that of all task up and running + ConvergeConfig ServiceConvergeConfigPtrOutput `pulumi:"convergeConfig"` + // Properties that can be configured to access and load balance a service + EndpointSpec ServiceEndpointSpecOutput `pulumi:"endpointSpec"` + // User-defined key/value metadata + Labels ServiceLabelArrayOutput `pulumi:"labels"` + // Scheduling mode for the service + Mode ServiceModeOutput `pulumi:"mode"` + // Name of the service + Name pulumi.StringOutput `pulumi:"name"` + // Specification for the rollback strategy of the service + RollbackConfig ServiceRollbackConfigPtrOutput `pulumi:"rollbackConfig"` + // User modifiable task configuration + TaskSpec ServiceTaskSpecOutput `pulumi:"taskSpec"` + // Specification for the update strategy of the service + UpdateConfig ServiceUpdateConfigPtrOutput `pulumi:"updateConfig"` +} + +// NewService registers a new resource with the given unique name, arguments, and options. +func NewService(ctx *pulumi.Context, + name string, args *ServiceArgs, opts ...pulumi.ResourceOption) (*Service, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.TaskSpec == nil { + return nil, errors.New("invalid value for required argument 'TaskSpec'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Service + err := ctx.RegisterResource("docker:index/service:Service", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetService gets an existing Service 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 GetService(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServiceState, opts ...pulumi.ResourceOption) (*Service, error) { + var resource Service + err := ctx.ReadResource("docker:index/service:Service", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Service resources. +type serviceState struct { + // Configuration for the authentication for pulling the images of the service + Auth *ServiceAuth `pulumi:"auth"` + // A configuration to ensure that a service converges aka reaches the desired that of all task up and running + ConvergeConfig *ServiceConvergeConfig `pulumi:"convergeConfig"` + // Properties that can be configured to access and load balance a service + EndpointSpec *ServiceEndpointSpec `pulumi:"endpointSpec"` + // User-defined key/value metadata + Labels []ServiceLabel `pulumi:"labels"` + // Scheduling mode for the service + Mode *ServiceMode `pulumi:"mode"` + // Name of the service + Name *string `pulumi:"name"` + // Specification for the rollback strategy of the service + RollbackConfig *ServiceRollbackConfig `pulumi:"rollbackConfig"` + // User modifiable task configuration + TaskSpec *ServiceTaskSpec `pulumi:"taskSpec"` + // Specification for the update strategy of the service + UpdateConfig *ServiceUpdateConfig `pulumi:"updateConfig"` +} + +type ServiceState struct { + // Configuration for the authentication for pulling the images of the service + Auth ServiceAuthPtrInput + // A configuration to ensure that a service converges aka reaches the desired that of all task up and running + ConvergeConfig ServiceConvergeConfigPtrInput + // Properties that can be configured to access and load balance a service + EndpointSpec ServiceEndpointSpecPtrInput + // User-defined key/value metadata + Labels ServiceLabelArrayInput + // Scheduling mode for the service + Mode ServiceModePtrInput + // Name of the service + Name pulumi.StringPtrInput + // Specification for the rollback strategy of the service + RollbackConfig ServiceRollbackConfigPtrInput + // User modifiable task configuration + TaskSpec ServiceTaskSpecPtrInput + // Specification for the update strategy of the service + UpdateConfig ServiceUpdateConfigPtrInput +} + +func (ServiceState) ElementType() reflect.Type { + return reflect.TypeOf((*serviceState)(nil)).Elem() +} + +type serviceArgs struct { + // Configuration for the authentication for pulling the images of the service + Auth *ServiceAuth `pulumi:"auth"` + // A configuration to ensure that a service converges aka reaches the desired that of all task up and running + ConvergeConfig *ServiceConvergeConfig `pulumi:"convergeConfig"` + // Properties that can be configured to access and load balance a service + EndpointSpec *ServiceEndpointSpec `pulumi:"endpointSpec"` + // User-defined key/value metadata + Labels []ServiceLabel `pulumi:"labels"` + // Scheduling mode for the service + Mode *ServiceMode `pulumi:"mode"` + // Name of the service + Name *string `pulumi:"name"` + // Specification for the rollback strategy of the service + RollbackConfig *ServiceRollbackConfig `pulumi:"rollbackConfig"` + // User modifiable task configuration + TaskSpec ServiceTaskSpec `pulumi:"taskSpec"` + // Specification for the update strategy of the service + UpdateConfig *ServiceUpdateConfig `pulumi:"updateConfig"` +} + +// The set of arguments for constructing a Service resource. +type ServiceArgs struct { + // Configuration for the authentication for pulling the images of the service + Auth ServiceAuthPtrInput + // A configuration to ensure that a service converges aka reaches the desired that of all task up and running + ConvergeConfig ServiceConvergeConfigPtrInput + // Properties that can be configured to access and load balance a service + EndpointSpec ServiceEndpointSpecPtrInput + // User-defined key/value metadata + Labels ServiceLabelArrayInput + // Scheduling mode for the service + Mode ServiceModePtrInput + // Name of the service + Name pulumi.StringPtrInput + // Specification for the rollback strategy of the service + RollbackConfig ServiceRollbackConfigPtrInput + // User modifiable task configuration + TaskSpec ServiceTaskSpecInput + // Specification for the update strategy of the service + UpdateConfig ServiceUpdateConfigPtrInput +} + +func (ServiceArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serviceArgs)(nil)).Elem() +} + +type ServiceInput interface { + pulumi.Input + + ToServiceOutput() ServiceOutput + ToServiceOutputWithContext(ctx context.Context) ServiceOutput +} + +func (*Service) ElementType() reflect.Type { + return reflect.TypeOf((**Service)(nil)).Elem() +} + +func (i *Service) ToServiceOutput() ServiceOutput { + return i.ToServiceOutputWithContext(context.Background()) +} + +func (i *Service) ToServiceOutputWithContext(ctx context.Context) ServiceOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceOutput) +} + +func (i *Service) ToOutput(ctx context.Context) pulumix.Output[*Service] { + return pulumix.Output[*Service]{ + OutputState: i.ToServiceOutputWithContext(ctx).OutputState, + } +} + +// ServiceArrayInput is an input type that accepts ServiceArray and ServiceArrayOutput values. +// You can construct a concrete instance of `ServiceArrayInput` via: +// +// ServiceArray{ ServiceArgs{...} } +type ServiceArrayInput interface { + pulumi.Input + + ToServiceArrayOutput() ServiceArrayOutput + ToServiceArrayOutputWithContext(context.Context) ServiceArrayOutput +} + +type ServiceArray []ServiceInput + +func (ServiceArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Service)(nil)).Elem() +} + +func (i ServiceArray) ToServiceArrayOutput() ServiceArrayOutput { + return i.ToServiceArrayOutputWithContext(context.Background()) +} + +func (i ServiceArray) ToServiceArrayOutputWithContext(ctx context.Context) ServiceArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceArrayOutput) +} + +func (i ServiceArray) ToOutput(ctx context.Context) pulumix.Output[[]*Service] { + return pulumix.Output[[]*Service]{ + OutputState: i.ToServiceArrayOutputWithContext(ctx).OutputState, + } +} + +// ServiceMapInput is an input type that accepts ServiceMap and ServiceMapOutput values. +// You can construct a concrete instance of `ServiceMapInput` via: +// +// ServiceMap{ "key": ServiceArgs{...} } +type ServiceMapInput interface { + pulumi.Input + + ToServiceMapOutput() ServiceMapOutput + ToServiceMapOutputWithContext(context.Context) ServiceMapOutput +} + +type ServiceMap map[string]ServiceInput + +func (ServiceMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Service)(nil)).Elem() +} + +func (i ServiceMap) ToServiceMapOutput() ServiceMapOutput { + return i.ToServiceMapOutputWithContext(context.Background()) +} + +func (i ServiceMap) ToServiceMapOutputWithContext(ctx context.Context) ServiceMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceMapOutput) +} + +func (i ServiceMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Service] { + return pulumix.Output[map[string]*Service]{ + OutputState: i.ToServiceMapOutputWithContext(ctx).OutputState, + } +} + +type ServiceOutput struct{ *pulumi.OutputState } + +func (ServiceOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Service)(nil)).Elem() +} + +func (o ServiceOutput) ToServiceOutput() ServiceOutput { + return o +} + +func (o ServiceOutput) ToServiceOutputWithContext(ctx context.Context) ServiceOutput { + return o +} + +func (o ServiceOutput) ToOutput(ctx context.Context) pulumix.Output[*Service] { + return pulumix.Output[*Service]{ + OutputState: o.OutputState, + } +} + +// Configuration for the authentication for pulling the images of the service +func (o ServiceOutput) Auth() ServiceAuthPtrOutput { + return o.ApplyT(func(v *Service) ServiceAuthPtrOutput { return v.Auth }).(ServiceAuthPtrOutput) +} + +// A configuration to ensure that a service converges aka reaches the desired that of all task up and running +func (o ServiceOutput) ConvergeConfig() ServiceConvergeConfigPtrOutput { + return o.ApplyT(func(v *Service) ServiceConvergeConfigPtrOutput { return v.ConvergeConfig }).(ServiceConvergeConfigPtrOutput) +} + +// Properties that can be configured to access and load balance a service +func (o ServiceOutput) EndpointSpec() ServiceEndpointSpecOutput { + return o.ApplyT(func(v *Service) ServiceEndpointSpecOutput { return v.EndpointSpec }).(ServiceEndpointSpecOutput) +} + +// User-defined key/value metadata +func (o ServiceOutput) Labels() ServiceLabelArrayOutput { + return o.ApplyT(func(v *Service) ServiceLabelArrayOutput { return v.Labels }).(ServiceLabelArrayOutput) +} + +// Scheduling mode for the service +func (o ServiceOutput) Mode() ServiceModeOutput { + return o.ApplyT(func(v *Service) ServiceModeOutput { return v.Mode }).(ServiceModeOutput) +} + +// Name of the service +func (o ServiceOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Service) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +// Specification for the rollback strategy of the service +func (o ServiceOutput) RollbackConfig() ServiceRollbackConfigPtrOutput { + return o.ApplyT(func(v *Service) ServiceRollbackConfigPtrOutput { return v.RollbackConfig }).(ServiceRollbackConfigPtrOutput) +} + +// User modifiable task configuration +func (o ServiceOutput) TaskSpec() ServiceTaskSpecOutput { + return o.ApplyT(func(v *Service) ServiceTaskSpecOutput { return v.TaskSpec }).(ServiceTaskSpecOutput) +} + +// Specification for the update strategy of the service +func (o ServiceOutput) UpdateConfig() ServiceUpdateConfigPtrOutput { + return o.ApplyT(func(v *Service) ServiceUpdateConfigPtrOutput { return v.UpdateConfig }).(ServiceUpdateConfigPtrOutput) +} + +type ServiceArrayOutput struct{ *pulumi.OutputState } + +func (ServiceArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Service)(nil)).Elem() +} + +func (o ServiceArrayOutput) ToServiceArrayOutput() ServiceArrayOutput { + return o +} + +func (o ServiceArrayOutput) ToServiceArrayOutputWithContext(ctx context.Context) ServiceArrayOutput { + return o +} + +func (o ServiceArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Service] { + return pulumix.Output[[]*Service]{ + OutputState: o.OutputState, + } +} + +func (o ServiceArrayOutput) Index(i pulumi.IntInput) ServiceOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Service { + return vs[0].([]*Service)[vs[1].(int)] + }).(ServiceOutput) +} + +type ServiceMapOutput struct{ *pulumi.OutputState } + +func (ServiceMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Service)(nil)).Elem() +} + +func (o ServiceMapOutput) ToServiceMapOutput() ServiceMapOutput { + return o +} + +func (o ServiceMapOutput) ToServiceMapOutputWithContext(ctx context.Context) ServiceMapOutput { + return o +} + +func (o ServiceMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Service] { + return pulumix.Output[map[string]*Service]{ + OutputState: o.OutputState, + } +} + +func (o ServiceMapOutput) MapIndex(k pulumi.StringInput) ServiceOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Service { + return vs[0].(map[string]*Service)[vs[1].(string)] + }).(ServiceOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServiceInput)(nil)).Elem(), &Service{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceArrayInput)(nil)).Elem(), ServiceArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceMapInput)(nil)).Elem(), ServiceMap{}) + pulumi.RegisterOutputType(ServiceOutput{}) + pulumi.RegisterOutputType(ServiceArrayOutput{}) + pulumi.RegisterOutputType(ServiceMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/serviceConfig.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/serviceConfig.go new file mode 100644 index 000000000..16920323e --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/serviceConfig.go @@ -0,0 +1,285 @@ +// 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 docker + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// ## Import +// +// ### Example Assuming you created a `config` as follows #!/bin/bash printf '{"a":"b"}' | docker config create foo - prints the id +// +// 08c26c477474478d971139f750984775a7f019dbe8a2e7f09d66a187c009e66d you provide the definition for the resource as follows terraform resource "docker_config" "foo" { +// +// name = "foo" +// +// data = base64encode("{\"a\"\"b\"}") } then the import command is as follows #!/bin/bash +// +// ```sh +// +// $ pulumi import docker:index/serviceConfig:ServiceConfig foo 08c26c477474478d971139f750984775a7f019dbe8a2e7f09d66a187c009e66d +// +// ``` +type ServiceConfig struct { + pulumi.CustomResourceState + + // Base64-url-safe-encoded config data + Data pulumi.StringOutput `pulumi:"data"` + // User-defined name of the config + Name pulumi.StringOutput `pulumi:"name"` +} + +// NewServiceConfig registers a new resource with the given unique name, arguments, and options. +func NewServiceConfig(ctx *pulumi.Context, + name string, args *ServiceConfigArgs, opts ...pulumi.ResourceOption) (*ServiceConfig, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.Data == nil { + return nil, errors.New("invalid value for required argument 'Data'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource ServiceConfig + err := ctx.RegisterResource("docker:index/serviceConfig:ServiceConfig", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetServiceConfig gets an existing ServiceConfig 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 GetServiceConfig(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *ServiceConfigState, opts ...pulumi.ResourceOption) (*ServiceConfig, error) { + var resource ServiceConfig + err := ctx.ReadResource("docker:index/serviceConfig:ServiceConfig", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering ServiceConfig resources. +type serviceConfigState struct { + // Base64-url-safe-encoded config data + Data *string `pulumi:"data"` + // User-defined name of the config + Name *string `pulumi:"name"` +} + +type ServiceConfigState struct { + // Base64-url-safe-encoded config data + Data pulumi.StringPtrInput + // User-defined name of the config + Name pulumi.StringPtrInput +} + +func (ServiceConfigState) ElementType() reflect.Type { + return reflect.TypeOf((*serviceConfigState)(nil)).Elem() +} + +type serviceConfigArgs struct { + // Base64-url-safe-encoded config data + Data string `pulumi:"data"` + // User-defined name of the config + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a ServiceConfig resource. +type ServiceConfigArgs struct { + // Base64-url-safe-encoded config data + Data pulumi.StringInput + // User-defined name of the config + Name pulumi.StringPtrInput +} + +func (ServiceConfigArgs) ElementType() reflect.Type { + return reflect.TypeOf((*serviceConfigArgs)(nil)).Elem() +} + +type ServiceConfigInput interface { + pulumi.Input + + ToServiceConfigOutput() ServiceConfigOutput + ToServiceConfigOutputWithContext(ctx context.Context) ServiceConfigOutput +} + +func (*ServiceConfig) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceConfig)(nil)).Elem() +} + +func (i *ServiceConfig) ToServiceConfigOutput() ServiceConfigOutput { + return i.ToServiceConfigOutputWithContext(context.Background()) +} + +func (i *ServiceConfig) ToServiceConfigOutputWithContext(ctx context.Context) ServiceConfigOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceConfigOutput) +} + +func (i *ServiceConfig) ToOutput(ctx context.Context) pulumix.Output[*ServiceConfig] { + return pulumix.Output[*ServiceConfig]{ + OutputState: i.ToServiceConfigOutputWithContext(ctx).OutputState, + } +} + +// ServiceConfigArrayInput is an input type that accepts ServiceConfigArray and ServiceConfigArrayOutput values. +// You can construct a concrete instance of `ServiceConfigArrayInput` via: +// +// ServiceConfigArray{ ServiceConfigArgs{...} } +type ServiceConfigArrayInput interface { + pulumi.Input + + ToServiceConfigArrayOutput() ServiceConfigArrayOutput + ToServiceConfigArrayOutputWithContext(context.Context) ServiceConfigArrayOutput +} + +type ServiceConfigArray []ServiceConfigInput + +func (ServiceConfigArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceConfig)(nil)).Elem() +} + +func (i ServiceConfigArray) ToServiceConfigArrayOutput() ServiceConfigArrayOutput { + return i.ToServiceConfigArrayOutputWithContext(context.Background()) +} + +func (i ServiceConfigArray) ToServiceConfigArrayOutputWithContext(ctx context.Context) ServiceConfigArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceConfigArrayOutput) +} + +func (i ServiceConfigArray) ToOutput(ctx context.Context) pulumix.Output[[]*ServiceConfig] { + return pulumix.Output[[]*ServiceConfig]{ + OutputState: i.ToServiceConfigArrayOutputWithContext(ctx).OutputState, + } +} + +// ServiceConfigMapInput is an input type that accepts ServiceConfigMap and ServiceConfigMapOutput values. +// You can construct a concrete instance of `ServiceConfigMapInput` via: +// +// ServiceConfigMap{ "key": ServiceConfigArgs{...} } +type ServiceConfigMapInput interface { + pulumi.Input + + ToServiceConfigMapOutput() ServiceConfigMapOutput + ToServiceConfigMapOutputWithContext(context.Context) ServiceConfigMapOutput +} + +type ServiceConfigMap map[string]ServiceConfigInput + +func (ServiceConfigMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceConfig)(nil)).Elem() +} + +func (i ServiceConfigMap) ToServiceConfigMapOutput() ServiceConfigMapOutput { + return i.ToServiceConfigMapOutputWithContext(context.Background()) +} + +func (i ServiceConfigMap) ToServiceConfigMapOutputWithContext(ctx context.Context) ServiceConfigMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(ServiceConfigMapOutput) +} + +func (i ServiceConfigMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*ServiceConfig] { + return pulumix.Output[map[string]*ServiceConfig]{ + OutputState: i.ToServiceConfigMapOutputWithContext(ctx).OutputState, + } +} + +type ServiceConfigOutput struct{ *pulumi.OutputState } + +func (ServiceConfigOutput) ElementType() reflect.Type { + return reflect.TypeOf((**ServiceConfig)(nil)).Elem() +} + +func (o ServiceConfigOutput) ToServiceConfigOutput() ServiceConfigOutput { + return o +} + +func (o ServiceConfigOutput) ToServiceConfigOutputWithContext(ctx context.Context) ServiceConfigOutput { + return o +} + +func (o ServiceConfigOutput) ToOutput(ctx context.Context) pulumix.Output[*ServiceConfig] { + return pulumix.Output[*ServiceConfig]{ + OutputState: o.OutputState, + } +} + +// Base64-url-safe-encoded config data +func (o ServiceConfigOutput) Data() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceConfig) pulumi.StringOutput { return v.Data }).(pulumi.StringOutput) +} + +// User-defined name of the config +func (o ServiceConfigOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *ServiceConfig) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +type ServiceConfigArrayOutput struct{ *pulumi.OutputState } + +func (ServiceConfigArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*ServiceConfig)(nil)).Elem() +} + +func (o ServiceConfigArrayOutput) ToServiceConfigArrayOutput() ServiceConfigArrayOutput { + return o +} + +func (o ServiceConfigArrayOutput) ToServiceConfigArrayOutputWithContext(ctx context.Context) ServiceConfigArrayOutput { + return o +} + +func (o ServiceConfigArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*ServiceConfig] { + return pulumix.Output[[]*ServiceConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceConfigArrayOutput) Index(i pulumi.IntInput) ServiceConfigOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ServiceConfig { + return vs[0].([]*ServiceConfig)[vs[1].(int)] + }).(ServiceConfigOutput) +} + +type ServiceConfigMapOutput struct{ *pulumi.OutputState } + +func (ServiceConfigMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*ServiceConfig)(nil)).Elem() +} + +func (o ServiceConfigMapOutput) ToServiceConfigMapOutput() ServiceConfigMapOutput { + return o +} + +func (o ServiceConfigMapOutput) ToServiceConfigMapOutputWithContext(ctx context.Context) ServiceConfigMapOutput { + return o +} + +func (o ServiceConfigMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*ServiceConfig] { + return pulumix.Output[map[string]*ServiceConfig]{ + OutputState: o.OutputState, + } +} + +func (o ServiceConfigMapOutput) MapIndex(k pulumi.StringInput) ServiceConfigOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ServiceConfig { + return vs[0].(map[string]*ServiceConfig)[vs[1].(string)] + }).(ServiceConfigOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*ServiceConfigInput)(nil)).Elem(), &ServiceConfig{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceConfigArrayInput)(nil)).Elem(), ServiceConfigArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*ServiceConfigMapInput)(nil)).Elem(), ServiceConfigMap{}) + pulumi.RegisterOutputType(ServiceConfigOutput{}) + pulumi.RegisterOutputType(ServiceConfigArrayOutput{}) + pulumi.RegisterOutputType(ServiceConfigMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/tag.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/tag.go new file mode 100644 index 000000000..a8db11a2a --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/tag.go @@ -0,0 +1,285 @@ +// 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 docker + +import ( + "context" + "reflect" + + "errors" + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// Creates a docker tag. It has the exact same functionality as the `docker tag` command. Deleting the resource will neither delete the source nor target images. The source image must exist on the machine running the docker daemon. +type Tag struct { + pulumi.CustomResourceState + + // Name of the source image. + SourceImage pulumi.StringOutput `pulumi:"sourceImage"` + // ImageID of the source image in the format of `sha256:<>` + SourceImageId pulumi.StringOutput `pulumi:"sourceImageId"` + // Name of the target image. + TargetImage pulumi.StringOutput `pulumi:"targetImage"` +} + +// NewTag registers a new resource with the given unique name, arguments, and options. +func NewTag(ctx *pulumi.Context, + name string, args *TagArgs, opts ...pulumi.ResourceOption) (*Tag, error) { + if args == nil { + return nil, errors.New("missing one or more required arguments") + } + + if args.SourceImage == nil { + return nil, errors.New("invalid value for required argument 'SourceImage'") + } + if args.TargetImage == nil { + return nil, errors.New("invalid value for required argument 'TargetImage'") + } + opts = internal.PkgResourceDefaultOpts(opts) + var resource Tag + err := ctx.RegisterResource("docker:index/tag:Tag", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetTag gets an existing Tag 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 GetTag(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *TagState, opts ...pulumi.ResourceOption) (*Tag, error) { + var resource Tag + err := ctx.ReadResource("docker:index/tag:Tag", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Tag resources. +type tagState struct { + // Name of the source image. + SourceImage *string `pulumi:"sourceImage"` + // ImageID of the source image in the format of `sha256:<>` + SourceImageId *string `pulumi:"sourceImageId"` + // Name of the target image. + TargetImage *string `pulumi:"targetImage"` +} + +type TagState struct { + // Name of the source image. + SourceImage pulumi.StringPtrInput + // ImageID of the source image in the format of `sha256:<>` + SourceImageId pulumi.StringPtrInput + // Name of the target image. + TargetImage pulumi.StringPtrInput +} + +func (TagState) ElementType() reflect.Type { + return reflect.TypeOf((*tagState)(nil)).Elem() +} + +type tagArgs struct { + // Name of the source image. + SourceImage string `pulumi:"sourceImage"` + // Name of the target image. + TargetImage string `pulumi:"targetImage"` +} + +// The set of arguments for constructing a Tag resource. +type TagArgs struct { + // Name of the source image. + SourceImage pulumi.StringInput + // Name of the target image. + TargetImage pulumi.StringInput +} + +func (TagArgs) ElementType() reflect.Type { + return reflect.TypeOf((*tagArgs)(nil)).Elem() +} + +type TagInput interface { + pulumi.Input + + ToTagOutput() TagOutput + ToTagOutputWithContext(ctx context.Context) TagOutput +} + +func (*Tag) ElementType() reflect.Type { + return reflect.TypeOf((**Tag)(nil)).Elem() +} + +func (i *Tag) ToTagOutput() TagOutput { + return i.ToTagOutputWithContext(context.Background()) +} + +func (i *Tag) ToTagOutputWithContext(ctx context.Context) TagOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagOutput) +} + +func (i *Tag) ToOutput(ctx context.Context) pulumix.Output[*Tag] { + return pulumix.Output[*Tag]{ + OutputState: i.ToTagOutputWithContext(ctx).OutputState, + } +} + +// TagArrayInput is an input type that accepts TagArray and TagArrayOutput values. +// You can construct a concrete instance of `TagArrayInput` via: +// +// TagArray{ TagArgs{...} } +type TagArrayInput interface { + pulumi.Input + + ToTagArrayOutput() TagArrayOutput + ToTagArrayOutputWithContext(context.Context) TagArrayOutput +} + +type TagArray []TagInput + +func (TagArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Tag)(nil)).Elem() +} + +func (i TagArray) ToTagArrayOutput() TagArrayOutput { + return i.ToTagArrayOutputWithContext(context.Background()) +} + +func (i TagArray) ToTagArrayOutputWithContext(ctx context.Context) TagArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagArrayOutput) +} + +func (i TagArray) ToOutput(ctx context.Context) pulumix.Output[[]*Tag] { + return pulumix.Output[[]*Tag]{ + OutputState: i.ToTagArrayOutputWithContext(ctx).OutputState, + } +} + +// TagMapInput is an input type that accepts TagMap and TagMapOutput values. +// You can construct a concrete instance of `TagMapInput` via: +// +// TagMap{ "key": TagArgs{...} } +type TagMapInput interface { + pulumi.Input + + ToTagMapOutput() TagMapOutput + ToTagMapOutputWithContext(context.Context) TagMapOutput +} + +type TagMap map[string]TagInput + +func (TagMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Tag)(nil)).Elem() +} + +func (i TagMap) ToTagMapOutput() TagMapOutput { + return i.ToTagMapOutputWithContext(context.Background()) +} + +func (i TagMap) ToTagMapOutputWithContext(ctx context.Context) TagMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(TagMapOutput) +} + +func (i TagMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Tag] { + return pulumix.Output[map[string]*Tag]{ + OutputState: i.ToTagMapOutputWithContext(ctx).OutputState, + } +} + +type TagOutput struct{ *pulumi.OutputState } + +func (TagOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Tag)(nil)).Elem() +} + +func (o TagOutput) ToTagOutput() TagOutput { + return o +} + +func (o TagOutput) ToTagOutputWithContext(ctx context.Context) TagOutput { + return o +} + +func (o TagOutput) ToOutput(ctx context.Context) pulumix.Output[*Tag] { + return pulumix.Output[*Tag]{ + OutputState: o.OutputState, + } +} + +// Name of the source image. +func (o TagOutput) SourceImage() pulumi.StringOutput { + return o.ApplyT(func(v *Tag) pulumi.StringOutput { return v.SourceImage }).(pulumi.StringOutput) +} + +// ImageID of the source image in the format of `sha256:<>` +func (o TagOutput) SourceImageId() pulumi.StringOutput { + return o.ApplyT(func(v *Tag) pulumi.StringOutput { return v.SourceImageId }).(pulumi.StringOutput) +} + +// Name of the target image. +func (o TagOutput) TargetImage() pulumi.StringOutput { + return o.ApplyT(func(v *Tag) pulumi.StringOutput { return v.TargetImage }).(pulumi.StringOutput) +} + +type TagArrayOutput struct{ *pulumi.OutputState } + +func (TagArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Tag)(nil)).Elem() +} + +func (o TagArrayOutput) ToTagArrayOutput() TagArrayOutput { + return o +} + +func (o TagArrayOutput) ToTagArrayOutputWithContext(ctx context.Context) TagArrayOutput { + return o +} + +func (o TagArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Tag] { + return pulumix.Output[[]*Tag]{ + OutputState: o.OutputState, + } +} + +func (o TagArrayOutput) Index(i pulumi.IntInput) TagOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Tag { + return vs[0].([]*Tag)[vs[1].(int)] + }).(TagOutput) +} + +type TagMapOutput struct{ *pulumi.OutputState } + +func (TagMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Tag)(nil)).Elem() +} + +func (o TagMapOutput) ToTagMapOutput() TagMapOutput { + return o +} + +func (o TagMapOutput) ToTagMapOutputWithContext(ctx context.Context) TagMapOutput { + return o +} + +func (o TagMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Tag] { + return pulumix.Output[map[string]*Tag]{ + OutputState: o.OutputState, + } +} + +func (o TagMapOutput) MapIndex(k pulumi.StringInput) TagOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Tag { + return vs[0].(map[string]*Tag)[vs[1].(string)] + }).(TagOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*TagInput)(nil)).Elem(), &Tag{}) + pulumi.RegisterInputType(reflect.TypeOf((*TagArrayInput)(nil)).Elem(), TagArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*TagMapInput)(nil)).Elem(), TagMap{}) + pulumi.RegisterOutputType(TagOutput{}) + pulumi.RegisterOutputType(TagArrayOutput{}) + pulumi.RegisterOutputType(TagMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/volume.go b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/volume.go new file mode 100644 index 000000000..6e5cbc720 --- /dev/null +++ b/vendor/github.com/pulumi/pulumi-docker/sdk/v4/go/docker/volume.go @@ -0,0 +1,345 @@ +// 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 docker + +import ( + "context" + "reflect" + + "github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal" + "github.com/pulumi/pulumi/sdk/v3/go/pulumi" + "github.com/pulumi/pulumi/sdk/v3/go/pulumix" +) + +// +// Creates and destroys a volume in Docker. This can be used alongside Container to prepare volumes that can be shared across containers. +// +// ## Example Usage +// +// ```go +// package main +// +// import ( +// +// "github.com/pulumi/pulumi-docker/sdk/v4/go/docker" +// "github.com/pulumi/pulumi/sdk/v3/go/pulumi" +// +// ) +// +// func main() { +// pulumi.Run(func(ctx *pulumi.Context) error { +// _, err := docker.NewVolume(ctx, "sharedVolume", nil) +// if err != nil { +// return err +// } +// return nil +// }) +// } +// +// ``` +// +// ## Import +// +// ### Example Assuming you created a `volume` as follows #!/bin/bash docker volume create prints the long ID 524b0457aa2a87dd2b75c74c3e4e53f406974249e63ab3ed9bf21e5644f9dc7d you provide the definition for the resource as follows terraform resource "docker_volume" "foo" { +// +// name = "524b0457aa2a87dd2b75c74c3e4e53f406974249e63ab3ed9bf21e5644f9dc7d" } then the import command is as follows #!/bin/bash +// +// ```sh +// +// $ pulumi import docker:index/volume:Volume foo 524b0457aa2a87dd2b75c74c3e4e53f406974249e63ab3ed9bf21e5644f9dc7d +// +// ``` +type Volume struct { + pulumi.CustomResourceState + + // Driver type for the volume. Defaults to `local`. + Driver pulumi.StringOutput `pulumi:"driver"` + // Options specific to the driver. + DriverOpts pulumi.MapOutput `pulumi:"driverOpts"` + // User-defined key/value metadata + Labels VolumeLabelArrayOutput `pulumi:"labels"` + // The mountpoint of the volume. + Mountpoint pulumi.StringOutput `pulumi:"mountpoint"` + // The name of the Docker volume (will be generated if not provided). + Name pulumi.StringOutput `pulumi:"name"` +} + +// NewVolume registers a new resource with the given unique name, arguments, and options. +func NewVolume(ctx *pulumi.Context, + name string, args *VolumeArgs, opts ...pulumi.ResourceOption) (*Volume, error) { + if args == nil { + args = &VolumeArgs{} + } + + opts = internal.PkgResourceDefaultOpts(opts) + var resource Volume + err := ctx.RegisterResource("docker:index/volume:Volume", name, args, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// GetVolume gets an existing Volume 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 GetVolume(ctx *pulumi.Context, + name string, id pulumi.IDInput, state *VolumeState, opts ...pulumi.ResourceOption) (*Volume, error) { + var resource Volume + err := ctx.ReadResource("docker:index/volume:Volume", name, id, state, &resource, opts...) + if err != nil { + return nil, err + } + return &resource, nil +} + +// Input properties used for looking up and filtering Volume resources. +type volumeState struct { + // Driver type for the volume. Defaults to `local`. + Driver *string `pulumi:"driver"` + // Options specific to the driver. + DriverOpts map[string]interface{} `pulumi:"driverOpts"` + // User-defined key/value metadata + Labels []VolumeLabel `pulumi:"labels"` + // The mountpoint of the volume. + Mountpoint *string `pulumi:"mountpoint"` + // The name of the Docker volume (will be generated if not provided). + Name *string `pulumi:"name"` +} + +type VolumeState struct { + // Driver type for the volume. Defaults to `local`. + Driver pulumi.StringPtrInput + // Options specific to the driver. + DriverOpts pulumi.MapInput + // User-defined key/value metadata + Labels VolumeLabelArrayInput + // The mountpoint of the volume. + Mountpoint pulumi.StringPtrInput + // The name of the Docker volume (will be generated if not provided). + Name pulumi.StringPtrInput +} + +func (VolumeState) ElementType() reflect.Type { + return reflect.TypeOf((*volumeState)(nil)).Elem() +} + +type volumeArgs struct { + // Driver type for the volume. Defaults to `local`. + Driver *string `pulumi:"driver"` + // Options specific to the driver. + DriverOpts map[string]interface{} `pulumi:"driverOpts"` + // User-defined key/value metadata + Labels []VolumeLabel `pulumi:"labels"` + // The name of the Docker volume (will be generated if not provided). + Name *string `pulumi:"name"` +} + +// The set of arguments for constructing a Volume resource. +type VolumeArgs struct { + // Driver type for the volume. Defaults to `local`. + Driver pulumi.StringPtrInput + // Options specific to the driver. + DriverOpts pulumi.MapInput + // User-defined key/value metadata + Labels VolumeLabelArrayInput + // The name of the Docker volume (will be generated if not provided). + Name pulumi.StringPtrInput +} + +func (VolumeArgs) ElementType() reflect.Type { + return reflect.TypeOf((*volumeArgs)(nil)).Elem() +} + +type VolumeInput interface { + pulumi.Input + + ToVolumeOutput() VolumeOutput + ToVolumeOutputWithContext(ctx context.Context) VolumeOutput +} + +func (*Volume) ElementType() reflect.Type { + return reflect.TypeOf((**Volume)(nil)).Elem() +} + +func (i *Volume) ToVolumeOutput() VolumeOutput { + return i.ToVolumeOutputWithContext(context.Background()) +} + +func (i *Volume) ToVolumeOutputWithContext(ctx context.Context) VolumeOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeOutput) +} + +func (i *Volume) ToOutput(ctx context.Context) pulumix.Output[*Volume] { + return pulumix.Output[*Volume]{ + OutputState: i.ToVolumeOutputWithContext(ctx).OutputState, + } +} + +// VolumeArrayInput is an input type that accepts VolumeArray and VolumeArrayOutput values. +// You can construct a concrete instance of `VolumeArrayInput` via: +// +// VolumeArray{ VolumeArgs{...} } +type VolumeArrayInput interface { + pulumi.Input + + ToVolumeArrayOutput() VolumeArrayOutput + ToVolumeArrayOutputWithContext(context.Context) VolumeArrayOutput +} + +type VolumeArray []VolumeInput + +func (VolumeArray) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Volume)(nil)).Elem() +} + +func (i VolumeArray) ToVolumeArrayOutput() VolumeArrayOutput { + return i.ToVolumeArrayOutputWithContext(context.Background()) +} + +func (i VolumeArray) ToVolumeArrayOutputWithContext(ctx context.Context) VolumeArrayOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeArrayOutput) +} + +func (i VolumeArray) ToOutput(ctx context.Context) pulumix.Output[[]*Volume] { + return pulumix.Output[[]*Volume]{ + OutputState: i.ToVolumeArrayOutputWithContext(ctx).OutputState, + } +} + +// VolumeMapInput is an input type that accepts VolumeMap and VolumeMapOutput values. +// You can construct a concrete instance of `VolumeMapInput` via: +// +// VolumeMap{ "key": VolumeArgs{...} } +type VolumeMapInput interface { + pulumi.Input + + ToVolumeMapOutput() VolumeMapOutput + ToVolumeMapOutputWithContext(context.Context) VolumeMapOutput +} + +type VolumeMap map[string]VolumeInput + +func (VolumeMap) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Volume)(nil)).Elem() +} + +func (i VolumeMap) ToVolumeMapOutput() VolumeMapOutput { + return i.ToVolumeMapOutputWithContext(context.Background()) +} + +func (i VolumeMap) ToVolumeMapOutputWithContext(ctx context.Context) VolumeMapOutput { + return pulumi.ToOutputWithContext(ctx, i).(VolumeMapOutput) +} + +func (i VolumeMap) ToOutput(ctx context.Context) pulumix.Output[map[string]*Volume] { + return pulumix.Output[map[string]*Volume]{ + OutputState: i.ToVolumeMapOutputWithContext(ctx).OutputState, + } +} + +type VolumeOutput struct{ *pulumi.OutputState } + +func (VolumeOutput) ElementType() reflect.Type { + return reflect.TypeOf((**Volume)(nil)).Elem() +} + +func (o VolumeOutput) ToVolumeOutput() VolumeOutput { + return o +} + +func (o VolumeOutput) ToVolumeOutputWithContext(ctx context.Context) VolumeOutput { + return o +} + +func (o VolumeOutput) ToOutput(ctx context.Context) pulumix.Output[*Volume] { + return pulumix.Output[*Volume]{ + OutputState: o.OutputState, + } +} + +// Driver type for the volume. Defaults to `local`. +func (o VolumeOutput) Driver() pulumi.StringOutput { + return o.ApplyT(func(v *Volume) pulumi.StringOutput { return v.Driver }).(pulumi.StringOutput) +} + +// Options specific to the driver. +func (o VolumeOutput) DriverOpts() pulumi.MapOutput { + return o.ApplyT(func(v *Volume) pulumi.MapOutput { return v.DriverOpts }).(pulumi.MapOutput) +} + +// User-defined key/value metadata +func (o VolumeOutput) Labels() VolumeLabelArrayOutput { + return o.ApplyT(func(v *Volume) VolumeLabelArrayOutput { return v.Labels }).(VolumeLabelArrayOutput) +} + +// The mountpoint of the volume. +func (o VolumeOutput) Mountpoint() pulumi.StringOutput { + return o.ApplyT(func(v *Volume) pulumi.StringOutput { return v.Mountpoint }).(pulumi.StringOutput) +} + +// The name of the Docker volume (will be generated if not provided). +func (o VolumeOutput) Name() pulumi.StringOutput { + return o.ApplyT(func(v *Volume) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) +} + +type VolumeArrayOutput struct{ *pulumi.OutputState } + +func (VolumeArrayOutput) ElementType() reflect.Type { + return reflect.TypeOf((*[]*Volume)(nil)).Elem() +} + +func (o VolumeArrayOutput) ToVolumeArrayOutput() VolumeArrayOutput { + return o +} + +func (o VolumeArrayOutput) ToVolumeArrayOutputWithContext(ctx context.Context) VolumeArrayOutput { + return o +} + +func (o VolumeArrayOutput) ToOutput(ctx context.Context) pulumix.Output[[]*Volume] { + return pulumix.Output[[]*Volume]{ + OutputState: o.OutputState, + } +} + +func (o VolumeArrayOutput) Index(i pulumi.IntInput) VolumeOutput { + return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Volume { + return vs[0].([]*Volume)[vs[1].(int)] + }).(VolumeOutput) +} + +type VolumeMapOutput struct{ *pulumi.OutputState } + +func (VolumeMapOutput) ElementType() reflect.Type { + return reflect.TypeOf((*map[string]*Volume)(nil)).Elem() +} + +func (o VolumeMapOutput) ToVolumeMapOutput() VolumeMapOutput { + return o +} + +func (o VolumeMapOutput) ToVolumeMapOutputWithContext(ctx context.Context) VolumeMapOutput { + return o +} + +func (o VolumeMapOutput) ToOutput(ctx context.Context) pulumix.Output[map[string]*Volume] { + return pulumix.Output[map[string]*Volume]{ + OutputState: o.OutputState, + } +} + +func (o VolumeMapOutput) MapIndex(k pulumi.StringInput) VolumeOutput { + return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Volume { + return vs[0].(map[string]*Volume)[vs[1].(string)] + }).(VolumeOutput) +} + +func init() { + pulumi.RegisterInputType(reflect.TypeOf((*VolumeInput)(nil)).Elem(), &Volume{}) + pulumi.RegisterInputType(reflect.TypeOf((*VolumeArrayInput)(nil)).Elem(), VolumeArray{}) + pulumi.RegisterInputType(reflect.TypeOf((*VolumeMapInput)(nil)).Elem(), VolumeMap{}) + pulumi.RegisterOutputType(VolumeOutput{}) + pulumi.RegisterOutputType(VolumeArrayOutput{}) + pulumi.RegisterOutputType(VolumeMapOutput{}) +} diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/.version b/vendor/github.com/pulumi/pulumi/sdk/v3/.version index 92ab603e8..3fdcb7df8 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/.version +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/.version @@ -1 +1 @@ -3.142.0 +3.143.0 diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/cmd.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/cmd.go index e5fe4a4ee..b28717894 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/cmd.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/cmd.go @@ -114,12 +114,12 @@ func NewPulumiCommand(opts *PulumiCommandOptions) (PulumiCommand, error) { return pulumiCommand{}, fmt.Errorf("failed to run `pulumi version`: %w", err) } currentVersion := strings.TrimSpace(string(out)) - min := minimumVersion - if opts.Version.GT(min) { - min = opts.Version + minimum := minimumVersion + if opts.Version.GT(minimum) { + minimum = opts.Version } skipVersionCheck := opts.SkipVersionCheck || env.SkipVersionCheck.Value() - version, err := parseAndValidatePulumiVersion(min, currentVersion, skipVersionCheck) + version, err := parseAndValidatePulumiVersion(minimum, currentVersion, skipVersionCheck) if err != nil { return pulumiCommand{}, err } diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/workspace.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/workspace.go index 23ed9fcbe..a4c3d4ee4 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/workspace.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/auto/workspace.go @@ -183,11 +183,20 @@ type StackSummary struct { URL string `json:"url,omitempty"` } +// Information about the token that was used to authenticate the current user. One (or none) of Team or Organization +// will be set, but not both. +type TokenInformation struct { + Name string `json:"name"` // The name of the token. + Organization string `json:"organization,omitempty"` // If this was an organization token, the organization it was for. + Team string `json:"team,omitempty"` // If this was a team token, the team it was for. +} + // WhoAmIResult contains detailed information about the currently logged-in Pulumi identity. type WhoAmIResult struct { - User string `json:"user"` - Organizations []string `json:"organizations,omitempty"` - URL string `json:"url"` + User string `json:"user"` + Organizations []string `json:"organizations,omitempty"` + URL string `json:"url"` + TokenInformation *TokenInformation `json:"tokenInformation,omitempty"` } type ChangeSecretsProviderOptions struct { diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/analyzer_plugin.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/analyzer_plugin.go index 880fef4e6..7be0665bc 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/analyzer_plugin.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/analyzer_plugin.go @@ -69,8 +69,9 @@ func NewAnalyzer(host Host, ctx *Context, name tokens.QName) (Analyzer, error) { dialOpts := rpcutil.OpenTracingInterceptorDialOptions() - plug, err := newPlugin(ctx, ctx.Pwd, path, fmt.Sprintf("%v (analyzer)", name), - apitype.AnalyzerPlugin, []string{host.ServerAddr(), ctx.Pwd}, nil /*env*/, dialOpts) + plug, _, err := newPlugin(ctx, ctx.Pwd, path, fmt.Sprintf("%v (analyzer)", name), + apitype.AnalyzerPlugin, []string{host.ServerAddr(), ctx.Pwd}, nil, /*env*/ + testConnection, dialOpts) if err != nil { return nil, err } @@ -135,8 +136,9 @@ func NewPolicyAnalyzer( } } - plug, err := newPlugin(ctx, pwd, pluginPath, fmt.Sprintf("%v (analyzer)", name), - apitype.AnalyzerPlugin, args, env, analyzerPluginDialOptions(ctx, fmt.Sprintf("%v", name))) + plug, _, err := newPlugin(ctx, pwd, pluginPath, fmt.Sprintf("%v (analyzer)", name), + apitype.AnalyzerPlugin, args, env, testConnection, + analyzerPluginDialOptions(ctx, fmt.Sprintf("%v", name))) if err != nil { // The original error might have been wrapped before being returned from newPlugin. So we look for // the root cause of the error. This won't work if we switch to Go 1.13's new approach to wrapping. diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/converter_plugin.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/converter_plugin.go index 92f018f23..1b1afb514 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/converter_plugin.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/converter_plugin.go @@ -52,8 +52,9 @@ func NewConverter(ctx *Context, name string, version *semver.Version) (Converter contract.Assertf(path != "", "unexpected empty path for plugin %s", name) - plug, err := newPlugin(ctx, ctx.Pwd, path, prefix, - apitype.ConverterPlugin, []string{}, os.Environ(), converterPluginDialOptions(ctx, name, "")) + plug, _, err := newPlugin(ctx, ctx.Pwd, path, prefix, + apitype.ConverterPlugin, []string{}, os.Environ(), + testConnection, converterPluginDialOptions(ctx, name, "")) if err != nil { return nil, err } diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/host.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/host.go index 1e236c2c7..45c0785e8 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/host.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/host.go @@ -438,7 +438,9 @@ func (host *defaultHost) Provider(descriptor workspace.PackageDescriptor) (Provi if plugin == nil || err != nil { return nil, err } - return plugin.(Provider), nil + + provider := plugin.(Provider) + return provider, nil } func (host *defaultHost) LanguageRuntime(runtime string, info ProgramInfo, @@ -609,61 +611,3 @@ const ( // ResourcePlugins is used to only load resource provider plugins. ResourcePlugins ) - -// AllPlugins uses flags to ensure that all plugin kinds are loaded. -var AllPlugins = AnalyzerPlugins | LanguagePlugins | ResourcePlugins - -// GetRequiredPlugins lists a full set of plugins that will be required by the given program. -func GetRequiredPlugins( - host Host, - runtime string, - project string, - info ProgramInfo, - kinds Flags) ( - []workspace.PluginSpec, error, -) { - var plugins []workspace.PluginSpec - - if kinds&LanguagePlugins != 0 { - // First make sure the language plugin is present. We need this to load the required resource plugins. - // TODO: we need to think about how best to version this. For now, it always picks the latest. - lang, err := host.LanguageRuntime(runtime, info) - if err != nil { - return nil, fmt.Errorf("failed to load language plugin %s: %w", runtime, err) - } - // Query the language runtime plugin for its version. - langInfo, err := lang.GetPluginInfo() - if err != nil { - // Don't error if this fails, just warn and return the version as unknown. - host.Log(diag.Warning, "", fmt.Sprintf("failed to get plugin info for language plugin %s: %v", runtime, err), 0) - plugins = append(plugins, workspace.PluginSpec{ - Name: runtime, - Kind: apitype.LanguagePlugin, - }) - } else { - plugins = append(plugins, workspace.PluginSpec{ - Name: langInfo.Name, - Kind: langInfo.Kind, - Version: langInfo.Version, - }) - } - - if kinds&ResourcePlugins != 0 { - // Use the language plugin to compute this project's set of plugin dependencies. - // TODO: we want to support loading precisely what the project needs, rather than doing a static scan of resolved - // packages. Doing this requires that we change our RPC interface and figure out how to configure plugins - // later than we do (right now, we do it up front, but at that point we don't know the version). - deps, err := lang.GetRequiredPlugins(info) - if err != nil { - return nil, fmt.Errorf("failed to discover plugin requirements: %w", err) - } - plugins = append(plugins, deps...) - } - } else { - // If we can't load the language plugin, we can't discover the resource plugins. - contract.Assertf(kinds&ResourcePlugins != 0, - "cannot load resource plugins without also loading the language plugin") - } - - return plugins, nil -} diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime.go index 24ff8e869..cbd2607c7 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime.go @@ -116,8 +116,8 @@ func (options InstallDependenciesRequest) String() string { type LanguageRuntime interface { // Closer closes any underlying OS resources associated with this plugin (like processes, RPC channels, etc). io.Closer - // GetRequiredPlugins computes the complete set of anticipated plugins required by a program. - GetRequiredPlugins(info ProgramInfo) ([]workspace.PluginSpec, error) + // GetRequiredPackages computes the complete set of anticipated packages required by a program. + GetRequiredPackages(info ProgramInfo) ([]workspace.PackageDescriptor, error) // Run executes a program in the language runtime for planning or deployment purposes. If // info.DryRun is true, the code must not assume that side-effects or final values resulting // from resource deployments are actually available. If it is false, on the other hand, a real diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime_plugin.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime_plugin.go index 2cd0d1d42..7b7979e5f 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime_plugin.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/langruntime_plugin.go @@ -16,10 +16,12 @@ package plugin import ( "context" + "errors" "fmt" "io" "os" "path/filepath" + "strconv" "strings" "github.com/blang/semver" @@ -55,34 +57,131 @@ type langhost struct { // plugin could not be found, or an error occurs while creating the child process, an error is returned. func NewLanguageRuntime(host Host, ctx *Context, runtime, workingDirectory string, info ProgramInfo, ) (LanguageRuntime, error) { - path, err := workspace.GetPluginPath(ctx.Diag, - apitype.LanguagePlugin, strings.ReplaceAll(runtime, tokens.QNameDelimiter, "_"), nil, host.GetProjectPlugins()) + attachPort, err := GetLanguageAttachPort(runtime) if err != nil { return nil, err } - contract.Assertf(path != "", "unexpected empty path for language plugin %s", runtime) + var plug *plugin + var client pulumirpc.LanguageRuntimeClient + if attachPort != nil { + port := *attachPort - args, err := buildArgsForNewPlugin(host, info.RootDirectory(), info.Options()) - if err != nil { - return nil, err - } + handshake := func( + ctx context.Context, bin string, prefix string, conn *grpc.ClientConn, + ) (*pulumirpc.LanguageHandshakeResponse, error) { + req := &pulumirpc.LanguageHandshakeRequest{ + EngineAddress: host.ServerAddr(), + // If we're attaching then we don't know the root or program directory. + RootDirectory: nil, + ProgramDirectory: nil, + } + return languageHandshake(ctx, bin, prefix, conn, req) + } - plug, err := newPlugin(ctx, workingDirectory, path, runtime, - apitype.LanguagePlugin, args, nil /*env*/, langRuntimePluginDialOptions(ctx, runtime)) - if err != nil { - return nil, err + conn, handshakeResponse, err := dialPlugin( + port, + "pulumi-language-"+runtime, + runtime+" (Language Plugin)", + handshake, + langRuntimePluginDialOptions(ctx, runtime), + ) + if err != nil { + return nil, err + } + if handshakeResponse == nil { + return nil, errors.New("language did not return handshake response, attaching via " + + "an attach port is not yet supported for this language", + ) + } + + plug = &plugin{ + Conn: conn, + // Nothing to kill. + Kill: func() error { + return nil + }, + } + + client = pulumirpc.NewLanguageRuntimeClient(plug.Conn) + } else { + path, err := workspace.GetPluginPath( + ctx.Diag, + apitype.LanguagePlugin, + strings.ReplaceAll(runtime, tokens.QNameDelimiter, "_"), + nil, + host.GetProjectPlugins(), + ) + if err != nil { + return nil, err + } + + contract.Assertf(path != "", "unexpected empty path for language plugin %s", runtime) + + args, err := buildArgsForNewPlugin(host, info.RootDirectory(), info.Options()) + if err != nil { + return nil, err + } + + plug, _, err = newPlugin( + ctx, + workingDirectory, + path, + runtime, + apitype.LanguagePlugin, + args, + nil, /*env*/ + testConnection, + langRuntimePluginDialOptions(ctx, runtime), + ) + if err != nil { + return nil, err + } + + client = pulumirpc.NewLanguageRuntimeClient(plug.Conn) } + contract.Assertf(plug != nil, "unexpected nil language plugin for %s", runtime) return &langhost{ ctx: ctx, runtime: runtime, plug: plug, - client: pulumirpc.NewLanguageRuntimeClient(plug.Conn), + client: client, }, nil } +// Checks PULUMI_DEBUG_LANGUAGES environment variable for any overrides for the +// language identified by name. If the user has requested to attach to a live +// language plugin, returns the port number from the env var. +// +// For example, `PULUMI_DEBUG_LANGUAGES=go:12345,dotnet:678` will result in 12345 for go and 678 for dotnet. +func GetLanguageAttachPort(runtime string) (*int, error) { + var optAttach string + + if languagesEnvVar, has := os.LookupEnv("PULUMI_DEBUG_LANGUAGES"); has { + for _, provider := range strings.Split(languagesEnvVar, ",") { + parts := strings.SplitN(provider, ":", 2) + + if parts[0] == runtime { + optAttach = parts[1] + break + } + } + } + + if optAttach == "" { + return nil, nil + } + + port, err := strconv.Atoi(optAttach) + if err != nil { + return nil, fmt.Errorf("Expected a numeric port, got %s in PULUMI_DEBUG_LANGUAGES: %w", + optAttach, err) + } + return &port, nil +} + func langRuntimePluginDialOptions(ctx *Context, runtime string) []grpc.DialOption { dialOpts := append( rpcutil.OpenTracingInterceptorDialOptions(), @@ -131,8 +230,91 @@ func NewLanguageRuntimeClient(ctx *Context, runtime string, client pulumirpc.Lan } } -// GetRequiredPlugins computes the complete set of anticipated plugins required by a program. -func (h *langhost) GetRequiredPlugins(info ProgramInfo) ([]workspace.PluginSpec, error) { +// GetRequiredPackages computes the complete set of anticipated plugins required by a program. +func (h *langhost) GetRequiredPackages(info ProgramInfo) ([]workspace.PackageDescriptor, error) { + logging.V(7).Infof("langhost[%v].GetRequiredPackages(%s) executing", + h.runtime, info) + + minfo, err := info.Marshal() + if err != nil { + return nil, err + } + + resp, err := h.client.GetRequiredPackages(h.ctx.Request(), &pulumirpc.GetRequiredPackagesRequest{ + Info: minfo, + }) + if err != nil { + rpcError := rpcerror.Convert(err) + logging.V(7).Infof("langhost[%v].GetRequiredPackages(%s) failed: err=%v", + h.runtime, info, rpcError) + + // It's possible this is just an older language host, prior to the emergence of the GetRequiredPackages + // method. In such cases, fallback to using GetRequiredPlugins and don't report any parameterized packages. + if rpcError.Code() == codes.Unimplemented { + plugins, err := h.getRequiredPlugins(info) + if err != nil { + return nil, err + } + packages := make([]workspace.PackageDescriptor, len(plugins)) + for i, plugin := range plugins { + packages[i] = workspace.PackageDescriptor{ + PluginSpec: plugin, + } + } + return packages, nil + } + + return nil, rpcError + } + + results := slice.Prealloc[workspace.PackageDescriptor](len(resp.Packages)) + for _, info := range resp.Packages { + var version *semver.Version + if v := info.GetVersion(); v != "" { + sv, err := semver.ParseTolerant(v) + if err != nil { + return nil, fmt.Errorf("illegal semver returned by language host: %s@%s: %w", info.GetName(), v, err) + } + version = &sv + } + if !apitype.IsPluginKind(info.Kind) { + return nil, fmt.Errorf("unrecognized plugin kind: %s", info.Kind) + } + var parameterization *workspace.Parameterization + if info.Parameterization != nil { + sv, err := semver.ParseTolerant(info.Parameterization.Version) + if err != nil { + return nil, fmt.Errorf( + "illegal semver returned by language host: %s@%s: %w", + info.GetName(), info.Parameterization.Version, err) + } + + parameterization = &workspace.Parameterization{ + Name: info.Parameterization.Name, + Version: sv, + Value: info.Parameterization.Value, + } + } + + results = append(results, workspace.PackageDescriptor{ + PluginSpec: workspace.PluginSpec{ + Name: info.Name, + Kind: apitype.PluginKind(info.Kind), + Version: version, + PluginDownloadURL: info.Server, + Checksums: info.Checksums, + }, + Parameterization: parameterization, + }) + } + + logging.V(7).Infof("langhost[%v].GetRequiredPackages(%s) success: #versions=%d", + h.runtime, info, len(results)) + return results, nil +} + +// getRequiredPlugins computes the complete set of anticipated plugins required by a program. +func (h *langhost) getRequiredPlugins(info ProgramInfo) ([]workspace.PluginSpec, error) { logging.V(7).Infof("langhost[%v].GetRequiredPlugins(%s) executing", h.runtime, info) @@ -141,7 +323,9 @@ func (h *langhost) GetRequiredPlugins(info ProgramInfo) ([]workspace.PluginSpec, return nil, err } - resp, err := h.client.GetRequiredPlugins(h.ctx.Request(), &pulumirpc.GetRequiredPluginsRequest{ + // this is deprecated and will be removed in a future release, but we use it for backcompat for now until + // all language hosts are update to GetRequiredPackages. + resp, err := h.client.GetRequiredPlugins(h.ctx.Request(), &pulumirpc.GetRequiredPluginsRequest{ //nolint:staticcheck Project: "deprecated", Pwd: info.ProgramDirectory(), Program: info.EntryPoint(), @@ -604,3 +788,30 @@ func (h *langhost) Pack( logging.V(7).Infof("%s success: artifactPath=%s", label, req.ArtifactPath) return req.ArtifactPath, nil } + +func languageHandshake( + ctx context.Context, + bin string, + prefix string, + conn *grpc.ClientConn, + req *pulumirpc.LanguageHandshakeRequest, +) (*pulumirpc.LanguageHandshakeResponse, error) { + client := pulumirpc.NewLanguageRuntimeClient(conn) + _, err := client.Handshake(ctx, &pulumirpc.LanguageHandshakeRequest{ + EngineAddress: req.EngineAddress, + RootDirectory: req.RootDirectory, + ProgramDirectory: req.ProgramDirectory, + }) + if err != nil { + status, ok := status.FromError(err) + if ok && status.Code() == codes.Unimplemented { + // If the language host doesn't implement Handshake, that's fine -- we'll + // fall back to existing behaviour. + logging.V(7).Infof("Handshake: not supported by '%v'", bin) + return nil, nil + } + } + + logging.V(7).Infof("Handshake: success [%v]", bin) + return &pulumirpc.LanguageHandshakeResponse{}, nil +} diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/mock.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/mock.go index 7be17e141..4b552806f 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/mock.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/mock.go @@ -156,6 +156,7 @@ type MockProvider struct { CloseF func() error PkgF func() tokens.Package + HandshakeF func(context.Context, ProviderHandshakeRequest) (*ProviderHandshakeResponse, error) ParameterizeF func(context.Context, ParameterizeRequest) (ParameterizeResponse, error) GetSchemaF func(context.Context, GetSchemaRequest) (GetSchemaResponse, error) CheckConfigF func(context.Context, CheckConfigRequest) (CheckConfigResponse, error) @@ -193,6 +194,15 @@ func (m *MockProvider) Pkg() tokens.Package { return "" } +func (m *MockProvider) Handshake( + ctx context.Context, req ProviderHandshakeRequest, +) (*ProviderHandshakeResponse, error) { + if m.HandshakeF != nil { + return m.HandshakeF(ctx, req) + } + return nil, errors.New("Handshake not implemented") +} + func (m *MockProvider) Parameterize(ctx context.Context, req ParameterizeRequest) (ParameterizeResponse, error) { if m.ParameterizeF != nil { return m.ParameterizeF(ctx, req) diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/plugin.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/plugin.go index 2daea8655..fad047dd7 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/plugin.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/plugin.go @@ -45,6 +45,15 @@ import ( "github.com/pulumi/pulumi/sdk/v3/go/common/workspace" ) +type PulumiParameterizationJSON struct { + // The name of the parameterized package. + Name string `json:"name"` + // The version of the parameterized package. + Version string `json:"version"` + // The parameter value of the parameterized package. + Value []byte `json:"value"` +} + // PulumiPluginJSON represents additional information about a package's associated Pulumi plugin. // For Python, the content is inside a pulumi-plugin.json file inside the package. // For Node.js, the content is within the package.json file, under the "pulumi" node. @@ -59,6 +68,8 @@ type PulumiPluginJSON struct { Version string `json:"version,omitempty"` // Optional plugin server. If not set, the default server is used when installing the plugin. Server string `json:"server,omitempty"` + // Parameterization information for the package. + Parameterization *PulumiParameterizationJSON `json:"parameterization,omitempty"` } func (plugin *PulumiPluginJSON) JSON() ([]byte, error) { @@ -117,19 +128,27 @@ var errRunPolicyModuleNotFound = errors.New("pulumi SDK does not support policy // errPluginNotFound is returned when we try to execute a plugin but it is not found on disk. var errPluginNotFound = errors.New("plugin not found") -func dialPlugin(portNum int, bin, prefix string, dialOptions []grpc.DialOption) (*grpc.ClientConn, error) { +func dialPlugin[T any]( + portNum int, + bin string, + prefix string, + handshake func(context.Context, string, string, *grpc.ClientConn) (*T, error), + dialOptions []grpc.DialOption, +) (*grpc.ClientConn, *T, error) { port := strconv.Itoa(portNum) // Now that we have the port, go ahead and create a gRPC client connection to it. conn, err := grpc.NewClient("127.0.0.1:"+port, dialOptions...) if err != nil { - return nil, fmt.Errorf("could not dial plugin [%v] over RPC: %w", bin, err) + return nil, nil, fmt.Errorf("could not dial plugin [%v] over RPC: %w", bin, err) } // We want to wait for the gRPC connection to the plugin to become ready before we proceed. To this end, we'll // manually kick off a Connect() call and then wait until the state of the connection becomes Ready. conn.Connect() + var handshakeRes *T + // TODO[pulumi/pulumi#337]: in theory, this should be unnecessary. gRPC's default WaitForReady behavior // should auto-retry appropriately. On Linux, however, we are observing different behavior. In the meantime // while this bug exists, we'll simply do a bit of waiting of our own up front. @@ -139,45 +158,56 @@ func dialPlugin(portNum int, bin, prefix string, dialOptions []grpc.DialOption) if s == connectivity.Ready { // The connection is supposedly ready; but we will make sure it is *actually* ready by sending a dummy // method invocation to the server. Until it responds successfully, we can't safely proceed. - outer: for { - err = grpc.Invoke(timeout, "", nil, nil, conn) + handshakeRes, err = handshake(timeout, bin, prefix, conn) if err == nil { break // successful connect } // We have an error; see if it's a known status and, if so, react appropriately. status, ok := status.FromError(err) - if ok { - //nolint:exhaustive // we have a default case for other statuses - switch status.Code() { - case codes.Unavailable: - // The server is unavailable. This is the Linux bug. Wait a little and retry. - time.Sleep(time.Millisecond * 10) - continue // keep retrying - default: - // Since we sent "" as the method above, this is the expected response. Ready to go. - break outer - } + if ok && status.Code() == codes.Unavailable { + // The server is unavailable. This is the Linux bug. Wait a little and retry. + time.Sleep(time.Millisecond * 10) + continue // keep retrying } // Unexpected error; get outta dodge. - return nil, fmt.Errorf("%v plugin [%v] did not come alive: %w", prefix, bin, err) + return nil, nil, fmt.Errorf("%v plugin [%v] did not come alive: %w", prefix, bin, err) } break } // Not ready yet; ask the gRPC client APIs to block until the state transitions again so we can retry. if !conn.WaitForStateChange(timeout, s) { - return nil, fmt.Errorf("%v plugin [%v] did not begin responding to RPC connections", prefix, bin) + return nil, nil, fmt.Errorf("%v plugin [%v] did not begin responding to RPC connections", prefix, bin) } } - return conn, nil + return conn, handshakeRes, nil } -func newPlugin(ctx *Context, pwd, bin, prefix string, kind apitype.PluginKind, - args, env []string, dialOptions []grpc.DialOption, -) (*plugin, error) { +func testConnection(ctx context.Context, bin string, prefix string, conn *grpc.ClientConn) (*struct{}, error) { + err := conn.Invoke(ctx, "", nil, nil) + if err != nil { + status, ok := status.FromError(err) + if ok && status.Code() != codes.Unavailable { + return &struct{}{}, nil + } + } + return &struct{}{}, err +} + +func newPlugin[T any]( + ctx *Context, + pwd string, + bin string, + prefix string, + kind apitype.PluginKind, + args []string, + env []string, + handshake func(context.Context, string, string, *grpc.ClientConn) (*T, error), + dialOptions []grpc.DialOption, +) (*plugin, *T, error) { if logging.V(9) { var argstr string for i, arg := range args { @@ -204,7 +234,7 @@ func newPlugin(ctx *Context, pwd, bin, prefix string, kind apitype.PluginKind, // Try to execute the binary. plug, err := execPlugin(ctx, bin, prefix, kind, args, pwd, env) if err != nil { - return nil, fmt.Errorf("failed to load plugin %s: %w", bin, err) + return nil, nil, fmt.Errorf("failed to load plugin %s: %w", bin, err) } contract.Assertf(plug != nil, "plugin %v canot be nil", bin) @@ -271,14 +301,14 @@ func newPlugin(ctx *Context, pwd, bin, prefix string, kind apitype.PluginKind, // If from the output we have seen, return a specific error if possible. if sawPolicyModuleNotFoundErr { - return nil, errRunPolicyModuleNotFound + return nil, nil, errRunPolicyModuleNotFound } // Fall back to a generic, opaque error. if portString == "" { - return nil, fmt.Errorf("could not read plugin [%v] stdout: %w", bin, readerr) + return nil, nil, fmt.Errorf("could not read plugin [%v] stdout: %w", bin, readerr) } - return nil, fmt.Errorf("failure reading plugin [%v] stdout (read '%v'): %w", + return nil, nil, fmt.Errorf("failure reading plugin [%v] stdout (read '%v'): %w", bin, portString, readerr) } if n > 0 && b[0] == '\n' { @@ -291,7 +321,7 @@ func newPlugin(ctx *Context, pwd, bin, prefix string, kind apitype.PluginKind, if port, err = parsePort(portString); err != nil { killerr := plug.Kill() contract.IgnoreError(killerr) // ignoring the error because the existing one trumps it. - return nil, fmt.Errorf( + return nil, nil, fmt.Errorf( "%v plugin [%v] wrote an invalid port to stdout: %w", prefix, bin, err) } @@ -300,14 +330,14 @@ func newPlugin(ctx *Context, pwd, bin, prefix string, kind apitype.PluginKind, plug.stdoutDone = stdoutDone go runtrace(plug.Stdout, false, stdoutDone) - conn, err := dialPlugin(port, bin, prefix, dialOptions) + conn, handshakeRes, err := dialPlugin(port, bin, prefix, handshake, dialOptions) if err != nil { - return nil, err + return nil, nil, err } // Done; store the connection and return the plugin info. plug.Conn = conn - return plug, nil + return plug, handshakeRes, nil } func parsePort(portString string) (int, error) { diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider.go index 6a7dcfdc8..c389c4561 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider.go @@ -36,6 +36,27 @@ type GetSchemaRequest struct { SubpackageVersion *semver.Version } +// The type of requests sent as part of a Handshake call. +type ProviderHandshakeRequest struct { + // The gRPC address of the engine handshaking with the provider. At a minimum, this address will expose an instance of + // the Engine service. + EngineAddress string + + // A *root directory* where the provider's binary, `PulumiPlugin.yaml`, or other identifying source code is located. + // In the event that the provider is *not* being booted by the engine (e.g. in the case that the engine has been asked + // to attach to an existing running provider instance via a host/port number), this field will be empty. + RootDirectory *string + + // A *program directory* in which the provider should execute. This is generally a subdirectory of the root directory, + // though this is not required. In the event that the provider is *not* being booted by the engine (e.g. in the case + // that the engine has been asked to attach to an existing running provider instance via a host/port number), this + // field will be empty. + ProgramDirectory *string +} + +// The type of responses sent as part of a Handshake call. +type ProviderHandshakeResponse struct{} + type ParameterizeParameters interface { isParameterizeParameters() } @@ -98,6 +119,31 @@ type ConfigureRequest struct { type ConfigureResponse struct{} +// The mode that controls how the provider handles the proposed name. If not specified, defaults to `Propose`. +type AutonamingMode int32 + +const ( + // Propose: The provider may use the proposed name as a suggestion but is free to modify it. + AutonamingModePropose AutonamingMode = iota + // Enforce: The provider must use exactly the proposed name or return an error. + AutonamingModeEnforce = 1 + // Disabled: The provider should disable automatic naming and return an error if no explicit name is provided + // by user's program. + AutonamingModeDisabled = 2 +) + +// Configuration for automatic resource naming behavior. This structure contains fields that control how the provider +// handles resource names, including proposed names and naming modes. +type AutonamingOptions struct { + // ProposedName is the name that the provider should use for the resource. + ProposedName string + // Mode is the mode that controls how the provider handles the proposed name. + Mode AutonamingMode + // WarnIfNoSupport indicates whether the provider plugin should log a warning if the provider does not support + // autonaming configuration. + WarnIfNoSupport bool +} + type CheckRequest struct { URN resource.URN Name string @@ -106,6 +152,7 @@ type CheckRequest struct { Olds, News resource.PropertyMap AllowUnknowns bool RandomSeed []byte + Autonaming *AutonamingOptions } type CheckResponse struct { @@ -266,6 +313,13 @@ type Provider interface { // Pkg fetches this provider's package. Pkg() tokens.Package + // Handshake is the first call made by the engine to a provider. It is used to pass the engine's address to the + // provider so that it may establish its own connections back, and to establish protocol configuration that will be + // used to communicate between the two parties. Providers that support Handshake implicitly support the set of + // feature flags previously handled by Configure prior to Handshake's introduction, such as secrets and resource + // references. + Handshake(context.Context, ProviderHandshakeRequest) (*ProviderHandshakeResponse, error) + // Parameterize adds a sub-package to this provider instance. Parameterize(context.Context, ParameterizeRequest) (ParameterizeResponse, error) diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_plugin.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_plugin.go index b3a2f562f..a9aebbb19 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_plugin.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_plugin.go @@ -21,6 +21,7 @@ import ( "fmt" "io" "os" + "path/filepath" "strconv" "strings" @@ -31,10 +32,12 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials/insecure" + "google.golang.org/grpc/status" "google.golang.org/protobuf/types/known/emptypb" "google.golang.org/protobuf/types/known/structpb" "github.com/pulumi/pulumi/sdk/v3/go/common/apitype" + "github.com/pulumi/pulumi/sdk/v3/go/common/diag" "github.com/pulumi/pulumi/sdk/v3/go/common/promise" "github.com/pulumi/pulumi/sdk/v3/go/common/resource" "github.com/pulumi/pulumi/sdk/v3/go/common/resource/archive" @@ -78,18 +81,51 @@ type provider struct { disableProviderPreview bool // true if previews for Create and Update are disabled. legacyPreview bool // enables legacy behavior for unconfigured provider previews. + // Protocol information for the provider. + protocol *pluginProtocol + + // The source for the provider's configuration. You should *not* access this field directly when checking + // configuration, since some of its fields have been deprecated in favour of handshake. Instead, use the + // getPluginConfig method, which will return both the handshake and a pluginConfig consistent with the handshake. configSource *promise.CompletionSource[pluginConfig] // the source for the provider's configuration. } +type pluginProtocol struct { + // True if the provider accepts strongly-typed secrets. + acceptSecrets bool + + // True if the provider accepts strongly-typed resource references. + acceptResources bool + + // True if this plugin accepts output values. + acceptOutputs bool + + // True if this plugin supports previews for Create and Update. + supportsPreview bool + + // True if this plugin supports custom autonaming configuration. + supportsAutonamingConfiguration bool +} + // pluginConfig holds the configuration of the provider // as specified by the Configure call. type pluginConfig struct { known bool // true if all configuration values are known. +} + +func (p *provider) getPluginConfig(ctx context.Context) (pluginProtocol, pluginConfig, error) { + pcfg, err := p.configSource.Promise().Result(ctx) + if err != nil { + return pluginProtocol{}, pluginConfig{}, err + } + + if p.protocol == nil { + return pluginProtocol{}, pluginConfig{}, errors.New( + "Protocol must be configured by the time plugin configuration has been resolved", + ) + } - acceptSecrets bool // true if this plugin accepts strongly-typed secrets. - acceptResources bool // true if this plugin accepts strongly-typed resource refs. - acceptOutputs bool // true if this plugin accepts output values. - supportsPreview bool // true if this plugin supports previews for Create and Update. + return *p.protocol, pcfg, nil } // Checks PULUMI_DEBUG_PROVIDERS environment variable for any overrides for the provider identified @@ -129,6 +165,7 @@ func NewProvider(host Host, ctx *Context, pkg tokens.Package, version *semver.Ve ) (Provider, error) { // See if this is a provider we just want to attach to var plug *plugin + var handshakeRes *ProviderHandshakeResponse attachPort, err := GetProviderAttachPort(pkg) if err != nil { @@ -140,7 +177,21 @@ func NewProvider(host Host, ctx *Context, pkg tokens.Package, version *semver.Ve if attachPort != nil { port := *attachPort - conn, err := dialPlugin(port, pkg.String(), prefix, providerPluginDialOptions(ctx, pkg, "")) + handshake := func( + ctx context.Context, bin string, prefix string, conn *grpc.ClientConn, + ) (*ProviderHandshakeResponse, error) { + req := &ProviderHandshakeRequest{ + EngineAddress: host.ServerAddr(), + // If we're attaching then we don't know the root or program directory. + RootDirectory: nil, + ProgramDirectory: nil, + } + return handshake(ctx, bin, prefix, conn, req) + } + + var conn *grpc.ClientConn + conn, handshakeRes, err = dialPlugin(port, pkg.String(), prefix, + handshake, providerPluginDialOptions(ctx, pkg, "")) if err != nil { return nil, err } @@ -180,8 +231,22 @@ func NewProvider(host Host, ctx *Context, pkg tokens.Package, version *semver.Ve if jsonConfig != "" { env = append(env, "PULUMI_CONFIG="+jsonConfig) } - plug, err = newPlugin(ctx, ctx.Pwd, path, prefix, - apitype.ResourcePlugin, []string{host.ServerAddr()}, env, providerPluginDialOptions(ctx, pkg, "")) + + handshake := func( + ctx context.Context, bin string, prefix string, conn *grpc.ClientConn, + ) (*ProviderHandshakeResponse, error) { + dir := filepath.Dir(bin) + req := &ProviderHandshakeRequest{ + EngineAddress: host.ServerAddr(), + RootDirectory: &dir, + ProgramDirectory: &dir, + } + return handshake(ctx, bin, prefix, conn, req) + } + + plug, handshakeRes, err = newPlugin(ctx, ctx.Pwd, path, prefix, + apitype.ResourcePlugin, []string{host.ServerAddr()}, env, + handshake, providerPluginDialOptions(ctx, pkg, "")) if err != nil { return nil, err } @@ -201,6 +266,15 @@ func NewProvider(host Host, ctx *Context, pkg tokens.Package, version *semver.Ve configSource: &promise.CompletionSource[pluginConfig]{}, } + if handshakeRes != nil { + p.protocol = &pluginProtocol{ + acceptSecrets: true, + acceptResources: true, + supportsPreview: true, + acceptOutputs: true, + } + } + // If we just attached (i.e. plugin bin is nil) we need to call attach if plug.Bin == "" { err := p.Attach(host.ServerAddr()) @@ -212,6 +286,32 @@ func NewProvider(host Host, ctx *Context, pkg tokens.Package, version *semver.Ve return p, nil } +func handshake( + ctx context.Context, + bin string, + prefix string, + conn *grpc.ClientConn, + req *ProviderHandshakeRequest, +) (*ProviderHandshakeResponse, error) { + client := pulumirpc.NewResourceProviderClient(conn) + _, err := client.Handshake(ctx, &pulumirpc.ProviderHandshakeRequest{ + EngineAddress: req.EngineAddress, + RootDirectory: req.RootDirectory, + ProgramDirectory: req.ProgramDirectory, + }) + if err != nil { + status, ok := status.FromError(err) + if ok && status.Code() == codes.Unimplemented { + // If the provider doesn't implement Handshake, that's fine -- we'll fall back to existing behaviour. + logging.V(7).Infof("Handshake: not supported by '%v'", bin) + return nil, nil + } + } + + logging.V(7).Infof("Handshake: success [%v]", bin) + return &ProviderHandshakeResponse{}, nil +} + func providerPluginDialOptions(ctx *Context, pkg tokens.Package, path string) []grpc.DialOption { dialOpts := append( rpcutil.OpenTracingInterceptorDialOptions(otgrpc.SpanDecorator(decorateProviderSpans)), @@ -240,8 +340,21 @@ func providerPluginDialOptions(ctx *Context, pkg tokens.Package, path string) [] func NewProviderFromPath(host Host, ctx *Context, path string) (Provider, error) { env := os.Environ() - plug, err := newPlugin(ctx, ctx.Pwd, path, "", - apitype.ResourcePlugin, []string{host.ServerAddr()}, env, providerPluginDialOptions(ctx, "", path)) + handshake := func( + ctx context.Context, bin string, prefix string, conn *grpc.ClientConn, + ) (*ProviderHandshakeResponse, error) { + dir := filepath.Dir(bin) + req := &ProviderHandshakeRequest{ + EngineAddress: host.ServerAddr(), + RootDirectory: &dir, + ProgramDirectory: &dir, + } + return handshake(ctx, bin, prefix, conn, req) + } + + plug, handshakeRes, err := newPlugin(ctx, ctx.Pwd, path, "", + apitype.ResourcePlugin, []string{host.ServerAddr()}, env, + handshake, providerPluginDialOptions(ctx, "", path)) if err != nil { return nil, err } @@ -257,6 +370,15 @@ func NewProviderFromPath(host Host, ctx *Context, path string) (Provider, error) configSource: &promise.CompletionSource[pluginConfig]{}, } + if handshakeRes != nil { + p.protocol = &pluginProtocol{ + acceptSecrets: true, + acceptResources: true, + supportsPreview: true, + acceptOutputs: true, + } + } + // If we just attached (i.e. plugin bin is nil) we need to call attach if plug.Bin == "" { err := p.Attach(host.ServerAddr()) @@ -318,6 +440,19 @@ func isDiffCheckConfigLogicallyUnimplemented(err *rpcerror.Error, providerType t return false } +func (p *provider) Handshake(ctx context.Context, req ProviderHandshakeRequest) (*ProviderHandshakeResponse, error) { + _, err := p.clientRaw.Handshake(ctx, &pulumirpc.ProviderHandshakeRequest{ + EngineAddress: req.EngineAddress, + RootDirectory: req.RootDirectory, + ProgramDirectory: req.ProgramDirectory, + }) + if err != nil { + return nil, err + } + + return &ProviderHandshakeResponse{}, nil +} + func (p *provider) Parameterize(ctx context.Context, request ParameterizeRequest) (ParameterizeResponse, error) { var params pulumirpc.ParameterizeRequest switch p := request.Parameters.(type) { @@ -750,10 +885,12 @@ func (p *provider) Configure(ctx context.Context, req ConfigureRequest) (Configu } if v.ContainsUnknowns() { + if p.protocol == nil { + p.protocol = &pluginProtocol{} + } + p.configSource.MustFulfill(pluginConfig{ - known: false, - acceptSecrets: false, - acceptResources: false, + known: false, }) return ConfigureResponse{}, nil } @@ -805,12 +942,18 @@ func (p *provider) Configure(ctx context.Context, req ConfigureRequest) (Configu return } + if p.protocol == nil { + p.protocol = &pluginProtocol{ + acceptSecrets: resp.GetAcceptSecrets(), + acceptResources: resp.GetAcceptResources(), + supportsPreview: resp.GetSupportsPreview(), + acceptOutputs: resp.GetAcceptOutputs(), + supportsAutonamingConfiguration: resp.GetSupportsAutonamingConfiguration(), + } + } + p.configSource.MustFulfill(pluginConfig{ - known: true, - acceptSecrets: resp.GetAcceptSecrets(), - acceptResources: resp.GetAcceptResources(), - supportsPreview: resp.GetSupportsPreview(), - acceptOutputs: resp.GetAcceptOutputs(), + known: true, }) }() @@ -830,7 +973,7 @@ func (p *provider) Check(ctx context.Context, req CheckRequest) (CheckResponse, // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return CheckResponse{}, err } @@ -844,8 +987,8 @@ func (p *provider) Check(ctx context.Context, req CheckRequest) (CheckResponse, molds, err := MarshalProperties(req.Olds, MarshalOptions{ Label: label + ".olds", KeepUnknowns: req.AllowUnknowns, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return CheckResponse{}, err @@ -853,13 +996,28 @@ func (p *provider) Check(ctx context.Context, req CheckRequest) (CheckResponse, mnews, err := MarshalProperties(req.News, MarshalOptions{ Label: label + ".news", KeepUnknowns: req.AllowUnknowns, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return CheckResponse{}, err } + var autonaming *pulumirpc.CheckRequest_AutonamingOptions + if req.Autonaming != nil { + if protocol.supportsAutonamingConfiguration { + autonaming = &pulumirpc.CheckRequest_AutonamingOptions{ + ProposedName: req.Autonaming.ProposedName, + Mode: pulumirpc.CheckRequest_AutonamingOptions_Mode(req.Autonaming.Mode), + } + } else if req.Autonaming.WarnIfNoSupport { + p.ctx.Diag.Warningf(diag.Message(req.URN, + "%s resource has a custom autonaming setting but the provider does not support "+ + "autonaming configuration, consider upgrading to a newer version"), + req.URN) + } + } + resp, err := client.Check(p.requestContext(), &pulumirpc.CheckRequest{ Urn: string(req.URN), Name: req.URN.Name(), @@ -867,6 +1025,7 @@ func (p *provider) Check(ctx context.Context, req CheckRequest) (CheckResponse, Olds: molds, News: mnews, RandomSeed: req.RandomSeed, + Autonaming: autonaming, }) if err != nil { rpcError := rpcerror.Convert(err) @@ -892,7 +1051,7 @@ func (p *provider) Check(ctx context.Context, req CheckRequest) (CheckResponse, // If we could not pass secrets to the provider, retain the secret bit on any property with the same name. This // allows us to retain metadata about secrets in many cases, even for providers that do not understand secrets // natively. - if !pcfg.acceptSecrets { + if !protocol.acceptSecrets { annotateSecrets(inputs, req.News) } @@ -926,7 +1085,7 @@ func (p *provider) Diff(ctx context.Context, req DiffRequest) (DiffResponse, err // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return DiffResult{}, err } @@ -945,8 +1104,8 @@ func (p *provider) Diff(ctx context.Context, req DiffRequest) (DiffResponse, err Label: label + ".oldInputs", ElideAssetContents: true, KeepUnknowns: req.AllowUnknowns, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return DiffResult{}, err @@ -956,8 +1115,8 @@ func (p *provider) Diff(ctx context.Context, req DiffRequest) (DiffResponse, err Label: label + ".oldOutputs", ElideAssetContents: true, KeepUnknowns: req.AllowUnknowns, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return DiffResult{}, err @@ -967,8 +1126,8 @@ func (p *provider) Diff(ctx context.Context, req DiffRequest) (DiffResponse, err Label: label + ".newInputs", ElideAssetContents: true, KeepUnknowns: req.AllowUnknowns, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return DiffResult{}, err @@ -1035,7 +1194,7 @@ func (p *provider) Create(ctx context.Context, req CreateRequest) (CreateRespons // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return CreateResponse{}, err } @@ -1058,7 +1217,7 @@ func (p *provider) Create(ctx context.Context, req CreateRequest) (CreateRespons } return CreateResponse{}, nil } - if !pcfg.supportsPreview || p.disableProviderPreview { + if !protocol.supportsPreview || p.disableProviderPreview { return CreateResponse{Properties: req.Properties}, nil } } @@ -1069,8 +1228,8 @@ func (p *provider) Create(ctx context.Context, req CreateRequest) (CreateRespons mprops, err := MarshalProperties(req.Properties, MarshalOptions{ Label: label + ".inputs", KeepUnknowns: req.Preview, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return CreateResponse{}, err @@ -1120,7 +1279,7 @@ func (p *provider) Create(ctx context.Context, req CreateRequest) (CreateRespons // If we could not pass secrets to the provider, retain the secret bit on any property with the same name. This // allows us to retain metadata about secrets in many cases, even for providers that do not understand secrets // natively. - if !pcfg.acceptSecrets { + if !protocol.acceptSecrets { annotateSecrets(outs, req.Properties) } @@ -1149,7 +1308,7 @@ func (p *provider) Read(ctx context.Context, req ReadRequest) (ReadResponse, err // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return ReadResponse{Status: resource.StatusUnknown}, err } @@ -1168,8 +1327,8 @@ func (p *provider) Read(ctx context.Context, req ReadRequest) (ReadResponse, err m, err := MarshalProperties(req.Inputs, MarshalOptions{ Label: label, ElideAssetContents: true, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return ReadResponse{Status: resource.StatusUnknown}, err @@ -1179,8 +1338,8 @@ func (p *provider) Read(ctx context.Context, req ReadRequest) (ReadResponse, err mstate, err := MarshalProperties(req.State, MarshalOptions{ Label: label, ElideAssetContents: true, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return ReadResponse{Status: resource.StatusUnknown}, err @@ -1246,7 +1405,7 @@ func (p *provider) Read(ctx context.Context, req ReadRequest) (ReadResponse, err // If we could not pass secrets to the provider, retain the secret bit on any property with the same name. This // allows us to retain metadata about secrets in many cases, even for providers that do not understand secrets // natively. - if !pcfg.acceptSecrets { + if !protocol.acceptSecrets { annotateSecrets(newInputs, req.Inputs) annotateSecrets(newState, req.State) } @@ -1283,7 +1442,7 @@ func (p *provider) Update(ctx context.Context, req UpdateRequest) (UpdateRespons // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return UpdateResponse{Properties: req.NewInputs, Status: resource.StatusOK}, err } @@ -1306,7 +1465,7 @@ func (p *provider) Update(ctx context.Context, req UpdateRequest) (UpdateRespons } return UpdateResponse{Properties: resource.PropertyMap{}, Status: resource.StatusOK}, nil } - if !pcfg.supportsPreview || p.disableProviderPreview { + if !protocol.supportsPreview || p.disableProviderPreview { return UpdateResponse{Properties: req.NewInputs, Status: resource.StatusOK}, nil } } @@ -1317,8 +1476,8 @@ func (p *provider) Update(ctx context.Context, req UpdateRequest) (UpdateRespons mOldInputs, err := MarshalProperties(req.OldInputs, MarshalOptions{ Label: label + ".oldInputs", ElideAssetContents: true, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return UpdateResponse{Status: resource.StatusOK}, err @@ -1326,8 +1485,8 @@ func (p *provider) Update(ctx context.Context, req UpdateRequest) (UpdateRespons mOldOutputs, err := MarshalProperties(req.OldOutputs, MarshalOptions{ Label: label + ".oldOutputs", ElideAssetContents: true, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return UpdateResponse{Status: resource.StatusOK}, err @@ -1335,8 +1494,8 @@ func (p *provider) Update(ctx context.Context, req UpdateRequest) (UpdateRespons mNewInputs, err := MarshalProperties(req.NewInputs, MarshalOptions{ Label: label + ".newInputs", KeepUnknowns: req.Preview, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return UpdateResponse{Status: resource.StatusOK}, err @@ -1383,7 +1542,7 @@ func (p *provider) Update(ctx context.Context, req UpdateRequest) (UpdateRespons // If we could not pass secrets to the provider, retain the secret bit on any property with the same name. This // allows us to retain metadata about secrets in many cases, even for providers that do not understand secrets // natively. - if !pcfg.acceptSecrets { + if !protocol.acceptSecrets { annotateSecrets(outs, req.NewInputs) } logging.V(7).Infof("%s success; #outs=%d", label, len(outs)) @@ -1407,7 +1566,7 @@ func (p *provider) Delete(ctx context.Context, req DeleteRequest) (DeleteRespons // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return DeleteResponse{}, err } @@ -1418,8 +1577,8 @@ func (p *provider) Delete(ctx context.Context, req DeleteRequest) (DeleteRespons minputs, err := MarshalProperties(req.Inputs, MarshalOptions{ Label: label, ElideAssetContents: true, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return DeleteResponse{}, err @@ -1428,8 +1587,8 @@ func (p *provider) Delete(ctx context.Context, req DeleteRequest) (DeleteRespons moutputs, err := MarshalProperties(req.Outputs, MarshalOptions{ Label: label, ElideAssetContents: true, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return DeleteResponse{}, err @@ -1468,7 +1627,7 @@ func (p *provider) Construct(ctx context.Context, req ConstructRequest) (Constru // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(ctx) + protocol, pcfg, err := p.getPluginConfig(ctx) if err != nil { return ConstructResult{}, err } @@ -1500,7 +1659,7 @@ func (p *provider) Construct(ctx context.Context, req ConstructRequest) (Constru }, nil } - if !pcfg.acceptSecrets { + if !protocol.acceptSecrets { return ConstructResult{}, errors.New("plugins that can construct components must support secrets") } @@ -1508,11 +1667,11 @@ func (p *provider) Construct(ctx context.Context, req ConstructRequest) (Constru minputs, err := MarshalProperties(req.Inputs, MarshalOptions{ Label: label + ".inputs", KeepUnknowns: true, - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, // To initially scope the use of this new feature, we only keep output values for // Construct and Call (when the client accepts them). - KeepOutputValues: pcfg.acceptOutputs, + KeepOutputValues: protocol.acceptOutputs, }) if err != nil { return ConstructResult{}, err @@ -1625,7 +1784,7 @@ func (p *provider) Invoke(ctx context.Context, req InvokeRequest) (InvokeRespons // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(ctx) + protocol, pcfg, err := p.getPluginConfig(ctx) if err != nil { return InvokeResponse{}, err } @@ -1637,8 +1796,8 @@ func (p *provider) Invoke(ctx context.Context, req InvokeRequest) (InvokeRespons margs, err := MarshalProperties(req.Args, MarshalOptions{ Label: label + ".args", - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return InvokeResponse{}, err @@ -1688,7 +1847,7 @@ func (p *provider) StreamInvoke(ctx context.Context, req StreamInvokeRequest) (S // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return StreamInvokeResponse{}, err } @@ -1700,8 +1859,8 @@ func (p *provider) StreamInvoke(ctx context.Context, req StreamInvokeRequest) (S margs, err := MarshalProperties(req.Args, MarshalOptions{ Label: label + ".args", - KeepSecrets: pcfg.acceptSecrets, - KeepResources: pcfg.acceptResources, + KeepSecrets: protocol.acceptSecrets, + KeepResources: protocol.acceptResources, }) if err != nil { return StreamInvokeResponse{}, err @@ -1763,7 +1922,7 @@ func (p *provider) Call(_ context.Context, req CallRequest) (CallResponse, error // Ensure that the plugin is configured. client := p.clientRaw - pcfg, err := p.configSource.Promise().Result(context.Background()) + protocol, pcfg, err := p.getPluginConfig(context.Background()) if err != nil { return CallResult{}, err } @@ -1780,7 +1939,7 @@ func (p *provider) Call(_ context.Context, req CallRequest) (CallResponse, error KeepResources: true, // To initially scope the use of this new feature, we only keep output values for // Construct and Call (when the client accepts them). - KeepOutputValues: pcfg.acceptOutputs, + KeepOutputValues: protocol.acceptOutputs, }) if err != nil { return CallResult{}, err diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_server.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_server.go index 2bacab783..6e607f67d 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_server.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_server.go @@ -131,6 +131,22 @@ func (p *providerServer) marshalDiff(diff DiffResult) (*pulumirpc.DiffResponse, }, nil } +func (p *providerServer) Handshake( + ctx context.Context, + req *pulumirpc.ProviderHandshakeRequest, +) (*pulumirpc.ProviderHandshakeResponse, error) { + _, err := p.provider.Handshake(ctx, ProviderHandshakeRequest{ + EngineAddress: req.EngineAddress, + RootDirectory: req.RootDirectory, + ProgramDirectory: req.ProgramDirectory, + }) + if err != nil { + return nil, err + } + + return &pulumirpc.ProviderHandshakeResponse{}, nil +} + func (p *providerServer) Parameterize( ctx context.Context, req *pulumirpc.ParameterizeRequest, ) (*pulumirpc.ParameterizeResponse, error) { @@ -382,6 +398,14 @@ func (p *providerServer) Check(ctx context.Context, req *pulumirpc.CheckRequest) return nil, err } + var autonaming *AutonamingOptions + if req.Autonaming != nil { + autonaming = &AutonamingOptions{ + ProposedName: req.Autonaming.ProposedName, + Mode: AutonamingMode(req.Autonaming.Mode), + } + } + resp, err := p.provider.Check(ctx, CheckRequest{ URN: urn, Name: req.Name, @@ -390,6 +414,7 @@ func (p *providerServer) Check(ctx context.Context, req *pulumirpc.CheckRequest) News: inputs, AllowUnknowns: true, RandomSeed: req.RandomSeed, + Autonaming: autonaming, }) if err != nil { return nil, err diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_unimplemented.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_unimplemented.go index db84e39cf..da1c57876 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_unimplemented.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin/provider_unimplemented.go @@ -36,6 +36,12 @@ type NotForwardCompatibleProvider struct{} // implement [Provider]. type UnimplementedProvider struct{ NotForwardCompatibleProvider } +func (p *UnimplementedProvider) Handshake( + context.Context, ProviderHandshakeRequest, +) (*ProviderHandshakeResponse, error) { + return nil, status.Error(codes.Unimplemented, "Handshake is not yet implemented") +} + func (p *UnimplementedProvider) Close() error { return status.Error(codes.Unimplemented, "Close is not yet implemented") } diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/args.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/args.go index 44aebdb2f..5ed125d80 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/args.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/args.go @@ -75,6 +75,6 @@ func SpecificArgs(argNames []string) cobra.PositionalArgs { // RangeArgs is the same as cobra.RangeArgs, except it is wrapped with ArgsFunc to provide standard // Pulumi error handling. -func RangeArgs(min int, max int) cobra.PositionalArgs { - return ArgsFunc(cobra.RangeArgs(min, max)) +func RangeArgs(minimum int, maximum int) cobra.PositionalArgs { + return ArgsFunc(cobra.RangeArgs(minimum, maximum)) } diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/console.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/console.go index 869dc0a75..d28dd8d08 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/console.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/console.go @@ -314,10 +314,3 @@ func (table Table) Render(opts *TableRenderOptions) string { } return result.String() } - -func max(a, b int) int { - if a > b { - return a - } - return b -} diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/profile.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/profile.go index 42ec31ccf..96e37bee2 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/profile.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/util/cmdutil/profile.go @@ -79,16 +79,18 @@ func memoryProfileWriteLoop(prefix string) { mem, err := os.Create(fmt.Sprintf("%s.%v.mem.%d", prefix, os.Getpid(), i)) if err != nil { + contract.IgnoreClose(mem) fmt.Fprintf(os.Stderr, "could not create memory profile: %s\n", err.Error()) + return } - defer mem.Close() runtime.GC() // get up-to-date statistics if err = pprof.Lookup("allocs").WriteTo(mem, 0); err != nil { fmt.Fprintf(os.Stderr, "could not create memory profile: %s\n", err.Error()) } + contract.IgnoreClose(mem) os.Remove(fmt.Sprintf("%s.%v.mem.%d", prefix, os.Getpid(), i-1)) } } diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/workspace/plugins.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/workspace/plugins.go index 7498c9f2c..028ac0f15 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/workspace/plugins.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/common/workspace/plugins.go @@ -898,7 +898,7 @@ type PluginInfo struct { Path string // the path that a plugin was loaded from (this will always be a directory) Kind apitype.PluginKind // the kind of the plugin (language, resource, etc). Version *semver.Version // the plugin's semantic version, if present. - Size int64 // the size of the plugin, in bytes. + Size uint64 // the size of the plugin, in bytes. InstallTime time.Time // the time the plugin was installed. LastUsedTime time.Time // the last time the plugin was used. SchemaPath string // if set, used as the path for loading and caching the schema @@ -2275,13 +2275,13 @@ func tryPlugin(file os.DirEntry) (apitype.PluginKind, string, semver.Version, bo } // getPluginSize recursively computes how much space is devoted to a given plugin. -func getPluginSize(path string) (int64, error) { +func getPluginSize(path string) (uint64, error) { file, err := os.Stat(path) if err != nil { return 0, nil } - size := int64(0) + size := uint64(0) if file.IsDir() { subs, err := os.ReadDir(path) if err != nil { @@ -2295,7 +2295,12 @@ func getPluginSize(path string) (int64, error) { size += add } } else { - size += file.Size() + fs := file.Size() + if fs < 0 { + return 0, fmt.Errorf("file size is negative: %d", fs) + } + //nolint:gosec // Guarded by the check above. + size += uint64(fs) } return size, nil } diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/context.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/context.go index a74cc31da..df36d31f9 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/context.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/context.go @@ -668,31 +668,56 @@ func (ctx *Context) Invoke(tok string, args interface{}, result interface{}, opt // args and result must be pointers to struct values fields and appropriately tagged and typed for use with Pulumi. func (ctx *Context) invokePackageRaw( tok string, args interface{}, packageRef string, opts ...InvokeOption, -) (resource.PropertyMap, error) { +) (resource.PropertyMap, []Resource, error) { if tok == "" { - return nil, errors.New("invoke token must not be empty") - } - - options, err := NewInvokeOptions(opts...) - if err != nil { - return nil, err + return nil, []Resource{}, errors.New("invoke token must not be empty") + } + options := mergeInvokeOptions(opts...) + deps := []Resource{} + depSet := urnSet{} // Only used for `addURNs` below. + for _, d := range options.DependsOn { + // This will await the resources, ensuring that we don't call the invoke before the dependencies are ready. + if err := d.addURNs(ctx.ctx, depSet, nil); err != nil { + return nil, []Resource{}, err + } + switch d := d.(type) { + case resourceDependencySet: + deps = append(deps, d...) + case *resourceArrayInputDependencySet: + out := d.input.ToResourceArrayOutput() + value, known, _, _, err := internal.AwaitOutput(ctx.Context(), out) + if err != nil || !known { + return nil, []Resource{}, err + } + resources, ok := value.([]Resource) + if !ok { + return nil, []Resource{}, + fmt.Errorf("ResourceArrayInput resolved to a value of unexpected type %v, expected []Resource", + reflect.TypeOf(value)) + } + deps = append(deps, resources...) + default: + // Unreachable. + // We control all implementations of dependencySet. + contract.Failf("Unknown dependencySet %T", d) + } } - // Note that we're about to make an outstanding RPC request, so that we can rendezvous during shutdown. + var err error if err = ctx.beginRPC(); err != nil { - return nil, err + return nil, []Resource{}, err } defer ctx.endRPC(err) var providerRef string providers, err := ctx.mergeProviders(tok, options.Parent, options.Provider, nil) if err != nil { - return nil, err + return nil, []Resource{}, err } if provider := providers[getPackage(tok)]; provider != nil { pr, err := ctx.resolveProviderReference(provider) if err != nil { - return nil, err + return nil, []Resource{}, err } providerRef = pr } @@ -703,7 +728,7 @@ func (ctx *Context) invokePackageRaw( } resolvedArgs, _, err := marshalInput(args, anyType, false) if err != nil { - return nil, fmt.Errorf("marshaling arguments: %w", err) + return nil, []Resource{}, fmt.Errorf("marshaling arguments: %w", err) } resolvedArgsMap := resource.PropertyMap{} @@ -720,7 +745,7 @@ func (ctx *Context) invokePackageRaw( }, ) if err != nil { - return nil, fmt.Errorf("marshaling arguments: %w", err) + return nil, []Resource{}, fmt.Errorf("marshaling arguments: %w", err) } // Now, invoke the RPC to the provider synchronously. @@ -736,7 +761,7 @@ func (ctx *Context) invokePackageRaw( }) if err != nil { logging.V(9).Infof("Invoke(%s, ...): error: %v", tok, err) - return nil, err + return nil, []Resource{}, err } // If there were any failures from the provider, return them. @@ -747,17 +772,21 @@ func (ctx *Context) invokePackageRaw( ferr = multierror.Append(ferr, fmt.Errorf("%s invoke failed: %s (%s)", tok, failure.Reason, failure.Property)) } - return nil, ferr + return nil, []Resource{}, ferr } // Otherwise, simply unmarshal the output properties and return the result. - return plugin.UnmarshalProperties( + r, err := plugin.UnmarshalProperties( resp.Return, plugin.MarshalOptions{ KeepUnknowns: true, KeepSecrets: true, KeepResources: true, }) + if err != nil { + return nil, []Resource{}, err + } + return r, deps, nil } func validInvokeResult(resultV reflect.Value) bool { @@ -778,7 +807,18 @@ func (ctx *Context) InvokePackage( return errors.New("result must be a pointer to a struct or map value") } - outProps, err := ctx.invokePackageRaw(tok, args, packageRef, opts...) + invokeOpts, optsErr := NewInvokeOptions(opts...) + if optsErr != nil { + return optsErr + } + if len(invokeOpts.DependsOn) > 0 { + return fmt.Errorf("DependsOn is not supported for direct form invoke of %q, use the output form instead", tok) + } + if len(invokeOpts.DependsOnInputs) > 0 { + return fmt.Errorf("DependsOnInputs is not supported for direct form invoke of %q, use the output form instead", tok) + } + + outProps, _, err := ctx.invokePackageRaw(tok, args, packageRef, opts...) if err != nil { return err } @@ -802,7 +842,7 @@ func (ctx *Context) InvokePackageRaw( return false, errors.New("result must be a pointer to a struct or map value") } - outProps, err := ctx.invokePackageRaw(tok, args, packageRef, opts...) + outProps, _, err := ctx.invokePackageRaw(tok, args, packageRef, opts...) if err != nil { return false, err } @@ -814,6 +854,43 @@ func (ctx *Context) InvokePackageRaw( return hasSecret, nil } +// InvokeOutputOptions are the options that control the behavior of an InvokeOutput call. +type InvokeOutputOptions struct { + // The package reference for parameterized providers. + PackageRef string + // The options provided by the user for the invoke call, such as `Provider`, + // `Version, `DependsOn`, etc. + InvokeOptions []InvokeOption +} + +// InvokeOutput will invoke a provider's function, identified by its token tok. This function is +// used by generated SDK code for Output form invokes. +// `output` is used to determine the output type to return. +func (ctx *Context) InvokeOutput( + tok string, args interface{}, output Output, options InvokeOutputOptions, +) Output { + output = ctx.newOutput(reflect.TypeOf(output)) + + go func() { + outProps, deps, err := ctx.invokePackageRaw(tok, args, options.PackageRef, options.InvokeOptions...) + if err != nil { + internal.RejectOutput(output, err) + return + } + + dest := reflect.New(output.ElementType()).Elem() + known := !outProps.ContainsUnknowns() + secret, err := unmarshalOutput(ctx, resource.NewObjectProperty(outProps), dest) + if err != nil { + internal.RejectOutput(output, err) + return + } + internal.ResolveOutput(output, dest.Interface(), known, secret, resourcesToInternal(deps)) + }() + + return output +} + // Call will invoke a provider call function, identified by its token tok. // // output is used to determine the output type to return; self is optional for methods. @@ -1138,9 +1215,13 @@ func (ctx *Context) readPackageResource( // Get the provider for the resource. provider := getProvider(t, options.Provider, providers) + protect := options.Protect + if parent != nil { + protect = protect || parent.getProtect() + } // Create resolvers for the resource's outputs. - res := ctx.makeResourceState(t, name, resource, providers, provider, + res := ctx.makeResourceState(t, name, resource, providers, provider, protect, options.Version, options.PluginDownloadURL, aliasURNs, transformations) // Get the source position for the resource registration. Note that this assumes that there is an intermediate @@ -1335,9 +1416,13 @@ func (ctx *Context) registerResource( // Get the provider for the resource. provider := getProvider(t, options.Provider, providers) + protect := options.Protect + if parent != nil { + protect = protect || parent.getProtect() + } // Create resolvers for the resource's outputs. - resState := ctx.makeResourceState(t, name, resource, providers, provider, + resState := ctx.makeResourceState(t, name, resource, providers, provider, protect, options.Version, options.PluginDownloadURL, aliasURNs, transformations) // Get the source position for the resource registration. Note that this assumes that there are two intermediate @@ -1527,6 +1612,7 @@ type resourceState struct { outputs map[string]Output providers map[string]ProviderResource provider ProviderResource + protect bool version string pluginDownloadURL string name string @@ -1674,7 +1760,7 @@ var mapOutputType = reflect.TypeOf((*MapOutput)(nil)).Elem() // makeResourceState creates a set of resolvers that we'll use to finalize state, for URNs, IDs, and output // properties. func (ctx *Context) makeResourceState(t, name string, resourceV Resource, providers map[string]ProviderResource, - provider ProviderResource, version, pluginDownloadURL string, aliases []URNOutput, + provider ProviderResource, protect bool, version, pluginDownloadURL string, aliases []URNOutput, transformations []ResourceTransformation, ) *resourceState { // Ensure that the input res is a pointer to a struct. Note that we don't fail if it is not, and we probably @@ -1765,6 +1851,8 @@ func (ctx *Context) makeResourceState(t, name string, resourceV Resource, provid rs.providers = providers state.provider = provider rs.provider = provider + state.protect = protect + rs.protect = protect state.version = version rs.version = version state.rawOutputs = rawOutputs @@ -2066,9 +2154,9 @@ func (ctx *Context) mapAliases(aliases []Alias, func (ctx *Context) prepareResourceInputs(res Resource, props Input, t string, opts *resourceOptions, state *resourceState, remote, custom bool, ) (*resourceInputs, error) { - // Get the parent and dependency URNs from the options, in addition to the protection bit. If there wasn't an - // explicit parent, and a root stack resource exists, we will automatically parent to that. - resOpts, err := ctx.getOpts(res, t, state.provider, opts, remote, custom) + // Get the parent and dependency URNs from the options. If there wasn't an explicit parent, and a root stack resource + // exists, we will automatically parent to that. + resOpts, err := ctx.getOpts(res, state.provider, opts, remote, custom) if err != nil { return nil, fmt.Errorf("resolving options: %w", err) } @@ -2136,7 +2224,7 @@ func (ctx *Context) prepareResourceInputs(res Resource, props Input, t string, o return &resourceInputs{ parent: string(resOpts.parentURN), deps: deps, - protect: resOpts.protect, + protect: res.getProtect(), provider: resOpts.providerRef, providers: resOpts.providerRefs, resolvedProps: resolvedProps, @@ -2170,7 +2258,6 @@ func getTimeouts(custom *CustomTimeouts) *pulumirpc.RegisterResourceRequest_Cust type resourceOpts struct { parentURN URN depURNs []URN - protect bool providerRef string providerRefs map[string]string deleteBeforeReplace bool @@ -2183,7 +2270,7 @@ type resourceOpts struct { // getOpts returns a set of resource options from an array of them. This includes the parent URN, any dependency URNs, // a boolean indicating whether the resource is to be protected, and the URN and ID of the resource's provider, if any. func (ctx *Context) getOpts( - res Resource, t string, provider ProviderResource, opts *resourceOptions, remote, custom bool, + res Resource, provider ProviderResource, opts *resourceOptions, remote, custom bool, ) (resourceOpts, error) { var importID ID if opts.Import != nil { @@ -2242,7 +2329,6 @@ func (ctx *Context) getOpts( return resourceOpts{ parentURN: parentURN, depURNs: depURNs, - protect: opts.Protect, providerRef: providerRef, providerRefs: providerRefs, deleteBeforeReplace: opts.DeleteBeforeReplace, diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/resource.go b/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/resource.go index f8ea92d0d..1a40aa082 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/resource.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/go/pulumi/resource.go @@ -61,6 +61,7 @@ type ResourceState struct { children resourceSet providers map[string]ProviderResource provider ProviderResource + protect bool version string pluginDownloadURL string aliases []URNOutput @@ -121,6 +122,10 @@ func (s *ResourceState) getProvider() ProviderResource { return s.provider } +func (s *ResourceState) getProtect() bool { + return s.protect +} + func (s *ResourceState) getVersion() string { return s.version } @@ -230,6 +235,9 @@ type Resource interface { // getProvider returns the provider for the resource. getProvider() ProviderResource + // getProtect returns the protect flag for the resource. + getProtect() bool + // getVersion returns the version for the resource. getVersion() string @@ -518,6 +526,12 @@ type InvokeOptions struct { // should be downloaded. // This will be blank if the URL was inferred automatically. PluginDownloadURL string + // DependsOn lists additional explicit dependencies for the resource + // in addition to those tracked automatically by Pulumi. + DependsOn []Resource + // DependsOnInputs holds explicit dependencies for the resource + // that may not be fully known yet. + DependsOnInputs []ResourceArrayInput } // NewInvokeOptions builds a preview of the effect of the provided options. @@ -538,15 +552,39 @@ type invokeOptions struct { Provider ProviderResource Version string PluginDownloadURL string + DependsOn []dependencySet Parameterization []byte } func invokeOptionsSnapshot(io *invokeOptions) *InvokeOptions { + var ( + dependsOn []Resource + dependsOnInputs []ResourceArrayInput + ) + for _, d := range io.DependsOn { + switch d := d.(type) { + case resourceDependencySet: + dependsOn = append(dependsOn, []Resource(d)...) + case *resourceArrayInputDependencySet: + dependsOnInputs = append(dependsOnInputs, d.input) + default: + // Unreachable. + // We control all implementations of dependencySet. + contract.Failf("Unknown dependencySet %T", d) + } + } + + sort.Slice(dependsOn, func(i, j int) bool { + return dependsOn[i].getName() < dependsOn[j].getName() + }) + return &InvokeOptions{ Parent: io.Parent, Provider: io.Provider, Version: io.Version, PluginDownloadURL: io.PluginDownloadURL, + DependsOn: dependsOn, + DependsOnInputs: dependsOnInputs, } } @@ -658,9 +696,14 @@ type dependencySet interface { } // DependsOn is an optional array of explicit dependencies on other resources. -func DependsOn(o []Resource) ResourceOption { - return resourceOption(func(ro *resourceOptions) { - ro.DependsOn = append(ro.DependsOn, resourceDependencySet(o)) +func DependsOn(o []Resource) ResourceOrInvokeOption { + return resourceOrInvokeOption(func(ro *resourceOptions, io *invokeOptions) { + switch { + case ro != nil: + ro.DependsOn = append(ro.DependsOn, resourceDependencySet(o)) + case io != nil: + io.DependsOn = append(io.DependsOn, resourceDependencySet(o)) + } }) } @@ -687,9 +730,14 @@ func (rs resourceDependencySet) addURNs(ctx context.Context, urns urnSet, from R // var ro ResourceOutput // allDeps := NewResourceArrayOutput(NewResourceOutput(r), ri.ToResourceOutput(), ro) // DependsOnInputs(allDeps) -func DependsOnInputs(o ResourceArrayInput) ResourceOption { - return resourceOption(func(ro *resourceOptions) { - ro.DependsOn = append(ro.DependsOn, &resourceArrayInputDependencySet{o}) +func DependsOnInputs(o ResourceArrayInput) ResourceOrInvokeOption { + return resourceOrInvokeOption(func(ro *resourceOptions, io *invokeOptions) { + switch { + case ro != nil: + ro.DependsOn = append(ro.DependsOn, &resourceArrayInputDependencySet{o}) + case io != nil: + io.DependsOn = append(io.DependsOn, &resourceArrayInputDependencySet{o}) + } }) } diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language.pb.go b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language.pb.go index 9e5777e57..30208aab4 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language.pb.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language.pb.go @@ -80,7 +80,7 @@ func (x RuntimeOptionPrompt_RuntimeOptionType) Number() protoreflect.EnumNumber // Deprecated: Use RuntimeOptionPrompt_RuntimeOptionType.Descriptor instead. func (RuntimeOptionPrompt_RuntimeOptionType) EnumDescriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{13, 0} + return file_pulumi_language_proto_rawDescGZIP(), []int{15, 0} } // ProgramInfo are the common set of options that a language runtime needs to execute or query a program. This @@ -586,6 +586,100 @@ func (x *GetRequiredPluginsResponse) GetPlugins() []*PluginDependency { return nil } +type GetRequiredPackagesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info *ProgramInfo `protobuf:"bytes,1,opt,name=info,proto3" json:"info,omitempty"` // the program info to use to calculate packages. +} + +func (x *GetRequiredPackagesRequest) Reset() { + *x = GetRequiredPackagesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_language_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRequiredPackagesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRequiredPackagesRequest) ProtoMessage() {} + +func (x *GetRequiredPackagesRequest) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_language_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRequiredPackagesRequest.ProtoReflect.Descriptor instead. +func (*GetRequiredPackagesRequest) Descriptor() ([]byte, []int) { + return file_pulumi_language_proto_rawDescGZIP(), []int{8} +} + +func (x *GetRequiredPackagesRequest) GetInfo() *ProgramInfo { + if x != nil { + return x.Info + } + return nil +} + +type GetRequiredPackagesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Packages []*PackageDependency `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"` // a list of packages required by this program. +} + +func (x *GetRequiredPackagesResponse) Reset() { + *x = GetRequiredPackagesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_language_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRequiredPackagesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRequiredPackagesResponse) ProtoMessage() {} + +func (x *GetRequiredPackagesResponse) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_language_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRequiredPackagesResponse.ProtoReflect.Descriptor instead. +func (*GetRequiredPackagesResponse) Descriptor() ([]byte, []int) { + return file_pulumi_language_proto_rawDescGZIP(), []int{9} +} + +func (x *GetRequiredPackagesResponse) GetPackages() []*PackageDependency { + if x != nil { + return x.Packages + } + return nil +} + // RunRequest asks the interpreter to execute a program. type RunRequest struct { state protoimpl.MessageState @@ -615,7 +709,7 @@ type RunRequest struct { func (x *RunRequest) Reset() { *x = RunRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[8] + mi := &file_pulumi_language_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -628,7 +722,7 @@ func (x *RunRequest) String() string { func (*RunRequest) ProtoMessage() {} func (x *RunRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[8] + mi := &file_pulumi_language_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -641,7 +735,7 @@ func (x *RunRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RunRequest.ProtoReflect.Descriptor instead. func (*RunRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{8} + return file_pulumi_language_proto_rawDescGZIP(), []int{10} } func (x *RunRequest) GetProject() string { @@ -774,7 +868,7 @@ type RunResponse struct { func (x *RunResponse) Reset() { *x = RunResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[9] + mi := &file_pulumi_language_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -787,7 +881,7 @@ func (x *RunResponse) String() string { func (*RunResponse) ProtoMessage() {} func (x *RunResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[9] + mi := &file_pulumi_language_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -800,7 +894,7 @@ func (x *RunResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RunResponse.ProtoReflect.Descriptor instead. func (*RunResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{9} + return file_pulumi_language_proto_rawDescGZIP(), []int{11} } func (x *RunResponse) GetError() string { @@ -832,7 +926,7 @@ type InstallDependenciesRequest struct { func (x *InstallDependenciesRequest) Reset() { *x = InstallDependenciesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[10] + mi := &file_pulumi_language_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -845,7 +939,7 @@ func (x *InstallDependenciesRequest) String() string { func (*InstallDependenciesRequest) ProtoMessage() {} func (x *InstallDependenciesRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[10] + mi := &file_pulumi_language_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -858,7 +952,7 @@ func (x *InstallDependenciesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallDependenciesRequest.ProtoReflect.Descriptor instead. func (*InstallDependenciesRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{10} + return file_pulumi_language_proto_rawDescGZIP(), []int{12} } // Deprecated: Do not use. @@ -902,7 +996,7 @@ type InstallDependenciesResponse struct { func (x *InstallDependenciesResponse) Reset() { *x = InstallDependenciesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[11] + mi := &file_pulumi_language_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -915,7 +1009,7 @@ func (x *InstallDependenciesResponse) String() string { func (*InstallDependenciesResponse) ProtoMessage() {} func (x *InstallDependenciesResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[11] + mi := &file_pulumi_language_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -928,7 +1022,7 @@ func (x *InstallDependenciesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InstallDependenciesResponse.ProtoReflect.Descriptor instead. func (*InstallDependenciesResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{11} + return file_pulumi_language_proto_rawDescGZIP(), []int{13} } func (x *InstallDependenciesResponse) GetStdout() []byte { @@ -956,7 +1050,7 @@ type RuntimeOptionsRequest struct { func (x *RuntimeOptionsRequest) Reset() { *x = RuntimeOptionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[12] + mi := &file_pulumi_language_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -969,7 +1063,7 @@ func (x *RuntimeOptionsRequest) String() string { func (*RuntimeOptionsRequest) ProtoMessage() {} func (x *RuntimeOptionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[12] + mi := &file_pulumi_language_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -982,7 +1076,7 @@ func (x *RuntimeOptionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RuntimeOptionsRequest.ProtoReflect.Descriptor instead. func (*RuntimeOptionsRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{12} + return file_pulumi_language_proto_rawDescGZIP(), []int{14} } func (x *RuntimeOptionsRequest) GetInfo() *ProgramInfo { @@ -1007,7 +1101,7 @@ type RuntimeOptionPrompt struct { func (x *RuntimeOptionPrompt) Reset() { *x = RuntimeOptionPrompt{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[13] + mi := &file_pulumi_language_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1020,7 +1114,7 @@ func (x *RuntimeOptionPrompt) String() string { func (*RuntimeOptionPrompt) ProtoMessage() {} func (x *RuntimeOptionPrompt) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[13] + mi := &file_pulumi_language_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1033,7 +1127,7 @@ func (x *RuntimeOptionPrompt) ProtoReflect() protoreflect.Message { // Deprecated: Use RuntimeOptionPrompt.ProtoReflect.Descriptor instead. func (*RuntimeOptionPrompt) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{13} + return file_pulumi_language_proto_rawDescGZIP(), []int{15} } func (x *RuntimeOptionPrompt) GetKey() string { @@ -1082,7 +1176,7 @@ type RuntimeOptionsResponse struct { func (x *RuntimeOptionsResponse) Reset() { *x = RuntimeOptionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[14] + mi := &file_pulumi_language_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1095,7 +1189,7 @@ func (x *RuntimeOptionsResponse) String() string { func (*RuntimeOptionsResponse) ProtoMessage() {} func (x *RuntimeOptionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[14] + mi := &file_pulumi_language_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1108,7 +1202,7 @@ func (x *RuntimeOptionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RuntimeOptionsResponse.ProtoReflect.Descriptor instead. func (*RuntimeOptionsResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{14} + return file_pulumi_language_proto_rawDescGZIP(), []int{16} } func (x *RuntimeOptionsResponse) GetPrompts() []*RuntimeOptionPrompt { @@ -1134,7 +1228,7 @@ type RunPluginRequest struct { func (x *RunPluginRequest) Reset() { *x = RunPluginRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[15] + mi := &file_pulumi_language_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1147,7 +1241,7 @@ func (x *RunPluginRequest) String() string { func (*RunPluginRequest) ProtoMessage() {} func (x *RunPluginRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[15] + mi := &file_pulumi_language_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1160,7 +1254,7 @@ func (x *RunPluginRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RunPluginRequest.ProtoReflect.Descriptor instead. func (*RunPluginRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{15} + return file_pulumi_language_proto_rawDescGZIP(), []int{17} } func (x *RunPluginRequest) GetPwd() string { @@ -1214,7 +1308,7 @@ type RunPluginResponse struct { func (x *RunPluginResponse) Reset() { *x = RunPluginResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[16] + mi := &file_pulumi_language_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1227,7 +1321,7 @@ func (x *RunPluginResponse) String() string { func (*RunPluginResponse) ProtoMessage() {} func (x *RunPluginResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[16] + mi := &file_pulumi_language_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1240,7 +1334,7 @@ func (x *RunPluginResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RunPluginResponse.ProtoReflect.Descriptor instead. func (*RunPluginResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{16} + return file_pulumi_language_proto_rawDescGZIP(), []int{18} } func (m *RunPluginResponse) GetOutput() isRunPluginResponse_Output { @@ -1309,7 +1403,7 @@ type GenerateProgramRequest struct { func (x *GenerateProgramRequest) Reset() { *x = GenerateProgramRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[17] + mi := &file_pulumi_language_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1322,7 +1416,7 @@ func (x *GenerateProgramRequest) String() string { func (*GenerateProgramRequest) ProtoMessage() {} func (x *GenerateProgramRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[17] + mi := &file_pulumi_language_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1335,7 +1429,7 @@ func (x *GenerateProgramRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateProgramRequest.ProtoReflect.Descriptor instead. func (*GenerateProgramRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{17} + return file_pulumi_language_proto_rawDescGZIP(), []int{19} } func (x *GenerateProgramRequest) GetSource() map[string]string { @@ -1373,7 +1467,7 @@ type GenerateProgramResponse struct { func (x *GenerateProgramResponse) Reset() { *x = GenerateProgramResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[18] + mi := &file_pulumi_language_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1386,7 +1480,7 @@ func (x *GenerateProgramResponse) String() string { func (*GenerateProgramResponse) ProtoMessage() {} func (x *GenerateProgramResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[18] + mi := &file_pulumi_language_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1399,7 +1493,7 @@ func (x *GenerateProgramResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateProgramResponse.ProtoReflect.Descriptor instead. func (*GenerateProgramResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{18} + return file_pulumi_language_proto_rawDescGZIP(), []int{20} } func (x *GenerateProgramResponse) GetDiagnostics() []*codegen.Diagnostic { @@ -1439,7 +1533,7 @@ type GenerateProjectRequest struct { func (x *GenerateProjectRequest) Reset() { *x = GenerateProjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[19] + mi := &file_pulumi_language_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1452,7 +1546,7 @@ func (x *GenerateProjectRequest) String() string { func (*GenerateProjectRequest) ProtoMessage() {} func (x *GenerateProjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[19] + mi := &file_pulumi_language_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1465,7 +1559,7 @@ func (x *GenerateProjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateProjectRequest.ProtoReflect.Descriptor instead. func (*GenerateProjectRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{19} + return file_pulumi_language_proto_rawDescGZIP(), []int{21} } func (x *GenerateProjectRequest) GetSourceDirectory() string { @@ -1522,7 +1616,7 @@ type GenerateProjectResponse struct { func (x *GenerateProjectResponse) Reset() { *x = GenerateProjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[20] + mi := &file_pulumi_language_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1535,7 +1629,7 @@ func (x *GenerateProjectResponse) String() string { func (*GenerateProjectResponse) ProtoMessage() {} func (x *GenerateProjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[20] + mi := &file_pulumi_language_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1548,7 +1642,7 @@ func (x *GenerateProjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateProjectResponse.ProtoReflect.Descriptor instead. func (*GenerateProjectResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{20} + return file_pulumi_language_proto_rawDescGZIP(), []int{22} } func (x *GenerateProjectResponse) GetDiagnostics() []*codegen.Diagnostic { @@ -1582,7 +1676,7 @@ type GeneratePackageRequest struct { func (x *GeneratePackageRequest) Reset() { *x = GeneratePackageRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[21] + mi := &file_pulumi_language_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1595,7 +1689,7 @@ func (x *GeneratePackageRequest) String() string { func (*GeneratePackageRequest) ProtoMessage() {} func (x *GeneratePackageRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[21] + mi := &file_pulumi_language_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1608,7 +1702,7 @@ func (x *GeneratePackageRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GeneratePackageRequest.ProtoReflect.Descriptor instead. func (*GeneratePackageRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{21} + return file_pulumi_language_proto_rawDescGZIP(), []int{23} } func (x *GeneratePackageRequest) GetDirectory() string { @@ -1665,7 +1759,7 @@ type GeneratePackageResponse struct { func (x *GeneratePackageResponse) Reset() { *x = GeneratePackageResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[22] + mi := &file_pulumi_language_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1678,7 +1772,7 @@ func (x *GeneratePackageResponse) String() string { func (*GeneratePackageResponse) ProtoMessage() {} func (x *GeneratePackageResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[22] + mi := &file_pulumi_language_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1691,7 +1785,7 @@ func (x *GeneratePackageResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GeneratePackageResponse.ProtoReflect.Descriptor instead. func (*GeneratePackageResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{22} + return file_pulumi_language_proto_rawDescGZIP(), []int{24} } func (x *GeneratePackageResponse) GetDiagnostics() []*codegen.Diagnostic { @@ -1715,7 +1809,7 @@ type PackRequest struct { func (x *PackRequest) Reset() { *x = PackRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[23] + mi := &file_pulumi_language_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1728,7 +1822,7 @@ func (x *PackRequest) String() string { func (*PackRequest) ProtoMessage() {} func (x *PackRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[23] + mi := &file_pulumi_language_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1741,7 +1835,7 @@ func (x *PackRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PackRequest.ProtoReflect.Descriptor instead. func (*PackRequest) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{23} + return file_pulumi_language_proto_rawDescGZIP(), []int{25} } func (x *PackRequest) GetPackageDirectory() string { @@ -1770,7 +1864,7 @@ type PackResponse struct { func (x *PackResponse) Reset() { *x = PackResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[24] + mi := &file_pulumi_language_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1783,7 +1877,7 @@ func (x *PackResponse) String() string { func (*PackResponse) ProtoMessage() {} func (x *PackResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[24] + mi := &file_pulumi_language_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1796,7 +1890,7 @@ func (x *PackResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PackResponse.ProtoReflect.Descriptor instead. func (*PackResponse) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{24} + return file_pulumi_language_proto_rawDescGZIP(), []int{26} } func (x *PackResponse) GetArtifactPath() string { @@ -1806,6 +1900,113 @@ func (x *PackResponse) GetArtifactPath() string { return "" } +type LanguageHandshakeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The grpc address for the engine. + EngineAddress string `protobuf:"bytes,1,opt,name=engine_address,json=engineAddress,proto3" json:"engine_address,omitempty"` + // The optional root directory, where the `PulumiPlugin.yaml` file or language binary is located. + // This can't be sent when the engine is attaching to a language via a port number. + RootDirectory *string `protobuf:"bytes,2,opt,name=root_directory,json=rootDirectory,proto3,oneof" json:"root_directory,omitempty"` + // The optional absolute path to the directory of the language program to execute. Generally, but not + // required to be, underneath the root directory. This can't be sent when the engine is attaching to a + // language via a port number. + ProgramDirectory *string `protobuf:"bytes,3,opt,name=program_directory,json=programDirectory,proto3,oneof" json:"program_directory,omitempty"` +} + +func (x *LanguageHandshakeRequest) Reset() { + *x = LanguageHandshakeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_language_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LanguageHandshakeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageHandshakeRequest) ProtoMessage() {} + +func (x *LanguageHandshakeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_language_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageHandshakeRequest.ProtoReflect.Descriptor instead. +func (*LanguageHandshakeRequest) Descriptor() ([]byte, []int) { + return file_pulumi_language_proto_rawDescGZIP(), []int{27} +} + +func (x *LanguageHandshakeRequest) GetEngineAddress() string { + if x != nil { + return x.EngineAddress + } + return "" +} + +func (x *LanguageHandshakeRequest) GetRootDirectory() string { + if x != nil && x.RootDirectory != nil { + return *x.RootDirectory + } + return "" +} + +func (x *LanguageHandshakeRequest) GetProgramDirectory() string { + if x != nil && x.ProgramDirectory != nil { + return *x.ProgramDirectory + } + return "" +} + +type LanguageHandshakeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *LanguageHandshakeResponse) Reset() { + *x = LanguageHandshakeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_language_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LanguageHandshakeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LanguageHandshakeResponse) ProtoMessage() {} + +func (x *LanguageHandshakeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_language_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LanguageHandshakeResponse.ProtoReflect.Descriptor instead. +func (*LanguageHandshakeResponse) Descriptor() ([]byte, []int) { + return file_pulumi_language_proto_rawDescGZIP(), []int{28} +} + type RuntimeOptionPrompt_RuntimeOptionValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1820,7 +2021,7 @@ type RuntimeOptionPrompt_RuntimeOptionValue struct { func (x *RuntimeOptionPrompt_RuntimeOptionValue) Reset() { *x = RuntimeOptionPrompt_RuntimeOptionValue{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_language_proto_msgTypes[27] + mi := &file_pulumi_language_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1833,7 +2034,7 @@ func (x *RuntimeOptionPrompt_RuntimeOptionValue) String() string { func (*RuntimeOptionPrompt_RuntimeOptionValue) ProtoMessage() {} func (x *RuntimeOptionPrompt_RuntimeOptionValue) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_language_proto_msgTypes[27] + mi := &file_pulumi_language_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1846,7 +2047,7 @@ func (x *RuntimeOptionPrompt_RuntimeOptionValue) ProtoReflect() protoreflect.Mes // Deprecated: Use RuntimeOptionPrompt_RuntimeOptionValue.ProtoReflect.Descriptor instead. func (*RuntimeOptionPrompt_RuntimeOptionValue) Descriptor() ([]byte, []int) { - return file_pulumi_language_proto_rawDescGZIP(), []int{13, 0} + return file_pulumi_language_proto_rawDescGZIP(), []int{15, 0} } func (x *RuntimeOptionPrompt_RuntimeOptionValue) GetPromptType() RuntimeOptionPrompt_RuntimeOptionType { @@ -1955,238 +2156,275 @@ var file_pulumi_language_proto_rawDesc = []byte{ 0x12, 0x35, 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x07, - 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x82, 0x05, 0x0a, 0x0a, 0x52, 0x75, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x77, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x77, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x39, 0x0a, 0x06, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x75, 0x6c, - 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, 0x64, 0x65, - 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, - 0x4b, 0x65, 0x79, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x22, 0x0a, 0x0c, - 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x45, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x79, 0x4d, 0x61, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, - 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, - 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, - 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x61, - 0x63, 0x68, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x44, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, - 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x0b, - 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x04, 0x62, 0x61, 0x69, 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x1a, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, - 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x54, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, - 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, - 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x1a, 0x75, 0x73, 0x65, 0x5f, 0x6c, 0x61, 0x6e, 0x67, 0x75, - 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6f, 0x6c, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x75, 0x73, 0x65, 0x4c, 0x61, 0x6e, 0x67, - 0x75, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6f, 0x6c, 0x73, - 0x22, 0x4d, 0x0a, 0x1b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x22, - 0x43, 0x0a, 0x15, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, - 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, - 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xae, 0x04, 0x0a, 0x13, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, - 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, - 0x6f, 0x6d, 0x70, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, - 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, - 0x6d, 0x70, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x4b, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, - 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0xca, 0x01, 0x0a, - 0x12, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, + 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x22, 0x48, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, + 0x6f, 0x22, 0x57, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, + 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x38, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, + 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x82, 0x05, 0x0a, 0x0a, 0x52, + 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x77, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x77, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x70, + 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x39, 0x0a, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x79, 0x52, + 0x75, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x12, 0x27, 0x0a, 0x0f, + 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x6f, + 0x64, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4d, + 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, + 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4d, 0x61, 0x70, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, + 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, + 0x6f, 0x61, 0x64, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x61, + 0x74, 0x74, 0x61, 0x63, 0x68, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x18, 0x10, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x44, 0x65, 0x62, 0x75, + 0x67, 0x67, 0x65, 0x72, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x37, 0x0a, 0x0b, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x04, 0x62, 0x61, 0x69, 0x6c, 0x22, 0xc8, 0x01, 0x0a, 0x1a, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6c, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, + 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, + 0x69, 0x73, 0x54, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x61, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, + 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, + 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3b, 0x0a, 0x1a, 0x75, 0x73, 0x65, 0x5f, 0x6c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, 0x75, 0x73, 0x65, 0x4c, + 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x54, 0x6f, + 0x6f, 0x6c, 0x73, 0x22, 0x4d, 0x0a, 0x1b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x64, 0x65, 0x72, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x74, 0x64, 0x65, + 0x72, 0x72, 0x22, 0x43, 0x0a, 0x15, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x69, + 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, + 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x22, 0xae, 0x04, 0x0a, 0x13, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x6e, 0x74, - 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, - 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x11, 0x52, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, - 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x4e, - 0x54, 0x33, 0x32, 0x10, 0x01, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x38, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x22, 0x94, 0x01, 0x0a, 0x10, 0x52, 0x75, - 0x6e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x70, 0x77, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x70, 0x77, 0x64, - 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x12, - 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, - 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x03, 0x65, 0x6e, 0x76, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, - 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, - 0x22, 0x6f, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x64, 0x6f, 0x75, 0x74, 0x12, - 0x18, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x48, - 0x00, 0x52, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x12, 0x1c, 0x0a, 0x08, 0x65, 0x78, 0x69, - 0x74, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x08, 0x65, - 0x78, 0x69, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x45, 0x0a, 0x06, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, - 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x07, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, + 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, + 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x63, 0x68, 0x6f, 0x69, 0x63, + 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x1a, + 0xca, 0x01, 0x0a, 0x12, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x75, 0x6c, + 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x70, 0x72, + 0x6f, 0x6d, 0x70, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, + 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, + 0x69, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2a, 0x0a, 0x11, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x09, 0x0a, + 0x05, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x01, 0x22, 0x52, 0x0a, 0x16, 0x52, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, + 0x6d, 0x70, 0x74, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6d, 0x70, 0x74, 0x73, 0x22, 0x94, 0x01, 0x0a, + 0x10, 0x52, 0x75, 0x6e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x77, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x70, 0x77, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, + 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18, 0x04, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x76, 0x12, 0x2a, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, + 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, + 0x6e, 0x66, 0x6f, 0x22, 0x6f, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x6f, + 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x64, 0x6f, + 0x75, 0x74, 0x12, 0x18, 0x0a, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0c, 0x48, 0x00, 0x52, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x12, 0x1c, 0x0a, 0x08, + 0x65, 0x78, 0x69, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, + 0x52, 0x08, 0x65, 0x78, 0x69, 0x74, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x22, 0xd7, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x45, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, + 0x6f, 0x61, 0x64, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdd, + 0x01, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x69, + 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x67, 0x65, 0x6e, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x46, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x75, + 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, - 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdd, 0x01, 0x0a, 0x17, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, - 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, - 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, 0x64, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x46, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf4, 0x02, 0x0a, 0x16, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x79, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, - 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x12, 0x23, - 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x12, 0x67, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x38, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, - 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, - 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x1a, 0x44, 0x0a, 0x16, - 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, - 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x63, - 0x6f, 0x64, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, - 0x63, 0x52, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0xcb, - 0x03, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, - 0x52, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, - 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x67, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, - 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, - 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, - 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x1a, 0x3d, 0x0a, 0x0f, 0x45, 0x78, 0x74, 0x72, 0x61, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x17, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, - 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, - 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x67, 0x65, 0x6e, - 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, 0x64, 0x69, 0x61, - 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0x6f, 0x0a, 0x0b, 0x50, 0x61, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x63, 0x6b, 0x61, - 0x67, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x79, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x33, 0x0a, 0x0c, 0x50, 0x61, 0x63, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x72, 0x74, - 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x50, 0x61, 0x74, 0x68, 0x32, 0x84, - 0x08, 0x0a, 0x0f, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x12, 0x63, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, - 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, - 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x72, 0x63, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf4, + 0x02, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x44, 0x69, 0x72, 0x65, 0x63, + 0x74, 0x6f, 0x72, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, + 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, + 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, + 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x67, 0x0a, 0x12, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x5f, + 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6c, 0x6f, + 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x1a, + 0x44, 0x0a, 0x16, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5a, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, + 0x63, 0x2e, 0x63, 0x6f, 0x64, 0x65, 0x67, 0x65, 0x6e, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, + 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x22, 0xcb, 0x03, 0x0a, 0x16, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x12, 0x52, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, + 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x72, + 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x72, + 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, + 0x6f, 0x61, 0x64, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x67, 0x0a, 0x12, 0x6c, + 0x6f, 0x63, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x63, 0x69, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x1a, 0x3d, 0x0a, 0x0f, 0x45, 0x78, + 0x74, 0x72, 0x61, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4c, 0x6f, 0x63, + 0x61, 0x6c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x5a, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x50, 0x61, 0x63, 0x6b, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0b, 0x64, 0x69, + 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x63, 0x6f, 0x64, 0x65, + 0x67, 0x65, 0x6e, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0x6f, 0x0a, 0x0b, 0x50, + 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x33, 0x0a, 0x15, 0x64, 0x65, 0x73, 0x74, 0x69, + 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x33, 0x0a, 0x0c, + 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, + 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x74, 0x69, 0x66, 0x61, 0x63, 0x74, 0x50, 0x61, 0x74, + 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x18, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x48, 0x61, + 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, + 0x0a, 0x0e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, + 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, 0x01, + 0x01, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x10, + 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, + 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x61, 0x6d, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x1b, 0x0a, 0x19, + 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xc9, 0x09, 0x0a, 0x0f, 0x4c, 0x61, + 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, + 0x09, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, 0x23, 0x2e, 0x70, 0x75, 0x6c, + 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x48, + 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x4c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x24, 0x2e, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x6c, 0x75, 0x67, 0x69, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x12, + 0x66, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x61, + 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x69, 0x72, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x36, 0x0a, 0x03, 0x52, 0x75, 0x6e, 0x12, 0x15, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x75, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, @@ -2264,7 +2502,7 @@ func file_pulumi_language_proto_rawDescGZIP() []byte { } var file_pulumi_language_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_pulumi_language_proto_msgTypes = make([]protoimpl.MessageInfo, 33) +var file_pulumi_language_proto_msgTypes = make([]protoimpl.MessageInfo, 37) var file_pulumi_language_proto_goTypes = []interface{}{ (RuntimeOptionPrompt_RuntimeOptionType)(0), // 0: pulumirpc.RuntimeOptionPrompt.RuntimeOptionType (*ProgramInfo)(nil), // 1: pulumirpc.ProgramInfo @@ -2275,93 +2513,104 @@ var file_pulumi_language_proto_goTypes = []interface{}{ (*GetProgramDependenciesResponse)(nil), // 6: pulumirpc.GetProgramDependenciesResponse (*GetRequiredPluginsRequest)(nil), // 7: pulumirpc.GetRequiredPluginsRequest (*GetRequiredPluginsResponse)(nil), // 8: pulumirpc.GetRequiredPluginsResponse - (*RunRequest)(nil), // 9: pulumirpc.RunRequest - (*RunResponse)(nil), // 10: pulumirpc.RunResponse - (*InstallDependenciesRequest)(nil), // 11: pulumirpc.InstallDependenciesRequest - (*InstallDependenciesResponse)(nil), // 12: pulumirpc.InstallDependenciesResponse - (*RuntimeOptionsRequest)(nil), // 13: pulumirpc.RuntimeOptionsRequest - (*RuntimeOptionPrompt)(nil), // 14: pulumirpc.RuntimeOptionPrompt - (*RuntimeOptionsResponse)(nil), // 15: pulumirpc.RuntimeOptionsResponse - (*RunPluginRequest)(nil), // 16: pulumirpc.RunPluginRequest - (*RunPluginResponse)(nil), // 17: pulumirpc.RunPluginResponse - (*GenerateProgramRequest)(nil), // 18: pulumirpc.GenerateProgramRequest - (*GenerateProgramResponse)(nil), // 19: pulumirpc.GenerateProgramResponse - (*GenerateProjectRequest)(nil), // 20: pulumirpc.GenerateProjectRequest - (*GenerateProjectResponse)(nil), // 21: pulumirpc.GenerateProjectResponse - (*GeneratePackageRequest)(nil), // 22: pulumirpc.GeneratePackageRequest - (*GeneratePackageResponse)(nil), // 23: pulumirpc.GeneratePackageResponse - (*PackRequest)(nil), // 24: pulumirpc.PackRequest - (*PackResponse)(nil), // 25: pulumirpc.PackResponse - nil, // 26: pulumirpc.AboutResponse.MetadataEntry - nil, // 27: pulumirpc.RunRequest.ConfigEntry - (*RuntimeOptionPrompt_RuntimeOptionValue)(nil), // 28: pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue - nil, // 29: pulumirpc.GenerateProgramRequest.SourceEntry - nil, // 30: pulumirpc.GenerateProgramResponse.SourceEntry - nil, // 31: pulumirpc.GenerateProjectRequest.LocalDependenciesEntry - nil, // 32: pulumirpc.GeneratePackageRequest.ExtraFilesEntry - nil, // 33: pulumirpc.GeneratePackageRequest.LocalDependenciesEntry - (*structpb.Struct)(nil), // 34: google.protobuf.Struct - (*PluginDependency)(nil), // 35: pulumirpc.PluginDependency - (*codegen.Diagnostic)(nil), // 36: pulumirpc.codegen.Diagnostic - (*emptypb.Empty)(nil), // 37: google.protobuf.Empty - (*PluginInfo)(nil), // 38: pulumirpc.PluginInfo + (*GetRequiredPackagesRequest)(nil), // 9: pulumirpc.GetRequiredPackagesRequest + (*GetRequiredPackagesResponse)(nil), // 10: pulumirpc.GetRequiredPackagesResponse + (*RunRequest)(nil), // 11: pulumirpc.RunRequest + (*RunResponse)(nil), // 12: pulumirpc.RunResponse + (*InstallDependenciesRequest)(nil), // 13: pulumirpc.InstallDependenciesRequest + (*InstallDependenciesResponse)(nil), // 14: pulumirpc.InstallDependenciesResponse + (*RuntimeOptionsRequest)(nil), // 15: pulumirpc.RuntimeOptionsRequest + (*RuntimeOptionPrompt)(nil), // 16: pulumirpc.RuntimeOptionPrompt + (*RuntimeOptionsResponse)(nil), // 17: pulumirpc.RuntimeOptionsResponse + (*RunPluginRequest)(nil), // 18: pulumirpc.RunPluginRequest + (*RunPluginResponse)(nil), // 19: pulumirpc.RunPluginResponse + (*GenerateProgramRequest)(nil), // 20: pulumirpc.GenerateProgramRequest + (*GenerateProgramResponse)(nil), // 21: pulumirpc.GenerateProgramResponse + (*GenerateProjectRequest)(nil), // 22: pulumirpc.GenerateProjectRequest + (*GenerateProjectResponse)(nil), // 23: pulumirpc.GenerateProjectResponse + (*GeneratePackageRequest)(nil), // 24: pulumirpc.GeneratePackageRequest + (*GeneratePackageResponse)(nil), // 25: pulumirpc.GeneratePackageResponse + (*PackRequest)(nil), // 26: pulumirpc.PackRequest + (*PackResponse)(nil), // 27: pulumirpc.PackResponse + (*LanguageHandshakeRequest)(nil), // 28: pulumirpc.LanguageHandshakeRequest + (*LanguageHandshakeResponse)(nil), // 29: pulumirpc.LanguageHandshakeResponse + nil, // 30: pulumirpc.AboutResponse.MetadataEntry + nil, // 31: pulumirpc.RunRequest.ConfigEntry + (*RuntimeOptionPrompt_RuntimeOptionValue)(nil), // 32: pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue + nil, // 33: pulumirpc.GenerateProgramRequest.SourceEntry + nil, // 34: pulumirpc.GenerateProgramResponse.SourceEntry + nil, // 35: pulumirpc.GenerateProjectRequest.LocalDependenciesEntry + nil, // 36: pulumirpc.GeneratePackageRequest.ExtraFilesEntry + nil, // 37: pulumirpc.GeneratePackageRequest.LocalDependenciesEntry + (*structpb.Struct)(nil), // 38: google.protobuf.Struct + (*PluginDependency)(nil), // 39: pulumirpc.PluginDependency + (*PackageDependency)(nil), // 40: pulumirpc.PackageDependency + (*codegen.Diagnostic)(nil), // 41: pulumirpc.codegen.Diagnostic + (*emptypb.Empty)(nil), // 42: google.protobuf.Empty + (*PluginInfo)(nil), // 43: pulumirpc.PluginInfo } var file_pulumi_language_proto_depIdxs = []int32{ - 34, // 0: pulumirpc.ProgramInfo.options:type_name -> google.protobuf.Struct + 38, // 0: pulumirpc.ProgramInfo.options:type_name -> google.protobuf.Struct 1, // 1: pulumirpc.AboutRequest.info:type_name -> pulumirpc.ProgramInfo - 26, // 2: pulumirpc.AboutResponse.metadata:type_name -> pulumirpc.AboutResponse.MetadataEntry + 30, // 2: pulumirpc.AboutResponse.metadata:type_name -> pulumirpc.AboutResponse.MetadataEntry 1, // 3: pulumirpc.GetProgramDependenciesRequest.info:type_name -> pulumirpc.ProgramInfo 5, // 4: pulumirpc.GetProgramDependenciesResponse.dependencies:type_name -> pulumirpc.DependencyInfo 1, // 5: pulumirpc.GetRequiredPluginsRequest.info:type_name -> pulumirpc.ProgramInfo - 35, // 6: pulumirpc.GetRequiredPluginsResponse.plugins:type_name -> pulumirpc.PluginDependency - 27, // 7: pulumirpc.RunRequest.config:type_name -> pulumirpc.RunRequest.ConfigEntry - 34, // 8: pulumirpc.RunRequest.configPropertyMap:type_name -> google.protobuf.Struct - 1, // 9: pulumirpc.RunRequest.info:type_name -> pulumirpc.ProgramInfo - 1, // 10: pulumirpc.InstallDependenciesRequest.info:type_name -> pulumirpc.ProgramInfo - 1, // 11: pulumirpc.RuntimeOptionsRequest.info:type_name -> pulumirpc.ProgramInfo - 0, // 12: pulumirpc.RuntimeOptionPrompt.promptType:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionType - 28, // 13: pulumirpc.RuntimeOptionPrompt.choices:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue - 28, // 14: pulumirpc.RuntimeOptionPrompt.default:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue - 14, // 15: pulumirpc.RuntimeOptionsResponse.prompts:type_name -> pulumirpc.RuntimeOptionPrompt - 1, // 16: pulumirpc.RunPluginRequest.info:type_name -> pulumirpc.ProgramInfo - 29, // 17: pulumirpc.GenerateProgramRequest.source:type_name -> pulumirpc.GenerateProgramRequest.SourceEntry - 36, // 18: pulumirpc.GenerateProgramResponse.diagnostics:type_name -> pulumirpc.codegen.Diagnostic - 30, // 19: pulumirpc.GenerateProgramResponse.source:type_name -> pulumirpc.GenerateProgramResponse.SourceEntry - 31, // 20: pulumirpc.GenerateProjectRequest.local_dependencies:type_name -> pulumirpc.GenerateProjectRequest.LocalDependenciesEntry - 36, // 21: pulumirpc.GenerateProjectResponse.diagnostics:type_name -> pulumirpc.codegen.Diagnostic - 32, // 22: pulumirpc.GeneratePackageRequest.extra_files:type_name -> pulumirpc.GeneratePackageRequest.ExtraFilesEntry - 33, // 23: pulumirpc.GeneratePackageRequest.local_dependencies:type_name -> pulumirpc.GeneratePackageRequest.LocalDependenciesEntry - 36, // 24: pulumirpc.GeneratePackageResponse.diagnostics:type_name -> pulumirpc.codegen.Diagnostic - 0, // 25: pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue.promptType:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionType - 7, // 26: pulumirpc.LanguageRuntime.GetRequiredPlugins:input_type -> pulumirpc.GetRequiredPluginsRequest - 9, // 27: pulumirpc.LanguageRuntime.Run:input_type -> pulumirpc.RunRequest - 37, // 28: pulumirpc.LanguageRuntime.GetPluginInfo:input_type -> google.protobuf.Empty - 11, // 29: pulumirpc.LanguageRuntime.InstallDependencies:input_type -> pulumirpc.InstallDependenciesRequest - 13, // 30: pulumirpc.LanguageRuntime.RuntimeOptionsPrompts:input_type -> pulumirpc.RuntimeOptionsRequest - 2, // 31: pulumirpc.LanguageRuntime.About:input_type -> pulumirpc.AboutRequest - 4, // 32: pulumirpc.LanguageRuntime.GetProgramDependencies:input_type -> pulumirpc.GetProgramDependenciesRequest - 16, // 33: pulumirpc.LanguageRuntime.RunPlugin:input_type -> pulumirpc.RunPluginRequest - 18, // 34: pulumirpc.LanguageRuntime.GenerateProgram:input_type -> pulumirpc.GenerateProgramRequest - 20, // 35: pulumirpc.LanguageRuntime.GenerateProject:input_type -> pulumirpc.GenerateProjectRequest - 22, // 36: pulumirpc.LanguageRuntime.GeneratePackage:input_type -> pulumirpc.GeneratePackageRequest - 24, // 37: pulumirpc.LanguageRuntime.Pack:input_type -> pulumirpc.PackRequest - 8, // 38: pulumirpc.LanguageRuntime.GetRequiredPlugins:output_type -> pulumirpc.GetRequiredPluginsResponse - 10, // 39: pulumirpc.LanguageRuntime.Run:output_type -> pulumirpc.RunResponse - 38, // 40: pulumirpc.LanguageRuntime.GetPluginInfo:output_type -> pulumirpc.PluginInfo - 12, // 41: pulumirpc.LanguageRuntime.InstallDependencies:output_type -> pulumirpc.InstallDependenciesResponse - 15, // 42: pulumirpc.LanguageRuntime.RuntimeOptionsPrompts:output_type -> pulumirpc.RuntimeOptionsResponse - 3, // 43: pulumirpc.LanguageRuntime.About:output_type -> pulumirpc.AboutResponse - 6, // 44: pulumirpc.LanguageRuntime.GetProgramDependencies:output_type -> pulumirpc.GetProgramDependenciesResponse - 17, // 45: pulumirpc.LanguageRuntime.RunPlugin:output_type -> pulumirpc.RunPluginResponse - 19, // 46: pulumirpc.LanguageRuntime.GenerateProgram:output_type -> pulumirpc.GenerateProgramResponse - 21, // 47: pulumirpc.LanguageRuntime.GenerateProject:output_type -> pulumirpc.GenerateProjectResponse - 23, // 48: pulumirpc.LanguageRuntime.GeneratePackage:output_type -> pulumirpc.GeneratePackageResponse - 25, // 49: pulumirpc.LanguageRuntime.Pack:output_type -> pulumirpc.PackResponse - 38, // [38:50] is the sub-list for method output_type - 26, // [26:38] is the sub-list for method input_type - 26, // [26:26] is the sub-list for extension type_name - 26, // [26:26] is the sub-list for extension extendee - 0, // [0:26] is the sub-list for field type_name + 39, // 6: pulumirpc.GetRequiredPluginsResponse.plugins:type_name -> pulumirpc.PluginDependency + 1, // 7: pulumirpc.GetRequiredPackagesRequest.info:type_name -> pulumirpc.ProgramInfo + 40, // 8: pulumirpc.GetRequiredPackagesResponse.packages:type_name -> pulumirpc.PackageDependency + 31, // 9: pulumirpc.RunRequest.config:type_name -> pulumirpc.RunRequest.ConfigEntry + 38, // 10: pulumirpc.RunRequest.configPropertyMap:type_name -> google.protobuf.Struct + 1, // 11: pulumirpc.RunRequest.info:type_name -> pulumirpc.ProgramInfo + 1, // 12: pulumirpc.InstallDependenciesRequest.info:type_name -> pulumirpc.ProgramInfo + 1, // 13: pulumirpc.RuntimeOptionsRequest.info:type_name -> pulumirpc.ProgramInfo + 0, // 14: pulumirpc.RuntimeOptionPrompt.promptType:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionType + 32, // 15: pulumirpc.RuntimeOptionPrompt.choices:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue + 32, // 16: pulumirpc.RuntimeOptionPrompt.default:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue + 16, // 17: pulumirpc.RuntimeOptionsResponse.prompts:type_name -> pulumirpc.RuntimeOptionPrompt + 1, // 18: pulumirpc.RunPluginRequest.info:type_name -> pulumirpc.ProgramInfo + 33, // 19: pulumirpc.GenerateProgramRequest.source:type_name -> pulumirpc.GenerateProgramRequest.SourceEntry + 41, // 20: pulumirpc.GenerateProgramResponse.diagnostics:type_name -> pulumirpc.codegen.Diagnostic + 34, // 21: pulumirpc.GenerateProgramResponse.source:type_name -> pulumirpc.GenerateProgramResponse.SourceEntry + 35, // 22: pulumirpc.GenerateProjectRequest.local_dependencies:type_name -> pulumirpc.GenerateProjectRequest.LocalDependenciesEntry + 41, // 23: pulumirpc.GenerateProjectResponse.diagnostics:type_name -> pulumirpc.codegen.Diagnostic + 36, // 24: pulumirpc.GeneratePackageRequest.extra_files:type_name -> pulumirpc.GeneratePackageRequest.ExtraFilesEntry + 37, // 25: pulumirpc.GeneratePackageRequest.local_dependencies:type_name -> pulumirpc.GeneratePackageRequest.LocalDependenciesEntry + 41, // 26: pulumirpc.GeneratePackageResponse.diagnostics:type_name -> pulumirpc.codegen.Diagnostic + 0, // 27: pulumirpc.RuntimeOptionPrompt.RuntimeOptionValue.promptType:type_name -> pulumirpc.RuntimeOptionPrompt.RuntimeOptionType + 28, // 28: pulumirpc.LanguageRuntime.Handshake:input_type -> pulumirpc.LanguageHandshakeRequest + 7, // 29: pulumirpc.LanguageRuntime.GetRequiredPlugins:input_type -> pulumirpc.GetRequiredPluginsRequest + 9, // 30: pulumirpc.LanguageRuntime.GetRequiredPackages:input_type -> pulumirpc.GetRequiredPackagesRequest + 11, // 31: pulumirpc.LanguageRuntime.Run:input_type -> pulumirpc.RunRequest + 42, // 32: pulumirpc.LanguageRuntime.GetPluginInfo:input_type -> google.protobuf.Empty + 13, // 33: pulumirpc.LanguageRuntime.InstallDependencies:input_type -> pulumirpc.InstallDependenciesRequest + 15, // 34: pulumirpc.LanguageRuntime.RuntimeOptionsPrompts:input_type -> pulumirpc.RuntimeOptionsRequest + 2, // 35: pulumirpc.LanguageRuntime.About:input_type -> pulumirpc.AboutRequest + 4, // 36: pulumirpc.LanguageRuntime.GetProgramDependencies:input_type -> pulumirpc.GetProgramDependenciesRequest + 18, // 37: pulumirpc.LanguageRuntime.RunPlugin:input_type -> pulumirpc.RunPluginRequest + 20, // 38: pulumirpc.LanguageRuntime.GenerateProgram:input_type -> pulumirpc.GenerateProgramRequest + 22, // 39: pulumirpc.LanguageRuntime.GenerateProject:input_type -> pulumirpc.GenerateProjectRequest + 24, // 40: pulumirpc.LanguageRuntime.GeneratePackage:input_type -> pulumirpc.GeneratePackageRequest + 26, // 41: pulumirpc.LanguageRuntime.Pack:input_type -> pulumirpc.PackRequest + 29, // 42: pulumirpc.LanguageRuntime.Handshake:output_type -> pulumirpc.LanguageHandshakeResponse + 8, // 43: pulumirpc.LanguageRuntime.GetRequiredPlugins:output_type -> pulumirpc.GetRequiredPluginsResponse + 10, // 44: pulumirpc.LanguageRuntime.GetRequiredPackages:output_type -> pulumirpc.GetRequiredPackagesResponse + 12, // 45: pulumirpc.LanguageRuntime.Run:output_type -> pulumirpc.RunResponse + 43, // 46: pulumirpc.LanguageRuntime.GetPluginInfo:output_type -> pulumirpc.PluginInfo + 14, // 47: pulumirpc.LanguageRuntime.InstallDependencies:output_type -> pulumirpc.InstallDependenciesResponse + 17, // 48: pulumirpc.LanguageRuntime.RuntimeOptionsPrompts:output_type -> pulumirpc.RuntimeOptionsResponse + 3, // 49: pulumirpc.LanguageRuntime.About:output_type -> pulumirpc.AboutResponse + 6, // 50: pulumirpc.LanguageRuntime.GetProgramDependencies:output_type -> pulumirpc.GetProgramDependenciesResponse + 19, // 51: pulumirpc.LanguageRuntime.RunPlugin:output_type -> pulumirpc.RunPluginResponse + 21, // 52: pulumirpc.LanguageRuntime.GenerateProgram:output_type -> pulumirpc.GenerateProgramResponse + 23, // 53: pulumirpc.LanguageRuntime.GenerateProject:output_type -> pulumirpc.GenerateProjectResponse + 25, // 54: pulumirpc.LanguageRuntime.GeneratePackage:output_type -> pulumirpc.GeneratePackageResponse + 27, // 55: pulumirpc.LanguageRuntime.Pack:output_type -> pulumirpc.PackResponse + 42, // [42:56] is the sub-list for method output_type + 28, // [28:42] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_pulumi_language_proto_init() } @@ -2468,7 +2717,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunRequest); i { + switch v := v.(*GetRequiredPackagesRequest); i { case 0: return &v.state case 1: @@ -2480,7 +2729,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunResponse); i { + switch v := v.(*GetRequiredPackagesResponse); i { case 0: return &v.state case 1: @@ -2492,7 +2741,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InstallDependenciesRequest); i { + switch v := v.(*RunRequest); i { case 0: return &v.state case 1: @@ -2504,7 +2753,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InstallDependenciesResponse); i { + switch v := v.(*RunResponse); i { case 0: return &v.state case 1: @@ -2516,7 +2765,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeOptionsRequest); i { + switch v := v.(*InstallDependenciesRequest); i { case 0: return &v.state case 1: @@ -2528,7 +2777,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeOptionPrompt); i { + switch v := v.(*InstallDependenciesResponse); i { case 0: return &v.state case 1: @@ -2540,7 +2789,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RuntimeOptionsResponse); i { + switch v := v.(*RuntimeOptionsRequest); i { case 0: return &v.state case 1: @@ -2552,7 +2801,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunPluginRequest); i { + switch v := v.(*RuntimeOptionPrompt); i { case 0: return &v.state case 1: @@ -2564,7 +2813,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RunPluginResponse); i { + switch v := v.(*RuntimeOptionsResponse); i { case 0: return &v.state case 1: @@ -2576,7 +2825,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateProgramRequest); i { + switch v := v.(*RunPluginRequest); i { case 0: return &v.state case 1: @@ -2588,7 +2837,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateProgramResponse); i { + switch v := v.(*RunPluginResponse); i { case 0: return &v.state case 1: @@ -2600,7 +2849,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateProjectRequest); i { + switch v := v.(*GenerateProgramRequest); i { case 0: return &v.state case 1: @@ -2612,7 +2861,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GenerateProjectResponse); i { + switch v := v.(*GenerateProgramResponse); i { case 0: return &v.state case 1: @@ -2624,7 +2873,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeneratePackageRequest); i { + switch v := v.(*GenerateProjectRequest); i { case 0: return &v.state case 1: @@ -2636,7 +2885,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeneratePackageResponse); i { + switch v := v.(*GenerateProjectResponse); i { case 0: return &v.state case 1: @@ -2648,7 +2897,7 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PackRequest); i { + switch v := v.(*GeneratePackageRequest); i { case 0: return &v.state case 1: @@ -2660,6 +2909,30 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GeneratePackageResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pulumi_language_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pulumi_language_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PackResponse); i { case 0: return &v.state @@ -2672,6 +2945,30 @@ func file_pulumi_language_proto_init() { } } file_pulumi_language_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LanguageHandshakeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pulumi_language_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LanguageHandshakeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pulumi_language_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RuntimeOptionPrompt_RuntimeOptionValue); i { case 0: return &v.state @@ -2684,18 +2981,19 @@ func file_pulumi_language_proto_init() { } } } - file_pulumi_language_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_pulumi_language_proto_msgTypes[18].OneofWrappers = []interface{}{ (*RunPluginResponse_Stdout)(nil), (*RunPluginResponse_Stderr)(nil), (*RunPluginResponse_Exitcode)(nil), } + file_pulumi_language_proto_msgTypes[27].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pulumi_language_proto_rawDesc, NumEnums: 1, - NumMessages: 33, + NumMessages: 37, NumExtensions: 0, NumServices: 1, }, diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language_grpc.pb.go b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language_grpc.pb.go index 7bacb9408..2cdfe34b7 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language_grpc.pb.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/language_grpc.pb.go @@ -23,8 +23,15 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type LanguageRuntimeClient interface { + // `Handshake` is the first call made by the engine to a language host. It is used to pass the + // engine's address to the language host so that it may establish its own connections back, + // and to establish protocol configuration that will be used to communicate between the two parties. + Handshake(ctx context.Context, in *LanguageHandshakeRequest, opts ...grpc.CallOption) (*LanguageHandshakeResponse, error) + // Deprecated: Do not use. // GetRequiredPlugins computes the complete set of anticipated plugins required by a program. GetRequiredPlugins(ctx context.Context, in *GetRequiredPluginsRequest, opts ...grpc.CallOption) (*GetRequiredPluginsResponse, error) + // GetRequiredPackages computes the complete set of anticipated packages required by a program. + GetRequiredPackages(ctx context.Context, in *GetRequiredPackagesRequest, opts ...grpc.CallOption) (*GetRequiredPackagesResponse, error) // Run executes a program and returns its result. Run(ctx context.Context, in *RunRequest, opts ...grpc.CallOption) (*RunResponse, error) // GetPluginInfo returns generic information about this plugin, like its version. @@ -57,6 +64,16 @@ func NewLanguageRuntimeClient(cc grpc.ClientConnInterface) LanguageRuntimeClient return &languageRuntimeClient{cc} } +func (c *languageRuntimeClient) Handshake(ctx context.Context, in *LanguageHandshakeRequest, opts ...grpc.CallOption) (*LanguageHandshakeResponse, error) { + out := new(LanguageHandshakeResponse) + err := c.cc.Invoke(ctx, "/pulumirpc.LanguageRuntime/Handshake", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Deprecated: Do not use. func (c *languageRuntimeClient) GetRequiredPlugins(ctx context.Context, in *GetRequiredPluginsRequest, opts ...grpc.CallOption) (*GetRequiredPluginsResponse, error) { out := new(GetRequiredPluginsResponse) err := c.cc.Invoke(ctx, "/pulumirpc.LanguageRuntime/GetRequiredPlugins", in, out, opts...) @@ -66,6 +83,15 @@ func (c *languageRuntimeClient) GetRequiredPlugins(ctx context.Context, in *GetR return out, nil } +func (c *languageRuntimeClient) GetRequiredPackages(ctx context.Context, in *GetRequiredPackagesRequest, opts ...grpc.CallOption) (*GetRequiredPackagesResponse, error) { + out := new(GetRequiredPackagesResponse) + err := c.cc.Invoke(ctx, "/pulumirpc.LanguageRuntime/GetRequiredPackages", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *languageRuntimeClient) Run(ctx context.Context, in *RunRequest, opts ...grpc.CallOption) (*RunResponse, error) { out := new(RunResponse) err := c.cc.Invoke(ctx, "/pulumirpc.LanguageRuntime/Run", in, out, opts...) @@ -215,8 +241,15 @@ func (c *languageRuntimeClient) Pack(ctx context.Context, in *PackRequest, opts // All implementations must embed UnimplementedLanguageRuntimeServer // for forward compatibility type LanguageRuntimeServer interface { + // `Handshake` is the first call made by the engine to a language host. It is used to pass the + // engine's address to the language host so that it may establish its own connections back, + // and to establish protocol configuration that will be used to communicate between the two parties. + Handshake(context.Context, *LanguageHandshakeRequest) (*LanguageHandshakeResponse, error) + // Deprecated: Do not use. // GetRequiredPlugins computes the complete set of anticipated plugins required by a program. GetRequiredPlugins(context.Context, *GetRequiredPluginsRequest) (*GetRequiredPluginsResponse, error) + // GetRequiredPackages computes the complete set of anticipated packages required by a program. + GetRequiredPackages(context.Context, *GetRequiredPackagesRequest) (*GetRequiredPackagesResponse, error) // Run executes a program and returns its result. Run(context.Context, *RunRequest) (*RunResponse, error) // GetPluginInfo returns generic information about this plugin, like its version. @@ -246,9 +279,15 @@ type LanguageRuntimeServer interface { type UnimplementedLanguageRuntimeServer struct { } +func (UnimplementedLanguageRuntimeServer) Handshake(context.Context, *LanguageHandshakeRequest) (*LanguageHandshakeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Handshake not implemented") +} func (UnimplementedLanguageRuntimeServer) GetRequiredPlugins(context.Context, *GetRequiredPluginsRequest) (*GetRequiredPluginsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetRequiredPlugins not implemented") } +func (UnimplementedLanguageRuntimeServer) GetRequiredPackages(context.Context, *GetRequiredPackagesRequest) (*GetRequiredPackagesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetRequiredPackages not implemented") +} func (UnimplementedLanguageRuntimeServer) Run(context.Context, *RunRequest) (*RunResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Run not implemented") } @@ -295,6 +334,24 @@ func RegisterLanguageRuntimeServer(s grpc.ServiceRegistrar, srv LanguageRuntimeS s.RegisterService(&LanguageRuntime_ServiceDesc, srv) } +func _LanguageRuntime_Handshake_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(LanguageHandshakeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LanguageRuntimeServer).Handshake(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pulumirpc.LanguageRuntime/Handshake", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LanguageRuntimeServer).Handshake(ctx, req.(*LanguageHandshakeRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _LanguageRuntime_GetRequiredPlugins_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetRequiredPluginsRequest) if err := dec(in); err != nil { @@ -313,6 +370,24 @@ func _LanguageRuntime_GetRequiredPlugins_Handler(srv interface{}, ctx context.Co return interceptor(ctx, in, info, handler) } +func _LanguageRuntime_GetRequiredPackages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRequiredPackagesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LanguageRuntimeServer).GetRequiredPackages(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pulumirpc.LanguageRuntime/GetRequiredPackages", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LanguageRuntimeServer).GetRequiredPackages(ctx, req.(*GetRequiredPackagesRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _LanguageRuntime_Run_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RunRequest) if err := dec(in); err != nil { @@ -524,10 +599,18 @@ var LanguageRuntime_ServiceDesc = grpc.ServiceDesc{ ServiceName: "pulumirpc.LanguageRuntime", HandlerType: (*LanguageRuntimeServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "Handshake", + Handler: _LanguageRuntime_Handshake_Handler, + }, { MethodName: "GetRequiredPlugins", Handler: _LanguageRuntime_GetRequiredPlugins_Handler, }, + { + MethodName: "GetRequiredPackages", + Handler: _LanguageRuntime_GetRequiredPackages_Handler, + }, { MethodName: "Run", Handler: _LanguageRuntime_Run_Handler, diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/plugin.pb.go b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/plugin.pb.go index 34f5c27b7..aa1b95000 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/plugin.pb.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/plugin.pb.go @@ -216,6 +216,160 @@ func (x *PluginAttach) GetAddress() string { return "" } +type PackageParameterization struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // the parameterized package name. + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` // the parameterized package version. + Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` // the parameter value for the parameterized package. +} + +func (x *PackageParameterization) Reset() { + *x = PackageParameterization{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_plugin_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PackageParameterization) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PackageParameterization) ProtoMessage() {} + +func (x *PackageParameterization) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_plugin_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PackageParameterization.ProtoReflect.Descriptor instead. +func (*PackageParameterization) Descriptor() ([]byte, []int) { + return file_pulumi_plugin_proto_rawDescGZIP(), []int{3} +} + +func (x *PackageParameterization) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PackageParameterization) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PackageParameterization) GetValue() []byte { + if x != nil { + return x.Value + } + return nil +} + +// PackageDependency is information about a package that a program may depend upon. +type PackageDependency struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // the name of the plugin. + Kind string `protobuf:"bytes,2,opt,name=kind,proto3" json:"kind,omitempty"` // the kind of plugin (e.g., language, etc). + Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"` // the semver for this plugin. + Server string `protobuf:"bytes,4,opt,name=server,proto3" json:"server,omitempty"` // the URL of a server that can be used to download this plugin, if needed. + // a map of the checksums for the plugin, will be empty from old language runtimes. The keys should match + // the os and architecture names used in pulumi releases, e.g. "darwin-amd64", "windows-arm64". + Checksums map[string][]byte `protobuf:"bytes,5,rep,name=checksums,proto3" json:"checksums,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // The optional parameterization for this package. + Parameterization *PackageParameterization `protobuf:"bytes,6,opt,name=parameterization,proto3" json:"parameterization,omitempty"` +} + +func (x *PackageDependency) Reset() { + *x = PackageDependency{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_plugin_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PackageDependency) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PackageDependency) ProtoMessage() {} + +func (x *PackageDependency) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_plugin_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PackageDependency.ProtoReflect.Descriptor instead. +func (*PackageDependency) Descriptor() ([]byte, []int) { + return file_pulumi_plugin_proto_rawDescGZIP(), []int{4} +} + +func (x *PackageDependency) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *PackageDependency) GetKind() string { + if x != nil { + return x.Kind + } + return "" +} + +func (x *PackageDependency) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *PackageDependency) GetServer() string { + if x != nil { + return x.Server + } + return "" +} + +func (x *PackageDependency) GetChecksums() map[string][]byte { + if x != nil { + return x.Checksums + } + return nil +} + +func (x *PackageDependency) GetParameterization() *PackageParameterization { + if x != nil { + return x.Parameterization + } + return nil +} + var File_pulumi_plugin_proto protoreflect.FileDescriptor var file_pulumi_plugin_proto_rawDesc = []byte{ @@ -241,11 +395,37 @@ var file_pulumi_plugin_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x28, 0x0a, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, 0x70, - 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x3b, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x5d, 0x0a, 0x17, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc6, 0x02, 0x0a, 0x11, 0x50, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x49, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x75, + 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x44, + 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, + 0x75, 0x6d, 0x73, 0x12, 0x4e, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x10, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x1a, 0x3c, 0x0a, 0x0e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, 0x73, 0x64, + 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x3b, 0x70, 0x75, + 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -260,20 +440,25 @@ func file_pulumi_plugin_proto_rawDescGZIP() []byte { return file_pulumi_plugin_proto_rawDescData } -var file_pulumi_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_pulumi_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_pulumi_plugin_proto_goTypes = []interface{}{ - (*PluginInfo)(nil), // 0: pulumirpc.PluginInfo - (*PluginDependency)(nil), // 1: pulumirpc.PluginDependency - (*PluginAttach)(nil), // 2: pulumirpc.PluginAttach - nil, // 3: pulumirpc.PluginDependency.ChecksumsEntry + (*PluginInfo)(nil), // 0: pulumirpc.PluginInfo + (*PluginDependency)(nil), // 1: pulumirpc.PluginDependency + (*PluginAttach)(nil), // 2: pulumirpc.PluginAttach + (*PackageParameterization)(nil), // 3: pulumirpc.PackageParameterization + (*PackageDependency)(nil), // 4: pulumirpc.PackageDependency + nil, // 5: pulumirpc.PluginDependency.ChecksumsEntry + nil, // 6: pulumirpc.PackageDependency.ChecksumsEntry } var file_pulumi_plugin_proto_depIdxs = []int32{ - 3, // 0: pulumirpc.PluginDependency.checksums:type_name -> pulumirpc.PluginDependency.ChecksumsEntry - 1, // [1:1] is the sub-list for method output_type - 1, // [1:1] is the sub-list for method input_type - 1, // [1:1] is the sub-list for extension type_name - 1, // [1:1] is the sub-list for extension extendee - 0, // [0:1] is the sub-list for field type_name + 5, // 0: pulumirpc.PluginDependency.checksums:type_name -> pulumirpc.PluginDependency.ChecksumsEntry + 6, // 1: pulumirpc.PackageDependency.checksums:type_name -> pulumirpc.PackageDependency.ChecksumsEntry + 3, // 2: pulumirpc.PackageDependency.parameterization:type_name -> pulumirpc.PackageParameterization + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_pulumi_plugin_proto_init() } @@ -318,6 +503,30 @@ func file_pulumi_plugin_proto_init() { return nil } } + file_pulumi_plugin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackageParameterization); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pulumi_plugin_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PackageDependency); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -325,7 +534,7 @@ func file_pulumi_plugin_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pulumi_plugin_proto_rawDesc, NumEnums: 0, - NumMessages: 4, + NumMessages: 7, NumExtensions: 0, NumServices: 0, }, diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider.pb.go b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider.pb.go index 4748c133f..75c675c24 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider.pb.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider.pb.go @@ -87,7 +87,7 @@ func (x CheckRequest_AutonamingOptions_Mode) Number() protoreflect.EnumNumber { // Deprecated: Use CheckRequest_AutonamingOptions_Mode.Descriptor instead. func (CheckRequest_AutonamingOptions_Mode) EnumDescriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{11, 0, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{13, 0, 0} } // The type of property diff kinds. @@ -152,7 +152,7 @@ func (x PropertyDiff_Kind) Number() protoreflect.EnumNumber { // Deprecated: Use PropertyDiff_Kind.Descriptor instead. func (PropertyDiff_Kind) EnumDescriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{15, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{17, 0} } // The type of high-level diff results. @@ -206,7 +206,119 @@ func (x DiffResponse_DiffChanges) Number() protoreflect.EnumNumber { // Deprecated: Use DiffResponse_DiffChanges.Descriptor instead. func (DiffResponse_DiffChanges) EnumDescriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{16, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{18, 0} +} + +// `ProviderHandshakeRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Handshake) call. +type ProviderHandshakeRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The gRPC address of the engine handshaking with the provider. At a minimum, this address will expose an instance + // of the [](pulumirpc.Engine) service. + EngineAddress string `protobuf:"bytes,1,opt,name=engine_address,json=engineAddress,proto3" json:"engine_address,omitempty"` + // A *root directory* where the provider's binary, `PulumiPlugin.yaml`, or other identifying source code is located. + // In the event that the provider is *not* being booted by the engine (e.g. in the case that the engine has been + // asked to attach to an existing running provider instance via a host/port number), this field will be empty. + RootDirectory *string `protobuf:"bytes,2,opt,name=root_directory,json=rootDirectory,proto3,oneof" json:"root_directory,omitempty"` + // A *program directory* in which the provider should execute. This is generally a subdirectory of the root + // directory, though this is not required. In the event that the provider is *not* being booted by the engine (e.g. + // in the case that the engine has been asked to attach to an existing running provider instance via a host/port + // number), this field will be empty. + ProgramDirectory *string `protobuf:"bytes,3,opt,name=program_directory,json=programDirectory,proto3,oneof" json:"program_directory,omitempty"` +} + +func (x *ProviderHandshakeRequest) Reset() { + *x = ProviderHandshakeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_provider_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProviderHandshakeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProviderHandshakeRequest) ProtoMessage() {} + +func (x *ProviderHandshakeRequest) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_provider_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProviderHandshakeRequest.ProtoReflect.Descriptor instead. +func (*ProviderHandshakeRequest) Descriptor() ([]byte, []int) { + return file_pulumi_provider_proto_rawDescGZIP(), []int{0} +} + +func (x *ProviderHandshakeRequest) GetEngineAddress() string { + if x != nil { + return x.EngineAddress + } + return "" +} + +func (x *ProviderHandshakeRequest) GetRootDirectory() string { + if x != nil && x.RootDirectory != nil { + return *x.RootDirectory + } + return "" +} + +func (x *ProviderHandshakeRequest) GetProgramDirectory() string { + if x != nil && x.ProgramDirectory != nil { + return *x.ProgramDirectory + } + return "" +} + +// `ProviderHandshakeResponse` is the type of responses sent by a [](pulumirpc.ResourceProvider.Handshake) call. +type ProviderHandshakeResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ProviderHandshakeResponse) Reset() { + *x = ProviderHandshakeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pulumi_provider_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProviderHandshakeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProviderHandshakeResponse) ProtoMessage() {} + +func (x *ProviderHandshakeResponse) ProtoReflect() protoreflect.Message { + mi := &file_pulumi_provider_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ProviderHandshakeResponse.ProtoReflect.Descriptor instead. +func (*ProviderHandshakeResponse) Descriptor() ([]byte, []int) { + return file_pulumi_provider_proto_rawDescGZIP(), []int{1} } // `ParameterizeRequest` is the type of requests sent as part of a [](pulumirpc.ResourceProvider.Parameterize) call. A @@ -235,7 +347,7 @@ type ParameterizeRequest struct { func (x *ParameterizeRequest) Reset() { *x = ParameterizeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[0] + mi := &file_pulumi_provider_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -248,7 +360,7 @@ func (x *ParameterizeRequest) String() string { func (*ParameterizeRequest) ProtoMessage() {} func (x *ParameterizeRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[0] + mi := &file_pulumi_provider_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -261,7 +373,7 @@ func (x *ParameterizeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ParameterizeRequest.ProtoReflect.Descriptor instead. func (*ParameterizeRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{2} } func (m *ParameterizeRequest) GetParameters() isParameterizeRequest_Parameters { @@ -320,7 +432,7 @@ type ParameterizeResponse struct { func (x *ParameterizeResponse) Reset() { *x = ParameterizeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[1] + mi := &file_pulumi_provider_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -333,7 +445,7 @@ func (x *ParameterizeResponse) String() string { func (*ParameterizeResponse) ProtoMessage() {} func (x *ParameterizeResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[1] + mi := &file_pulumi_provider_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -346,7 +458,7 @@ func (x *ParameterizeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ParameterizeResponse.ProtoReflect.Descriptor instead. func (*ParameterizeResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{1} + return file_pulumi_provider_proto_rawDescGZIP(), []int{3} } func (x *ParameterizeResponse) GetName() string { @@ -379,7 +491,7 @@ type GetSchemaRequest struct { func (x *GetSchemaRequest) Reset() { *x = GetSchemaRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[2] + mi := &file_pulumi_provider_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -392,7 +504,7 @@ func (x *GetSchemaRequest) String() string { func (*GetSchemaRequest) ProtoMessage() {} func (x *GetSchemaRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[2] + mi := &file_pulumi_provider_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -405,7 +517,7 @@ func (x *GetSchemaRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSchemaRequest.ProtoReflect.Descriptor instead. func (*GetSchemaRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{2} + return file_pulumi_provider_proto_rawDescGZIP(), []int{4} } func (x *GetSchemaRequest) GetVersion() int32 { @@ -440,7 +552,7 @@ type GetSchemaResponse struct { func (x *GetSchemaResponse) Reset() { *x = GetSchemaResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[3] + mi := &file_pulumi_provider_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -453,7 +565,7 @@ func (x *GetSchemaResponse) String() string { func (*GetSchemaResponse) ProtoMessage() {} func (x *GetSchemaResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[3] + mi := &file_pulumi_provider_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -466,7 +578,7 @@ func (x *GetSchemaResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetSchemaResponse.ProtoReflect.Descriptor instead. func (*GetSchemaResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{3} + return file_pulumi_provider_proto_rawDescGZIP(), []int{5} } func (x *GetSchemaResponse) GetSchema() string { @@ -518,25 +630,27 @@ type ConfigureRequest struct { // ::: Args *structpb.Struct `protobuf:"bytes,2,opt,name=args,proto3" json:"args,omitempty"` // True if and only if the caller supports secrets. If true, operations should return strongly typed secrets if the - // provider supports them also. + // provider supports them also. *Must* be true if the caller has previously called + // [](pulumirpc.ResourceProvider.Handshake). AcceptSecrets bool `protobuf:"varint,3,opt,name=acceptSecrets,proto3" json:"acceptSecrets,omitempty"` // True if and only if the caller supports strongly typed resources. If true, operations should return resources as - // strongly typed values if the provider supports them also. + // strongly typed values if the provider supports them also. *Must* be true if the caller has previously called + // [](pulumirpc.ResourceProvider.Handshake). AcceptResources bool `protobuf:"varint,4,opt,name=acceptResources,proto3" json:"acceptResources,omitempty"` // True if and only if the caller supports sending old inputs as part of [](pulumirpc.ResourceProvider.Diff) and // [](pulumirpc.ResourceProvider.Update) calls. If true, the provider should expect these fields to be populated in - // these calls. + // these calls. *Must* be true if the caller has previously called [](pulumirpc.ResourceProvider.Handshake). SendsOldInputs bool `protobuf:"varint,5,opt,name=sends_old_inputs,json=sendsOldInputs,proto3" json:"sends_old_inputs,omitempty"` // True if and only if the caller supports sending old inputs and outputs as part of // [](pulumirpc.ResourceProvider.Delete) calls. If true, the provider should expect these fields to be populated in - // these calls. + // these calls. *Must* be true if the caller has previously called [](pulumirpc.ResourceProvider.Handshake). SendsOldInputsToDelete bool `protobuf:"varint,6,opt,name=sends_old_inputs_to_delete,json=sendsOldInputsToDelete,proto3" json:"sends_old_inputs_to_delete,omitempty"` } func (x *ConfigureRequest) Reset() { *x = ConfigureRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[4] + mi := &file_pulumi_provider_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -549,7 +663,7 @@ func (x *ConfigureRequest) String() string { func (*ConfigureRequest) ProtoMessage() {} func (x *ConfigureRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[4] + mi := &file_pulumi_provider_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -562,7 +676,7 @@ func (x *ConfigureRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureRequest.ProtoReflect.Descriptor instead. func (*ConfigureRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{4} + return file_pulumi_provider_proto_rawDescGZIP(), []int{6} } func (x *ConfigureRequest) GetVariables() map[string]string { @@ -615,17 +729,19 @@ type ConfigureResponse struct { unknownFields protoimpl.UnknownFields // True if and only if the provider supports secrets. If true, the caller should pass secrets as strongly typed - // values to the provider. + // values to the provider. *Must* be true if the provider implements [](pulumirpc.ResourceProvider.Handshake). AcceptSecrets bool `protobuf:"varint,1,opt,name=acceptSecrets,proto3" json:"acceptSecrets,omitempty"` // True if and only if the provider supports the `preview` field on [](pulumirpc.ResourceProvider.Create) and // [](pulumirpc.ResourceProvider.Update) calls. If true, the engine should invoke these calls with `preview` set to - // `true` during previews. + // `true` during previews. *Must* be true if the provider implements [](pulumirpc.ResourceProvider.Handshake). SupportsPreview bool `protobuf:"varint,2,opt,name=supportsPreview,proto3" json:"supportsPreview,omitempty"` // True if and only if the provider supports strongly typed resources. If true, the caller should pass resources as - // strongly typed values to the provider. + // strongly typed values to the provider. *Must* be true if the provider implements + // [](pulumirpc.ResourceProvider.Handshake). AcceptResources bool `protobuf:"varint,3,opt,name=acceptResources,proto3" json:"acceptResources,omitempty"` // True if and only if the provider supports output values as inputs. If true, the engine should pass output values - // to the provider where possible. + // to the provider where possible. *Must* be true if the provider implements + // [](pulumirpc.ResourceProvider.Handshake). AcceptOutputs bool `protobuf:"varint,4,opt,name=acceptOutputs,proto3" json:"acceptOutputs,omitempty"` // True if the provider accepts and respects Autonaming configuration that the engine provides on behalf of user. SupportsAutonamingConfiguration bool `protobuf:"varint,5,opt,name=supports_autonaming_configuration,json=supportsAutonamingConfiguration,proto3" json:"supports_autonaming_configuration,omitempty"` @@ -634,7 +750,7 @@ type ConfigureResponse struct { func (x *ConfigureResponse) Reset() { *x = ConfigureResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[5] + mi := &file_pulumi_provider_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -647,7 +763,7 @@ func (x *ConfigureResponse) String() string { func (*ConfigureResponse) ProtoMessage() {} func (x *ConfigureResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[5] + mi := &file_pulumi_provider_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -660,7 +776,7 @@ func (x *ConfigureResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureResponse.ProtoReflect.Descriptor instead. func (*ConfigureResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{5} + return file_pulumi_provider_proto_rawDescGZIP(), []int{7} } func (x *ConfigureResponse) GetAcceptSecrets() bool { @@ -712,7 +828,7 @@ type ConfigureErrorMissingKeys struct { func (x *ConfigureErrorMissingKeys) Reset() { *x = ConfigureErrorMissingKeys{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[6] + mi := &file_pulumi_provider_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -725,7 +841,7 @@ func (x *ConfigureErrorMissingKeys) String() string { func (*ConfigureErrorMissingKeys) ProtoMessage() {} func (x *ConfigureErrorMissingKeys) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[6] + mi := &file_pulumi_provider_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -738,7 +854,7 @@ func (x *ConfigureErrorMissingKeys) ProtoReflect() protoreflect.Message { // Deprecated: Use ConfigureErrorMissingKeys.ProtoReflect.Descriptor instead. func (*ConfigureErrorMissingKeys) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{6} + return file_pulumi_provider_proto_rawDescGZIP(), []int{8} } func (x *ConfigureErrorMissingKeys) GetMissingKeys() []*ConfigureErrorMissingKeys_MissingKey { @@ -760,7 +876,7 @@ type InvokeRequest struct { func (x *InvokeRequest) Reset() { *x = InvokeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[7] + mi := &file_pulumi_provider_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -773,7 +889,7 @@ func (x *InvokeRequest) String() string { func (*InvokeRequest) ProtoMessage() {} func (x *InvokeRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[7] + mi := &file_pulumi_provider_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -786,7 +902,7 @@ func (x *InvokeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use InvokeRequest.ProtoReflect.Descriptor instead. func (*InvokeRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{7} + return file_pulumi_provider_proto_rawDescGZIP(), []int{9} } func (x *InvokeRequest) GetTok() string { @@ -815,7 +931,7 @@ type InvokeResponse struct { func (x *InvokeResponse) Reset() { *x = InvokeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[8] + mi := &file_pulumi_provider_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -828,7 +944,7 @@ func (x *InvokeResponse) String() string { func (*InvokeResponse) ProtoMessage() {} func (x *InvokeResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[8] + mi := &file_pulumi_provider_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -841,7 +957,7 @@ func (x *InvokeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use InvokeResponse.ProtoReflect.Descriptor instead. func (*InvokeResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{8} + return file_pulumi_provider_proto_rawDescGZIP(), []int{10} } func (x *InvokeResponse) GetReturn() *structpb.Struct { @@ -880,7 +996,7 @@ type CallRequest struct { func (x *CallRequest) Reset() { *x = CallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[9] + mi := &file_pulumi_provider_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -893,7 +1009,7 @@ func (x *CallRequest) String() string { func (*CallRequest) ProtoMessage() {} func (x *CallRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[9] + mi := &file_pulumi_provider_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -906,7 +1022,7 @@ func (x *CallRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CallRequest.ProtoReflect.Descriptor instead. func (*CallRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{9} + return file_pulumi_provider_proto_rawDescGZIP(), []int{11} } func (x *CallRequest) GetTok() string { @@ -1010,7 +1126,7 @@ type CallResponse struct { func (x *CallResponse) Reset() { *x = CallResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[10] + mi := &file_pulumi_provider_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1023,7 +1139,7 @@ func (x *CallResponse) String() string { func (*CallResponse) ProtoMessage() {} func (x *CallResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[10] + mi := &file_pulumi_provider_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1036,7 +1152,7 @@ func (x *CallResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CallResponse.ProtoReflect.Descriptor instead. func (*CallResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{10} + return file_pulumi_provider_proto_rawDescGZIP(), []int{12} } func (x *CallResponse) GetReturn() *structpb.Struct { @@ -1100,7 +1216,7 @@ type CheckRequest struct { func (x *CheckRequest) Reset() { *x = CheckRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[11] + mi := &file_pulumi_provider_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1113,7 +1229,7 @@ func (x *CheckRequest) String() string { func (*CheckRequest) ProtoMessage() {} func (x *CheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[11] + mi := &file_pulumi_provider_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1126,7 +1242,7 @@ func (x *CheckRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRequest.ProtoReflect.Descriptor instead. func (*CheckRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{11} + return file_pulumi_provider_proto_rawDescGZIP(), []int{13} } func (x *CheckRequest) GetUrn() string { @@ -1203,7 +1319,7 @@ type CheckResponse struct { func (x *CheckResponse) Reset() { *x = CheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[12] + mi := &file_pulumi_provider_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1332,7 @@ func (x *CheckResponse) String() string { func (*CheckResponse) ProtoMessage() {} func (x *CheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[12] + mi := &file_pulumi_provider_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,7 +1345,7 @@ func (x *CheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckResponse.ProtoReflect.Descriptor instead. func (*CheckResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{12} + return file_pulumi_provider_proto_rawDescGZIP(), []int{14} } func (x *CheckResponse) GetInputs() *structpb.Struct { @@ -1262,7 +1378,7 @@ type CheckFailure struct { func (x *CheckFailure) Reset() { *x = CheckFailure{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[13] + mi := &file_pulumi_provider_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1275,7 +1391,7 @@ func (x *CheckFailure) String() string { func (*CheckFailure) ProtoMessage() {} func (x *CheckFailure) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[13] + mi := &file_pulumi_provider_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1288,7 +1404,7 @@ func (x *CheckFailure) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckFailure.ProtoReflect.Descriptor instead. func (*CheckFailure) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{13} + return file_pulumi_provider_proto_rawDescGZIP(), []int{15} } func (x *CheckFailure) GetProperty() string { @@ -1347,7 +1463,7 @@ type DiffRequest struct { func (x *DiffRequest) Reset() { *x = DiffRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[14] + mi := &file_pulumi_provider_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1360,7 +1476,7 @@ func (x *DiffRequest) String() string { func (*DiffRequest) ProtoMessage() {} func (x *DiffRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[14] + mi := &file_pulumi_provider_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1373,7 +1489,7 @@ func (x *DiffRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DiffRequest.ProtoReflect.Descriptor instead. func (*DiffRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{14} + return file_pulumi_provider_proto_rawDescGZIP(), []int{16} } func (x *DiffRequest) GetId() string { @@ -1450,7 +1566,7 @@ type PropertyDiff struct { func (x *PropertyDiff) Reset() { *x = PropertyDiff{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[15] + mi := &file_pulumi_provider_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1463,7 +1579,7 @@ func (x *PropertyDiff) String() string { func (*PropertyDiff) ProtoMessage() {} func (x *PropertyDiff) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[15] + mi := &file_pulumi_provider_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1476,7 +1592,7 @@ func (x *PropertyDiff) ProtoReflect() protoreflect.Message { // Deprecated: Use PropertyDiff.ProtoReflect.Descriptor instead. func (*PropertyDiff) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{15} + return file_pulumi_provider_proto_rawDescGZIP(), []int{17} } func (x *PropertyDiff) GetKind() PropertyDiff_Kind { @@ -1539,7 +1655,7 @@ type DiffResponse struct { func (x *DiffResponse) Reset() { *x = DiffResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[16] + mi := &file_pulumi_provider_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1552,7 +1668,7 @@ func (x *DiffResponse) String() string { func (*DiffResponse) ProtoMessage() {} func (x *DiffResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[16] + mi := &file_pulumi_provider_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1565,7 +1681,7 @@ func (x *DiffResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DiffResponse.ProtoReflect.Descriptor instead. func (*DiffResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{16} + return file_pulumi_provider_proto_rawDescGZIP(), []int{18} } func (x *DiffResponse) GetReplaces() []string { @@ -1644,7 +1760,7 @@ type CreateRequest struct { func (x *CreateRequest) Reset() { *x = CreateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[17] + mi := &file_pulumi_provider_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1657,7 +1773,7 @@ func (x *CreateRequest) String() string { func (*CreateRequest) ProtoMessage() {} func (x *CreateRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[17] + mi := &file_pulumi_provider_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1670,7 +1786,7 @@ func (x *CreateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRequest.ProtoReflect.Descriptor instead. func (*CreateRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{17} + return file_pulumi_provider_proto_rawDescGZIP(), []int{19} } func (x *CreateRequest) GetUrn() string { @@ -1732,7 +1848,7 @@ type CreateResponse struct { func (x *CreateResponse) Reset() { *x = CreateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[18] + mi := &file_pulumi_provider_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1745,7 +1861,7 @@ func (x *CreateResponse) String() string { func (*CreateResponse) ProtoMessage() {} func (x *CreateResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[18] + mi := &file_pulumi_provider_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1758,7 +1874,7 @@ func (x *CreateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateResponse.ProtoReflect.Descriptor instead. func (*CreateResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{18} + return file_pulumi_provider_proto_rawDescGZIP(), []int{20} } func (x *CreateResponse) GetId() string { @@ -1801,7 +1917,7 @@ type ReadRequest struct { func (x *ReadRequest) Reset() { *x = ReadRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[19] + mi := &file_pulumi_provider_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1814,7 +1930,7 @@ func (x *ReadRequest) String() string { func (*ReadRequest) ProtoMessage() {} func (x *ReadRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[19] + mi := &file_pulumi_provider_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1827,7 +1943,7 @@ func (x *ReadRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadRequest.ProtoReflect.Descriptor instead. func (*ReadRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{19} + return file_pulumi_provider_proto_rawDescGZIP(), []int{21} } func (x *ReadRequest) GetId() string { @@ -1891,7 +2007,7 @@ type ReadResponse struct { func (x *ReadResponse) Reset() { *x = ReadResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[20] + mi := &file_pulumi_provider_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1904,7 +2020,7 @@ func (x *ReadResponse) String() string { func (*ReadResponse) ProtoMessage() {} func (x *ReadResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[20] + mi := &file_pulumi_provider_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1917,7 +2033,7 @@ func (x *ReadResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadResponse.ProtoReflect.Descriptor instead. func (*ReadResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{20} + return file_pulumi_provider_proto_rawDescGZIP(), []int{22} } func (x *ReadResponse) GetId() string { @@ -1976,7 +2092,7 @@ type UpdateRequest struct { func (x *UpdateRequest) Reset() { *x = UpdateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[21] + mi := &file_pulumi_provider_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1989,7 +2105,7 @@ func (x *UpdateRequest) String() string { func (*UpdateRequest) ProtoMessage() {} func (x *UpdateRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[21] + mi := &file_pulumi_provider_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2002,7 +2118,7 @@ func (x *UpdateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRequest.ProtoReflect.Descriptor instead. func (*UpdateRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{21} + return file_pulumi_provider_proto_rawDescGZIP(), []int{23} } func (x *UpdateRequest) GetId() string { @@ -2089,7 +2205,7 @@ type UpdateResponse struct { func (x *UpdateResponse) Reset() { *x = UpdateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[22] + mi := &file_pulumi_provider_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2102,7 +2218,7 @@ func (x *UpdateResponse) String() string { func (*UpdateResponse) ProtoMessage() {} func (x *UpdateResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[22] + mi := &file_pulumi_provider_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2115,7 +2231,7 @@ func (x *UpdateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateResponse.ProtoReflect.Descriptor instead. func (*UpdateResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{22} + return file_pulumi_provider_proto_rawDescGZIP(), []int{24} } func (x *UpdateResponse) GetProperties() *structpb.Struct { @@ -2152,7 +2268,7 @@ type DeleteRequest struct { func (x *DeleteRequest) Reset() { *x = DeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[23] + mi := &file_pulumi_provider_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2165,7 +2281,7 @@ func (x *DeleteRequest) String() string { func (*DeleteRequest) ProtoMessage() {} func (x *DeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[23] + mi := &file_pulumi_provider_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2178,7 +2294,7 @@ func (x *DeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRequest.ProtoReflect.Descriptor instead. func (*DeleteRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{23} + return file_pulumi_provider_proto_rawDescGZIP(), []int{25} } func (x *DeleteRequest) GetId() string { @@ -2311,7 +2427,7 @@ type ConstructRequest struct { func (x *ConstructRequest) Reset() { *x = ConstructRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[24] + mi := &file_pulumi_provider_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2324,7 +2440,7 @@ func (x *ConstructRequest) String() string { func (*ConstructRequest) ProtoMessage() {} func (x *ConstructRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[24] + mi := &file_pulumi_provider_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2337,7 +2453,7 @@ func (x *ConstructRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ConstructRequest.ProtoReflect.Descriptor instead. func (*ConstructRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{24} + return file_pulumi_provider_proto_rawDescGZIP(), []int{26} } func (x *ConstructRequest) GetProject() string { @@ -2534,7 +2650,7 @@ type ConstructResponse struct { func (x *ConstructResponse) Reset() { *x = ConstructResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[25] + mi := &file_pulumi_provider_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2547,7 +2663,7 @@ func (x *ConstructResponse) String() string { func (*ConstructResponse) ProtoMessage() {} func (x *ConstructResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[25] + mi := &file_pulumi_provider_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2560,7 +2676,7 @@ func (x *ConstructResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ConstructResponse.ProtoReflect.Descriptor instead. func (*ConstructResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{25} + return file_pulumi_provider_proto_rawDescGZIP(), []int{27} } func (x *ConstructResponse) GetUrn() string { @@ -2600,7 +2716,7 @@ type ErrorResourceInitFailed struct { func (x *ErrorResourceInitFailed) Reset() { *x = ErrorResourceInitFailed{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[26] + mi := &file_pulumi_provider_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2613,7 +2729,7 @@ func (x *ErrorResourceInitFailed) String() string { func (*ErrorResourceInitFailed) ProtoMessage() {} func (x *ErrorResourceInitFailed) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[26] + mi := &file_pulumi_provider_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2626,7 +2742,7 @@ func (x *ErrorResourceInitFailed) ProtoReflect() protoreflect.Message { // Deprecated: Use ErrorResourceInitFailed.ProtoReflect.Descriptor instead. func (*ErrorResourceInitFailed) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{26} + return file_pulumi_provider_proto_rawDescGZIP(), []int{28} } func (x *ErrorResourceInitFailed) GetId() string { @@ -2677,7 +2793,7 @@ type GetMappingRequest struct { func (x *GetMappingRequest) Reset() { *x = GetMappingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[27] + mi := &file_pulumi_provider_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2690,7 +2806,7 @@ func (x *GetMappingRequest) String() string { func (*GetMappingRequest) ProtoMessage() {} func (x *GetMappingRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[27] + mi := &file_pulumi_provider_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2703,7 +2819,7 @@ func (x *GetMappingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMappingRequest.ProtoReflect.Descriptor instead. func (*GetMappingRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{27} + return file_pulumi_provider_proto_rawDescGZIP(), []int{29} } func (x *GetMappingRequest) GetKey() string { @@ -2736,7 +2852,7 @@ type GetMappingResponse struct { func (x *GetMappingResponse) Reset() { *x = GetMappingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[28] + mi := &file_pulumi_provider_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2749,7 +2865,7 @@ func (x *GetMappingResponse) String() string { func (*GetMappingResponse) ProtoMessage() {} func (x *GetMappingResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[28] + mi := &file_pulumi_provider_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2762,7 +2878,7 @@ func (x *GetMappingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMappingResponse.ProtoReflect.Descriptor instead. func (*GetMappingResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{28} + return file_pulumi_provider_proto_rawDescGZIP(), []int{30} } func (x *GetMappingResponse) GetProvider() string { @@ -2793,7 +2909,7 @@ type GetMappingsRequest struct { func (x *GetMappingsRequest) Reset() { *x = GetMappingsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[29] + mi := &file_pulumi_provider_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2806,7 +2922,7 @@ func (x *GetMappingsRequest) String() string { func (*GetMappingsRequest) ProtoMessage() {} func (x *GetMappingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[29] + mi := &file_pulumi_provider_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2819,7 +2935,7 @@ func (x *GetMappingsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMappingsRequest.ProtoReflect.Descriptor instead. func (*GetMappingsRequest) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{29} + return file_pulumi_provider_proto_rawDescGZIP(), []int{31} } func (x *GetMappingsRequest) GetKey() string { @@ -2843,7 +2959,7 @@ type GetMappingsResponse struct { func (x *GetMappingsResponse) Reset() { *x = GetMappingsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[30] + mi := &file_pulumi_provider_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2856,7 +2972,7 @@ func (x *GetMappingsResponse) String() string { func (*GetMappingsResponse) ProtoMessage() {} func (x *GetMappingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[30] + mi := &file_pulumi_provider_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2869,7 +2985,7 @@ func (x *GetMappingsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetMappingsResponse.ProtoReflect.Descriptor instead. func (*GetMappingsResponse) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{30} + return file_pulumi_provider_proto_rawDescGZIP(), []int{32} } func (x *GetMappingsResponse) GetProviders() []string { @@ -2892,7 +3008,7 @@ type ParameterizeRequest_ParametersArgs struct { func (x *ParameterizeRequest_ParametersArgs) Reset() { *x = ParameterizeRequest_ParametersArgs{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[31] + mi := &file_pulumi_provider_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2905,7 +3021,7 @@ func (x *ParameterizeRequest_ParametersArgs) String() string { func (*ParameterizeRequest_ParametersArgs) ProtoMessage() {} func (x *ParameterizeRequest_ParametersArgs) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[31] + mi := &file_pulumi_provider_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2918,7 +3034,7 @@ func (x *ParameterizeRequest_ParametersArgs) ProtoReflect() protoreflect.Message // Deprecated: Use ParameterizeRequest_ParametersArgs.ProtoReflect.Descriptor instead. func (*ParameterizeRequest_ParametersArgs) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{0, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{2, 0} } func (x *ParameterizeRequest_ParametersArgs) GetArgs() []string { @@ -2946,7 +3062,7 @@ type ParameterizeRequest_ParametersValue struct { func (x *ParameterizeRequest_ParametersValue) Reset() { *x = ParameterizeRequest_ParametersValue{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[32] + mi := &file_pulumi_provider_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2959,7 +3075,7 @@ func (x *ParameterizeRequest_ParametersValue) String() string { func (*ParameterizeRequest_ParametersValue) ProtoMessage() {} func (x *ParameterizeRequest_ParametersValue) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[32] + mi := &file_pulumi_provider_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2972,7 +3088,7 @@ func (x *ParameterizeRequest_ParametersValue) ProtoReflect() protoreflect.Messag // Deprecated: Use ParameterizeRequest_ParametersValue.ProtoReflect.Descriptor instead. func (*ParameterizeRequest_ParametersValue) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{0, 1} + return file_pulumi_provider_proto_rawDescGZIP(), []int{2, 1} } func (x *ParameterizeRequest_ParametersValue) GetName() string { @@ -3017,7 +3133,7 @@ type ConfigureErrorMissingKeys_MissingKey struct { func (x *ConfigureErrorMissingKeys_MissingKey) Reset() { *x = ConfigureErrorMissingKeys_MissingKey{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[34] + mi := &file_pulumi_provider_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3030,7 +3146,7 @@ func (x *ConfigureErrorMissingKeys_MissingKey) String() string { func (*ConfigureErrorMissingKeys_MissingKey) ProtoMessage() {} func (x *ConfigureErrorMissingKeys_MissingKey) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[34] + mi := &file_pulumi_provider_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3043,7 +3159,7 @@ func (x *ConfigureErrorMissingKeys_MissingKey) ProtoReflect() protoreflect.Messa // Deprecated: Use ConfigureErrorMissingKeys_MissingKey.ProtoReflect.Descriptor instead. func (*ConfigureErrorMissingKeys_MissingKey) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{6, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{8, 0} } func (x *ConfigureErrorMissingKeys_MissingKey) GetName() string { @@ -3072,7 +3188,7 @@ type CallRequest_ArgumentDependencies struct { func (x *CallRequest_ArgumentDependencies) Reset() { *x = CallRequest_ArgumentDependencies{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[35] + mi := &file_pulumi_provider_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3085,7 +3201,7 @@ func (x *CallRequest_ArgumentDependencies) String() string { func (*CallRequest_ArgumentDependencies) ProtoMessage() {} func (x *CallRequest_ArgumentDependencies) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[35] + mi := &file_pulumi_provider_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3098,7 +3214,7 @@ func (x *CallRequest_ArgumentDependencies) ProtoReflect() protoreflect.Message { // Deprecated: Use CallRequest_ArgumentDependencies.ProtoReflect.Descriptor instead. func (*CallRequest_ArgumentDependencies) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{9, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{11, 0} } func (x *CallRequest_ArgumentDependencies) GetUrns() []string { @@ -3120,7 +3236,7 @@ type CallResponse_ReturnDependencies struct { func (x *CallResponse_ReturnDependencies) Reset() { *x = CallResponse_ReturnDependencies{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[38] + mi := &file_pulumi_provider_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3133,7 +3249,7 @@ func (x *CallResponse_ReturnDependencies) String() string { func (*CallResponse_ReturnDependencies) ProtoMessage() {} func (x *CallResponse_ReturnDependencies) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[38] + mi := &file_pulumi_provider_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3146,7 +3262,7 @@ func (x *CallResponse_ReturnDependencies) ProtoReflect() protoreflect.Message { // Deprecated: Use CallResponse_ReturnDependencies.ProtoReflect.Descriptor instead. func (*CallResponse_ReturnDependencies) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{10, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{12, 0} } func (x *CallResponse_ReturnDependencies) GetUrns() []string { @@ -3172,7 +3288,7 @@ type CheckRequest_AutonamingOptions struct { func (x *CheckRequest_AutonamingOptions) Reset() { *x = CheckRequest_AutonamingOptions{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[40] + mi := &file_pulumi_provider_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3185,7 +3301,7 @@ func (x *CheckRequest_AutonamingOptions) String() string { func (*CheckRequest_AutonamingOptions) ProtoMessage() {} func (x *CheckRequest_AutonamingOptions) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[40] + mi := &file_pulumi_provider_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3198,7 +3314,7 @@ func (x *CheckRequest_AutonamingOptions) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRequest_AutonamingOptions.ProtoReflect.Descriptor instead. func (*CheckRequest_AutonamingOptions) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{11, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{13, 0} } func (x *CheckRequest_AutonamingOptions) GetProposedName() string { @@ -3228,7 +3344,7 @@ type ConstructRequest_PropertyDependencies struct { func (x *ConstructRequest_PropertyDependencies) Reset() { *x = ConstructRequest_PropertyDependencies{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[42] + mi := &file_pulumi_provider_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3241,7 +3357,7 @@ func (x *ConstructRequest_PropertyDependencies) String() string { func (*ConstructRequest_PropertyDependencies) ProtoMessage() {} func (x *ConstructRequest_PropertyDependencies) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[42] + mi := &file_pulumi_provider_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3254,7 +3370,7 @@ func (x *ConstructRequest_PropertyDependencies) ProtoReflect() protoreflect.Mess // Deprecated: Use ConstructRequest_PropertyDependencies.ProtoReflect.Descriptor instead. func (*ConstructRequest_PropertyDependencies) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{24, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{26, 0} } func (x *ConstructRequest_PropertyDependencies) GetUrns() []string { @@ -3294,7 +3410,7 @@ type ConstructRequest_CustomTimeouts struct { func (x *ConstructRequest_CustomTimeouts) Reset() { *x = ConstructRequest_CustomTimeouts{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[43] + mi := &file_pulumi_provider_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3307,7 +3423,7 @@ func (x *ConstructRequest_CustomTimeouts) String() string { func (*ConstructRequest_CustomTimeouts) ProtoMessage() {} func (x *ConstructRequest_CustomTimeouts) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[43] + mi := &file_pulumi_provider_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3320,7 +3436,7 @@ func (x *ConstructRequest_CustomTimeouts) ProtoReflect() protoreflect.Message { // Deprecated: Use ConstructRequest_CustomTimeouts.ProtoReflect.Descriptor instead. func (*ConstructRequest_CustomTimeouts) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{24, 1} + return file_pulumi_provider_proto_rawDescGZIP(), []int{26, 1} } func (x *ConstructRequest_CustomTimeouts) GetCreate() string { @@ -3357,7 +3473,7 @@ type ConstructResponse_PropertyDependencies struct { func (x *ConstructResponse_PropertyDependencies) Reset() { *x = ConstructResponse_PropertyDependencies{} if protoimpl.UnsafeEnabled { - mi := &file_pulumi_provider_proto_msgTypes[47] + mi := &file_pulumi_provider_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3370,7 +3486,7 @@ func (x *ConstructResponse_PropertyDependencies) String() string { func (*ConstructResponse_PropertyDependencies) ProtoMessage() {} func (x *ConstructResponse_PropertyDependencies) ProtoReflect() protoreflect.Message { - mi := &file_pulumi_provider_proto_msgTypes[47] + mi := &file_pulumi_provider_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3383,7 +3499,7 @@ func (x *ConstructResponse_PropertyDependencies) ProtoReflect() protoreflect.Mes // Deprecated: Use ConstructResponse_PropertyDependencies.ProtoReflect.Descriptor instead. func (*ConstructResponse_PropertyDependencies) Descriptor() ([]byte, []int) { - return file_pulumi_provider_proto_rawDescGZIP(), []int{25, 0} + return file_pulumi_provider_proto_rawDescGZIP(), []int{27, 0} } func (x *ConstructResponse_PropertyDependencies) GetUrns() []string { @@ -3403,589 +3519,610 @@ var file_pulumi_provider_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xad, 0x02, 0x0a, 0x13, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x61, 0x72, - 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, 0x00, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, - 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, - 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x24, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x65, 0x74, 0x65, 0x72, 0x73, 0x41, 0x72, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x1a, 0x55, 0x0a, - 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x73, 0x22, 0x44, 0x0a, 0x14, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, - 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, - 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x70, 0x61, - 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x73, 0x75, 0x62, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x75, - 0x62, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0x2b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, 0xfd, 0x02, 0x0a, - 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x48, 0x0a, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, - 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x28, - 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x64, - 0x73, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x73, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, 0x73, 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x6c, 0x64, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x54, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x1a, 0x3c, - 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xff, 0x01, 0x0a, - 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, - 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x70, 0x70, - 0x6f, 0x72, 0x74, 0x73, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x72, 0x65, 0x76, 0x69, - 0x65, 0x77, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, - 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x21, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x61, - 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x73, - 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb2, - 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x51, 0x0a, 0x0b, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x69, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x2e, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, - 0x65, 0x79, 0x52, 0x0b, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x1a, - 0x42, 0x0a, 0x0a, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x0d, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x74, 0x6f, 0x6b, 0x12, 0x2b, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, - 0x61, 0x72, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x07, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x61, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x11, + 0x74, 0x6f, 0x22, 0xc8, 0x01, 0x0a, 0x18, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, + 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x25, 0x0a, 0x0e, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2a, 0x0a, 0x0e, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, + 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, + 0x52, 0x0d, 0x72, 0x6f, 0x6f, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x88, + 0x01, 0x01, 0x12, 0x30, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x10, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, + 0x79, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x64, 0x69, + 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x70, 0x72, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x5f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x1b, 0x0a, + 0x19, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, + 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xad, 0x02, 0x0a, 0x13, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x41, 0x72, 0x67, 0x73, 0x48, + 0x00, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, + 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, + 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, + 0x24, 0x0a, 0x0e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x41, 0x72, 0x67, + 0x73, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x04, 0x61, 0x72, 0x67, 0x73, 0x1a, 0x55, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0c, 0x0a, 0x0a, + 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x22, 0x44, 0x0a, 0x14, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x22, 0x84, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x70, 0x61, 0x63, + 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x73, 0x75, 0x62, 0x70, + 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x73, 0x75, 0x62, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, + 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x2b, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x22, 0xfd, 0x02, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x09, 0x76, 0x61, 0x72, + 0x69, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, + 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, + 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x12, 0x28, 0x0a, 0x10, 0x73, 0x65, 0x6e, 0x64, 0x73, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, + 0x73, 0x4f, 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3a, 0x0a, 0x1a, 0x73, 0x65, + 0x6e, 0x64, 0x73, 0x5f, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x5f, 0x74, + 0x6f, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x16, + 0x73, 0x65, 0x6e, 0x64, 0x73, 0x4f, 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x54, 0x6f, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x1a, 0x3c, 0x0a, 0x0e, 0x56, 0x61, 0x72, 0x69, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xff, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, + 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x50, 0x72, 0x65, 0x76, + 0x69, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, + 0x72, 0x74, 0x73, 0x50, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x4f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x63, 0x63, + 0x65, 0x70, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x21, 0x73, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, + 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x41, + 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb2, 0x01, 0x0a, 0x19, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x75, 0x72, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, + 0x4b, 0x65, 0x79, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, + 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x75, 0x6c, 0x75, + 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x2e, + 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x52, 0x0b, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x1a, 0x42, 0x0a, 0x0a, 0x4d, 0x69, 0x73, 0x73, 0x69, + 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x8b, 0x01, 0x0a, 0x0d, + 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x74, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x6f, 0x6b, 0x12, + 0x2b, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x4a, 0x04, 0x08, 0x03, + 0x10, 0x07, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x11, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x22, 0x76, 0x0a, 0x0e, 0x49, 0x6e, 0x76, + 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x33, 0x0a, 0x08, + 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, + 0x73, 0x22, 0xae, 0x06, 0x0a, 0x0b, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x74, 0x6f, 0x6b, 0x12, 0x2b, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, + 0x12, 0x55, 0x0a, 0x0f, 0x61, 0x72, 0x67, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, + 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x75, 0x6c, 0x75, + 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x41, 0x72, 0x67, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x61, 0x72, 0x67, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, + 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, + 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, + 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, + 0x6c, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, + 0x6c, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x22, 0x0a, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x5f, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x13, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x2a, 0x0a, 0x14, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6e, + 0x73, 0x1a, 0x6f, 0x0a, 0x14, 0x41, 0x72, 0x67, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x75, 0x6c, + 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, + 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, + 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x52, 0x08, 0x70, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, - 0x4c, 0x22, 0x76, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x4c, 0x52, 0x0f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, + 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0xf2, 0x02, 0x0a, 0x0c, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x33, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, - 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x22, 0xae, 0x06, 0x0a, 0x0b, 0x43, 0x61, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x6f, 0x6b, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x6f, 0x6b, 0x12, 0x2b, 0x0a, 0x04, 0x61, - 0x72, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x55, 0x0a, 0x0f, 0x61, 0x72, 0x67, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, - 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x67, 0x44, 0x65, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, - 0x61, 0x72, 0x67, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, - 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, - 0x3a, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x10, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x18, - 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, - 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, - 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x63, 0x63, - 0x65, 0x70, 0x74, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x2a, 0x0a, - 0x14, 0x41, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, - 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x1a, 0x6f, 0x0a, 0x14, 0x41, 0x72, 0x67, - 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, - 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x72, 0x67, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x4a, 0x04, 0x08, 0x05, 0x10, - 0x06, 0x4a, 0x04, 0x08, 0x0d, 0x10, 0x0e, 0x4a, 0x04, 0x08, 0x10, 0x10, 0x11, 0x4a, 0x04, 0x08, - 0x0f, 0x10, 0x10, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x52, 0x4c, 0x52, 0x0f, 0x70, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x73, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf2, 0x02, 0x0a, 0x0c, 0x43, - 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x12, 0x33, 0x0a, 0x08, - 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x73, 0x12, 0x5f, 0x0a, 0x12, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, - 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, - 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, - 0x65, 0x73, 0x1a, 0x28, 0x0a, 0x12, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, - 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6e, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x1a, 0x71, 0x0a, 0x17, - 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, - 0x63, 0x69, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xd1, 0x03, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, - 0x72, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x12, - 0x2b, 0x0a, 0x04, 0x6e, 0x65, 0x77, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x65, 0x77, 0x73, 0x12, 0x1e, 0x0a, 0x0a, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x65, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, - 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x1a, - 0xab, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, - 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x6d, 0x6f, - 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2d, - 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, - 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x02, 0x4a, 0x04, 0x08, - 0x04, 0x10, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, - 0x62, 0x65, 0x72, 0x22, 0x75, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, - 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x22, 0x42, 0x0a, 0x0c, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x8f, - 0x02, 0x0a, 0x0b, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, - 0x12, 0x2b, 0x0a, 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x12, 0x2b, 0x0a, - 0x04, 0x6e, 0x65, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x65, 0x77, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x67, - 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, - 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x69, 0x66, - 0x66, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x44, 0x69, 0x66, 0x66, 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, - 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x69, 0x66, 0x66, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x69, 0x66, - 0x66, 0x22, 0x60, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, - 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x44, 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, - 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x12, - 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, - 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, - 0x12, 0x0a, 0x0e, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, - 0x45, 0x10, 0x05, 0x22, 0xdd, 0x03, 0x0a, 0x0c, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x65, 0x66, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x07, - 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, - 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x73, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, - 0x69, 0x66, 0x66, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x64, 0x69, 0x66, 0x66, - 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, - 0x66, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, - 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0c, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, - 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, - 0x69, 0x66, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x1a, 0x58, 0x0a, 0x11, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5f, 0x0a, 0x12, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x1a, 0x28, 0x0a, 0x12, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, + 0x75, 0x72, 0x6e, 0x73, 0x1a, 0x71, 0x0a, 0x17, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x69, 0x66, 0x66, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x0b, 0x44, 0x69, 0x66, 0x66, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x4e, 0x4f, - 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x53, 0x4f, 0x4d, - 0x45, 0x10, 0x02, 0x22, 0xb6, 0x01, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, - 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, - 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x65, - 0x76, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x0e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, - 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xc1, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0c, - 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, - 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, - 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0xc5, 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6f, 0x6c, - 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x79, 0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2a, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, + 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd1, 0x03, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6f, 0x6c, + 0x64, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x65, 0x77, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, - 0x6e, 0x65, 0x77, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x24, - 0x0a, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x36, - 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x6c, 0x64, - 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x49, - 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x0d, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x37, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, - 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x65, 0x77, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x65, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, + 0x53, 0x65, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x49, 0x0a, 0x0a, + 0x61, 0x75, 0x74, 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0a, 0x61, 0x75, 0x74, + 0x6f, 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x1a, 0xab, 0x01, 0x0a, 0x11, 0x41, 0x75, 0x74, 0x6f, + 0x6e, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x23, 0x0a, + 0x0d, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x42, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x75, 0x74, 0x6f, 0x6e, 0x61, + 0x6d, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4d, 0x6f, 0x64, 0x65, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x2d, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, + 0x0a, 0x07, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x45, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x45, + 0x4e, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x49, 0x53, 0x41, + 0x42, 0x4c, 0x45, 0x10, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, + 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x75, 0x0a, 0x0d, 0x43, + 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x33, 0x0a, + 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, + 0x65, 0x73, 0x22, 0x42, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x46, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x16, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x8f, 0x02, 0x0a, 0x0b, 0x44, 0x69, 0x66, 0x66, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6f, 0x6c, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x12, 0x2b, 0x0a, 0x04, 0x6e, 0x65, 0x77, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x65, + 0x77, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, + 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x69, 0x66, 0x66, 0x12, 0x30, 0x0a, 0x04, 0x6b, 0x69, 0x6e, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, + 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x69, 0x66, 0x66, + 0x2e, 0x4b, 0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x44, 0x69, 0x66, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x69, 0x66, 0x66, 0x22, 0x60, 0x0a, 0x04, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x44, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x44, + 0x44, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x44, + 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x4c, 0x45, 0x54, + 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x50, 0x44, 0x41, 0x54, + 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x05, 0x22, 0xdd, 0x03, 0x0a, 0x0c, + 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, + 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x73, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, + 0x72, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, + 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, + 0x69, 0x66, 0x66, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x05, 0x64, 0x69, 0x66, 0x66, 0x73, 0x12, 0x4d, 0x0a, 0x0c, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x29, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, + 0x64, 0x44, 0x69, 0x66, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x12, 0x28, 0x0a, 0x0f, 0x68, 0x61, 0x73, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, 0x66, 0x66, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x68, 0x61, 0x73, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, + 0x66, 0x66, 0x1a, 0x58, 0x0a, 0x11, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x44, 0x69, + 0x66, 0x66, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, + 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x69, 0x66, + 0x66, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x3d, 0x0a, 0x0b, + 0x44, 0x69, 0x66, 0x66, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x0c, 0x44, + 0x49, 0x46, 0x46, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, + 0x09, 0x44, 0x49, 0x46, 0x46, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, + 0x44, 0x49, 0x46, 0x46, 0x5f, 0x53, 0x4f, 0x4d, 0x45, 0x10, 0x02, 0x22, 0xb6, 0x01, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, + 0x03, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, + 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, + 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, + 0x75, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x59, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, + 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x22, + 0xc1, 0x01, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x2f, 0x0a, + 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0xc5, + 0x02, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, + 0x72, 0x6e, 0x12, 0x2b, 0x0a, 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6f, 0x6c, 0x64, 0x73, 0x12, + 0x2b, 0x0a, 0x04, 0x6e, 0x65, 0x77, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x6e, 0x65, 0x77, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, + 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, + 0x72, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x5f, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x49, 0x0a, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x22, 0xe4, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x6c, 0x64, 0x5f, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x6f, 0x6c, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0xad, 0x0b, 0x0a, 0x10, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x3f, 0x0a, + 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, + 0x0a, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, + 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, + 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0xad, 0x0b, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x12, - 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x3f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x70, 0x61, 0x72, 0x61, 0x6c, 0x6c, 0x65, 0x6c, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, - 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x60, 0x0a, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x32, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x75, 0x6c, - 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, - 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, - 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, - 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x06, + 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x60, 0x0a, + 0x11, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, + 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, + 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, + 0x48, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x70, + 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0c, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, - 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x12, - 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x17, 0x61, 0x64, 0x64, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x61, 0x64, 0x64, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x75, - 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x52, 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, - 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x65, - 0x66, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, - 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x70, - 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, - 0x0e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, - 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x4f, 0x6e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, - 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x19, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x75, 0x74, - 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x2a, 0x0a, 0x14, 0x50, 0x72, 0x6f, - 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x04, 0x75, 0x72, 0x6e, 0x73, 0x1a, 0x58, 0x0a, 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x1a, - 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x76, 0x0a, 0x16, 0x49, 0x6e, - 0x70, 0x75, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, - 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x65, 0x70, 0x65, 0x6e, - 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0xdc, 0x02, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x61, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, - 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, - 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, - 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x1a, 0x2a, 0x0a, 0x14, 0x50, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, - 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x1a, 0x77, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, - 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, - 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, - 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, - 0x63, 0x69, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0xad, 0x01, 0x0a, 0x17, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x6e, 0x69, 0x74, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6f, 0x72, 0x67, + 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0c, 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, + 0x65, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, + 0x73, 0x12, 0x38, 0x0a, 0x17, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, + 0x65, 0x63, 0x72, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18, 0x12, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x17, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x65, + 0x63, 0x72, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x12, 0x52, 0x0a, 0x0e, 0x63, + 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x18, 0x13, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x52, + 0x0e, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, + 0x68, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, + 0x65, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x70, 0x6c, + 0x61, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x69, 0x67, 0x6e, 0x6f, 0x72, 0x65, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x17, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x6e, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6e, 0x4f, + 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x72, + 0x65, 0x74, 0x61, 0x69, 0x6e, 0x4f, 0x6e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x32, 0x0a, + 0x15, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x63, + 0x63, 0x65, 0x70, 0x74, 0x73, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x1a, 0x2a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x65, 0x70, + 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x1a, 0x58, 0x0a, + 0x0e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x1a, 0x76, 0x0a, 0x16, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x46, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3c, 0x0a, 0x0e, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, 0x02, 0x0a, 0x11, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, + 0x0a, 0x03, 0x75, 0x72, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6e, + 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, - 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x2f, - 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, - 0x41, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x22, 0x44, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x26, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x22, 0x33, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x73, 0x32, 0xd9, 0x0a, 0x0a, 0x10, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x51, 0x0a, 0x0c, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x2e, 0x70, 0x75, 0x6c, - 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, 0x75, 0x6c, - 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, - 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, - 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x2e, 0x70, 0x75, 0x6c, - 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, - 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x61, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, + 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x75, 0x6c, + 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x11, 0x73, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, + 0x65, 0x73, 0x1a, 0x2a, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x44, 0x65, + 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6e, 0x73, 0x1a, 0x77, + 0x0a, 0x16, 0x53, 0x74, 0x61, 0x74, 0x65, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, + 0x69, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x47, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x75, 0x6c, 0x75, + 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, + 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xad, 0x01, 0x0a, 0x17, 0x45, 0x72, 0x72, 0x6f, + 0x72, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x46, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x72, + 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, + 0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0x41, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x44, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x26, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x33, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x32, 0xb3, 0x0b, + 0x0a, 0x10, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x12, 0x58, 0x0a, 0x09, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x12, + 0x23, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, + 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, + 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x51, 0x0a, 0x0c, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x2e, 0x70, + 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x70, + 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x69, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x48, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x2e, 0x70, + 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, + 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0b, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, + 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, + 0x0a, 0x44, 0x69, 0x66, 0x66, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x70, 0x75, + 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, + 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x2e, 0x70, 0x75, + 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, + 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x6f, + 0x6b, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x49, + 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, + 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0c, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x75, 0x6c, 0x75, + 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x30, 0x01, 0x12, 0x39, 0x0a, 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x2e, 0x70, 0x75, 0x6c, + 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, + 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, - 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x0a, 0x44, - 0x69, 0x66, 0x66, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, - 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, - 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x48, 0x0a, 0x09, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x12, 0x1b, 0x2e, 0x70, 0x75, 0x6c, 0x75, - 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, - 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, - 0x12, 0x18, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x76, - 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x75, 0x6c, - 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x47, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, - 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x49, 0x6e, - 0x76, 0x6f, 0x6b, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x30, 0x01, - 0x12, 0x39, 0x0a, 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6c, - 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x05, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, - 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x44, 0x69, 0x66, - 0x66, 0x12, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, - 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, - 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x18, - 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, - 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x16, 0x2e, - 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, - 0x63, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x3f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x75, 0x6c, - 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x70, 0x75, - 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, - 0x48, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x70, - 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, - 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x06, 0x43, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x6c, 0x75, 0x67, - 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, - 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6c, 0x75, 0x67, 0x69, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x06, 0x41, 0x74, 0x74, 0x61, 0x63, - 0x68, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6c, - 0x75, 0x67, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, - 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, 0x73, 0x64, - 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x3b, 0x70, 0x75, - 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x44, + 0x69, 0x66, 0x66, 0x12, 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x75, + 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x69, 0x66, 0x66, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x12, 0x18, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x75, 0x6c, + 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x39, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, + 0x16, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x61, 0x64, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, + 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x3f, 0x0a, 0x06, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x70, + 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, + 0x70, 0x63, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x18, 0x2e, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x00, 0x12, 0x48, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x1b, + 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x70, 0x75, + 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x06, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x15, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6c, 0x75, + 0x67, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x06, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x12, 0x17, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x1a, 0x16, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x4b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x1d, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1e, 0x2e, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x2f, + 0x73, 0x64, 0x6b, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x3b, + 0x70, 0x75, 0x6c, 0x75, 0x6d, 0x69, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -4001,160 +4138,164 @@ func file_pulumi_provider_proto_rawDescGZIP() []byte { } var file_pulumi_provider_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_pulumi_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 49) +var file_pulumi_provider_proto_msgTypes = make([]protoimpl.MessageInfo, 51) var file_pulumi_provider_proto_goTypes = []interface{}{ (CheckRequest_AutonamingOptions_Mode)(0), // 0: pulumirpc.CheckRequest.AutonamingOptions.Mode (PropertyDiff_Kind)(0), // 1: pulumirpc.PropertyDiff.Kind (DiffResponse_DiffChanges)(0), // 2: pulumirpc.DiffResponse.DiffChanges - (*ParameterizeRequest)(nil), // 3: pulumirpc.ParameterizeRequest - (*ParameterizeResponse)(nil), // 4: pulumirpc.ParameterizeResponse - (*GetSchemaRequest)(nil), // 5: pulumirpc.GetSchemaRequest - (*GetSchemaResponse)(nil), // 6: pulumirpc.GetSchemaResponse - (*ConfigureRequest)(nil), // 7: pulumirpc.ConfigureRequest - (*ConfigureResponse)(nil), // 8: pulumirpc.ConfigureResponse - (*ConfigureErrorMissingKeys)(nil), // 9: pulumirpc.ConfigureErrorMissingKeys - (*InvokeRequest)(nil), // 10: pulumirpc.InvokeRequest - (*InvokeResponse)(nil), // 11: pulumirpc.InvokeResponse - (*CallRequest)(nil), // 12: pulumirpc.CallRequest - (*CallResponse)(nil), // 13: pulumirpc.CallResponse - (*CheckRequest)(nil), // 14: pulumirpc.CheckRequest - (*CheckResponse)(nil), // 15: pulumirpc.CheckResponse - (*CheckFailure)(nil), // 16: pulumirpc.CheckFailure - (*DiffRequest)(nil), // 17: pulumirpc.DiffRequest - (*PropertyDiff)(nil), // 18: pulumirpc.PropertyDiff - (*DiffResponse)(nil), // 19: pulumirpc.DiffResponse - (*CreateRequest)(nil), // 20: pulumirpc.CreateRequest - (*CreateResponse)(nil), // 21: pulumirpc.CreateResponse - (*ReadRequest)(nil), // 22: pulumirpc.ReadRequest - (*ReadResponse)(nil), // 23: pulumirpc.ReadResponse - (*UpdateRequest)(nil), // 24: pulumirpc.UpdateRequest - (*UpdateResponse)(nil), // 25: pulumirpc.UpdateResponse - (*DeleteRequest)(nil), // 26: pulumirpc.DeleteRequest - (*ConstructRequest)(nil), // 27: pulumirpc.ConstructRequest - (*ConstructResponse)(nil), // 28: pulumirpc.ConstructResponse - (*ErrorResourceInitFailed)(nil), // 29: pulumirpc.ErrorResourceInitFailed - (*GetMappingRequest)(nil), // 30: pulumirpc.GetMappingRequest - (*GetMappingResponse)(nil), // 31: pulumirpc.GetMappingResponse - (*GetMappingsRequest)(nil), // 32: pulumirpc.GetMappingsRequest - (*GetMappingsResponse)(nil), // 33: pulumirpc.GetMappingsResponse - (*ParameterizeRequest_ParametersArgs)(nil), // 34: pulumirpc.ParameterizeRequest.ParametersArgs - (*ParameterizeRequest_ParametersValue)(nil), // 35: pulumirpc.ParameterizeRequest.ParametersValue - nil, // 36: pulumirpc.ConfigureRequest.VariablesEntry - (*ConfigureErrorMissingKeys_MissingKey)(nil), // 37: pulumirpc.ConfigureErrorMissingKeys.MissingKey - (*CallRequest_ArgumentDependencies)(nil), // 38: pulumirpc.CallRequest.ArgumentDependencies - nil, // 39: pulumirpc.CallRequest.ArgDependenciesEntry - nil, // 40: pulumirpc.CallRequest.ConfigEntry - (*CallResponse_ReturnDependencies)(nil), // 41: pulumirpc.CallResponse.ReturnDependencies - nil, // 42: pulumirpc.CallResponse.ReturnDependenciesEntry - (*CheckRequest_AutonamingOptions)(nil), // 43: pulumirpc.CheckRequest.AutonamingOptions - nil, // 44: pulumirpc.DiffResponse.DetailedDiffEntry - (*ConstructRequest_PropertyDependencies)(nil), // 45: pulumirpc.ConstructRequest.PropertyDependencies - (*ConstructRequest_CustomTimeouts)(nil), // 46: pulumirpc.ConstructRequest.CustomTimeouts - nil, // 47: pulumirpc.ConstructRequest.ConfigEntry - nil, // 48: pulumirpc.ConstructRequest.InputDependenciesEntry - nil, // 49: pulumirpc.ConstructRequest.ProvidersEntry - (*ConstructResponse_PropertyDependencies)(nil), // 50: pulumirpc.ConstructResponse.PropertyDependencies - nil, // 51: pulumirpc.ConstructResponse.StateDependenciesEntry - (*structpb.Struct)(nil), // 52: google.protobuf.Struct - (*emptypb.Empty)(nil), // 53: google.protobuf.Empty - (*PluginAttach)(nil), // 54: pulumirpc.PluginAttach - (*PluginInfo)(nil), // 55: pulumirpc.PluginInfo + (*ProviderHandshakeRequest)(nil), // 3: pulumirpc.ProviderHandshakeRequest + (*ProviderHandshakeResponse)(nil), // 4: pulumirpc.ProviderHandshakeResponse + (*ParameterizeRequest)(nil), // 5: pulumirpc.ParameterizeRequest + (*ParameterizeResponse)(nil), // 6: pulumirpc.ParameterizeResponse + (*GetSchemaRequest)(nil), // 7: pulumirpc.GetSchemaRequest + (*GetSchemaResponse)(nil), // 8: pulumirpc.GetSchemaResponse + (*ConfigureRequest)(nil), // 9: pulumirpc.ConfigureRequest + (*ConfigureResponse)(nil), // 10: pulumirpc.ConfigureResponse + (*ConfigureErrorMissingKeys)(nil), // 11: pulumirpc.ConfigureErrorMissingKeys + (*InvokeRequest)(nil), // 12: pulumirpc.InvokeRequest + (*InvokeResponse)(nil), // 13: pulumirpc.InvokeResponse + (*CallRequest)(nil), // 14: pulumirpc.CallRequest + (*CallResponse)(nil), // 15: pulumirpc.CallResponse + (*CheckRequest)(nil), // 16: pulumirpc.CheckRequest + (*CheckResponse)(nil), // 17: pulumirpc.CheckResponse + (*CheckFailure)(nil), // 18: pulumirpc.CheckFailure + (*DiffRequest)(nil), // 19: pulumirpc.DiffRequest + (*PropertyDiff)(nil), // 20: pulumirpc.PropertyDiff + (*DiffResponse)(nil), // 21: pulumirpc.DiffResponse + (*CreateRequest)(nil), // 22: pulumirpc.CreateRequest + (*CreateResponse)(nil), // 23: pulumirpc.CreateResponse + (*ReadRequest)(nil), // 24: pulumirpc.ReadRequest + (*ReadResponse)(nil), // 25: pulumirpc.ReadResponse + (*UpdateRequest)(nil), // 26: pulumirpc.UpdateRequest + (*UpdateResponse)(nil), // 27: pulumirpc.UpdateResponse + (*DeleteRequest)(nil), // 28: pulumirpc.DeleteRequest + (*ConstructRequest)(nil), // 29: pulumirpc.ConstructRequest + (*ConstructResponse)(nil), // 30: pulumirpc.ConstructResponse + (*ErrorResourceInitFailed)(nil), // 31: pulumirpc.ErrorResourceInitFailed + (*GetMappingRequest)(nil), // 32: pulumirpc.GetMappingRequest + (*GetMappingResponse)(nil), // 33: pulumirpc.GetMappingResponse + (*GetMappingsRequest)(nil), // 34: pulumirpc.GetMappingsRequest + (*GetMappingsResponse)(nil), // 35: pulumirpc.GetMappingsResponse + (*ParameterizeRequest_ParametersArgs)(nil), // 36: pulumirpc.ParameterizeRequest.ParametersArgs + (*ParameterizeRequest_ParametersValue)(nil), // 37: pulumirpc.ParameterizeRequest.ParametersValue + nil, // 38: pulumirpc.ConfigureRequest.VariablesEntry + (*ConfigureErrorMissingKeys_MissingKey)(nil), // 39: pulumirpc.ConfigureErrorMissingKeys.MissingKey + (*CallRequest_ArgumentDependencies)(nil), // 40: pulumirpc.CallRequest.ArgumentDependencies + nil, // 41: pulumirpc.CallRequest.ArgDependenciesEntry + nil, // 42: pulumirpc.CallRequest.ConfigEntry + (*CallResponse_ReturnDependencies)(nil), // 43: pulumirpc.CallResponse.ReturnDependencies + nil, // 44: pulumirpc.CallResponse.ReturnDependenciesEntry + (*CheckRequest_AutonamingOptions)(nil), // 45: pulumirpc.CheckRequest.AutonamingOptions + nil, // 46: pulumirpc.DiffResponse.DetailedDiffEntry + (*ConstructRequest_PropertyDependencies)(nil), // 47: pulumirpc.ConstructRequest.PropertyDependencies + (*ConstructRequest_CustomTimeouts)(nil), // 48: pulumirpc.ConstructRequest.CustomTimeouts + nil, // 49: pulumirpc.ConstructRequest.ConfigEntry + nil, // 50: pulumirpc.ConstructRequest.InputDependenciesEntry + nil, // 51: pulumirpc.ConstructRequest.ProvidersEntry + (*ConstructResponse_PropertyDependencies)(nil), // 52: pulumirpc.ConstructResponse.PropertyDependencies + nil, // 53: pulumirpc.ConstructResponse.StateDependenciesEntry + (*structpb.Struct)(nil), // 54: google.protobuf.Struct + (*emptypb.Empty)(nil), // 55: google.protobuf.Empty + (*PluginAttach)(nil), // 56: pulumirpc.PluginAttach + (*PluginInfo)(nil), // 57: pulumirpc.PluginInfo } var file_pulumi_provider_proto_depIdxs = []int32{ - 34, // 0: pulumirpc.ParameterizeRequest.args:type_name -> pulumirpc.ParameterizeRequest.ParametersArgs - 35, // 1: pulumirpc.ParameterizeRequest.value:type_name -> pulumirpc.ParameterizeRequest.ParametersValue - 36, // 2: pulumirpc.ConfigureRequest.variables:type_name -> pulumirpc.ConfigureRequest.VariablesEntry - 52, // 3: pulumirpc.ConfigureRequest.args:type_name -> google.protobuf.Struct - 37, // 4: pulumirpc.ConfigureErrorMissingKeys.missingKeys:type_name -> pulumirpc.ConfigureErrorMissingKeys.MissingKey - 52, // 5: pulumirpc.InvokeRequest.args:type_name -> google.protobuf.Struct - 52, // 6: pulumirpc.InvokeResponse.return:type_name -> google.protobuf.Struct - 16, // 7: pulumirpc.InvokeResponse.failures:type_name -> pulumirpc.CheckFailure - 52, // 8: pulumirpc.CallRequest.args:type_name -> google.protobuf.Struct - 39, // 9: pulumirpc.CallRequest.argDependencies:type_name -> pulumirpc.CallRequest.ArgDependenciesEntry - 40, // 10: pulumirpc.CallRequest.config:type_name -> pulumirpc.CallRequest.ConfigEntry - 52, // 11: pulumirpc.CallResponse.return:type_name -> google.protobuf.Struct - 16, // 12: pulumirpc.CallResponse.failures:type_name -> pulumirpc.CheckFailure - 42, // 13: pulumirpc.CallResponse.returnDependencies:type_name -> pulumirpc.CallResponse.ReturnDependenciesEntry - 52, // 14: pulumirpc.CheckRequest.olds:type_name -> google.protobuf.Struct - 52, // 15: pulumirpc.CheckRequest.news:type_name -> google.protobuf.Struct - 43, // 16: pulumirpc.CheckRequest.autonaming:type_name -> pulumirpc.CheckRequest.AutonamingOptions - 52, // 17: pulumirpc.CheckResponse.inputs:type_name -> google.protobuf.Struct - 16, // 18: pulumirpc.CheckResponse.failures:type_name -> pulumirpc.CheckFailure - 52, // 19: pulumirpc.DiffRequest.olds:type_name -> google.protobuf.Struct - 52, // 20: pulumirpc.DiffRequest.news:type_name -> google.protobuf.Struct - 52, // 21: pulumirpc.DiffRequest.old_inputs:type_name -> google.protobuf.Struct + 36, // 0: pulumirpc.ParameterizeRequest.args:type_name -> pulumirpc.ParameterizeRequest.ParametersArgs + 37, // 1: pulumirpc.ParameterizeRequest.value:type_name -> pulumirpc.ParameterizeRequest.ParametersValue + 38, // 2: pulumirpc.ConfigureRequest.variables:type_name -> pulumirpc.ConfigureRequest.VariablesEntry + 54, // 3: pulumirpc.ConfigureRequest.args:type_name -> google.protobuf.Struct + 39, // 4: pulumirpc.ConfigureErrorMissingKeys.missingKeys:type_name -> pulumirpc.ConfigureErrorMissingKeys.MissingKey + 54, // 5: pulumirpc.InvokeRequest.args:type_name -> google.protobuf.Struct + 54, // 6: pulumirpc.InvokeResponse.return:type_name -> google.protobuf.Struct + 18, // 7: pulumirpc.InvokeResponse.failures:type_name -> pulumirpc.CheckFailure + 54, // 8: pulumirpc.CallRequest.args:type_name -> google.protobuf.Struct + 41, // 9: pulumirpc.CallRequest.argDependencies:type_name -> pulumirpc.CallRequest.ArgDependenciesEntry + 42, // 10: pulumirpc.CallRequest.config:type_name -> pulumirpc.CallRequest.ConfigEntry + 54, // 11: pulumirpc.CallResponse.return:type_name -> google.protobuf.Struct + 18, // 12: pulumirpc.CallResponse.failures:type_name -> pulumirpc.CheckFailure + 44, // 13: pulumirpc.CallResponse.returnDependencies:type_name -> pulumirpc.CallResponse.ReturnDependenciesEntry + 54, // 14: pulumirpc.CheckRequest.olds:type_name -> google.protobuf.Struct + 54, // 15: pulumirpc.CheckRequest.news:type_name -> google.protobuf.Struct + 45, // 16: pulumirpc.CheckRequest.autonaming:type_name -> pulumirpc.CheckRequest.AutonamingOptions + 54, // 17: pulumirpc.CheckResponse.inputs:type_name -> google.protobuf.Struct + 18, // 18: pulumirpc.CheckResponse.failures:type_name -> pulumirpc.CheckFailure + 54, // 19: pulumirpc.DiffRequest.olds:type_name -> google.protobuf.Struct + 54, // 20: pulumirpc.DiffRequest.news:type_name -> google.protobuf.Struct + 54, // 21: pulumirpc.DiffRequest.old_inputs:type_name -> google.protobuf.Struct 1, // 22: pulumirpc.PropertyDiff.kind:type_name -> pulumirpc.PropertyDiff.Kind 2, // 23: pulumirpc.DiffResponse.changes:type_name -> pulumirpc.DiffResponse.DiffChanges - 44, // 24: pulumirpc.DiffResponse.detailedDiff:type_name -> pulumirpc.DiffResponse.DetailedDiffEntry - 52, // 25: pulumirpc.CreateRequest.properties:type_name -> google.protobuf.Struct - 52, // 26: pulumirpc.CreateResponse.properties:type_name -> google.protobuf.Struct - 52, // 27: pulumirpc.ReadRequest.properties:type_name -> google.protobuf.Struct - 52, // 28: pulumirpc.ReadRequest.inputs:type_name -> google.protobuf.Struct - 52, // 29: pulumirpc.ReadResponse.properties:type_name -> google.protobuf.Struct - 52, // 30: pulumirpc.ReadResponse.inputs:type_name -> google.protobuf.Struct - 52, // 31: pulumirpc.UpdateRequest.olds:type_name -> google.protobuf.Struct - 52, // 32: pulumirpc.UpdateRequest.news:type_name -> google.protobuf.Struct - 52, // 33: pulumirpc.UpdateRequest.old_inputs:type_name -> google.protobuf.Struct - 52, // 34: pulumirpc.UpdateResponse.properties:type_name -> google.protobuf.Struct - 52, // 35: pulumirpc.DeleteRequest.properties:type_name -> google.protobuf.Struct - 52, // 36: pulumirpc.DeleteRequest.old_inputs:type_name -> google.protobuf.Struct - 47, // 37: pulumirpc.ConstructRequest.config:type_name -> pulumirpc.ConstructRequest.ConfigEntry - 52, // 38: pulumirpc.ConstructRequest.inputs:type_name -> google.protobuf.Struct - 48, // 39: pulumirpc.ConstructRequest.inputDependencies:type_name -> pulumirpc.ConstructRequest.InputDependenciesEntry - 49, // 40: pulumirpc.ConstructRequest.providers:type_name -> pulumirpc.ConstructRequest.ProvidersEntry - 46, // 41: pulumirpc.ConstructRequest.customTimeouts:type_name -> pulumirpc.ConstructRequest.CustomTimeouts - 52, // 42: pulumirpc.ConstructResponse.state:type_name -> google.protobuf.Struct - 51, // 43: pulumirpc.ConstructResponse.stateDependencies:type_name -> pulumirpc.ConstructResponse.StateDependenciesEntry - 52, // 44: pulumirpc.ErrorResourceInitFailed.properties:type_name -> google.protobuf.Struct - 52, // 45: pulumirpc.ErrorResourceInitFailed.inputs:type_name -> google.protobuf.Struct - 38, // 46: pulumirpc.CallRequest.ArgDependenciesEntry.value:type_name -> pulumirpc.CallRequest.ArgumentDependencies - 41, // 47: pulumirpc.CallResponse.ReturnDependenciesEntry.value:type_name -> pulumirpc.CallResponse.ReturnDependencies + 46, // 24: pulumirpc.DiffResponse.detailedDiff:type_name -> pulumirpc.DiffResponse.DetailedDiffEntry + 54, // 25: pulumirpc.CreateRequest.properties:type_name -> google.protobuf.Struct + 54, // 26: pulumirpc.CreateResponse.properties:type_name -> google.protobuf.Struct + 54, // 27: pulumirpc.ReadRequest.properties:type_name -> google.protobuf.Struct + 54, // 28: pulumirpc.ReadRequest.inputs:type_name -> google.protobuf.Struct + 54, // 29: pulumirpc.ReadResponse.properties:type_name -> google.protobuf.Struct + 54, // 30: pulumirpc.ReadResponse.inputs:type_name -> google.protobuf.Struct + 54, // 31: pulumirpc.UpdateRequest.olds:type_name -> google.protobuf.Struct + 54, // 32: pulumirpc.UpdateRequest.news:type_name -> google.protobuf.Struct + 54, // 33: pulumirpc.UpdateRequest.old_inputs:type_name -> google.protobuf.Struct + 54, // 34: pulumirpc.UpdateResponse.properties:type_name -> google.protobuf.Struct + 54, // 35: pulumirpc.DeleteRequest.properties:type_name -> google.protobuf.Struct + 54, // 36: pulumirpc.DeleteRequest.old_inputs:type_name -> google.protobuf.Struct + 49, // 37: pulumirpc.ConstructRequest.config:type_name -> pulumirpc.ConstructRequest.ConfigEntry + 54, // 38: pulumirpc.ConstructRequest.inputs:type_name -> google.protobuf.Struct + 50, // 39: pulumirpc.ConstructRequest.inputDependencies:type_name -> pulumirpc.ConstructRequest.InputDependenciesEntry + 51, // 40: pulumirpc.ConstructRequest.providers:type_name -> pulumirpc.ConstructRequest.ProvidersEntry + 48, // 41: pulumirpc.ConstructRequest.customTimeouts:type_name -> pulumirpc.ConstructRequest.CustomTimeouts + 54, // 42: pulumirpc.ConstructResponse.state:type_name -> google.protobuf.Struct + 53, // 43: pulumirpc.ConstructResponse.stateDependencies:type_name -> pulumirpc.ConstructResponse.StateDependenciesEntry + 54, // 44: pulumirpc.ErrorResourceInitFailed.properties:type_name -> google.protobuf.Struct + 54, // 45: pulumirpc.ErrorResourceInitFailed.inputs:type_name -> google.protobuf.Struct + 40, // 46: pulumirpc.CallRequest.ArgDependenciesEntry.value:type_name -> pulumirpc.CallRequest.ArgumentDependencies + 43, // 47: pulumirpc.CallResponse.ReturnDependenciesEntry.value:type_name -> pulumirpc.CallResponse.ReturnDependencies 0, // 48: pulumirpc.CheckRequest.AutonamingOptions.mode:type_name -> pulumirpc.CheckRequest.AutonamingOptions.Mode - 18, // 49: pulumirpc.DiffResponse.DetailedDiffEntry.value:type_name -> pulumirpc.PropertyDiff - 45, // 50: pulumirpc.ConstructRequest.InputDependenciesEntry.value:type_name -> pulumirpc.ConstructRequest.PropertyDependencies - 50, // 51: pulumirpc.ConstructResponse.StateDependenciesEntry.value:type_name -> pulumirpc.ConstructResponse.PropertyDependencies - 3, // 52: pulumirpc.ResourceProvider.Parameterize:input_type -> pulumirpc.ParameterizeRequest - 5, // 53: pulumirpc.ResourceProvider.GetSchema:input_type -> pulumirpc.GetSchemaRequest - 14, // 54: pulumirpc.ResourceProvider.CheckConfig:input_type -> pulumirpc.CheckRequest - 17, // 55: pulumirpc.ResourceProvider.DiffConfig:input_type -> pulumirpc.DiffRequest - 7, // 56: pulumirpc.ResourceProvider.Configure:input_type -> pulumirpc.ConfigureRequest - 10, // 57: pulumirpc.ResourceProvider.Invoke:input_type -> pulumirpc.InvokeRequest - 10, // 58: pulumirpc.ResourceProvider.StreamInvoke:input_type -> pulumirpc.InvokeRequest - 12, // 59: pulumirpc.ResourceProvider.Call:input_type -> pulumirpc.CallRequest - 14, // 60: pulumirpc.ResourceProvider.Check:input_type -> pulumirpc.CheckRequest - 17, // 61: pulumirpc.ResourceProvider.Diff:input_type -> pulumirpc.DiffRequest - 20, // 62: pulumirpc.ResourceProvider.Create:input_type -> pulumirpc.CreateRequest - 22, // 63: pulumirpc.ResourceProvider.Read:input_type -> pulumirpc.ReadRequest - 24, // 64: pulumirpc.ResourceProvider.Update:input_type -> pulumirpc.UpdateRequest - 26, // 65: pulumirpc.ResourceProvider.Delete:input_type -> pulumirpc.DeleteRequest - 27, // 66: pulumirpc.ResourceProvider.Construct:input_type -> pulumirpc.ConstructRequest - 53, // 67: pulumirpc.ResourceProvider.Cancel:input_type -> google.protobuf.Empty - 53, // 68: pulumirpc.ResourceProvider.GetPluginInfo:input_type -> google.protobuf.Empty - 54, // 69: pulumirpc.ResourceProvider.Attach:input_type -> pulumirpc.PluginAttach - 30, // 70: pulumirpc.ResourceProvider.GetMapping:input_type -> pulumirpc.GetMappingRequest - 32, // 71: pulumirpc.ResourceProvider.GetMappings:input_type -> pulumirpc.GetMappingsRequest - 4, // 72: pulumirpc.ResourceProvider.Parameterize:output_type -> pulumirpc.ParameterizeResponse - 6, // 73: pulumirpc.ResourceProvider.GetSchema:output_type -> pulumirpc.GetSchemaResponse - 15, // 74: pulumirpc.ResourceProvider.CheckConfig:output_type -> pulumirpc.CheckResponse - 19, // 75: pulumirpc.ResourceProvider.DiffConfig:output_type -> pulumirpc.DiffResponse - 8, // 76: pulumirpc.ResourceProvider.Configure:output_type -> pulumirpc.ConfigureResponse - 11, // 77: pulumirpc.ResourceProvider.Invoke:output_type -> pulumirpc.InvokeResponse - 11, // 78: pulumirpc.ResourceProvider.StreamInvoke:output_type -> pulumirpc.InvokeResponse - 13, // 79: pulumirpc.ResourceProvider.Call:output_type -> pulumirpc.CallResponse - 15, // 80: pulumirpc.ResourceProvider.Check:output_type -> pulumirpc.CheckResponse - 19, // 81: pulumirpc.ResourceProvider.Diff:output_type -> pulumirpc.DiffResponse - 21, // 82: pulumirpc.ResourceProvider.Create:output_type -> pulumirpc.CreateResponse - 23, // 83: pulumirpc.ResourceProvider.Read:output_type -> pulumirpc.ReadResponse - 25, // 84: pulumirpc.ResourceProvider.Update:output_type -> pulumirpc.UpdateResponse - 53, // 85: pulumirpc.ResourceProvider.Delete:output_type -> google.protobuf.Empty - 28, // 86: pulumirpc.ResourceProvider.Construct:output_type -> pulumirpc.ConstructResponse - 53, // 87: pulumirpc.ResourceProvider.Cancel:output_type -> google.protobuf.Empty - 55, // 88: pulumirpc.ResourceProvider.GetPluginInfo:output_type -> pulumirpc.PluginInfo - 53, // 89: pulumirpc.ResourceProvider.Attach:output_type -> google.protobuf.Empty - 31, // 90: pulumirpc.ResourceProvider.GetMapping:output_type -> pulumirpc.GetMappingResponse - 33, // 91: pulumirpc.ResourceProvider.GetMappings:output_type -> pulumirpc.GetMappingsResponse - 72, // [72:92] is the sub-list for method output_type - 52, // [52:72] is the sub-list for method input_type + 20, // 49: pulumirpc.DiffResponse.DetailedDiffEntry.value:type_name -> pulumirpc.PropertyDiff + 47, // 50: pulumirpc.ConstructRequest.InputDependenciesEntry.value:type_name -> pulumirpc.ConstructRequest.PropertyDependencies + 52, // 51: pulumirpc.ConstructResponse.StateDependenciesEntry.value:type_name -> pulumirpc.ConstructResponse.PropertyDependencies + 3, // 52: pulumirpc.ResourceProvider.Handshake:input_type -> pulumirpc.ProviderHandshakeRequest + 5, // 53: pulumirpc.ResourceProvider.Parameterize:input_type -> pulumirpc.ParameterizeRequest + 7, // 54: pulumirpc.ResourceProvider.GetSchema:input_type -> pulumirpc.GetSchemaRequest + 16, // 55: pulumirpc.ResourceProvider.CheckConfig:input_type -> pulumirpc.CheckRequest + 19, // 56: pulumirpc.ResourceProvider.DiffConfig:input_type -> pulumirpc.DiffRequest + 9, // 57: pulumirpc.ResourceProvider.Configure:input_type -> pulumirpc.ConfigureRequest + 12, // 58: pulumirpc.ResourceProvider.Invoke:input_type -> pulumirpc.InvokeRequest + 12, // 59: pulumirpc.ResourceProvider.StreamInvoke:input_type -> pulumirpc.InvokeRequest + 14, // 60: pulumirpc.ResourceProvider.Call:input_type -> pulumirpc.CallRequest + 16, // 61: pulumirpc.ResourceProvider.Check:input_type -> pulumirpc.CheckRequest + 19, // 62: pulumirpc.ResourceProvider.Diff:input_type -> pulumirpc.DiffRequest + 22, // 63: pulumirpc.ResourceProvider.Create:input_type -> pulumirpc.CreateRequest + 24, // 64: pulumirpc.ResourceProvider.Read:input_type -> pulumirpc.ReadRequest + 26, // 65: pulumirpc.ResourceProvider.Update:input_type -> pulumirpc.UpdateRequest + 28, // 66: pulumirpc.ResourceProvider.Delete:input_type -> pulumirpc.DeleteRequest + 29, // 67: pulumirpc.ResourceProvider.Construct:input_type -> pulumirpc.ConstructRequest + 55, // 68: pulumirpc.ResourceProvider.Cancel:input_type -> google.protobuf.Empty + 55, // 69: pulumirpc.ResourceProvider.GetPluginInfo:input_type -> google.protobuf.Empty + 56, // 70: pulumirpc.ResourceProvider.Attach:input_type -> pulumirpc.PluginAttach + 32, // 71: pulumirpc.ResourceProvider.GetMapping:input_type -> pulumirpc.GetMappingRequest + 34, // 72: pulumirpc.ResourceProvider.GetMappings:input_type -> pulumirpc.GetMappingsRequest + 4, // 73: pulumirpc.ResourceProvider.Handshake:output_type -> pulumirpc.ProviderHandshakeResponse + 6, // 74: pulumirpc.ResourceProvider.Parameterize:output_type -> pulumirpc.ParameterizeResponse + 8, // 75: pulumirpc.ResourceProvider.GetSchema:output_type -> pulumirpc.GetSchemaResponse + 17, // 76: pulumirpc.ResourceProvider.CheckConfig:output_type -> pulumirpc.CheckResponse + 21, // 77: pulumirpc.ResourceProvider.DiffConfig:output_type -> pulumirpc.DiffResponse + 10, // 78: pulumirpc.ResourceProvider.Configure:output_type -> pulumirpc.ConfigureResponse + 13, // 79: pulumirpc.ResourceProvider.Invoke:output_type -> pulumirpc.InvokeResponse + 13, // 80: pulumirpc.ResourceProvider.StreamInvoke:output_type -> pulumirpc.InvokeResponse + 15, // 81: pulumirpc.ResourceProvider.Call:output_type -> pulumirpc.CallResponse + 17, // 82: pulumirpc.ResourceProvider.Check:output_type -> pulumirpc.CheckResponse + 21, // 83: pulumirpc.ResourceProvider.Diff:output_type -> pulumirpc.DiffResponse + 23, // 84: pulumirpc.ResourceProvider.Create:output_type -> pulumirpc.CreateResponse + 25, // 85: pulumirpc.ResourceProvider.Read:output_type -> pulumirpc.ReadResponse + 27, // 86: pulumirpc.ResourceProvider.Update:output_type -> pulumirpc.UpdateResponse + 55, // 87: pulumirpc.ResourceProvider.Delete:output_type -> google.protobuf.Empty + 30, // 88: pulumirpc.ResourceProvider.Construct:output_type -> pulumirpc.ConstructResponse + 55, // 89: pulumirpc.ResourceProvider.Cancel:output_type -> google.protobuf.Empty + 57, // 90: pulumirpc.ResourceProvider.GetPluginInfo:output_type -> pulumirpc.PluginInfo + 55, // 91: pulumirpc.ResourceProvider.Attach:output_type -> google.protobuf.Empty + 33, // 92: pulumirpc.ResourceProvider.GetMapping:output_type -> pulumirpc.GetMappingResponse + 35, // 93: pulumirpc.ResourceProvider.GetMappings:output_type -> pulumirpc.GetMappingsResponse + 73, // [73:94] is the sub-list for method output_type + 52, // [52:73] is the sub-list for method input_type 52, // [52:52] is the sub-list for extension type_name 52, // [52:52] is the sub-list for extension extendee 0, // [0:52] is the sub-list for field type_name @@ -4168,7 +4309,7 @@ func file_pulumi_provider_proto_init() { file_pulumi_plugin_proto_init() if !protoimpl.UnsafeEnabled { file_pulumi_provider_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParameterizeRequest); i { + switch v := v.(*ProviderHandshakeRequest); i { case 0: return &v.state case 1: @@ -4180,7 +4321,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParameterizeResponse); i { + switch v := v.(*ProviderHandshakeResponse); i { case 0: return &v.state case 1: @@ -4192,7 +4333,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSchemaRequest); i { + switch v := v.(*ParameterizeRequest); i { case 0: return &v.state case 1: @@ -4204,7 +4345,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetSchemaResponse); i { + switch v := v.(*ParameterizeResponse); i { case 0: return &v.state case 1: @@ -4216,7 +4357,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigureRequest); i { + switch v := v.(*GetSchemaRequest); i { case 0: return &v.state case 1: @@ -4228,7 +4369,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigureResponse); i { + switch v := v.(*GetSchemaResponse); i { case 0: return &v.state case 1: @@ -4240,7 +4381,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConfigureErrorMissingKeys); i { + switch v := v.(*ConfigureRequest); i { case 0: return &v.state case 1: @@ -4252,7 +4393,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvokeRequest); i { + switch v := v.(*ConfigureResponse); i { case 0: return &v.state case 1: @@ -4264,7 +4405,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InvokeResponse); i { + switch v := v.(*ConfigureErrorMissingKeys); i { case 0: return &v.state case 1: @@ -4276,7 +4417,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallRequest); i { + switch v := v.(*InvokeRequest); i { case 0: return &v.state case 1: @@ -4288,7 +4429,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CallResponse); i { + switch v := v.(*InvokeResponse); i { case 0: return &v.state case 1: @@ -4300,7 +4441,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckRequest); i { + switch v := v.(*CallRequest); i { case 0: return &v.state case 1: @@ -4312,7 +4453,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckResponse); i { + switch v := v.(*CallResponse); i { case 0: return &v.state case 1: @@ -4324,7 +4465,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckFailure); i { + switch v := v.(*CheckRequest); i { case 0: return &v.state case 1: @@ -4336,7 +4477,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiffRequest); i { + switch v := v.(*CheckResponse); i { case 0: return &v.state case 1: @@ -4348,7 +4489,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PropertyDiff); i { + switch v := v.(*CheckFailure); i { case 0: return &v.state case 1: @@ -4360,7 +4501,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DiffResponse); i { + switch v := v.(*DiffRequest); i { case 0: return &v.state case 1: @@ -4372,7 +4513,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateRequest); i { + switch v := v.(*PropertyDiff); i { case 0: return &v.state case 1: @@ -4384,7 +4525,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateResponse); i { + switch v := v.(*DiffResponse); i { case 0: return &v.state case 1: @@ -4396,7 +4537,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadRequest); i { + switch v := v.(*CreateRequest); i { case 0: return &v.state case 1: @@ -4408,7 +4549,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadResponse); i { + switch v := v.(*CreateResponse); i { case 0: return &v.state case 1: @@ -4420,7 +4561,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateRequest); i { + switch v := v.(*ReadRequest); i { case 0: return &v.state case 1: @@ -4432,7 +4573,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateResponse); i { + switch v := v.(*ReadResponse); i { case 0: return &v.state case 1: @@ -4444,7 +4585,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteRequest); i { + switch v := v.(*UpdateRequest); i { case 0: return &v.state case 1: @@ -4456,7 +4597,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConstructRequest); i { + switch v := v.(*UpdateResponse); i { case 0: return &v.state case 1: @@ -4468,7 +4609,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConstructResponse); i { + switch v := v.(*DeleteRequest); i { case 0: return &v.state case 1: @@ -4480,7 +4621,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ErrorResourceInitFailed); i { + switch v := v.(*ConstructRequest); i { case 0: return &v.state case 1: @@ -4492,7 +4633,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMappingRequest); i { + switch v := v.(*ConstructResponse); i { case 0: return &v.state case 1: @@ -4504,7 +4645,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMappingResponse); i { + switch v := v.(*ErrorResourceInitFailed); i { case 0: return &v.state case 1: @@ -4516,7 +4657,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMappingsRequest); i { + switch v := v.(*GetMappingRequest); i { case 0: return &v.state case 1: @@ -4528,7 +4669,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetMappingsResponse); i { + switch v := v.(*GetMappingResponse); i { case 0: return &v.state case 1: @@ -4540,7 +4681,7 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParameterizeRequest_ParametersArgs); i { + switch v := v.(*GetMappingsRequest); i { case 0: return &v.state case 1: @@ -4552,7 +4693,19 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParameterizeRequest_ParametersValue); i { + switch v := v.(*GetMappingsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pulumi_provider_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParameterizeRequest_ParametersArgs); i { case 0: return &v.state case 1: @@ -4564,6 +4717,18 @@ func file_pulumi_provider_proto_init() { } } file_pulumi_provider_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ParameterizeRequest_ParametersValue); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pulumi_provider_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConfigureErrorMissingKeys_MissingKey); i { case 0: return &v.state @@ -4575,7 +4740,7 @@ func file_pulumi_provider_proto_init() { return nil } } - file_pulumi_provider_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_pulumi_provider_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CallRequest_ArgumentDependencies); i { case 0: return &v.state @@ -4587,7 +4752,7 @@ func file_pulumi_provider_proto_init() { return nil } } - file_pulumi_provider_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_pulumi_provider_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CallResponse_ReturnDependencies); i { case 0: return &v.state @@ -4599,7 +4764,7 @@ func file_pulumi_provider_proto_init() { return nil } } - file_pulumi_provider_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_pulumi_provider_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckRequest_AutonamingOptions); i { case 0: return &v.state @@ -4611,7 +4776,7 @@ func file_pulumi_provider_proto_init() { return nil } } - file_pulumi_provider_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_pulumi_provider_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConstructRequest_PropertyDependencies); i { case 0: return &v.state @@ -4623,7 +4788,7 @@ func file_pulumi_provider_proto_init() { return nil } } - file_pulumi_provider_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_pulumi_provider_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConstructRequest_CustomTimeouts); i { case 0: return &v.state @@ -4635,7 +4800,7 @@ func file_pulumi_provider_proto_init() { return nil } } - file_pulumi_provider_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_pulumi_provider_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ConstructResponse_PropertyDependencies); i { case 0: return &v.state @@ -4648,7 +4813,8 @@ func file_pulumi_provider_proto_init() { } } } - file_pulumi_provider_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_pulumi_provider_proto_msgTypes[0].OneofWrappers = []interface{}{} + file_pulumi_provider_proto_msgTypes[2].OneofWrappers = []interface{}{ (*ParameterizeRequest_Args)(nil), (*ParameterizeRequest_Value)(nil), } @@ -4658,7 +4824,7 @@ func file_pulumi_provider_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pulumi_provider_proto_rawDesc, NumEnums: 3, - NumMessages: 49, + NumMessages: 51, NumExtensions: 0, NumServices: 1, }, diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider_grpc.pb.go b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider_grpc.pb.go index e30a4e8cc..fd5b25bba 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider_grpc.pb.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/proto/go/provider_grpc.pb.go @@ -23,6 +23,12 @@ const _ = grpc.SupportPackageIsVersion7 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type ResourceProviderClient interface { + // `Handshake` is the first call made by the engine to a provider. It is used to pass the engine's address to the + // provider so that it may establish its own connections back, and to establish protocol configuration that will be + // used to communicate between the two parties. Providers that support `Handshake` implicitly support the set of + // feature flags previously handled by `Configure` prior to `Handshake`'s introduction, such as secrets and resource + // references. + Handshake(ctx context.Context, in *ProviderHandshakeRequest, opts ...grpc.CallOption) (*ProviderHandshakeResponse, error) // `Parameterize` is the primary means of supporting [parameterized providers](parameterized-providers), which allow // a caller to change a provider's behavior ahead of its [configuration](pulumirpc.ResourceProvider.Configure) and // subsequent use. Where a [](pulumirpc.ResourceProvider.Configure) call allows a caller to influence provider @@ -83,7 +89,7 @@ type ResourceProviderClient interface { // Changes to an AWS region, for example, will almost certainly require a provider replacement, but changes to an // AWS access key, should almost certainly not. DiffConfig(ctx context.Context, in *DiffRequest, opts ...grpc.CallOption) (*DiffResponse, error) - // `Configure` is the final stage in configuring a provider instance. Callers supply two sets of data: + // `Configure` is the final stage in configuring a provider instance. Callers may supply two sets of data: // // * Provider-specific configuration, which is the set of inputs that have been validated by a previous // [](pulumirpc.ResourceProvider.CheckConfig) call. @@ -95,6 +101,19 @@ type ResourceProviderClient interface { // Providers may expect a *single* call to `Configure`. If a call to `Configure` is missing required configuration, // the provider may return a set of error details containing [](pulumirpc.ConfigureErrorMissingKeys) values to // indicate which keys are missing. + // + // :::{important} + // The use of `Configure` to configure protocol features is deprecated in favour of the + // [](pulumirpc.ResourceProvider.Handshake) method, which should be implemented by newer providers. To enable + // compatibility between older engines and providers: + // + // * Callers which call `Handshake` *must* call `Configure` with flags such as `acceptSecrets` and `acceptResources` + // set to `true`, since these features predate the introduction of `Handshake` and thus `Handshake`-aware callers + // must support them. See [](pulumirpc.ConfigureRequest) for more information. + // * Providers which implement `Handshake` *must* support flags such as `acceptSecrets` and `acceptResources`, and + // indicate as such by always returning `true` for these fields in [](pulumirpc.ConfigureResponse). See + // [](pulumirpc.ConfigureResponse) for more information. + // ::: Configure(ctx context.Context, in *ConfigureRequest, opts ...grpc.CallOption) (*ConfigureResponse, error) // Invoke dynamically executes a built-in function in the provider. Invoke(ctx context.Context, in *InvokeRequest, opts ...grpc.CallOption) (*InvokeResponse, error) @@ -181,6 +200,15 @@ func NewResourceProviderClient(cc grpc.ClientConnInterface) ResourceProviderClie return &resourceProviderClient{cc} } +func (c *resourceProviderClient) Handshake(ctx context.Context, in *ProviderHandshakeRequest, opts ...grpc.CallOption) (*ProviderHandshakeResponse, error) { + out := new(ProviderHandshakeResponse) + err := c.cc.Invoke(ctx, "/pulumirpc.ResourceProvider/Handshake", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *resourceProviderClient) Parameterize(ctx context.Context, in *ParameterizeRequest, opts ...grpc.CallOption) (*ParameterizeResponse, error) { out := new(ParameterizeResponse) err := c.cc.Invoke(ctx, "/pulumirpc.ResourceProvider/Parameterize", in, out, opts...) @@ -388,6 +416,12 @@ func (c *resourceProviderClient) GetMappings(ctx context.Context, in *GetMapping // All implementations must embed UnimplementedResourceProviderServer // for forward compatibility type ResourceProviderServer interface { + // `Handshake` is the first call made by the engine to a provider. It is used to pass the engine's address to the + // provider so that it may establish its own connections back, and to establish protocol configuration that will be + // used to communicate between the two parties. Providers that support `Handshake` implicitly support the set of + // feature flags previously handled by `Configure` prior to `Handshake`'s introduction, such as secrets and resource + // references. + Handshake(context.Context, *ProviderHandshakeRequest) (*ProviderHandshakeResponse, error) // `Parameterize` is the primary means of supporting [parameterized providers](parameterized-providers), which allow // a caller to change a provider's behavior ahead of its [configuration](pulumirpc.ResourceProvider.Configure) and // subsequent use. Where a [](pulumirpc.ResourceProvider.Configure) call allows a caller to influence provider @@ -448,7 +482,7 @@ type ResourceProviderServer interface { // Changes to an AWS region, for example, will almost certainly require a provider replacement, but changes to an // AWS access key, should almost certainly not. DiffConfig(context.Context, *DiffRequest) (*DiffResponse, error) - // `Configure` is the final stage in configuring a provider instance. Callers supply two sets of data: + // `Configure` is the final stage in configuring a provider instance. Callers may supply two sets of data: // // * Provider-specific configuration, which is the set of inputs that have been validated by a previous // [](pulumirpc.ResourceProvider.CheckConfig) call. @@ -460,6 +494,19 @@ type ResourceProviderServer interface { // Providers may expect a *single* call to `Configure`. If a call to `Configure` is missing required configuration, // the provider may return a set of error details containing [](pulumirpc.ConfigureErrorMissingKeys) values to // indicate which keys are missing. + // + // :::{important} + // The use of `Configure` to configure protocol features is deprecated in favour of the + // [](pulumirpc.ResourceProvider.Handshake) method, which should be implemented by newer providers. To enable + // compatibility between older engines and providers: + // + // * Callers which call `Handshake` *must* call `Configure` with flags such as `acceptSecrets` and `acceptResources` + // set to `true`, since these features predate the introduction of `Handshake` and thus `Handshake`-aware callers + // must support them. See [](pulumirpc.ConfigureRequest) for more information. + // * Providers which implement `Handshake` *must* support flags such as `acceptSecrets` and `acceptResources`, and + // indicate as such by always returning `true` for these fields in [](pulumirpc.ConfigureResponse). See + // [](pulumirpc.ConfigureResponse) for more information. + // ::: Configure(context.Context, *ConfigureRequest) (*ConfigureResponse, error) // Invoke dynamically executes a built-in function in the provider. Invoke(context.Context, *InvokeRequest) (*InvokeResponse, error) @@ -543,6 +590,9 @@ type ResourceProviderServer interface { type UnimplementedResourceProviderServer struct { } +func (UnimplementedResourceProviderServer) Handshake(context.Context, *ProviderHandshakeRequest) (*ProviderHandshakeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Handshake not implemented") +} func (UnimplementedResourceProviderServer) Parameterize(context.Context, *ParameterizeRequest) (*ParameterizeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Parameterize not implemented") } @@ -616,6 +666,24 @@ func RegisterResourceProviderServer(s grpc.ServiceRegistrar, srv ResourceProvide s.RegisterService(&ResourceProvider_ServiceDesc, srv) } +func _ResourceProvider_Handshake_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ProviderHandshakeRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ResourceProviderServer).Handshake(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pulumirpc.ResourceProvider/Handshake", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ResourceProviderServer).Handshake(ctx, req.(*ProviderHandshakeRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ResourceProvider_Parameterize_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ParameterizeRequest) if err := dec(in); err != nil { @@ -986,6 +1054,10 @@ var ResourceProvider_ServiceDesc = grpc.ServiceDesc{ ServiceName: "pulumirpc.ResourceProvider", HandlerType: (*ResourceProviderServer)(nil), Methods: []grpc.MethodDesc{ + { + MethodName: "Handshake", + Handler: _ResourceProvider_Handshake_Handler, + }, { MethodName: "Parameterize", Handler: _ResourceProvider_Parameterize_Handler, diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/poetry.go b/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/poetry.go index 27cc7c630..00f7ebe6d 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/poetry.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/poetry.go @@ -327,7 +327,7 @@ func (p *poetry) generatePyProjectTOML(dependencies map[string]string) (string, func dependenciesFromRequirementsTxt(r io.Reader) (map[string]string, error) { versionRe := regexp.MustCompile("[<>=]+.+") deps := map[string]string{ - "python": "^3.8", + "python": "^3.9", } scanner := bufio.NewScanner(r) for scanner.Scan() { diff --git a/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/uv.go b/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/uv.go index ba7ed2525..f125b941d 100644 --- a/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/uv.go +++ b/vendor/github.com/pulumi/pulumi/sdk/v3/python/toolchain/uv.go @@ -180,7 +180,8 @@ func (u *uv) InstallDependencies(ctx context.Context, cwd string, useLanguageVer func (u *uv) EnsureVenv(ctx context.Context, cwd string, useLanguageVersionTools, showOutput bool, infoWriter, errorWriter io.Writer, ) error { - venvCmd := u.uvCommand(ctx, cwd, showOutput, infoWriter, errorWriter, "venv", "--quiet", u.virtualenvPath) + venvCmd := u.uvCommand(ctx, cwd, showOutput, infoWriter, errorWriter, "venv", "--quiet", + "--allow-existing", u.virtualenvPath) if err := venvCmd.Run(); err != nil { return errorWithStderr(err, "error creating virtual environment") } diff --git a/vendor/golang.org/x/crypto/LICENSE b/vendor/golang.org/x/crypto/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/crypto/LICENSE +++ b/vendor/golang.org/x/crypto/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s index 6713accac..c3895478e 100644 --- a/vendor/golang.org/x/crypto/argon2/blamka_amd64.s +++ b/vendor/golang.org/x/crypto/argon2/blamka_amd64.s @@ -1,243 +1,2791 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Code generated by command: go run blamka_amd64.go -out ../blamka_amd64.s -pkg argon2. DO NOT EDIT. //go:build amd64 && gc && !purego #include "textflag.h" -DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 - -#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v6, t1; \ - PUNPCKLQDQ v6, t2; \ - PUNPCKHQDQ v7, v6; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ v7, t2; \ - MOVO t1, v7; \ - MOVO v2, t1; \ - PUNPCKHQDQ t2, v7; \ - PUNPCKLQDQ v3, t2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v3 - -#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v2, t1; \ - PUNPCKLQDQ v2, t2; \ - PUNPCKHQDQ v3, v2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ v3, t2; \ - MOVO t1, v3; \ - MOVO v6, t1; \ - PUNPCKHQDQ t2, v3; \ - PUNPCKLQDQ v7, t2; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v7 - -#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, t0, c40, c48) \ - MOVO v0, t0; \ - PMULULQ v2, t0; \ - PADDQ v2, v0; \ - PADDQ t0, v0; \ - PADDQ t0, v0; \ - PXOR v0, v6; \ - PSHUFD $0xB1, v6, v6; \ - MOVO v4, t0; \ - PMULULQ v6, t0; \ - PADDQ v6, v4; \ - PADDQ t0, v4; \ - PADDQ t0, v4; \ - PXOR v4, v2; \ - PSHUFB c40, v2; \ - MOVO v0, t0; \ - PMULULQ v2, t0; \ - PADDQ v2, v0; \ - PADDQ t0, v0; \ - PADDQ t0, v0; \ - PXOR v0, v6; \ - PSHUFB c48, v6; \ - MOVO v4, t0; \ - PMULULQ v6, t0; \ - PADDQ v6, v4; \ - PADDQ t0, v4; \ - PADDQ t0, v4; \ - PXOR v4, v2; \ - MOVO v2, t0; \ - PADDQ v2, t0; \ - PSRLQ $63, v2; \ - PXOR t0, v2; \ - MOVO v1, t0; \ - PMULULQ v3, t0; \ - PADDQ v3, v1; \ - PADDQ t0, v1; \ - PADDQ t0, v1; \ - PXOR v1, v7; \ - PSHUFD $0xB1, v7, v7; \ - MOVO v5, t0; \ - PMULULQ v7, t0; \ - PADDQ v7, v5; \ - PADDQ t0, v5; \ - PADDQ t0, v5; \ - PXOR v5, v3; \ - PSHUFB c40, v3; \ - MOVO v1, t0; \ - PMULULQ v3, t0; \ - PADDQ v3, v1; \ - PADDQ t0, v1; \ - PADDQ t0, v1; \ - PXOR v1, v7; \ - PSHUFB c48, v7; \ - MOVO v5, t0; \ - PMULULQ v7, t0; \ - PADDQ v7, v5; \ - PADDQ t0, v5; \ - PADDQ t0, v5; \ - PXOR v5, v3; \ - MOVO v3, t0; \ - PADDQ v3, t0; \ - PSRLQ $63, v3; \ - PXOR t0, v3 - -#define LOAD_MSG_0(block, off) \ - MOVOU 8*(off+0)(block), X0; \ - MOVOU 8*(off+2)(block), X1; \ - MOVOU 8*(off+4)(block), X2; \ - MOVOU 8*(off+6)(block), X3; \ - MOVOU 8*(off+8)(block), X4; \ - MOVOU 8*(off+10)(block), X5; \ - MOVOU 8*(off+12)(block), X6; \ - MOVOU 8*(off+14)(block), X7 - -#define STORE_MSG_0(block, off) \ - MOVOU X0, 8*(off+0)(block); \ - MOVOU X1, 8*(off+2)(block); \ - MOVOU X2, 8*(off+4)(block); \ - MOVOU X3, 8*(off+6)(block); \ - MOVOU X4, 8*(off+8)(block); \ - MOVOU X5, 8*(off+10)(block); \ - MOVOU X6, 8*(off+12)(block); \ - MOVOU X7, 8*(off+14)(block) - -#define LOAD_MSG_1(block, off) \ - MOVOU 8*off+0*8(block), X0; \ - MOVOU 8*off+16*8(block), X1; \ - MOVOU 8*off+32*8(block), X2; \ - MOVOU 8*off+48*8(block), X3; \ - MOVOU 8*off+64*8(block), X4; \ - MOVOU 8*off+80*8(block), X5; \ - MOVOU 8*off+96*8(block), X6; \ - MOVOU 8*off+112*8(block), X7 - -#define STORE_MSG_1(block, off) \ - MOVOU X0, 8*off+0*8(block); \ - MOVOU X1, 8*off+16*8(block); \ - MOVOU X2, 8*off+32*8(block); \ - MOVOU X3, 8*off+48*8(block); \ - MOVOU X4, 8*off+64*8(block); \ - MOVOU X5, 8*off+80*8(block); \ - MOVOU X6, 8*off+96*8(block); \ - MOVOU X7, 8*off+112*8(block) - -#define BLAMKA_ROUND_0(block, off, t0, t1, c40, c48) \ - LOAD_MSG_0(block, off); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ - STORE_MSG_0(block, off) - -#define BLAMKA_ROUND_1(block, off, t0, t1, c40, c48) \ - LOAD_MSG_1(block, off); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE(X2, X3, X4, X5, X6, X7, t0, t1); \ - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, t0, c40, c48); \ - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, t0, t1); \ - STORE_MSG_1(block, off) - // func blamkaSSE4(b *block) -TEXT ·blamkaSSE4(SB), 4, $0-8 - MOVQ b+0(FP), AX - - MOVOU ·c40<>(SB), X10 - MOVOU ·c48<>(SB), X11 +// Requires: SSE2, SSSE3 +TEXT ·blamkaSSE4(SB), NOSPLIT, $0-8 + MOVQ b+0(FP), AX + MOVOU ·c40<>+0(SB), X10 + MOVOU ·c48<>+0(SB), X11 + MOVOU (AX), X0 + MOVOU 16(AX), X1 + MOVOU 32(AX), X2 + MOVOU 48(AX), X3 + MOVOU 64(AX), X4 + MOVOU 80(AX), X5 + MOVOU 96(AX), X6 + MOVOU 112(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, (AX) + MOVOU X1, 16(AX) + MOVOU X2, 32(AX) + MOVOU X3, 48(AX) + MOVOU X4, 64(AX) + MOVOU X5, 80(AX) + MOVOU X6, 96(AX) + MOVOU X7, 112(AX) + MOVOU 128(AX), X0 + MOVOU 144(AX), X1 + MOVOU 160(AX), X2 + MOVOU 176(AX), X3 + MOVOU 192(AX), X4 + MOVOU 208(AX), X5 + MOVOU 224(AX), X6 + MOVOU 240(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 128(AX) + MOVOU X1, 144(AX) + MOVOU X2, 160(AX) + MOVOU X3, 176(AX) + MOVOU X4, 192(AX) + MOVOU X5, 208(AX) + MOVOU X6, 224(AX) + MOVOU X7, 240(AX) + MOVOU 256(AX), X0 + MOVOU 272(AX), X1 + MOVOU 288(AX), X2 + MOVOU 304(AX), X3 + MOVOU 320(AX), X4 + MOVOU 336(AX), X5 + MOVOU 352(AX), X6 + MOVOU 368(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 256(AX) + MOVOU X1, 272(AX) + MOVOU X2, 288(AX) + MOVOU X3, 304(AX) + MOVOU X4, 320(AX) + MOVOU X5, 336(AX) + MOVOU X6, 352(AX) + MOVOU X7, 368(AX) + MOVOU 384(AX), X0 + MOVOU 400(AX), X1 + MOVOU 416(AX), X2 + MOVOU 432(AX), X3 + MOVOU 448(AX), X4 + MOVOU 464(AX), X5 + MOVOU 480(AX), X6 + MOVOU 496(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 384(AX) + MOVOU X1, 400(AX) + MOVOU X2, 416(AX) + MOVOU X3, 432(AX) + MOVOU X4, 448(AX) + MOVOU X5, 464(AX) + MOVOU X6, 480(AX) + MOVOU X7, 496(AX) + MOVOU 512(AX), X0 + MOVOU 528(AX), X1 + MOVOU 544(AX), X2 + MOVOU 560(AX), X3 + MOVOU 576(AX), X4 + MOVOU 592(AX), X5 + MOVOU 608(AX), X6 + MOVOU 624(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 512(AX) + MOVOU X1, 528(AX) + MOVOU X2, 544(AX) + MOVOU X3, 560(AX) + MOVOU X4, 576(AX) + MOVOU X5, 592(AX) + MOVOU X6, 608(AX) + MOVOU X7, 624(AX) + MOVOU 640(AX), X0 + MOVOU 656(AX), X1 + MOVOU 672(AX), X2 + MOVOU 688(AX), X3 + MOVOU 704(AX), X4 + MOVOU 720(AX), X5 + MOVOU 736(AX), X6 + MOVOU 752(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 640(AX) + MOVOU X1, 656(AX) + MOVOU X2, 672(AX) + MOVOU X3, 688(AX) + MOVOU X4, 704(AX) + MOVOU X5, 720(AX) + MOVOU X6, 736(AX) + MOVOU X7, 752(AX) + MOVOU 768(AX), X0 + MOVOU 784(AX), X1 + MOVOU 800(AX), X2 + MOVOU 816(AX), X3 + MOVOU 832(AX), X4 + MOVOU 848(AX), X5 + MOVOU 864(AX), X6 + MOVOU 880(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 768(AX) + MOVOU X1, 784(AX) + MOVOU X2, 800(AX) + MOVOU X3, 816(AX) + MOVOU X4, 832(AX) + MOVOU X5, 848(AX) + MOVOU X6, 864(AX) + MOVOU X7, 880(AX) + MOVOU 896(AX), X0 + MOVOU 912(AX), X1 + MOVOU 928(AX), X2 + MOVOU 944(AX), X3 + MOVOU 960(AX), X4 + MOVOU 976(AX), X5 + MOVOU 992(AX), X6 + MOVOU 1008(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 896(AX) + MOVOU X1, 912(AX) + MOVOU X2, 928(AX) + MOVOU X3, 944(AX) + MOVOU X4, 960(AX) + MOVOU X5, 976(AX) + MOVOU X6, 992(AX) + MOVOU X7, 1008(AX) + MOVOU (AX), X0 + MOVOU 128(AX), X1 + MOVOU 256(AX), X2 + MOVOU 384(AX), X3 + MOVOU 512(AX), X4 + MOVOU 640(AX), X5 + MOVOU 768(AX), X6 + MOVOU 896(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, (AX) + MOVOU X1, 128(AX) + MOVOU X2, 256(AX) + MOVOU X3, 384(AX) + MOVOU X4, 512(AX) + MOVOU X5, 640(AX) + MOVOU X6, 768(AX) + MOVOU X7, 896(AX) + MOVOU 16(AX), X0 + MOVOU 144(AX), X1 + MOVOU 272(AX), X2 + MOVOU 400(AX), X3 + MOVOU 528(AX), X4 + MOVOU 656(AX), X5 + MOVOU 784(AX), X6 + MOVOU 912(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 16(AX) + MOVOU X1, 144(AX) + MOVOU X2, 272(AX) + MOVOU X3, 400(AX) + MOVOU X4, 528(AX) + MOVOU X5, 656(AX) + MOVOU X6, 784(AX) + MOVOU X7, 912(AX) + MOVOU 32(AX), X0 + MOVOU 160(AX), X1 + MOVOU 288(AX), X2 + MOVOU 416(AX), X3 + MOVOU 544(AX), X4 + MOVOU 672(AX), X5 + MOVOU 800(AX), X6 + MOVOU 928(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 32(AX) + MOVOU X1, 160(AX) + MOVOU X2, 288(AX) + MOVOU X3, 416(AX) + MOVOU X4, 544(AX) + MOVOU X5, 672(AX) + MOVOU X6, 800(AX) + MOVOU X7, 928(AX) + MOVOU 48(AX), X0 + MOVOU 176(AX), X1 + MOVOU 304(AX), X2 + MOVOU 432(AX), X3 + MOVOU 560(AX), X4 + MOVOU 688(AX), X5 + MOVOU 816(AX), X6 + MOVOU 944(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 48(AX) + MOVOU X1, 176(AX) + MOVOU X2, 304(AX) + MOVOU X3, 432(AX) + MOVOU X4, 560(AX) + MOVOU X5, 688(AX) + MOVOU X6, 816(AX) + MOVOU X7, 944(AX) + MOVOU 64(AX), X0 + MOVOU 192(AX), X1 + MOVOU 320(AX), X2 + MOVOU 448(AX), X3 + MOVOU 576(AX), X4 + MOVOU 704(AX), X5 + MOVOU 832(AX), X6 + MOVOU 960(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 64(AX) + MOVOU X1, 192(AX) + MOVOU X2, 320(AX) + MOVOU X3, 448(AX) + MOVOU X4, 576(AX) + MOVOU X5, 704(AX) + MOVOU X6, 832(AX) + MOVOU X7, 960(AX) + MOVOU 80(AX), X0 + MOVOU 208(AX), X1 + MOVOU 336(AX), X2 + MOVOU 464(AX), X3 + MOVOU 592(AX), X4 + MOVOU 720(AX), X5 + MOVOU 848(AX), X6 + MOVOU 976(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 80(AX) + MOVOU X1, 208(AX) + MOVOU X2, 336(AX) + MOVOU X3, 464(AX) + MOVOU X4, 592(AX) + MOVOU X5, 720(AX) + MOVOU X6, 848(AX) + MOVOU X7, 976(AX) + MOVOU 96(AX), X0 + MOVOU 224(AX), X1 + MOVOU 352(AX), X2 + MOVOU 480(AX), X3 + MOVOU 608(AX), X4 + MOVOU 736(AX), X5 + MOVOU 864(AX), X6 + MOVOU 992(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 96(AX) + MOVOU X1, 224(AX) + MOVOU X2, 352(AX) + MOVOU X3, 480(AX) + MOVOU X4, 608(AX) + MOVOU X5, 736(AX) + MOVOU X6, 864(AX) + MOVOU X7, 992(AX) + MOVOU 112(AX), X0 + MOVOU 240(AX), X1 + MOVOU 368(AX), X2 + MOVOU 496(AX), X3 + MOVOU 624(AX), X4 + MOVOU 752(AX), X5 + MOVOU 880(AX), X6 + MOVOU 1008(AX), X7 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFD $0xb1, X6, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + PSHUFB X10, X2 + MOVO X0, X8 + PMULULQ X2, X8 + PADDQ X2, X0 + PADDQ X8, X0 + PADDQ X8, X0 + PXOR X0, X6 + PSHUFB X11, X6 + MOVO X4, X8 + PMULULQ X6, X8 + PADDQ X6, X4 + PADDQ X8, X4 + PADDQ X8, X4 + PXOR X4, X2 + MOVO X2, X8 + PADDQ X2, X8 + PSRLQ $0x3f, X2 + PXOR X8, X2 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFD $0xb1, X7, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + PSHUFB X10, X3 + MOVO X1, X8 + PMULULQ X3, X8 + PADDQ X3, X1 + PADDQ X8, X1 + PADDQ X8, X1 + PXOR X1, X7 + PSHUFB X11, X7 + MOVO X5, X8 + PMULULQ X7, X8 + PADDQ X7, X5 + PADDQ X8, X5 + PADDQ X8, X5 + PXOR X5, X3 + MOVO X3, X8 + PADDQ X3, X8 + PSRLQ $0x3f, X3 + PXOR X8, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU X0, 112(AX) + MOVOU X1, 240(AX) + MOVOU X2, 368(AX) + MOVOU X3, 496(AX) + MOVOU X4, 624(AX) + MOVOU X5, 752(AX) + MOVOU X6, 880(AX) + MOVOU X7, 1008(AX) + RET - BLAMKA_ROUND_0(AX, 0, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 16, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 32, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 48, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 64, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 80, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 96, X8, X9, X10, X11) - BLAMKA_ROUND_0(AX, 112, X8, X9, X10, X11) +DATA ·c40<>+0(SB)/8, $0x0201000706050403 +DATA ·c40<>+8(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·c40<>(SB), RODATA|NOPTR, $16 - BLAMKA_ROUND_1(AX, 0, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 2, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 4, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 6, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 8, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 10, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 12, X8, X9, X10, X11) - BLAMKA_ROUND_1(AX, 14, X8, X9, X10, X11) - RET +DATA ·c48<>+0(SB)/8, $0x0100070605040302 +DATA ·c48<>+8(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·c48<>(SB), RODATA|NOPTR, $16 -// func mixBlocksSSE2(out, a, b, c *block) -TEXT ·mixBlocksSSE2(SB), 4, $0-32 +// func mixBlocksSSE2(out *block, a *block, b *block, c *block) +// Requires: SSE2 +TEXT ·mixBlocksSSE2(SB), NOSPLIT, $0-32 MOVQ out+0(FP), DX MOVQ a+8(FP), AX MOVQ b+16(FP), BX MOVQ c+24(FP), CX - MOVQ $128, DI + MOVQ $0x00000080, DI loop: - MOVOU 0(AX), X0 - MOVOU 0(BX), X1 - MOVOU 0(CX), X2 + MOVOU (AX), X0 + MOVOU (BX), X1 + MOVOU (CX), X2 PXOR X1, X0 PXOR X2, X0 - MOVOU X0, 0(DX) - ADDQ $16, AX - ADDQ $16, BX - ADDQ $16, CX - ADDQ $16, DX - SUBQ $2, DI + MOVOU X0, (DX) + ADDQ $0x10, AX + ADDQ $0x10, BX + ADDQ $0x10, CX + ADDQ $0x10, DX + SUBQ $0x02, DI JA loop RET -// func xorBlocksSSE2(out, a, b, c *block) -TEXT ·xorBlocksSSE2(SB), 4, $0-32 +// func xorBlocksSSE2(out *block, a *block, b *block, c *block) +// Requires: SSE2 +TEXT ·xorBlocksSSE2(SB), NOSPLIT, $0-32 MOVQ out+0(FP), DX MOVQ a+8(FP), AX MOVQ b+16(FP), BX MOVQ c+24(FP), CX - MOVQ $128, DI + MOVQ $0x00000080, DI loop: - MOVOU 0(AX), X0 - MOVOU 0(BX), X1 - MOVOU 0(CX), X2 - MOVOU 0(DX), X3 + MOVOU (AX), X0 + MOVOU (BX), X1 + MOVOU (CX), X2 + MOVOU (DX), X3 PXOR X1, X0 PXOR X2, X0 PXOR X3, X0 - MOVOU X0, 0(DX) - ADDQ $16, AX - ADDQ $16, BX - ADDQ $16, CX - ADDQ $16, DX - SUBQ $2, DI + MOVOU X0, (DX) + ADDQ $0x10, AX + ADDQ $0x10, BX + ADDQ $0x10, CX + ADDQ $0x10, DX + SUBQ $0x02, DI JA loop RET diff --git a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s index 9ae8206c2..f75162e03 100644 --- a/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s +++ b/vendor/golang.org/x/crypto/blake2b/blake2bAVX2_amd64.s @@ -1,722 +1,4517 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Code generated by command: go run blake2bAVX2_amd64_asm.go -out ../../blake2bAVX2_amd64.s -pkg blake2b. DO NOT EDIT. //go:build amd64 && gc && !purego #include "textflag.h" -DATA ·AVX2_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·AVX2_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -DATA ·AVX2_iv0<>+0x10(SB)/8, $0x3c6ef372fe94f82b -DATA ·AVX2_iv0<>+0x18(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·AVX2_iv0<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_iv1<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·AVX2_iv1<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -DATA ·AVX2_iv1<>+0x10(SB)/8, $0x1f83d9abfb41bd6b -DATA ·AVX2_iv1<>+0x18(SB)/8, $0x5be0cd19137e2179 -GLOBL ·AVX2_iv1<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·AVX2_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -DATA ·AVX2_c40<>+0x10(SB)/8, $0x0201000706050403 -DATA ·AVX2_c40<>+0x18(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·AVX2_c40<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX2_c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·AVX2_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -DATA ·AVX2_c48<>+0x10(SB)/8, $0x0100070605040302 -DATA ·AVX2_c48<>+0x18(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·AVX2_c48<>(SB), (NOPTR+RODATA), $32 - -DATA ·AVX_iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·AVX_iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -GLOBL ·AVX_iv0<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b -DATA ·AVX_iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·AVX_iv1<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv2<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·AVX_iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -GLOBL ·AVX_iv2<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b -DATA ·AVX_iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 -GLOBL ·AVX_iv3<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·AVX_c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·AVX_c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·AVX_c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·AVX_c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·AVX_c48<>(SB), (NOPTR+RODATA), $16 - -#define VPERMQ_0x39_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x39 -#define VPERMQ_0x93_Y1_Y1 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xc9; BYTE $0x93 -#define VPERMQ_0x4E_Y2_Y2 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xd2; BYTE $0x4e -#define VPERMQ_0x93_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x93 -#define VPERMQ_0x39_Y3_Y3 BYTE $0xc4; BYTE $0xe3; BYTE $0xfd; BYTE $0x00; BYTE $0xdb; BYTE $0x39 - -#define ROUND_AVX2(m0, m1, m2, m3, t, c40, c48) \ - VPADDQ m0, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFD $-79, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPSHUFB c40, Y1, Y1; \ - VPADDQ m1, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFB c48, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPADDQ Y1, Y1, t; \ - VPSRLQ $63, Y1, Y1; \ - VPXOR t, Y1, Y1; \ - VPERMQ_0x39_Y1_Y1; \ - VPERMQ_0x4E_Y2_Y2; \ - VPERMQ_0x93_Y3_Y3; \ - VPADDQ m2, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFD $-79, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPSHUFB c40, Y1, Y1; \ - VPADDQ m3, Y0, Y0; \ - VPADDQ Y1, Y0, Y0; \ - VPXOR Y0, Y3, Y3; \ - VPSHUFB c48, Y3, Y3; \ - VPADDQ Y3, Y2, Y2; \ - VPXOR Y2, Y1, Y1; \ - VPADDQ Y1, Y1, t; \ - VPSRLQ $63, Y1, Y1; \ - VPXOR t, Y1, Y1; \ - VPERMQ_0x39_Y3_Y3; \ - VPERMQ_0x4E_Y2_Y2; \ - VPERMQ_0x93_Y1_Y1 - -#define VMOVQ_SI_X11_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x1E -#define VMOVQ_SI_X12_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x26 -#define VMOVQ_SI_X13_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x2E -#define VMOVQ_SI_X14_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x36 -#define VMOVQ_SI_X15_0 BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x3E - -#define VMOVQ_SI_X11(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x5E; BYTE $n -#define VMOVQ_SI_X12(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x66; BYTE $n -#define VMOVQ_SI_X13(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x6E; BYTE $n -#define VMOVQ_SI_X14(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x76; BYTE $n -#define VMOVQ_SI_X15(n) BYTE $0xC5; BYTE $0x7A; BYTE $0x7E; BYTE $0x7E; BYTE $n - -#define VPINSRQ_1_SI_X11_0 BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x1E; BYTE $0x01 -#define VPINSRQ_1_SI_X12_0 BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x26; BYTE $0x01 -#define VPINSRQ_1_SI_X13_0 BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x2E; BYTE $0x01 -#define VPINSRQ_1_SI_X14_0 BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x36; BYTE $0x01 -#define VPINSRQ_1_SI_X15_0 BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x3E; BYTE $0x01 - -#define VPINSRQ_1_SI_X11(n) BYTE $0xC4; BYTE $0x63; BYTE $0xA1; BYTE $0x22; BYTE $0x5E; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X12(n) BYTE $0xC4; BYTE $0x63; BYTE $0x99; BYTE $0x22; BYTE $0x66; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X13(n) BYTE $0xC4; BYTE $0x63; BYTE $0x91; BYTE $0x22; BYTE $0x6E; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X14(n) BYTE $0xC4; BYTE $0x63; BYTE $0x89; BYTE $0x22; BYTE $0x76; BYTE $n; BYTE $0x01 -#define VPINSRQ_1_SI_X15(n) BYTE $0xC4; BYTE $0x63; BYTE $0x81; BYTE $0x22; BYTE $0x7E; BYTE $n; BYTE $0x01 - -#define VMOVQ_R8_X15 BYTE $0xC4; BYTE $0x41; BYTE $0xF9; BYTE $0x6E; BYTE $0xF8 -#define VPINSRQ_1_R9_X15 BYTE $0xC4; BYTE $0x43; BYTE $0x81; BYTE $0x22; BYTE $0xF9; BYTE $0x01 - -// load msg: Y12 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y12(i0, i1, i2, i3) \ - VMOVQ_SI_X12(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X12(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y12, Y12 - -// load msg: Y13 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y13(i0, i1, i2, i3) \ - VMOVQ_SI_X13(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X13(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y13, Y13 - -// load msg: Y14 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y14(i0, i1, i2, i3) \ - VMOVQ_SI_X14(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X14(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y14, Y14 - -// load msg: Y15 = (i0, i1, i2, i3) -// i0, i1, i2, i3 must not be 0 -#define LOAD_MSG_AVX2_Y15(i0, i1, i2, i3) \ - VMOVQ_SI_X15(i0*8); \ - VMOVQ_SI_X11(i2*8); \ - VPINSRQ_1_SI_X15(i1*8); \ - VPINSRQ_1_SI_X11(i3*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() \ - VMOVQ_SI_X12_0; \ - VMOVQ_SI_X11(4*8); \ - VPINSRQ_1_SI_X12(2*8); \ - VPINSRQ_1_SI_X11(6*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(1, 3, 5, 7); \ - LOAD_MSG_AVX2_Y14(8, 10, 12, 14); \ - LOAD_MSG_AVX2_Y15(9, 11, 13, 15) - -#define LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() \ - LOAD_MSG_AVX2_Y12(14, 4, 9, 13); \ - LOAD_MSG_AVX2_Y13(10, 8, 15, 6); \ - VMOVQ_SI_X11(11*8); \ - VPSHUFD $0x4E, 0*8(SI), X14; \ - VPINSRQ_1_SI_X11(5*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - LOAD_MSG_AVX2_Y15(12, 2, 7, 3) - -#define LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() \ - VMOVQ_SI_X11(5*8); \ - VMOVDQU 11*8(SI), X12; \ - VPINSRQ_1_SI_X11(15*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - VMOVQ_SI_X13(8*8); \ - VMOVQ_SI_X11(2*8); \ - VPINSRQ_1_SI_X13_0; \ - VPINSRQ_1_SI_X11(13*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(10, 3, 7, 9); \ - LOAD_MSG_AVX2_Y15(14, 6, 1, 4) - -#define LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() \ - LOAD_MSG_AVX2_Y12(7, 3, 13, 11); \ - LOAD_MSG_AVX2_Y13(9, 1, 12, 14); \ - LOAD_MSG_AVX2_Y14(2, 5, 4, 15); \ - VMOVQ_SI_X15(6*8); \ - VMOVQ_SI_X11_0; \ - VPINSRQ_1_SI_X15(10*8); \ - VPINSRQ_1_SI_X11(8*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() \ - LOAD_MSG_AVX2_Y12(9, 5, 2, 10); \ - VMOVQ_SI_X13_0; \ - VMOVQ_SI_X11(4*8); \ - VPINSRQ_1_SI_X13(7*8); \ - VPINSRQ_1_SI_X11(15*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(14, 11, 6, 3); \ - LOAD_MSG_AVX2_Y15(1, 12, 8, 13) - -#define LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X11_0; \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X11(8*8); \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(12, 10, 11, 3); \ - LOAD_MSG_AVX2_Y14(4, 7, 15, 1); \ - LOAD_MSG_AVX2_Y15(13, 5, 14, 9) - -#define LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() \ - LOAD_MSG_AVX2_Y12(12, 1, 14, 4); \ - LOAD_MSG_AVX2_Y13(5, 15, 13, 10); \ - VMOVQ_SI_X14_0; \ - VPSHUFD $0x4E, 8*8(SI), X11; \ - VPINSRQ_1_SI_X14(6*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - LOAD_MSG_AVX2_Y15(7, 3, 2, 11) - -#define LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() \ - LOAD_MSG_AVX2_Y12(13, 7, 12, 3); \ - LOAD_MSG_AVX2_Y13(11, 14, 1, 9); \ - LOAD_MSG_AVX2_Y14(5, 15, 8, 2); \ - VMOVQ_SI_X15_0; \ - VMOVQ_SI_X11(6*8); \ - VPINSRQ_1_SI_X15(4*8); \ - VPINSRQ_1_SI_X11(10*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() \ - VMOVQ_SI_X12(6*8); \ - VMOVQ_SI_X11(11*8); \ - VPINSRQ_1_SI_X12(14*8); \ - VPINSRQ_1_SI_X11_0; \ - VINSERTI128 $1, X11, Y12, Y12; \ - LOAD_MSG_AVX2_Y13(15, 9, 3, 8); \ - VMOVQ_SI_X11(1*8); \ - VMOVDQU 12*8(SI), X14; \ - VPINSRQ_1_SI_X11(10*8); \ - VINSERTI128 $1, X11, Y14, Y14; \ - VMOVQ_SI_X15(2*8); \ - VMOVDQU 4*8(SI), X11; \ - VPINSRQ_1_SI_X15(7*8); \ - VINSERTI128 $1, X11, Y15, Y15 - -#define LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() \ - LOAD_MSG_AVX2_Y12(10, 8, 7, 1); \ - VMOVQ_SI_X13(2*8); \ - VPSHUFD $0x4E, 5*8(SI), X11; \ - VPINSRQ_1_SI_X13(4*8); \ - VINSERTI128 $1, X11, Y13, Y13; \ - LOAD_MSG_AVX2_Y14(15, 9, 3, 13); \ - VMOVQ_SI_X15(11*8); \ - VMOVQ_SI_X11(12*8); \ - VPINSRQ_1_SI_X15(14*8); \ - VPINSRQ_1_SI_X11_0; \ - VINSERTI128 $1, X11, Y15, Y15 - // func hashBlocksAVX2(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksAVX2(SB), 4, $320-48 // frame size = 288 + 32 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, DX - ADDQ $31, DX - ANDQ $~31, DX - - MOVQ CX, 16(DX) - XORQ CX, CX - MOVQ CX, 24(DX) - - VMOVDQU ·AVX2_c40<>(SB), Y4 - VMOVDQU ·AVX2_c48<>(SB), Y5 - - VMOVDQU 0(AX), Y8 +// Requires: AVX, AVX2 +TEXT ·hashBlocksAVX2(SB), NOSPLIT, $320-48 + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + MOVQ SP, DX + ADDQ $+31, DX + ANDQ $-32, DX + MOVQ CX, 16(DX) + XORQ CX, CX + MOVQ CX, 24(DX) + VMOVDQU ·AVX2_c40<>+0(SB), Y4 + VMOVDQU ·AVX2_c48<>+0(SB), Y5 + VMOVDQU (AX), Y8 VMOVDQU 32(AX), Y9 - VMOVDQU ·AVX2_iv0<>(SB), Y6 - VMOVDQU ·AVX2_iv1<>(SB), Y7 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 - MOVQ R9, 8(DX) + VMOVDQU ·AVX2_iv0<>+0(SB), Y6 + VMOVDQU ·AVX2_iv1<>+0(SB), Y7 + MOVQ (BX), R8 + MOVQ 8(BX), R9 + MOVQ R9, 8(DX) loop: - ADDQ $128, R8 - MOVQ R8, 0(DX) - CMPQ R8, $128 + ADDQ $0x80, R8 + MOVQ R8, (DX) + CMPQ R8, $0x80 JGE noinc INCQ R9 MOVQ R9, 8(DX) noinc: - VMOVDQA Y8, Y0 - VMOVDQA Y9, Y1 - VMOVDQA Y6, Y2 - VPXOR 0(DX), Y7, Y3 - - LOAD_MSG_AVX2_0_2_4_6_1_3_5_7_8_10_12_14_9_11_13_15() - VMOVDQA Y12, 32(DX) - VMOVDQA Y13, 64(DX) - VMOVDQA Y14, 96(DX) - VMOVDQA Y15, 128(DX) - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_14_4_9_13_10_8_15_6_1_0_11_5_12_2_7_3() - VMOVDQA Y12, 160(DX) - VMOVDQA Y13, 192(DX) - VMOVDQA Y14, 224(DX) - VMOVDQA Y15, 256(DX) - - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_11_12_5_15_8_0_2_13_10_3_7_9_14_6_1_4() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_7_3_13_11_9_1_12_14_2_5_4_15_6_10_0_8() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_9_5_2_10_0_7_4_15_14_11_6_3_1_12_8_13() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_2_6_0_8_12_10_11_3_4_7_15_1_13_5_14_9() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_12_1_14_4_5_15_13_10_0_6_9_8_7_3_2_11() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_13_7_12_3_11_14_1_9_5_15_8_2_0_4_6_10() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_6_14_11_0_15_9_3_8_12_13_1_10_2_7_4_5() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - LOAD_MSG_AVX2_10_8_7_1_2_4_6_5_15_9_3_13_11_14_12_0() - ROUND_AVX2(Y12, Y13, Y14, Y15, Y10, Y4, Y5) - - ROUND_AVX2(32(DX), 64(DX), 96(DX), 128(DX), Y10, Y4, Y5) - ROUND_AVX2(160(DX), 192(DX), 224(DX), 256(DX), Y10, Y4, Y5) - - VPXOR Y0, Y8, Y8 - VPXOR Y1, Y9, Y9 - VPXOR Y2, Y8, Y8 - VPXOR Y3, Y9, Y9 - - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop - - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - - VMOVDQU Y8, 0(AX) - VMOVDQU Y9, 32(AX) + VMOVDQA Y8, Y0 + VMOVDQA Y9, Y1 + VMOVDQA Y6, Y2 + VPXOR (DX), Y7, Y3 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x26 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x20 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x10 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x30 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x08 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x28 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x38 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x40 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x60 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x70 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x48 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x68 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x58 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x78 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VMOVDQA Y12, 32(DX) + VMOVDQA Y13, 64(DX) + VMOVDQA Y14, 96(DX) + VMOVDQA Y15, 128(DX) + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x70 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x48 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x20 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x68 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x50 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x78 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x40 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x30 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x58 + VPSHUFD $0x4e, (SI), X14 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x28 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x38 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x10 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x18 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VMOVDQA Y12, 160(DX) + VMOVDQA Y13, 192(DX) + VMOVDQA Y14, 224(DX) + VMOVDQA Y15, 256(DX) + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x28 + VMOVDQU 88(SI), X12 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x78 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x40 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x10 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x2e + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x68 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x50 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x38 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x48 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x70 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x08 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x30 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x20 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x38 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x68 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x58 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x48 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x60 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x08 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x70 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x10 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x20 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x28 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x78 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x30 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x1e + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x40 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x48 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x10 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x28 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x50 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x2e + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x20 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x38 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x78 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x70 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x30 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x58 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x18 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x08 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x40 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x60 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x68 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x10 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x1e + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x30 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x40 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x58 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x18 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x20 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x78 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x38 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x08 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x68 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x70 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x28 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x48 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x70 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x08 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x20 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x28 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x68 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x78 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x50 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x36 + VPSHUFD $0x4e, 64(SI), X11 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x30 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x38 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x10 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x58 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x68 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x60 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x38 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x18 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x58 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x08 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x70 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x48 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x28 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x40 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x78 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x10 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x3e + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x30 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x20 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x50 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x30 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x58 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x70 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x1e + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x78 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x18 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x48 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x40 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x08 + VMOVDQU 96(SI), X14 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x50 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x10 + VMOVDQU 32(SI), X11 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x38 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x50 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x38 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x40 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x08 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y12, Y12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x10 + VPSHUFD $0x4e, 40(SI), X11 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x20 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y13, Y13 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x78 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x18 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x48 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x5e + BYTE $0x68 + BYTE $0x01 + VINSERTI128 $0x01, X11, Y14, Y14 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x58 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x5e + BYTE $0x60 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x70 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0xa1 + BYTE $0x22 + BYTE $0x1e + BYTE $0x01 + VINSERTI128 $0x01, X11, Y15, Y15 + VPADDQ Y12, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y13, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ Y14, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ Y15, Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + VPADDQ 32(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ 64(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ 96(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ 128(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + VPADDQ 160(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ 192(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x93 + VPADDQ 224(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFD $-79, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPSHUFB Y4, Y1, Y1 + VPADDQ 256(DX), Y0, Y0 + VPADDQ Y1, Y0, Y0 + VPXOR Y0, Y3, Y3 + VPSHUFB Y5, Y3, Y3 + VPADDQ Y3, Y2, Y2 + VPXOR Y2, Y1, Y1 + VPADDQ Y1, Y1, Y10 + VPSRLQ $0x3f, Y1, Y1 + VPXOR Y10, Y1, Y1 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xdb + BYTE $0x39 + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xd2 + BYTE $0x4e + BYTE $0xc4 + BYTE $0xe3 + BYTE $0xfd + BYTE $0x00 + BYTE $0xc9 + BYTE $0x93 + VPXOR Y0, Y8, Y8 + VPXOR Y1, Y9, Y9 + VPXOR Y2, Y8, Y8 + VPXOR Y3, Y9, Y9 + LEAQ 128(SI), SI + SUBQ $0x80, DI + JNE loop + MOVQ R8, (BX) + MOVQ R9, 8(BX) + VMOVDQU Y8, (AX) + VMOVDQU Y9, 32(AX) VZEROUPPER - RET -#define VPUNPCKLQDQ_X2_X2_X15 BYTE $0xC5; BYTE $0x69; BYTE $0x6C; BYTE $0xFA -#define VPUNPCKLQDQ_X3_X3_X15 BYTE $0xC5; BYTE $0x61; BYTE $0x6C; BYTE $0xFB -#define VPUNPCKLQDQ_X7_X7_X15 BYTE $0xC5; BYTE $0x41; BYTE $0x6C; BYTE $0xFF -#define VPUNPCKLQDQ_X13_X13_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x11; BYTE $0x6C; BYTE $0xFD -#define VPUNPCKLQDQ_X14_X14_X15 BYTE $0xC4; BYTE $0x41; BYTE $0x09; BYTE $0x6C; BYTE $0xFE - -#define VPUNPCKHQDQ_X15_X2_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x69; BYTE $0x6D; BYTE $0xD7 -#define VPUNPCKHQDQ_X15_X3_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xDF -#define VPUNPCKHQDQ_X15_X6_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x49; BYTE $0x6D; BYTE $0xF7 -#define VPUNPCKHQDQ_X15_X7_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xFF -#define VPUNPCKHQDQ_X15_X3_X2 BYTE $0xC4; BYTE $0xC1; BYTE $0x61; BYTE $0x6D; BYTE $0xD7 -#define VPUNPCKHQDQ_X15_X7_X6 BYTE $0xC4; BYTE $0xC1; BYTE $0x41; BYTE $0x6D; BYTE $0xF7 -#define VPUNPCKHQDQ_X15_X13_X3 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xDF -#define VPUNPCKHQDQ_X15_X13_X7 BYTE $0xC4; BYTE $0xC1; BYTE $0x11; BYTE $0x6D; BYTE $0xFF - -#define SHUFFLE_AVX() \ - VMOVDQA X6, X13; \ - VMOVDQA X2, X14; \ - VMOVDQA X4, X6; \ - VPUNPCKLQDQ_X13_X13_X15; \ - VMOVDQA X5, X4; \ - VMOVDQA X6, X5; \ - VPUNPCKHQDQ_X15_X7_X6; \ - VPUNPCKLQDQ_X7_X7_X15; \ - VPUNPCKHQDQ_X15_X13_X7; \ - VPUNPCKLQDQ_X3_X3_X15; \ - VPUNPCKHQDQ_X15_X2_X2; \ - VPUNPCKLQDQ_X14_X14_X15; \ - VPUNPCKHQDQ_X15_X3_X3; \ - -#define SHUFFLE_AVX_INV() \ - VMOVDQA X2, X13; \ - VMOVDQA X4, X14; \ - VPUNPCKLQDQ_X2_X2_X15; \ - VMOVDQA X5, X4; \ - VPUNPCKHQDQ_X15_X3_X2; \ - VMOVDQA X14, X5; \ - VPUNPCKLQDQ_X3_X3_X15; \ - VMOVDQA X6, X14; \ - VPUNPCKHQDQ_X15_X13_X3; \ - VPUNPCKLQDQ_X7_X7_X15; \ - VPUNPCKHQDQ_X15_X6_X6; \ - VPUNPCKLQDQ_X14_X14_X15; \ - VPUNPCKHQDQ_X15_X7_X7; \ - -#define HALF_ROUND_AVX(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ - VPADDQ m0, v0, v0; \ - VPADDQ v2, v0, v0; \ - VPADDQ m1, v1, v1; \ - VPADDQ v3, v1, v1; \ - VPXOR v0, v6, v6; \ - VPXOR v1, v7, v7; \ - VPSHUFD $-79, v6, v6; \ - VPSHUFD $-79, v7, v7; \ - VPADDQ v6, v4, v4; \ - VPADDQ v7, v5, v5; \ - VPXOR v4, v2, v2; \ - VPXOR v5, v3, v3; \ - VPSHUFB c40, v2, v2; \ - VPSHUFB c40, v3, v3; \ - VPADDQ m2, v0, v0; \ - VPADDQ v2, v0, v0; \ - VPADDQ m3, v1, v1; \ - VPADDQ v3, v1, v1; \ - VPXOR v0, v6, v6; \ - VPXOR v1, v7, v7; \ - VPSHUFB c48, v6, v6; \ - VPSHUFB c48, v7, v7; \ - VPADDQ v6, v4, v4; \ - VPADDQ v7, v5, v5; \ - VPXOR v4, v2, v2; \ - VPXOR v5, v3, v3; \ - VPADDQ v2, v2, t0; \ - VPSRLQ $63, v2, v2; \ - VPXOR t0, v2, v2; \ - VPADDQ v3, v3, t0; \ - VPSRLQ $63, v3, v3; \ - VPXOR t0, v3, v3 - -// load msg: X12 = (i0, i1), X13 = (i2, i3), X14 = (i4, i5), X15 = (i6, i7) -// i0, i1, i2, i3, i4, i5, i6, i7 must not be 0 -#define LOAD_MSG_AVX(i0, i1, i2, i3, i4, i5, i6, i7) \ - VMOVQ_SI_X12(i0*8); \ - VMOVQ_SI_X13(i2*8); \ - VMOVQ_SI_X14(i4*8); \ - VMOVQ_SI_X15(i6*8); \ - VPINSRQ_1_SI_X12(i1*8); \ - VPINSRQ_1_SI_X13(i3*8); \ - VPINSRQ_1_SI_X14(i5*8); \ - VPINSRQ_1_SI_X15(i7*8) - -// load msg: X12 = (0, 2), X13 = (4, 6), X14 = (1, 3), X15 = (5, 7) -#define LOAD_MSG_AVX_0_2_4_6_1_3_5_7() \ - VMOVQ_SI_X12_0; \ - VMOVQ_SI_X13(4*8); \ - VMOVQ_SI_X14(1*8); \ - VMOVQ_SI_X15(5*8); \ - VPINSRQ_1_SI_X12(2*8); \ - VPINSRQ_1_SI_X13(6*8); \ - VPINSRQ_1_SI_X14(3*8); \ - VPINSRQ_1_SI_X15(7*8) - -// load msg: X12 = (1, 0), X13 = (11, 5), X14 = (12, 2), X15 = (7, 3) -#define LOAD_MSG_AVX_1_0_11_5_12_2_7_3() \ - VPSHUFD $0x4E, 0*8(SI), X12; \ - VMOVQ_SI_X13(11*8); \ - VMOVQ_SI_X14(12*8); \ - VMOVQ_SI_X15(7*8); \ - VPINSRQ_1_SI_X13(5*8); \ - VPINSRQ_1_SI_X14(2*8); \ - VPINSRQ_1_SI_X15(3*8) - -// load msg: X12 = (11, 12), X13 = (5, 15), X14 = (8, 0), X15 = (2, 13) -#define LOAD_MSG_AVX_11_12_5_15_8_0_2_13() \ - VMOVDQU 11*8(SI), X12; \ - VMOVQ_SI_X13(5*8); \ - VMOVQ_SI_X14(8*8); \ - VMOVQ_SI_X15(2*8); \ - VPINSRQ_1_SI_X13(15*8); \ - VPINSRQ_1_SI_X14_0; \ - VPINSRQ_1_SI_X15(13*8) - -// load msg: X12 = (2, 5), X13 = (4, 15), X14 = (6, 10), X15 = (0, 8) -#define LOAD_MSG_AVX_2_5_4_15_6_10_0_8() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X13(4*8); \ - VMOVQ_SI_X14(6*8); \ - VMOVQ_SI_X15_0; \ - VPINSRQ_1_SI_X12(5*8); \ - VPINSRQ_1_SI_X13(15*8); \ - VPINSRQ_1_SI_X14(10*8); \ - VPINSRQ_1_SI_X15(8*8) +DATA ·AVX2_c40<>+0(SB)/8, $0x0201000706050403 +DATA ·AVX2_c40<>+8(SB)/8, $0x0a09080f0e0d0c0b +DATA ·AVX2_c40<>+16(SB)/8, $0x0201000706050403 +DATA ·AVX2_c40<>+24(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·AVX2_c40<>(SB), RODATA|NOPTR, $32 -// load msg: X12 = (9, 5), X13 = (2, 10), X14 = (0, 7), X15 = (4, 15) -#define LOAD_MSG_AVX_9_5_2_10_0_7_4_15() \ - VMOVQ_SI_X12(9*8); \ - VMOVQ_SI_X13(2*8); \ - VMOVQ_SI_X14_0; \ - VMOVQ_SI_X15(4*8); \ - VPINSRQ_1_SI_X12(5*8); \ - VPINSRQ_1_SI_X13(10*8); \ - VPINSRQ_1_SI_X14(7*8); \ - VPINSRQ_1_SI_X15(15*8) +DATA ·AVX2_c48<>+0(SB)/8, $0x0100070605040302 +DATA ·AVX2_c48<>+8(SB)/8, $0x09080f0e0d0c0b0a +DATA ·AVX2_c48<>+16(SB)/8, $0x0100070605040302 +DATA ·AVX2_c48<>+24(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·AVX2_c48<>(SB), RODATA|NOPTR, $32 -// load msg: X12 = (2, 6), X13 = (0, 8), X14 = (12, 10), X15 = (11, 3) -#define LOAD_MSG_AVX_2_6_0_8_12_10_11_3() \ - VMOVQ_SI_X12(2*8); \ - VMOVQ_SI_X13_0; \ - VMOVQ_SI_X14(12*8); \ - VMOVQ_SI_X15(11*8); \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X13(8*8); \ - VPINSRQ_1_SI_X14(10*8); \ - VPINSRQ_1_SI_X15(3*8) +DATA ·AVX2_iv0<>+0(SB)/8, $0x6a09e667f3bcc908 +DATA ·AVX2_iv0<>+8(SB)/8, $0xbb67ae8584caa73b +DATA ·AVX2_iv0<>+16(SB)/8, $0x3c6ef372fe94f82b +DATA ·AVX2_iv0<>+24(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·AVX2_iv0<>(SB), RODATA|NOPTR, $32 -// load msg: X12 = (0, 6), X13 = (9, 8), X14 = (7, 3), X15 = (2, 11) -#define LOAD_MSG_AVX_0_6_9_8_7_3_2_11() \ - MOVQ 0*8(SI), X12; \ - VPSHUFD $0x4E, 8*8(SI), X13; \ - MOVQ 7*8(SI), X14; \ - MOVQ 2*8(SI), X15; \ - VPINSRQ_1_SI_X12(6*8); \ - VPINSRQ_1_SI_X14(3*8); \ - VPINSRQ_1_SI_X15(11*8) - -// load msg: X12 = (6, 14), X13 = (11, 0), X14 = (15, 9), X15 = (3, 8) -#define LOAD_MSG_AVX_6_14_11_0_15_9_3_8() \ - MOVQ 6*8(SI), X12; \ - MOVQ 11*8(SI), X13; \ - MOVQ 15*8(SI), X14; \ - MOVQ 3*8(SI), X15; \ - VPINSRQ_1_SI_X12(14*8); \ - VPINSRQ_1_SI_X13_0; \ - VPINSRQ_1_SI_X14(9*8); \ - VPINSRQ_1_SI_X15(8*8) - -// load msg: X12 = (5, 15), X13 = (8, 2), X14 = (0, 4), X15 = (6, 10) -#define LOAD_MSG_AVX_5_15_8_2_0_4_6_10() \ - MOVQ 5*8(SI), X12; \ - MOVQ 8*8(SI), X13; \ - MOVQ 0*8(SI), X14; \ - MOVQ 6*8(SI), X15; \ - VPINSRQ_1_SI_X12(15*8); \ - VPINSRQ_1_SI_X13(2*8); \ - VPINSRQ_1_SI_X14(4*8); \ - VPINSRQ_1_SI_X15(10*8) - -// load msg: X12 = (12, 13), X13 = (1, 10), X14 = (2, 7), X15 = (4, 5) -#define LOAD_MSG_AVX_12_13_1_10_2_7_4_5() \ - VMOVDQU 12*8(SI), X12; \ - MOVQ 1*8(SI), X13; \ - MOVQ 2*8(SI), X14; \ - VPINSRQ_1_SI_X13(10*8); \ - VPINSRQ_1_SI_X14(7*8); \ - VMOVDQU 4*8(SI), X15 - -// load msg: X12 = (15, 9), X13 = (3, 13), X14 = (11, 14), X15 = (12, 0) -#define LOAD_MSG_AVX_15_9_3_13_11_14_12_0() \ - MOVQ 15*8(SI), X12; \ - MOVQ 3*8(SI), X13; \ - MOVQ 11*8(SI), X14; \ - MOVQ 12*8(SI), X15; \ - VPINSRQ_1_SI_X12(9*8); \ - VPINSRQ_1_SI_X13(13*8); \ - VPINSRQ_1_SI_X14(14*8); \ - VPINSRQ_1_SI_X15_0 +DATA ·AVX2_iv1<>+0(SB)/8, $0x510e527fade682d1 +DATA ·AVX2_iv1<>+8(SB)/8, $0x9b05688c2b3e6c1f +DATA ·AVX2_iv1<>+16(SB)/8, $0x1f83d9abfb41bd6b +DATA ·AVX2_iv1<>+24(SB)/8, $0x5be0cd19137e2179 +GLOBL ·AVX2_iv1<>(SB), RODATA|NOPTR, $32 // func hashBlocksAVX(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksAVX(SB), 4, $288-48 // frame size = 272 + 16 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, R10 - ADDQ $15, R10 - ANDQ $~15, R10 - - VMOVDQU ·AVX_c40<>(SB), X0 - VMOVDQU ·AVX_c48<>(SB), X1 +// Requires: AVX, SSE2 +TEXT ·hashBlocksAVX(SB), NOSPLIT, $288-48 + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + MOVQ SP, R10 + ADDQ $0x0f, R10 + ANDQ $-16, R10 + VMOVDQU ·AVX_c40<>+0(SB), X0 + VMOVDQU ·AVX_c48<>+0(SB), X1 VMOVDQA X0, X8 VMOVDQA X1, X9 - - VMOVDQU ·AVX_iv3<>(SB), X0 - VMOVDQA X0, 0(R10) - XORQ CX, 0(R10) // 0(R10) = ·AVX_iv3 ^ (CX || 0) - - VMOVDQU 0(AX), X10 + VMOVDQU ·AVX_iv3<>+0(SB), X0 + VMOVDQA X0, (R10) + XORQ CX, (R10) + VMOVDQU (AX), X10 VMOVDQU 16(AX), X11 VMOVDQU 32(AX), X2 VMOVDQU 48(AX), X3 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 + MOVQ (BX), R8 + MOVQ 8(BX), R9 loop: - ADDQ $128, R8 - CMPQ R8, $128 + ADDQ $0x80, R8 + CMPQ R8, $0x80 JGE noinc INCQ R9 noinc: - VMOVQ_R8_X15 - VPINSRQ_1_R9_X15 - + BYTE $0xc4 + BYTE $0x41 + BYTE $0xf9 + BYTE $0x6e + BYTE $0xf8 + BYTE $0xc4 + BYTE $0x43 + BYTE $0x81 + BYTE $0x22 + BYTE $0xf9 + BYTE $0x01 VMOVDQA X10, X0 VMOVDQA X11, X1 - VMOVDQU ·AVX_iv0<>(SB), X4 - VMOVDQU ·AVX_iv1<>(SB), X5 - VMOVDQU ·AVX_iv2<>(SB), X6 - + VMOVDQU ·AVX_iv0<>+0(SB), X4 + VMOVDQU ·AVX_iv1<>+0(SB), X5 + VMOVDQU ·AVX_iv2<>+0(SB), X6 VPXOR X15, X6, X6 - VMOVDQA 0(R10), X7 - - LOAD_MSG_AVX_0_2_4_6_1_3_5_7() + VMOVDQA (R10), X7 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x26 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x20 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x08 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x28 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x10 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x30 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x38 + BYTE $0x01 VMOVDQA X12, 16(R10) VMOVDQA X13, 32(R10) VMOVDQA X14, 48(R10) VMOVDQA X15, 64(R10) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(8, 10, 12, 14, 9, 11, 13, 15) + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x40 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x48 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x68 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x70 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x58 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x78 + BYTE $0x01 VMOVDQA X12, 80(R10) VMOVDQA X13, 96(R10) VMOVDQA X14, 112(R10) VMOVDQA X15, 128(R10) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(14, 4, 9, 13, 10, 8, 15, 6) + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x70 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x48 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x50 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x78 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x20 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x68 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x40 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x30 + BYTE $0x01 VMOVDQA X12, 144(R10) VMOVDQA X13, 160(R10) VMOVDQA X14, 176(R10) VMOVDQA X15, 192(R10) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_1_0_11_5_12_2_7_3() + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + VPSHUFD $0x4e, (SI), X12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x58 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x38 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x28 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x10 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x18 + BYTE $0x01 VMOVDQA X12, 208(R10) VMOVDQA X13, 224(R10) VMOVDQA X14, 240(R10) VMOVDQA X15, 256(R10) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_11_12_5_15_8_0_2_13() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(10, 3, 7, 9, 14, 6, 1, 4) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(7, 3, 13, 11, 9, 1, 12, 14) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_2_5_4_15_6_10_0_8() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_9_5_2_10_0_7_4_15() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(14, 11, 6, 3, 1, 12, 8, 13) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_2_6_0_8_12_10_11_3() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX(4, 7, 15, 1, 13, 5, 14, 9) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(12, 1, 14, 4, 5, 15, 13, 10) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_0_6_9_8_7_3_2_11() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(13, 7, 12, 3, 11, 14, 1, 9) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_5_15_8_2_0_4_6_10() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX_6_14_11_0_15_9_3_8() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_12_13_1_10_2_7_4_5() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - LOAD_MSG_AVX(10, 8, 7, 1, 2, 4, 6, 5) - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX() - LOAD_MSG_AVX_15_9_3_13_11_14_12_0() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, X12, X13, X14, X15, X15, X8, X9) - SHUFFLE_AVX_INV() - - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 16(R10), 32(R10), 48(R10), 64(R10), X15, X8, X9) - SHUFFLE_AVX() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 80(R10), 96(R10), 112(R10), 128(R10), X15, X8, X9) - SHUFFLE_AVX_INV() - - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 144(R10), 160(R10), 176(R10), 192(R10), X15, X8, X9) - SHUFFLE_AVX() - HALF_ROUND_AVX(X0, X1, X2, X3, X4, X5, X6, X7, 208(R10), 224(R10), 240(R10), 256(R10), X15, X8, X9) - SHUFFLE_AVX_INV() - + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + VMOVDQU 88(SI), X12 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x28 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x40 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x10 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x78 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x36 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x68 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x50 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x38 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x70 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x08 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x48 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x30 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x20 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x38 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x68 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x48 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x60 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x58 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x08 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x70 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x10 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x20 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x30 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x3e + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x28 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x78 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x40 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x48 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x10 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x36 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x20 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x28 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x38 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x78 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x70 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x30 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x08 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x40 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x58 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x60 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x68 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x10 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x2e + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x58 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x30 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x40 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x18 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x20 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x78 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x68 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x70 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x38 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x08 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x28 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x48 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x70 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x28 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x68 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x08 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x20 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x78 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x50 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + MOVQ (SI), X12 + VPSHUFD $0x4e, 64(SI), X13 + MOVQ 56(SI), X14 + MOVQ 16(SI), X15 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x30 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x58 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x68 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x60 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x58 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x08 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x38 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x18 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x70 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x48 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + MOVQ 40(SI), X12 + MOVQ 64(SI), X13 + MOVQ (SI), X14 + MOVQ 48(SI), X15 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x78 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x10 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x20 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x50 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + MOVQ 48(SI), X12 + MOVQ 88(SI), X13 + MOVQ 120(SI), X14 + MOVQ 24(SI), X15 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x70 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x2e + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x48 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x40 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + VMOVDQU 96(SI), X12 + MOVQ 8(SI), X13 + MOVQ 16(SI), X14 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x50 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x38 + BYTE $0x01 + VMOVDQU 32(SI), X15 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x66 + BYTE $0x50 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x6e + BYTE $0x38 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x76 + BYTE $0x10 + BYTE $0xc5 + BYTE $0x7a + BYTE $0x7e + BYTE $0x7e + BYTE $0x30 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x40 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x08 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x20 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x7e + BYTE $0x28 + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + MOVQ 120(SI), X12 + MOVQ 24(SI), X13 + MOVQ 88(SI), X14 + MOVQ 96(SI), X15 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x99 + BYTE $0x22 + BYTE $0x66 + BYTE $0x48 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x91 + BYTE $0x22 + BYTE $0x6e + BYTE $0x68 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x89 + BYTE $0x22 + BYTE $0x76 + BYTE $0x70 + BYTE $0x01 + BYTE $0xc4 + BYTE $0x63 + BYTE $0x81 + BYTE $0x22 + BYTE $0x3e + BYTE $0x01 + VPADDQ X12, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X13, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ X14, X0, X0 + VPADDQ X2, X0, X0 + VPADDQ X15, X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + VPADDQ 16(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 32(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ 48(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 64(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + VPADDQ 80(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 96(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ 112(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 128(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff + VPADDQ 144(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 160(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ 176(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 192(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X6, X13 + VMOVDQA X2, X14 + VMOVDQA X4, X6 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x11 + BYTE $0x6c + BYTE $0xfd + VMOVDQA X5, X4 + VMOVDQA X6, X5 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xff + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x69 + BYTE $0x6d + BYTE $0xd7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xdf + VPADDQ 208(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 224(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFD $-79, X6, X6 + VPSHUFD $-79, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPSHUFB X8, X2, X2 + VPSHUFB X8, X3, X3 + VPADDQ 240(R10), X0, X0 + VPADDQ X2, X0, X0 + VPADDQ 256(R10), X1, X1 + VPADDQ X3, X1, X1 + VPXOR X0, X6, X6 + VPXOR X1, X7, X7 + VPSHUFB X9, X6, X6 + VPSHUFB X9, X7, X7 + VPADDQ X6, X4, X4 + VPADDQ X7, X5, X5 + VPXOR X4, X2, X2 + VPXOR X5, X3, X3 + VPADDQ X2, X2, X15 + VPSRLQ $0x3f, X2, X2 + VPXOR X15, X2, X2 + VPADDQ X3, X3, X15 + VPSRLQ $0x3f, X3, X3 + VPXOR X15, X3, X3 + VMOVDQA X2, X13 + VMOVDQA X4, X14 + BYTE $0xc5 + BYTE $0x69 + BYTE $0x6c + BYTE $0xfa + VMOVDQA X5, X4 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x61 + BYTE $0x6d + BYTE $0xd7 + VMOVDQA X14, X5 + BYTE $0xc5 + BYTE $0x61 + BYTE $0x6c + BYTE $0xfb + VMOVDQA X6, X14 + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x11 + BYTE $0x6d + BYTE $0xdf + BYTE $0xc5 + BYTE $0x41 + BYTE $0x6c + BYTE $0xff + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x49 + BYTE $0x6d + BYTE $0xf7 + BYTE $0xc4 + BYTE $0x41 + BYTE $0x09 + BYTE $0x6c + BYTE $0xfe + BYTE $0xc4 + BYTE $0xc1 + BYTE $0x41 + BYTE $0x6d + BYTE $0xff VMOVDQU 32(AX), X14 VMOVDQU 48(AX), X15 VPXOR X0, X10, X10 @@ -729,16 +4524,36 @@ noinc: VPXOR X7, X15, X3 VMOVDQU X2, 32(AX) VMOVDQU X3, 48(AX) + LEAQ 128(SI), SI + SUBQ $0x80, DI + JNE loop + VMOVDQU X10, (AX) + VMOVDQU X11, 16(AX) + MOVQ R8, (BX) + MOVQ R9, 8(BX) + VZEROUPPER + RET - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop +DATA ·AVX_c40<>+0(SB)/8, $0x0201000706050403 +DATA ·AVX_c40<>+8(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·AVX_c40<>(SB), RODATA|NOPTR, $16 - VMOVDQU X10, 0(AX) - VMOVDQU X11, 16(AX) +DATA ·AVX_c48<>+0(SB)/8, $0x0100070605040302 +DATA ·AVX_c48<>+8(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·AVX_c48<>(SB), RODATA|NOPTR, $16 - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) - VZEROUPPER +DATA ·AVX_iv3<>+0(SB)/8, $0x1f83d9abfb41bd6b +DATA ·AVX_iv3<>+8(SB)/8, $0x5be0cd19137e2179 +GLOBL ·AVX_iv3<>(SB), RODATA|NOPTR, $16 - RET +DATA ·AVX_iv0<>+0(SB)/8, $0x6a09e667f3bcc908 +DATA ·AVX_iv0<>+8(SB)/8, $0xbb67ae8584caa73b +GLOBL ·AVX_iv0<>(SB), RODATA|NOPTR, $16 + +DATA ·AVX_iv1<>+0(SB)/8, $0x3c6ef372fe94f82b +DATA ·AVX_iv1<>+8(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·AVX_iv1<>(SB), RODATA|NOPTR, $16 + +DATA ·AVX_iv2<>+0(SB)/8, $0x510e527fade682d1 +DATA ·AVX_iv2<>+8(SB)/8, $0x9b05688c2b3e6c1f +GLOBL ·AVX_iv2<>(SB), RODATA|NOPTR, $16 diff --git a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s index adfac00c1..9a0ce2124 100644 --- a/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s +++ b/vendor/golang.org/x/crypto/blake2b/blake2b_amd64.s @@ -1,278 +1,1441 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Code generated by command: go run blake2b_amd64_asm.go -out ../../blake2b_amd64.s -pkg blake2b. DO NOT EDIT. //go:build amd64 && gc && !purego #include "textflag.h" -DATA ·iv0<>+0x00(SB)/8, $0x6a09e667f3bcc908 -DATA ·iv0<>+0x08(SB)/8, $0xbb67ae8584caa73b -GLOBL ·iv0<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv1<>+0x00(SB)/8, $0x3c6ef372fe94f82b -DATA ·iv1<>+0x08(SB)/8, $0xa54ff53a5f1d36f1 -GLOBL ·iv1<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv2<>+0x00(SB)/8, $0x510e527fade682d1 -DATA ·iv2<>+0x08(SB)/8, $0x9b05688c2b3e6c1f -GLOBL ·iv2<>(SB), (NOPTR+RODATA), $16 - -DATA ·iv3<>+0x00(SB)/8, $0x1f83d9abfb41bd6b -DATA ·iv3<>+0x08(SB)/8, $0x5be0cd19137e2179 -GLOBL ·iv3<>(SB), (NOPTR+RODATA), $16 - -DATA ·c40<>+0x00(SB)/8, $0x0201000706050403 -DATA ·c40<>+0x08(SB)/8, $0x0a09080f0e0d0c0b -GLOBL ·c40<>(SB), (NOPTR+RODATA), $16 - -DATA ·c48<>+0x00(SB)/8, $0x0100070605040302 -DATA ·c48<>+0x08(SB)/8, $0x09080f0e0d0c0b0a -GLOBL ·c48<>(SB), (NOPTR+RODATA), $16 - -#define SHUFFLE(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v6, t1; \ - PUNPCKLQDQ v6, t2; \ - PUNPCKHQDQ v7, v6; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ v7, t2; \ - MOVO t1, v7; \ - MOVO v2, t1; \ - PUNPCKHQDQ t2, v7; \ - PUNPCKLQDQ v3, t2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v3 - -#define SHUFFLE_INV(v2, v3, v4, v5, v6, v7, t1, t2) \ - MOVO v4, t1; \ - MOVO v5, v4; \ - MOVO t1, v5; \ - MOVO v2, t1; \ - PUNPCKLQDQ v2, t2; \ - PUNPCKHQDQ v3, v2; \ - PUNPCKHQDQ t2, v2; \ - PUNPCKLQDQ v3, t2; \ - MOVO t1, v3; \ - MOVO v6, t1; \ - PUNPCKHQDQ t2, v3; \ - PUNPCKLQDQ v7, t2; \ - PUNPCKHQDQ t2, v6; \ - PUNPCKLQDQ t1, t2; \ - PUNPCKHQDQ t2, v7 - -#define HALF_ROUND(v0, v1, v2, v3, v4, v5, v6, v7, m0, m1, m2, m3, t0, c40, c48) \ - PADDQ m0, v0; \ - PADDQ m1, v1; \ - PADDQ v2, v0; \ - PADDQ v3, v1; \ - PXOR v0, v6; \ - PXOR v1, v7; \ - PSHUFD $0xB1, v6, v6; \ - PSHUFD $0xB1, v7, v7; \ - PADDQ v6, v4; \ - PADDQ v7, v5; \ - PXOR v4, v2; \ - PXOR v5, v3; \ - PSHUFB c40, v2; \ - PSHUFB c40, v3; \ - PADDQ m2, v0; \ - PADDQ m3, v1; \ - PADDQ v2, v0; \ - PADDQ v3, v1; \ - PXOR v0, v6; \ - PXOR v1, v7; \ - PSHUFB c48, v6; \ - PSHUFB c48, v7; \ - PADDQ v6, v4; \ - PADDQ v7, v5; \ - PXOR v4, v2; \ - PXOR v5, v3; \ - MOVOU v2, t0; \ - PADDQ v2, t0; \ - PSRLQ $63, v2; \ - PXOR t0, v2; \ - MOVOU v3, t0; \ - PADDQ v3, t0; \ - PSRLQ $63, v3; \ - PXOR t0, v3 - -#define LOAD_MSG(m0, m1, m2, m3, src, i0, i1, i2, i3, i4, i5, i6, i7) \ - MOVQ i0*8(src), m0; \ - PINSRQ $1, i1*8(src), m0; \ - MOVQ i2*8(src), m1; \ - PINSRQ $1, i3*8(src), m1; \ - MOVQ i4*8(src), m2; \ - PINSRQ $1, i5*8(src), m2; \ - MOVQ i6*8(src), m3; \ - PINSRQ $1, i7*8(src), m3 - // func hashBlocksSSE4(h *[8]uint64, c *[2]uint64, flag uint64, blocks []byte) -TEXT ·hashBlocksSSE4(SB), 4, $288-48 // frame size = 272 + 16 byte alignment - MOVQ h+0(FP), AX - MOVQ c+8(FP), BX - MOVQ flag+16(FP), CX - MOVQ blocks_base+24(FP), SI - MOVQ blocks_len+32(FP), DI - - MOVQ SP, R10 - ADDQ $15, R10 - ANDQ $~15, R10 - - MOVOU ·iv3<>(SB), X0 - MOVO X0, 0(R10) - XORQ CX, 0(R10) // 0(R10) = ·iv3 ^ (CX || 0) - - MOVOU ·c40<>(SB), X13 - MOVOU ·c48<>(SB), X14 - - MOVOU 0(AX), X12 +// Requires: SSE2, SSE4.1, SSSE3 +TEXT ·hashBlocksSSE4(SB), NOSPLIT, $288-48 + MOVQ h+0(FP), AX + MOVQ c+8(FP), BX + MOVQ flag+16(FP), CX + MOVQ blocks_base+24(FP), SI + MOVQ blocks_len+32(FP), DI + MOVQ SP, R10 + ADDQ $0x0f, R10 + ANDQ $-16, R10 + MOVOU ·iv3<>+0(SB), X0 + MOVO X0, (R10) + XORQ CX, (R10) + MOVOU ·c40<>+0(SB), X13 + MOVOU ·c48<>+0(SB), X14 + MOVOU (AX), X12 MOVOU 16(AX), X15 - - MOVQ 0(BX), R8 - MOVQ 8(BX), R9 + MOVQ (BX), R8 + MOVQ 8(BX), R9 loop: - ADDQ $128, R8 - CMPQ R8, $128 + ADDQ $0x80, R8 + CMPQ R8, $0x80 JGE noinc INCQ R9 noinc: - MOVQ R8, X8 - PINSRQ $1, R9, X8 - - MOVO X12, X0 - MOVO X15, X1 - MOVOU 32(AX), X2 - MOVOU 48(AX), X3 - MOVOU ·iv0<>(SB), X4 - MOVOU ·iv1<>(SB), X5 - MOVOU ·iv2<>(SB), X6 - - PXOR X8, X6 - MOVO 0(R10), X7 - - LOAD_MSG(X8, X9, X10, X11, SI, 0, 2, 4, 6, 1, 3, 5, 7) - MOVO X8, 16(R10) - MOVO X9, 32(R10) - MOVO X10, 48(R10) - MOVO X11, 64(R10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 8, 10, 12, 14, 9, 11, 13, 15) - MOVO X8, 80(R10) - MOVO X9, 96(R10) - MOVO X10, 112(R10) - MOVO X11, 128(R10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 14, 4, 9, 13, 10, 8, 15, 6) - MOVO X8, 144(R10) - MOVO X9, 160(R10) - MOVO X10, 176(R10) - MOVO X11, 192(R10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 1, 0, 11, 5, 12, 2, 7, 3) - MOVO X8, 208(R10) - MOVO X9, 224(R10) - MOVO X10, 240(R10) - MOVO X11, 256(R10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 11, 12, 5, 15, 8, 0, 2, 13) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 10, 3, 7, 9, 14, 6, 1, 4) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 7, 3, 13, 11, 9, 1, 12, 14) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 2, 5, 4, 15, 6, 10, 0, 8) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 9, 5, 2, 10, 0, 7, 4, 15) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 14, 11, 6, 3, 1, 12, 8, 13) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 2, 6, 0, 8, 12, 10, 11, 3) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 4, 7, 15, 1, 13, 5, 14, 9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 12, 1, 14, 4, 5, 15, 13, 10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 0, 6, 9, 8, 7, 3, 2, 11) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 13, 7, 12, 3, 11, 14, 1, 9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 5, 15, 8, 2, 0, 4, 6, 10) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 6, 14, 11, 0, 15, 9, 3, 8) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 12, 13, 1, 10, 2, 7, 4, 5) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - LOAD_MSG(X8, X9, X10, X11, SI, 10, 8, 7, 1, 2, 4, 6, 5) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - LOAD_MSG(X8, X9, X10, X11, SI, 15, 9, 3, 13, 11, 14, 12, 0) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) - - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 16(R10), 32(R10), 48(R10), 64(R10), X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 80(R10), 96(R10), 112(R10), 128(R10), X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) + MOVQ R8, X8 + PINSRQ $0x01, R9, X8 + MOVO X12, X0 + MOVO X15, X1 + MOVOU 32(AX), X2 + MOVOU 48(AX), X3 + MOVOU ·iv0<>+0(SB), X4 + MOVOU ·iv1<>+0(SB), X5 + MOVOU ·iv2<>+0(SB), X6 + PXOR X8, X6 + MOVO (R10), X7 + MOVQ (SI), X8 + PINSRQ $0x01, 16(SI), X8 + MOVQ 32(SI), X9 + PINSRQ $0x01, 48(SI), X9 + MOVQ 8(SI), X10 + PINSRQ $0x01, 24(SI), X10 + MOVQ 40(SI), X11 + PINSRQ $0x01, 56(SI), X11 + MOVO X8, 16(R10) + MOVO X9, 32(R10) + MOVO X10, 48(R10) + MOVO X11, 64(R10) + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 64(SI), X8 + PINSRQ $0x01, 80(SI), X8 + MOVQ 96(SI), X9 + PINSRQ $0x01, 112(SI), X9 + MOVQ 72(SI), X10 + PINSRQ $0x01, 88(SI), X10 + MOVQ 104(SI), X11 + PINSRQ $0x01, 120(SI), X11 + MOVO X8, 80(R10) + MOVO X9, 96(R10) + MOVO X10, 112(R10) + MOVO X11, 128(R10) + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 112(SI), X8 + PINSRQ $0x01, 32(SI), X8 + MOVQ 72(SI), X9 + PINSRQ $0x01, 104(SI), X9 + MOVQ 80(SI), X10 + PINSRQ $0x01, 64(SI), X10 + MOVQ 120(SI), X11 + PINSRQ $0x01, 48(SI), X11 + MOVO X8, 144(R10) + MOVO X9, 160(R10) + MOVO X10, 176(R10) + MOVO X11, 192(R10) + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 8(SI), X8 + PINSRQ $0x01, (SI), X8 + MOVQ 88(SI), X9 + PINSRQ $0x01, 40(SI), X9 + MOVQ 96(SI), X10 + PINSRQ $0x01, 16(SI), X10 + MOVQ 56(SI), X11 + PINSRQ $0x01, 24(SI), X11 + MOVO X8, 208(R10) + MOVO X9, 224(R10) + MOVO X10, 240(R10) + MOVO X11, 256(R10) + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 88(SI), X8 + PINSRQ $0x01, 96(SI), X8 + MOVQ 40(SI), X9 + PINSRQ $0x01, 120(SI), X9 + MOVQ 64(SI), X10 + PINSRQ $0x01, (SI), X10 + MOVQ 16(SI), X11 + PINSRQ $0x01, 104(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 80(SI), X8 + PINSRQ $0x01, 24(SI), X8 + MOVQ 56(SI), X9 + PINSRQ $0x01, 72(SI), X9 + MOVQ 112(SI), X10 + PINSRQ $0x01, 48(SI), X10 + MOVQ 8(SI), X11 + PINSRQ $0x01, 32(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 56(SI), X8 + PINSRQ $0x01, 24(SI), X8 + MOVQ 104(SI), X9 + PINSRQ $0x01, 88(SI), X9 + MOVQ 72(SI), X10 + PINSRQ $0x01, 8(SI), X10 + MOVQ 96(SI), X11 + PINSRQ $0x01, 112(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 16(SI), X8 + PINSRQ $0x01, 40(SI), X8 + MOVQ 32(SI), X9 + PINSRQ $0x01, 120(SI), X9 + MOVQ 48(SI), X10 + PINSRQ $0x01, 80(SI), X10 + MOVQ (SI), X11 + PINSRQ $0x01, 64(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 72(SI), X8 + PINSRQ $0x01, 40(SI), X8 + MOVQ 16(SI), X9 + PINSRQ $0x01, 80(SI), X9 + MOVQ (SI), X10 + PINSRQ $0x01, 56(SI), X10 + MOVQ 32(SI), X11 + PINSRQ $0x01, 120(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 112(SI), X8 + PINSRQ $0x01, 88(SI), X8 + MOVQ 48(SI), X9 + PINSRQ $0x01, 24(SI), X9 + MOVQ 8(SI), X10 + PINSRQ $0x01, 96(SI), X10 + MOVQ 64(SI), X11 + PINSRQ $0x01, 104(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 16(SI), X8 + PINSRQ $0x01, 48(SI), X8 + MOVQ (SI), X9 + PINSRQ $0x01, 64(SI), X9 + MOVQ 96(SI), X10 + PINSRQ $0x01, 80(SI), X10 + MOVQ 88(SI), X11 + PINSRQ $0x01, 24(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 32(SI), X8 + PINSRQ $0x01, 56(SI), X8 + MOVQ 120(SI), X9 + PINSRQ $0x01, 8(SI), X9 + MOVQ 104(SI), X10 + PINSRQ $0x01, 40(SI), X10 + MOVQ 112(SI), X11 + PINSRQ $0x01, 72(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 96(SI), X8 + PINSRQ $0x01, 8(SI), X8 + MOVQ 112(SI), X9 + PINSRQ $0x01, 32(SI), X9 + MOVQ 40(SI), X10 + PINSRQ $0x01, 120(SI), X10 + MOVQ 104(SI), X11 + PINSRQ $0x01, 80(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ (SI), X8 + PINSRQ $0x01, 48(SI), X8 + MOVQ 72(SI), X9 + PINSRQ $0x01, 64(SI), X9 + MOVQ 56(SI), X10 + PINSRQ $0x01, 24(SI), X10 + MOVQ 16(SI), X11 + PINSRQ $0x01, 88(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 104(SI), X8 + PINSRQ $0x01, 56(SI), X8 + MOVQ 96(SI), X9 + PINSRQ $0x01, 24(SI), X9 + MOVQ 88(SI), X10 + PINSRQ $0x01, 112(SI), X10 + MOVQ 8(SI), X11 + PINSRQ $0x01, 72(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 40(SI), X8 + PINSRQ $0x01, 120(SI), X8 + MOVQ 64(SI), X9 + PINSRQ $0x01, 16(SI), X9 + MOVQ (SI), X10 + PINSRQ $0x01, 32(SI), X10 + MOVQ 48(SI), X11 + PINSRQ $0x01, 80(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 48(SI), X8 + PINSRQ $0x01, 112(SI), X8 + MOVQ 88(SI), X9 + PINSRQ $0x01, (SI), X9 + MOVQ 120(SI), X10 + PINSRQ $0x01, 72(SI), X10 + MOVQ 24(SI), X11 + PINSRQ $0x01, 64(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 96(SI), X8 + PINSRQ $0x01, 104(SI), X8 + MOVQ 8(SI), X9 + PINSRQ $0x01, 80(SI), X9 + MOVQ 16(SI), X10 + PINSRQ $0x01, 56(SI), X10 + MOVQ 32(SI), X11 + PINSRQ $0x01, 40(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVQ 80(SI), X8 + PINSRQ $0x01, 64(SI), X8 + MOVQ 56(SI), X9 + PINSRQ $0x01, 8(SI), X9 + MOVQ 16(SI), X10 + PINSRQ $0x01, 32(SI), X10 + MOVQ 48(SI), X11 + PINSRQ $0x01, 40(SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + MOVQ 120(SI), X8 + PINSRQ $0x01, 72(SI), X8 + MOVQ 24(SI), X9 + PINSRQ $0x01, 104(SI), X9 + MOVQ 88(SI), X10 + PINSRQ $0x01, 112(SI), X10 + MOVQ 96(SI), X11 + PINSRQ $0x01, (SI), X11 + PADDQ X8, X0 + PADDQ X9, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ X10, X0 + PADDQ X11, X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + PADDQ 16(R10), X0 + PADDQ 32(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ 48(R10), X0 + PADDQ 64(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + PADDQ 80(R10), X0 + PADDQ 96(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ 112(R10), X0 + PADDQ 128(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + PADDQ 144(R10), X0 + PADDQ 160(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ 176(R10), X0 + PADDQ 192(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X6, X8 + PUNPCKLQDQ X6, X9 + PUNPCKHQDQ X7, X6 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X7, X9 + MOVO X8, X7 + MOVO X2, X8 + PUNPCKHQDQ X9, X7 + PUNPCKLQDQ X3, X9 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X3 + PADDQ 208(R10), X0 + PADDQ 224(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFD $0xb1, X6, X6 + PSHUFD $0xb1, X7, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + PSHUFB X13, X2 + PSHUFB X13, X3 + PADDQ 240(R10), X0 + PADDQ 256(R10), X1 + PADDQ X2, X0 + PADDQ X3, X1 + PXOR X0, X6 + PXOR X1, X7 + PSHUFB X14, X6 + PSHUFB X14, X7 + PADDQ X6, X4 + PADDQ X7, X5 + PXOR X4, X2 + PXOR X5, X3 + MOVOU X2, X11 + PADDQ X2, X11 + PSRLQ $0x3f, X2 + PXOR X11, X2 + MOVOU X3, X11 + PADDQ X3, X11 + PSRLQ $0x3f, X3 + PXOR X11, X3 + MOVO X4, X8 + MOVO X5, X4 + MOVO X8, X5 + MOVO X2, X8 + PUNPCKLQDQ X2, X9 + PUNPCKHQDQ X3, X2 + PUNPCKHQDQ X9, X2 + PUNPCKLQDQ X3, X9 + MOVO X8, X3 + MOVO X6, X8 + PUNPCKHQDQ X9, X3 + PUNPCKLQDQ X7, X9 + PUNPCKHQDQ X9, X6 + PUNPCKLQDQ X8, X9 + PUNPCKHQDQ X9, X7 + MOVOU 32(AX), X10 + MOVOU 48(AX), X11 + PXOR X0, X12 + PXOR X1, X15 + PXOR X2, X10 + PXOR X3, X11 + PXOR X4, X12 + PXOR X5, X15 + PXOR X6, X10 + PXOR X7, X11 + MOVOU X10, 32(AX) + MOVOU X11, 48(AX) + LEAQ 128(SI), SI + SUBQ $0x80, DI + JNE loop + MOVOU X12, (AX) + MOVOU X15, 16(AX) + MOVQ R8, (BX) + MOVQ R9, 8(BX) + RET - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 144(R10), 160(R10), 176(R10), 192(R10), X11, X13, X14) - SHUFFLE(X2, X3, X4, X5, X6, X7, X8, X9) - HALF_ROUND(X0, X1, X2, X3, X4, X5, X6, X7, 208(R10), 224(R10), 240(R10), 256(R10), X11, X13, X14) - SHUFFLE_INV(X2, X3, X4, X5, X6, X7, X8, X9) +DATA ·iv3<>+0(SB)/8, $0x1f83d9abfb41bd6b +DATA ·iv3<>+8(SB)/8, $0x5be0cd19137e2179 +GLOBL ·iv3<>(SB), RODATA|NOPTR, $16 - MOVOU 32(AX), X10 - MOVOU 48(AX), X11 - PXOR X0, X12 - PXOR X1, X15 - PXOR X2, X10 - PXOR X3, X11 - PXOR X4, X12 - PXOR X5, X15 - PXOR X6, X10 - PXOR X7, X11 - MOVOU X10, 32(AX) - MOVOU X11, 48(AX) +DATA ·c40<>+0(SB)/8, $0x0201000706050403 +DATA ·c40<>+8(SB)/8, $0x0a09080f0e0d0c0b +GLOBL ·c40<>(SB), RODATA|NOPTR, $16 - LEAQ 128(SI), SI - SUBQ $128, DI - JNE loop +DATA ·c48<>+0(SB)/8, $0x0100070605040302 +DATA ·c48<>+8(SB)/8, $0x09080f0e0d0c0b0a +GLOBL ·c48<>(SB), RODATA|NOPTR, $16 - MOVOU X12, 0(AX) - MOVOU X15, 16(AX) +DATA ·iv0<>+0(SB)/8, $0x6a09e667f3bcc908 +DATA ·iv0<>+8(SB)/8, $0xbb67ae8584caa73b +GLOBL ·iv0<>(SB), RODATA|NOPTR, $16 - MOVQ R8, 0(BX) - MOVQ R9, 8(BX) +DATA ·iv1<>+0(SB)/8, $0x3c6ef372fe94f82b +DATA ·iv1<>+8(SB)/8, $0xa54ff53a5f1d36f1 +GLOBL ·iv1<>(SB), RODATA|NOPTR, $16 - RET +DATA ·iv2<>+0(SB)/8, $0x510e527fade682d1 +DATA ·iv2<>+8(SB)/8, $0x9b05688c2b3e6c1f +GLOBL ·iv2<>(SB), RODATA|NOPTR, $16 diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go b/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go index db42e6676..c709b7284 100644 --- a/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go +++ b/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (!arm64 && !s390x && !ppc64le) || !gc || purego +//go:build (!arm64 && !s390x && !ppc64 && !ppc64le) || !gc || purego package chacha20 diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go b/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go similarity index 89% rename from vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go rename to vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go index 3a4287f99..bd183d9ba 100644 --- a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.go +++ b/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build gc && !purego +//go:build gc && !purego && (ppc64 || ppc64le) package chacha20 diff --git a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s b/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s similarity index 76% rename from vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s rename to vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s index c672ccf69..a660b4112 100644 --- a/vendor/golang.org/x/crypto/chacha20/chacha_ppc64le.s +++ b/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s @@ -19,7 +19,7 @@ // The differences in this and the original implementation are // due to the calling conventions and initialization of constants. -//go:build gc && !purego +//go:build gc && !purego && (ppc64 || ppc64le) #include "textflag.h" @@ -36,32 +36,68 @@ // for VPERMXOR #define MASK R18 -DATA consts<>+0x00(SB)/8, $0x3320646e61707865 -DATA consts<>+0x08(SB)/8, $0x6b20657479622d32 -DATA consts<>+0x10(SB)/8, $0x0000000000000001 -DATA consts<>+0x18(SB)/8, $0x0000000000000000 -DATA consts<>+0x20(SB)/8, $0x0000000000000004 -DATA consts<>+0x28(SB)/8, $0x0000000000000000 -DATA consts<>+0x30(SB)/8, $0x0a0b08090e0f0c0d -DATA consts<>+0x38(SB)/8, $0x0203000106070405 -DATA consts<>+0x40(SB)/8, $0x090a0b080d0e0f0c -DATA consts<>+0x48(SB)/8, $0x0102030005060704 -DATA consts<>+0x50(SB)/8, $0x6170786561707865 -DATA consts<>+0x58(SB)/8, $0x6170786561707865 -DATA consts<>+0x60(SB)/8, $0x3320646e3320646e -DATA consts<>+0x68(SB)/8, $0x3320646e3320646e -DATA consts<>+0x70(SB)/8, $0x79622d3279622d32 -DATA consts<>+0x78(SB)/8, $0x79622d3279622d32 -DATA consts<>+0x80(SB)/8, $0x6b2065746b206574 -DATA consts<>+0x88(SB)/8, $0x6b2065746b206574 -DATA consts<>+0x90(SB)/8, $0x0000000100000000 -DATA consts<>+0x98(SB)/8, $0x0000000300000002 -DATA consts<>+0xa0(SB)/8, $0x5566774411223300 -DATA consts<>+0xa8(SB)/8, $0xddeeffcc99aabb88 -DATA consts<>+0xb0(SB)/8, $0x6677445522330011 -DATA consts<>+0xb8(SB)/8, $0xeeffccddaabb8899 +DATA consts<>+0x00(SB)/4, $0x61707865 +DATA consts<>+0x04(SB)/4, $0x3320646e +DATA consts<>+0x08(SB)/4, $0x79622d32 +DATA consts<>+0x0c(SB)/4, $0x6b206574 +DATA consts<>+0x10(SB)/4, $0x00000001 +DATA consts<>+0x14(SB)/4, $0x00000000 +DATA consts<>+0x18(SB)/4, $0x00000000 +DATA consts<>+0x1c(SB)/4, $0x00000000 +DATA consts<>+0x20(SB)/4, $0x00000004 +DATA consts<>+0x24(SB)/4, $0x00000000 +DATA consts<>+0x28(SB)/4, $0x00000000 +DATA consts<>+0x2c(SB)/4, $0x00000000 +DATA consts<>+0x30(SB)/4, $0x0e0f0c0d +DATA consts<>+0x34(SB)/4, $0x0a0b0809 +DATA consts<>+0x38(SB)/4, $0x06070405 +DATA consts<>+0x3c(SB)/4, $0x02030001 +DATA consts<>+0x40(SB)/4, $0x0d0e0f0c +DATA consts<>+0x44(SB)/4, $0x090a0b08 +DATA consts<>+0x48(SB)/4, $0x05060704 +DATA consts<>+0x4c(SB)/4, $0x01020300 +DATA consts<>+0x50(SB)/4, $0x61707865 +DATA consts<>+0x54(SB)/4, $0x61707865 +DATA consts<>+0x58(SB)/4, $0x61707865 +DATA consts<>+0x5c(SB)/4, $0x61707865 +DATA consts<>+0x60(SB)/4, $0x3320646e +DATA consts<>+0x64(SB)/4, $0x3320646e +DATA consts<>+0x68(SB)/4, $0x3320646e +DATA consts<>+0x6c(SB)/4, $0x3320646e +DATA consts<>+0x70(SB)/4, $0x79622d32 +DATA consts<>+0x74(SB)/4, $0x79622d32 +DATA consts<>+0x78(SB)/4, $0x79622d32 +DATA consts<>+0x7c(SB)/4, $0x79622d32 +DATA consts<>+0x80(SB)/4, $0x6b206574 +DATA consts<>+0x84(SB)/4, $0x6b206574 +DATA consts<>+0x88(SB)/4, $0x6b206574 +DATA consts<>+0x8c(SB)/4, $0x6b206574 +DATA consts<>+0x90(SB)/4, $0x00000000 +DATA consts<>+0x94(SB)/4, $0x00000001 +DATA consts<>+0x98(SB)/4, $0x00000002 +DATA consts<>+0x9c(SB)/4, $0x00000003 +DATA consts<>+0xa0(SB)/4, $0x11223300 +DATA consts<>+0xa4(SB)/4, $0x55667744 +DATA consts<>+0xa8(SB)/4, $0x99aabb88 +DATA consts<>+0xac(SB)/4, $0xddeeffcc +DATA consts<>+0xb0(SB)/4, $0x22330011 +DATA consts<>+0xb4(SB)/4, $0x66774455 +DATA consts<>+0xb8(SB)/4, $0xaabb8899 +DATA consts<>+0xbc(SB)/4, $0xeeffccdd GLOBL consts<>(SB), RODATA, $0xc0 +#ifdef GOARCH_ppc64 +#define BE_XXBRW_INIT() \ + LVSL (R0)(R0), V24 \ + VSPLTISB $3, V25 \ + VXOR V24, V25, V24 \ + +#define BE_XXBRW(vr) VPERM vr, vr, V24, vr +#else +#define BE_XXBRW_INIT() +#define BE_XXBRW(vr) +#endif + //func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32) TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40 MOVD out+0(FP), OUT @@ -94,6 +130,8 @@ TEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40 // Clear V27 VXOR V27, V27, V27 + BE_XXBRW_INIT() + // V28 LXVW4X (CONSTBASE)(R11), VS60 @@ -299,6 +337,11 @@ loop_vsx: VADDUWM V8, V18, V8 VADDUWM V12, V19, V12 + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + CMPU LEN, $64 BLT tail_vsx @@ -327,6 +370,11 @@ loop_vsx: VADDUWM V9, V18, V8 VADDUWM V13, V19, V12 + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + CMPU LEN, $64 BLT tail_vsx @@ -334,8 +382,8 @@ loop_vsx: LXVW4X (INP)(R8), VS60 LXVW4X (INP)(R9), VS61 LXVW4X (INP)(R10), VS62 - VXOR V27, V0, V27 + VXOR V27, V0, V27 VXOR V28, V4, V28 VXOR V29, V8, V29 VXOR V30, V12, V30 @@ -354,6 +402,11 @@ loop_vsx: VADDUWM V10, V18, V8 VADDUWM V14, V19, V12 + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + CMPU LEN, $64 BLT tail_vsx @@ -381,6 +434,11 @@ loop_vsx: VADDUWM V11, V18, V8 VADDUWM V15, V19, V12 + BE_XXBRW(V0) + BE_XXBRW(V4) + BE_XXBRW(V8) + BE_XXBRW(V12) + CMPU LEN, $64 BLT tail_vsx @@ -408,9 +466,9 @@ loop_vsx: done_vsx: // Increment counter by number of 64 byte blocks - MOVD (CNT), R14 + MOVWZ (CNT), R14 ADD BLOCKS, R14 - MOVD R14, (CNT) + MOVWZ R14, (CNT) RET tail_vsx: diff --git a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go b/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go index 333da285b..bd896bdc7 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go +++ b/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build (!amd64 && !ppc64le && !s390x) || !gc || purego +//go:build (!amd64 && !ppc64le && !ppc64 && !s390x) || !gc || purego package poly1305 diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s b/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s index e0d3c6475..133757384 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s +++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s @@ -1,108 +1,93 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Code generated by command: go run sum_amd64_asm.go -out ../sum_amd64.s -pkg poly1305. DO NOT EDIT. //go:build gc && !purego -#include "textflag.h" - -#define POLY1305_ADD(msg, h0, h1, h2) \ - ADDQ 0(msg), h0; \ - ADCQ 8(msg), h1; \ - ADCQ $1, h2; \ - LEAQ 16(msg), msg - -#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3) \ - MOVQ r0, AX; \ - MULQ h0; \ - MOVQ AX, t0; \ - MOVQ DX, t1; \ - MOVQ r0, AX; \ - MULQ h1; \ - ADDQ AX, t1; \ - ADCQ $0, DX; \ - MOVQ r0, t2; \ - IMULQ h2, t2; \ - ADDQ DX, t2; \ - \ - MOVQ r1, AX; \ - MULQ h0; \ - ADDQ AX, t1; \ - ADCQ $0, DX; \ - MOVQ DX, h0; \ - MOVQ r1, t3; \ - IMULQ h2, t3; \ - MOVQ r1, AX; \ - MULQ h1; \ - ADDQ AX, t2; \ - ADCQ DX, t3; \ - ADDQ h0, t2; \ - ADCQ $0, t3; \ - \ - MOVQ t0, h0; \ - MOVQ t1, h1; \ - MOVQ t2, h2; \ - ANDQ $3, h2; \ - MOVQ t2, t0; \ - ANDQ $0xFFFFFFFFFFFFFFFC, t0; \ - ADDQ t0, h0; \ - ADCQ t3, h1; \ - ADCQ $0, h2; \ - SHRQ $2, t3, t2; \ - SHRQ $2, t3; \ - ADDQ t2, h0; \ - ADCQ t3, h1; \ - ADCQ $0, h2 - -// func update(state *[7]uint64, msg []byte) +// func update(state *macState, msg []byte) TEXT ·update(SB), $0-32 MOVQ state+0(FP), DI MOVQ msg_base+8(FP), SI MOVQ msg_len+16(FP), R15 - - MOVQ 0(DI), R8 // h0 - MOVQ 8(DI), R9 // h1 - MOVQ 16(DI), R10 // h2 - MOVQ 24(DI), R11 // r0 - MOVQ 32(DI), R12 // r1 - - CMPQ R15, $16 + MOVQ (DI), R8 + MOVQ 8(DI), R9 + MOVQ 16(DI), R10 + MOVQ 24(DI), R11 + MOVQ 32(DI), R12 + CMPQ R15, $0x10 JB bytes_between_0_and_15 loop: - POLY1305_ADD(SI, R8, R9, R10) + ADDQ (SI), R8 + ADCQ 8(SI), R9 + ADCQ $0x01, R10 + LEAQ 16(SI), SI multiply: - POLY1305_MUL(R8, R9, R10, R11, R12, BX, CX, R13, R14) - SUBQ $16, R15 - CMPQ R15, $16 - JAE loop + MOVQ R11, AX + MULQ R8 + MOVQ AX, BX + MOVQ DX, CX + MOVQ R11, AX + MULQ R9 + ADDQ AX, CX + ADCQ $0x00, DX + MOVQ R11, R13 + IMULQ R10, R13 + ADDQ DX, R13 + MOVQ R12, AX + MULQ R8 + ADDQ AX, CX + ADCQ $0x00, DX + MOVQ DX, R8 + MOVQ R12, R14 + IMULQ R10, R14 + MOVQ R12, AX + MULQ R9 + ADDQ AX, R13 + ADCQ DX, R14 + ADDQ R8, R13 + ADCQ $0x00, R14 + MOVQ BX, R8 + MOVQ CX, R9 + MOVQ R13, R10 + ANDQ $0x03, R10 + MOVQ R13, BX + ANDQ $-4, BX + ADDQ BX, R8 + ADCQ R14, R9 + ADCQ $0x00, R10 + SHRQ $0x02, R14, R13 + SHRQ $0x02, R14 + ADDQ R13, R8 + ADCQ R14, R9 + ADCQ $0x00, R10 + SUBQ $0x10, R15 + CMPQ R15, $0x10 + JAE loop bytes_between_0_and_15: TESTQ R15, R15 JZ done - MOVQ $1, BX + MOVQ $0x00000001, BX XORQ CX, CX XORQ R13, R13 ADDQ R15, SI flush_buffer: - SHLQ $8, BX, CX - SHLQ $8, BX + SHLQ $0x08, BX, CX + SHLQ $0x08, BX MOVB -1(SI), R13 XORQ R13, BX DECQ SI DECQ R15 JNZ flush_buffer - ADDQ BX, R8 ADCQ CX, R9 - ADCQ $0, R10 - MOVQ $16, R15 + ADCQ $0x00, R10 + MOVQ $0x00000010, R15 JMP multiply done: - MOVQ R8, 0(DI) + MOVQ R8, (DI) MOVQ R9, 8(DI) MOVQ R10, 16(DI) RET diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.go b/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.go similarity index 95% rename from vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.go rename to vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.go index 4aec4874b..1a1679aaa 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.go +++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build gc && !purego +//go:build gc && !purego && (ppc64 || ppc64le) package poly1305 diff --git a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.s b/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s similarity index 89% rename from vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.s rename to vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s index b3c1699bf..6899a1dab 100644 --- a/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64le.s +++ b/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s @@ -2,15 +2,25 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build gc && !purego +//go:build gc && !purego && (ppc64 || ppc64le) #include "textflag.h" // This was ported from the amd64 implementation. +#ifdef GOARCH_ppc64le +#define LE_MOVD MOVD +#define LE_MOVWZ MOVWZ +#define LE_MOVHZ MOVHZ +#else +#define LE_MOVD MOVDBR +#define LE_MOVWZ MOVWBR +#define LE_MOVHZ MOVHBR +#endif + #define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \ - MOVD (msg), t0; \ - MOVD 8(msg), t1; \ + LE_MOVD (msg)( R0), t0; \ + LE_MOVD (msg)(R24), t1; \ MOVD $1, t2; \ ADDC t0, h0, h0; \ ADDE t1, h1, h1; \ @@ -50,10 +60,6 @@ ADDE t3, h1, h1; \ ADDZE h2 -DATA ·poly1305Mask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF -DATA ·poly1305Mask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC -GLOBL ·poly1305Mask<>(SB), RODATA, $16 - // func update(state *[7]uint64, msg []byte) TEXT ·update(SB), $0-32 MOVD state+0(FP), R3 @@ -66,6 +72,8 @@ TEXT ·update(SB), $0-32 MOVD 24(R3), R11 // r0 MOVD 32(R3), R12 // r1 + MOVD $8, R24 + CMP R5, $16 BLT bytes_between_0_and_15 @@ -94,7 +102,7 @@ flush_buffer: // Greater than 8 -- load the rightmost remaining bytes in msg // and put into R17 (h1) - MOVD (R4)(R21), R17 + LE_MOVD (R4)(R21), R17 MOVD $16, R22 // Find the offset to those bytes @@ -118,7 +126,7 @@ just1: BLT less8 // Exactly 8 - MOVD (R4), R16 + LE_MOVD (R4), R16 CMP R17, $0 @@ -133,7 +141,7 @@ less8: MOVD $0, R22 // shift count CMP R5, $4 BLT less4 - MOVWZ (R4), R16 + LE_MOVWZ (R4), R16 ADD $4, R4 ADD $-4, R5 MOVD $32, R22 @@ -141,7 +149,7 @@ less8: less4: CMP R5, $2 BLT less2 - MOVHZ (R4), R21 + LE_MOVHZ (R4), R21 SLD R22, R21, R21 OR R16, R21, R16 ADD $16, R22 diff --git a/vendor/golang.org/x/crypto/sha3/doc.go b/vendor/golang.org/x/crypto/sha3/doc.go index 7e0230907..bbf391fe6 100644 --- a/vendor/golang.org/x/crypto/sha3/doc.go +++ b/vendor/golang.org/x/crypto/sha3/doc.go @@ -5,6 +5,10 @@ // Package sha3 implements the SHA-3 fixed-output-length hash functions and // the SHAKE variable-output-length hash functions defined by FIPS-202. // +// All types in this package also implement [encoding.BinaryMarshaler], +// [encoding.BinaryAppender] and [encoding.BinaryUnmarshaler] to marshal and +// unmarshal the internal state of the hash. +// // Both types of hash function use the "sponge" construction and the Keccak // permutation. For a detailed specification see http://keccak.noekeon.org/ // diff --git a/vendor/golang.org/x/crypto/sha3/hashes.go b/vendor/golang.org/x/crypto/sha3/hashes.go index c544b29e5..31fffbe04 100644 --- a/vendor/golang.org/x/crypto/sha3/hashes.go +++ b/vendor/golang.org/x/crypto/sha3/hashes.go @@ -48,33 +48,52 @@ func init() { crypto.RegisterHash(crypto.SHA3_512, New512) } +const ( + dsbyteSHA3 = 0b00000110 + dsbyteKeccak = 0b00000001 + dsbyteShake = 0b00011111 + dsbyteCShake = 0b00000100 + + // rateK[c] is the rate in bytes for Keccak[c] where c is the capacity in + // bits. Given the sponge size is 1600 bits, the rate is 1600 - c bits. + rateK256 = (1600 - 256) / 8 + rateK448 = (1600 - 448) / 8 + rateK512 = (1600 - 512) / 8 + rateK768 = (1600 - 768) / 8 + rateK1024 = (1600 - 1024) / 8 +) + func new224Generic() *state { - return &state{rate: 144, outputLen: 28, dsbyte: 0x06} + return &state{rate: rateK448, outputLen: 28, dsbyte: dsbyteSHA3} } func new256Generic() *state { - return &state{rate: 136, outputLen: 32, dsbyte: 0x06} + return &state{rate: rateK512, outputLen: 32, dsbyte: dsbyteSHA3} } func new384Generic() *state { - return &state{rate: 104, outputLen: 48, dsbyte: 0x06} + return &state{rate: rateK768, outputLen: 48, dsbyte: dsbyteSHA3} } func new512Generic() *state { - return &state{rate: 72, outputLen: 64, dsbyte: 0x06} + return &state{rate: rateK1024, outputLen: 64, dsbyte: dsbyteSHA3} } // NewLegacyKeccak256 creates a new Keccak-256 hash. // // Only use this function if you require compatibility with an existing cryptosystem // that uses non-standard padding. All other users should use New256 instead. -func NewLegacyKeccak256() hash.Hash { return &state{rate: 136, outputLen: 32, dsbyte: 0x01} } +func NewLegacyKeccak256() hash.Hash { + return &state{rate: rateK512, outputLen: 32, dsbyte: dsbyteKeccak} +} // NewLegacyKeccak512 creates a new Keccak-512 hash. // // Only use this function if you require compatibility with an existing cryptosystem // that uses non-standard padding. All other users should use New512 instead. -func NewLegacyKeccak512() hash.Hash { return &state{rate: 72, outputLen: 64, dsbyte: 0x01} } +func NewLegacyKeccak512() hash.Hash { + return &state{rate: rateK1024, outputLen: 64, dsbyte: dsbyteKeccak} +} // Sum224 returns the SHA3-224 digest of the data. func Sum224(data []byte) (digest [28]byte) { diff --git a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s index 1f5393886..99e2f16e9 100644 --- a/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s +++ b/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s @@ -1,390 +1,5419 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. +// Code generated by command: go run keccakf_amd64_asm.go -out ../keccakf_amd64.s -pkg sha3. DO NOT EDIT. //go:build amd64 && !purego && gc -// This code was translated into a form compatible with 6a from the public -// domain sources at https://github.com/gvanas/KeccakCodePackage - -// Offsets in state -#define _ba (0*8) -#define _be (1*8) -#define _bi (2*8) -#define _bo (3*8) -#define _bu (4*8) -#define _ga (5*8) -#define _ge (6*8) -#define _gi (7*8) -#define _go (8*8) -#define _gu (9*8) -#define _ka (10*8) -#define _ke (11*8) -#define _ki (12*8) -#define _ko (13*8) -#define _ku (14*8) -#define _ma (15*8) -#define _me (16*8) -#define _mi (17*8) -#define _mo (18*8) -#define _mu (19*8) -#define _sa (20*8) -#define _se (21*8) -#define _si (22*8) -#define _so (23*8) -#define _su (24*8) - -// Temporary registers -#define rT1 AX - -// Round vars -#define rpState DI -#define rpStack SP - -#define rDa BX -#define rDe CX -#define rDi DX -#define rDo R8 -#define rDu R9 - -#define rBa R10 -#define rBe R11 -#define rBi R12 -#define rBo R13 -#define rBu R14 - -#define rCa SI -#define rCe BP -#define rCi rBi -#define rCo rBo -#define rCu R15 - -#define MOVQ_RBI_RCE MOVQ rBi, rCe -#define XORQ_RT1_RCA XORQ rT1, rCa -#define XORQ_RT1_RCE XORQ rT1, rCe -#define XORQ_RBA_RCU XORQ rBa, rCu -#define XORQ_RBE_RCU XORQ rBe, rCu -#define XORQ_RDU_RCU XORQ rDu, rCu -#define XORQ_RDA_RCA XORQ rDa, rCa -#define XORQ_RDE_RCE XORQ rDe, rCe - -#define mKeccakRound(iState, oState, rc, B_RBI_RCE, G_RT1_RCA, G_RT1_RCE, G_RBA_RCU, K_RT1_RCA, K_RT1_RCE, K_RBA_RCU, M_RT1_RCA, M_RT1_RCE, M_RBE_RCU, S_RDU_RCU, S_RDA_RCA, S_RDE_RCE) \ - /* Prepare round */ \ - MOVQ rCe, rDa; \ - ROLQ $1, rDa; \ - \ - MOVQ _bi(iState), rCi; \ - XORQ _gi(iState), rDi; \ - XORQ rCu, rDa; \ - XORQ _ki(iState), rCi; \ - XORQ _mi(iState), rDi; \ - XORQ rDi, rCi; \ - \ - MOVQ rCi, rDe; \ - ROLQ $1, rDe; \ - \ - MOVQ _bo(iState), rCo; \ - XORQ _go(iState), rDo; \ - XORQ rCa, rDe; \ - XORQ _ko(iState), rCo; \ - XORQ _mo(iState), rDo; \ - XORQ rDo, rCo; \ - \ - MOVQ rCo, rDi; \ - ROLQ $1, rDi; \ - \ - MOVQ rCu, rDo; \ - XORQ rCe, rDi; \ - ROLQ $1, rDo; \ - \ - MOVQ rCa, rDu; \ - XORQ rCi, rDo; \ - ROLQ $1, rDu; \ - \ - /* Result b */ \ - MOVQ _ba(iState), rBa; \ - MOVQ _ge(iState), rBe; \ - XORQ rCo, rDu; \ - MOVQ _ki(iState), rBi; \ - MOVQ _mo(iState), rBo; \ - MOVQ _su(iState), rBu; \ - XORQ rDe, rBe; \ - ROLQ $44, rBe; \ - XORQ rDi, rBi; \ - XORQ rDa, rBa; \ - ROLQ $43, rBi; \ - \ - MOVQ rBe, rCa; \ - MOVQ rc, rT1; \ - ORQ rBi, rCa; \ - XORQ rBa, rT1; \ - XORQ rT1, rCa; \ - MOVQ rCa, _ba(oState); \ - \ - XORQ rDu, rBu; \ - ROLQ $14, rBu; \ - MOVQ rBa, rCu; \ - ANDQ rBe, rCu; \ - XORQ rBu, rCu; \ - MOVQ rCu, _bu(oState); \ - \ - XORQ rDo, rBo; \ - ROLQ $21, rBo; \ - MOVQ rBo, rT1; \ - ANDQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _bi(oState); \ - \ - NOTQ rBi; \ - ORQ rBa, rBu; \ - ORQ rBo, rBi; \ - XORQ rBo, rBu; \ - XORQ rBe, rBi; \ - MOVQ rBu, _bo(oState); \ - MOVQ rBi, _be(oState); \ - B_RBI_RCE; \ - \ - /* Result g */ \ - MOVQ _gu(iState), rBe; \ - XORQ rDu, rBe; \ - MOVQ _ka(iState), rBi; \ - ROLQ $20, rBe; \ - XORQ rDa, rBi; \ - ROLQ $3, rBi; \ - MOVQ _bo(iState), rBa; \ - MOVQ rBe, rT1; \ - ORQ rBi, rT1; \ - XORQ rDo, rBa; \ - MOVQ _me(iState), rBo; \ - MOVQ _si(iState), rBu; \ - ROLQ $28, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ga(oState); \ - G_RT1_RCA; \ - \ - XORQ rDe, rBo; \ - ROLQ $45, rBo; \ - MOVQ rBi, rT1; \ - ANDQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _ge(oState); \ - G_RT1_RCE; \ - \ - XORQ rDi, rBu; \ - ROLQ $61, rBu; \ - MOVQ rBu, rT1; \ - ORQ rBa, rT1; \ - XORQ rBo, rT1; \ - MOVQ rT1, _go(oState); \ - \ - ANDQ rBe, rBa; \ - XORQ rBu, rBa; \ - MOVQ rBa, _gu(oState); \ - NOTQ rBu; \ - G_RBA_RCU; \ - \ - ORQ rBu, rBo; \ - XORQ rBi, rBo; \ - MOVQ rBo, _gi(oState); \ - \ - /* Result k */ \ - MOVQ _be(iState), rBa; \ - MOVQ _gi(iState), rBe; \ - MOVQ _ko(iState), rBi; \ - MOVQ _mu(iState), rBo; \ - MOVQ _sa(iState), rBu; \ - XORQ rDi, rBe; \ - ROLQ $6, rBe; \ - XORQ rDo, rBi; \ - ROLQ $25, rBi; \ - MOVQ rBe, rT1; \ - ORQ rBi, rT1; \ - XORQ rDe, rBa; \ - ROLQ $1, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ka(oState); \ - K_RT1_RCA; \ - \ - XORQ rDu, rBo; \ - ROLQ $8, rBo; \ - MOVQ rBi, rT1; \ - ANDQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _ke(oState); \ - K_RT1_RCE; \ - \ - XORQ rDa, rBu; \ - ROLQ $18, rBu; \ - NOTQ rBo; \ - MOVQ rBo, rT1; \ - ANDQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _ki(oState); \ - \ - MOVQ rBu, rT1; \ - ORQ rBa, rT1; \ - XORQ rBo, rT1; \ - MOVQ rT1, _ko(oState); \ - \ - ANDQ rBe, rBa; \ - XORQ rBu, rBa; \ - MOVQ rBa, _ku(oState); \ - K_RBA_RCU; \ - \ - /* Result m */ \ - MOVQ _ga(iState), rBe; \ - XORQ rDa, rBe; \ - MOVQ _ke(iState), rBi; \ - ROLQ $36, rBe; \ - XORQ rDe, rBi; \ - MOVQ _bu(iState), rBa; \ - ROLQ $10, rBi; \ - MOVQ rBe, rT1; \ - MOVQ _mi(iState), rBo; \ - ANDQ rBi, rT1; \ - XORQ rDu, rBa; \ - MOVQ _so(iState), rBu; \ - ROLQ $27, rBa; \ - XORQ rBa, rT1; \ - MOVQ rT1, _ma(oState); \ - M_RT1_RCA; \ - \ - XORQ rDi, rBo; \ - ROLQ $15, rBo; \ - MOVQ rBi, rT1; \ - ORQ rBo, rT1; \ - XORQ rBe, rT1; \ - MOVQ rT1, _me(oState); \ - M_RT1_RCE; \ - \ - XORQ rDo, rBu; \ - ROLQ $56, rBu; \ - NOTQ rBo; \ - MOVQ rBo, rT1; \ - ORQ rBu, rT1; \ - XORQ rBi, rT1; \ - MOVQ rT1, _mi(oState); \ - \ - ORQ rBa, rBe; \ - XORQ rBu, rBe; \ - MOVQ rBe, _mu(oState); \ - \ - ANDQ rBa, rBu; \ - XORQ rBo, rBu; \ - MOVQ rBu, _mo(oState); \ - M_RBE_RCU; \ - \ - /* Result s */ \ - MOVQ _bi(iState), rBa; \ - MOVQ _go(iState), rBe; \ - MOVQ _ku(iState), rBi; \ - XORQ rDi, rBa; \ - MOVQ _ma(iState), rBo; \ - ROLQ $62, rBa; \ - XORQ rDo, rBe; \ - MOVQ _se(iState), rBu; \ - ROLQ $55, rBe; \ - \ - XORQ rDu, rBi; \ - MOVQ rBa, rDu; \ - XORQ rDe, rBu; \ - ROLQ $2, rBu; \ - ANDQ rBe, rDu; \ - XORQ rBu, rDu; \ - MOVQ rDu, _su(oState); \ - \ - ROLQ $39, rBi; \ - S_RDU_RCU; \ - NOTQ rBe; \ - XORQ rDa, rBo; \ - MOVQ rBe, rDa; \ - ANDQ rBi, rDa; \ - XORQ rBa, rDa; \ - MOVQ rDa, _sa(oState); \ - S_RDA_RCA; \ - \ - ROLQ $41, rBo; \ - MOVQ rBi, rDe; \ - ORQ rBo, rDe; \ - XORQ rBe, rDe; \ - MOVQ rDe, _se(oState); \ - S_RDE_RCE; \ - \ - MOVQ rBo, rDi; \ - MOVQ rBu, rDo; \ - ANDQ rBu, rDi; \ - ORQ rBa, rDo; \ - XORQ rBi, rDi; \ - XORQ rBo, rDo; \ - MOVQ rDi, _si(oState); \ - MOVQ rDo, _so(oState) \ - // func keccakF1600(a *[25]uint64) -TEXT ·keccakF1600(SB), 0, $200-8 - MOVQ a+0(FP), rpState +TEXT ·keccakF1600(SB), $200-8 + MOVQ a+0(FP), DI // Convert the user state into an internal state - NOTQ _be(rpState) - NOTQ _bi(rpState) - NOTQ _go(rpState) - NOTQ _ki(rpState) - NOTQ _mi(rpState) - NOTQ _sa(rpState) + NOTQ 8(DI) + NOTQ 16(DI) + NOTQ 64(DI) + NOTQ 96(DI) + NOTQ 136(DI) + NOTQ 160(DI) // Execute the KeccakF permutation - MOVQ _ba(rpState), rCa - MOVQ _be(rpState), rCe - MOVQ _bu(rpState), rCu - - XORQ _ga(rpState), rCa - XORQ _ge(rpState), rCe - XORQ _gu(rpState), rCu - - XORQ _ka(rpState), rCa - XORQ _ke(rpState), rCe - XORQ _ku(rpState), rCu - - XORQ _ma(rpState), rCa - XORQ _me(rpState), rCe - XORQ _mu(rpState), rCu - - XORQ _sa(rpState), rCa - XORQ _se(rpState), rCe - MOVQ _si(rpState), rDi - MOVQ _so(rpState), rDo - XORQ _su(rpState), rCu - - mKeccakRound(rpState, rpStack, $0x0000000000000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000000008082, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x800000000000808a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000080008000, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000008a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x0000000000000088, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x0000000080008009, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x000000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000008000808b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x800000000000008b, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000000008089, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008003, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000000008002, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000000080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x000000000000800a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x800000008000000a, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x8000000080008081, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000000008080, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpState, rpStack, $0x0000000080000001, MOVQ_RBI_RCE, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBA_RCU, XORQ_RT1_RCA, XORQ_RT1_RCE, XORQ_RBE_RCU, XORQ_RDU_RCU, XORQ_RDA_RCA, XORQ_RDE_RCE) - mKeccakRound(rpStack, rpState, $0x8000000080008008, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP) + MOVQ (DI), SI + MOVQ 8(DI), BP + MOVQ 32(DI), R15 + XORQ 40(DI), SI + XORQ 48(DI), BP + XORQ 72(DI), R15 + XORQ 80(DI), SI + XORQ 88(DI), BP + XORQ 112(DI), R15 + XORQ 120(DI), SI + XORQ 128(DI), BP + XORQ 152(DI), R15 + XORQ 160(DI), SI + XORQ 168(DI), BP + MOVQ 176(DI), DX + MOVQ 184(DI), R8 + XORQ 192(DI), R15 - // Revert the internal state to the user state - NOTQ _be(rpState) - NOTQ _bi(rpState) - NOTQ _go(rpState) - NOTQ _ki(rpState) - NOTQ _mi(rpState) - NOTQ _sa(rpState) + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x0000000000000001, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x0000000000008082, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x800000000000808a, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000080008000, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x000000000000808b, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x0000000080000001, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000080008081, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000000008009, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x000000000000008a, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x0000000000000088, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x0000000080008009, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x000000008000000a, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x000000008000808b, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x800000000000008b, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000000008089, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000000008003, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000000008002, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000000000080, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x000000000000800a, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x800000008000000a, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000080008081, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000000008080, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + MOVQ R12, BP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + XORQ R10, R15 + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + XORQ R11, R15 + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(DI), R12 + XORQ 56(DI), DX + XORQ R15, BX + XORQ 96(DI), R12 + XORQ 136(DI), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(DI), R13 + XORQ 64(DI), R8 + XORQ SI, CX + XORQ 104(DI), R13 + XORQ 144(DI), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (DI), R10 + MOVQ 48(DI), R11 + XORQ R13, R9 + MOVQ 96(DI), R12 + MOVQ 144(DI), R13 + MOVQ 192(DI), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x0000000080000001, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (SP) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(SP) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(SP) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(SP) + MOVQ R12, 8(SP) + MOVQ R12, BP + + // Result g + MOVQ 72(DI), R11 + XORQ R9, R11 + MOVQ 80(DI), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(DI), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(DI), R13 + MOVQ 176(DI), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(SP) + XORQ AX, SI + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(SP) + XORQ AX, BP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(SP) + NOTQ R14 + XORQ R10, R15 + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(SP) + + // Result k + MOVQ 8(DI), R10 + MOVQ 56(DI), R11 + MOVQ 104(DI), R12 + MOVQ 152(DI), R13 + MOVQ 160(DI), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(SP) + XORQ AX, SI + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(SP) + XORQ AX, BP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(SP) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(SP) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(SP) + XORQ R10, R15 + + // Result m + MOVQ 40(DI), R11 + XORQ BX, R11 + MOVQ 88(DI), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(DI), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(DI), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(DI), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(SP) + XORQ AX, SI + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(SP) + XORQ AX, BP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(SP) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(SP) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(SP) + XORQ R11, R15 + + // Result s + MOVQ 16(DI), R10 + MOVQ 64(DI), R11 + MOVQ 112(DI), R12 + XORQ DX, R10 + MOVQ 120(DI), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(DI), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(SP) + ROLQ $0x27, R12 + XORQ R9, R15 + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(SP) + XORQ BX, SI + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(SP) + XORQ CX, BP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(SP) + MOVQ R8, 184(SP) + + // Prepare round + MOVQ BP, BX + ROLQ $0x01, BX + MOVQ 16(SP), R12 + XORQ 56(SP), DX + XORQ R15, BX + XORQ 96(SP), R12 + XORQ 136(SP), DX + XORQ DX, R12 + MOVQ R12, CX + ROLQ $0x01, CX + MOVQ 24(SP), R13 + XORQ 64(SP), R8 + XORQ SI, CX + XORQ 104(SP), R13 + XORQ 144(SP), R8 + XORQ R8, R13 + MOVQ R13, DX + ROLQ $0x01, DX + MOVQ R15, R8 + XORQ BP, DX + ROLQ $0x01, R8 + MOVQ SI, R9 + XORQ R12, R8 + ROLQ $0x01, R9 + + // Result b + MOVQ (SP), R10 + MOVQ 48(SP), R11 + XORQ R13, R9 + MOVQ 96(SP), R12 + MOVQ 144(SP), R13 + MOVQ 192(SP), R14 + XORQ CX, R11 + ROLQ $0x2c, R11 + XORQ DX, R12 + XORQ BX, R10 + ROLQ $0x2b, R12 + MOVQ R11, SI + MOVQ $0x8000000080008008, AX + ORQ R12, SI + XORQ R10, AX + XORQ AX, SI + MOVQ SI, (DI) + XORQ R9, R14 + ROLQ $0x0e, R14 + MOVQ R10, R15 + ANDQ R11, R15 + XORQ R14, R15 + MOVQ R15, 32(DI) + XORQ R8, R13 + ROLQ $0x15, R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 16(DI) + NOTQ R12 + ORQ R10, R14 + ORQ R13, R12 + XORQ R13, R14 + XORQ R11, R12 + MOVQ R14, 24(DI) + MOVQ R12, 8(DI) + NOP + + // Result g + MOVQ 72(SP), R11 + XORQ R9, R11 + MOVQ 80(SP), R12 + ROLQ $0x14, R11 + XORQ BX, R12 + ROLQ $0x03, R12 + MOVQ 24(SP), R10 + MOVQ R11, AX + ORQ R12, AX + XORQ R8, R10 + MOVQ 128(SP), R13 + MOVQ 176(SP), R14 + ROLQ $0x1c, R10 + XORQ R10, AX + MOVQ AX, 40(DI) + NOP + XORQ CX, R13 + ROLQ $0x2d, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 48(DI) + NOP + XORQ DX, R14 + ROLQ $0x3d, R14 + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 64(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 72(DI) + NOTQ R14 + NOP + ORQ R14, R13 + XORQ R12, R13 + MOVQ R13, 56(DI) + + // Result k + MOVQ 8(SP), R10 + MOVQ 56(SP), R11 + MOVQ 104(SP), R12 + MOVQ 152(SP), R13 + MOVQ 160(SP), R14 + XORQ DX, R11 + ROLQ $0x06, R11 + XORQ R8, R12 + ROLQ $0x19, R12 + MOVQ R11, AX + ORQ R12, AX + XORQ CX, R10 + ROLQ $0x01, R10 + XORQ R10, AX + MOVQ AX, 80(DI) + NOP + XORQ R9, R13 + ROLQ $0x08, R13 + MOVQ R12, AX + ANDQ R13, AX + XORQ R11, AX + MOVQ AX, 88(DI) + NOP + XORQ BX, R14 + ROLQ $0x12, R14 + NOTQ R13 + MOVQ R13, AX + ANDQ R14, AX + XORQ R12, AX + MOVQ AX, 96(DI) + MOVQ R14, AX + ORQ R10, AX + XORQ R13, AX + MOVQ AX, 104(DI) + ANDQ R11, R10 + XORQ R14, R10 + MOVQ R10, 112(DI) + NOP + + // Result m + MOVQ 40(SP), R11 + XORQ BX, R11 + MOVQ 88(SP), R12 + ROLQ $0x24, R11 + XORQ CX, R12 + MOVQ 32(SP), R10 + ROLQ $0x0a, R12 + MOVQ R11, AX + MOVQ 136(SP), R13 + ANDQ R12, AX + XORQ R9, R10 + MOVQ 184(SP), R14 + ROLQ $0x1b, R10 + XORQ R10, AX + MOVQ AX, 120(DI) + NOP + XORQ DX, R13 + ROLQ $0x0f, R13 + MOVQ R12, AX + ORQ R13, AX + XORQ R11, AX + MOVQ AX, 128(DI) + NOP + XORQ R8, R14 + ROLQ $0x38, R14 + NOTQ R13 + MOVQ R13, AX + ORQ R14, AX + XORQ R12, AX + MOVQ AX, 136(DI) + ORQ R10, R11 + XORQ R14, R11 + MOVQ R11, 152(DI) + ANDQ R10, R14 + XORQ R13, R14 + MOVQ R14, 144(DI) + NOP + + // Result s + MOVQ 16(SP), R10 + MOVQ 64(SP), R11 + MOVQ 112(SP), R12 + XORQ DX, R10 + MOVQ 120(SP), R13 + ROLQ $0x3e, R10 + XORQ R8, R11 + MOVQ 168(SP), R14 + ROLQ $0x37, R11 + XORQ R9, R12 + MOVQ R10, R9 + XORQ CX, R14 + ROLQ $0x02, R14 + ANDQ R11, R9 + XORQ R14, R9 + MOVQ R9, 192(DI) + ROLQ $0x27, R12 + NOP + NOTQ R11 + XORQ BX, R13 + MOVQ R11, BX + ANDQ R12, BX + XORQ R10, BX + MOVQ BX, 160(DI) + NOP + ROLQ $0x29, R13 + MOVQ R12, CX + ORQ R13, CX + XORQ R11, CX + MOVQ CX, 168(DI) + NOP + MOVQ R13, DX + MOVQ R14, R8 + ANDQ R14, DX + ORQ R10, R8 + XORQ R12, DX + XORQ R13, R8 + MOVQ DX, 176(DI) + MOVQ R8, 184(DI) + + // Revert the internal state to the user state + NOTQ 8(DI) + NOTQ 16(DI) + NOTQ 64(DI) + NOTQ 96(DI) + NOTQ 136(DI) + NOTQ 160(DI) RET diff --git a/vendor/golang.org/x/crypto/sha3/sha3.go b/vendor/golang.org/x/crypto/sha3/sha3.go index afedde5ab..6658c4447 100644 --- a/vendor/golang.org/x/crypto/sha3/sha3.go +++ b/vendor/golang.org/x/crypto/sha3/sha3.go @@ -4,6 +4,15 @@ package sha3 +import ( + "crypto/subtle" + "encoding/binary" + "errors" + "unsafe" + + "golang.org/x/sys/cpu" +) + // spongeDirection indicates the direction bytes are flowing through the sponge. type spongeDirection int @@ -14,16 +23,13 @@ const ( spongeSqueezing ) -const ( - // maxRate is the maximum size of the internal buffer. SHAKE-256 - // currently needs the largest buffer. - maxRate = 168 -) - type state struct { - // Generic sponge components. - a [25]uint64 // main state of the hash - rate int // the number of bytes of state to use + a [1600 / 8]byte // main state of the hash + + // a[n:rate] is the buffer. If absorbing, it's the remaining space to XOR + // into before running the permutation. If squeezing, it's the remaining + // output to produce before running the permutation. + n, rate int // dsbyte contains the "domain separation" bits and the first bit of // the padding. Sections 6.1 and 6.2 of [1] separate the outputs of the @@ -39,10 +45,6 @@ type state struct { // Extendable-Output Functions (May 2014)" dsbyte byte - i, n int // storage[i:n] is the buffer, i is only used while squeezing - storage [maxRate]byte - - // Specific to SHA-3 and SHAKE. outputLen int // the default output size in bytes state spongeDirection // whether the sponge is absorbing or squeezing } @@ -61,7 +63,7 @@ func (d *state) Reset() { d.a[i] = 0 } d.state = spongeAbsorbing - d.i, d.n = 0, 0 + d.n = 0 } func (d *state) clone() *state { @@ -69,22 +71,25 @@ func (d *state) clone() *state { return &ret } -// permute applies the KeccakF-1600 permutation. It handles -// any input-output buffering. +// permute applies the KeccakF-1600 permutation. func (d *state) permute() { - switch d.state { - case spongeAbsorbing: - // If we're absorbing, we need to xor the input into the state - // before applying the permutation. - xorIn(d, d.storage[:d.rate]) - d.n = 0 - keccakF1600(&d.a) - case spongeSqueezing: - // If we're squeezing, we need to apply the permutation before - // copying more output. - keccakF1600(&d.a) - d.i = 0 - copyOut(d, d.storage[:d.rate]) + var a *[25]uint64 + if cpu.IsBigEndian { + a = new([25]uint64) + for i := range a { + a[i] = binary.LittleEndian.Uint64(d.a[i*8:]) + } + } else { + a = (*[25]uint64)(unsafe.Pointer(&d.a)) + } + + keccakF1600(a) + d.n = 0 + + if cpu.IsBigEndian { + for i := range a { + binary.LittleEndian.PutUint64(d.a[i*8:], a[i]) + } } } @@ -92,53 +97,36 @@ func (d *state) permute() { // the multi-bitrate 10..1 padding rule, and permutes the state. func (d *state) padAndPermute() { // Pad with this instance's domain-separator bits. We know that there's - // at least one byte of space in d.buf because, if it were full, + // at least one byte of space in the sponge because, if it were full, // permute would have been called to empty it. dsbyte also contains the // first one bit for the padding. See the comment in the state struct. - d.storage[d.n] = d.dsbyte - d.n++ - for d.n < d.rate { - d.storage[d.n] = 0 - d.n++ - } + d.a[d.n] ^= d.dsbyte // This adds the final one bit for the padding. Because of the way that // bits are numbered from the LSB upwards, the final bit is the MSB of // the last byte. - d.storage[d.rate-1] ^= 0x80 + d.a[d.rate-1] ^= 0x80 // Apply the permutation d.permute() d.state = spongeSqueezing - d.n = d.rate - copyOut(d, d.storage[:d.rate]) } // Write absorbs more data into the hash's state. It panics if any // output has already been read. -func (d *state) Write(p []byte) (written int, err error) { +func (d *state) Write(p []byte) (n int, err error) { if d.state != spongeAbsorbing { panic("sha3: Write after Read") } - written = len(p) + + n = len(p) for len(p) > 0 { - if d.n == 0 && len(p) >= d.rate { - // The fast path; absorb a full "rate" bytes of input and apply the permutation. - xorIn(d, p[:d.rate]) - p = p[d.rate:] - keccakF1600(&d.a) - } else { - // The slow path; buffer the input until we can fill the sponge, and then xor it in. - todo := d.rate - d.n - if todo > len(p) { - todo = len(p) - } - d.n += copy(d.storage[d.n:], p[:todo]) - p = p[todo:] - - // If the sponge is full, apply the permutation. - if d.n == d.rate { - d.permute() - } + x := subtle.XORBytes(d.a[d.n:d.rate], d.a[d.n:d.rate], p) + d.n += x + p = p[x:] + + // If the sponge is full, apply the permutation. + if d.n == d.rate { + d.permute() } } @@ -156,14 +144,14 @@ func (d *state) Read(out []byte) (n int, err error) { // Now, do the squeezing. for len(out) > 0 { - n := copy(out, d.storage[d.i:d.n]) - d.i += n - out = out[n:] - // Apply the permutation if we've squeezed the sponge dry. - if d.i == d.rate { + if d.n == d.rate { d.permute() } + + x := copy(out, d.a[d.n:d.rate]) + d.n += x + out = out[x:] } return @@ -183,3 +171,74 @@ func (d *state) Sum(in []byte) []byte { dup.Read(hash) return append(in, hash...) } + +const ( + magicSHA3 = "sha\x08" + magicShake = "sha\x09" + magicCShake = "sha\x0a" + magicKeccak = "sha\x0b" + // magic || rate || main state || n || sponge direction + marshaledSize = len(magicSHA3) + 1 + 200 + 1 + 1 +) + +func (d *state) MarshalBinary() ([]byte, error) { + return d.AppendBinary(make([]byte, 0, marshaledSize)) +} + +func (d *state) AppendBinary(b []byte) ([]byte, error) { + switch d.dsbyte { + case dsbyteSHA3: + b = append(b, magicSHA3...) + case dsbyteShake: + b = append(b, magicShake...) + case dsbyteCShake: + b = append(b, magicCShake...) + case dsbyteKeccak: + b = append(b, magicKeccak...) + default: + panic("unknown dsbyte") + } + // rate is at most 168, and n is at most rate. + b = append(b, byte(d.rate)) + b = append(b, d.a[:]...) + b = append(b, byte(d.n), byte(d.state)) + return b, nil +} + +func (d *state) UnmarshalBinary(b []byte) error { + if len(b) != marshaledSize { + return errors.New("sha3: invalid hash state") + } + + magic := string(b[:len(magicSHA3)]) + b = b[len(magicSHA3):] + switch { + case magic == magicSHA3 && d.dsbyte == dsbyteSHA3: + case magic == magicShake && d.dsbyte == dsbyteShake: + case magic == magicCShake && d.dsbyte == dsbyteCShake: + case magic == magicKeccak && d.dsbyte == dsbyteKeccak: + default: + return errors.New("sha3: invalid hash state identifier") + } + + rate := int(b[0]) + b = b[1:] + if rate != d.rate { + return errors.New("sha3: invalid hash state function") + } + + copy(d.a[:], b) + b = b[len(d.a):] + + n, state := int(b[0]), spongeDirection(b[1]) + if n > d.rate { + return errors.New("sha3: invalid hash state") + } + d.n = n + if state != spongeAbsorbing && state != spongeSqueezing { + return errors.New("sha3: invalid hash state") + } + d.state = state + + return nil +} diff --git a/vendor/golang.org/x/crypto/sha3/shake.go b/vendor/golang.org/x/crypto/sha3/shake.go index 1ea9275b8..a6b3a4281 100644 --- a/vendor/golang.org/x/crypto/sha3/shake.go +++ b/vendor/golang.org/x/crypto/sha3/shake.go @@ -16,9 +16,12 @@ package sha3 // [2] https://doi.org/10.6028/NIST.SP.800-185 import ( + "bytes" "encoding/binary" + "errors" "hash" "io" + "math/bits" ) // ShakeHash defines the interface to hash functions that support @@ -50,44 +53,36 @@ type cshakeState struct { initBlock []byte } -// Consts for configuring initial SHA-3 state -const ( - dsbyteShake = 0x1f - dsbyteCShake = 0x04 - rate128 = 168 - rate256 = 136 -) +func bytepad(data []byte, rate int) []byte { + out := make([]byte, 0, 9+len(data)+rate-1) + out = append(out, leftEncode(uint64(rate))...) + out = append(out, data...) + if padlen := rate - len(out)%rate; padlen < rate { + out = append(out, make([]byte, padlen)...) + } + return out +} -func bytepad(input []byte, w int) []byte { - // leftEncode always returns max 9 bytes - buf := make([]byte, 0, 9+len(input)+w) - buf = append(buf, leftEncode(uint64(w))...) - buf = append(buf, input...) - padlen := w - (len(buf) % w) - return append(buf, make([]byte, padlen)...) -} - -func leftEncode(value uint64) []byte { - var b [9]byte - binary.BigEndian.PutUint64(b[1:], value) - // Trim all but last leading zero bytes - i := byte(1) - for i < 8 && b[i] == 0 { - i++ +func leftEncode(x uint64) []byte { + // Let n be the smallest positive integer for which 2^(8n) > x. + n := (bits.Len64(x) + 7) / 8 + if n == 0 { + n = 1 } - // Prepend number of encoded bytes - b[i-1] = 9 - i - return b[i-1:] + // Return n || x with n as a byte and x an n bytes in big-endian order. + b := make([]byte, 9) + binary.BigEndian.PutUint64(b[1:], x) + b = b[9-n-1:] + b[0] = byte(n) + return b } func newCShake(N, S []byte, rate, outputLen int, dsbyte byte) ShakeHash { c := cshakeState{state: &state{rate: rate, outputLen: outputLen, dsbyte: dsbyte}} - - // leftEncode returns max 9 bytes - c.initBlock = make([]byte, 0, 9*2+len(N)+len(S)) - c.initBlock = append(c.initBlock, leftEncode(uint64(len(N)*8))...) + c.initBlock = make([]byte, 0, 9+len(N)+9+len(S)) // leftEncode returns max 9 bytes + c.initBlock = append(c.initBlock, leftEncode(uint64(len(N))*8)...) c.initBlock = append(c.initBlock, N...) - c.initBlock = append(c.initBlock, leftEncode(uint64(len(S)*8))...) + c.initBlock = append(c.initBlock, leftEncode(uint64(len(S))*8)...) c.initBlock = append(c.initBlock, S...) c.Write(bytepad(c.initBlock, c.rate)) return &c @@ -111,6 +106,30 @@ func (c *state) Clone() ShakeHash { return c.clone() } +func (c *cshakeState) MarshalBinary() ([]byte, error) { + return c.AppendBinary(make([]byte, 0, marshaledSize+len(c.initBlock))) +} + +func (c *cshakeState) AppendBinary(b []byte) ([]byte, error) { + b, err := c.state.AppendBinary(b) + if err != nil { + return nil, err + } + b = append(b, c.initBlock...) + return b, nil +} + +func (c *cshakeState) UnmarshalBinary(b []byte) error { + if len(b) <= marshaledSize { + return errors.New("sha3: invalid hash state") + } + if err := c.state.UnmarshalBinary(b[:marshaledSize]); err != nil { + return err + } + c.initBlock = bytes.Clone(b[marshaledSize:]) + return nil +} + // NewShake128 creates a new SHAKE128 variable-output-length ShakeHash. // Its generic security strength is 128 bits against all attacks if at // least 32 bytes of its output are used. @@ -126,11 +145,11 @@ func NewShake256() ShakeHash { } func newShake128Generic() *state { - return &state{rate: rate128, outputLen: 32, dsbyte: dsbyteShake} + return &state{rate: rateK256, outputLen: 32, dsbyte: dsbyteShake} } func newShake256Generic() *state { - return &state{rate: rate256, outputLen: 64, dsbyte: dsbyteShake} + return &state{rate: rateK512, outputLen: 64, dsbyte: dsbyteShake} } // NewCShake128 creates a new instance of cSHAKE128 variable-output-length ShakeHash, @@ -143,7 +162,7 @@ func NewCShake128(N, S []byte) ShakeHash { if len(N) == 0 && len(S) == 0 { return NewShake128() } - return newCShake(N, S, rate128, 32, dsbyteCShake) + return newCShake(N, S, rateK256, 32, dsbyteCShake) } // NewCShake256 creates a new instance of cSHAKE256 variable-output-length ShakeHash, @@ -156,7 +175,7 @@ func NewCShake256(N, S []byte) ShakeHash { if len(N) == 0 && len(S) == 0 { return NewShake256() } - return newCShake(N, S, rate256, 64, dsbyteCShake) + return newCShake(N, S, rateK512, 64, dsbyteCShake) } // ShakeSum128 writes an arbitrary-length digest of data into hash. diff --git a/vendor/golang.org/x/crypto/sha3/xor.go b/vendor/golang.org/x/crypto/sha3/xor.go deleted file mode 100644 index 6ada5c957..000000000 --- a/vendor/golang.org/x/crypto/sha3/xor.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2015 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package sha3 - -import ( - "crypto/subtle" - "encoding/binary" - "unsafe" - - "golang.org/x/sys/cpu" -) - -// xorIn xors the bytes in buf into the state. -func xorIn(d *state, buf []byte) { - if cpu.IsBigEndian { - for i := 0; len(buf) >= 8; i++ { - a := binary.LittleEndian.Uint64(buf) - d.a[i] ^= a - buf = buf[8:] - } - } else { - ab := (*[25 * 64 / 8]byte)(unsafe.Pointer(&d.a)) - subtle.XORBytes(ab[:], ab[:], buf) - } -} - -// copyOut copies uint64s to a byte buffer. -func copyOut(d *state, b []byte) { - if cpu.IsBigEndian { - for i := 0; len(b) >= 8; i++ { - binary.LittleEndian.PutUint64(b, d.a[i]) - b = b[8:] - } - } else { - ab := (*[25 * 64 / 8]byte)(unsafe.Pointer(&d.a)) - copy(b, ab[:]) - } -} diff --git a/vendor/golang.org/x/crypto/ssh/agent/keyring.go b/vendor/golang.org/x/crypto/ssh/agent/keyring.go index 21bfa870f..c1b436108 100644 --- a/vendor/golang.org/x/crypto/ssh/agent/keyring.go +++ b/vendor/golang.org/x/crypto/ssh/agent/keyring.go @@ -175,6 +175,15 @@ func (r *keyring) Add(key AddedKey) error { p.expire = &t } + // If we already have a Signer with the same public key, replace it with the + // new one. + for idx, k := range r.keys { + if bytes.Equal(k.signer.PublicKey().Marshal(), p.signer.PublicKey().Marshal()) { + r.keys[idx] = p + return nil + } + } + r.keys = append(r.keys, p) return nil diff --git a/vendor/golang.org/x/crypto/ssh/client_auth.go b/vendor/golang.org/x/crypto/ssh/client_auth.go index b93961010..b86dde151 100644 --- a/vendor/golang.org/x/crypto/ssh/client_auth.go +++ b/vendor/golang.org/x/crypto/ssh/client_auth.go @@ -555,6 +555,7 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe } gotMsgExtInfo := false + gotUserAuthInfoRequest := false for { packet, err := c.readPacket() if err != nil { @@ -585,6 +586,9 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe if msg.PartialSuccess { return authPartialSuccess, msg.Methods, nil } + if !gotUserAuthInfoRequest { + return authFailure, msg.Methods, unexpectedMessageError(msgUserAuthInfoRequest, packet[0]) + } return authFailure, msg.Methods, nil case msgUserAuthSuccess: return authSuccess, nil, nil @@ -596,6 +600,7 @@ func (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packe if err := Unmarshal(packet, &msg); err != nil { return authFailure, nil, err } + gotUserAuthInfoRequest = true // Manually unpack the prompt/echo pairs. rest := msg.Prompts diff --git a/vendor/golang.org/x/crypto/ssh/keys.go b/vendor/golang.org/x/crypto/ssh/keys.go index 7967665f1..98e6706d5 100644 --- a/vendor/golang.org/x/crypto/ssh/keys.go +++ b/vendor/golang.org/x/crypto/ssh/keys.go @@ -488,7 +488,49 @@ func (r *rsaPublicKey) Verify(data []byte, sig *Signature) error { h := hash.New() h.Write(data) digest := h.Sum(nil) - return rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), hash, digest, sig.Blob) + + // Signatures in PKCS1v15 must match the key's modulus in + // length. However with SSH, some signers provide RSA + // signatures which are missing the MSB 0's of the bignum + // represented. With ssh-rsa signatures, this is encouraged by + // the spec (even though e.g. OpenSSH will give the full + // length unconditionally). With rsa-sha2-* signatures, the + // verifier is allowed to support these, even though they are + // out of spec. See RFC 4253 Section 6.6 for ssh-rsa and RFC + // 8332 Section 3 for rsa-sha2-* details. + // + // In practice: + // * OpenSSH always allows "short" signatures: + // https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L526 + // but always generates padded signatures: + // https://github.com/openssh/openssh-portable/blob/V_9_8_P1/ssh-rsa.c#L439 + // + // * PuTTY versions 0.81 and earlier will generate short + // signatures for all RSA signature variants. Note that + // PuTTY is embedded in other software, such as WinSCP and + // FileZilla. At the time of writing, a patch has been + // applied to PuTTY to generate padded signatures for + // rsa-sha2-*, but not yet released: + // https://git.tartarus.org/?p=simon/putty.git;a=commitdiff;h=a5bcf3d384e1bf15a51a6923c3724cbbee022d8e + // + // * SSH.NET versions 2024.0.0 and earlier will generate short + // signatures for all RSA signature variants, fixed in 2024.1.0: + // https://github.com/sshnet/SSH.NET/releases/tag/2024.1.0 + // + // As a result, we pad these up to the key size by inserting + // leading 0's. + // + // Note that support for short signatures with rsa-sha2-* may + // be removed in the future due to such signatures not being + // allowed by the spec. + blob := sig.Blob + keySize := (*rsa.PublicKey)(r).Size() + if len(blob) < keySize { + padded := make([]byte, keySize) + copy(padded[keySize-len(blob):], blob) + blob = padded + } + return rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), hash, digest, blob) } func (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey { diff --git a/vendor/golang.org/x/crypto/ssh/server.go b/vendor/golang.org/x/crypto/ssh/server.go index 3ca9e89e2..5b5ccd96f 100644 --- a/vendor/golang.org/x/crypto/ssh/server.go +++ b/vendor/golang.org/x/crypto/ssh/server.go @@ -149,7 +149,7 @@ func (s *ServerConfig) AddHostKey(key Signer) { } // cachedPubKey contains the results of querying whether a public key is -// acceptable for a user. +// acceptable for a user. This is a FIFO cache. type cachedPubKey struct { user string pubKeyData []byte @@ -157,7 +157,13 @@ type cachedPubKey struct { perms *Permissions } -const maxCachedPubKeys = 16 +// maxCachedPubKeys is the number of cache entries we store. +// +// Due to consistent misuse of the PublicKeyCallback API, we have reduced this +// to 1, such that the only key in the cache is the most recently seen one. This +// forces the behavior that the last call to PublicKeyCallback will always be +// with the key that is used for authentication. +const maxCachedPubKeys = 1 // pubKeyCache caches tests for public keys. Since SSH clients // will query whether a public key is acceptable before attempting to @@ -179,9 +185,10 @@ func (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) { // add adds the given tuple to the cache. func (c *pubKeyCache) add(candidate cachedPubKey) { - if len(c.keys) < maxCachedPubKeys { - c.keys = append(c.keys, candidate) + if len(c.keys) >= maxCachedPubKeys { + c.keys = c.keys[1:] } + c.keys = append(c.keys, candidate) } // ServerConn is an authenticated SSH connection, as seen from the @@ -510,8 +517,8 @@ userAuthLoop: if err := s.transport.writePacket(Marshal(discMsg)); err != nil { return nil, err } - - return nil, discMsg + authErrs = append(authErrs, discMsg) + return nil, &ServerAuthError{Errors: authErrs} } var userAuthReq userAuthRequestMsg diff --git a/vendor/golang.org/x/net/LICENSE b/vendor/golang.org/x/net/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/net/LICENSE +++ b/vendor/golang.org/x/net/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/sync/LICENSE b/vendor/golang.org/x/sync/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/sync/LICENSE +++ b/vendor/golang.org/x/sync/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/sys/LICENSE b/vendor/golang.org/x/sys/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/sys/LICENSE +++ b/vendor/golang.org/x/sys/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s b/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s new file mode 100644 index 000000000..ec2acfe54 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s @@ -0,0 +1,17 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && amd64 && gc + +#include "textflag.h" + +TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctl(SB) +GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB) + +TEXT libc_sysctlbyname_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_sysctlbyname(SB) +GLOBL ·libc_sysctlbyname_trampoline_addr(SB), RODATA, $8 +DATA ·libc_sysctlbyname_trampoline_addr(SB)/8, $libc_sysctlbyname_trampoline<>(SB) diff --git a/vendor/golang.org/x/sys/cpu/cpu.go b/vendor/golang.org/x/sys/cpu/cpu.go index 8fa707aa4..02609d5b2 100644 --- a/vendor/golang.org/x/sys/cpu/cpu.go +++ b/vendor/golang.org/x/sys/cpu/cpu.go @@ -105,6 +105,8 @@ var ARM64 struct { HasSVE bool // Scalable Vector Extensions HasSVE2 bool // Scalable Vector Extensions 2 HasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32 + HasDIT bool // Data Independent Timing support + HasI8MM bool // Advanced SIMD Int8 matrix multiplication instructions _ CacheLinePad } @@ -199,6 +201,25 @@ var S390X struct { _ CacheLinePad } +// RISCV64 contains the supported CPU features and performance characteristics for riscv64 +// platforms. The booleans in RISCV64, with the exception of HasFastMisaligned, indicate +// the presence of RISC-V extensions. +// +// It is safe to assume that all the RV64G extensions are supported and so they are omitted from +// this structure. As riscv64 Go programs require at least RV64G, the code that populates +// this structure cannot run successfully if some of the RV64G extensions are missing. +// The struct is padded to avoid false sharing. +var RISCV64 struct { + _ CacheLinePad + HasFastMisaligned bool // Fast misaligned accesses + HasC bool // Compressed instruction-set extension + HasV bool // Vector extension compatible with RVV 1.0 + HasZba bool // Address generation instructions extension + HasZbb bool // Basic bit-manipulation extension + HasZbs bool // Single-bit instructions extension + _ CacheLinePad +} + func init() { archInit() initOptions() diff --git a/vendor/golang.org/x/sys/cpu/cpu_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_arm64.go index 0e27a21e1..af2aa99f9 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_arm64.go @@ -38,6 +38,8 @@ func initOptions() { {Name: "dcpop", Feature: &ARM64.HasDCPOP}, {Name: "asimddp", Feature: &ARM64.HasASIMDDP}, {Name: "asimdfhm", Feature: &ARM64.HasASIMDFHM}, + {Name: "dit", Feature: &ARM64.HasDIT}, + {Name: "i8mm", Feature: &ARM64.HasI8MM}, } } @@ -145,6 +147,11 @@ func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) { ARM64.HasLRCPC = true } + switch extractBits(isar1, 52, 55) { + case 1: + ARM64.HasI8MM = true + } + // ID_AA64PFR0_EL1 switch extractBits(pfr0, 16, 19) { case 0: @@ -168,6 +175,11 @@ func parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) { parseARM64SVERegister(getzfr0()) } + + switch extractBits(pfr0, 48, 51) { + case 1: + ARM64.HasDIT = true + } } func parseARM64SVERegister(zfr0 uint64) { diff --git a/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go b/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go new file mode 100644 index 000000000..b838cb9e9 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go @@ -0,0 +1,61 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build darwin && amd64 && gc + +package cpu + +// darwinSupportsAVX512 checks Darwin kernel for AVX512 support via sysctl +// call (see issue 43089). It also restricts AVX512 support for Darwin to +// kernel version 21.3.0 (MacOS 12.2.0) or later (see issue 49233). +// +// Background: +// Darwin implements a special mechanism to economize on thread state when +// AVX512 specific registers are not in use. This scheme minimizes state when +// preempting threads that haven't yet used any AVX512 instructions, but adds +// special requirements to check for AVX512 hardware support at runtime (e.g. +// via sysctl call or commpage inspection). See issue 43089 and link below for +// full background: +// https://github.com/apple-oss-distributions/xnu/blob/xnu-11215.1.10/osfmk/i386/fpu.c#L214-L240 +// +// Additionally, all versions of the Darwin kernel from 19.6.0 through 21.2.0 +// (corresponding to MacOS 10.15.6 - 12.1) have a bug that can cause corruption +// of the AVX512 mask registers (K0-K7) upon signal return. For this reason +// AVX512 is considered unsafe to use on Darwin for kernel versions prior to +// 21.3.0, where a fix has been confirmed. See issue 49233 for full background. +func darwinSupportsAVX512() bool { + return darwinSysctlEnabled([]byte("hw.optional.avx512f\x00")) && darwinKernelVersionCheck(21, 3, 0) +} + +// Ensure Darwin kernel version is at least major.minor.patch, avoiding dependencies +func darwinKernelVersionCheck(major, minor, patch int) bool { + var release [256]byte + err := darwinOSRelease(&release) + if err != nil { + return false + } + + var mmp [3]int + c := 0 +Loop: + for _, b := range release[:] { + switch { + case b >= '0' && b <= '9': + mmp[c] = 10*mmp[c] + int(b-'0') + case b == '.': + c++ + if c > 2 { + return false + } + case b == 0: + break Loop + default: + return false + } + } + if c != 2 { + return false + } + return mmp[0] > major || mmp[0] == major && (mmp[1] > minor || mmp[1] == minor && mmp[2] >= patch) +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go index 910728fb1..32a44514e 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go @@ -6,10 +6,10 @@ package cpu -// cpuid is implemented in cpu_x86.s for gc compiler +// cpuid is implemented in cpu_gc_x86.s for gc compiler // and in cpu_gccgo.c for gccgo. func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) -// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler +// xgetbv with ecx = 0 is implemented in cpu_gc_x86.s for gc compiler // and in cpu_gccgo.c for gccgo. func xgetbv() (eax, edx uint32) diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.s b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s similarity index 94% rename from vendor/golang.org/x/sys/cpu/cpu_x86.s rename to vendor/golang.org/x/sys/cpu/cpu_gc_x86.s index 7d7ba33ef..ce208ce6d 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_x86.s +++ b/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s @@ -18,7 +18,7 @@ TEXT ·cpuid(SB), NOSPLIT, $0-24 RET // func xgetbv() (eax, edx uint32) -TEXT ·xgetbv(SB),NOSPLIT,$0-8 +TEXT ·xgetbv(SB), NOSPLIT, $0-8 MOVL $0, CX XGETBV MOVL AX, eax+0(FP) diff --git a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go index 99c60fe9f..170d21ddf 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go +++ b/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go @@ -23,9 +23,3 @@ func xgetbv() (eax, edx uint32) { gccgoXgetbv(&a, &d) return a, d } - -// gccgo doesn't build on Darwin, per: -// https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gcc.rb#L76 -func darwinSupportsAVX512() bool { - return false -} diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go index 3d386d0fc..f1caf0f78 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go @@ -35,8 +35,10 @@ const ( hwcap_SHA512 = 1 << 21 hwcap_SVE = 1 << 22 hwcap_ASIMDFHM = 1 << 23 + hwcap_DIT = 1 << 24 hwcap2_SVE2 = 1 << 1 + hwcap2_I8MM = 1 << 13 ) // linuxKernelCanEmulateCPUID reports whether we're running @@ -106,9 +108,11 @@ func doinit() { ARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512) ARM64.HasSVE = isSet(hwCap, hwcap_SVE) ARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM) + ARM64.HasDIT = isSet(hwCap, hwcap_DIT) // HWCAP2 feature bits ARM64.HasSVE2 = isSet(hwCap2, hwcap2_SVE2) + ARM64.HasI8MM = isSet(hwCap2, hwcap2_I8MM) } func isSet(hwc uint, value uint) bool { diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go b/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go index cd63e7335..7d902b684 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x +//go:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x && !riscv64 package cpu diff --git a/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go b/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go new file mode 100644 index 000000000..cb4a0c572 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go @@ -0,0 +1,137 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package cpu + +import ( + "syscall" + "unsafe" +) + +// RISC-V extension discovery code for Linux. The approach here is to first try the riscv_hwprobe +// syscall falling back to HWCAP to check for the C extension if riscv_hwprobe is not available. +// +// A note on detection of the Vector extension using HWCAP. +// +// Support for the Vector extension version 1.0 was added to the Linux kernel in release 6.5. +// Support for the riscv_hwprobe syscall was added in 6.4. It follows that if the riscv_hwprobe +// syscall is not available then neither is the Vector extension (which needs kernel support). +// The riscv_hwprobe syscall should then be all we need to detect the Vector extension. +// However, some RISC-V board manufacturers ship boards with an older kernel on top of which +// they have back-ported various versions of the Vector extension patches but not the riscv_hwprobe +// patches. These kernels advertise support for the Vector extension using HWCAP. Falling +// back to HWCAP to detect the Vector extension, if riscv_hwprobe is not available, or simply not +// bothering with riscv_hwprobe at all and just using HWCAP may then seem like an attractive option. +// +// Unfortunately, simply checking the 'V' bit in AT_HWCAP will not work as this bit is used by +// RISC-V board and cloud instance providers to mean different things. The Lichee Pi 4A board +// and the Scaleway RV1 cloud instances use the 'V' bit to advertise their support for the unratified +// 0.7.1 version of the Vector Specification. The Banana Pi BPI-F3 and the CanMV-K230 board use +// it to advertise support for 1.0 of the Vector extension. Versions 0.7.1 and 1.0 of the Vector +// extension are binary incompatible. HWCAP can then not be used in isolation to populate the +// HasV field as this field indicates that the underlying CPU is compatible with RVV 1.0. +// +// There is a way at runtime to distinguish between versions 0.7.1 and 1.0 of the Vector +// specification by issuing a RVV 1.0 vsetvli instruction and checking the vill bit of the vtype +// register. This check would allow us to safely detect version 1.0 of the Vector extension +// with HWCAP, if riscv_hwprobe were not available. However, the check cannot +// be added until the assembler supports the Vector instructions. +// +// Note the riscv_hwprobe syscall does not suffer from these ambiguities by design as all of the +// extensions it advertises support for are explicitly versioned. It's also worth noting that +// the riscv_hwprobe syscall is the only way to detect multi-letter RISC-V extensions, e.g., Zba. +// These cannot be detected using HWCAP and so riscv_hwprobe must be used to detect the majority +// of RISC-V extensions. +// +// Please see https://docs.kernel.org/arch/riscv/hwprobe.html for more information. + +// golang.org/x/sys/cpu is not allowed to depend on golang.org/x/sys/unix so we must +// reproduce the constants, types and functions needed to make the riscv_hwprobe syscall +// here. + +const ( + // Copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go. + riscv_HWPROBE_KEY_IMA_EXT_0 = 0x4 + riscv_HWPROBE_IMA_C = 0x2 + riscv_HWPROBE_IMA_V = 0x4 + riscv_HWPROBE_EXT_ZBA = 0x8 + riscv_HWPROBE_EXT_ZBB = 0x10 + riscv_HWPROBE_EXT_ZBS = 0x20 + riscv_HWPROBE_KEY_CPUPERF_0 = 0x5 + riscv_HWPROBE_MISALIGNED_FAST = 0x3 + riscv_HWPROBE_MISALIGNED_MASK = 0x7 +) + +const ( + // sys_RISCV_HWPROBE is copied from golang.org/x/sys/unix/zsysnum_linux_riscv64.go. + sys_RISCV_HWPROBE = 258 +) + +// riscvHWProbePairs is copied from golang.org/x/sys/unix/ztypes_linux_riscv64.go. +type riscvHWProbePairs struct { + key int64 + value uint64 +} + +const ( + // CPU features + hwcap_RISCV_ISA_C = 1 << ('C' - 'A') +) + +func doinit() { + // A slice of key/value pair structures is passed to the RISCVHWProbe syscall. The key + // field should be initialised with one of the key constants defined above, e.g., + // RISCV_HWPROBE_KEY_IMA_EXT_0. The syscall will set the value field to the appropriate value. + // If the kernel does not recognise a key it will set the key field to -1 and the value field to 0. + + pairs := []riscvHWProbePairs{ + {riscv_HWPROBE_KEY_IMA_EXT_0, 0}, + {riscv_HWPROBE_KEY_CPUPERF_0, 0}, + } + + // This call only indicates that extensions are supported if they are implemented on all cores. + if riscvHWProbe(pairs, 0) { + if pairs[0].key != -1 { + v := uint(pairs[0].value) + RISCV64.HasC = isSet(v, riscv_HWPROBE_IMA_C) + RISCV64.HasV = isSet(v, riscv_HWPROBE_IMA_V) + RISCV64.HasZba = isSet(v, riscv_HWPROBE_EXT_ZBA) + RISCV64.HasZbb = isSet(v, riscv_HWPROBE_EXT_ZBB) + RISCV64.HasZbs = isSet(v, riscv_HWPROBE_EXT_ZBS) + } + if pairs[1].key != -1 { + v := pairs[1].value & riscv_HWPROBE_MISALIGNED_MASK + RISCV64.HasFastMisaligned = v == riscv_HWPROBE_MISALIGNED_FAST + } + } + + // Let's double check with HWCAP if the C extension does not appear to be supported. + // This may happen if we're running on a kernel older than 6.4. + + if !RISCV64.HasC { + RISCV64.HasC = isSet(hwCap, hwcap_RISCV_ISA_C) + } +} + +func isSet(hwc uint, value uint) bool { + return hwc&value != 0 +} + +// riscvHWProbe is a simplified version of the generated wrapper function found in +// golang.org/x/sys/unix/zsyscall_linux_riscv64.go. We simplify it by removing the +// cpuCount and cpus parameters which we do not need. We always want to pass 0 for +// these parameters here so the kernel only reports the extensions that are present +// on all cores. +func riscvHWProbe(pairs []riscvHWProbePairs, flags uint) bool { + var _zero uintptr + var p0 unsafe.Pointer + if len(pairs) > 0 { + p0 = unsafe.Pointer(&pairs[0]) + } else { + p0 = unsafe.Pointer(&_zero) + } + + _, _, e1 := syscall.Syscall6(sys_RISCV_HWPROBE, uintptr(p0), uintptr(len(pairs)), uintptr(0), uintptr(0), uintptr(flags), 0) + return e1 == 0 +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_other_x86.go b/vendor/golang.org/x/sys/cpu/cpu_other_x86.go new file mode 100644 index 000000000..a0fd7e2f7 --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/cpu_other_x86.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build 386 || amd64p32 || (amd64 && (!darwin || !gc)) + +package cpu + +func darwinSupportsAVX512() bool { + panic("only implemented for gc && amd64 && darwin") +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go b/vendor/golang.org/x/sys/cpu/cpu_riscv64.go index 7f0c79c00..aca3199c9 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +++ b/vendor/golang.org/x/sys/cpu/cpu_riscv64.go @@ -8,4 +8,13 @@ package cpu const cacheLineSize = 64 -func initOptions() {} +func initOptions() { + options = []option{ + {Name: "fastmisaligned", Feature: &RISCV64.HasFastMisaligned}, + {Name: "c", Feature: &RISCV64.HasC}, + {Name: "v", Feature: &RISCV64.HasV}, + {Name: "zba", Feature: &RISCV64.HasZba}, + {Name: "zbb", Feature: &RISCV64.HasZbb}, + {Name: "zbs", Feature: &RISCV64.HasZbs}, + } +} diff --git a/vendor/golang.org/x/sys/cpu/cpu_x86.go b/vendor/golang.org/x/sys/cpu/cpu_x86.go index c29f5e4c5..600a68078 100644 --- a/vendor/golang.org/x/sys/cpu/cpu_x86.go +++ b/vendor/golang.org/x/sys/cpu/cpu_x86.go @@ -92,10 +92,8 @@ func archInit() { osSupportsAVX = isSet(1, eax) && isSet(2, eax) if runtime.GOOS == "darwin" { - // Darwin doesn't save/restore AVX-512 mask registers correctly across signal handlers. - // Since users can't rely on mask register contents, let's not advertise AVX-512 support. - // See issue 49233. - osSupportsAVX512 = false + // Darwin requires special AVX512 checks, see cpu_darwin_x86.go + osSupportsAVX512 = osSupportsAVX && darwinSupportsAVX512() } else { // Check if OPMASK and ZMM registers have OS support. osSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax) diff --git a/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go b/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go new file mode 100644 index 000000000..4d0888b0c --- /dev/null +++ b/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go @@ -0,0 +1,98 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Minimal copy of x/sys/unix so the cpu package can make a +// system call on Darwin without depending on x/sys/unix. + +//go:build darwin && amd64 && gc + +package cpu + +import ( + "syscall" + "unsafe" +) + +type _C_int int32 + +// adapted from unix.Uname() at x/sys/unix/syscall_darwin.go L419 +func darwinOSRelease(release *[256]byte) error { + // from x/sys/unix/zerrors_openbsd_amd64.go + const ( + CTL_KERN = 0x1 + KERN_OSRELEASE = 0x2 + ) + + mib := []_C_int{CTL_KERN, KERN_OSRELEASE} + n := unsafe.Sizeof(*release) + + return sysctl(mib, &release[0], &n, nil, 0) +} + +type Errno = syscall.Errno + +var _zero uintptr // Single-word zero for use when we need a valid pointer to 0 bytes. + +// from x/sys/unix/zsyscall_darwin_amd64.go L791-807 +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + if _, _, err := syscall_syscall6( + libc_sysctl_trampoline_addr, + uintptr(_p0), + uintptr(len(mib)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen), + ); err != 0 { + return err + } + + return nil +} + +var libc_sysctl_trampoline_addr uintptr + +// adapted from internal/cpu/cpu_arm64_darwin.go +func darwinSysctlEnabled(name []byte) bool { + out := int32(0) + nout := unsafe.Sizeof(out) + if ret := sysctlbyname(&name[0], (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); ret != nil { + return false + } + return out > 0 +} + +//go:cgo_import_dynamic libc_sysctl sysctl "/usr/lib/libSystem.B.dylib" + +var libc_sysctlbyname_trampoline_addr uintptr + +// adapted from runtime/sys_darwin.go in the pattern of sysctl() above, as defined in x/sys/unix +func sysctlbyname(name *byte, old *byte, oldlen *uintptr, new *byte, newlen uintptr) error { + if _, _, err := syscall_syscall6( + libc_sysctlbyname_trampoline_addr, + uintptr(unsafe.Pointer(name)), + uintptr(unsafe.Pointer(old)), + uintptr(unsafe.Pointer(oldlen)), + uintptr(unsafe.Pointer(new)), + uintptr(newlen), + 0, + ); err != 0 { + return err + } + + return nil +} + +//go:cgo_import_dynamic libc_sysctlbyname sysctlbyname "/usr/lib/libSystem.B.dylib" + +// Implemented in the runtime package (runtime/sys_darwin.go) +func syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno) + +//go:linkname syscall_syscall6 syscall.syscall6 diff --git a/vendor/golang.org/x/sys/unix/README.md b/vendor/golang.org/x/sys/unix/README.md index 7d3c060e1..6e08a76a7 100644 --- a/vendor/golang.org/x/sys/unix/README.md +++ b/vendor/golang.org/x/sys/unix/README.md @@ -156,7 +156,7 @@ from the generated architecture-specific files listed below, and merge these into a common file for each OS. The merge is performed in the following steps: -1. Construct the set of common code that is idential in all architecture-specific files. +1. Construct the set of common code that is identical in all architecture-specific files. 2. Write this common code to the merged file. 3. Remove the common code from all architecture-specific files. diff --git a/vendor/golang.org/x/sys/unix/ioctl_linux.go b/vendor/golang.org/x/sys/unix/ioctl_linux.go index dbe680eab..7ca4fa12a 100644 --- a/vendor/golang.org/x/sys/unix/ioctl_linux.go +++ b/vendor/golang.org/x/sys/unix/ioctl_linux.go @@ -58,6 +58,102 @@ func IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) { return &value, err } +// IoctlGetEthtoolTsInfo fetches ethtool timestamping and PHC +// association for the network device specified by ifname. +func IoctlGetEthtoolTsInfo(fd int, ifname string) (*EthtoolTsInfo, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := EthtoolTsInfo{Cmd: ETHTOOL_GET_TS_INFO} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd) + return &value, err +} + +// IoctlGetHwTstamp retrieves the hardware timestamping configuration +// for the network device specified by ifname. +func IoctlGetHwTstamp(fd int, ifname string) (*HwTstampConfig, error) { + ifr, err := NewIfreq(ifname) + if err != nil { + return nil, err + } + + value := HwTstampConfig{} + ifrd := ifr.withData(unsafe.Pointer(&value)) + + err = ioctlIfreqData(fd, SIOCGHWTSTAMP, &ifrd) + return &value, err +} + +// IoctlSetHwTstamp updates the hardware timestamping configuration for +// the network device specified by ifname. +func IoctlSetHwTstamp(fd int, ifname string, cfg *HwTstampConfig) error { + ifr, err := NewIfreq(ifname) + if err != nil { + return err + } + ifrd := ifr.withData(unsafe.Pointer(cfg)) + return ioctlIfreqData(fd, SIOCSHWTSTAMP, &ifrd) +} + +// FdToClockID derives the clock ID from the file descriptor number +// - see clock_gettime(3), FD_TO_CLOCKID macros. The resulting ID is +// suitable for system calls like ClockGettime. +func FdToClockID(fd int) int32 { return int32((int(^fd) << 3) | 3) } + +// IoctlPtpClockGetcaps returns the description of a given PTP device. +func IoctlPtpClockGetcaps(fd int) (*PtpClockCaps, error) { + var value PtpClockCaps + err := ioctlPtr(fd, PTP_CLOCK_GETCAPS2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetPrecise returns a description of the clock +// offset compared to the system clock. +func IoctlPtpSysOffsetPrecise(fd int) (*PtpSysOffsetPrecise, error) { + var value PtpSysOffsetPrecise + err := ioctlPtr(fd, PTP_SYS_OFFSET_PRECISE2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpSysOffsetExtended returns an extended description of the +// clock offset compared to the system clock. The samples parameter +// specifies the desired number of measurements. +func IoctlPtpSysOffsetExtended(fd int, samples uint) (*PtpSysOffsetExtended, error) { + value := PtpSysOffsetExtended{Samples: uint32(samples)} + err := ioctlPtr(fd, PTP_SYS_OFFSET_EXTENDED2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinGetfunc returns the configuration of the specified +// I/O pin on given PTP device. +func IoctlPtpPinGetfunc(fd int, index uint) (*PtpPinDesc, error) { + value := PtpPinDesc{Index: uint32(index)} + err := ioctlPtr(fd, PTP_PIN_GETFUNC2, unsafe.Pointer(&value)) + return &value, err +} + +// IoctlPtpPinSetfunc updates configuration of the specified PTP +// I/O pin. +func IoctlPtpPinSetfunc(fd int, pd *PtpPinDesc) error { + return ioctlPtr(fd, PTP_PIN_SETFUNC2, unsafe.Pointer(pd)) +} + +// IoctlPtpPeroutRequest configures the periodic output mode of the +// PTP I/O pins. +func IoctlPtpPeroutRequest(fd int, r *PtpPeroutRequest) error { + return ioctlPtr(fd, PTP_PEROUT_REQUEST2, unsafe.Pointer(r)) +} + +// IoctlPtpExttsRequest configures the external timestamping mode +// of the PTP I/O pins. +func IoctlPtpExttsRequest(fd int, r *PtpExttsRequest) error { + return ioctlPtr(fd, PTP_EXTTS_REQUEST2, unsafe.Pointer(r)) +} + // IoctlGetWatchdogInfo fetches information about a watchdog device from the // Linux watchdog API. For more information, see: // https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html. diff --git a/vendor/golang.org/x/sys/unix/mkerrors.sh b/vendor/golang.org/x/sys/unix/mkerrors.sh index 4ed2e488b..6ab02b6c3 100644 --- a/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -58,6 +58,7 @@ includes_Darwin=' #define _DARWIN_USE_64_BIT_INODE #define __APPLE_USE_RFC_3542 #include +#include #include #include #include @@ -157,6 +158,16 @@ includes_Linux=' #endif #define _GNU_SOURCE +// See the description in unix/linux/types.go +#if defined(__ARM_EABI__) || \ + (defined(__mips__) && (_MIPS_SIM == _ABIO32)) || \ + (defined(__powerpc__) && (!defined(__powerpc64__))) +# ifdef _TIME_BITS +# undef _TIME_BITS +# endif +# define _TIME_BITS 32 +#endif + // is broken on powerpc64, as it fails to include definitions of // these structures. We just include them copied from . #if defined(__powerpc__) @@ -255,6 +266,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -526,6 +538,7 @@ ccflags="$@" $2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ || $2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ || $2 ~ /^NFC_.*_(MAX)?SIZE$/ || + $2 ~ /^PTP_/ || $2 ~ /^RAW_PAYLOAD_/ || $2 ~ /^[US]F_/ || $2 ~ /^TP_STATUS_/ || @@ -551,6 +564,7 @@ ccflags="$@" $2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ && $2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ || $2 ~ /^SOCK_|SK_DIAG_|SKNLGRP_$/ || + $2 ~ /^(CONNECT|SAE)_/ || $2 ~ /^FIORDCHK$/ || $2 ~ /^SIOC/ || $2 ~ /^TIOC/ || @@ -654,7 +668,7 @@ errors=$( signals=$( echo '#include ' | $CC -x c - -E -dM $ccflags | awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' | - grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | sort ) @@ -664,7 +678,7 @@ echo '#include ' | $CC -x c - -E -dM $ccflags | sort >_error.grep echo '#include ' | $CC -x c - -E -dM $ccflags | awk '$1=="#define" && $2 ~ /^SIG[A-Z0-9]+$/ { print "^\t" $2 "[ \t]*=" }' | - grep -v 'SIGSTKSIZE\|SIGSTKSZ\|SIGRT\|SIGMAX64' | + grep -E -v '(SIGSTKSIZE|SIGSTKSZ|SIGRT|SIGMAX64)' | sort >_signal.grep echo '// mkerrors.sh' "$@" diff --git a/vendor/golang.org/x/sys/unix/syscall_aix.go b/vendor/golang.org/x/sys/unix/syscall_aix.go index 67ce6cef2..6f15ba1ea 100644 --- a/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -360,7 +360,7 @@ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, var status _C_int var r Pid_t err = ERESTART - // AIX wait4 may return with ERESTART errno, while the processus is still + // AIX wait4 may return with ERESTART errno, while the process is still // active. for err == ERESTART { r, err = wait4(Pid_t(pid), &status, options, rusage) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 4cc7b0059..099867dee 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -402,6 +402,18 @@ func IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error { return ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq)) } +//sys renamexNp(from string, to string, flag uint32) (err error) + +func RenamexNp(from string, to string, flag uint32) (err error) { + return renamexNp(from, to, flag) +} + +//sys renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) + +func RenameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + return renameatxNp(fromfd, from, tofd, to, flag) +} + //sys sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL func Uname(uname *Utsname) error { @@ -554,6 +566,43 @@ func PthreadFchdir(fd int) (err error) { return pthread_fchdir_np(fd) } +// Connectx calls connectx(2) to initiate a connection on a socket. +// +// srcIf, srcAddr, and dstAddr are filled into a [SaEndpoints] struct and passed as the endpoints argument. +// +// - srcIf is the optional source interface index. 0 means unspecified. +// - srcAddr is the optional source address. nil means unspecified. +// - dstAddr is the destination address. +// +// On success, Connectx returns the number of bytes enqueued for transmission. +func Connectx(fd int, srcIf uint32, srcAddr, dstAddr Sockaddr, associd SaeAssocID, flags uint32, iov []Iovec, connid *SaeConnID) (n uintptr, err error) { + endpoints := SaEndpoints{ + Srcif: srcIf, + } + + if srcAddr != nil { + addrp, addrlen, err := srcAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Srcaddr = (*RawSockaddr)(addrp) + endpoints.Srcaddrlen = uint32(addrlen) + } + + if dstAddr != nil { + addrp, addrlen, err := dstAddr.sockaddr() + if err != nil { + return 0, err + } + endpoints.Dstaddr = (*RawSockaddr)(addrp) + endpoints.Dstaddrlen = uint32(addrlen) + } + + err = connectx(fd, &endpoints, associd, flags, iov, &n, connid) + return +} + +//sys connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) //sys sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) //sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_hurd.go b/vendor/golang.org/x/sys/unix/syscall_hurd.go index ba46651f8..a6a2d2fc2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_hurd.go +++ b/vendor/golang.org/x/sys/unix/syscall_hurd.go @@ -11,6 +11,7 @@ package unix int ioctl(int, unsigned long int, uintptr_t); */ import "C" +import "unsafe" func ioctl(fd int, req uint, arg uintptr) (err error) { r0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg)) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux.go b/vendor/golang.org/x/sys/unix/syscall_linux.go index 5682e2628..230a94549 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -1295,6 +1295,48 @@ func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) { return &value, err } +// GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the "vegas" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPVegasInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the "dctp" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0])) + return out, err +} + +// GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the "bbr" +// algorithm. +// +// The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option: +// +// algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION) +func GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) { + var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment + vallen := _Socklen(SizeofTCPCCInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen) + out := (*TCPBBRInfo)(unsafe.Pointer(&value[0])) + return out, err +} + // GetsockoptString returns the string value of the socket option opt for the // socket associated with fd at the given socket level. func GetsockoptString(fd, level, opt int) (string, error) { @@ -1818,6 +1860,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error) //sys ClockGetres(clockid int32, res *Timespec) (err error) //sys ClockGettime(clockid int32, time *Timespec) (err error) +//sys ClockSettime(clockid int32, time *Timespec) (err error) //sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) //sys Close(fd int) (err error) //sys CloseRange(first uint, last uint, flags uint) (err error) @@ -1959,7 +2002,26 @@ func Getpgrp() (pid int) { //sysnb Getpid() (pid int) //sysnb Getppid() (ppid int) //sys Getpriority(which int, who int) (prio int, err error) -//sys Getrandom(buf []byte, flags int) (n int, err error) + +func Getrandom(buf []byte, flags int) (n int, err error) { + vdsoRet, supported := vgetrandom(buf, uint32(flags)) + if supported { + if vdsoRet < 0 { + return 0, errnoErr(syscall.Errno(-vdsoRet)) + } + return vdsoRet, nil + } + var p *byte + if len(buf) > 0 { + p = &buf[0] + } + r, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags)) + if e != 0 { + return 0, errnoErr(e) + } + return int(r), nil +} + //sysnb Getrusage(who int, rusage *Rusage) (err error) //sysnb Getsid(pid int) (sid int, err error) //sysnb Gettid() (tid int) @@ -2592,3 +2654,4 @@ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) { } //sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) +//sys Mseal(b []byte, flags uint) (err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go index cf2ee6c75..745e5c7e6 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go @@ -182,3 +182,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error } return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go index 3d0e98451..dd2262a40 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -214,3 +214,5 @@ func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error } return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 6f5a28894..8cf3670bd 100644 --- a/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -187,3 +187,5 @@ func RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error } return riscvHWProbe(pairs, setSize, set, flags) } + +const SYS_FSTATAT = SYS_NEWFSTATAT diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/vendor/golang.org/x/sys/unix/syscall_openbsd.go index b25343c71..b86ded549 100644 --- a/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -293,6 +293,7 @@ func Uname(uname *Utsname) error { //sys Mkfifoat(dirfd int, path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go index 312ae6ac1..7bf5c04bb 100644 --- a/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go @@ -768,6 +768,15 @@ func Munmap(b []byte) (err error) { return mapper.Munmap(b) } +func MmapPtr(fd int, offset int64, addr unsafe.Pointer, length uintptr, prot int, flags int) (ret unsafe.Pointer, err error) { + xaddr, err := mapper.mmap(uintptr(addr), length, prot, flags, fd, offset) + return unsafe.Pointer(xaddr), err +} + +func MunmapPtr(addr unsafe.Pointer, length uintptr) (err error) { + return mapper.munmap(uintptr(addr), length) +} + //sys Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A //sysnb Getgid() (gid int) //sysnb Getpid() (pid int) @@ -816,10 +825,10 @@ func Lstat(path string, stat *Stat_t) (err error) { // for checking symlinks begins with $VERSION/ $SYSNAME/ $SYSSYMR/ $SYSSYMA/ func isSpecialPath(path []byte) (v bool) { var special = [4][8]byte{ - [8]byte{'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'}, - [8]byte{'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'}, - [8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'}, - [8]byte{'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}} + {'V', 'E', 'R', 'S', 'I', 'O', 'N', '/'}, + {'S', 'Y', 'S', 'N', 'A', 'M', 'E', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'R', '/'}, + {'S', 'Y', 'S', 'S', 'Y', 'M', 'A', '/'}} var i, j int for i = 0; i < len(special); i++ { @@ -3115,3 +3124,90 @@ func legacy_Mkfifoat(dirfd int, path string, mode uint32) (err error) { //sys Posix_openpt(oflag int) (fd int, err error) = SYS_POSIX_OPENPT //sys Grantpt(fildes int) (rc int, err error) = SYS_GRANTPT //sys Unlockpt(fildes int) (rc int, err error) = SYS_UNLOCKPT + +func fcntlAsIs(fd uintptr, cmd int, arg uintptr) (val int, err error) { + runtime.EnterSyscall() + r0, e2, e1 := CallLeFuncWithErr(GetZosLibVec()+SYS_FCNTL<<4, uintptr(fd), uintptr(cmd), arg) + runtime.ExitSyscall() + val = int(r0) + if int64(r0) == -1 { + err = errnoErr2(e1, e2) + } + return +} + +func Fcntl(fd uintptr, cmd int, op interface{}) (ret int, err error) { + switch op.(type) { + case *Flock_t: + err = FcntlFlock(fd, cmd, op.(*Flock_t)) + if err != nil { + ret = -1 + } + return + case int: + return FcntlInt(fd, cmd, op.(int)) + case *F_cnvrt: + return fcntlAsIs(fd, cmd, uintptr(unsafe.Pointer(op.(*F_cnvrt)))) + case unsafe.Pointer: + return fcntlAsIs(fd, cmd, uintptr(op.(unsafe.Pointer))) + default: + return -1, EINVAL + } + return +} + +func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + if raceenabled { + raceReleaseMerge(unsafe.Pointer(&ioSync)) + } + return sendfile(outfd, infd, offset, count) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + // TODO: use LE call instead if the call is implemented + originalOffset, err := Seek(infd, 0, SEEK_CUR) + if err != nil { + return -1, err + } + //start reading data from in_fd + if offset != nil { + _, err := Seek(infd, *offset, SEEK_SET) + if err != nil { + return -1, err + } + } + + buf := make([]byte, count) + readBuf := make([]byte, 0) + var n int = 0 + for i := 0; i < count; i += n { + n, err := Read(infd, buf) + if n == 0 { + if err != nil { + return -1, err + } else { // EOF + break + } + } + readBuf = append(readBuf, buf...) + buf = buf[0:0] + } + + n2, err := Write(outfd, readBuf) + if err != nil { + return -1, err + } + + //When sendfile() returns, this variable will be set to the + // offset of the byte following the last byte that was read. + if offset != nil { + *offset = *offset + int64(n) + // If offset is not NULL, then sendfile() does not modify the file + // offset of in_fd + _, err := Seek(infd, originalOffset, SEEK_SET) + if err != nil { + return -1, err + } + } + return n2, nil +} diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_linux.go b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go new file mode 100644 index 000000000..07ac8e09d --- /dev/null +++ b/vendor/golang.org/x/sys/unix/vgetrandom_linux.go @@ -0,0 +1,13 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build linux && go1.24 + +package unix + +import _ "unsafe" + +//go:linkname vgetrandom runtime.vgetrandom +//go:noescape +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) diff --git a/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go new file mode 100644 index 000000000..297e97bce --- /dev/null +++ b/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go @@ -0,0 +1,11 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux || !go1.24 + +package unix + +func vgetrandom(p []byte, flags uint32) (ret int, supported bool) { + return -1, false +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go index e40fa8524..d73c4652e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go @@ -237,6 +237,9 @@ const ( CLOCK_UPTIME_RAW_APPROX = 0x9 CLONE_NOFOLLOW = 0x1 CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 CR0 = 0x0 CR1 = 0x1000 CR2 = 0x2000 @@ -1169,6 +1172,11 @@ const ( PT_WRITE_D = 0x5 PT_WRITE_I = 0x4 PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 RLIMIT_AS = 0x5 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1260,6 +1268,10 @@ const ( RTV_SSTHRESH = 0x20 RUSAGE_CHILDREN = -0x1 RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 SCM_CREDS = 0x3 SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go index bb02aa6c0..4a55a4005 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go @@ -237,6 +237,9 @@ const ( CLOCK_UPTIME_RAW_APPROX = 0x9 CLONE_NOFOLLOW = 0x1 CLONE_NOOWNERCOPY = 0x2 + CONNECT_DATA_AUTHENTICATED = 0x4 + CONNECT_DATA_IDEMPOTENT = 0x2 + CONNECT_RESUME_ON_READ_WRITE = 0x1 CR0 = 0x0 CR1 = 0x1000 CR2 = 0x2000 @@ -1169,6 +1172,11 @@ const ( PT_WRITE_D = 0x5 PT_WRITE_I = 0x4 PT_WRITE_U = 0x6 + RENAME_EXCL = 0x4 + RENAME_NOFOLLOW_ANY = 0x10 + RENAME_RESERVED1 = 0x8 + RENAME_SECLUDE = 0x1 + RENAME_SWAP = 0x2 RLIMIT_AS = 0x5 RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1260,6 +1268,10 @@ const ( RTV_SSTHRESH = 0x20 RUSAGE_CHILDREN = -0x1 RUSAGE_SELF = 0x0 + SAE_ASSOCID_ALL = 0xffffffff + SAE_ASSOCID_ANY = 0x0 + SAE_CONNID_ALL = 0xffffffff + SAE_CONNID_ANY = 0x0 SCM_CREDS = 0x3 SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux.go b/vendor/golang.org/x/sys/unix/zerrors_linux.go index 877a62b47..6ebc48b3f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -321,6 +321,9 @@ const ( AUDIT_INTEGRITY_STATUS = 0x70a AUDIT_IPC = 0x517 AUDIT_IPC_SET_PERM = 0x51f + AUDIT_IPE_ACCESS = 0x58c + AUDIT_IPE_CONFIG_CHANGE = 0x58d + AUDIT_IPE_POLICY_LOAD = 0x58e AUDIT_KERNEL = 0x7d0 AUDIT_KERNEL_OTHER = 0x524 AUDIT_KERN_MODULE = 0x532 @@ -457,6 +460,7 @@ const ( B600 = 0x8 B75 = 0x2 B9600 = 0xd + BCACHEFS_SUPER_MAGIC = 0xca451a4e BDEVFS_MAGIC = 0x62646576 BINDERFS_SUPER_MAGIC = 0x6c6f6f70 BINFMTFS_MAGIC = 0x42494e4d @@ -488,12 +492,14 @@ const ( BPF_F_ID = 0x20 BPF_F_NETFILTER_IP_DEFRAG = 0x1 BPF_F_QUERY_EFFECTIVE = 0x1 + BPF_F_REDIRECT_FLAGS = 0x19 BPF_F_REPLACE = 0x4 BPF_F_SLEEPABLE = 0x10 BPF_F_STRICT_ALIGNMENT = 0x1 BPF_F_TEST_REG_INVARIANTS = 0x80 BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TEST_RUN_ON_CPU = 0x1 + BPF_F_TEST_SKB_CHECKSUM_COMPLETE = 0x4 BPF_F_TEST_STATE_FREQ = 0x8 BPF_F_TEST_XDP_LIVE_FRAMES = 0x2 BPF_F_XDP_DEV_BOUND_ONLY = 0x40 @@ -928,6 +934,7 @@ const ( EPOLL_CTL_ADD = 0x1 EPOLL_CTL_DEL = 0x2 EPOLL_CTL_MOD = 0x3 + EPOLL_IOC_TYPE = 0x8a EROFS_SUPER_MAGIC_V1 = 0xe0f5e1e2 ESP_V4_FLOW = 0xa ESP_V6_FLOW = 0xc @@ -941,9 +948,6 @@ const ( ETHTOOL_FEC_OFF = 0x4 ETHTOOL_FEC_RS = 0x8 ETHTOOL_FLAG_ALL = 0x7 - ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 - ETHTOOL_FLAG_OMIT_REPLY = 0x2 - ETHTOOL_FLAG_STATS = 0x4 ETHTOOL_FLASHDEV = 0x33 ETHTOOL_FLASH_MAX_FILENAME = 0x80 ETHTOOL_FWVERS_LEN = 0x20 @@ -1166,6 +1170,7 @@ const ( EXTA = 0xe EXTB = 0xf F2FS_SUPER_MAGIC = 0xf2f52010 + FALLOC_FL_ALLOCATE_RANGE = 0x0 FALLOC_FL_COLLAPSE_RANGE = 0x8 FALLOC_FL_INSERT_RANGE = 0x20 FALLOC_FL_KEEP_SIZE = 0x1 @@ -1705,6 +1710,7 @@ const ( KEXEC_ARCH_S390 = 0x160000 KEXEC_ARCH_SH = 0x2a0000 KEXEC_ARCH_X86_64 = 0x3e0000 + KEXEC_CRASH_HOTPLUG_SUPPORT = 0x8 KEXEC_FILE_DEBUG = 0x8 KEXEC_FILE_NO_INITRAMFS = 0x4 KEXEC_FILE_ON_CRASH = 0x2 @@ -1780,6 +1786,7 @@ const ( KEY_SPEC_USER_KEYRING = -0x4 KEY_SPEC_USER_SESSION_KEYRING = -0x5 LANDLOCK_ACCESS_FS_EXECUTE = 0x1 + LANDLOCK_ACCESS_FS_IOCTL_DEV = 0x8000 LANDLOCK_ACCESS_FS_MAKE_BLOCK = 0x800 LANDLOCK_ACCESS_FS_MAKE_CHAR = 0x40 LANDLOCK_ACCESS_FS_MAKE_DIR = 0x80 @@ -1797,6 +1804,8 @@ const ( LANDLOCK_ACCESS_NET_BIND_TCP = 0x1 LANDLOCK_ACCESS_NET_CONNECT_TCP = 0x2 LANDLOCK_CREATE_RULESET_VERSION = 0x1 + LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET = 0x1 + LANDLOCK_SCOPE_SIGNAL = 0x2 LINUX_REBOOT_CMD_CAD_OFF = 0x0 LINUX_REBOOT_CMD_CAD_ON = 0x89abcdef LINUX_REBOOT_CMD_HALT = 0xcdef0123 @@ -1861,6 +1870,19 @@ const ( MAP_FILE = 0x0 MAP_FIXED = 0x10 MAP_FIXED_NOREPLACE = 0x100000 + MAP_HUGE_16GB = 0x88000000 + MAP_HUGE_16KB = 0x38000000 + MAP_HUGE_16MB = 0x60000000 + MAP_HUGE_1GB = 0x78000000 + MAP_HUGE_1MB = 0x50000000 + MAP_HUGE_256MB = 0x70000000 + MAP_HUGE_2GB = 0x7c000000 + MAP_HUGE_2MB = 0x54000000 + MAP_HUGE_32MB = 0x64000000 + MAP_HUGE_512KB = 0x4c000000 + MAP_HUGE_512MB = 0x74000000 + MAP_HUGE_64KB = 0x40000000 + MAP_HUGE_8MB = 0x5c000000 MAP_HUGE_MASK = 0x3f MAP_HUGE_SHIFT = 0x1a MAP_PRIVATE = 0x2 @@ -1908,6 +1930,8 @@ const ( MNT_EXPIRE = 0x4 MNT_FORCE = 0x1 MNT_ID_REQ_SIZE_VER0 = 0x18 + MNT_ID_REQ_SIZE_VER1 = 0x20 + MNT_NS_INFO_SIZE_VER0 = 0x10 MODULE_INIT_COMPRESSED_FILE = 0x4 MODULE_INIT_IGNORE_MODVERSIONS = 0x1 MODULE_INIT_IGNORE_VERMAGIC = 0x2 @@ -2173,7 +2197,7 @@ const ( NFT_REG_SIZE = 0x10 NFT_REJECT_ICMPX_MAX = 0x3 NFT_RT_MAX = 0x4 - NFT_SECMARK_CTX_MAXLEN = 0x100 + NFT_SECMARK_CTX_MAXLEN = 0x1000 NFT_SET_MAXNAMELEN = 0x100 NFT_SOCKET_MAX = 0x3 NFT_TABLE_F_MASK = 0x7 @@ -2342,9 +2366,11 @@ const ( PERF_MEM_LVLNUM_IO = 0xa PERF_MEM_LVLNUM_L1 = 0x1 PERF_MEM_LVLNUM_L2 = 0x2 + PERF_MEM_LVLNUM_L2_MHB = 0x5 PERF_MEM_LVLNUM_L3 = 0x3 PERF_MEM_LVLNUM_L4 = 0x4 PERF_MEM_LVLNUM_LFB = 0xc + PERF_MEM_LVLNUM_MSC = 0x6 PERF_MEM_LVLNUM_NA = 0xf PERF_MEM_LVLNUM_PMEM = 0xe PERF_MEM_LVLNUM_RAM = 0xd @@ -2417,6 +2443,7 @@ const ( PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 + PROCFS_IOCTL_MAGIC = 'f' PROC_SUPER_MAGIC = 0x9fa0 PROT_EXEC = 0x4 PROT_GROWSDOWN = 0x1000000 @@ -2498,6 +2525,23 @@ const ( PR_PAC_GET_ENABLED_KEYS = 0x3d PR_PAC_RESET_KEYS = 0x36 PR_PAC_SET_ENABLED_KEYS = 0x3c + PR_PPC_DEXCR_CTRL_CLEAR = 0x4 + PR_PPC_DEXCR_CTRL_CLEAR_ONEXEC = 0x10 + PR_PPC_DEXCR_CTRL_EDITABLE = 0x1 + PR_PPC_DEXCR_CTRL_MASK = 0x1f + PR_PPC_DEXCR_CTRL_SET = 0x2 + PR_PPC_DEXCR_CTRL_SET_ONEXEC = 0x8 + PR_PPC_DEXCR_IBRTPD = 0x1 + PR_PPC_DEXCR_NPHIE = 0x3 + PR_PPC_DEXCR_SBHE = 0x0 + PR_PPC_DEXCR_SRAPD = 0x2 + PR_PPC_GET_DEXCR = 0x48 + PR_PPC_SET_DEXCR = 0x49 + PR_RISCV_CTX_SW_FENCEI_OFF = 0x1 + PR_RISCV_CTX_SW_FENCEI_ON = 0x0 + PR_RISCV_SCOPE_PER_PROCESS = 0x0 + PR_RISCV_SCOPE_PER_THREAD = 0x1 + PR_RISCV_SET_ICACHE_FLUSH_CTX = 0x47 PR_RISCV_V_GET_CONTROL = 0x46 PR_RISCV_V_SET_CONTROL = 0x45 PR_RISCV_V_VSTATE_CTRL_CUR_MASK = 0x3 @@ -2589,6 +2633,28 @@ const ( PR_UNALIGN_NOPRINT = 0x1 PR_UNALIGN_SIGBUS = 0x2 PSTOREFS_MAGIC = 0x6165676c + PTP_CLK_MAGIC = '=' + PTP_ENABLE_FEATURE = 0x1 + PTP_EXTTS_EDGES = 0x6 + PTP_EXTTS_EVENT_VALID = 0x1 + PTP_EXTTS_V1_VALID_FLAGS = 0x7 + PTP_EXTTS_VALID_FLAGS = 0x1f + PTP_EXT_OFFSET = 0x10 + PTP_FALLING_EDGE = 0x4 + PTP_MAX_SAMPLES = 0x19 + PTP_PEROUT_DUTY_CYCLE = 0x2 + PTP_PEROUT_ONE_SHOT = 0x1 + PTP_PEROUT_PHASE = 0x4 + PTP_PEROUT_V1_VALID_FLAGS = 0x0 + PTP_PEROUT_VALID_FLAGS = 0x7 + PTP_PIN_GETFUNC = 0xc0603d06 + PTP_PIN_GETFUNC2 = 0xc0603d0f + PTP_RISING_EDGE = 0x2 + PTP_STRICT_FLAGS = 0x8 + PTP_SYS_OFFSET_EXTENDED = 0xc4c03d09 + PTP_SYS_OFFSET_EXTENDED2 = 0xc4c03d12 + PTP_SYS_OFFSET_PRECISE = 0xc0403d08 + PTP_SYS_OFFSET_PRECISE2 = 0xc0403d11 PTRACE_ATTACH = 0x10 PTRACE_CONT = 0x7 PTRACE_DETACH = 0x11 @@ -2902,15 +2968,17 @@ const ( RUSAGE_SELF = 0x0 RUSAGE_THREAD = 0x1 RWF_APPEND = 0x10 + RWF_ATOMIC = 0x40 RWF_DSYNC = 0x2 RWF_HIPRI = 0x1 RWF_NOAPPEND = 0x20 RWF_NOWAIT = 0x8 - RWF_SUPPORTED = 0x3f + RWF_SUPPORTED = 0x7f RWF_SYNC = 0x4 RWF_WRITE_LIFE_NOT_SET = 0x0 SCHED_BATCH = 0x3 SCHED_DEADLINE = 0x6 + SCHED_EXT = 0x7 SCHED_FIFO = 0x1 SCHED_FLAG_ALL = 0x7f SCHED_FLAG_DL_OVERRUN = 0x4 @@ -3179,6 +3247,7 @@ const ( STATX_ATTR_MOUNT_ROOT = 0x2000 STATX_ATTR_NODUMP = 0x40 STATX_ATTR_VERITY = 0x100000 + STATX_ATTR_WRITE_ATOMIC = 0x400000 STATX_BASIC_STATS = 0x7ff STATX_BLOCKS = 0x400 STATX_BTIME = 0x800 @@ -3192,8 +3261,10 @@ const ( STATX_MTIME = 0x40 STATX_NLINK = 0x4 STATX_SIZE = 0x200 + STATX_SUBVOL = 0x8000 STATX_TYPE = 0x1 STATX_UID = 0x8 + STATX_WRITE_ATOMIC = 0x10000 STATX__RESERVED = 0x80000000 SYNC_FILE_RANGE_WAIT_AFTER = 0x4 SYNC_FILE_RANGE_WAIT_BEFORE = 0x1 @@ -3592,6 +3663,7 @@ const ( XDP_UMEM_PGOFF_COMPLETION_RING = 0x180000000 XDP_UMEM_PGOFF_FILL_RING = 0x100000000 XDP_UMEM_REG = 0x4 + XDP_UMEM_TX_METADATA_LEN = 0x4 XDP_UMEM_TX_SW_CSUM = 0x2 XDP_UMEM_UNALIGNED_CHUNK_FLAG = 0x1 XDP_USE_NEED_WAKEUP = 0x8 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index e4bc0bd57..c0d45e320 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -107,6 +109,7 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -151,9 +154,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -230,6 +238,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_GETFPREGS = 0xe PTRACE_GETFPXREGS = 0x12 PTRACE_GET_THREAD_AREA = 0x19 @@ -276,6 +298,8 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -314,6 +338,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 689317afd..c731d24f0 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -107,6 +109,7 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -151,9 +154,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -230,6 +238,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_ARCH_PRCTL = 0x1e PTRACE_GETFPREGS = 0xe PTRACE_GETFPXREGS = 0x12 @@ -277,6 +299,8 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -315,6 +339,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 5cca668ac..680018a4a 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -148,9 +151,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +235,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_GETCRUNCHREGS = 0x19 PTRACE_GETFDPIC = 0x1f PTRACE_GETFDPIC_EXEC = 0x0 @@ -282,6 +304,8 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -320,6 +344,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index 14270508b..a63909f30 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 ESR_MAGIC = 0x45535201 EXTPROC = 0x10000 @@ -110,6 +112,7 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -152,9 +155,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -198,6 +206,7 @@ const ( PERF_EVENT_IOC_SET_BPF = 0x40042408 PERF_EVENT_IOC_SET_FILTER = 0x40082406 PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + POE_MAGIC = 0x504f4530 PPPIOCATTACH = 0x4004743d PPPIOCATTCHAN = 0x40047438 PPPIOCBRIDGECHAN = 0x40047435 @@ -233,6 +242,20 @@ const ( PROT_BTI = 0x10 PROT_MTE = 0x20 PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_PEEKMTETAGS = 0x21 PTRACE_POKEMTETAGS = 0x22 PTRACE_SYSEMU = 0x1f @@ -273,6 +296,8 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -311,6 +336,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go index 28e39afdc..9b0a2573f 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -107,6 +109,7 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -152,9 +155,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -231,6 +239,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_SYSEMU = 0x1f PTRACE_SYSEMU_SINGLESTEP = 0x20 RLIMIT_AS = 0x9 @@ -269,6 +291,8 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -307,6 +331,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index cd66e92cb..958e6e064 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -148,9 +151,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +235,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,6 +297,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -313,6 +337,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index c1595eba7..50c7f25bd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -148,9 +151,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +235,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,6 +297,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -313,6 +337,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index ee9456b0d..ced21d66d 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -148,9 +151,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +235,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,6 +297,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -313,6 +337,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 8cfca81e1..226c04419 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x80 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x100 @@ -148,9 +151,14 @@ const ( NFDBITS = 0x20 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +235,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPREGS = 0xe PTRACE_GET_THREAD_AREA = 0x19 PTRACE_GET_THREAD_AREA_3264 = 0xc4 @@ -275,6 +297,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -313,6 +337,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index 60b0deb3a..3122737cd 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x20 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000000 FF1 = 0x4000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 @@ -150,9 +153,14 @@ const ( NL3 = 0x300 NLDLY = 0x300 NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 @@ -230,6 +238,20 @@ const ( PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETEVRREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETREGS64 = 0x16 @@ -330,6 +352,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -368,6 +392,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index f90aa7281..eb5d3467e 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x20 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000000 FF1 = 0x4000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 @@ -150,9 +153,14 @@ const ( NL3 = 0x300 NLDLY = 0x300 NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 @@ -230,6 +238,20 @@ const ( PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETEVRREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETREGS64 = 0x16 @@ -334,6 +356,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -372,6 +396,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index ba9e01503..e921ebc60 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x20 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000000 FF1 = 0x4000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x4000 ICANON = 0x100 IEXTEN = 0x400 @@ -150,9 +153,14 @@ const ( NL3 = 0x300 NLDLY = 0x300 NOFLSH = 0x80000000 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x4 ONLCR = 0x2 @@ -230,6 +238,20 @@ const ( PPPIOCXFERUNIT = 0x2000744e PROT_SAO = 0x10 PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETEVRREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETREGS64 = 0x16 @@ -334,6 +356,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -372,6 +396,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 07cdfd6e9..38ba81c55 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -148,9 +151,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +235,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_GETFDPIC = 0x21 PTRACE_GETFDPIC_EXEC = 0x0 PTRACE_GETFDPIC_INTERP = 0x1 @@ -266,6 +288,8 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -304,6 +328,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 2f1dd214a..71f040097 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -78,6 +78,8 @@ const ( ECHOPRT = 0x400 EFD_CLOEXEC = 0x80000 EFD_NONBLOCK = 0x800 + EPIOCGPARAMS = 0x80088a02 + EPIOCSPARAMS = 0x40088a01 EPOLL_CLOEXEC = 0x80000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -106,6 +108,7 @@ const ( HIDIOCGRAWINFO = 0x80084803 HIDIOCGRDESC = 0x90044802 HIDIOCGRDESCSIZE = 0x80044801 + HIDIOCREVOKE = 0x4004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -148,9 +151,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x8008b705 NS_GET_NSTYPE = 0xb703 NS_GET_OWNER_UID = 0xb704 NS_GET_PARENT = 0xb702 + NS_GET_PID_FROM_PIDNS = 0x8004b706 + NS_GET_PID_IN_PIDNS = 0x8004b708 + NS_GET_TGID_FROM_PIDNS = 0x8004b707 + NS_GET_TGID_IN_PIDNS = 0x8004b709 NS_GET_USERNS = 0xb701 OLCUC = 0x2 ONLCR = 0x4 @@ -227,6 +235,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x7434 PPPIOCXFERUNIT = 0x744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x80503d01 + PTP_CLOCK_GETCAPS2 = 0x80503d0a + PTP_ENABLE_PPS = 0x40043d04 + PTP_ENABLE_PPS2 = 0x40043d0d + PTP_EXTTS_REQUEST = 0x40103d02 + PTP_EXTTS_REQUEST2 = 0x40103d0b + PTP_MASK_CLEAR_ALL = 0x3d13 + PTP_MASK_EN_SINGLE = 0x40043d14 + PTP_PEROUT_REQUEST = 0x40383d03 + PTP_PEROUT_REQUEST2 = 0x40383d0c + PTP_PIN_SETFUNC = 0x40603d07 + PTP_PIN_SETFUNC2 = 0x40603d10 + PTP_SYS_OFFSET = 0x43403d05 + PTP_SYS_OFFSET2 = 0x43403d0e PTRACE_DISABLE_TE = 0x5010 PTRACE_ENABLE_TE = 0x5009 PTRACE_GET_LAST_BREAK = 0x5006 @@ -338,6 +360,8 @@ const ( RTC_WIE_ON = 0x700f RTC_WKALM_RD = 0x80287010 RTC_WKALM_SET = 0x4028700f + SCM_DEVMEM_DMABUF = 0x4f + SCM_DEVMEM_LINEAR = 0x4e SCM_TIMESTAMPING = 0x25 SCM_TIMESTAMPING_OPT_STATS = 0x36 SCM_TIMESTAMPING_PKTINFO = 0x3a @@ -376,6 +400,9 @@ const ( SO_CNX_ADVICE = 0x35 SO_COOKIE = 0x39 SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DEVMEM_DMABUF = 0x4f + SO_DEVMEM_DONTNEED = 0x50 + SO_DEVMEM_LINEAR = 0x4e SO_DOMAIN = 0x27 SO_DONTROUTE = 0x5 SO_ERROR = 0x4 diff --git a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index f40519d90..c44a31332 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -82,6 +82,8 @@ const ( EFD_CLOEXEC = 0x400000 EFD_NONBLOCK = 0x4000 EMT_TAGOVF = 0x1 + EPIOCGPARAMS = 0x40088a02 + EPIOCSPARAMS = 0x80088a01 EPOLL_CLOEXEC = 0x400000 EXTPROC = 0x10000 FF1 = 0x8000 @@ -110,6 +112,7 @@ const ( HIDIOCGRAWINFO = 0x40084803 HIDIOCGRDESC = 0x50044802 HIDIOCGRDESCSIZE = 0x40044801 + HIDIOCREVOKE = 0x8004480d HUPCL = 0x400 ICANON = 0x2 IEXTEN = 0x8000 @@ -153,9 +156,14 @@ const ( NFDBITS = 0x40 NLDLY = 0x100 NOFLSH = 0x80 + NS_GET_MNTNS_ID = 0x4008b705 NS_GET_NSTYPE = 0x2000b703 NS_GET_OWNER_UID = 0x2000b704 NS_GET_PARENT = 0x2000b702 + NS_GET_PID_FROM_PIDNS = 0x4004b706 + NS_GET_PID_IN_PIDNS = 0x4004b708 + NS_GET_TGID_FROM_PIDNS = 0x4004b707 + NS_GET_TGID_IN_PIDNS = 0x4004b709 NS_GET_USERNS = 0x2000b701 OLCUC = 0x2 ONLCR = 0x4 @@ -232,6 +240,20 @@ const ( PPPIOCUNBRIDGECHAN = 0x20007434 PPPIOCXFERUNIT = 0x2000744e PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTP_CLOCK_GETCAPS = 0x40503d01 + PTP_CLOCK_GETCAPS2 = 0x40503d0a + PTP_ENABLE_PPS = 0x80043d04 + PTP_ENABLE_PPS2 = 0x80043d0d + PTP_EXTTS_REQUEST = 0x80103d02 + PTP_EXTTS_REQUEST2 = 0x80103d0b + PTP_MASK_CLEAR_ALL = 0x20003d13 + PTP_MASK_EN_SINGLE = 0x80043d14 + PTP_PEROUT_REQUEST = 0x80383d03 + PTP_PEROUT_REQUEST2 = 0x80383d0c + PTP_PIN_SETFUNC = 0x80603d07 + PTP_PIN_SETFUNC2 = 0x80603d10 + PTP_SYS_OFFSET = 0x83403d05 + PTP_SYS_OFFSET2 = 0x83403d0e PTRACE_GETFPAREGS = 0x14 PTRACE_GETFPREGS = 0xe PTRACE_GETFPREGS64 = 0x19 @@ -329,6 +351,8 @@ const ( RTC_WIE_ON = 0x2000700f RTC_WKALM_RD = 0x40287010 RTC_WKALM_SET = 0x8028700f + SCM_DEVMEM_DMABUF = 0x58 + SCM_DEVMEM_LINEAR = 0x57 SCM_TIMESTAMPING = 0x23 SCM_TIMESTAMPING_OPT_STATS = 0x38 SCM_TIMESTAMPING_PKTINFO = 0x3c @@ -415,6 +439,9 @@ const ( SO_CNX_ADVICE = 0x37 SO_COOKIE = 0x3b SO_DETACH_REUSEPORT_BPF = 0x47 + SO_DEVMEM_DMABUF = 0x58 + SO_DEVMEM_DONTNEED = 0x59 + SO_DEVMEM_LINEAR = 0x57 SO_DOMAIN = 0x1029 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 diff --git a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go index da08b2ab3..1ec2b1407 100644 --- a/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go @@ -581,6 +581,8 @@ const ( AT_EMPTY_PATH = 0x1000 AT_REMOVEDIR = 0x200 RENAME_NOREPLACE = 1 << 0 + ST_RDONLY = 1 + ST_NOSUID = 2 ) const ( diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 07642c308..24b346e1a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -740,6 +740,54 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { var _p0 unsafe.Pointer if len(mib) > 0 { @@ -793,6 +841,26 @@ var libc_pthread_fchdir_np_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 923e08cb7..ebd213100 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -223,6 +223,16 @@ TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 @@ -238,6 +248,11 @@ TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index 7d73dda64..824b9c2d5 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -740,6 +740,54 @@ func ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func renamexNp(from string, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall(libc_renamex_np_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renamex_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renamex_np renamex_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func renameatxNp(fromfd int, from string, tofd int, to string, flag uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_renameatx_np_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), uintptr(flag), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_renameatx_np_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_renameatx_np renameatx_np "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { var _p0 unsafe.Pointer if len(mib) > 0 { @@ -793,6 +841,26 @@ var libc_pthread_fchdir_np_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func connectx(fd int, endpoints *SaEndpoints, associd SaeAssocID, flags uint32, iov []Iovec, n *uintptr, connid *SaeConnID) (err error) { + var _p0 unsafe.Pointer + if len(iov) > 0 { + _p0 = unsafe.Pointer(&iov[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := syscall_syscall9(libc_connectx_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(endpoints)), uintptr(associd), uintptr(flags), uintptr(_p0), uintptr(len(iov)), uintptr(unsafe.Pointer(n)), uintptr(unsafe.Pointer(connid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_connectx_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_connectx connectx "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) { _, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags)) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index 057700111..4f178a229 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -223,6 +223,16 @@ TEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_ioctl_trampoline_addr(SB), RODATA, $8 DATA ·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB) +TEXT libc_renamex_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renamex_np(SB) +GLOBL ·libc_renamex_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renamex_np_trampoline_addr(SB)/8, $libc_renamex_np_trampoline<>(SB) + +TEXT libc_renameatx_np_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_renameatx_np(SB) +GLOBL ·libc_renameatx_np_trampoline_addr(SB), RODATA, $8 +DATA ·libc_renameatx_np_trampoline_addr(SB)/8, $libc_renameatx_np_trampoline<>(SB) + TEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sysctl(SB) GLOBL ·libc_sysctl_trampoline_addr(SB), RODATA, $8 @@ -238,6 +248,11 @@ TEXT libc_pthread_fchdir_np_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_pthread_fchdir_np_trampoline_addr(SB), RODATA, $8 DATA ·libc_pthread_fchdir_np_trampoline_addr(SB)/8, $libc_pthread_fchdir_np_trampoline<>(SB) +TEXT libc_connectx_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_connectx(SB) +GLOBL ·libc_connectx_trampoline_addr(SB), RODATA, $8 +DATA ·libc_connectx_trampoline_addr(SB)/8, $libc_connectx_trampoline<>(SB) + TEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_sendfile(SB) GLOBL ·libc_sendfile_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_linux.go b/vendor/golang.org/x/sys/unix/zsyscall_linux.go index 87d8612a1..5cc1e8eb2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_linux.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_linux.go @@ -592,6 +592,16 @@ func ClockGettime(clockid int32, time *Timespec) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func ClockSettime(clockid int32, time *Timespec) (err error) { + _, _, e1 := Syscall(SYS_CLOCK_SETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) { _, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0) if e1 != 0 { @@ -971,23 +981,6 @@ func Getpriority(which int, who int) (prio int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func Getrandom(buf []byte, flags int) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall(SYS_GETRANDOM, uintptr(_p0), uintptr(len(buf)), uintptr(flags)) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getrusage(who int, rusage *Rusage) (err error) { _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) if e1 != 0 { @@ -2229,3 +2222,19 @@ func Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) } return } + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mseal(b []byte, flags uint) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSEAL, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go index 9dc42410b..1851df14e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s index 41b561731..0b43c6936 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go index 0d3a0751c..e1ec0dbe4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s index 4019a656f..880c6d6e3 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go index c39f7776d..7c8452a63 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s index ac4af24f9..b8ef95b0f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $4 DATA ·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $4 +DATA ·libc_mount_trampoline_addr(SB)/4, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $4 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go index 57571d072..2ffdf861f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s index f77d53212..2af3b5c76 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go index e62963e67..1da08d526 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s index fae140b62..b7a251353 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go index 00831354c..6e85b0aac 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s index 9d1e0ff06..f15dadf05 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s @@ -555,6 +555,12 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + CALL libc_mount(SB) + RET +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 CALL libc_nanosleep(SB) RET diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go index 79029ed58..28b487df2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go @@ -1493,6 +1493,30 @@ var libc_mknodat_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "libc.so" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s index da115f9a4..1e7f321e4 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s @@ -463,6 +463,11 @@ TEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknodat_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_nanosleep(SB) GLOBL ·libc_nanosleep_trampoline_addr(SB), RODATA, $8 diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go index 53aef5dc5..524b0820c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go @@ -457,4 +457,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go index 71d524763..f485dbf45 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go @@ -341,6 +341,7 @@ const ( SYS_STATX = 332 SYS_IO_PGETEVENTS = 333 SYS_RSEQ = 334 + SYS_URETPROBE = 335 SYS_PIDFD_SEND_SIGNAL = 424 SYS_IO_URING_SETUP = 425 SYS_IO_URING_ENTER = 426 @@ -379,4 +380,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go index c74770613..70b35bf3b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go @@ -421,4 +421,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go index f96e214f6..1893e2fe8 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go @@ -85,7 +85,7 @@ const ( SYS_SPLICE = 76 SYS_TEE = 77 SYS_READLINKAT = 78 - SYS_FSTATAT = 79 + SYS_NEWFSTATAT = 79 SYS_FSTAT = 80 SYS_SYNC = 81 SYS_FSYNC = 82 @@ -324,4 +324,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go index 28425346c..16a4017da 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -84,6 +84,8 @@ const ( SYS_SPLICE = 76 SYS_TEE = 77 SYS_READLINKAT = 78 + SYS_NEWFSTATAT = 79 + SYS_FSTAT = 80 SYS_SYNC = 81 SYS_FSYNC = 82 SYS_FDATASYNC = 83 @@ -318,4 +320,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go index d0953018d..7e567f1ef 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go @@ -441,4 +441,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 4459 SYS_LSM_SET_SELF_ATTR = 4460 SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go index 295c7f4b8..38ae55e5e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go @@ -371,4 +371,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 5459 SYS_LSM_SET_SELF_ATTR = 5460 SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go index d1a9eaca7..55e92e60a 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go @@ -371,4 +371,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 5459 SYS_LSM_SET_SELF_ATTR = 5460 SYS_LSM_LIST_MODULES = 5461 + SYS_MSEAL = 5462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go index bec157c39..60658d6a0 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go @@ -441,4 +441,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 4459 SYS_LSM_SET_SELF_ATTR = 4460 SYS_LSM_LIST_MODULES = 4461 + SYS_MSEAL = 4462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go index 7ee7bdc43..e203e8a7e 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go @@ -448,4 +448,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go index fad1f25b4..5944b97d5 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go @@ -420,4 +420,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go index 7d3e16357..c66d416da 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go @@ -420,4 +420,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index 0ed53ad9f..a5459e766 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -84,7 +84,7 @@ const ( SYS_SPLICE = 76 SYS_TEE = 77 SYS_READLINKAT = 78 - SYS_FSTATAT = 79 + SYS_NEWFSTATAT = 79 SYS_FSTAT = 80 SYS_SYNC = 81 SYS_FSYNC = 82 @@ -325,4 +325,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go index 2fba04ad5..01d86825b 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go @@ -386,4 +386,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go index 621d00d74..7b703e77c 100644 --- a/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +++ b/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go @@ -399,4 +399,5 @@ const ( SYS_LSM_GET_SELF_ATTR = 459 SYS_LSM_SET_SELF_ATTR = 460 SYS_LSM_LIST_MODULES = 461 + SYS_MSEAL = 462 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 091d107f3..17c53bd9b 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -306,6 +306,19 @@ type XVSockPgen struct { type _Socklen uint32 +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + type Xucred struct { Version uint32 Uid uint32 @@ -449,11 +462,14 @@ type FdSet struct { const ( SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 SizeofIfData = 0x60 + SizeofIfData64 = 0x80 SizeofIfaMsghdr = 0x14 SizeofIfmaMsghdr = 0x10 SizeofIfmaMsghdr2 = 0x14 SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c SizeofRtMetrics = 0x38 ) @@ -467,6 +483,20 @@ type IfMsghdr struct { Data IfData } +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + type IfData struct { Type uint8 Typelen uint8 @@ -499,6 +529,34 @@ type IfData struct { Reserved2 uint32 } +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + type IfaMsghdr struct { Msglen uint16 Version uint8 @@ -544,6 +602,21 @@ type RtMsghdr struct { Rmx RtMetrics } +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + type RtMetrics struct { Locks uint32 Mtu uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index 28ff4ef74..2392226a7 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -306,6 +306,19 @@ type XVSockPgen struct { type _Socklen uint32 +type SaeAssocID uint32 + +type SaeConnID uint32 + +type SaEndpoints struct { + Srcif uint32 + Srcaddr *RawSockaddr + Srcaddrlen uint32 + Dstaddr *RawSockaddr + Dstaddrlen uint32 + _ [4]byte +} + type Xucred struct { Version uint32 Uid uint32 @@ -449,11 +462,14 @@ type FdSet struct { const ( SizeofIfMsghdr = 0x70 + SizeofIfMsghdr2 = 0xa0 SizeofIfData = 0x60 + SizeofIfData64 = 0x80 SizeofIfaMsghdr = 0x14 SizeofIfmaMsghdr = 0x10 SizeofIfmaMsghdr2 = 0x14 SizeofRtMsghdr = 0x5c + SizeofRtMsghdr2 = 0x5c SizeofRtMetrics = 0x38 ) @@ -467,6 +483,20 @@ type IfMsghdr struct { Data IfData } +type IfMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Snd_len int32 + Snd_maxlen int32 + Snd_drops int32 + Timer int32 + Data IfData64 +} + type IfData struct { Type uint8 Typelen uint8 @@ -499,6 +529,34 @@ type IfData struct { Reserved2 uint32 } +type IfData64 struct { + Type uint8 + Typelen uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Recvquota uint8 + Xmitquota uint8 + Unused1 uint8 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Recvtiming uint32 + Xmittiming uint32 + Lastchange Timeval32 +} + type IfaMsghdr struct { Msglen uint16 Version uint8 @@ -544,6 +602,21 @@ type RtMsghdr struct { Rmx RtMetrics } +type RtMsghdr2 struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Flags int32 + Addrs int32 + Refcnt int32 + Parentflags int32 + Reserved int32 + Use int32 + Inits uint32 + Rmx RtMetrics +} + type RtMetrics struct { Locks uint32 Mtu uint32 diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 6cbd094a3..51e13eb05 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -625,6 +625,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 7c03b6ee7..d002d8ef3 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -630,6 +630,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 422107ee8..3f863d898 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -616,6 +616,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 505a12acf..61c729310 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -610,6 +610,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go index cc986c790..b5d17414f 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -612,6 +612,7 @@ const ( POLLRDNORM = 0x40 POLLWRBAND = 0x100 POLLWRNORM = 0x4 + POLLRDHUP = 0x4000 ) type CapRights struct { diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux.go b/vendor/golang.org/x/sys/unix/ztypes_linux.go index 4740b8348..5537148dc 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -87,30 +87,35 @@ type StatxTimestamp struct { } type Statx_t struct { - Mask uint32 - Blksize uint32 - Attributes uint64 - Nlink uint32 - Uid uint32 - Gid uint32 - Mode uint16 - _ [1]uint16 - Ino uint64 - Size uint64 - Blocks uint64 - Attributes_mask uint64 - Atime StatxTimestamp - Btime StatxTimestamp - Ctime StatxTimestamp - Mtime StatxTimestamp - Rdev_major uint32 - Rdev_minor uint32 - Dev_major uint32 - Dev_minor uint32 - Mnt_id uint64 - Dio_mem_align uint32 - Dio_offset_align uint32 - _ [12]uint64 + Mask uint32 + Blksize uint32 + Attributes uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Mode uint16 + _ [1]uint16 + Ino uint64 + Size uint64 + Blocks uint64 + Attributes_mask uint64 + Atime StatxTimestamp + Btime StatxTimestamp + Ctime StatxTimestamp + Mtime StatxTimestamp + Rdev_major uint32 + Rdev_minor uint32 + Dev_major uint32 + Dev_minor uint32 + Mnt_id uint64 + Dio_mem_align uint32 + Dio_offset_align uint32 + Subvol uint64 + Atomic_write_unit_min uint32 + Atomic_write_unit_max uint32 + Atomic_write_segments_max uint32 + _ [1]uint32 + _ [9]uint64 } type Fsid struct { @@ -515,6 +520,29 @@ type TCPInfo struct { Total_rto_time uint32 } +type TCPVegasInfo struct { + Enabled uint32 + Rttcnt uint32 + Rtt uint32 + Minrtt uint32 +} + +type TCPDCTCPInfo struct { + Enabled uint16 + Ce_state uint16 + Alpha uint32 + Ab_ecn uint32 + Ab_tot uint32 +} + +type TCPBBRInfo struct { + Bw_lo uint32 + Bw_hi uint32 + Min_rtt uint32 + Pacing_gain uint32 + Cwnd_gain uint32 +} + type CanFilter struct { Id uint32 Mask uint32 @@ -556,6 +584,7 @@ const ( SizeofICMPv6Filter = 0x20 SizeofUcred = 0xc SizeofTCPInfo = 0xf8 + SizeofTCPCCInfo = 0x14 SizeofCanFilter = 0x8 SizeofTCPRepairOpt = 0x8 ) @@ -1723,12 +1752,6 @@ const ( IFLA_IPVLAN_UNSPEC = 0x0 IFLA_IPVLAN_MODE = 0x1 IFLA_IPVLAN_FLAGS = 0x2 - NETKIT_NEXT = -0x1 - NETKIT_PASS = 0x0 - NETKIT_DROP = 0x2 - NETKIT_REDIRECT = 0x7 - NETKIT_L2 = 0x0 - NETKIT_L3 = 0x1 IFLA_NETKIT_UNSPEC = 0x0 IFLA_NETKIT_PEER_INFO = 0x1 IFLA_NETKIT_PRIMARY = 0x2 @@ -1767,6 +1790,7 @@ const ( IFLA_VXLAN_DF = 0x1d IFLA_VXLAN_VNIFILTER = 0x1e IFLA_VXLAN_LOCALBYPASS = 0x1f + IFLA_VXLAN_LABEL_POLICY = 0x20 IFLA_GENEVE_UNSPEC = 0x0 IFLA_GENEVE_ID = 0x1 IFLA_GENEVE_REMOTE = 0x2 @@ -1796,6 +1820,8 @@ const ( IFLA_GTP_ROLE = 0x4 IFLA_GTP_CREATE_SOCKETS = 0x5 IFLA_GTP_RESTART_COUNT = 0x6 + IFLA_GTP_LOCAL = 0x7 + IFLA_GTP_LOCAL6 = 0x8 IFLA_BOND_UNSPEC = 0x0 IFLA_BOND_MODE = 0x1 IFLA_BOND_ACTIVE_SLAVE = 0x2 @@ -1828,6 +1854,7 @@ const ( IFLA_BOND_AD_LACP_ACTIVE = 0x1d IFLA_BOND_MISSED_MAX = 0x1e IFLA_BOND_NS_IP6_TARGET = 0x1f + IFLA_BOND_COUPLED_CONTROL = 0x20 IFLA_BOND_AD_INFO_UNSPEC = 0x0 IFLA_BOND_AD_INFO_AGGREGATOR = 0x1 IFLA_BOND_AD_INFO_NUM_PORTS = 0x2 @@ -1896,6 +1923,7 @@ const ( IFLA_HSR_SEQ_NR = 0x5 IFLA_HSR_VERSION = 0x6 IFLA_HSR_PROTOCOL = 0x7 + IFLA_HSR_INTERLINK = 0x8 IFLA_STATS_UNSPEC = 0x0 IFLA_STATS_LINK_64 = 0x1 IFLA_STATS_LINK_XSTATS = 0x2 @@ -1948,6 +1976,15 @@ const ( IFLA_DSA_MASTER = 0x1 ) +const ( + NETKIT_NEXT = -0x1 + NETKIT_PASS = 0x0 + NETKIT_DROP = 0x2 + NETKIT_REDIRECT = 0x7 + NETKIT_L2 = 0x0 + NETKIT_L3 = 0x1 +) + const ( NF_INET_PRE_ROUTING = 0x0 NF_INET_LOCAL_IN = 0x1 @@ -2485,7 +2522,7 @@ type XDPMmapOffsets struct { type XDPUmemReg struct { Addr uint64 Len uint64 - Chunk_size uint32 + Size uint32 Headroom uint32 Flags uint32 Tx_metadata_len uint32 @@ -2557,8 +2594,8 @@ const ( SOF_TIMESTAMPING_BIND_PHC = 0x8000 SOF_TIMESTAMPING_OPT_ID_TCP = 0x10000 - SOF_TIMESTAMPING_LAST = 0x10000 - SOF_TIMESTAMPING_MASK = 0x1ffff + SOF_TIMESTAMPING_LAST = 0x20000 + SOF_TIMESTAMPING_MASK = 0x3ffff SCM_TSTAMP_SND = 0x0 SCM_TSTAMP_SCHED = 0x1 @@ -3473,7 +3510,7 @@ const ( DEVLINK_PORT_FN_ATTR_STATE = 0x2 DEVLINK_PORT_FN_ATTR_OPSTATE = 0x3 DEVLINK_PORT_FN_ATTR_CAPS = 0x4 - DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x5 + DEVLINK_PORT_FUNCTION_ATTR_MAX = 0x6 ) type FsverityDigest struct { @@ -3504,7 +3541,7 @@ type Nhmsg struct { type NexthopGrp struct { Id uint32 Weight uint8 - Resvd1 uint8 + High uint8 Resvd2 uint16 } @@ -3765,7 +3802,7 @@ const ( ETHTOOL_MSG_PSE_GET = 0x24 ETHTOOL_MSG_PSE_SET = 0x25 ETHTOOL_MSG_RSS_GET = 0x26 - ETHTOOL_MSG_USER_MAX = 0x2b + ETHTOOL_MSG_USER_MAX = 0x2d ETHTOOL_MSG_KERNEL_NONE = 0x0 ETHTOOL_MSG_STRSET_GET_REPLY = 0x1 ETHTOOL_MSG_LINKINFO_GET_REPLY = 0x2 @@ -3805,12 +3842,15 @@ const ( ETHTOOL_MSG_MODULE_NTF = 0x24 ETHTOOL_MSG_PSE_GET_REPLY = 0x25 ETHTOOL_MSG_RSS_GET_REPLY = 0x26 - ETHTOOL_MSG_KERNEL_MAX = 0x2b + ETHTOOL_MSG_KERNEL_MAX = 0x2e + ETHTOOL_FLAG_COMPACT_BITSETS = 0x1 + ETHTOOL_FLAG_OMIT_REPLY = 0x2 + ETHTOOL_FLAG_STATS = 0x4 ETHTOOL_A_HEADER_UNSPEC = 0x0 ETHTOOL_A_HEADER_DEV_INDEX = 0x1 ETHTOOL_A_HEADER_DEV_NAME = 0x2 ETHTOOL_A_HEADER_FLAGS = 0x3 - ETHTOOL_A_HEADER_MAX = 0x3 + ETHTOOL_A_HEADER_MAX = 0x4 ETHTOOL_A_BITSET_BIT_UNSPEC = 0x0 ETHTOOL_A_BITSET_BIT_INDEX = 0x1 ETHTOOL_A_BITSET_BIT_NAME = 0x2 @@ -3947,7 +3987,7 @@ const ( ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL = 0x17 ETHTOOL_A_COALESCE_USE_CQE_MODE_TX = 0x18 ETHTOOL_A_COALESCE_USE_CQE_MODE_RX = 0x19 - ETHTOOL_A_COALESCE_MAX = 0x1c + ETHTOOL_A_COALESCE_MAX = 0x1e ETHTOOL_A_PAUSE_UNSPEC = 0x0 ETHTOOL_A_PAUSE_HEADER = 0x1 ETHTOOL_A_PAUSE_AUTONEG = 0x2 @@ -3975,7 +4015,7 @@ const ( ETHTOOL_A_TSINFO_TX_TYPES = 0x3 ETHTOOL_A_TSINFO_RX_FILTERS = 0x4 ETHTOOL_A_TSINFO_PHC_INDEX = 0x5 - ETHTOOL_A_TSINFO_MAX = 0x5 + ETHTOOL_A_TSINFO_MAX = 0x6 ETHTOOL_A_CABLE_TEST_UNSPEC = 0x0 ETHTOOL_A_CABLE_TEST_HEADER = 0x1 ETHTOOL_A_CABLE_TEST_MAX = 0x1 @@ -3991,11 +4031,11 @@ const ( ETHTOOL_A_CABLE_RESULT_UNSPEC = 0x0 ETHTOOL_A_CABLE_RESULT_PAIR = 0x1 ETHTOOL_A_CABLE_RESULT_CODE = 0x2 - ETHTOOL_A_CABLE_RESULT_MAX = 0x2 + ETHTOOL_A_CABLE_RESULT_MAX = 0x3 ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC = 0x0 ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR = 0x1 ETHTOOL_A_CABLE_FAULT_LENGTH_CM = 0x2 - ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x2 + ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = 0x3 ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC = 0x0 ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED = 0x1 ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2 @@ -4078,6 +4118,107 @@ type EthtoolDrvinfo struct { Regdump_len uint32 } +type EthtoolTsInfo struct { + Cmd uint32 + So_timestamping uint32 + Phc_index int32 + Tx_types uint32 + Tx_reserved [3]uint32 + Rx_filters uint32 + Rx_reserved [3]uint32 +} + +type HwTstampConfig struct { + Flags int32 + Tx_type int32 + Rx_filter int32 +} + +const ( + HWTSTAMP_FILTER_NONE = 0x0 + HWTSTAMP_FILTER_ALL = 0x1 + HWTSTAMP_FILTER_SOME = 0x2 + HWTSTAMP_FILTER_PTP_V1_L4_EVENT = 0x3 + HWTSTAMP_FILTER_PTP_V2_L4_EVENT = 0x6 + HWTSTAMP_FILTER_PTP_V2_L2_EVENT = 0x9 + HWTSTAMP_FILTER_PTP_V2_EVENT = 0xc +) + +const ( + HWTSTAMP_TX_OFF = 0x0 + HWTSTAMP_TX_ON = 0x1 + HWTSTAMP_TX_ONESTEP_SYNC = 0x2 +) + +type ( + PtpClockCaps struct { + Max_adj int32 + N_alarm int32 + N_ext_ts int32 + N_per_out int32 + Pps int32 + N_pins int32 + Cross_timestamping int32 + Adjust_phase int32 + Max_phase_adj int32 + Rsv [11]int32 + } + PtpClockTime struct { + Sec int64 + Nsec uint32 + Reserved uint32 + } + PtpExttsEvent struct { + T PtpClockTime + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpExttsRequest struct { + Index uint32 + Flags uint32 + Rsv [2]uint32 + } + PtpPeroutRequest struct { + StartOrPhase PtpClockTime + Period PtpClockTime + Index uint32 + Flags uint32 + On PtpClockTime + } + PtpPinDesc struct { + Name [64]byte + Index uint32 + Func uint32 + Chan uint32 + Rsv [5]uint32 + } + PtpSysOffset struct { + Samples uint32 + Rsv [3]uint32 + Ts [51]PtpClockTime + } + PtpSysOffsetExtended struct { + Samples uint32 + Clockid int32 + Rsv [2]uint32 + Ts [25][3]PtpClockTime + } + PtpSysOffsetPrecise struct { + Device PtpClockTime + Realtime PtpClockTime + Monoraw PtpClockTime + Rsv [4]uint32 + } +) + +const ( + PTP_PF_NONE = 0x0 + PTP_PF_EXTTS = 0x1 + PTP_PF_PEROUT = 0x2 + PTP_PF_PHYSYNC = 0x3 +) + type ( HIDRawReportDescriptor struct { Size uint32 @@ -4259,6 +4400,7 @@ const ( type LandlockRulesetAttr struct { Access_fs uint64 Access_net uint64 + Scoped uint64 } type LandlockPathBeneathAttr struct { @@ -4605,7 +4747,7 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x14a + NL80211_ATTR_MAX = 0x14c NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce NL80211_ATTR_MAX_MATCH_SETS = 0x85 @@ -5209,7 +5351,7 @@ const ( NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf - NL80211_FREQUENCY_ATTR_MAX = 0x20 + NL80211_FREQUENCY_ATTR_MAX = 0x21 NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc diff --git a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index 15adc0414..ad05b51a6 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -727,6 +727,37 @@ const ( RISCV_HWPROBE_EXT_ZBA = 0x8 RISCV_HWPROBE_EXT_ZBB = 0x10 RISCV_HWPROBE_EXT_ZBS = 0x20 + RISCV_HWPROBE_EXT_ZICBOZ = 0x40 + RISCV_HWPROBE_EXT_ZBC = 0x80 + RISCV_HWPROBE_EXT_ZBKB = 0x100 + RISCV_HWPROBE_EXT_ZBKC = 0x200 + RISCV_HWPROBE_EXT_ZBKX = 0x400 + RISCV_HWPROBE_EXT_ZKND = 0x800 + RISCV_HWPROBE_EXT_ZKNE = 0x1000 + RISCV_HWPROBE_EXT_ZKNH = 0x2000 + RISCV_HWPROBE_EXT_ZKSED = 0x4000 + RISCV_HWPROBE_EXT_ZKSH = 0x8000 + RISCV_HWPROBE_EXT_ZKT = 0x10000 + RISCV_HWPROBE_EXT_ZVBB = 0x20000 + RISCV_HWPROBE_EXT_ZVBC = 0x40000 + RISCV_HWPROBE_EXT_ZVKB = 0x80000 + RISCV_HWPROBE_EXT_ZVKG = 0x100000 + RISCV_HWPROBE_EXT_ZVKNED = 0x200000 + RISCV_HWPROBE_EXT_ZVKNHA = 0x400000 + RISCV_HWPROBE_EXT_ZVKNHB = 0x800000 + RISCV_HWPROBE_EXT_ZVKSED = 0x1000000 + RISCV_HWPROBE_EXT_ZVKSH = 0x2000000 + RISCV_HWPROBE_EXT_ZVKT = 0x4000000 + RISCV_HWPROBE_EXT_ZFH = 0x8000000 + RISCV_HWPROBE_EXT_ZFHMIN = 0x10000000 + RISCV_HWPROBE_EXT_ZIHINTNTL = 0x20000000 + RISCV_HWPROBE_EXT_ZVFH = 0x40000000 + RISCV_HWPROBE_EXT_ZVFHMIN = 0x80000000 + RISCV_HWPROBE_EXT_ZFA = 0x100000000 + RISCV_HWPROBE_EXT_ZTSO = 0x200000000 + RISCV_HWPROBE_EXT_ZACAS = 0x400000000 + RISCV_HWPROBE_EXT_ZICOND = 0x800000000 + RISCV_HWPROBE_EXT_ZIHINTPAUSE = 0x1000000000 RISCV_HWPROBE_KEY_CPUPERF_0 = 0x5 RISCV_HWPROBE_MISALIGNED_UNKNOWN = 0x0 RISCV_HWPROBE_MISALIGNED_EMULATED = 0x1 @@ -734,4 +765,6 @@ const ( RISCV_HWPROBE_MISALIGNED_FAST = 0x3 RISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4 RISCV_HWPROBE_MISALIGNED_MASK = 0x7 + RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE = 0x6 + RISCV_HWPROBE_WHICH_CPUS = 0x1 ) diff --git a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go index d9a13af46..2e5d5a443 100644 --- a/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +++ b/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go @@ -377,6 +377,12 @@ type Flock_t struct { Pid int32 } +type F_cnvrt struct { + Cvtcmd int32 + Pccsid int16 + Fccsid int16 +} + type Termios struct { Cflag uint32 Iflag uint32 diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index 115341fba..4e613cf63 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -65,7 +65,7 @@ func LoadDLL(name string) (dll *DLL, err error) { return d, nil } -// MustLoadDLL is like LoadDLL but panics if load operation failes. +// MustLoadDLL is like LoadDLL but panics if load operation fails. func MustLoadDLL(name string) *DLL { d, e := LoadDLL(name) if e != nil { diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index 97651b5bd..b6e1ab76f 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -1179,7 +1179,7 @@ type OBJECTS_AND_NAME struct { //sys makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD //sys setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW -//sys GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (ret error) = advapi32.GetAce +//sys GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) = advapi32.GetAce // Control returns the security descriptor control bits. func (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) { diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 6525c62f3..4a3254386 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -17,8 +17,10 @@ import ( "unsafe" ) -type Handle uintptr -type HWND uintptr +type ( + Handle uintptr + HWND uintptr +) const ( InvalidHandle = ^Handle(0) @@ -166,6 +168,8 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) [failretval==InvalidHandle] = CreateNamedPipeW //sys ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) //sys DisconnectNamedPipe(pipe Handle) (err error) +//sys GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) +//sys GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) //sys GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) //sys GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW //sys SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState @@ -211,6 +215,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) //sys ShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW //sys GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId +//sys LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) [failretval==0] = user32.LoadKeyboardLayoutW +//sys UnloadKeyboardLayout(hkl Handle) (err error) = user32.UnloadKeyboardLayout +//sys GetKeyboardLayout(tid uint32) (hkl Handle) = user32.GetKeyboardLayout +//sys ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) = user32.ToUnicodeEx //sys GetShellWindow() (shellWindow HWND) = user32.GetShellWindow //sys MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW //sys ExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx @@ -307,6 +315,10 @@ func NewCallbackCDecl(fn interface{}) uintptr { //sys SetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode //sys GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo //sys setConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition +//sys GetConsoleCP() (cp uint32, err error) = kernel32.GetConsoleCP +//sys GetConsoleOutputCP() (cp uint32, err error) = kernel32.GetConsoleOutputCP +//sys SetConsoleCP(cp uint32) (err error) = kernel32.SetConsoleCP +//sys SetConsoleOutputCP(cp uint32) (err error) = kernel32.SetConsoleOutputCP //sys WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) = kernel32.WriteConsoleW //sys ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) = kernel32.ReadConsoleW //sys resizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole @@ -715,20 +727,12 @@ func DurationSinceBoot() time.Duration { } func Ftruncate(fd Handle, length int64) (err error) { - curoffset, e := Seek(fd, 0, 1) - if e != nil { - return e - } - defer Seek(fd, curoffset, 0) - _, e = Seek(fd, length, 0) - if e != nil { - return e + type _FILE_END_OF_FILE_INFO struct { + EndOfFile int64 } - e = SetEndOfFile(fd) - if e != nil { - return e - } - return nil + var info _FILE_END_OF_FILE_INFO + info.EndOfFile = length + return SetFileInformationByHandle(fd, FileEndOfFileInfo, (*byte)(unsafe.Pointer(&info)), uint32(unsafe.Sizeof(info))) } func Gettimeofday(tv *Timeval) (err error) { @@ -884,6 +888,11 @@ const socket_error = uintptr(^uint32(0)) //sys GetACP() (acp uint32) = kernel32.GetACP //sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar //sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx +//sys GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) = iphlpapi.GetIfEntry2Ex +//sys GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) = iphlpapi.GetUnicastIpAddressEntry +//sys NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyIpInterfaceChange +//sys NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) = iphlpapi.NotifyUnicastIpAddressChange +//sys CancelMibChangeNotify2(notificationHandle Handle) (errcode error) = iphlpapi.CancelMibChangeNotify2 // For testing: clients can set this flag to force // creation of IPv6 sockets to return EAFNOSUPPORT. @@ -1368,9 +1377,11 @@ func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { func SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) { return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4) } + func SetsockoptIPMreq(fd Handle, level, opt int, mreq *IPMreq) (err error) { return Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(mreq)), int32(unsafe.Sizeof(*mreq))) } + func SetsockoptIPv6Mreq(fd Handle, level, opt int, mreq *IPv6Mreq) (err error) { return syscall.EWINDOWS } @@ -1673,13 +1684,16 @@ func (s NTStatus) Error() string { // do not use NTUnicodeString, and instead UTF16PtrFromString should be used for // the more common *uint16 string type. func NewNTUnicodeString(s string) (*NTUnicodeString, error) { - var u NTUnicodeString - s16, err := UTF16PtrFromString(s) + s16, err := UTF16FromString(s) if err != nil { return nil, err } - RtlInitUnicodeString(&u, s16) - return &u, nil + n := uint16(len(s16) * 2) + return &NTUnicodeString{ + Length: n - 2, // subtract 2 bytes for the NULL terminator + MaximumLength: n, + Buffer: &s16[0], + }, nil } // Slice returns a uint16 slice that aliases the data in the NTUnicodeString. diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go index d8cb71db0..9d138de5f 100644 --- a/vendor/golang.org/x/sys/windows/types_windows.go +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -176,6 +176,7 @@ const ( WAIT_FAILED = 0xFFFFFFFF // Access rights for process. + PROCESS_ALL_ACCESS = 0xFFFF PROCESS_CREATE_PROCESS = 0x0080 PROCESS_CREATE_THREAD = 0x0002 PROCESS_DUP_HANDLE = 0x0040 @@ -1060,6 +1061,7 @@ const ( SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + SIO_UDP_NETRESET = IOC_IN | IOC_VENDOR | 15 // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 @@ -2003,7 +2005,21 @@ const ( MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 ) -const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 +// Flags for GetAdaptersAddresses, see +// https://learn.microsoft.com/en-us/windows/win32/api/iphlpapi/nf-iphlpapi-getadaptersaddresses. +const ( + GAA_FLAG_SKIP_UNICAST = 0x1 + GAA_FLAG_SKIP_ANYCAST = 0x2 + GAA_FLAG_SKIP_MULTICAST = 0x4 + GAA_FLAG_SKIP_DNS_SERVER = 0x8 + GAA_FLAG_INCLUDE_PREFIX = 0x10 + GAA_FLAG_SKIP_FRIENDLY_NAME = 0x20 + GAA_FLAG_INCLUDE_WINS_INFO = 0x40 + GAA_FLAG_INCLUDE_GATEWAYS = 0x80 + GAA_FLAG_INCLUDE_ALL_INTERFACES = 0x100 + GAA_FLAG_INCLUDE_ALL_COMPARTMENTS = 0x200 + GAA_FLAG_INCLUDE_TUNNEL_BINDINGORDER = 0x400 +) const ( IF_TYPE_OTHER = 1 @@ -2017,6 +2033,50 @@ const ( IF_TYPE_IEEE1394 = 144 ) +// Enum NL_PREFIX_ORIGIN for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_prefix_origin +const ( + IpPrefixOriginOther = 0 + IpPrefixOriginManual = 1 + IpPrefixOriginWellKnown = 2 + IpPrefixOriginDhcp = 3 + IpPrefixOriginRouterAdvertisement = 4 + IpPrefixOriginUnchanged = 1 << 4 +) + +// Enum NL_SUFFIX_ORIGIN for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_suffix_origin +const ( + NlsoOther = 0 + NlsoManual = 1 + NlsoWellKnown = 2 + NlsoDhcp = 3 + NlsoLinkLayerAddress = 4 + NlsoRandom = 5 + IpSuffixOriginOther = 0 + IpSuffixOriginManual = 1 + IpSuffixOriginWellKnown = 2 + IpSuffixOriginDhcp = 3 + IpSuffixOriginLinkLayerAddress = 4 + IpSuffixOriginRandom = 5 + IpSuffixOriginUnchanged = 1 << 4 +) + +// Enum NL_DAD_STATE for [IpAdapterUnicastAddress], see +// https://learn.microsoft.com/en-us/windows/win32/api/nldef/ne-nldef-nl_dad_state +const ( + NldsInvalid = 0 + NldsTentative = 1 + NldsDuplicate = 2 + NldsDeprecated = 3 + NldsPreferred = 4 + IpDadStateInvalid = 0 + IpDadStateTentative = 1 + IpDadStateDuplicate = 2 + IpDadStateDeprecated = 3 + IpDadStatePreferred = 4 +) + type SocketAddress struct { Sockaddr *syscall.RawSockaddrAny SockaddrLength int32 @@ -2144,6 +2204,132 @@ const ( IfOperStatusLowerLayerDown = 7 ) +const ( + IF_MAX_PHYS_ADDRESS_LENGTH = 32 + IF_MAX_STRING_SIZE = 256 +) + +// MIB_IF_ENTRY_LEVEL enumeration from netioapi.h or +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/nf-netioapi-getifentry2ex. +const ( + MibIfEntryNormal = 0 + MibIfEntryNormalWithoutStatistics = 2 +) + +// MIB_NOTIFICATION_TYPE enumeration from netioapi.h or +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ne-netioapi-mib_notification_type. +const ( + MibParameterNotification = 0 + MibAddInstance = 1 + MibDeleteInstance = 2 + MibInitialNotification = 3 +) + +// MibIfRow2 stores information about a particular interface. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_if_row2. +type MibIfRow2 struct { + InterfaceLuid uint64 + InterfaceIndex uint32 + InterfaceGuid GUID + Alias [IF_MAX_STRING_SIZE + 1]uint16 + Description [IF_MAX_STRING_SIZE + 1]uint16 + PhysicalAddressLength uint32 + PhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8 + PermanentPhysicalAddress [IF_MAX_PHYS_ADDRESS_LENGTH]uint8 + Mtu uint32 + Type uint32 + TunnelType uint32 + MediaType uint32 + PhysicalMediumType uint32 + AccessType uint32 + DirectionType uint32 + InterfaceAndOperStatusFlags uint8 + OperStatus uint32 + AdminStatus uint32 + MediaConnectState uint32 + NetworkGuid GUID + ConnectionType uint32 + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + InOctets uint64 + InUcastPkts uint64 + InNUcastPkts uint64 + InDiscards uint64 + InErrors uint64 + InUnknownProtos uint64 + InUcastOctets uint64 + InMulticastOctets uint64 + InBroadcastOctets uint64 + OutOctets uint64 + OutUcastPkts uint64 + OutNUcastPkts uint64 + OutDiscards uint64 + OutErrors uint64 + OutUcastOctets uint64 + OutMulticastOctets uint64 + OutBroadcastOctets uint64 + OutQLen uint64 +} + +// MIB_UNICASTIPADDRESS_ROW stores information about a unicast IP address. See +// https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_unicastipaddress_row. +type MibUnicastIpAddressRow struct { + Address RawSockaddrInet6 // SOCKADDR_INET union + InterfaceLuid uint64 + InterfaceIndex uint32 + PrefixOrigin uint32 + SuffixOrigin uint32 + ValidLifetime uint32 + PreferredLifetime uint32 + OnLinkPrefixLength uint8 + SkipAsSource uint8 + DadState uint32 + ScopeId uint32 + CreationTimeStamp Filetime +} + +const ScopeLevelCount = 16 + +// MIB_IPINTERFACE_ROW stores interface management information for a particular IP address family on a network interface. +// See https://learn.microsoft.com/en-us/windows/win32/api/netioapi/ns-netioapi-mib_ipinterface_row. +type MibIpInterfaceRow struct { + Family uint16 + InterfaceLuid uint64 + InterfaceIndex uint32 + MaxReassemblySize uint32 + InterfaceIdentifier uint64 + MinRouterAdvertisementInterval uint32 + MaxRouterAdvertisementInterval uint32 + AdvertisingEnabled uint8 + ForwardingEnabled uint8 + WeakHostSend uint8 + WeakHostReceive uint8 + UseAutomaticMetric uint8 + UseNeighborUnreachabilityDetection uint8 + ManagedAddressConfigurationSupported uint8 + OtherStatefulConfigurationSupported uint8 + AdvertiseDefaultRoute uint8 + RouterDiscoveryBehavior uint32 + DadTransmits uint32 + BaseReachableTime uint32 + RetransmitTime uint32 + PathMtuDiscoveryTimeout uint32 + LinkLocalAddressBehavior uint32 + LinkLocalAddressTimeout uint32 + ZoneIndices [ScopeLevelCount]uint32 + SitePrefixLength uint32 + Metric uint32 + NlMtu uint32 + Connected uint8 + SupportsWakeUpPatterns uint8 + SupportsNeighborDiscovery uint8 + SupportsRouterDiscovery uint8 + ReachableTime uint32 + TransmitOffload uint32 + ReceiveOffload uint32 + DisableDefaultRoutes uint8 +} + // Console related constants used for the mode parameter to SetConsoleMode. See // https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. @@ -3404,3 +3590,14 @@ type DCB struct { EvtChar byte wReserved1 uint16 } + +// Keyboard Layout Flags. +// See https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-loadkeyboardlayoutw +const ( + KLF_ACTIVATE = 0x00000001 + KLF_SUBSTITUTE_OK = 0x00000002 + KLF_REORDER = 0x00000008 + KLF_REPLACELANG = 0x00000010 + KLF_NOTELLSHELL = 0x00000080 + KLF_SETFORPROCESS = 0x00000100 +) diff --git a/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/vendor/golang.org/x/sys/windows/zsyscall_windows.go index eba761018..01c0716c2 100644 --- a/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -181,10 +181,15 @@ var ( procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") procDwmGetWindowAttribute = moddwmapi.NewProc("DwmGetWindowAttribute") procDwmSetWindowAttribute = moddwmapi.NewProc("DwmSetWindowAttribute") + procCancelMibChangeNotify2 = modiphlpapi.NewProc("CancelMibChangeNotify2") procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx") procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") + procGetIfEntry2Ex = modiphlpapi.NewProc("GetIfEntry2Ex") + procGetUnicastIpAddressEntry = modiphlpapi.NewProc("GetUnicastIpAddressEntry") + procNotifyIpInterfaceChange = modiphlpapi.NewProc("NotifyIpInterfaceChange") + procNotifyUnicastIpAddressChange = modiphlpapi.NewProc("NotifyUnicastIpAddressChange") procAddDllDirectory = modkernel32.NewProc("AddDllDirectory") procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") procCancelIo = modkernel32.NewProc("CancelIo") @@ -247,7 +252,9 @@ var ( procGetCommandLineW = modkernel32.NewProc("GetCommandLineW") procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") procGetComputerNameW = modkernel32.NewProc("GetComputerNameW") + procGetConsoleCP = modkernel32.NewProc("GetConsoleCP") procGetConsoleMode = modkernel32.NewProc("GetConsoleMode") + procGetConsoleOutputCP = modkernel32.NewProc("GetConsoleOutputCP") procGetConsoleScreenBufferInfo = modkernel32.NewProc("GetConsoleScreenBufferInfo") procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW") procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId") @@ -273,8 +280,10 @@ var ( procGetMaximumProcessorCount = modkernel32.NewProc("GetMaximumProcessorCount") procGetModuleFileNameW = modkernel32.NewProc("GetModuleFileNameW") procGetModuleHandleExW = modkernel32.NewProc("GetModuleHandleExW") + procGetNamedPipeClientProcessId = modkernel32.NewProc("GetNamedPipeClientProcessId") procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") + procGetNamedPipeServerProcessId = modkernel32.NewProc("GetNamedPipeServerProcessId") procGetOverlappedResult = modkernel32.NewProc("GetOverlappedResult") procGetPriorityClass = modkernel32.NewProc("GetPriorityClass") procGetProcAddress = modkernel32.NewProc("GetProcAddress") @@ -347,8 +356,10 @@ var ( procSetCommMask = modkernel32.NewProc("SetCommMask") procSetCommState = modkernel32.NewProc("SetCommState") procSetCommTimeouts = modkernel32.NewProc("SetCommTimeouts") + procSetConsoleCP = modkernel32.NewProc("SetConsoleCP") procSetConsoleCursorPosition = modkernel32.NewProc("SetConsoleCursorPosition") procSetConsoleMode = modkernel32.NewProc("SetConsoleMode") + procSetConsoleOutputCP = modkernel32.NewProc("SetConsoleOutputCP") procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW") procSetDefaultDllDirectories = modkernel32.NewProc("SetDefaultDllDirectories") procSetDllDirectoryW = modkernel32.NewProc("SetDllDirectoryW") @@ -478,12 +489,16 @@ var ( procGetDesktopWindow = moduser32.NewProc("GetDesktopWindow") procGetForegroundWindow = moduser32.NewProc("GetForegroundWindow") procGetGUIThreadInfo = moduser32.NewProc("GetGUIThreadInfo") + procGetKeyboardLayout = moduser32.NewProc("GetKeyboardLayout") procGetShellWindow = moduser32.NewProc("GetShellWindow") procGetWindowThreadProcessId = moduser32.NewProc("GetWindowThreadProcessId") procIsWindow = moduser32.NewProc("IsWindow") procIsWindowUnicode = moduser32.NewProc("IsWindowUnicode") procIsWindowVisible = moduser32.NewProc("IsWindowVisible") + procLoadKeyboardLayoutW = moduser32.NewProc("LoadKeyboardLayoutW") procMessageBoxW = moduser32.NewProc("MessageBoxW") + procToUnicodeEx = moduser32.NewProc("ToUnicodeEx") + procUnloadKeyboardLayout = moduser32.NewProc("UnloadKeyboardLayout") procCreateEnvironmentBlock = moduserenv.NewProc("CreateEnvironmentBlock") procDestroyEnvironmentBlock = moduserenv.NewProc("DestroyEnvironmentBlock") procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW") @@ -789,6 +804,14 @@ func FreeSid(sid *SID) (err error) { return } +func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (err error) { + r1, _, e1 := syscall.Syscall(procGetAce.Addr(), 3, uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce))) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetLengthSid(sid *SID) (len uint32) { r0, _, _ := syscall.Syscall(procGetLengthSid.Addr(), 1, uintptr(unsafe.Pointer(sid)), 0, 0) len = uint32(r0) @@ -1225,14 +1248,6 @@ func setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCE return } -func GetAce(acl *ACL, aceIndex uint32, pAce **ACCESS_ALLOWED_ACE) (ret error) { - r0, _, _ := syscall.Syscall(procGetAce.Addr(), 3, uintptr(unsafe.Pointer(acl)), uintptr(aceIndex), uintptr(unsafe.Pointer(pAce))) - if r0 == 0 { - ret = GetLastError() - } - return -} - func SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) { r1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor))) if r1 == 0 { @@ -1598,6 +1613,14 @@ func DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, si return } +func CancelMibChangeNotify2(notificationHandle Handle) (errcode error) { + r0, _, _ := syscall.Syscall(procCancelMibChangeNotify2.Addr(), 1, uintptr(notificationHandle), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + func GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) { r0, _, _ := syscall.Syscall6(procGetAdaptersAddresses.Addr(), 5, uintptr(family), uintptr(flags), uintptr(reserved), uintptr(unsafe.Pointer(adapterAddresses)), uintptr(unsafe.Pointer(sizePointer)), 0) if r0 != 0 { @@ -1630,6 +1653,46 @@ func GetIfEntry(pIfRow *MibIfRow) (errcode error) { return } +func GetIfEntry2Ex(level uint32, row *MibIfRow2) (errcode error) { + r0, _, _ := syscall.Syscall(procGetIfEntry2Ex.Addr(), 2, uintptr(level), uintptr(unsafe.Pointer(row)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func GetUnicastIpAddressEntry(row *MibUnicastIpAddressRow) (errcode error) { + r0, _, _ := syscall.Syscall(procGetUnicastIpAddressEntry.Addr(), 1, uintptr(unsafe.Pointer(row)), 0, 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func NotifyIpInterfaceChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) { + var _p0 uint32 + if initialNotification { + _p0 = 1 + } + r0, _, _ := syscall.Syscall6(procNotifyIpInterfaceChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + +func NotifyUnicastIpAddressChange(family uint16, callback uintptr, callerContext unsafe.Pointer, initialNotification bool, notificationHandle *Handle) (errcode error) { + var _p0 uint32 + if initialNotification { + _p0 = 1 + } + r0, _, _ := syscall.Syscall6(procNotifyUnicastIpAddressChange.Addr(), 5, uintptr(family), uintptr(callback), uintptr(callerContext), uintptr(_p0), uintptr(unsafe.Pointer(notificationHandle)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + func AddDllDirectory(path *uint16) (cookie uintptr, err error) { r0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) cookie = uintptr(r0) @@ -2158,6 +2221,15 @@ func GetComputerName(buf *uint16, n *uint32) (err error) { return } +func GetConsoleCP() (cp uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetConsoleCP.Addr(), 0, 0, 0, 0) + cp = uint32(r0) + if cp == 0 { + err = errnoErr(e1) + } + return +} + func GetConsoleMode(console Handle, mode *uint32) (err error) { r1, _, e1 := syscall.Syscall(procGetConsoleMode.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(mode)), 0) if r1 == 0 { @@ -2166,6 +2238,15 @@ func GetConsoleMode(console Handle, mode *uint32) (err error) { return } +func GetConsoleOutputCP() (cp uint32, err error) { + r0, _, e1 := syscall.Syscall(procGetConsoleOutputCP.Addr(), 0, 0, 0, 0) + cp = uint32(r0) + if cp == 0 { + err = errnoErr(e1) + } + return +} + func GetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) { r1, _, e1 := syscall.Syscall(procGetConsoleScreenBufferInfo.Addr(), 2, uintptr(console), uintptr(unsafe.Pointer(info)), 0) if r1 == 0 { @@ -2367,6 +2448,14 @@ func GetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err er return } +func GetNamedPipeClientProcessId(pipe Handle, clientProcessID *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetNamedPipeClientProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(clientProcessID)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) if r1 == 0 { @@ -2383,6 +2472,14 @@ func GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint3 return } +func GetNamedPipeServerProcessId(pipe Handle, serverProcessID *uint32) (err error) { + r1, _, e1 := syscall.Syscall(procGetNamedPipeServerProcessId.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(serverProcessID)), 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) { var _p0 uint32 if wait { @@ -3034,6 +3131,14 @@ func SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) { return } +func SetConsoleCP(cp uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleCP.Addr(), 1, uintptr(cp), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func setConsoleCursorPosition(console Handle, position uint32) (err error) { r1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0) if r1 == 0 { @@ -3050,6 +3155,14 @@ func SetConsoleMode(console Handle, mode uint32) (err error) { return } +func SetConsoleOutputCP(cp uint32) (err error) { + r1, _, e1 := syscall.Syscall(procSetConsoleOutputCP.Addr(), 1, uintptr(cp), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func SetCurrentDirectory(path *uint16) (err error) { r1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0) if r1 == 0 { @@ -4082,6 +4195,12 @@ func GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) { return } +func GetKeyboardLayout(tid uint32) (hkl Handle) { + r0, _, _ := syscall.Syscall(procGetKeyboardLayout.Addr(), 1, uintptr(tid), 0, 0) + hkl = Handle(r0) + return +} + func GetShellWindow() (shellWindow HWND) { r0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0) shellWindow = HWND(r0) @@ -4115,6 +4234,15 @@ func IsWindowVisible(hwnd HWND) (isVisible bool) { return } +func LoadKeyboardLayout(name *uint16, flags uint32) (hkl Handle, err error) { + r0, _, e1 := syscall.Syscall(procLoadKeyboardLayoutW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(flags), 0) + hkl = Handle(r0) + if hkl == 0 { + err = errnoErr(e1) + } + return +} + func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) { r0, _, e1 := syscall.Syscall6(procMessageBoxW.Addr(), 4, uintptr(hwnd), uintptr(unsafe.Pointer(text)), uintptr(unsafe.Pointer(caption)), uintptr(boxtype), 0, 0) ret = int32(r0) @@ -4124,6 +4252,20 @@ func MessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret i return } +func ToUnicodeEx(vkey uint32, scancode uint32, keystate *byte, pwszBuff *uint16, cchBuff int32, flags uint32, hkl Handle) (ret int32) { + r0, _, _ := syscall.Syscall9(procToUnicodeEx.Addr(), 7, uintptr(vkey), uintptr(scancode), uintptr(unsafe.Pointer(keystate)), uintptr(unsafe.Pointer(pwszBuff)), uintptr(cchBuff), uintptr(flags), uintptr(hkl), 0, 0) + ret = int32(r0) + return +} + +func UnloadKeyboardLayout(hkl Handle) (err error) { + r1, _, e1 := syscall.Syscall(procUnloadKeyboardLayout.Addr(), 1, uintptr(hkl), 0, 0) + if r1 == 0 { + err = errnoErr(e1) + } + return +} + func CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) { var _p0 uint32 if inheritExisting { diff --git a/vendor/golang.org/x/term/LICENSE b/vendor/golang.org/x/term/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/term/LICENSE +++ b/vendor/golang.org/x/term/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/golang.org/x/term/README.md b/vendor/golang.org/x/term/README.md index d03d0aefe..05ff623f9 100644 --- a/vendor/golang.org/x/term/README.md +++ b/vendor/golang.org/x/term/README.md @@ -4,16 +4,13 @@ This repository provides Go terminal and console support packages. -## Download/Install - -The easiest way to install is to run `go get -u golang.org/x/term`. You can -also manually git clone the repository to `$GOPATH/src/golang.org/x/term`. - ## Report Issues / Send Patches This repository uses Gerrit for code changes. To learn how to submit changes to -this repository, see https://golang.org/doc/contribute.html. +this repository, see https://go.dev/doc/contribute. + +The git repository is https://go.googlesource.com/term. The main issue tracker for the term repository is located at -https://github.com/golang/go/issues. Prefix your issue with "x/term:" in the +https://go.dev/issues. Prefix your issue with "x/term:" in the subject line, so it is easy to find. diff --git a/vendor/golang.org/x/term/term_windows.go b/vendor/golang.org/x/term/term_windows.go index 465f56060..df6bf948e 100644 --- a/vendor/golang.org/x/term/term_windows.go +++ b/vendor/golang.org/x/term/term_windows.go @@ -26,6 +26,7 @@ func makeRaw(fd int) (*State, error) { return nil, err } raw := st &^ (windows.ENABLE_ECHO_INPUT | windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT) + raw |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT if err := windows.SetConsoleMode(windows.Handle(fd), raw); err != nil { return nil, err } diff --git a/vendor/golang.org/x/text/LICENSE b/vendor/golang.org/x/text/LICENSE index 6a66aea5e..2a7cf70da 100644 --- a/vendor/golang.org/x/text/LICENSE +++ b/vendor/golang.org/x/text/LICENSE @@ -1,4 +1,4 @@ -Copyright (c) 2009 The Go Authors. All rights reserved. +Copyright 2009 The Go Authors. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are @@ -10,7 +10,7 @@ notice, this list of conditions and the following disclaimer. copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of Google Inc. nor the names of its + * Neither the name of Google LLC nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. diff --git a/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go b/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go index a6b508188..6ad1b1c1d 100644 --- a/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go +++ b/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go @@ -1,4 +1,4 @@ -// Copyright 2022 Google LLC +// Copyright 2024 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.21.9 +// protoc v4.24.4 // source: google/rpc/status.proto package status diff --git a/vendor/google.golang.org/grpc/CONTRIBUTING.md b/vendor/google.golang.org/grpc/CONTRIBUTING.md index 608aa6e1a..0854d298e 100644 --- a/vendor/google.golang.org/grpc/CONTRIBUTING.md +++ b/vendor/google.golang.org/grpc/CONTRIBUTING.md @@ -66,7 +66,7 @@ How to get your contributions merged smoothly and quickly. - **All tests need to be passing** before your change can be merged. We recommend you **run tests locally** before creating your PR to catch breakages early on. - - `VET_SKIP_PROTO=1 ./vet.sh` to catch vet errors + - `./scripts/vet.sh` to catch vet errors - `go test -cpu 1,4 -timeout 7m ./...` to run the tests - `go test -race -cpu 1,4 -timeout 7m ./...` to run tests in race mode diff --git a/vendor/google.golang.org/grpc/MAINTAINERS.md b/vendor/google.golang.org/grpc/MAINTAINERS.md index c6672c0a3..5d4096d46 100644 --- a/vendor/google.golang.org/grpc/MAINTAINERS.md +++ b/vendor/google.golang.org/grpc/MAINTAINERS.md @@ -9,20 +9,28 @@ for general contribution guidelines. ## Maintainers (in alphabetical order) -- [cesarghali](https://github.com/cesarghali), Google LLC +- [aranjans](https://github.com/aranjans), Google LLC +- [arjan-bal](https://github.com/arjan-bal), Google LLC +- [arvindbr8](https://github.com/arvindbr8), Google LLC +- [atollena](https://github.com/atollena), Datadog, Inc. - [dfawley](https://github.com/dfawley), Google LLC - [easwars](https://github.com/easwars), Google LLC -- [menghanl](https://github.com/menghanl), Google LLC -- [srini100](https://github.com/srini100), Google LLC +- [erm-g](https://github.com/erm-g), Google LLC +- [gtcooke94](https://github.com/gtcooke94), Google LLC +- [purnesh42h](https://github.com/purnesh42h), Google LLC +- [zasweq](https://github.com/zasweq), Google LLC ## Emeritus Maintainers (in alphabetical order) -- [adelez](https://github.com/adelez), Google LLC -- [canguler](https://github.com/canguler), Google LLC -- [iamqizhao](https://github.com/iamqizhao), Google LLC -- [jadekler](https://github.com/jadekler), Google LLC -- [jtattermusch](https://github.com/jtattermusch), Google LLC -- [lyuxuan](https://github.com/lyuxuan), Google LLC -- [makmukhi](https://github.com/makmukhi), Google LLC -- [matt-kwong](https://github.com/matt-kwong), Google LLC -- [nicolasnoble](https://github.com/nicolasnoble), Google LLC -- [yongni](https://github.com/yongni), Google LLC +- [adelez](https://github.com/adelez) +- [canguler](https://github.com/canguler) +- [cesarghali](https://github.com/cesarghali) +- [iamqizhao](https://github.com/iamqizhao) +- [jeanbza](https://github.com/jeanbza) +- [jtattermusch](https://github.com/jtattermusch) +- [lyuxuan](https://github.com/lyuxuan) +- [makmukhi](https://github.com/makmukhi) +- [matt-kwong](https://github.com/matt-kwong) +- [menghanl](https://github.com/menghanl) +- [nicolasnoble](https://github.com/nicolasnoble) +- [srini100](https://github.com/srini100) +- [yongni](https://github.com/yongni) diff --git a/vendor/google.golang.org/grpc/Makefile b/vendor/google.golang.org/grpc/Makefile index 1f8960922..be38384ff 100644 --- a/vendor/google.golang.org/grpc/Makefile +++ b/vendor/google.golang.org/grpc/Makefile @@ -30,17 +30,20 @@ testdeps: GO111MODULE=on go get -d -v -t google.golang.org/grpc/... vet: vetdeps - ./vet.sh + ./scripts/vet.sh vetdeps: - ./vet.sh -install + ./scripts/vet.sh -install .PHONY: \ all \ build \ clean \ + deps \ proto \ test \ + testsubmodule \ testrace \ + testdeps \ vet \ vetdeps diff --git a/vendor/google.golang.org/grpc/README.md b/vendor/google.golang.org/grpc/README.md index ab0fbb79b..b572707c6 100644 --- a/vendor/google.golang.org/grpc/README.md +++ b/vendor/google.golang.org/grpc/README.md @@ -10,7 +10,7 @@ RPC framework that puts mobile and HTTP/2 first. For more information see the ## Prerequisites -- **[Go][]**: any one of the **three latest major** [releases][go-releases]. +- **[Go][]**: any one of the **two latest major** [releases][go-releases]. ## Installation diff --git a/vendor/google.golang.org/grpc/SECURITY.md b/vendor/google.golang.org/grpc/SECURITY.md index be6e10870..abab27937 100644 --- a/vendor/google.golang.org/grpc/SECURITY.md +++ b/vendor/google.golang.org/grpc/SECURITY.md @@ -1,3 +1,3 @@ # Security Policy -For information on gRPC Security Policy and reporting potentional security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md). +For information on gRPC Security Policy and reporting potential security issues, please see [gRPC CVE Process](https://github.com/grpc/proposal/blob/master/P4-grpc-cve-process.md). diff --git a/vendor/google.golang.org/grpc/backoff/backoff.go b/vendor/google.golang.org/grpc/backoff/backoff.go index 0787d0b50..d7b40b7cb 100644 --- a/vendor/google.golang.org/grpc/backoff/backoff.go +++ b/vendor/google.golang.org/grpc/backoff/backoff.go @@ -39,7 +39,7 @@ type Config struct { MaxDelay time.Duration } -// DefaultConfig is a backoff configuration with the default values specfied +// DefaultConfig is a backoff configuration with the default values specified // at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. // // This should be useful for callers who want to configure backoff with diff --git a/vendor/google.golang.org/grpc/balancer/balancer.go b/vendor/google.golang.org/grpc/balancer/balancer.go index f391744f7..b181f386a 100644 --- a/vendor/google.golang.org/grpc/balancer/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/balancer.go @@ -30,6 +30,7 @@ import ( "google.golang.org/grpc/channelz" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/credentials" + estats "google.golang.org/grpc/experimental/stats" "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal" "google.golang.org/grpc/metadata" @@ -72,8 +73,21 @@ func unregisterForTesting(name string) { delete(m, name) } +// connectedAddress returns the connected address for a SubConnState. The +// address is only valid if the state is READY. +func connectedAddress(scs SubConnState) resolver.Address { + return scs.connectedAddress +} + +// setConnectedAddress sets the connected address for a SubConnState. +func setConnectedAddress(scs *SubConnState, addr resolver.Address) { + scs.connectedAddress = addr +} + func init() { internal.BalancerUnregister = unregisterForTesting + internal.ConnectedAddress = connectedAddress + internal.SetConnectedAddress = setConnectedAddress } // Get returns the resolver builder registered with the given name. @@ -243,6 +257,10 @@ type BuildOptions struct { // same resolver.Target as passed to the resolver. See the documentation for // the resolver.Target type for details about what it contains. Target resolver.Target + // MetricsRecorder is the metrics recorder that balancers can use to record + // metrics. Balancer implementations which do not register metrics on + // metrics registry and record on them can ignore this field. + MetricsRecorder estats.MetricsRecorder } // Builder creates a balancer. @@ -410,6 +428,9 @@ type SubConnState struct { // ConnectionError is set if the ConnectivityState is TransientFailure, // describing the reason the SubConn failed. Otherwise, it is nil. ConnectionError error + // connectedAddr contains the connected address when ConnectivityState is + // Ready. Otherwise, it is indeterminate. + connectedAddress resolver.Address } // ClientConnState describes the state of a ClientConn relevant to the diff --git a/vendor/google.golang.org/grpc/balancer/base/balancer.go b/vendor/google.golang.org/grpc/balancer/base/balancer.go index a7f1eeec8..2b87bd79c 100644 --- a/vendor/google.golang.org/grpc/balancer/base/balancer.go +++ b/vendor/google.golang.org/grpc/balancer/base/balancer.go @@ -36,7 +36,7 @@ type baseBuilder struct { config Config } -func (bb *baseBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer { +func (bb *baseBuilder) Build(cc balancer.ClientConn, _ balancer.BuildOptions) balancer.Balancer { bal := &baseBalancer{ cc: cc, pickerBuilder: bb.pickerBuilder, @@ -259,6 +259,6 @@ type errPicker struct { err error // Pick() always returns this err. } -func (p *errPicker) Pick(info balancer.PickInfo) (balancer.PickResult, error) { +func (p *errPicker) Pick(balancer.PickInfo) (balancer.PickResult, error) { return balancer.PickResult{}, p.err } diff --git a/vendor/google.golang.org/grpc/pickfirst.go b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go similarity index 72% rename from vendor/google.golang.org/grpc/pickfirst.go rename to vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go index e3ea42ba9..4d69b4052 100644 --- a/vendor/google.golang.org/grpc/pickfirst.go +++ b/vendor/google.golang.org/grpc/balancer/pickfirst/pickfirst.go @@ -16,45 +16,55 @@ * */ -package grpc +// Package pickfirst contains the pick_first load balancing policy. +package pickfirst import ( "encoding/json" "errors" "fmt" + "math/rand" "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal" internalgrpclog "google.golang.org/grpc/internal/grpclog" - "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/internal/pretty" "google.golang.org/grpc/resolver" "google.golang.org/grpc/serviceconfig" ) +func init() { + balancer.Register(pickfirstBuilder{}) + internal.ShuffleAddressListForTesting = func(n int, swap func(i, j int)) { rand.Shuffle(n, swap) } +} + +var logger = grpclog.Component("pick-first-lb") + const ( - // PickFirstBalancerName is the name of the pick_first balancer. - PickFirstBalancerName = "pick_first" - logPrefix = "[pick-first-lb %p] " + // Name is the name of the pick_first balancer. + Name = "pick_first" + logPrefix = "[pick-first-lb %p] " ) type pickfirstBuilder struct{} -func (pickfirstBuilder) Build(cc balancer.ClientConn, opt balancer.BuildOptions) balancer.Balancer { +func (pickfirstBuilder) Build(cc balancer.ClientConn, _ balancer.BuildOptions) balancer.Balancer { b := &pickfirstBalancer{cc: cc} b.logger = internalgrpclog.NewPrefixLogger(logger, fmt.Sprintf(logPrefix, b)) return b } func (pickfirstBuilder) Name() string { - return PickFirstBalancerName + return Name } type pfConfig struct { serviceconfig.LoadBalancingConfig `json:"-"` // If set to true, instructs the LB policy to shuffle the order of the list - // of addresses received from the name resolver before attempting to + // of endpoints received from the name resolver before attempting to // connect to them. ShuffleAddressList bool `json:"shuffleAddressList"` } @@ -93,9 +103,14 @@ func (b *pickfirstBalancer) ResolverError(err error) { }) } +type Shuffler interface { + ShuffleAddressListForTesting(n int, swap func(i, j int)) +} + +func ShuffleAddressListForTesting(n int, swap func(i, j int)) { rand.Shuffle(n, swap) } + func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState) error { - addrs := state.ResolverState.Addresses - if len(addrs) == 0 { + if len(state.ResolverState.Addresses) == 0 && len(state.ResolverState.Endpoints) == 0 { // The resolver reported an empty address list. Treat it like an error by // calling b.ResolverError. if b.subConn != nil { @@ -107,22 +122,49 @@ func (b *pickfirstBalancer) UpdateClientConnState(state balancer.ClientConnState b.ResolverError(errors.New("produced zero addresses")) return balancer.ErrBadResolverState } - // We don't have to guard this block with the env var because ParseConfig // already does so. cfg, ok := state.BalancerConfig.(pfConfig) if state.BalancerConfig != nil && !ok { return fmt.Errorf("pickfirst: received illegal BalancerConfig (type %T): %v", state.BalancerConfig, state.BalancerConfig) } - if cfg.ShuffleAddressList { - addrs = append([]resolver.Address{}, addrs...) - grpcrand.Shuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] }) - } if b.logger.V(2) { b.logger.Infof("Received new config %s, resolver state %s", pretty.ToJSON(cfg), pretty.ToJSON(state.ResolverState)) } + var addrs []resolver.Address + if endpoints := state.ResolverState.Endpoints; len(endpoints) != 0 { + // Perform the optional shuffling described in gRFC A62. The shuffling will + // change the order of endpoints but not touch the order of the addresses + // within each endpoint. - A61 + if cfg.ShuffleAddressList { + endpoints = append([]resolver.Endpoint{}, endpoints...) + internal.ShuffleAddressListForTesting.(func(int, func(int, int)))(len(endpoints), func(i, j int) { endpoints[i], endpoints[j] = endpoints[j], endpoints[i] }) + } + + // "Flatten the list by concatenating the ordered list of addresses for each + // of the endpoints, in order." - A61 + for _, endpoint := range endpoints { + // "In the flattened list, interleave addresses from the two address + // families, as per RFC-8304 section 4." - A61 + // TODO: support the above language. + addrs = append(addrs, endpoint.Addresses...) + } + } else { + // Endpoints not set, process addresses until we migrate resolver + // emissions fully to Endpoints. The top channel does wrap emitted + // addresses with endpoints, however some balancers such as weighted + // target do not forward the corresponding correct endpoints down/split + // endpoints properly. Once all balancers correctly forward endpoints + // down, can delete this else conditional. + addrs = state.ResolverState.Addresses + if cfg.ShuffleAddressList { + addrs = append([]resolver.Address{}, addrs...) + rand.Shuffle(len(addrs), func(i, j int) { addrs[i], addrs[j] = addrs[j], addrs[i] }) + } + } + if b.subConn != nil { b.cc.UpdateAddresses(b.subConn, addrs) return nil diff --git a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go index f7031ad22..260255d31 100644 --- a/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go +++ b/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go @@ -22,12 +22,12 @@ package roundrobin import ( + "math/rand" "sync/atomic" "google.golang.org/grpc/balancer" "google.golang.org/grpc/balancer/base" "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/internal/grpcrand" ) // Name is the name of round_robin balancer. @@ -60,7 +60,7 @@ func (*rrPickerBuilder) Build(info base.PickerBuildInfo) balancer.Picker { // Start at a random index, as the same RR balancer rebuilds a new // picker when SubConn states change, and we don't want to apply excess // load to the first server in the list. - next: uint32(grpcrand.Intn(len(scs))), + next: uint32(rand.Intn(len(scs))), } } diff --git a/vendor/google.golang.org/grpc/balancer_wrapper.go b/vendor/google.golang.org/grpc/balancer_wrapper.go index af39b8a4c..8ad6ce2f0 100644 --- a/vendor/google.golang.org/grpc/balancer_wrapper.go +++ b/vendor/google.golang.org/grpc/balancer_wrapper.go @@ -25,12 +25,15 @@ import ( "google.golang.org/grpc/balancer" "google.golang.org/grpc/connectivity" + "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/balancer/gracefulswitch" "google.golang.org/grpc/internal/channelz" "google.golang.org/grpc/internal/grpcsync" "google.golang.org/grpc/resolver" ) +var setConnectedAddress = internal.SetConnectedAddress.(func(*balancer.SubConnState, resolver.Address)) + // ccBalancerWrapper sits between the ClientConn and the Balancer. // // ccBalancerWrapper implements methods corresponding to the ones on the @@ -79,6 +82,7 @@ func newCCBalancerWrapper(cc *ClientConn) *ccBalancerWrapper { CustomUserAgent: cc.dopts.copts.UserAgent, ChannelzParent: cc.channelz, Target: cc.parsedTarget, + MetricsRecorder: cc.metricsRecorderList, }, serializer: grpcsync.NewCallbackSerializer(ctx), serializerCancel: cancel, @@ -92,7 +96,7 @@ func newCCBalancerWrapper(cc *ClientConn) *ccBalancerWrapper { // it is safe to call into the balancer here. func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnState) error { errCh := make(chan error) - ok := ccb.serializer.Schedule(func(ctx context.Context) { + uccs := func(ctx context.Context) { defer close(errCh) if ctx.Err() != nil || ccb.balancer == nil { return @@ -107,17 +111,23 @@ func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnStat logger.Infof("error from balancer.UpdateClientConnState: %v", err) } errCh <- err - }) - if !ok { - return nil } + onFailure := func() { close(errCh) } + + // UpdateClientConnState can race with Close, and when the latter wins, the + // serializer is closed, and the attempt to schedule the callback will fail. + // It is acceptable to ignore this failure. But since we want to handle the + // state update in a blocking fashion (when we successfully schedule the + // callback), we have to use the ScheduleOr method and not the MaybeSchedule + // method on the serializer. + ccb.serializer.ScheduleOr(uccs, onFailure) return <-errCh } // resolverError is invoked by grpc to push a resolver error to the underlying // balancer. The call to the balancer is executed from the serializer. func (ccb *ccBalancerWrapper) resolverError(err error) { - ccb.serializer.Schedule(func(ctx context.Context) { + ccb.serializer.TrySchedule(func(ctx context.Context) { if ctx.Err() != nil || ccb.balancer == nil { return } @@ -133,7 +143,7 @@ func (ccb *ccBalancerWrapper) close() { ccb.closed = true ccb.mu.Unlock() channelz.Info(logger, ccb.cc.channelz, "ccBalancerWrapper: closing") - ccb.serializer.Schedule(func(context.Context) { + ccb.serializer.TrySchedule(func(context.Context) { if ccb.balancer == nil { return } @@ -145,7 +155,7 @@ func (ccb *ccBalancerWrapper) close() { // exitIdle invokes the balancer's exitIdle method in the serializer. func (ccb *ccBalancerWrapper) exitIdle() { - ccb.serializer.Schedule(func(ctx context.Context) { + ccb.serializer.TrySchedule(func(ctx context.Context) { if ctx.Err() != nil || ccb.balancer == nil { return } @@ -182,7 +192,7 @@ func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer return acbw, nil } -func (ccb *ccBalancerWrapper) RemoveSubConn(sc balancer.SubConn) { +func (ccb *ccBalancerWrapper) RemoveSubConn(balancer.SubConn) { // The graceful switch balancer will never call this. logger.Errorf("ccb RemoveSubConn(%v) called unexpectedly, sc") } @@ -198,6 +208,10 @@ func (ccb *ccBalancerWrapper) UpdateAddresses(sc balancer.SubConn, addrs []resol func (ccb *ccBalancerWrapper) UpdateState(s balancer.State) { ccb.cc.mu.Lock() defer ccb.cc.mu.Unlock() + if ccb.cc.conns == nil { + // The CC has been closed; ignore this update. + return + } ccb.mu.Lock() if ccb.closed { @@ -248,15 +262,29 @@ type acBalancerWrapper struct { // updateState is invoked by grpc to push a subConn state update to the // underlying balancer. -func (acbw *acBalancerWrapper) updateState(s connectivity.State, err error) { - acbw.ccb.serializer.Schedule(func(ctx context.Context) { +func (acbw *acBalancerWrapper) updateState(s connectivity.State, curAddr resolver.Address, err error) { + acbw.ccb.serializer.TrySchedule(func(ctx context.Context) { if ctx.Err() != nil || acbw.ccb.balancer == nil { return } // Even though it is optional for balancers, gracefulswitch ensures // opts.StateListener is set, so this cannot ever be nil. // TODO: delete this comment when UpdateSubConnState is removed. - acbw.stateListener(balancer.SubConnState{ConnectivityState: s, ConnectionError: err}) + scs := balancer.SubConnState{ConnectivityState: s, ConnectionError: err} + if s == connectivity.Ready { + setConnectedAddress(&scs, curAddr) + } + acbw.stateListener(scs) + acbw.ac.mu.Lock() + defer acbw.ac.mu.Unlock() + if s == connectivity.Ready { + // When changing states to READY, reset stateReadyChan. Wait until + // after we notify the LB policy's listener(s) in order to prevent + // ac.getTransport() from unblocking before the LB policy starts + // tracking the subchannel as READY. + close(acbw.ac.stateReadyChan) + acbw.ac.stateReadyChan = make(chan struct{}) + } }) } @@ -314,8 +342,8 @@ func (acbw *acBalancerWrapper) GetOrBuildProducer(pb balancer.ProducerBuilder) ( pData := acbw.producers[pb] if pData == nil { // Not found; create a new one and add it to the producers map. - p, close := pb.Build(acbw) - pData = &refCountedProducer{producer: p, close: close} + p, closeFn := pb.Build(acbw) + pData = &refCountedProducer{producer: p, close: closeFn} acbw.producers[pb] = pData } // Account for this new reference. diff --git a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go index 856c75dd4..55bffaa77 100644 --- a/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go +++ b/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go @@ -18,8 +18,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.32.0 -// protoc v4.25.2 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: grpc/binlog/v1/binarylog.proto package grpc_binarylog_v1 @@ -1015,7 +1015,7 @@ func file_grpc_binlog_v1_binarylog_proto_rawDescGZIP() []byte { var file_grpc_binlog_v1_binarylog_proto_enumTypes = make([]protoimpl.EnumInfo, 3) var file_grpc_binlog_v1_binarylog_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_grpc_binlog_v1_binarylog_proto_goTypes = []interface{}{ +var file_grpc_binlog_v1_binarylog_proto_goTypes = []any{ (GrpcLogEntry_EventType)(0), // 0: grpc.binarylog.v1.GrpcLogEntry.EventType (GrpcLogEntry_Logger)(0), // 1: grpc.binarylog.v1.GrpcLogEntry.Logger (Address_Type)(0), // 2: grpc.binarylog.v1.Address.Type @@ -1058,7 +1058,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*GrpcLogEntry); i { case 0: return &v.state @@ -1070,7 +1070,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return nil } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ClientHeader); i { case 0: return &v.state @@ -1082,7 +1082,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return nil } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ServerHeader); i { case 0: return &v.state @@ -1094,7 +1094,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return nil } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*Trailer); i { case 0: return &v.state @@ -1106,7 +1106,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return nil } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*Message); i { case 0: return &v.state @@ -1118,7 +1118,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return nil } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*Metadata); i { case 0: return &v.state @@ -1130,7 +1130,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return nil } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*MetadataEntry); i { case 0: return &v.state @@ -1142,7 +1142,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { return nil } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_grpc_binlog_v1_binarylog_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*Address); i { case 0: return &v.state @@ -1155,7 +1155,7 @@ func file_grpc_binlog_v1_binarylog_proto_init() { } } } - file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_grpc_binlog_v1_binarylog_proto_msgTypes[0].OneofWrappers = []any{ (*GrpcLogEntry_ClientHeader)(nil), (*GrpcLogEntry_ServerHeader)(nil), (*GrpcLogEntry_Message)(nil), diff --git a/vendor/google.golang.org/grpc/clientconn.go b/vendor/google.golang.org/grpc/clientconn.go index c7f260711..9c8850e3f 100644 --- a/vendor/google.golang.org/grpc/clientconn.go +++ b/vendor/google.golang.org/grpc/clientconn.go @@ -24,6 +24,7 @@ import ( "fmt" "math" "net/url" + "slices" "strings" "sync" "sync/atomic" @@ -31,14 +32,15 @@ import ( "google.golang.org/grpc/balancer" "google.golang.org/grpc/balancer/base" + "google.golang.org/grpc/balancer/pickfirst" "google.golang.org/grpc/codes" "google.golang.org/grpc/connectivity" "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/channelz" "google.golang.org/grpc/internal/grpcsync" "google.golang.org/grpc/internal/idle" - "google.golang.org/grpc/internal/pretty" iresolver "google.golang.org/grpc/internal/resolver" + "google.golang.org/grpc/internal/stats" "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/resolver" @@ -73,6 +75,8 @@ var ( // invalidDefaultServiceConfigErrPrefix is used to prefix the json parsing error for the default // service config. invalidDefaultServiceConfigErrPrefix = "grpc: the provided default service config is invalid" + // PickFirstBalancerName is the name of the pick_first balancer. + PickFirstBalancerName = pickfirst.Name ) // The following errors are returned from Dial and DialContext @@ -121,8 +125,9 @@ func (dcs *defaultConfigSelector) SelectConfig(rpcInfo iresolver.RPCInfo) (*ires // https://github.com/grpc/grpc/blob/master/doc/naming.md. e.g. to use dns // resolver, a "dns:///" prefix should be applied to the target. // -// The DialOptions returned by WithBlock, WithTimeout, and -// WithReturnConnectionError are ignored by this function. +// The DialOptions returned by WithBlock, WithTimeout, +// WithReturnConnectionError, and FailOnNonTempDialError are ignored by this +// function. func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error) { cc := &ClientConn{ target: target, @@ -152,6 +157,16 @@ func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error) for _, opt := range opts { opt.apply(&cc.dopts) } + + // Determine the resolver to use. + if err := cc.initParsedTargetAndResolverBuilder(); err != nil { + return nil, err + } + + for _, opt := range globalPerTargetDialOptions { + opt.DialOptionForTarget(cc.parsedTarget.URL).apply(&cc.dopts) + } + chainUnaryClientInterceptors(cc) chainStreamClientInterceptors(cc) @@ -160,7 +175,7 @@ func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error) } if cc.dopts.defaultServiceConfigRawJSON != nil { - scpr := parseServiceConfig(*cc.dopts.defaultServiceConfigRawJSON) + scpr := parseServiceConfig(*cc.dopts.defaultServiceConfigRawJSON, cc.dopts.maxCallAttempts) if scpr.Err != nil { return nil, fmt.Errorf("%s: %v", invalidDefaultServiceConfigErrPrefix, scpr.Err) } @@ -168,34 +183,30 @@ func NewClient(target string, opts ...DialOption) (conn *ClientConn, err error) } cc.mkp = cc.dopts.copts.KeepaliveParams - // Register ClientConn with channelz. - cc.channelzRegistration(target) - - // TODO: Ideally it should be impossible to error from this function after - // channelz registration. This will require removing some channelz logs - // from the following functions that can error. Errors can be returned to - // the user, and successful logs can be emitted here, after the checks have - // passed and channelz is subsequently registered. - - // Determine the resolver to use. - if err := cc.parseTargetAndFindResolver(); err != nil { - channelz.RemoveEntry(cc.channelz.ID) - return nil, err - } - if err = cc.determineAuthority(); err != nil { - channelz.RemoveEntry(cc.channelz.ID) + if err = cc.initAuthority(); err != nil { return nil, err } + // Register ClientConn with channelz. Note that this is only done after + // channel creation cannot fail. + cc.channelzRegistration(target) + channelz.Infof(logger, cc.channelz, "parsed dial target is: %#v", cc.parsedTarget) + channelz.Infof(logger, cc.channelz, "Channel authority set to %q", cc.authority) + cc.csMgr = newConnectivityStateManager(cc.ctx, cc.channelz) cc.pickerWrapper = newPickerWrapper(cc.dopts.copts.StatsHandlers) + cc.metricsRecorderList = stats.NewMetricsRecorderList(cc.dopts.copts.StatsHandlers) + cc.initIdleStateLocked() // Safe to call without the lock, since nothing else has a reference to cc. cc.idlenessMgr = idle.NewManager((*idler)(cc), cc.dopts.idleTimeout) + return cc, nil } // Dial calls DialContext(context.Background(), target, opts...). +// +// Deprecated: use NewClient instead. Will be supported throughout 1.x. func Dial(target string, opts ...DialOption) (*ClientConn, error) { return DialContext(context.Background(), target, opts...) } @@ -209,6 +220,8 @@ func Dial(target string, opts ...DialOption) (*ClientConn, error) { // "passthrough" for backward compatibility. This distinction should not matter // to most users, but could matter to legacy users that specify a custom dialer // and expect it to receive the target string directly. +// +// Deprecated: use NewClient instead. Will be supported throughout 1.x. func DialContext(ctx context.Context, target string, opts ...DialOption) (conn *ClientConn, err error) { // At the end of this method, we kick the channel out of idle, rather than // waiting for the first rpc. @@ -582,13 +595,14 @@ type ClientConn struct { cancel context.CancelFunc // Cancelled on close. // The following are initialized at dial time, and are read-only after that. - target string // User's dial target. - parsedTarget resolver.Target // See parseTargetAndFindResolver(). - authority string // See determineAuthority(). - dopts dialOptions // Default and user specified dial options. - channelz *channelz.Channel // Channelz object. - resolverBuilder resolver.Builder // See parseTargetAndFindResolver(). - idlenessMgr *idle.Manager + target string // User's dial target. + parsedTarget resolver.Target // See initParsedTargetAndResolverBuilder(). + authority string // See initAuthority(). + dopts dialOptions // Default and user specified dial options. + channelz *channelz.Channel // Channelz object. + resolverBuilder resolver.Builder // See initParsedTargetAndResolverBuilder(). + idlenessMgr *idle.Manager + metricsRecorderList *stats.MetricsRecorderList // The following provide their own synchronization, and therefore don't // require cc.mu to be held to access them. @@ -618,11 +632,6 @@ type ClientConn struct { // WaitForStateChange waits until the connectivity.State of ClientConn changes from sourceState or // ctx expires. A true value is returned in former case and false in latter. -// -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connectivity.State) bool { ch := cc.csMgr.getNotifyChan() if cc.csMgr.getState() != sourceState { @@ -637,11 +646,6 @@ func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connec } // GetState returns the connectivity.State of ClientConn. -// -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a later -// release. func (cc *ClientConn) GetState() connectivity.State { return cc.csMgr.getState() } @@ -688,8 +692,7 @@ func (cc *ClientConn) waitForResolvedAddrs(ctx context.Context) error { var emptyServiceConfig *ServiceConfig func init() { - balancer.Register(pickfirstBuilder{}) - cfg := parseServiceConfig("{}") + cfg := parseServiceConfig("{}", defaultMaxCallAttempts) if cfg.Err != nil { panic(fmt.Sprintf("impossible error parsing empty service config: %v", cfg.Err)) } @@ -805,17 +808,11 @@ func (cc *ClientConn) applyFailingLBLocked(sc *serviceconfig.ParseResult) { cc.csMgr.updateState(connectivity.TransientFailure) } -// Makes a copy of the input addresses slice and clears out the balancer -// attributes field. Addresses are passed during subconn creation and address -// update operations. In both cases, we will clear the balancer attributes by -// calling this function, and therefore we will be able to use the Equal method -// provided by the resolver.Address type for comparison. -func copyAddressesWithoutBalancerAttributes(in []resolver.Address) []resolver.Address { +// Makes a copy of the input addresses slice. Addresses are passed during +// subconn creation and address update operations. +func copyAddresses(in []resolver.Address) []resolver.Address { out := make([]resolver.Address, len(in)) - for i := range in { - out[i] = in[i] - out[i].BalancerAttributes = nil - } + copy(out, in) return out } @@ -828,16 +825,19 @@ func (cc *ClientConn) newAddrConnLocked(addrs []resolver.Address, opts balancer. } ac := &addrConn{ - state: connectivity.Idle, - cc: cc, - addrs: copyAddressesWithoutBalancerAttributes(addrs), - scopts: opts, - dopts: cc.dopts, - channelz: channelz.RegisterSubChannel(cc.channelz, ""), - resetBackoff: make(chan struct{}), - stateChan: make(chan struct{}), + state: connectivity.Idle, + cc: cc, + addrs: copyAddresses(addrs), + scopts: opts, + dopts: cc.dopts, + channelz: channelz.RegisterSubChannel(cc.channelz, ""), + resetBackoff: make(chan struct{}), + stateReadyChan: make(chan struct{}), } ac.ctx, ac.cancel = context.WithCancel(cc.ctx) + // Start with our address set to the first address; this may be updated if + // we connect to different addresses. + ac.channelz.ChannelMetrics.Target.Store(&addrs[0].Addr) channelz.AddTraceEvent(logger, ac.channelz, 0, &channelz.TraceEvent{ Desc: "Subchannel created", @@ -908,32 +908,37 @@ func (ac *addrConn) connect() error { ac.mu.Unlock() return nil } - ac.mu.Unlock() - ac.resetTransport() + ac.resetTransportAndUnlock() return nil } -func equalAddresses(a, b []resolver.Address) bool { - if len(a) != len(b) { - return false - } - for i, v := range a { - if !v.Equal(b[i]) { - return false - } - } - return true +// equalAddressIgnoringBalAttributes returns true is a and b are considered equal. +// This is different from the Equal method on the resolver.Address type which +// considers all fields to determine equality. Here, we only consider fields +// that are meaningful to the subConn. +func equalAddressIgnoringBalAttributes(a, b *resolver.Address) bool { + return a.Addr == b.Addr && a.ServerName == b.ServerName && + a.Attributes.Equal(b.Attributes) && + a.Metadata == b.Metadata +} + +func equalAddressesIgnoringBalAttributes(a, b []resolver.Address) bool { + return slices.EqualFunc(a, b, func(a, b resolver.Address) bool { return equalAddressIgnoringBalAttributes(&a, &b) }) } // updateAddrs updates ac.addrs with the new addresses list and handles active // connections or connection attempts. func (ac *addrConn) updateAddrs(addrs []resolver.Address) { - ac.mu.Lock() - channelz.Infof(logger, ac.channelz, "addrConn: updateAddrs curAddr: %v, addrs: %v", pretty.ToJSON(ac.curAddr), pretty.ToJSON(addrs)) + addrs = copyAddresses(addrs) + limit := len(addrs) + if limit > 5 { + limit = 5 + } + channelz.Infof(logger, ac.channelz, "addrConn: updateAddrs addrs (%d of %d): %v", limit, len(addrs), addrs[:limit]) - addrs = copyAddressesWithoutBalancerAttributes(addrs) - if equalAddresses(ac.addrs, addrs) { + ac.mu.Lock() + if equalAddressesIgnoringBalAttributes(ac.addrs, addrs) { ac.mu.Unlock() return } @@ -952,7 +957,7 @@ func (ac *addrConn) updateAddrs(addrs []resolver.Address) { // Try to find the connected address. for _, a := range addrs { a.ServerName = ac.cc.getServerName(a) - if a.Equal(ac.curAddr) { + if equalAddressIgnoringBalAttributes(&a, &ac.curAddr) { // We are connected to a valid address, so do nothing but // update the addresses. ac.mu.Unlock() @@ -978,11 +983,9 @@ func (ac *addrConn) updateAddrs(addrs []resolver.Address) { ac.updateConnectivityState(connectivity.Idle, nil) } - ac.mu.Unlock() - // Since we were connecting/connected, we should start a new connection // attempt. - go ac.resetTransport() + go ac.resetTransportAndUnlock() } // getServerName determines the serverName to be used in the connection @@ -1167,13 +1170,17 @@ type addrConn struct { // is received, transport is closed, ac has been torn down). transport transport.ClientTransport // The current transport. + // This mutex is used on the RPC path, so its usage should be minimized as + // much as possible. + // TODO: Find a lock-free way to retrieve the transport and state from the + // addrConn. mu sync.Mutex curAddr resolver.Address // The current address. addrs []resolver.Address // All addresses that the resolver resolved to. // Use updateConnectivityState for updating addrConn's connectivity state. - state connectivity.State - stateChan chan struct{} // closed and recreated on every state change. + state connectivity.State + stateReadyChan chan struct{} // closed and recreated on every READY state change. backoffIdx int // Needs to be stateful for resetConnectBackoff. resetBackoff chan struct{} @@ -1186,9 +1193,6 @@ func (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error) if ac.state == s { return } - // When changing states, reset the state change channel. - close(ac.stateChan) - ac.stateChan = make(chan struct{}) ac.state = s ac.channelz.ChannelMetrics.State.Store(&s) if lastErr == nil { @@ -1196,7 +1200,7 @@ func (ac *addrConn) updateConnectivityState(s connectivity.State, lastErr error) } else { channelz.Infof(logger, ac.channelz, "Subchannel Connectivity change to %v, last error: %s", s, lastErr) } - ac.acbw.updateState(s, lastErr) + ac.acbw.updateState(s, ac.curAddr, lastErr) } // adjustParams updates parameters used to create transports upon @@ -1213,8 +1217,10 @@ func (ac *addrConn) adjustParams(r transport.GoAwayReason) { } } -func (ac *addrConn) resetTransport() { - ac.mu.Lock() +// resetTransportAndUnlock unconditionally connects the addrConn. +// +// ac.mu must be held by the caller, and this function will guarantee it is released. +func (ac *addrConn) resetTransportAndUnlock() { acCtx := ac.ctx if acCtx.Err() != nil { ac.mu.Unlock() @@ -1292,6 +1298,7 @@ func (ac *addrConn) resetTransport() { func (ac *addrConn) tryAllAddrs(ctx context.Context, addrs []resolver.Address, connectDeadline time.Time) error { var firstConnErr error for _, addr := range addrs { + ac.channelz.ChannelMetrics.Target.Store(&addr.Addr) if ctx.Err() != nil { return errConnClosing } @@ -1503,7 +1510,7 @@ func (ac *addrConn) getReadyTransport() transport.ClientTransport { func (ac *addrConn) getTransport(ctx context.Context) (transport.ClientTransport, error) { for ctx.Err() == nil { ac.mu.Lock() - t, state, sc := ac.transport, ac.state, ac.stateChan + t, state, sc := ac.transport, ac.state, ac.stateReadyChan ac.mu.Unlock() if state == connectivity.Ready { return t, nil @@ -1566,7 +1573,7 @@ func (ac *addrConn) tearDown(err error) { } else { // Hard close the transport when the channel is entering idle or is // being shutdown. In the case where the channel is being shutdown, - // closing of transports is also taken care of by cancelation of cc.ctx. + // closing of transports is also taken care of by cancellation of cc.ctx. // But in the case where the channel is entering idle, we need to // explicitly close the transports here. Instead of distinguishing // between these two cases, it is simpler to close the transport @@ -1657,22 +1664,19 @@ func (cc *ClientConn) connectionError() error { return cc.lastConnectionError } -// parseTargetAndFindResolver parses the user's dial target and stores the -// parsed target in `cc.parsedTarget`. +// initParsedTargetAndResolverBuilder parses the user's dial target and stores +// the parsed target in `cc.parsedTarget`. // // The resolver to use is determined based on the scheme in the parsed target // and the same is stored in `cc.resolverBuilder`. // // Doesn't grab cc.mu as this method is expected to be called only at Dial time. -func (cc *ClientConn) parseTargetAndFindResolver() error { - channelz.Infof(logger, cc.channelz, "original dial target is: %q", cc.target) +func (cc *ClientConn) initParsedTargetAndResolverBuilder() error { + logger.Infof("original dial target is: %q", cc.target) var rb resolver.Builder parsedTarget, err := parseTarget(cc.target) - if err != nil { - channelz.Infof(logger, cc.channelz, "dial target %q parse failed: %v", cc.target, err) - } else { - channelz.Infof(logger, cc.channelz, "parsed dial target is: %#v", parsedTarget) + if err == nil { rb = cc.getResolver(parsedTarget.URL.Scheme) if rb != nil { cc.parsedTarget = parsedTarget @@ -1691,15 +1695,12 @@ func (cc *ClientConn) parseTargetAndFindResolver() error { defScheme = resolver.GetDefaultScheme() } - channelz.Infof(logger, cc.channelz, "fallback to scheme %q", defScheme) canonicalTarget := defScheme + ":///" + cc.target parsedTarget, err = parseTarget(canonicalTarget) if err != nil { - channelz.Infof(logger, cc.channelz, "dial target %q parse failed: %v", canonicalTarget, err) return err } - channelz.Infof(logger, cc.channelz, "parsed dial target is: %+v", parsedTarget) rb = cc.getResolver(parsedTarget.URL.Scheme) if rb == nil { return fmt.Errorf("could not get resolver for default scheme: %q", parsedTarget.URL.Scheme) @@ -1739,7 +1740,7 @@ func encodeAuthority(authority string) string { return false case '!', '$', '&', '\'', '(', ')', '*', '+', ',', ';', '=': // Subdelim characters return false - case ':', '[', ']', '@': // Authority related delimeters + case ':', '[', ']', '@': // Authority related delimiters return false } // Everything else must be escaped. @@ -1789,7 +1790,7 @@ func encodeAuthority(authority string) string { // credentials do not match the authority configured through the dial option. // // Doesn't grab cc.mu as this method is expected to be called only at Dial time. -func (cc *ClientConn) determineAuthority() error { +func (cc *ClientConn) initAuthority() error { dopts := cc.dopts // Historically, we had two options for users to specify the serverName or // authority for a channel. One was through the transport credentials @@ -1822,6 +1823,5 @@ func (cc *ClientConn) determineAuthority() error { } else { cc.authority = encodeAuthority(endpoint) } - channelz.Infof(logger, cc.channelz, "Channel authority set to %q", cc.authority) return nil } diff --git a/vendor/google.golang.org/grpc/codec.go b/vendor/google.golang.org/grpc/codec.go index 411e3dfd4..e840858b7 100644 --- a/vendor/google.golang.org/grpc/codec.go +++ b/vendor/google.golang.org/grpc/codec.go @@ -21,18 +21,73 @@ package grpc import ( "google.golang.org/grpc/encoding" _ "google.golang.org/grpc/encoding/proto" // to register the Codec for "proto" + "google.golang.org/grpc/mem" ) -// baseCodec contains the functionality of both Codec and encoding.Codec, but -// omits the name/string, which vary between the two and are not needed for -// anything besides the registry in the encoding package. +// baseCodec captures the new encoding.CodecV2 interface without the Name +// function, allowing it to be implemented by older Codec and encoding.Codec +// implementations. The omitted Name function is only needed for the register in +// the encoding package and is not part of the core functionality. type baseCodec interface { - Marshal(v any) ([]byte, error) - Unmarshal(data []byte, v any) error + Marshal(v any) (mem.BufferSlice, error) + Unmarshal(data mem.BufferSlice, v any) error +} + +// getCodec returns an encoding.CodecV2 for the codec of the given name (if +// registered). Initially checks the V2 registry with encoding.GetCodecV2 and +// returns the V2 codec if it is registered. Otherwise, it checks the V1 registry +// with encoding.GetCodec and if it is registered wraps it with newCodecV1Bridge +// to turn it into an encoding.CodecV2. Returns nil otherwise. +func getCodec(name string) encoding.CodecV2 { + if codecV1 := encoding.GetCodec(name); codecV1 != nil { + return newCodecV1Bridge(codecV1) + } + + return encoding.GetCodecV2(name) +} + +func newCodecV0Bridge(c Codec) baseCodec { + return codecV0Bridge{codec: c} +} + +func newCodecV1Bridge(c encoding.Codec) encoding.CodecV2 { + return codecV1Bridge{ + codecV0Bridge: codecV0Bridge{codec: c}, + name: c.Name(), + } +} + +var _ baseCodec = codecV0Bridge{} + +type codecV0Bridge struct { + codec interface { + Marshal(v any) ([]byte, error) + Unmarshal(data []byte, v any) error + } +} + +func (c codecV0Bridge) Marshal(v any) (mem.BufferSlice, error) { + data, err := c.codec.Marshal(v) + if err != nil { + return nil, err + } + return mem.BufferSlice{mem.NewBuffer(&data, nil)}, nil +} + +func (c codecV0Bridge) Unmarshal(data mem.BufferSlice, v any) (err error) { + return c.codec.Unmarshal(data.Materialize(), v) } -var _ baseCodec = Codec(nil) -var _ baseCodec = encoding.Codec(nil) +var _ encoding.CodecV2 = codecV1Bridge{} + +type codecV1Bridge struct { + codecV0Bridge + name string +} + +func (c codecV1Bridge) Name() string { + return c.name +} // Codec defines the interface gRPC uses to encode and decode messages. // Note that implementations of this interface must be thread safe; diff --git a/vendor/google.golang.org/grpc/codegen.sh b/vendor/google.golang.org/grpc/codegen.sh deleted file mode 100644 index 4cdc6ba7c..000000000 --- a/vendor/google.golang.org/grpc/codegen.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -# This script serves as an example to demonstrate how to generate the gRPC-Go -# interface and the related messages from .proto file. -# -# It assumes the installation of i) Google proto buffer compiler at -# https://github.com/google/protobuf (after v2.6.1) and ii) the Go codegen -# plugin at https://github.com/golang/protobuf (after 2015-02-20). If you have -# not, please install them first. -# -# We recommend running this script at $GOPATH/src. -# -# If this is not what you need, feel free to make your own scripts. Again, this -# script is for demonstration purpose. -# -proto=$1 -protoc --go_out=plugins=grpc:. $proto diff --git a/vendor/google.golang.org/grpc/codes/codes.go b/vendor/google.golang.org/grpc/codes/codes.go index 08476ad1f..0b42c302b 100644 --- a/vendor/google.golang.org/grpc/codes/codes.go +++ b/vendor/google.golang.org/grpc/codes/codes.go @@ -235,7 +235,7 @@ func (c *Code) UnmarshalJSON(b []byte) error { if ci, err := strconv.ParseUint(string(b), 10, 32); err == nil { if ci >= _maxCode { - return fmt.Errorf("invalid code: %q", ci) + return fmt.Errorf("invalid code: %d", ci) } *c = Code(ci) diff --git a/vendor/google.golang.org/grpc/credentials/credentials.go b/vendor/google.golang.org/grpc/credentials/credentials.go index f6b55c68b..665e790bb 100644 --- a/vendor/google.golang.org/grpc/credentials/credentials.go +++ b/vendor/google.golang.org/grpc/credentials/credentials.go @@ -30,7 +30,7 @@ import ( "google.golang.org/grpc/attributes" icredentials "google.golang.org/grpc/internal/credentials" - "google.golang.org/protobuf/protoadapt" + "google.golang.org/protobuf/proto" ) // PerRPCCredentials defines the common interface for the credentials which need to @@ -237,7 +237,7 @@ func ClientHandshakeInfoFromContext(ctx context.Context) ClientHandshakeInfo { } // CheckSecurityLevel checks if a connection's security level is greater than or equal to the specified one. -// It returns success if 1) the condition is satisified or 2) AuthInfo struct does not implement GetCommonAuthInfo() method +// It returns success if 1) the condition is satisfied or 2) AuthInfo struct does not implement GetCommonAuthInfo() method // or 3) CommonAuthInfo.SecurityLevel has an invalid zero value. For 2) and 3), it is for the purpose of backward-compatibility. // // This API is experimental. @@ -287,5 +287,5 @@ type ChannelzSecurityValue interface { type OtherChannelzSecurityValue struct { ChannelzSecurityValue Name string - Value protoadapt.MessageV1 + Value proto.Message } diff --git a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go index 82bee1443..4c805c644 100644 --- a/vendor/google.golang.org/grpc/credentials/insecure/insecure.go +++ b/vendor/google.golang.org/grpc/credentials/insecure/insecure.go @@ -40,7 +40,7 @@ func NewCredentials() credentials.TransportCredentials { // NoSecurity. type insecureTC struct{} -func (insecureTC) ClientHandshake(ctx context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) { +func (insecureTC) ClientHandshake(_ context.Context, _ string, conn net.Conn) (net.Conn, credentials.AuthInfo, error) { return conn, info{credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity}}, nil } diff --git a/vendor/google.golang.org/grpc/credentials/tls.go b/vendor/google.golang.org/grpc/credentials/tls.go index 5dafd34ed..411435854 100644 --- a/vendor/google.golang.org/grpc/credentials/tls.go +++ b/vendor/google.golang.org/grpc/credentials/tls.go @@ -27,9 +27,13 @@ import ( "net/url" "os" + "google.golang.org/grpc/grpclog" credinternal "google.golang.org/grpc/internal/credentials" + "google.golang.org/grpc/internal/envconfig" ) +var logger = grpclog.Component("credentials") + // TLSInfo contains the auth information for a TLS authenticated connection. // It implements the AuthInfo interface. type TLSInfo struct { @@ -112,6 +116,22 @@ func (c *tlsCreds) ClientHandshake(ctx context.Context, authority string, rawCon conn.Close() return nil, nil, ctx.Err() } + + // The negotiated protocol can be either of the following: + // 1. h2: When the server supports ALPN. Only HTTP/2 can be negotiated since + // it is the only protocol advertised by the client during the handshake. + // The tls library ensures that the server chooses a protocol advertised + // by the client. + // 2. "" (empty string): If the server doesn't support ALPN. ALPN is a requirement + // for using HTTP/2 over TLS. We can terminate the connection immediately. + np := conn.ConnectionState().NegotiatedProtocol + if np == "" { + if envconfig.EnforceALPNEnabled { + conn.Close() + return nil, nil, fmt.Errorf("credentials: cannot check peer: missing selected ALPN property") + } + logger.Warningf("Allowing TLS connection to server %q with ALPN disabled. TLS connections to servers with ALPN disabled will be disallowed in future grpc-go releases", cfg.ServerName) + } tlsInfo := TLSInfo{ State: conn.ConnectionState(), CommonAuthInfo: CommonAuthInfo{ @@ -131,8 +151,20 @@ func (c *tlsCreds) ServerHandshake(rawConn net.Conn) (net.Conn, AuthInfo, error) conn.Close() return nil, nil, err } + cs := conn.ConnectionState() + // The negotiated application protocol can be empty only if the client doesn't + // support ALPN. In such cases, we can close the connection since ALPN is required + // for using HTTP/2 over TLS. + if cs.NegotiatedProtocol == "" { + if envconfig.EnforceALPNEnabled { + conn.Close() + return nil, nil, fmt.Errorf("credentials: cannot check peer: missing selected ALPN property") + } else if logger.V(2) { + logger.Info("Allowing TLS connection from client with ALPN disabled. TLS connections with ALPN disabled will be disallowed in future grpc-go releases") + } + } tlsInfo := TLSInfo{ - State: conn.ConnectionState(), + State: cs, CommonAuthInfo: CommonAuthInfo{ SecurityLevel: PrivacyAndIntegrity, }, diff --git a/vendor/google.golang.org/grpc/dialoptions.go b/vendor/google.golang.org/grpc/dialoptions.go index 402493224..2b285beee 100644 --- a/vendor/google.golang.org/grpc/dialoptions.go +++ b/vendor/google.golang.org/grpc/dialoptions.go @@ -21,6 +21,7 @@ package grpc import ( "context" "net" + "net/url" "time" "google.golang.org/grpc/backoff" @@ -32,10 +33,16 @@ import ( "google.golang.org/grpc/internal/binarylog" "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/mem" "google.golang.org/grpc/resolver" "google.golang.org/grpc/stats" ) +const ( + // https://github.com/grpc/proposal/blob/master/A6-client-retries.md#limits-on-retries-and-hedges + defaultMaxCallAttempts = 5 +) + func init() { internal.AddGlobalDialOptions = func(opt ...DialOption) { globalDialOptions = append(globalDialOptions, opt...) @@ -43,10 +50,18 @@ func init() { internal.ClearGlobalDialOptions = func() { globalDialOptions = nil } + internal.AddGlobalPerTargetDialOptions = func(opt any) { + if ptdo, ok := opt.(perTargetDialOption); ok { + globalPerTargetDialOptions = append(globalPerTargetDialOptions, ptdo) + } + } + internal.ClearGlobalPerTargetDialOptions = func() { + globalPerTargetDialOptions = nil + } internal.WithBinaryLogger = withBinaryLogger internal.JoinDialOptions = newJoinDialOption internal.DisableGlobalDialOptions = newDisableGlobalDialOptions - internal.WithRecvBufferPool = withRecvBufferPool + internal.WithBufferPool = withBufferPool } // dialOptions configure a Dial call. dialOptions are set by the DialOption @@ -78,8 +93,8 @@ type dialOptions struct { defaultServiceConfigRawJSON *string resolvers []resolver.Builder idleTimeout time.Duration - recvBufferPool SharedBufferPool defaultScheme string + maxCallAttempts int } // DialOption configures how we set up the connection. @@ -89,6 +104,19 @@ type DialOption interface { var globalDialOptions []DialOption +// perTargetDialOption takes a parsed target and returns a dial option to apply. +// +// This gets called after NewClient() parses the target, and allows per target +// configuration set through a returned DialOption. The DialOption will not take +// effect if specifies a resolver builder, as that Dial Option is factored in +// while parsing target. +type perTargetDialOption interface { + // DialOption returns a Dial Option to apply. + DialOptionForTarget(parsedTarget url.URL) DialOption +} + +var globalPerTargetDialOptions []perTargetDialOption + // EmptyDialOption does not alter the dial configuration. It can be embedded in // another structure to build custom dial options. // @@ -300,6 +328,9 @@ func withBackoff(bs internalbackoff.Strategy) DialOption { // // Use of this feature is not recommended. For more information, please see: // https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md +// +// Deprecated: this DialOption is not supported by NewClient. +// Will be supported throughout 1.x. func WithBlock() DialOption { return newFuncDialOption(func(o *dialOptions) { o.block = true @@ -314,10 +345,8 @@ func WithBlock() DialOption { // Use of this feature is not recommended. For more information, please see: // https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md // -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. +// Deprecated: this DialOption is not supported by NewClient. +// Will be supported throughout 1.x. func WithReturnConnectionError() DialOption { return newFuncDialOption(func(o *dialOptions) { o.block = true @@ -387,8 +416,8 @@ func WithCredentialsBundle(b credentials.Bundle) DialOption { // WithTimeout returns a DialOption that configures a timeout for dialing a // ClientConn initially. This is valid if and only if WithBlock() is present. // -// Deprecated: use DialContext instead of Dial and context.WithTimeout -// instead. Will be supported throughout 1.x. +// Deprecated: this DialOption is not supported by NewClient. +// Will be supported throughout 1.x. func WithTimeout(d time.Duration) DialOption { return newFuncDialOption(func(o *dialOptions) { o.timeout = d @@ -470,9 +499,8 @@ func withBinaryLogger(bl binarylog.Logger) DialOption { // Use of this feature is not recommended. For more information, please see: // https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md // -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// Deprecated: this DialOption is not supported by NewClient. +// This API may be changed or removed in a // later release. func FailOnNonTempDialError(f bool) DialOption { return newFuncDialOption(func(o *dialOptions) { @@ -490,6 +518,8 @@ func WithUserAgent(s string) DialOption { // WithKeepaliveParams returns a DialOption that specifies keepalive parameters // for the client transport. +// +// Keepalive is disabled by default. func WithKeepaliveParams(kp keepalive.ClientParameters) DialOption { if kp.Time < internal.KeepaliveMinPingTime { logger.Warningf("Adjusting keepalive ping interval to minimum period of %v", internal.KeepaliveMinPingTime) @@ -601,12 +631,22 @@ func WithDisableRetry() DialOption { }) } +// MaxHeaderListSizeDialOption is a DialOption that specifies the maximum +// (uncompressed) size of header list that the client is prepared to accept. +type MaxHeaderListSizeDialOption struct { + MaxHeaderListSize uint32 +} + +func (o MaxHeaderListSizeDialOption) apply(do *dialOptions) { + do.copts.MaxHeaderListSize = &o.MaxHeaderListSize +} + // WithMaxHeaderListSize returns a DialOption that specifies the maximum // (uncompressed) size of header list that the client is prepared to accept. func WithMaxHeaderListSize(s uint32) DialOption { - return newFuncDialOption(func(o *dialOptions) { - o.copts.MaxHeaderListSize = &s - }) + return MaxHeaderListSizeDialOption{ + MaxHeaderListSize: s, + } } // WithDisableHealthCheck disables the LB channel health checking for all @@ -639,16 +679,17 @@ func defaultDialOptions() dialOptions { WriteBufferSize: defaultWriteBufSize, UseProxy: true, UserAgent: grpcUA, + BufferPool: mem.DefaultBufferPool(), }, bs: internalbackoff.DefaultExponential, healthCheckFunc: internal.HealthCheckFunc, idleTimeout: 30 * time.Minute, - recvBufferPool: nopBufferPool{}, defaultScheme: "dns", + maxCallAttempts: defaultMaxCallAttempts, } } -// withGetMinConnectDeadline specifies the function that clientconn uses to +// withMinConnectDeadline specifies the function that clientconn uses to // get minConnectDeadline. This can be used to make connection attempts happen // faster/slower. // @@ -702,25 +743,25 @@ func WithIdleTimeout(d time.Duration) DialOption { }) } -// WithRecvBufferPool returns a DialOption that configures the ClientConn -// to use the provided shared buffer pool for parsing incoming messages. Depending -// on the application's workload, this could result in reduced memory allocation. -// -// If you are unsure about how to implement a memory pool but want to utilize one, -// begin with grpc.NewSharedBufferPool. -// -// Note: The shared buffer pool feature will not be active if any of the following -// options are used: WithStatsHandler, EnableTracing, or binary logging. In such -// cases, the shared buffer pool will be ignored. +// WithMaxCallAttempts returns a DialOption that configures the maximum number +// of attempts per call (including retries and hedging) using the channel. +// Service owners may specify a higher value for these parameters, but higher +// values will be treated as equal to the maximum value by the client +// implementation. This mitigates security concerns related to the service +// config being transferred to the client via DNS. // -// Deprecated: use experimental.WithRecvBufferPool instead. Will be deleted in -// v1.60.0 or later. -func WithRecvBufferPool(bufferPool SharedBufferPool) DialOption { - return withRecvBufferPool(bufferPool) +// A value of 5 will be used if this dial option is not set or n < 2. +func WithMaxCallAttempts(n int) DialOption { + return newFuncDialOption(func(o *dialOptions) { + if n < 2 { + n = defaultMaxCallAttempts + } + o.maxCallAttempts = n + }) } -func withRecvBufferPool(bufferPool SharedBufferPool) DialOption { +func withBufferPool(bufferPool mem.BufferPool) DialOption { return newFuncDialOption(func(o *dialOptions) { - o.recvBufferPool = bufferPool + o.copts.BufferPool = bufferPool }) } diff --git a/vendor/google.golang.org/grpc/doc.go b/vendor/google.golang.org/grpc/doc.go index 0022859ad..e7b532b6f 100644 --- a/vendor/google.golang.org/grpc/doc.go +++ b/vendor/google.golang.org/grpc/doc.go @@ -16,7 +16,7 @@ * */ -//go:generate ./regenerate.sh +//go:generate ./scripts/regenerate.sh /* Package grpc implements an RPC system called gRPC. diff --git a/vendor/google.golang.org/grpc/encoding/encoding.go b/vendor/google.golang.org/grpc/encoding/encoding.go index 5ebf88d71..11d0ae142 100644 --- a/vendor/google.golang.org/grpc/encoding/encoding.go +++ b/vendor/google.golang.org/grpc/encoding/encoding.go @@ -94,7 +94,7 @@ type Codec interface { Name() string } -var registeredCodecs = make(map[string]Codec) +var registeredCodecs = make(map[string]any) // RegisterCodec registers the provided Codec for use with all gRPC clients and // servers. @@ -126,5 +126,6 @@ func RegisterCodec(codec Codec) { // // The content-subtype is expected to be lowercase. func GetCodec(contentSubtype string) Codec { - return registeredCodecs[contentSubtype] + c, _ := registeredCodecs[contentSubtype].(Codec) + return c } diff --git a/vendor/google.golang.org/grpc/encoding/encoding_v2.go b/vendor/google.golang.org/grpc/encoding/encoding_v2.go new file mode 100644 index 000000000..074c5e234 --- /dev/null +++ b/vendor/google.golang.org/grpc/encoding/encoding_v2.go @@ -0,0 +1,81 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package encoding + +import ( + "strings" + + "google.golang.org/grpc/mem" +) + +// CodecV2 defines the interface gRPC uses to encode and decode messages. Note +// that implementations of this interface must be thread safe; a CodecV2's +// methods can be called from concurrent goroutines. +type CodecV2 interface { + // Marshal returns the wire format of v. The buffers in the returned + // [mem.BufferSlice] must have at least one reference each, which will be freed + // by gRPC when they are no longer needed. + Marshal(v any) (out mem.BufferSlice, err error) + // Unmarshal parses the wire format into v. Note that data will be freed as soon + // as this function returns. If the codec wishes to guarantee access to the data + // after this function, it must take its own reference that it frees when it is + // no longer needed. + Unmarshal(data mem.BufferSlice, v any) error + // Name returns the name of the Codec implementation. The returned string + // will be used as part of content type in transmission. The result must be + // static; the result cannot change between calls. + Name() string +} + +// RegisterCodecV2 registers the provided CodecV2 for use with all gRPC clients and +// servers. +// +// The CodecV2 will be stored and looked up by result of its Name() method, which +// should match the content-subtype of the encoding handled by the CodecV2. This +// is case-insensitive, and is stored and looked up as lowercase. If the +// result of calling Name() is an empty string, RegisterCodecV2 will panic. See +// Content-Type on +// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for +// more details. +// +// If both a Codec and CodecV2 are registered with the same name, the CodecV2 +// will be used. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple Codecs are +// registered with the same name, the one registered last will take effect. +func RegisterCodecV2(codec CodecV2) { + if codec == nil { + panic("cannot register a nil CodecV2") + } + if codec.Name() == "" { + panic("cannot register CodecV2 with empty string result for Name()") + } + contentSubtype := strings.ToLower(codec.Name()) + registeredCodecs[contentSubtype] = codec +} + +// GetCodecV2 gets a registered CodecV2 by content-subtype, or nil if no CodecV2 is +// registered for the content-subtype. +// +// The content-subtype is expected to be lowercase. +func GetCodecV2(contentSubtype string) CodecV2 { + c, _ := registeredCodecs[contentSubtype].(CodecV2) + return c +} diff --git a/vendor/google.golang.org/grpc/encoding/proto/proto.go b/vendor/google.golang.org/grpc/encoding/proto/proto.go index 66d5cdf03..ceec319dd 100644 --- a/vendor/google.golang.org/grpc/encoding/proto/proto.go +++ b/vendor/google.golang.org/grpc/encoding/proto/proto.go @@ -1,6 +1,6 @@ /* * - * Copyright 2018 gRPC authors. + * Copyright 2024 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,6 +24,7 @@ import ( "fmt" "google.golang.org/grpc/encoding" + "google.golang.org/grpc/mem" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/protoadapt" ) @@ -32,28 +33,51 @@ import ( const Name = "proto" func init() { - encoding.RegisterCodec(codec{}) + encoding.RegisterCodecV2(&codecV2{}) } -// codec is a Codec implementation with protobuf. It is the default codec for gRPC. -type codec struct{} +// codec is a CodecV2 implementation with protobuf. It is the default codec for +// gRPC. +type codecV2 struct{} -func (codec) Marshal(v any) ([]byte, error) { +func (c *codecV2) Marshal(v any) (data mem.BufferSlice, err error) { vv := messageV2Of(v) if vv == nil { - return nil, fmt.Errorf("failed to marshal, message is %T, want proto.Message", v) + return nil, fmt.Errorf("proto: failed to marshal, message is %T, want proto.Message", v) } - return proto.Marshal(vv) + size := proto.Size(vv) + if mem.IsBelowBufferPoolingThreshold(size) { + buf, err := proto.Marshal(vv) + if err != nil { + return nil, err + } + data = append(data, mem.SliceBuffer(buf)) + } else { + pool := mem.DefaultBufferPool() + buf := pool.Get(size) + if _, err := (proto.MarshalOptions{}).MarshalAppend((*buf)[:0], vv); err != nil { + pool.Put(buf) + return nil, err + } + data = append(data, mem.NewBuffer(buf, pool)) + } + + return data, nil } -func (codec) Unmarshal(data []byte, v any) error { +func (c *codecV2) Unmarshal(data mem.BufferSlice, v any) (err error) { vv := messageV2Of(v) if vv == nil { return fmt.Errorf("failed to unmarshal, message is %T, want proto.Message", v) } - return proto.Unmarshal(data, vv) + buf := data.MaterializeToBuffer(mem.DefaultBufferPool()) + defer buf.Free() + // TODO: Upgrade proto.Unmarshal to support mem.BufferSlice. Right now, it's not + // really possible without a major overhaul of the proto package, but the + // vtprotobuf library may be able to support this. + return proto.Unmarshal(buf.ReadOnlyData(), vv) } func messageV2Of(v any) proto.Message { @@ -67,6 +91,6 @@ func messageV2Of(v any) proto.Message { return nil } -func (codec) Name() string { +func (c *codecV2) Name() string { return Name } diff --git a/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go new file mode 100644 index 000000000..1d827dd5d --- /dev/null +++ b/vendor/google.golang.org/grpc/experimental/stats/metricregistry.go @@ -0,0 +1,269 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package stats + +import ( + "maps" + + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/internal" +) + +func init() { + internal.SnapshotMetricRegistryForTesting = snapshotMetricsRegistryForTesting +} + +var logger = grpclog.Component("metrics-registry") + +// DefaultMetrics are the default metrics registered through global metrics +// registry. This is written to at initialization time only, and is read only +// after initialization. +var DefaultMetrics = NewMetrics() + +// MetricDescriptor is the data for a registered metric. +type MetricDescriptor struct { + // The name of this metric. This name must be unique across the whole binary + // (including any per call metrics). See + // https://github.com/grpc/proposal/blob/master/A79-non-per-call-metrics-architecture.md#metric-instrument-naming-conventions + // for metric naming conventions. + Name Metric + // The description of this metric. + Description string + // The unit (e.g. entries, seconds) of this metric. + Unit string + // The required label keys for this metric. These are intended to + // metrics emitted from a stats handler. + Labels []string + // The optional label keys for this metric. These are intended to attached + // to metrics emitted from a stats handler if configured. + OptionalLabels []string + // Whether this metric is on by default. + Default bool + // The type of metric. This is set by the metric registry, and not intended + // to be set by a component registering a metric. + Type MetricType + // Bounds are the bounds of this metric. This only applies to histogram + // metrics. If unset or set with length 0, stats handlers will fall back to + // default bounds. + Bounds []float64 +} + +// MetricType is the type of metric. +type MetricType int + +// Type of metric supported by this instrument registry. +const ( + MetricTypeIntCount MetricType = iota + MetricTypeFloatCount + MetricTypeIntHisto + MetricTypeFloatHisto + MetricTypeIntGauge +) + +// Int64CountHandle is a typed handle for a int count metric. This handle +// is passed at the recording point in order to know which metric to record +// on. +type Int64CountHandle MetricDescriptor + +// Descriptor returns the int64 count handle typecast to a pointer to a +// MetricDescriptor. +func (h *Int64CountHandle) Descriptor() *MetricDescriptor { + return (*MetricDescriptor)(h) +} + +// Record records the int64 count value on the metrics recorder provided. +func (h *Int64CountHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) { + recorder.RecordInt64Count(h, incr, labels...) +} + +// Float64CountHandle is a typed handle for a float count metric. This handle is +// passed at the recording point in order to know which metric to record on. +type Float64CountHandle MetricDescriptor + +// Descriptor returns the float64 count handle typecast to a pointer to a +// MetricDescriptor. +func (h *Float64CountHandle) Descriptor() *MetricDescriptor { + return (*MetricDescriptor)(h) +} + +// Record records the float64 count value on the metrics recorder provided. +func (h *Float64CountHandle) Record(recorder MetricsRecorder, incr float64, labels ...string) { + recorder.RecordFloat64Count(h, incr, labels...) +} + +// Int64HistoHandle is a typed handle for an int histogram metric. This handle +// is passed at the recording point in order to know which metric to record on. +type Int64HistoHandle MetricDescriptor + +// Descriptor returns the int64 histo handle typecast to a pointer to a +// MetricDescriptor. +func (h *Int64HistoHandle) Descriptor() *MetricDescriptor { + return (*MetricDescriptor)(h) +} + +// Record records the int64 histo value on the metrics recorder provided. +func (h *Int64HistoHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) { + recorder.RecordInt64Histo(h, incr, labels...) +} + +// Float64HistoHandle is a typed handle for a float histogram metric. This +// handle is passed at the recording point in order to know which metric to +// record on. +type Float64HistoHandle MetricDescriptor + +// Descriptor returns the float64 histo handle typecast to a pointer to a +// MetricDescriptor. +func (h *Float64HistoHandle) Descriptor() *MetricDescriptor { + return (*MetricDescriptor)(h) +} + +// Record records the float64 histo value on the metrics recorder provided. +func (h *Float64HistoHandle) Record(recorder MetricsRecorder, incr float64, labels ...string) { + recorder.RecordFloat64Histo(h, incr, labels...) +} + +// Int64GaugeHandle is a typed handle for an int gauge metric. This handle is +// passed at the recording point in order to know which metric to record on. +type Int64GaugeHandle MetricDescriptor + +// Descriptor returns the int64 gauge handle typecast to a pointer to a +// MetricDescriptor. +func (h *Int64GaugeHandle) Descriptor() *MetricDescriptor { + return (*MetricDescriptor)(h) +} + +// Record records the int64 histo value on the metrics recorder provided. +func (h *Int64GaugeHandle) Record(recorder MetricsRecorder, incr int64, labels ...string) { + recorder.RecordInt64Gauge(h, incr, labels...) +} + +// registeredMetrics are the registered metric descriptor names. +var registeredMetrics = make(map[Metric]bool) + +// metricsRegistry contains all of the registered metrics. +// +// This is written to only at init time, and read only after that. +var metricsRegistry = make(map[Metric]*MetricDescriptor) + +// DescriptorForMetric returns the MetricDescriptor from the global registry. +// +// Returns nil if MetricDescriptor not present. +func DescriptorForMetric(metric Metric) *MetricDescriptor { + return metricsRegistry[metric] +} + +func registerMetric(name Metric, def bool) { + if registeredMetrics[name] { + logger.Fatalf("metric %v already registered", name) + } + registeredMetrics[name] = true + if def { + DefaultMetrics = DefaultMetrics.Add(name) + } +} + +// RegisterInt64Count registers the metric description onto the global registry. +// It returns a typed handle to use to recording data. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple metrics are +// registered with the same name, this function will panic. +func RegisterInt64Count(descriptor MetricDescriptor) *Int64CountHandle { + registerMetric(descriptor.Name, descriptor.Default) + descriptor.Type = MetricTypeIntCount + descPtr := &descriptor + metricsRegistry[descriptor.Name] = descPtr + return (*Int64CountHandle)(descPtr) +} + +// RegisterFloat64Count registers the metric description onto the global +// registry. It returns a typed handle to use to recording data. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple metrics are +// registered with the same name, this function will panic. +func RegisterFloat64Count(descriptor MetricDescriptor) *Float64CountHandle { + registerMetric(descriptor.Name, descriptor.Default) + descriptor.Type = MetricTypeFloatCount + descPtr := &descriptor + metricsRegistry[descriptor.Name] = descPtr + return (*Float64CountHandle)(descPtr) +} + +// RegisterInt64Histo registers the metric description onto the global registry. +// It returns a typed handle to use to recording data. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple metrics are +// registered with the same name, this function will panic. +func RegisterInt64Histo(descriptor MetricDescriptor) *Int64HistoHandle { + registerMetric(descriptor.Name, descriptor.Default) + descriptor.Type = MetricTypeIntHisto + descPtr := &descriptor + metricsRegistry[descriptor.Name] = descPtr + return (*Int64HistoHandle)(descPtr) +} + +// RegisterFloat64Histo registers the metric description onto the global +// registry. It returns a typed handle to use to recording data. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple metrics are +// registered with the same name, this function will panic. +func RegisterFloat64Histo(descriptor MetricDescriptor) *Float64HistoHandle { + registerMetric(descriptor.Name, descriptor.Default) + descriptor.Type = MetricTypeFloatHisto + descPtr := &descriptor + metricsRegistry[descriptor.Name] = descPtr + return (*Float64HistoHandle)(descPtr) +} + +// RegisterInt64Gauge registers the metric description onto the global registry. +// It returns a typed handle to use to recording data. +// +// NOTE: this function must only be called during initialization time (i.e. in +// an init() function), and is not thread-safe. If multiple metrics are +// registered with the same name, this function will panic. +func RegisterInt64Gauge(descriptor MetricDescriptor) *Int64GaugeHandle { + registerMetric(descriptor.Name, descriptor.Default) + descriptor.Type = MetricTypeIntGauge + descPtr := &descriptor + metricsRegistry[descriptor.Name] = descPtr + return (*Int64GaugeHandle)(descPtr) +} + +// snapshotMetricsRegistryForTesting snapshots the global data of the metrics +// registry. Returns a cleanup function that sets the metrics registry to its +// original state. +func snapshotMetricsRegistryForTesting() func() { + oldDefaultMetrics := DefaultMetrics + oldRegisteredMetrics := registeredMetrics + oldMetricsRegistry := metricsRegistry + + registeredMetrics = make(map[Metric]bool) + metricsRegistry = make(map[Metric]*MetricDescriptor) + maps.Copy(registeredMetrics, registeredMetrics) + maps.Copy(metricsRegistry, metricsRegistry) + + return func() { + DefaultMetrics = oldDefaultMetrics + registeredMetrics = oldRegisteredMetrics + metricsRegistry = oldMetricsRegistry + } +} diff --git a/vendor/google.golang.org/grpc/experimental/stats/metrics.go b/vendor/google.golang.org/grpc/experimental/stats/metrics.go new file mode 100644 index 000000000..3221f7a63 --- /dev/null +++ b/vendor/google.golang.org/grpc/experimental/stats/metrics.go @@ -0,0 +1,114 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package stats contains experimental metrics/stats API's. +package stats + +import "maps" + +// MetricsRecorder records on metrics derived from metric registry. +type MetricsRecorder interface { + // RecordInt64Count records the measurement alongside labels on the int + // count associated with the provided handle. + RecordInt64Count(handle *Int64CountHandle, incr int64, labels ...string) + // RecordFloat64Count records the measurement alongside labels on the float + // count associated with the provided handle. + RecordFloat64Count(handle *Float64CountHandle, incr float64, labels ...string) + // RecordInt64Histo records the measurement alongside labels on the int + // histo associated with the provided handle. + RecordInt64Histo(handle *Int64HistoHandle, incr int64, labels ...string) + // RecordFloat64Histo records the measurement alongside labels on the float + // histo associated with the provided handle. + RecordFloat64Histo(handle *Float64HistoHandle, incr float64, labels ...string) + // RecordInt64Gauge records the measurement alongside labels on the int + // gauge associated with the provided handle. + RecordInt64Gauge(handle *Int64GaugeHandle, incr int64, labels ...string) +} + +// Metric is an identifier for a metric. +type Metric string + +// Metrics is a set of metrics to record. Once created, Metrics is immutable, +// however Add and Remove can make copies with specific metrics added or +// removed, respectively. +// +// Do not construct directly; use NewMetrics instead. +type Metrics struct { + // metrics are the set of metrics to initialize. + metrics map[Metric]bool +} + +// NewMetrics returns a Metrics containing Metrics. +func NewMetrics(metrics ...Metric) *Metrics { + newMetrics := make(map[Metric]bool) + for _, metric := range metrics { + newMetrics[metric] = true + } + return &Metrics{ + metrics: newMetrics, + } +} + +// Metrics returns the metrics set. The returned map is read-only and must not +// be modified. +func (m *Metrics) Metrics() map[Metric]bool { + return m.metrics +} + +// Add adds the metrics to the metrics set and returns a new copy with the +// additional metrics. +func (m *Metrics) Add(metrics ...Metric) *Metrics { + newMetrics := make(map[Metric]bool) + for metric := range m.metrics { + newMetrics[metric] = true + } + + for _, metric := range metrics { + newMetrics[metric] = true + } + return &Metrics{ + metrics: newMetrics, + } +} + +// Join joins the metrics passed in with the metrics set, and returns a new copy +// with the merged metrics. +func (m *Metrics) Join(metrics *Metrics) *Metrics { + newMetrics := make(map[Metric]bool) + maps.Copy(newMetrics, m.metrics) + maps.Copy(newMetrics, metrics.metrics) + return &Metrics{ + metrics: newMetrics, + } +} + +// Remove removes the metrics from the metrics set and returns a new copy with +// the metrics removed. +func (m *Metrics) Remove(metrics ...Metric) *Metrics { + newMetrics := make(map[Metric]bool) + for metric := range m.metrics { + newMetrics[metric] = true + } + + for _, metric := range metrics { + delete(newMetrics, metric) + } + return &Metrics{ + metrics: newMetrics, + } +} diff --git a/vendor/google.golang.org/grpc/grpclog/component.go b/vendor/google.golang.org/grpc/grpclog/component.go index ac73c9ced..f1ae080dc 100644 --- a/vendor/google.golang.org/grpc/grpclog/component.go +++ b/vendor/google.golang.org/grpc/grpclog/component.go @@ -20,8 +20,6 @@ package grpclog import ( "fmt" - - "google.golang.org/grpc/internal/grpclog" ) // componentData records the settings for a component. @@ -33,22 +31,22 @@ var cache = map[string]*componentData{} func (c *componentData) InfoDepth(depth int, args ...any) { args = append([]any{"[" + string(c.name) + "]"}, args...) - grpclog.InfoDepth(depth+1, args...) + InfoDepth(depth+1, args...) } func (c *componentData) WarningDepth(depth int, args ...any) { args = append([]any{"[" + string(c.name) + "]"}, args...) - grpclog.WarningDepth(depth+1, args...) + WarningDepth(depth+1, args...) } func (c *componentData) ErrorDepth(depth int, args ...any) { args = append([]any{"[" + string(c.name) + "]"}, args...) - grpclog.ErrorDepth(depth+1, args...) + ErrorDepth(depth+1, args...) } func (c *componentData) FatalDepth(depth int, args ...any) { args = append([]any{"[" + string(c.name) + "]"}, args...) - grpclog.FatalDepth(depth+1, args...) + FatalDepth(depth+1, args...) } func (c *componentData) Info(args ...any) { diff --git a/vendor/google.golang.org/grpc/grpclog/grpclog.go b/vendor/google.golang.org/grpc/grpclog/grpclog.go index 16928c9cb..db320105e 100644 --- a/vendor/google.golang.org/grpc/grpclog/grpclog.go +++ b/vendor/google.golang.org/grpc/grpclog/grpclog.go @@ -18,18 +18,15 @@ // Package grpclog defines logging for grpc. // -// All logs in transport and grpclb packages only go to verbose level 2. -// All logs in other packages in grpc are logged in spite of the verbosity level. -// -// In the default logger, -// severity level can be set by environment variable GRPC_GO_LOG_SEVERITY_LEVEL, -// verbosity level can be set by GRPC_GO_LOG_VERBOSITY_LEVEL. -package grpclog // import "google.golang.org/grpc/grpclog" +// In the default logger, severity level can be set by environment variable +// GRPC_GO_LOG_SEVERITY_LEVEL, verbosity level can be set by +// GRPC_GO_LOG_VERBOSITY_LEVEL. +package grpclog import ( "os" - "google.golang.org/grpc/internal/grpclog" + "google.golang.org/grpc/grpclog/internal" ) func init() { @@ -38,58 +35,58 @@ func init() { // V reports whether verbosity level l is at least the requested verbose level. func V(l int) bool { - return grpclog.Logger.V(l) + return internal.LoggerV2Impl.V(l) } // Info logs to the INFO log. func Info(args ...any) { - grpclog.Logger.Info(args...) + internal.LoggerV2Impl.Info(args...) } // Infof logs to the INFO log. Arguments are handled in the manner of fmt.Printf. func Infof(format string, args ...any) { - grpclog.Logger.Infof(format, args...) + internal.LoggerV2Impl.Infof(format, args...) } // Infoln logs to the INFO log. Arguments are handled in the manner of fmt.Println. func Infoln(args ...any) { - grpclog.Logger.Infoln(args...) + internal.LoggerV2Impl.Infoln(args...) } // Warning logs to the WARNING log. func Warning(args ...any) { - grpclog.Logger.Warning(args...) + internal.LoggerV2Impl.Warning(args...) } // Warningf logs to the WARNING log. Arguments are handled in the manner of fmt.Printf. func Warningf(format string, args ...any) { - grpclog.Logger.Warningf(format, args...) + internal.LoggerV2Impl.Warningf(format, args...) } // Warningln logs to the WARNING log. Arguments are handled in the manner of fmt.Println. func Warningln(args ...any) { - grpclog.Logger.Warningln(args...) + internal.LoggerV2Impl.Warningln(args...) } // Error logs to the ERROR log. func Error(args ...any) { - grpclog.Logger.Error(args...) + internal.LoggerV2Impl.Error(args...) } // Errorf logs to the ERROR log. Arguments are handled in the manner of fmt.Printf. func Errorf(format string, args ...any) { - grpclog.Logger.Errorf(format, args...) + internal.LoggerV2Impl.Errorf(format, args...) } // Errorln logs to the ERROR log. Arguments are handled in the manner of fmt.Println. func Errorln(args ...any) { - grpclog.Logger.Errorln(args...) + internal.LoggerV2Impl.Errorln(args...) } // Fatal logs to the FATAL log. Arguments are handled in the manner of fmt.Print. // It calls os.Exit() with exit code 1. func Fatal(args ...any) { - grpclog.Logger.Fatal(args...) + internal.LoggerV2Impl.Fatal(args...) // Make sure fatal logs will exit. os.Exit(1) } @@ -97,15 +94,15 @@ func Fatal(args ...any) { // Fatalf logs to the FATAL log. Arguments are handled in the manner of fmt.Printf. // It calls os.Exit() with exit code 1. func Fatalf(format string, args ...any) { - grpclog.Logger.Fatalf(format, args...) + internal.LoggerV2Impl.Fatalf(format, args...) // Make sure fatal logs will exit. os.Exit(1) } // Fatalln logs to the FATAL log. Arguments are handled in the manner of fmt.Println. -// It calle os.Exit()) with exit code 1. +// It calls os.Exit() with exit code 1. func Fatalln(args ...any) { - grpclog.Logger.Fatalln(args...) + internal.LoggerV2Impl.Fatalln(args...) // Make sure fatal logs will exit. os.Exit(1) } @@ -114,19 +111,76 @@ func Fatalln(args ...any) { // // Deprecated: use Info. func Print(args ...any) { - grpclog.Logger.Info(args...) + internal.LoggerV2Impl.Info(args...) } // Printf prints to the logger. Arguments are handled in the manner of fmt.Printf. // // Deprecated: use Infof. func Printf(format string, args ...any) { - grpclog.Logger.Infof(format, args...) + internal.LoggerV2Impl.Infof(format, args...) } // Println prints to the logger. Arguments are handled in the manner of fmt.Println. // // Deprecated: use Infoln. func Println(args ...any) { - grpclog.Logger.Infoln(args...) + internal.LoggerV2Impl.Infoln(args...) +} + +// InfoDepth logs to the INFO log at the specified depth. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func InfoDepth(depth int, args ...any) { + if internal.DepthLoggerV2Impl != nil { + internal.DepthLoggerV2Impl.InfoDepth(depth, args...) + } else { + internal.LoggerV2Impl.Infoln(args...) + } +} + +// WarningDepth logs to the WARNING log at the specified depth. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func WarningDepth(depth int, args ...any) { + if internal.DepthLoggerV2Impl != nil { + internal.DepthLoggerV2Impl.WarningDepth(depth, args...) + } else { + internal.LoggerV2Impl.Warningln(args...) + } +} + +// ErrorDepth logs to the ERROR log at the specified depth. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func ErrorDepth(depth int, args ...any) { + if internal.DepthLoggerV2Impl != nil { + internal.DepthLoggerV2Impl.ErrorDepth(depth, args...) + } else { + internal.LoggerV2Impl.Errorln(args...) + } +} + +// FatalDepth logs to the FATAL log at the specified depth. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func FatalDepth(depth int, args ...any) { + if internal.DepthLoggerV2Impl != nil { + internal.DepthLoggerV2Impl.FatalDepth(depth, args...) + } else { + internal.LoggerV2Impl.Fatalln(args...) + } + os.Exit(1) } diff --git a/vendor/google.golang.org/grpc/grpclog/internal/grpclog.go b/vendor/google.golang.org/grpc/grpclog/internal/grpclog.go new file mode 100644 index 000000000..59c03bc14 --- /dev/null +++ b/vendor/google.golang.org/grpc/grpclog/internal/grpclog.go @@ -0,0 +1,26 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package internal contains functionality internal to the grpclog package. +package internal + +// LoggerV2Impl is the logger used for the non-depth log functions. +var LoggerV2Impl LoggerV2 + +// DepthLoggerV2Impl is the logger used for the depth log functions. +var DepthLoggerV2Impl DepthLoggerV2 diff --git a/vendor/google.golang.org/grpc/grpclog/internal/logger.go b/vendor/google.golang.org/grpc/grpclog/internal/logger.go new file mode 100644 index 000000000..e524fdd40 --- /dev/null +++ b/vendor/google.golang.org/grpc/grpclog/internal/logger.go @@ -0,0 +1,87 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package internal + +// Logger mimics golang's standard Logger as an interface. +// +// Deprecated: use LoggerV2. +type Logger interface { + Fatal(args ...any) + Fatalf(format string, args ...any) + Fatalln(args ...any) + Print(args ...any) + Printf(format string, args ...any) + Println(args ...any) +} + +// LoggerWrapper wraps Logger into a LoggerV2. +type LoggerWrapper struct { + Logger +} + +// Info logs to INFO log. Arguments are handled in the manner of fmt.Print. +func (l *LoggerWrapper) Info(args ...any) { + l.Logger.Print(args...) +} + +// Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println. +func (l *LoggerWrapper) Infoln(args ...any) { + l.Logger.Println(args...) +} + +// Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf. +func (l *LoggerWrapper) Infof(format string, args ...any) { + l.Logger.Printf(format, args...) +} + +// Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print. +func (l *LoggerWrapper) Warning(args ...any) { + l.Logger.Print(args...) +} + +// Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println. +func (l *LoggerWrapper) Warningln(args ...any) { + l.Logger.Println(args...) +} + +// Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf. +func (l *LoggerWrapper) Warningf(format string, args ...any) { + l.Logger.Printf(format, args...) +} + +// Error logs to ERROR log. Arguments are handled in the manner of fmt.Print. +func (l *LoggerWrapper) Error(args ...any) { + l.Logger.Print(args...) +} + +// Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println. +func (l *LoggerWrapper) Errorln(args ...any) { + l.Logger.Println(args...) +} + +// Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf. +func (l *LoggerWrapper) Errorf(format string, args ...any) { + l.Logger.Printf(format, args...) +} + +// V reports whether verbosity level l is at least the requested verbose level. +func (*LoggerWrapper) V(int) bool { + // Returns true for all verbose level. + return true +} diff --git a/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go b/vendor/google.golang.org/grpc/grpclog/internal/loggerv2.go similarity index 52% rename from vendor/google.golang.org/grpc/internal/grpclog/grpclog.go rename to vendor/google.golang.org/grpc/grpclog/internal/loggerv2.go index bfc45102a..07df71e98 100644 --- a/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go +++ b/vendor/google.golang.org/grpc/grpclog/internal/loggerv2.go @@ -1,6 +1,6 @@ /* * - * Copyright 2020 gRPC authors. + * Copyright 2024 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,59 +16,17 @@ * */ -// Package grpclog (internal) defines depth logging for grpc. -package grpclog +package internal import ( + "encoding/json" + "fmt" + "io" + "log" "os" ) -// Logger is the logger used for the non-depth log functions. -var Logger LoggerV2 - -// DepthLogger is the logger used for the depth log functions. -var DepthLogger DepthLoggerV2 - -// InfoDepth logs to the INFO log at the specified depth. -func InfoDepth(depth int, args ...any) { - if DepthLogger != nil { - DepthLogger.InfoDepth(depth, args...) - } else { - Logger.Infoln(args...) - } -} - -// WarningDepth logs to the WARNING log at the specified depth. -func WarningDepth(depth int, args ...any) { - if DepthLogger != nil { - DepthLogger.WarningDepth(depth, args...) - } else { - Logger.Warningln(args...) - } -} - -// ErrorDepth logs to the ERROR log at the specified depth. -func ErrorDepth(depth int, args ...any) { - if DepthLogger != nil { - DepthLogger.ErrorDepth(depth, args...) - } else { - Logger.Errorln(args...) - } -} - -// FatalDepth logs to the FATAL log at the specified depth. -func FatalDepth(depth int, args ...any) { - if DepthLogger != nil { - DepthLogger.FatalDepth(depth, args...) - } else { - Logger.Fatalln(args...) - } - os.Exit(1) -} - // LoggerV2 does underlying logging work for grpclog. -// This is a copy of the LoggerV2 defined in the external grpclog package. It -// is defined here to avoid a circular dependency. type LoggerV2 interface { // Info logs to INFO log. Arguments are handled in the manner of fmt.Print. Info(args ...any) @@ -107,14 +65,13 @@ type LoggerV2 interface { // DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements // DepthLoggerV2, the below functions will be called with the appropriate stack // depth set for trivial functions the logger may ignore. -// This is a copy of the DepthLoggerV2 defined in the external grpclog package. -// It is defined here to avoid a circular dependency. // // # Experimental // // Notice: This type is EXPERIMENTAL and may be changed or removed in a // later release. type DepthLoggerV2 interface { + LoggerV2 // InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println. InfoDepth(depth int, args ...any) // WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println. @@ -124,3 +81,124 @@ type DepthLoggerV2 interface { // FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println. FatalDepth(depth int, args ...any) } + +const ( + // infoLog indicates Info severity. + infoLog int = iota + // warningLog indicates Warning severity. + warningLog + // errorLog indicates Error severity. + errorLog + // fatalLog indicates Fatal severity. + fatalLog +) + +// severityName contains the string representation of each severity. +var severityName = []string{ + infoLog: "INFO", + warningLog: "WARNING", + errorLog: "ERROR", + fatalLog: "FATAL", +} + +// loggerT is the default logger used by grpclog. +type loggerT struct { + m []*log.Logger + v int + jsonFormat bool +} + +func (g *loggerT) output(severity int, s string) { + sevStr := severityName[severity] + if !g.jsonFormat { + g.m[severity].Output(2, fmt.Sprintf("%v: %v", sevStr, s)) + return + } + // TODO: we can also include the logging component, but that needs more + // (API) changes. + b, _ := json.Marshal(map[string]string{ + "severity": sevStr, + "message": s, + }) + g.m[severity].Output(2, string(b)) +} + +func (g *loggerT) Info(args ...any) { + g.output(infoLog, fmt.Sprint(args...)) +} + +func (g *loggerT) Infoln(args ...any) { + g.output(infoLog, fmt.Sprintln(args...)) +} + +func (g *loggerT) Infof(format string, args ...any) { + g.output(infoLog, fmt.Sprintf(format, args...)) +} + +func (g *loggerT) Warning(args ...any) { + g.output(warningLog, fmt.Sprint(args...)) +} + +func (g *loggerT) Warningln(args ...any) { + g.output(warningLog, fmt.Sprintln(args...)) +} + +func (g *loggerT) Warningf(format string, args ...any) { + g.output(warningLog, fmt.Sprintf(format, args...)) +} + +func (g *loggerT) Error(args ...any) { + g.output(errorLog, fmt.Sprint(args...)) +} + +func (g *loggerT) Errorln(args ...any) { + g.output(errorLog, fmt.Sprintln(args...)) +} + +func (g *loggerT) Errorf(format string, args ...any) { + g.output(errorLog, fmt.Sprintf(format, args...)) +} + +func (g *loggerT) Fatal(args ...any) { + g.output(fatalLog, fmt.Sprint(args...)) + os.Exit(1) +} + +func (g *loggerT) Fatalln(args ...any) { + g.output(fatalLog, fmt.Sprintln(args...)) + os.Exit(1) +} + +func (g *loggerT) Fatalf(format string, args ...any) { + g.output(fatalLog, fmt.Sprintf(format, args...)) + os.Exit(1) +} + +func (g *loggerT) V(l int) bool { + return l <= g.v +} + +// LoggerV2Config configures the LoggerV2 implementation. +type LoggerV2Config struct { + // Verbosity sets the verbosity level of the logger. + Verbosity int + // FormatJSON controls whether the logger should output logs in JSON format. + FormatJSON bool +} + +// NewLoggerV2 creates a new LoggerV2 instance with the provided configuration. +// The infoW, warningW, and errorW writers are used to write log messages of +// different severity levels. +func NewLoggerV2(infoW, warningW, errorW io.Writer, c LoggerV2Config) LoggerV2 { + var m []*log.Logger + flag := log.LstdFlags + if c.FormatJSON { + flag = 0 + } + m = append(m, log.New(infoW, "", flag)) + m = append(m, log.New(io.MultiWriter(infoW, warningW), "", flag)) + ew := io.MultiWriter(infoW, warningW, errorW) // ew will be used for error and fatal. + m = append(m, log.New(ew, "", flag)) + m = append(m, log.New(ew, "", flag)) + return &loggerT{m: m, v: c.Verbosity, jsonFormat: c.FormatJSON} +} diff --git a/vendor/google.golang.org/grpc/grpclog/logger.go b/vendor/google.golang.org/grpc/grpclog/logger.go index b1674d826..4b2035857 100644 --- a/vendor/google.golang.org/grpc/grpclog/logger.go +++ b/vendor/google.golang.org/grpc/grpclog/logger.go @@ -18,70 +18,17 @@ package grpclog -import "google.golang.org/grpc/internal/grpclog" +import "google.golang.org/grpc/grpclog/internal" // Logger mimics golang's standard Logger as an interface. // // Deprecated: use LoggerV2. -type Logger interface { - Fatal(args ...any) - Fatalf(format string, args ...any) - Fatalln(args ...any) - Print(args ...any) - Printf(format string, args ...any) - Println(args ...any) -} +type Logger internal.Logger // SetLogger sets the logger that is used in grpc. Call only from // init() functions. // // Deprecated: use SetLoggerV2. func SetLogger(l Logger) { - grpclog.Logger = &loggerWrapper{Logger: l} -} - -// loggerWrapper wraps Logger into a LoggerV2. -type loggerWrapper struct { - Logger -} - -func (g *loggerWrapper) Info(args ...any) { - g.Logger.Print(args...) -} - -func (g *loggerWrapper) Infoln(args ...any) { - g.Logger.Println(args...) -} - -func (g *loggerWrapper) Infof(format string, args ...any) { - g.Logger.Printf(format, args...) -} - -func (g *loggerWrapper) Warning(args ...any) { - g.Logger.Print(args...) -} - -func (g *loggerWrapper) Warningln(args ...any) { - g.Logger.Println(args...) -} - -func (g *loggerWrapper) Warningf(format string, args ...any) { - g.Logger.Printf(format, args...) -} - -func (g *loggerWrapper) Error(args ...any) { - g.Logger.Print(args...) -} - -func (g *loggerWrapper) Errorln(args ...any) { - g.Logger.Println(args...) -} - -func (g *loggerWrapper) Errorf(format string, args ...any) { - g.Logger.Printf(format, args...) -} - -func (g *loggerWrapper) V(l int) bool { - // Returns true for all verbose level. - return true + internal.LoggerV2Impl = &internal.LoggerWrapper{Logger: l} } diff --git a/vendor/google.golang.org/grpc/grpclog/loggerv2.go b/vendor/google.golang.org/grpc/grpclog/loggerv2.go index ecfd36d71..892dc13d1 100644 --- a/vendor/google.golang.org/grpc/grpclog/loggerv2.go +++ b/vendor/google.golang.org/grpc/grpclog/loggerv2.go @@ -19,52 +19,16 @@ package grpclog import ( - "encoding/json" - "fmt" "io" - "log" "os" "strconv" "strings" - "google.golang.org/grpc/internal/grpclog" + "google.golang.org/grpc/grpclog/internal" ) // LoggerV2 does underlying logging work for grpclog. -type LoggerV2 interface { - // Info logs to INFO log. Arguments are handled in the manner of fmt.Print. - Info(args ...any) - // Infoln logs to INFO log. Arguments are handled in the manner of fmt.Println. - Infoln(args ...any) - // Infof logs to INFO log. Arguments are handled in the manner of fmt.Printf. - Infof(format string, args ...any) - // Warning logs to WARNING log. Arguments are handled in the manner of fmt.Print. - Warning(args ...any) - // Warningln logs to WARNING log. Arguments are handled in the manner of fmt.Println. - Warningln(args ...any) - // Warningf logs to WARNING log. Arguments are handled in the manner of fmt.Printf. - Warningf(format string, args ...any) - // Error logs to ERROR log. Arguments are handled in the manner of fmt.Print. - Error(args ...any) - // Errorln logs to ERROR log. Arguments are handled in the manner of fmt.Println. - Errorln(args ...any) - // Errorf logs to ERROR log. Arguments are handled in the manner of fmt.Printf. - Errorf(format string, args ...any) - // Fatal logs to ERROR log. Arguments are handled in the manner of fmt.Print. - // gRPC ensures that all Fatal logs will exit with os.Exit(1). - // Implementations may also call os.Exit() with a non-zero exit code. - Fatal(args ...any) - // Fatalln logs to ERROR log. Arguments are handled in the manner of fmt.Println. - // gRPC ensures that all Fatal logs will exit with os.Exit(1). - // Implementations may also call os.Exit() with a non-zero exit code. - Fatalln(args ...any) - // Fatalf logs to ERROR log. Arguments are handled in the manner of fmt.Printf. - // gRPC ensures that all Fatal logs will exit with os.Exit(1). - // Implementations may also call os.Exit() with a non-zero exit code. - Fatalf(format string, args ...any) - // V reports whether verbosity level l is at least the requested verbose level. - V(l int) bool -} +type LoggerV2 internal.LoggerV2 // SetLoggerV2 sets logger that is used in grpc to a V2 logger. // Not mutex-protected, should be called before any gRPC functions. @@ -72,34 +36,8 @@ func SetLoggerV2(l LoggerV2) { if _, ok := l.(*componentData); ok { panic("cannot use component logger as grpclog logger") } - grpclog.Logger = l - grpclog.DepthLogger, _ = l.(grpclog.DepthLoggerV2) -} - -const ( - // infoLog indicates Info severity. - infoLog int = iota - // warningLog indicates Warning severity. - warningLog - // errorLog indicates Error severity. - errorLog - // fatalLog indicates Fatal severity. - fatalLog -) - -// severityName contains the string representation of each severity. -var severityName = []string{ - infoLog: "INFO", - warningLog: "WARNING", - errorLog: "ERROR", - fatalLog: "FATAL", -} - -// loggerT is the default logger used by grpclog. -type loggerT struct { - m []*log.Logger - v int - jsonFormat bool + internal.LoggerV2Impl = l + internal.DepthLoggerV2Impl, _ = l.(internal.DepthLoggerV2) } // NewLoggerV2 creates a loggerV2 with the provided writers. @@ -108,32 +46,13 @@ type loggerT struct { // Warning logs will be written to warningW and infoW. // Info logs will be written to infoW. func NewLoggerV2(infoW, warningW, errorW io.Writer) LoggerV2 { - return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{}) + return internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{}) } // NewLoggerV2WithVerbosity creates a loggerV2 with the provided writers and // verbosity level. func NewLoggerV2WithVerbosity(infoW, warningW, errorW io.Writer, v int) LoggerV2 { - return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{verbose: v}) -} - -type loggerV2Config struct { - verbose int - jsonFormat bool -} - -func newLoggerV2WithConfig(infoW, warningW, errorW io.Writer, c loggerV2Config) LoggerV2 { - var m []*log.Logger - flag := log.LstdFlags - if c.jsonFormat { - flag = 0 - } - m = append(m, log.New(infoW, "", flag)) - m = append(m, log.New(io.MultiWriter(infoW, warningW), "", flag)) - ew := io.MultiWriter(infoW, warningW, errorW) // ew will be used for error and fatal. - m = append(m, log.New(ew, "", flag)) - m = append(m, log.New(ew, "", flag)) - return &loggerT{m: m, v: c.verbose, jsonFormat: c.jsonFormat} + return internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{Verbosity: v}) } // newLoggerV2 creates a loggerV2 to be used as default logger. @@ -161,80 +80,10 @@ func newLoggerV2() LoggerV2 { jsonFormat := strings.EqualFold(os.Getenv("GRPC_GO_LOG_FORMATTER"), "json") - return newLoggerV2WithConfig(infoW, warningW, errorW, loggerV2Config{ - verbose: v, - jsonFormat: jsonFormat, - }) -} - -func (g *loggerT) output(severity int, s string) { - sevStr := severityName[severity] - if !g.jsonFormat { - g.m[severity].Output(2, fmt.Sprintf("%v: %v", sevStr, s)) - return - } - // TODO: we can also include the logging component, but that needs more - // (API) changes. - b, _ := json.Marshal(map[string]string{ - "severity": sevStr, - "message": s, + return internal.NewLoggerV2(infoW, warningW, errorW, internal.LoggerV2Config{ + Verbosity: v, + FormatJSON: jsonFormat, }) - g.m[severity].Output(2, string(b)) -} - -func (g *loggerT) Info(args ...any) { - g.output(infoLog, fmt.Sprint(args...)) -} - -func (g *loggerT) Infoln(args ...any) { - g.output(infoLog, fmt.Sprintln(args...)) -} - -func (g *loggerT) Infof(format string, args ...any) { - g.output(infoLog, fmt.Sprintf(format, args...)) -} - -func (g *loggerT) Warning(args ...any) { - g.output(warningLog, fmt.Sprint(args...)) -} - -func (g *loggerT) Warningln(args ...any) { - g.output(warningLog, fmt.Sprintln(args...)) -} - -func (g *loggerT) Warningf(format string, args ...any) { - g.output(warningLog, fmt.Sprintf(format, args...)) -} - -func (g *loggerT) Error(args ...any) { - g.output(errorLog, fmt.Sprint(args...)) -} - -func (g *loggerT) Errorln(args ...any) { - g.output(errorLog, fmt.Sprintln(args...)) -} - -func (g *loggerT) Errorf(format string, args ...any) { - g.output(errorLog, fmt.Sprintf(format, args...)) -} - -func (g *loggerT) Fatal(args ...any) { - g.output(fatalLog, fmt.Sprint(args...)) - os.Exit(1) -} - -func (g *loggerT) Fatalln(args ...any) { - g.output(fatalLog, fmt.Sprintln(args...)) - os.Exit(1) -} - -func (g *loggerT) Fatalf(format string, args ...any) { - g.output(fatalLog, fmt.Sprintf(format, args...)) - os.Exit(1) -} - -func (g *loggerT) V(l int) bool { - return l <= g.v } // DepthLoggerV2 logs at a specified call frame. If a LoggerV2 also implements @@ -245,14 +94,4 @@ func (g *loggerT) V(l int) bool { // // Notice: This type is EXPERIMENTAL and may be changed or removed in a // later release. -type DepthLoggerV2 interface { - LoggerV2 - // InfoDepth logs to INFO log at the specified depth. Arguments are handled in the manner of fmt.Println. - InfoDepth(depth int, args ...any) - // WarningDepth logs to WARNING log at the specified depth. Arguments are handled in the manner of fmt.Println. - WarningDepth(depth int, args ...any) - // ErrorDepth logs to ERROR log at the specified depth. Arguments are handled in the manner of fmt.Println. - ErrorDepth(depth int, args ...any) - // FatalDepth logs to FATAL log at the specified depth. Arguments are handled in the manner of fmt.Println. - FatalDepth(depth int, args ...any) -} +type DepthLoggerV2 internal.DepthLoggerV2 diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go index 5bf880d41..d92335445 100644 --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go +++ b/vendor/google.golang.org/grpc/health/grpc_health_v1/health.pb.go @@ -17,8 +17,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.32.0 -// protoc v4.25.2 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: grpc/health/v1/health.proto package grpc_health_v1 @@ -237,7 +237,7 @@ func file_grpc_health_v1_health_proto_rawDescGZIP() []byte { var file_grpc_health_v1_health_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_grpc_health_v1_health_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_grpc_health_v1_health_proto_goTypes = []interface{}{ +var file_grpc_health_v1_health_proto_goTypes = []any{ (HealthCheckResponse_ServingStatus)(0), // 0: grpc.health.v1.HealthCheckResponse.ServingStatus (*HealthCheckRequest)(nil), // 1: grpc.health.v1.HealthCheckRequest (*HealthCheckResponse)(nil), // 2: grpc.health.v1.HealthCheckResponse @@ -261,7 +261,7 @@ func file_grpc_health_v1_health_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_grpc_health_v1_health_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_grpc_health_v1_health_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*HealthCheckRequest); i { case 0: return &v.state @@ -273,7 +273,7 @@ func file_grpc_health_v1_health_proto_init() { return nil } } - file_grpc_health_v1_health_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_grpc_health_v1_health_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*HealthCheckResponse); i { case 0: return &v.state diff --git a/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go b/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go index 4c46c098d..f96b8ab49 100644 --- a/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go +++ b/vendor/google.golang.org/grpc/health/grpc_health_v1/health_grpc.pb.go @@ -17,8 +17,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.2 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.27.1 // source: grpc/health/v1/health.proto package grpc_health_v1 @@ -32,8 +32,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Health_Check_FullMethodName = "/grpc.health.v1.Health/Check" @@ -43,6 +43,10 @@ const ( // HealthClient is the client API for Health service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Health is gRPC's mechanism for checking whether a server is able to handle +// RPCs. Its semantics are documented in +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md. type HealthClient interface { // Check gets the health of the specified service. If the requested service // is unknown, the call will fail with status NOT_FOUND. If the caller does @@ -69,7 +73,7 @@ type HealthClient interface { // should assume this method is not supported and should not retry the // call. If the call terminates with any other status (including OK), // clients should retry the call with appropriate exponential backoff. - Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) + Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[HealthCheckResponse], error) } type healthClient struct { @@ -81,20 +85,22 @@ func NewHealthClient(cc grpc.ClientConnInterface) HealthClient { } func (c *healthClient) Check(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (*HealthCheckResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(HealthCheckResponse) - err := c.cc.Invoke(ctx, Health_Check_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Health_Check_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (Health_WatchClient, error) { - stream, err := c.cc.NewStream(ctx, &Health_ServiceDesc.Streams[0], Health_Watch_FullMethodName, opts...) +func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[HealthCheckResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Health_ServiceDesc.Streams[0], Health_Watch_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &healthWatchClient{stream} + x := &grpc.GenericClientStream[HealthCheckRequest, HealthCheckResponse]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -104,26 +110,16 @@ func (c *healthClient) Watch(ctx context.Context, in *HealthCheckRequest, opts . return x, nil } -type Health_WatchClient interface { - Recv() (*HealthCheckResponse, error) - grpc.ClientStream -} - -type healthWatchClient struct { - grpc.ClientStream -} - -func (x *healthWatchClient) Recv() (*HealthCheckResponse, error) { - m := new(HealthCheckResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Health_WatchClient = grpc.ServerStreamingClient[HealthCheckResponse] // HealthServer is the server API for Health service. // All implementations should embed UnimplementedHealthServer -// for forward compatibility +// for forward compatibility. +// +// Health is gRPC's mechanism for checking whether a server is able to handle +// RPCs. Its semantics are documented in +// https://github.com/grpc/grpc/blob/master/doc/health-checking.md. type HealthServer interface { // Check gets the health of the specified service. If the requested service // is unknown, the call will fail with status NOT_FOUND. If the caller does @@ -150,19 +146,23 @@ type HealthServer interface { // should assume this method is not supported and should not retry the // call. If the call terminates with any other status (including OK), // clients should retry the call with appropriate exponential backoff. - Watch(*HealthCheckRequest, Health_WatchServer) error + Watch(*HealthCheckRequest, grpc.ServerStreamingServer[HealthCheckResponse]) error } -// UnimplementedHealthServer should be embedded to have forward compatible implementations. -type UnimplementedHealthServer struct { -} +// UnimplementedHealthServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedHealthServer struct{} func (UnimplementedHealthServer) Check(context.Context, *HealthCheckRequest) (*HealthCheckResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Check not implemented") } -func (UnimplementedHealthServer) Watch(*HealthCheckRequest, Health_WatchServer) error { +func (UnimplementedHealthServer) Watch(*HealthCheckRequest, grpc.ServerStreamingServer[HealthCheckResponse]) error { return status.Errorf(codes.Unimplemented, "method Watch not implemented") } +func (UnimplementedHealthServer) testEmbeddedByValue() {} // UnsafeHealthServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to HealthServer will @@ -172,6 +172,13 @@ type UnsafeHealthServer interface { } func RegisterHealthServer(s grpc.ServiceRegistrar, srv HealthServer) { + // If the following call panics, it indicates UnimplementedHealthServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Health_ServiceDesc, srv) } @@ -198,21 +205,11 @@ func _Health_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { if err := stream.RecvMsg(m); err != nil { return err } - return srv.(HealthServer).Watch(m, &healthWatchServer{stream}) -} - -type Health_WatchServer interface { - Send(*HealthCheckResponse) error - grpc.ServerStream -} - -type healthWatchServer struct { - grpc.ServerStream + return srv.(HealthServer).Watch(m, &grpc.GenericServerStream[HealthCheckRequest, HealthCheckResponse]{ServerStream: stream}) } -func (x *healthWatchServer) Send(m *HealthCheckResponse) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Health_WatchServer = grpc.ServerStreamingServer[HealthCheckResponse] // Health_ServiceDesc is the grpc.ServiceDesc for Health service. // It's only intended for direct use with grpc.RegisterService, diff --git a/vendor/google.golang.org/grpc/health/server.go b/vendor/google.golang.org/grpc/health/server.go index cce6312d7..d4b4b7081 100644 --- a/vendor/google.golang.org/grpc/health/server.go +++ b/vendor/google.golang.org/grpc/health/server.go @@ -51,7 +51,7 @@ func NewServer() *Server { } // Check implements `service Health`. -func (s *Server) Check(ctx context.Context, in *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) { +func (s *Server) Check(_ context.Context, in *healthpb.HealthCheckRequest) (*healthpb.HealthCheckResponse, error) { s.mu.RLock() defer s.mu.RUnlock() if servingStatus, ok := s.statusMap[in.Service]; ok { diff --git a/vendor/google.golang.org/grpc/internal/backoff/backoff.go b/vendor/google.golang.org/grpc/internal/backoff/backoff.go index fed1c011a..b15cf482d 100644 --- a/vendor/google.golang.org/grpc/internal/backoff/backoff.go +++ b/vendor/google.golang.org/grpc/internal/backoff/backoff.go @@ -25,10 +25,10 @@ package backoff import ( "context" "errors" + "math/rand" "time" grpcbackoff "google.golang.org/grpc/backoff" - "google.golang.org/grpc/internal/grpcrand" ) // Strategy defines the methodology for backing off after a grpc connection @@ -67,7 +67,7 @@ func (bc Exponential) Backoff(retries int) time.Duration { } // Randomize backoff delays so that if a cluster of requests start at // the same time, they won't operate in lockstep. - backoff *= 1 + bc.Config.Jitter*(grpcrand.Float64()*2-1) + backoff *= 1 + bc.Config.Jitter*(rand.Float64()*2-1) if backoff < 0 { return 0 } diff --git a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go index 6bf7f8739..13821a926 100644 --- a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go +++ b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/config.go @@ -75,7 +75,6 @@ func ParseConfig(cfg json.RawMessage) (serviceconfig.LoadBalancingConfig, error) if err != nil { return nil, fmt.Errorf("error parsing config for policy %q: %v", name, err) } - return &lbConfig{childBuilder: builder, childConfig: cfg}, nil } diff --git a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go index 45d5e50ea..73bb4c4ee 100644 --- a/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go +++ b/vendor/google.golang.org/grpc/internal/balancer/gracefulswitch/gracefulswitch.go @@ -169,7 +169,6 @@ func (gsb *Balancer) latestBalancer() *balancerWrapper { func (gsb *Balancer) UpdateClientConnState(state balancer.ClientConnState) error { // The resolver data is only relevant to the most recent LB Policy. balToUpdate := gsb.latestBalancer() - gsbCfg, ok := state.BalancerConfig.(*lbConfig) if ok { // Switch to the child in the config unless it is already active. diff --git a/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go index e8456a77c..966932891 100644 --- a/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go +++ b/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go @@ -65,7 +65,7 @@ type TruncatingMethodLogger struct { callID uint64 idWithinCallGen *callIDGenerator - sink Sink // TODO(blog): make this plugable. + sink Sink // TODO(blog): make this pluggable. } // NewTruncatingMethodLogger returns a new truncating method logger. @@ -80,7 +80,7 @@ func NewTruncatingMethodLogger(h, m uint64) *TruncatingMethodLogger { callID: idGen.next(), idWithinCallGen: &callIDGenerator{}, - sink: DefaultSink, // TODO(blog): make it plugable. + sink: DefaultSink, // TODO(blog): make it pluggable. } } @@ -106,7 +106,7 @@ func (ml *TruncatingMethodLogger) Build(c LogEntryConfig) *binlogpb.GrpcLogEntry } // Log creates a proto binary log entry, and logs it to the sink. -func (ml *TruncatingMethodLogger) Log(ctx context.Context, c LogEntryConfig) { +func (ml *TruncatingMethodLogger) Log(_ context.Context, c LogEntryConfig) { ml.sink.Write(ml.Build(c)) } @@ -397,7 +397,7 @@ func metadataKeyOmit(key string) bool { switch key { case "lb-token", ":path", ":authority", "content-encoding", "content-type", "user-agent", "te": return true - case "grpc-trace-bin": // grpc-trace-bin is special because it's visiable to users. + case "grpc-trace-bin": // grpc-trace-bin is special because it's visible to users. return false } return strings.HasPrefix(key, "grpc-") diff --git a/vendor/google.golang.org/grpc/internal/channelz/channelmap.go b/vendor/google.golang.org/grpc/internal/channelz/channelmap.go index dfe18b089..64c791953 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/channelmap.go +++ b/vendor/google.golang.org/grpc/internal/channelz/channelmap.go @@ -46,7 +46,7 @@ type entry interface { // channelMap is the storage data structure for channelz. // -// Methods of channelMap can be divided in two two categories with respect to +// Methods of channelMap can be divided into two categories with respect to // locking. // // 1. Methods acquire the global lock. @@ -234,13 +234,6 @@ func copyMap(m map[int64]string) map[int64]string { return n } -func min(a, b int) int { - if a < b { - return a - } - return b -} - func (c *channelMap) getTopChannels(id int64, maxResults int) ([]*Channel, bool) { if maxResults <= 0 { maxResults = EntriesPerPage diff --git a/vendor/google.golang.org/grpc/internal/channelz/funcs.go b/vendor/google.golang.org/grpc/internal/channelz/funcs.go index 03e24e150..078bb8123 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/funcs.go +++ b/vendor/google.golang.org/grpc/internal/channelz/funcs.go @@ -33,7 +33,7 @@ var ( // outside this package except by tests. IDGen IDGenerator - db *channelMap = newChannelMap() + db = newChannelMap() // EntriesPerPage defines the number of channelz entries to be shown on a web page. EntriesPerPage = 50 curState int32 diff --git a/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go b/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go index d1ed8df6a..0e6e18e18 100644 --- a/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go +++ b/vendor/google.golang.org/grpc/internal/channelz/syscall_nonlinux.go @@ -35,13 +35,13 @@ type SocketOptionData struct { // Getsockopt defines the function to get socket options requested by channelz. // It is to be passed to syscall.RawConn.Control(). // Windows OS doesn't support Socket Option -func (s *SocketOptionData) Getsockopt(fd uintptr) { +func (s *SocketOptionData) Getsockopt(uintptr) { once.Do(func() { logger.Warning("Channelz: socket options are not supported on non-linux environments") }) } // GetSocketOption gets the socket option info of the conn. -func GetSocketOption(c any) *SocketOptionData { +func GetSocketOption(any) *SocketOptionData { return nil } diff --git a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go index 685a3cb41..452985f8d 100644 --- a/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +++ b/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go @@ -28,9 +28,6 @@ import ( var ( // TXTErrIgnore is set if TXT errors should be ignored ("GRPC_GO_IGNORE_TXT_ERRORS" is not "false"). TXTErrIgnore = boolFromEnv("GRPC_GO_IGNORE_TXT_ERRORS", true) - // AdvertiseCompressors is set if registered compressor should be advertised - // ("GRPC_GO_ADVERTISE_COMPRESSORS" is not "false"). - AdvertiseCompressors = boolFromEnv("GRPC_GO_ADVERTISE_COMPRESSORS", true) // RingHashCap indicates the maximum ring size which defaults to 4096 // entries but may be overridden by setting the environment variable // "GRPC_RING_HASH_CAP". This does not override the default bounds @@ -43,6 +40,16 @@ var ( // ALTSMaxConcurrentHandshakes is the maximum number of concurrent ALTS // handshakes that can be performed. ALTSMaxConcurrentHandshakes = uint64FromEnv("GRPC_ALTS_MAX_CONCURRENT_HANDSHAKES", 100, 1, 100) + // EnforceALPNEnabled is set if TLS connections to servers with ALPN disabled + // should be rejected. The HTTP/2 protocol requires ALPN to be enabled, this + // option is present for backward compatibility. This option may be overridden + // by setting the environment variable "GRPC_ENFORCE_ALPN_ENABLED" to "true" + // or "false". + EnforceALPNEnabled = boolFromEnv("GRPC_ENFORCE_ALPN_ENABLED", true) + // XDSFallbackSupport is the env variable that controls whether support for + // xDS fallback is turned on. If this is unset or is false, only the first + // xDS server in the list of server configs will be used. + XDSFallbackSupport = boolFromEnv("GRPC_EXPERIMENTAL_XDS_FALLBACK", false) ) func boolFromEnv(envVar string, def bool) bool { diff --git a/vendor/google.golang.org/grpc/internal/experimental.go b/vendor/google.golang.org/grpc/internal/experimental.go index 7f7044e17..7617be215 100644 --- a/vendor/google.golang.org/grpc/internal/experimental.go +++ b/vendor/google.golang.org/grpc/internal/experimental.go @@ -18,11 +18,11 @@ package internal var ( - // WithRecvBufferPool is implemented by the grpc package and returns a dial + // WithBufferPool is implemented by the grpc package and returns a dial // option to configure a shared buffer pool for a grpc.ClientConn. - WithRecvBufferPool any // func (grpc.SharedBufferPool) grpc.DialOption + WithBufferPool any // func (grpc.SharedBufferPool) grpc.DialOption - // RecvBufferPool is implemented by the grpc package and returns a server + // BufferPool is implemented by the grpc package and returns a server // option to configure a shared buffer pool for a grpc.Server. - RecvBufferPool any // func (grpc.SharedBufferPool) grpc.ServerOption + BufferPool any // func (grpc.SharedBufferPool) grpc.ServerOption ) diff --git a/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go b/vendor/google.golang.org/grpc/internal/grpclog/prefix_logger.go similarity index 63% rename from vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go rename to vendor/google.golang.org/grpc/internal/grpclog/prefix_logger.go index faa998de7..092ad187a 100644 --- a/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go +++ b/vendor/google.golang.org/grpc/internal/grpclog/prefix_logger.go @@ -16,17 +16,21 @@ * */ +// Package grpclog provides logging functionality for internal gRPC packages, +// outside of the functionality provided by the external `grpclog` package. package grpclog import ( "fmt" + + "google.golang.org/grpc/grpclog" ) // PrefixLogger does logging with a prefix. // // Logging method on a nil logs without any prefix. type PrefixLogger struct { - logger DepthLoggerV2 + logger grpclog.DepthLoggerV2 prefix string } @@ -38,7 +42,7 @@ func (pl *PrefixLogger) Infof(format string, args ...any) { pl.logger.InfoDepth(1, fmt.Sprintf(format, args...)) return } - InfoDepth(1, fmt.Sprintf(format, args...)) + grpclog.InfoDepth(1, fmt.Sprintf(format, args...)) } // Warningf does warning logging. @@ -48,7 +52,7 @@ func (pl *PrefixLogger) Warningf(format string, args ...any) { pl.logger.WarningDepth(1, fmt.Sprintf(format, args...)) return } - WarningDepth(1, fmt.Sprintf(format, args...)) + grpclog.WarningDepth(1, fmt.Sprintf(format, args...)) } // Errorf does error logging. @@ -58,36 +62,18 @@ func (pl *PrefixLogger) Errorf(format string, args ...any) { pl.logger.ErrorDepth(1, fmt.Sprintf(format, args...)) return } - ErrorDepth(1, fmt.Sprintf(format, args...)) -} - -// Debugf does info logging at verbose level 2. -func (pl *PrefixLogger) Debugf(format string, args ...any) { - // TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe - // rewrite PrefixLogger a little to ensure that we don't use the global - // `Logger` here, and instead use the `logger` field. - if !Logger.V(2) { - return - } - if pl != nil { - // Handle nil, so the tests can pass in a nil logger. - format = pl.prefix + format - pl.logger.InfoDepth(1, fmt.Sprintf(format, args...)) - return - } - InfoDepth(1, fmt.Sprintf(format, args...)) - + grpclog.ErrorDepth(1, fmt.Sprintf(format, args...)) } // V reports whether verbosity level l is at least the requested verbose level. func (pl *PrefixLogger) V(l int) bool { - // TODO(6044): Refactor interfaces LoggerV2 and DepthLogger, and maybe - // rewrite PrefixLogger a little to ensure that we don't use the global - // `Logger` here, and instead use the `logger` field. - return Logger.V(l) + if pl != nil { + return pl.logger.V(l) + } + return true } // NewPrefixLogger creates a prefix logger with the given prefix. -func NewPrefixLogger(logger DepthLoggerV2, prefix string) *PrefixLogger { +func NewPrefixLogger(logger grpclog.DepthLoggerV2, prefix string) *PrefixLogger { return &PrefixLogger{logger: logger, prefix: prefix} } diff --git a/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go deleted file mode 100644 index 0126d6b51..000000000 --- a/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go +++ /dev/null @@ -1,100 +0,0 @@ -//go:build !go1.21 - -// TODO: when this file is deleted (after Go 1.20 support is dropped), delete -// all of grpcrand and call the rand package directly. - -/* - * - * Copyright 2018 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package grpcrand implements math/rand functions in a concurrent-safe way -// with a global random source, independent of math/rand's global source. -package grpcrand - -import ( - "math/rand" - "sync" - "time" -) - -var ( - r = rand.New(rand.NewSource(time.Now().UnixNano())) - mu sync.Mutex -) - -// Int implements rand.Int on the grpcrand global source. -func Int() int { - mu.Lock() - defer mu.Unlock() - return r.Int() -} - -// Int63n implements rand.Int63n on the grpcrand global source. -func Int63n(n int64) int64 { - mu.Lock() - defer mu.Unlock() - return r.Int63n(n) -} - -// Intn implements rand.Intn on the grpcrand global source. -func Intn(n int) int { - mu.Lock() - defer mu.Unlock() - return r.Intn(n) -} - -// Int31n implements rand.Int31n on the grpcrand global source. -func Int31n(n int32) int32 { - mu.Lock() - defer mu.Unlock() - return r.Int31n(n) -} - -// Float64 implements rand.Float64 on the grpcrand global source. -func Float64() float64 { - mu.Lock() - defer mu.Unlock() - return r.Float64() -} - -// Uint64 implements rand.Uint64 on the grpcrand global source. -func Uint64() uint64 { - mu.Lock() - defer mu.Unlock() - return r.Uint64() -} - -// Uint32 implements rand.Uint32 on the grpcrand global source. -func Uint32() uint32 { - mu.Lock() - defer mu.Unlock() - return r.Uint32() -} - -// ExpFloat64 implements rand.ExpFloat64 on the grpcrand global source. -func ExpFloat64() float64 { - mu.Lock() - defer mu.Unlock() - return r.ExpFloat64() -} - -// Shuffle implements rand.Shuffle on the grpcrand global source. -var Shuffle = func(n int, f func(int, int)) { - mu.Lock() - defer mu.Unlock() - r.Shuffle(n, f) -} diff --git a/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand_go1.21.go b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand_go1.21.go deleted file mode 100644 index c37299af1..000000000 --- a/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand_go1.21.go +++ /dev/null @@ -1,73 +0,0 @@ -//go:build go1.21 - -/* - * - * Copyright 2024 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// Package grpcrand implements math/rand functions in a concurrent-safe way -// with a global random source, independent of math/rand's global source. -package grpcrand - -import "math/rand" - -// This implementation will be used for Go version 1.21 or newer. -// For older versions, the original implementation with mutex will be used. - -// Int implements rand.Int on the grpcrand global source. -func Int() int { - return rand.Int() -} - -// Int63n implements rand.Int63n on the grpcrand global source. -func Int63n(n int64) int64 { - return rand.Int63n(n) -} - -// Intn implements rand.Intn on the grpcrand global source. -func Intn(n int) int { - return rand.Intn(n) -} - -// Int31n implements rand.Int31n on the grpcrand global source. -func Int31n(n int32) int32 { - return rand.Int31n(n) -} - -// Float64 implements rand.Float64 on the grpcrand global source. -func Float64() float64 { - return rand.Float64() -} - -// Uint64 implements rand.Uint64 on the grpcrand global source. -func Uint64() uint64 { - return rand.Uint64() -} - -// Uint32 implements rand.Uint32 on the grpcrand global source. -func Uint32() uint32 { - return rand.Uint32() -} - -// ExpFloat64 implements rand.ExpFloat64 on the grpcrand global source. -func ExpFloat64() float64 { - return rand.ExpFloat64() -} - -// Shuffle implements rand.Shuffle on the grpcrand global source. -var Shuffle = func(n int, f func(int, int)) { - rand.Shuffle(n, f) -} diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go index f7f40a16a..19b9d6392 100644 --- a/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go +++ b/vendor/google.golang.org/grpc/internal/grpcsync/callback_serializer.go @@ -53,16 +53,28 @@ func NewCallbackSerializer(ctx context.Context) *CallbackSerializer { return cs } -// Schedule adds a callback to be scheduled after existing callbacks are run. +// TrySchedule tries to schedules the provided callback function f to be +// executed in the order it was added. This is a best-effort operation. If the +// context passed to NewCallbackSerializer was canceled before this method is +// called, the callback will not be scheduled. // // Callbacks are expected to honor the context when performing any blocking // operations, and should return early when the context is canceled. +func (cs *CallbackSerializer) TrySchedule(f func(ctx context.Context)) { + cs.callbacks.Put(f) +} + +// ScheduleOr schedules the provided callback function f to be executed in the +// order it was added. If the context passed to NewCallbackSerializer has been +// canceled before this method is called, the onFailure callback will be +// executed inline instead. // -// Return value indicates if the callback was successfully added to the list of -// callbacks to be executed by the serializer. It is not possible to add -// callbacks once the context passed to NewCallbackSerializer is cancelled. -func (cs *CallbackSerializer) Schedule(f func(ctx context.Context)) bool { - return cs.callbacks.Put(f) == nil +// Callbacks are expected to honor the context when performing any blocking +// operations, and should return early when the context is canceled. +func (cs *CallbackSerializer) ScheduleOr(f func(ctx context.Context), onFailure func()) { + if cs.callbacks.Put(f) != nil { + onFailure() + } } func (cs *CallbackSerializer) run(ctx context.Context) { diff --git a/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go b/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go index aef8cec1a..6d8c2f518 100644 --- a/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go +++ b/vendor/google.golang.org/grpc/internal/grpcsync/pubsub.go @@ -77,7 +77,7 @@ func (ps *PubSub) Subscribe(sub Subscriber) (cancel func()) { if ps.msg != nil { msg := ps.msg - ps.cs.Schedule(func(context.Context) { + ps.cs.TrySchedule(func(context.Context) { ps.mu.Lock() defer ps.mu.Unlock() if !ps.subscribers[sub] { @@ -103,7 +103,7 @@ func (ps *PubSub) Publish(msg any) { ps.msg = msg for sub := range ps.subscribers { s := sub - ps.cs.Schedule(func(context.Context) { + ps.cs.TrySchedule(func(context.Context) { ps.mu.Lock() defer ps.mu.Unlock() if !ps.subscribers[s] { diff --git a/vendor/google.golang.org/grpc/internal/grpcutil/compressor.go b/vendor/google.golang.org/grpc/internal/grpcutil/compressor.go index 9f4090967..e8d866984 100644 --- a/vendor/google.golang.org/grpc/internal/grpcutil/compressor.go +++ b/vendor/google.golang.org/grpc/internal/grpcutil/compressor.go @@ -20,8 +20,6 @@ package grpcutil import ( "strings" - - "google.golang.org/grpc/internal/envconfig" ) // RegisteredCompressorNames holds names of the registered compressors. @@ -40,8 +38,5 @@ func IsCompressorNameRegistered(name string) bool { // RegisteredCompressors returns a string of registered compressor names // separated by comma. func RegisteredCompressors() string { - if !envconfig.AdvertiseCompressors { - return "" - } return strings.Join(RegisteredCompressorNames, ",") } diff --git a/vendor/google.golang.org/grpc/internal/internal.go b/vendor/google.golang.org/grpc/internal/internal.go index 48d24bdb4..7aae9240f 100644 --- a/vendor/google.golang.org/grpc/internal/internal.go +++ b/vendor/google.golang.org/grpc/internal/internal.go @@ -106,6 +106,14 @@ var ( // This is used in the 1.0 release of gcp/observability, and thus must not be // deleted or changed. ClearGlobalDialOptions func() + + // AddGlobalPerTargetDialOptions adds a PerTargetDialOption that will be + // configured for newly created ClientConns. + AddGlobalPerTargetDialOptions any // func (opt any) + // ClearGlobalPerTargetDialOptions clears the slice of global late apply + // dial options. + ClearGlobalPerTargetDialOptions func() + // JoinDialOptions combines the dial options passed as arguments into a // single dial option. JoinDialOptions any // func(...grpc.DialOption) grpc.DialOption @@ -126,7 +134,8 @@ var ( // deleted or changed. BinaryLogger any // func(binarylog.Logger) grpc.ServerOption - // SubscribeToConnectivityStateChanges adds a grpcsync.Subscriber to a provided grpc.ClientConn + // SubscribeToConnectivityStateChanges adds a grpcsync.Subscriber to a + // provided grpc.ClientConn. SubscribeToConnectivityStateChanges any // func(*grpc.ClientConn, grpcsync.Subscriber) // NewXDSResolverWithConfigForTesting creates a new xds resolver builder using @@ -174,7 +183,7 @@ var ( // GRPCResolverSchemeExtraMetadata determines when gRPC will add extra // metadata to RPCs. - GRPCResolverSchemeExtraMetadata string = "xds" + GRPCResolverSchemeExtraMetadata = "xds" // EnterIdleModeForTesting gets the ClientConn to enter IDLE mode. EnterIdleModeForTesting any // func(*grpc.ClientConn) @@ -184,25 +193,45 @@ var ( ChannelzTurnOffForTesting func() - // TriggerXDSResourceNameNotFoundForTesting triggers the resource-not-found - // error for a given resource type and name. This is usually triggered when - // the associated watch timer fires. For testing purposes, having this - // function makes events more predictable than relying on timer events. - TriggerXDSResourceNameNotFoundForTesting any // func(func(xdsresource.Type, string), string, string) error - - // TriggerXDSResourceNameNotFoundClient invokes the testing xDS Client - // singleton to invoke resource not found for a resource type name and - // resource name. - TriggerXDSResourceNameNotFoundClient any // func(string, string) error + // TriggerXDSResourceNotFoundForTesting causes the provided xDS Client to + // invoke resource-not-found error for the given resource type and name. + TriggerXDSResourceNotFoundForTesting any // func(xdsclient.XDSClient, xdsresource.Type, string) error - // FromOutgoingContextRaw returns the un-merged, intermediary contents of metadata.rawMD. + // FromOutgoingContextRaw returns the un-merged, intermediary contents of + // metadata.rawMD. FromOutgoingContextRaw any // func(context.Context) (metadata.MD, [][]string, bool) - // UserSetDefaultScheme is set to true if the user has overridden the default resolver scheme. - UserSetDefaultScheme bool = false + // UserSetDefaultScheme is set to true if the user has overridden the + // default resolver scheme. + UserSetDefaultScheme = false + + // ShuffleAddressListForTesting pseudo-randomizes the order of addresses. n + // is the number of elements. swap swaps the elements with indexes i and j. + ShuffleAddressListForTesting any // func(n int, swap func(i, j int)) + + // ConnectedAddress returns the connected address for a SubConnState. The + // address is only valid if the state is READY. + ConnectedAddress any // func (scs SubConnState) resolver.Address + + // SetConnectedAddress sets the connected address for a SubConnState. + SetConnectedAddress any // func(scs *SubConnState, addr resolver.Address) + + // SnapshotMetricRegistryForTesting snapshots the global data of the metric + // registry. Returns a cleanup function that sets the metric registry to its + // original state. Only called in testing functions. + SnapshotMetricRegistryForTesting func() func() + + // SetDefaultBufferPoolForTesting updates the default buffer pool, for + // testing purposes. + SetDefaultBufferPoolForTesting any // func(mem.BufferPool) + + // SetBufferPoolingThresholdForTesting updates the buffer pooling threshold, for + // testing purposes. + SetBufferPoolingThresholdForTesting any // func(int) ) -// HealthChecker defines the signature of the client-side LB channel health checking function. +// HealthChecker defines the signature of the client-side LB channel health +// checking function. // // The implementation is expected to create a health checking RPC stream by // calling newStream(), watch for the health status of serviceName, and report diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go index abab35e25..4552db16b 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go +++ b/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go @@ -24,6 +24,7 @@ import ( "context" "encoding/json" "fmt" + "math/rand" "net" "os" "strconv" @@ -35,28 +36,35 @@ import ( "google.golang.org/grpc/grpclog" "google.golang.org/grpc/internal/backoff" "google.golang.org/grpc/internal/envconfig" - "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/internal/resolver/dns/internal" "google.golang.org/grpc/resolver" "google.golang.org/grpc/serviceconfig" ) -// EnableSRVLookups controls whether the DNS resolver attempts to fetch gRPCLB -// addresses from SRV records. Must not be changed after init time. -var EnableSRVLookups = false +var ( + // EnableSRVLookups controls whether the DNS resolver attempts to fetch gRPCLB + // addresses from SRV records. Must not be changed after init time. + EnableSRVLookups = false -// ResolvingTimeout specifies the maximum duration for a DNS resolution request. -// If the timeout expires before a response is received, the request will be canceled. -// -// It is recommended to set this value at application startup. Avoid modifying this variable -// after initialization as it's not thread-safe for concurrent modification. -var ResolvingTimeout = 30 * time.Second + // MinResolutionInterval is the minimum interval at which re-resolutions are + // allowed. This helps to prevent excessive re-resolution. + MinResolutionInterval = 30 * time.Second -var logger = grpclog.Component("dns") + // ResolvingTimeout specifies the maximum duration for a DNS resolution request. + // If the timeout expires before a response is received, the request will be canceled. + // + // It is recommended to set this value at application startup. Avoid modifying this variable + // after initialization as it's not thread-safe for concurrent modification. + ResolvingTimeout = 30 * time.Second + + logger = grpclog.Component("dns") +) func init() { resolver.Register(NewBuilder()) internal.TimeAfterFunc = time.After + internal.TimeNowFunc = time.Now + internal.TimeUntilFunc = time.Until internal.NewNetResolver = newNetResolver internal.AddressDialer = addressDialer } @@ -203,12 +211,12 @@ func (d *dnsResolver) watcher() { err = d.cc.UpdateState(*state) } - var waitTime time.Duration + var nextResolutionTime time.Time if err == nil { // Success resolving, wait for the next ResolveNow. However, also wait 30 // seconds at the very least to prevent constantly re-resolving. backoffIndex = 1 - waitTime = internal.MinResolutionRate + nextResolutionTime = internal.TimeNowFunc().Add(MinResolutionInterval) select { case <-d.ctx.Done(): return @@ -217,13 +225,13 @@ func (d *dnsResolver) watcher() { } else { // Poll on an error found in DNS Resolver or an error received from // ClientConn. - waitTime = backoff.DefaultExponential.Backoff(backoffIndex) + nextResolutionTime = internal.TimeNowFunc().Add(backoff.DefaultExponential.Backoff(backoffIndex)) backoffIndex++ } select { case <-d.ctx.Done(): return - case <-internal.TimeAfterFunc(waitTime): + case <-internal.TimeAfterFunc(internal.TimeUntilFunc(nextResolutionTime)): } } } @@ -417,7 +425,7 @@ func chosenByPercentage(a *int) bool { if a == nil { return true } - return grpcrand.Intn(100)+1 <= *a + return rand.Intn(100)+1 <= *a } func canaryingSC(js string) string { diff --git a/vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go b/vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go index c7fc557d0..c0eae4f5f 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go +++ b/vendor/google.golang.org/grpc/internal/resolver/dns/internal/internal.go @@ -28,7 +28,7 @@ import ( // NetResolver groups the methods on net.Resolver that are used by the DNS // resolver implementation. This allows the default net.Resolver instance to be -// overidden from tests. +// overridden from tests. type NetResolver interface { LookupHost(ctx context.Context, host string) (addrs []string, err error) LookupSRV(ctx context.Context, service, proto, name string) (cname string, addrs []*net.SRV, err error) @@ -50,16 +50,23 @@ var ( // The following vars are overridden from tests. var ( - // MinResolutionRate is the minimum rate at which re-resolutions are - // allowed. This helps to prevent excessive re-resolution. - MinResolutionRate = 30 * time.Second - // TimeAfterFunc is used by the DNS resolver to wait for the given duration - // to elapse. In non-test code, this is implemented by time.After. In test + // to elapse. In non-test code, this is implemented by time.After. In test // code, this can be used to control the amount of time the resolver is // blocked waiting for the duration to elapse. TimeAfterFunc func(time.Duration) <-chan time.Time + // TimeNowFunc is used by the DNS resolver to get the current time. + // In non-test code, this is implemented by time.Now. In test code, + // this can be used to control the current time for the resolver. + TimeNowFunc func() time.Time + + // TimeUntilFunc is used by the DNS resolver to calculate the remaining + // wait time for re-resolution. In non-test code, this is implemented by + // time.Until. In test code, this can be used to control the remaining + // time for resolver to wait for re-resolution. + TimeUntilFunc func(time.Time) time.Duration + // NewNetResolver returns the net.Resolver instance for the given target. NewNetResolver func(string) (NetResolver, error) diff --git a/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go b/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go index afac56572..b901c7bac 100644 --- a/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go +++ b/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go @@ -55,7 +55,7 @@ func (r *passthroughResolver) start() { r.cc.UpdateState(resolver.State{Addresses: []resolver.Address{{Addr: r.target.Endpoint()}}}) } -func (*passthroughResolver) ResolveNow(o resolver.ResolveNowOptions) {} +func (*passthroughResolver) ResolveNow(resolver.ResolveNowOptions) {} func (*passthroughResolver) Close() {} diff --git a/vendor/google.golang.org/grpc/internal/stats/labels.go b/vendor/google.golang.org/grpc/internal/stats/labels.go new file mode 100644 index 000000000..fd33af51a --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/stats/labels.go @@ -0,0 +1,42 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package stats provides internal stats related functionality. +package stats + +import "context" + +// Labels are the labels for metrics. +type Labels struct { + // TelemetryLabels are the telemetry labels to record. + TelemetryLabels map[string]string +} + +type labelsKey struct{} + +// GetLabels returns the Labels stored in the context, or nil if there is one. +func GetLabels(ctx context.Context) *Labels { + labels, _ := ctx.Value(labelsKey{}).(*Labels) + return labels +} + +// SetLabels sets the Labels in the context. +func SetLabels(ctx context.Context, labels *Labels) context.Context { + // could also append + return context.WithValue(ctx, labelsKey{}, labels) +} diff --git a/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go new file mode 100644 index 000000000..be110d41f --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/stats/metrics_recorder_list.go @@ -0,0 +1,95 @@ +/* + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package stats + +import ( + "fmt" + + estats "google.golang.org/grpc/experimental/stats" + "google.golang.org/grpc/stats" +) + +// MetricsRecorderList forwards Record calls to all of its metricsRecorders. +// +// It eats any record calls where the label values provided do not match the +// number of label keys. +type MetricsRecorderList struct { + // metricsRecorders are the metrics recorders this list will forward to. + metricsRecorders []estats.MetricsRecorder +} + +// NewMetricsRecorderList creates a new metric recorder list with all the stats +// handlers provided which implement the MetricsRecorder interface. +// If no stats handlers provided implement the MetricsRecorder interface, +// the MetricsRecorder list returned is a no-op. +func NewMetricsRecorderList(shs []stats.Handler) *MetricsRecorderList { + var mrs []estats.MetricsRecorder + for _, sh := range shs { + if mr, ok := sh.(estats.MetricsRecorder); ok { + mrs = append(mrs, mr) + } + } + return &MetricsRecorderList{ + metricsRecorders: mrs, + } +} + +func verifyLabels(desc *estats.MetricDescriptor, labelsRecv ...string) { + if got, want := len(labelsRecv), len(desc.Labels)+len(desc.OptionalLabels); got != want { + panic(fmt.Sprintf("Received %d labels in call to record metric %q, but expected %d.", got, desc.Name, want)) + } +} + +func (l *MetricsRecorderList) RecordInt64Count(handle *estats.Int64CountHandle, incr int64, labels ...string) { + verifyLabels(handle.Descriptor(), labels...) + + for _, metricRecorder := range l.metricsRecorders { + metricRecorder.RecordInt64Count(handle, incr, labels...) + } +} + +func (l *MetricsRecorderList) RecordFloat64Count(handle *estats.Float64CountHandle, incr float64, labels ...string) { + verifyLabels(handle.Descriptor(), labels...) + + for _, metricRecorder := range l.metricsRecorders { + metricRecorder.RecordFloat64Count(handle, incr, labels...) + } +} + +func (l *MetricsRecorderList) RecordInt64Histo(handle *estats.Int64HistoHandle, incr int64, labels ...string) { + verifyLabels(handle.Descriptor(), labels...) + + for _, metricRecorder := range l.metricsRecorders { + metricRecorder.RecordInt64Histo(handle, incr, labels...) + } +} + +func (l *MetricsRecorderList) RecordFloat64Histo(handle *estats.Float64HistoHandle, incr float64, labels ...string) { + verifyLabels(handle.Descriptor(), labels...) + + for _, metricRecorder := range l.metricsRecorders { + metricRecorder.RecordFloat64Histo(handle, incr, labels...) + } +} + +func (l *MetricsRecorderList) RecordInt64Gauge(handle *estats.Int64GaugeHandle, incr int64, labels ...string) { + verifyLabels(handle.Descriptor(), labels...) + + for _, metricRecorder := range l.metricsRecorders { + metricRecorder.RecordInt64Gauge(handle, incr, labels...) + } +} diff --git a/vendor/google.golang.org/grpc/internal/status/status.go b/vendor/google.golang.org/grpc/internal/status/status.go index c7dbc8205..757925381 100644 --- a/vendor/google.golang.org/grpc/internal/status/status.go +++ b/vendor/google.golang.org/grpc/internal/status/status.go @@ -138,11 +138,11 @@ func (s *Status) WithDetails(details ...protoadapt.MessageV1) (*Status, error) { // s.Code() != OK implies that s.Proto() != nil. p := s.Proto() for _, detail := range details { - any, err := anypb.New(protoadapt.MessageV2Of(detail)) + m, err := anypb.New(protoadapt.MessageV2Of(detail)) if err != nil { return nil, err } - p.Details = append(p.Details, any) + p.Details = append(p.Details, m) } return &Status{s: p}, nil } diff --git a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go index 999f52cd7..54c24c2ff 100644 --- a/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go +++ b/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go @@ -58,20 +58,20 @@ func GetRusage() *Rusage { // CPUTimeDiff returns the differences of user CPU time and system CPU time used // between two Rusage structs. It a no-op function for non-linux environments. -func CPUTimeDiff(first *Rusage, latest *Rusage) (float64, float64) { +func CPUTimeDiff(*Rusage, *Rusage) (float64, float64) { log() return 0, 0 } // SetTCPUserTimeout is a no-op function under non-linux environments. -func SetTCPUserTimeout(conn net.Conn, timeout time.Duration) error { +func SetTCPUserTimeout(net.Conn, time.Duration) error { log() return nil } // GetTCPUserTimeout is a no-op function under non-linux environments. // A negative return value indicates the operation is not supported -func GetTCPUserTimeout(conn net.Conn) (int, error) { +func GetTCPUserTimeout(net.Conn) (int, error) { log() return -1, nil } diff --git a/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go b/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go index 078137b7f..7e7aaa546 100644 --- a/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go +++ b/vendor/google.golang.org/grpc/internal/tcp_keepalive_unix.go @@ -44,7 +44,7 @@ func NetDialerWithTCPKeepalive() *net.Dialer { // combination of unconditionally enabling TCP keepalives here, and // disabling the overriding of TCP keepalive parameters by setting the // KeepAlive field to a negative value above, results in OS defaults for - // the TCP keealive interval and time parameters. + // the TCP keepalive interval and time parameters. Control: func(_, _ string, c syscall.RawConn) error { return c.Control(func(fd uintptr) { unix.SetsockoptInt(int(fd), unix.SOL_SOCKET, unix.SO_KEEPALIVE, 1) diff --git a/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go b/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go index fd7d43a89..d5c1085ee 100644 --- a/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go +++ b/vendor/google.golang.org/grpc/internal/tcp_keepalive_windows.go @@ -44,7 +44,7 @@ func NetDialerWithTCPKeepalive() *net.Dialer { // combination of unconditionally enabling TCP keepalives here, and // disabling the overriding of TCP keepalive parameters by setting the // KeepAlive field to a negative value above, results in OS defaults for - // the TCP keealive interval and time parameters. + // the TCP keepalive interval and time parameters. Control: func(_, _ string, c syscall.RawConn) error { return c.Control(func(fd uintptr) { windows.SetsockoptInt(windows.Handle(fd), windows.SOL_SOCKET, windows.SO_KEEPALIVE, 1) diff --git a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go index 83c382982..ef72fbb3a 100644 --- a/vendor/google.golang.org/grpc/internal/transport/controlbuf.go +++ b/vendor/google.golang.org/grpc/internal/transport/controlbuf.go @@ -32,6 +32,7 @@ import ( "golang.org/x/net/http2/hpack" "google.golang.org/grpc/internal/grpclog" "google.golang.org/grpc/internal/grpcutil" + "google.golang.org/grpc/mem" "google.golang.org/grpc/status" ) @@ -148,9 +149,9 @@ type dataFrame struct { streamID uint32 endStream bool h []byte - d []byte + reader mem.Reader // onEachWrite is called every time - // a part of d is written out. + // a part of data is written out. onEachWrite func() } @@ -193,7 +194,7 @@ type goAway struct { code http2.ErrCode debugData []byte headsUp bool - closeConn error // if set, loopyWriter will exit, resulting in conn closure + closeConn error // if set, loopyWriter will exit with this error } func (*goAway) isTransportResponseFrame() bool { return false } @@ -289,18 +290,22 @@ func (l *outStreamList) dequeue() *outStream { } // controlBuffer is a way to pass information to loopy. -// Information is passed as specific struct types called control frames. -// A control frame not only represents data, messages or headers to be sent out -// but can also be used to instruct loopy to update its internal state. -// It shouldn't be confused with an HTTP2 frame, although some of the control frames -// like dataFrame and headerFrame do go out on wire as HTTP2 frames. +// +// Information is passed as specific struct types called control frames. A +// control frame not only represents data, messages or headers to be sent out +// but can also be used to instruct loopy to update its internal state. It +// shouldn't be confused with an HTTP2 frame, although some of the control +// frames like dataFrame and headerFrame do go out on wire as HTTP2 frames. type controlBuffer struct { - ch chan struct{} - done <-chan struct{} + wakeupCh chan struct{} // Unblocks readers waiting for something to read. + done <-chan struct{} // Closed when the transport is done. + + // Mutex guards all the fields below, except trfChan which can be read + // atomically without holding mu. mu sync.Mutex - consumerWaiting bool - list *itemList - err error + consumerWaiting bool // True when readers are blocked waiting for new data. + closed bool // True when the controlbuf is finished. + list *itemList // List of queued control frames. // transportResponseFrames counts the number of queued items that represent // the response of an action initiated by the peer. trfChan is created @@ -308,47 +313,59 @@ type controlBuffer struct { // closed and nilled when transportResponseFrames drops below the // threshold. Both fields are protected by mu. transportResponseFrames int - trfChan atomic.Value // chan struct{} + trfChan atomic.Pointer[chan struct{}] } func newControlBuffer(done <-chan struct{}) *controlBuffer { return &controlBuffer{ - ch: make(chan struct{}, 1), - list: &itemList{}, - done: done, + wakeupCh: make(chan struct{}, 1), + list: &itemList{}, + done: done, } } -// throttle blocks if there are too many incomingSettings/cleanupStreams in the -// controlbuf. +// throttle blocks if there are too many frames in the control buf that +// represent the response of an action initiated by the peer, like +// incomingSettings cleanupStreams etc. func (c *controlBuffer) throttle() { - ch, _ := c.trfChan.Load().(chan struct{}) - if ch != nil { + if ch := c.trfChan.Load(); ch != nil { select { - case <-ch: + case <-(*ch): case <-c.done: } } } +// put adds an item to the controlbuf. func (c *controlBuffer) put(it cbItem) error { _, err := c.executeAndPut(nil, it) return err } -func (c *controlBuffer) executeAndPut(f func(it any) bool, it cbItem) (bool, error) { - var wakeUp bool +// executeAndPut runs f, and if the return value is true, adds the given item to +// the controlbuf. The item could be nil, in which case, this method simply +// executes f and does not add the item to the controlbuf. +// +// The first return value indicates whether the item was successfully added to +// the control buffer. A non-nil error, specifically ErrConnClosing, is returned +// if the control buffer is already closed. +func (c *controlBuffer) executeAndPut(f func() bool, it cbItem) (bool, error) { c.mu.Lock() - if c.err != nil { - c.mu.Unlock() - return false, c.err + defer c.mu.Unlock() + + if c.closed { + return false, ErrConnClosing } if f != nil { - if !f(it) { // f wasn't successful - c.mu.Unlock() + if !f() { // f wasn't successful return false, nil } } + if it == nil { + return true, nil + } + + var wakeUp bool if c.consumerWaiting { wakeUp = true c.consumerWaiting = false @@ -359,98 +376,102 @@ func (c *controlBuffer) executeAndPut(f func(it any) bool, it cbItem) (bool, err if c.transportResponseFrames == maxQueuedTransportResponseFrames { // We are adding the frame that puts us over the threshold; create // a throttling channel. - c.trfChan.Store(make(chan struct{})) + ch := make(chan struct{}) + c.trfChan.Store(&ch) } } - c.mu.Unlock() if wakeUp { select { - case c.ch <- struct{}{}: + case c.wakeupCh <- struct{}{}: default: } } return true, nil } -// Note argument f should never be nil. -func (c *controlBuffer) execute(f func(it any) bool, it any) (bool, error) { - c.mu.Lock() - if c.err != nil { - c.mu.Unlock() - return false, c.err - } - if !f(it) { // f wasn't successful - c.mu.Unlock() - return false, nil - } - c.mu.Unlock() - return true, nil -} - +// get returns the next control frame from the control buffer. If block is true +// **and** there are no control frames in the control buffer, the call blocks +// until one of the conditions is met: there is a frame to return or the +// transport is closed. func (c *controlBuffer) get(block bool) (any, error) { for { c.mu.Lock() - if c.err != nil { + frame, err := c.getOnceLocked() + if frame != nil || err != nil || !block { + // If we read a frame or an error, we can return to the caller. The + // call to getOnceLocked() returns a nil frame and a nil error if + // there is nothing to read, and in that case, if the caller asked + // us not to block, we can return now as well. c.mu.Unlock() - return nil, c.err - } - if !c.list.isEmpty() { - h := c.list.dequeue().(cbItem) - if h.isTransportResponseFrame() { - if c.transportResponseFrames == maxQueuedTransportResponseFrames { - // We are removing the frame that put us over the - // threshold; close and clear the throttling channel. - ch := c.trfChan.Load().(chan struct{}) - close(ch) - c.trfChan.Store((chan struct{})(nil)) - } - c.transportResponseFrames-- - } - c.mu.Unlock() - return h, nil - } - if !block { - c.mu.Unlock() - return nil, nil + return frame, err } c.consumerWaiting = true c.mu.Unlock() + + // Release the lock above and wait to be woken up. select { - case <-c.ch: + case <-c.wakeupCh: case <-c.done: return nil, errors.New("transport closed by client") } } } +// Callers must not use this method, but should instead use get(). +// +// Caller must hold c.mu. +func (c *controlBuffer) getOnceLocked() (any, error) { + if c.closed { + return false, ErrConnClosing + } + if c.list.isEmpty() { + return nil, nil + } + h := c.list.dequeue().(cbItem) + if h.isTransportResponseFrame() { + if c.transportResponseFrames == maxQueuedTransportResponseFrames { + // We are removing the frame that put us over the + // threshold; close and clear the throttling channel. + ch := c.trfChan.Swap(nil) + close(*ch) + } + c.transportResponseFrames-- + } + return h, nil +} + +// finish closes the control buffer, cleaning up any streams that have queued +// header frames. Once this method returns, no more frames can be added to the +// control buffer, and attempts to do so will return ErrConnClosing. func (c *controlBuffer) finish() { c.mu.Lock() - if c.err != nil { - c.mu.Unlock() + defer c.mu.Unlock() + + if c.closed { return } - c.err = ErrConnClosing + c.closed = true // There may be headers for streams in the control buffer. // These streams need to be cleaned out since the transport // is still not aware of these yet. for head := c.list.dequeueAll(); head != nil; head = head.next { - hdr, ok := head.it.(*headerFrame) - if !ok { - continue - } - if hdr.onOrphaned != nil { // It will be nil on the server-side. - hdr.onOrphaned(ErrConnClosing) + switch v := head.it.(type) { + case *headerFrame: + if v.onOrphaned != nil { // It will be nil on the server-side. + v.onOrphaned(ErrConnClosing) + } + case *dataFrame: + _ = v.reader.Close() } } + // In case throttle() is currently in flight, it needs to be unblocked. // Otherwise, the transport may not close, since the transport is closed by // the reader encountering the connection error. - ch, _ := c.trfChan.Load().(chan struct{}) + ch := c.trfChan.Swap(nil) if ch != nil { - close(ch) + close(*ch) } - c.trfChan.Store((chan struct{})(nil)) - c.mu.Unlock() } type side int @@ -466,7 +487,7 @@ const ( // stream maintains a queue of data frames; as loopy receives data frames // it gets added to the queue of the relevant stream. // Loopy goes over this list of active streams by processing one node every iteration, -// thereby closely resemebling to a round-robin scheduling over all streams. While +// thereby closely resembling a round-robin scheduling over all streams. While // processing a stream, loopy writes out data bytes from this stream capped by the min // of http2MaxFrameLen, connection-level flow control and stream-level flow control. type loopyWriter struct { @@ -490,26 +511,29 @@ type loopyWriter struct { draining bool conn net.Conn logger *grpclog.PrefixLogger + bufferPool mem.BufferPool // Side-specific handlers ssGoAwayHandler func(*goAway) (bool, error) } -func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger) *loopyWriter { +func newLoopyWriter(s side, fr *framer, cbuf *controlBuffer, bdpEst *bdpEstimator, conn net.Conn, logger *grpclog.PrefixLogger, goAwayHandler func(*goAway) (bool, error), bufferPool mem.BufferPool) *loopyWriter { var buf bytes.Buffer l := &loopyWriter{ - side: s, - cbuf: cbuf, - sendQuota: defaultWindowSize, - oiws: defaultWindowSize, - estdStreams: make(map[uint32]*outStream), - activeStreams: newOutStreamList(), - framer: fr, - hBuf: &buf, - hEnc: hpack.NewEncoder(&buf), - bdpEst: bdpEst, - conn: conn, - logger: logger, + side: s, + cbuf: cbuf, + sendQuota: defaultWindowSize, + oiws: defaultWindowSize, + estdStreams: make(map[uint32]*outStream), + activeStreams: newOutStreamList(), + framer: fr, + hBuf: &buf, + hEnc: hpack.NewEncoder(&buf), + bdpEst: bdpEst, + conn: conn, + logger: logger, + ssGoAwayHandler: goAwayHandler, + bufferPool: bufferPool, } return l } @@ -767,6 +791,11 @@ func (l *loopyWriter) cleanupStreamHandler(c *cleanupStream) error { // not be established yet. delete(l.estdStreams, c.streamID) str.deleteSelf() + for head := str.itl.dequeueAll(); head != nil; head = head.next { + if df, ok := head.it.(*dataFrame); ok { + _ = df.reader.Close() + } + } } if c.rst { // If RST_STREAM needs to be sent. if err := l.framer.fr.WriteRSTStream(c.streamID, c.rstCode); err != nil { @@ -902,16 +931,18 @@ func (l *loopyWriter) processData() (bool, error) { dataItem := str.itl.peek().(*dataFrame) // Peek at the first data item this stream. // A data item is represented by a dataFrame, since it later translates into // multiple HTTP2 data frames. - // Every dataFrame has two buffers; h that keeps grpc-message header and d that is actual data. - // As an optimization to keep wire traffic low, data from d is copied to h to make as big as the - // maximum possible HTTP2 frame size. + // Every dataFrame has two buffers; h that keeps grpc-message header and data + // that is the actual message. As an optimization to keep wire traffic low, data + // from data is copied to h to make as big as the maximum possible HTTP2 frame + // size. - if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // Empty data frame + if len(dataItem.h) == 0 && dataItem.reader.Remaining() == 0 { // Empty data frame // Client sends out empty data frame with endStream = true if err := l.framer.fr.WriteData(dataItem.streamID, dataItem.endStream, nil); err != nil { return false, err } str.itl.dequeue() // remove the empty data item from stream + _ = dataItem.reader.Close() if str.itl.isEmpty() { str.state = empty } else if trailer, ok := str.itl.peek().(*headerFrame); ok { // the next item is trailers. @@ -926,9 +957,7 @@ func (l *loopyWriter) processData() (bool, error) { } return false, nil } - var ( - buf []byte - ) + // Figure out the maximum size we can send maxSize := http2MaxFrameLen if strQuota := int(l.oiws) - str.bytesOutStanding; strQuota <= 0 { // stream-level flow control. @@ -942,43 +971,50 @@ func (l *loopyWriter) processData() (bool, error) { } // Compute how much of the header and data we can send within quota and max frame length hSize := min(maxSize, len(dataItem.h)) - dSize := min(maxSize-hSize, len(dataItem.d)) - if hSize != 0 { - if dSize == 0 { - buf = dataItem.h - } else { - // We can add some data to grpc message header to distribute bytes more equally across frames. - // Copy on the stack to avoid generating garbage - var localBuf [http2MaxFrameLen]byte - copy(localBuf[:hSize], dataItem.h) - copy(localBuf[hSize:], dataItem.d[:dSize]) - buf = localBuf[:hSize+dSize] - } + dSize := min(maxSize-hSize, dataItem.reader.Remaining()) + remainingBytes := len(dataItem.h) + dataItem.reader.Remaining() - hSize - dSize + size := hSize + dSize + + var buf *[]byte + + if hSize != 0 && dSize == 0 { + buf = &dataItem.h } else { - buf = dataItem.d - } + // Note: this is only necessary because the http2.Framer does not support + // partially writing a frame, so the sequence must be materialized into a buffer. + // TODO: Revisit once https://github.com/golang/go/issues/66655 is addressed. + pool := l.bufferPool + if pool == nil { + // Note that this is only supposed to be nil in tests. Otherwise, stream is + // always initialized with a BufferPool. + pool = mem.DefaultBufferPool() + } + buf = pool.Get(size) + defer pool.Put(buf) - size := hSize + dSize + copy((*buf)[:hSize], dataItem.h) + _, _ = dataItem.reader.Read((*buf)[hSize:]) + } // Now that outgoing flow controls are checked we can replenish str's write quota str.wq.replenish(size) var endStream bool // If this is the last data message on this stream and all of it can be written in this iteration. - if dataItem.endStream && len(dataItem.h)+len(dataItem.d) <= size { + if dataItem.endStream && remainingBytes == 0 { endStream = true } if dataItem.onEachWrite != nil { dataItem.onEachWrite() } - if err := l.framer.fr.WriteData(dataItem.streamID, endStream, buf[:size]); err != nil { + if err := l.framer.fr.WriteData(dataItem.streamID, endStream, (*buf)[:size]); err != nil { return false, err } str.bytesOutStanding += size l.sendQuota -= uint32(size) dataItem.h = dataItem.h[hSize:] - dataItem.d = dataItem.d[dSize:] - if len(dataItem.h) == 0 && len(dataItem.d) == 0 { // All the data from that message was written out. + if remainingBytes == 0 { // All the data from that message was written out. + _ = dataItem.reader.Close() str.itl.dequeue() } if str.itl.isEmpty() { @@ -997,10 +1033,3 @@ func (l *loopyWriter) processData() (bool, error) { } return false, nil } - -func min(a, b int) int { - if a < b { - return a - } - return b -} diff --git a/vendor/google.golang.org/grpc/internal/transport/handler_server.go b/vendor/google.golang.org/grpc/internal/transport/handler_server.go index 4a3ddce29..ce878693b 100644 --- a/vendor/google.golang.org/grpc/internal/transport/handler_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/handler_server.go @@ -24,7 +24,6 @@ package transport import ( - "bytes" "context" "errors" "fmt" @@ -40,6 +39,7 @@ import ( "google.golang.org/grpc/credentials" "google.golang.org/grpc/internal/grpclog" "google.golang.org/grpc/internal/grpcutil" + "google.golang.org/grpc/mem" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" @@ -50,7 +50,7 @@ import ( // NewServerHandlerTransport returns a ServerTransport handling gRPC from // inside an http.Handler, or writes an HTTP error to w and returns an error. // It requires that the http Server supports HTTP/2. -func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler) (ServerTransport, error) { +func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []stats.Handler, bufferPool mem.BufferPool) (ServerTransport, error) { if r.Method != http.MethodPost { w.Header().Set("Allow", http.MethodPost) msg := fmt.Sprintf("invalid gRPC request method %q", r.Method) @@ -98,6 +98,7 @@ func NewServerHandlerTransport(w http.ResponseWriter, r *http.Request, stats []s contentType: contentType, contentSubtype: contentSubtype, stats: stats, + bufferPool: bufferPool, } st.logger = prefixLoggerForServerHandlerTransport(st) @@ -171,6 +172,8 @@ type serverHandlerTransport struct { stats []stats.Handler logger *grpclog.PrefixLogger + + bufferPool mem.BufferPool } func (ht *serverHandlerTransport) Close(err error) { @@ -244,6 +247,7 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro } s.hdrMu.Lock() + defer s.hdrMu.Unlock() if p := st.Proto(); p != nil && len(p.Details) > 0 { delete(s.trailer, grpcStatusDetailsBinHeader) stBytes, err := proto.Marshal(p) @@ -268,7 +272,6 @@ func (ht *serverHandlerTransport) WriteStatus(s *Stream, st *status.Status) erro } } } - s.hdrMu.Unlock() }) if err == nil { // transport has not been closed @@ -330,16 +333,28 @@ func (ht *serverHandlerTransport) writeCustomHeaders(s *Stream) { s.hdrMu.Unlock() } -func (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { +func (ht *serverHandlerTransport) Write(s *Stream, hdr []byte, data mem.BufferSlice, _ *Options) error { + // Always take a reference because otherwise there is no guarantee the data will + // be available after this function returns. This is what callers to Write + // expect. + data.Ref() headersWritten := s.updateHeaderSent() - return ht.do(func() { + err := ht.do(func() { + defer data.Free() if !headersWritten { ht.writePendingHeaders(s) } ht.rw.Write(hdr) - ht.rw.Write(data) + for _, b := range data { + _, _ = ht.rw.Write(b.ReadOnlyData()) + } ht.rw.(http.Flusher).Flush() }) + if err != nil { + data.Free() + return err + } + return nil } func (ht *serverHandlerTransport) WriteHeader(s *Stream, md metadata.MD) error { @@ -406,7 +421,7 @@ func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream headerWireLength: 0, // won't have access to header wire length until golang/go#18997. } s.trReader = &transportReader{ - reader: &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf, freeBuffer: func(*bytes.Buffer) {}}, + reader: &recvBufferReader{ctx: s.ctx, ctxDone: s.ctx.Done(), recv: s.buf}, windowHandler: func(int) {}, } @@ -415,21 +430,19 @@ func (ht *serverHandlerTransport) HandleStreams(ctx context.Context, startStream go func() { defer close(readerDone) - // TODO: minimize garbage, optimize recvBuffer code/ownership - const readSize = 8196 - for buf := make([]byte, readSize); ; { - n, err := req.Body.Read(buf) + for { + buf := ht.bufferPool.Get(http2MaxFrameLen) + n, err := req.Body.Read(*buf) if n > 0 { - s.buf.put(recvMsg{buffer: bytes.NewBuffer(buf[:n:n])}) - buf = buf[n:] + *buf = (*buf)[:n] + s.buf.put(recvMsg{buffer: mem.NewBuffer(buf, ht.bufferPool)}) + } else { + ht.bufferPool.Put(buf) } if err != nil { s.buf.put(recvMsg{err: mapRecvMsgError(err)}) return } - if len(buf) == 0 { - buf = make([]byte, readSize) - } } }() @@ -462,7 +475,7 @@ func (ht *serverHandlerTransport) IncrMsgSent() {} func (ht *serverHandlerTransport) IncrMsgRecv() {} -func (ht *serverHandlerTransport) Drain(debugData string) { +func (ht *serverHandlerTransport) Drain(string) { panic("Drain() is not implemented") } diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_client.go b/vendor/google.golang.org/grpc/internal/transport/http2_client.go index deba0c4d9..c769deab5 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_client.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_client.go @@ -47,6 +47,7 @@ import ( isyscall "google.golang.org/grpc/internal/syscall" "google.golang.org/grpc/internal/transport/networktype" "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/mem" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/resolver" @@ -59,6 +60,8 @@ import ( // atomically. var clientConnectionCounter uint64 +var goAwayLoopyWriterTimeout = 5 * time.Second + var metadataFromOutgoingContextRaw = internal.FromOutgoingContextRaw.(func(context.Context) (metadata.MD, [][]string, bool)) // http2Client implements the ClientTransport interface with HTTP2. @@ -114,11 +117,11 @@ type http2Client struct { streamQuota int64 streamsQuotaAvailable chan struct{} waitingStreams uint32 - nextID uint32 registeredCompressors string // Do not access controlBuf with mu held. mu sync.Mutex // guard the following variables + nextID uint32 state transportState activeStreams map[uint32]*Stream // prevGoAway ID records the Last-Stream-ID in the previous GOAway frame. @@ -144,7 +147,7 @@ type http2Client struct { onClose func(GoAwayReason) - bufferPool *bufferPool + bufferPool mem.BufferPool connectionID uint64 logger *grpclog.PrefixLogger @@ -229,7 +232,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts } }(conn) - // The following defer and goroutine monitor the connectCtx for cancelation + // The following defer and goroutine monitor the connectCtx for cancellation // and deadline. On context expiration, the connection is hard closed and // this function will naturally fail as a result. Otherwise, the defer // waits for the goroutine to exit to prevent the context from being @@ -346,7 +349,7 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts streamQuota: defaultMaxStreamsClient, streamsQuotaAvailable: make(chan struct{}, 1), keepaliveEnabled: keepaliveEnabled, - bufferPool: newBufferPool(), + bufferPool: opts.BufferPool, onClose: onClose, } var czSecurity credentials.ChannelzSecurityValue @@ -408,10 +411,10 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts readerErrCh := make(chan error, 1) go t.reader(readerErrCh) defer func() { - if err == nil { - err = <-readerErrCh - } if err != nil { + // writerDone should be closed since the loopy goroutine + // wouldn't have started in the case this function returns an error. + close(t.writerDone) t.Close(err) } }() @@ -458,8 +461,12 @@ func newHTTP2Client(connectCtx, ctx context.Context, addr resolver.Address, opts if err := t.framer.writer.Flush(); err != nil { return nil, err } + // Block until the server preface is received successfully or an error occurs. + if err = <-readerErrCh; err != nil { + return nil, err + } go func() { - t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger) + t.loopy = newLoopyWriter(clientSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler, t.bufferPool) if err := t.loopy.run(); !isIOError(err) { // Immediately close the connection, as the loopy writer returns // when there are no more active streams and we were draining (the @@ -500,7 +507,6 @@ func (t *http2Client) newStream(ctx context.Context, callHdr *CallHdr) *Stream { closeStream: func(err error) { t.CloseStream(s, err) }, - freeBuffer: t.bufferPool.put, }, windowHandler: func(n int) { t.updateWindow(s, uint32(n)) @@ -517,6 +523,17 @@ func (t *http2Client) getPeer() *peer.Peer { } } +// OutgoingGoAwayHandler writes a GOAWAY to the connection. Always returns (false, err) as we want the GoAway +// to be the last frame loopy writes to the transport. +func (t *http2Client) outgoingGoAwayHandler(g *goAway) (bool, error) { + t.mu.Lock() + defer t.mu.Unlock() + if err := t.framer.fr.WriteGoAway(t.nextID-2, http2.ErrCodeNo, g.debugData); err != nil { + return false, err + } + return false, g.closeConn +} + func (t *http2Client) createHeaderFields(ctx context.Context, callHdr *CallHdr) ([]hpack.HeaderField, error) { aud := t.createAudience(callHdr) ri := credentials.RequestInfo{ @@ -755,7 +772,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, hdr := &headerFrame{ hf: headerFields, endStream: false, - initStream: func(id uint32) error { + initStream: func(uint32) error { t.mu.Lock() // TODO: handle transport closure in loopy instead and remove this // initStream is never called when transport is draining. @@ -781,7 +798,7 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, firstTry := true var ch chan struct{} transportDrainRequired := false - checkForStreamQuota := func(it any) bool { + checkForStreamQuota := func() bool { if t.streamQuota <= 0 { // Can go negative if server decreases it. if firstTry { t.waitingStreams++ @@ -793,23 +810,24 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, t.waitingStreams-- } t.streamQuota-- - h := it.(*headerFrame) - h.streamID = t.nextID - t.nextID += 2 - // Drain client transport if nextID > MaxStreamID which signals gRPC that - // the connection is closed and a new one must be created for subsequent RPCs. - transportDrainRequired = t.nextID > MaxStreamID - - s.id = h.streamID - s.fc = &inFlow{limit: uint32(t.initialWindowSize)} t.mu.Lock() if t.state == draining || t.activeStreams == nil { // Can be niled from Close(). t.mu.Unlock() return false // Don't create a stream if the transport is already closed. } + + hdr.streamID = t.nextID + t.nextID += 2 + // Drain client transport if nextID > MaxStreamID which signals gRPC that + // the connection is closed and a new one must be created for subsequent RPCs. + transportDrainRequired = t.nextID > MaxStreamID + + s.id = hdr.streamID + s.fc = &inFlow{limit: uint32(t.initialWindowSize)} t.activeStreams[s.id] = s t.mu.Unlock() + if t.streamQuota > 0 && t.waitingStreams > 0 { select { case t.streamsQuotaAvailable <- struct{}{}: @@ -819,13 +837,12 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, return true } var hdrListSizeErr error - checkForHeaderListSize := func(it any) bool { + checkForHeaderListSize := func() bool { if t.maxSendHeaderListSize == nil { return true } - hdrFrame := it.(*headerFrame) var sz int64 - for _, f := range hdrFrame.hf { + for _, f := range hdr.hf { if sz += int64(f.Size()); sz > int64(*t.maxSendHeaderListSize) { hdrListSizeErr = status.Errorf(codes.Internal, "header list size to send violates the maximum size (%d bytes) set by server", *t.maxSendHeaderListSize) return false @@ -834,8 +851,8 @@ func (t *http2Client) NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, return true } for { - success, err := t.controlBuf.executeAndPut(func(it any) bool { - return checkForHeaderListSize(it) && checkForStreamQuota(it) + success, err := t.controlBuf.executeAndPut(func() bool { + return checkForHeaderListSize() && checkForStreamQuota() }, hdr) if err != nil { // Connection closed. @@ -946,7 +963,7 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2. rst: rst, rstCode: rstCode, } - addBackStreamQuota := func(any) bool { + addBackStreamQuota := func() bool { t.streamQuota++ if t.streamQuota > 0 && t.waitingStreams > 0 { select { @@ -966,8 +983,9 @@ func (t *http2Client) closeStream(s *Stream, err error, rst bool, rstCode http2. // Close kicks off the shutdown process of the transport. This should be called // only once on a transport. Once it is called, the transport should not be -// accessed any more. +// accessed anymore. func (t *http2Client) Close(err error) { + t.conn.SetWriteDeadline(time.Now().Add(time.Second * 10)) t.mu.Lock() // Make sure we only close once. if t.state == closing { @@ -991,7 +1009,20 @@ func (t *http2Client) Close(err error) { t.kpDormancyCond.Signal() } t.mu.Unlock() - t.controlBuf.finish() + + // Per HTTP/2 spec, a GOAWAY frame must be sent before closing the + // connection. See https://httpwg.org/specs/rfc7540.html#GOAWAY. It + // also waits for loopyWriter to be closed with a timer to avoid the + // long blocking in case the connection is blackholed, i.e. TCP is + // just stuck. + t.controlBuf.put(&goAway{code: http2.ErrCodeNo, debugData: []byte("client transport shutdown"), closeConn: err}) + timer := time.NewTimer(goAwayLoopyWriterTimeout) + defer timer.Stop() + select { + case <-t.writerDone: // success + case <-timer.C: + t.logger.Infof("Failed to write a GOAWAY frame as part of connection close after %s. Giving up and closing the transport.", goAwayLoopyWriterTimeout) + } t.cancel() t.conn.Close() channelz.RemoveEntry(t.channelz.ID) @@ -1047,27 +1078,36 @@ func (t *http2Client) GracefulClose() { // Write formats the data into HTTP2 data frame(s) and sends it out. The caller // should proceed only if Write returns nil. -func (t *http2Client) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { +func (t *http2Client) Write(s *Stream, hdr []byte, data mem.BufferSlice, opts *Options) error { + reader := data.Reader() + if opts.Last { // If it's the last message, update stream state. if !s.compareAndSwapState(streamActive, streamWriteDone) { + _ = reader.Close() return errStreamDone } } else if s.getState() != streamActive { + _ = reader.Close() return errStreamDone } df := &dataFrame{ streamID: s.id, endStream: opts.Last, h: hdr, - d: data, + reader: reader, } - if hdr != nil || data != nil { // If it's not an empty data frame, check quota. - if err := s.wq.get(int32(len(hdr) + len(data))); err != nil { + if hdr != nil || df.reader.Remaining() != 0 { // If it's not an empty data frame, check quota. + if err := s.wq.get(int32(len(hdr) + df.reader.Remaining())); err != nil { + _ = reader.Close() return err } } - return t.controlBuf.put(df) + if err := t.controlBuf.put(df); err != nil { + _ = reader.Close() + return err + } + return nil } func (t *http2Client) getStream(f http2.Frame) *Stream { @@ -1099,7 +1139,7 @@ func (t *http2Client) updateWindow(s *Stream, n uint32) { // for the transport and the stream based on the current bdp // estimation. func (t *http2Client) updateFlowControl(n uint32) { - updateIWS := func(any) bool { + updateIWS := func() bool { t.initialWindowSize = int32(n) t.mu.Lock() for _, s := range t.activeStreams { @@ -1172,10 +1212,13 @@ func (t *http2Client) handleData(f *http2.DataFrame) { // guarantee f.Data() is consumed before the arrival of next frame. // Can this copy be eliminated? if len(f.Data()) > 0 { - buffer := t.bufferPool.get() - buffer.Reset() - buffer.Write(f.Data()) - s.write(recvMsg{buffer: buffer}) + pool := t.bufferPool + if pool == nil { + // Note that this is only supposed to be nil in tests. Otherwise, stream is + // always initialized with a BufferPool. + pool = mem.DefaultBufferPool() + } + s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)}) } } // The server has closed the stream without sending trailers. Record that @@ -1204,7 +1247,7 @@ func (t *http2Client) handleRSTStream(f *http2.RSTStreamFrame) { if statusCode == codes.Canceled { if d, ok := s.ctx.Deadline(); ok && !d.After(time.Now()) { // Our deadline was already exceeded, and that was likely the cause - // of this cancelation. Alter the status code accordingly. + // of this cancellation. Alter the status code accordingly. statusCode = codes.DeadlineExceeded } } @@ -1252,7 +1295,7 @@ func (t *http2Client) handleSettings(f *http2.SettingsFrame, isFirst bool) { } updateFuncs = append(updateFuncs, updateStreamQuota) } - t.controlBuf.executeAndPut(func(any) bool { + t.controlBuf.executeAndPut(func() bool { for _, f := range updateFuncs { f() } @@ -1289,7 +1332,7 @@ func (t *http2Client) handleGoAway(f *http2.GoAwayFrame) { id := f.LastStreamID if id > 0 && id%2 == 0 { t.mu.Unlock() - t.Close(connectionErrorf(true, nil, "received goaway with non-zero even-numbered numbered stream id: %v", id)) + t.Close(connectionErrorf(true, nil, "received goaway with non-zero even-numbered stream id: %v", id)) return } // A client can receive multiple GoAways from the server (see @@ -1624,11 +1667,10 @@ func (t *http2Client) reader(errCh chan<- error) { t.closeStream(s, status.Error(code, msg), true, http2.ErrCodeProtocol, status.New(code, msg), nil, false) } continue - } else { - // Transport error. - t.Close(connectionErrorf(true, err, "error reading from server: %v", err)) - return } + // Transport error. + t.Close(connectionErrorf(true, err, "error reading from server: %v", err)) + return } switch frame := frame.(type) { case *http2.MetaHeadersFrame: @@ -1653,13 +1695,6 @@ func (t *http2Client) reader(errCh chan<- error) { } } -func minTime(a, b time.Duration) time.Duration { - if a < b { - return a - } - return b -} - // keepalive running in a separate goroutine makes sure the connection is alive by sending pings. func (t *http2Client) keepalive() { p := &ping{data: [8]byte{}} @@ -1727,7 +1762,7 @@ func (t *http2Client) keepalive() { // timeoutLeft. This will ensure that we wait only for kp.Time // before sending out the next ping (for cases where the ping is // acked). - sleepDuration := minTime(t.kp.Time, timeoutLeft) + sleepDuration := min(t.kp.Time, timeoutLeft) timeoutLeft -= sleepDuration timer.Reset(sleepDuration) case <-t.ctx.Done(): diff --git a/vendor/google.golang.org/grpc/internal/transport/http2_server.go b/vendor/google.golang.org/grpc/internal/transport/http2_server.go index d582e0471..584b50fe5 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http2_server.go +++ b/vendor/google.golang.org/grpc/internal/transport/http2_server.go @@ -25,6 +25,7 @@ import ( "fmt" "io" "math" + "math/rand" "net" "net/http" "strconv" @@ -38,12 +39,12 @@ import ( "google.golang.org/grpc/internal/grpcutil" "google.golang.org/grpc/internal/pretty" "google.golang.org/grpc/internal/syscall" + "google.golang.org/grpc/mem" "google.golang.org/protobuf/proto" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/internal/channelz" - "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/internal/grpcsync" "google.golang.org/grpc/keepalive" "google.golang.org/grpc/metadata" @@ -119,7 +120,7 @@ type http2Server struct { // Fields below are for channelz metric collection. channelz *channelz.Socket - bufferPool *bufferPool + bufferPool mem.BufferPool connectionID uint64 @@ -261,7 +262,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, idle: time.Now(), kep: kep, initialWindowSize: iwz, - bufferPool: newBufferPool(), + bufferPool: config.BufferPool, } var czSecurity credentials.ChannelzSecurityValue if au, ok := authInfo.(credentials.ChannelzSecurityInfo); ok { @@ -330,8 +331,7 @@ func NewServerTransport(conn net.Conn, config *ServerConfig) (_ ServerTransport, t.handleSettings(sf) go func() { - t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger) - t.loopy.ssGoAwayHandler = t.outgoingGoAwayHandler + t.loopy = newLoopyWriter(serverSide, t.framer, t.controlBuf, t.bdpEst, t.conn, t.logger, t.outgoingGoAwayHandler, t.bufferPool) err := t.loopy.run() close(t.loopyWriterDone) if !isIOError(err) { @@ -614,10 +614,9 @@ func (t *http2Server) operateHeaders(ctx context.Context, frame *http2.MetaHeade s.wq = newWriteQuota(defaultWriteQuota, s.ctxDone) s.trReader = &transportReader{ reader: &recvBufferReader{ - ctx: s.ctx, - ctxDone: s.ctxDone, - recv: s.buf, - freeBuffer: t.bufferPool.put, + ctx: s.ctx, + ctxDone: s.ctxDone, + recv: s.buf, }, windowHandler: func(n int) { t.updateWindow(s, uint32(n)) @@ -814,10 +813,13 @@ func (t *http2Server) handleData(f *http2.DataFrame) { // guarantee f.Data() is consumed before the arrival of next frame. // Can this copy be eliminated? if len(f.Data()) > 0 { - buffer := t.bufferPool.get() - buffer.Reset() - buffer.Write(f.Data()) - s.write(recvMsg{buffer: buffer}) + pool := t.bufferPool + if pool == nil { + // Note that this is only supposed to be nil in tests. Otherwise, stream is + // always initialized with a BufferPool. + pool = mem.DefaultBufferPool() + } + s.write(recvMsg{buffer: mem.Copy(f.Data(), pool)}) } } if f.StreamEnded() { @@ -860,7 +862,7 @@ func (t *http2Server) handleSettings(f *http2.SettingsFrame) { } return nil }) - t.controlBuf.executeAndPut(func(any) bool { + t.controlBuf.executeAndPut(func() bool { for _, f := range updateFuncs { f() } @@ -1014,12 +1016,13 @@ func (t *http2Server) writeHeaderLocked(s *Stream) error { headerFields = append(headerFields, hpack.HeaderField{Name: "grpc-encoding", Value: s.sendCompress}) } headerFields = appendHeaderFieldsFromMD(headerFields, s.header) - success, err := t.controlBuf.executeAndPut(t.checkForHeaderListSize, &headerFrame{ + hf := &headerFrame{ streamID: s.id, hf: headerFields, endStream: false, onWrite: t.setResetPingStrikes, - }) + } + success, err := t.controlBuf.executeAndPut(func() bool { return t.checkForHeaderListSize(hf) }, hf) if !success { if err != nil { return err @@ -1089,7 +1092,9 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { onWrite: t.setResetPingStrikes, } - success, err := t.controlBuf.execute(t.checkForHeaderListSize, trailingHeader) + success, err := t.controlBuf.executeAndPut(func() bool { + return t.checkForHeaderListSize(trailingHeader) + }, nil) if !success { if err != nil { return err @@ -1112,27 +1117,37 @@ func (t *http2Server) WriteStatus(s *Stream, st *status.Status) error { // Write converts the data into HTTP2 data frame and sends it out. Non-nil error // is returns if it fails (e.g., framing error, transport error). -func (t *http2Server) Write(s *Stream, hdr []byte, data []byte, opts *Options) error { +func (t *http2Server) Write(s *Stream, hdr []byte, data mem.BufferSlice, _ *Options) error { + reader := data.Reader() + if !s.isHeaderSent() { // Headers haven't been written yet. if err := t.WriteHeader(s, nil); err != nil { + _ = reader.Close() return err } } else { // Writing headers checks for this condition. if s.getState() == streamDone { + _ = reader.Close() return t.streamContextErr(s) } } + df := &dataFrame{ streamID: s.id, h: hdr, - d: data, + reader: reader, onEachWrite: t.setResetPingStrikes, } - if err := s.wq.get(int32(len(hdr) + len(data))); err != nil { + if err := s.wq.get(int32(len(hdr) + df.reader.Remaining())); err != nil { + _ = reader.Close() return t.streamContextErr(s) } - return t.controlBuf.put(df) + if err := t.controlBuf.put(df); err != nil { + _ = reader.Close() + return err + } + return nil } // keepalive running in a separate goroutine does the following: @@ -1208,7 +1223,7 @@ func (t *http2Server) keepalive() { continue } if outstandingPing && kpTimeoutLeft <= 0 { - t.Close(fmt.Errorf("keepalive ping not acked within timeout %s", t.kp.Time)) + t.Close(fmt.Errorf("keepalive ping not acked within timeout %s", t.kp.Timeout)) return } if !outstandingPing { @@ -1223,7 +1238,7 @@ func (t *http2Server) keepalive() { // timeoutLeft. This will ensure that we wait only for kp.Time // before sending out the next ping (for cases where the ping is // acked). - sleepDuration := minTime(t.kp.Time, kpTimeoutLeft) + sleepDuration := min(t.kp.Time, kpTimeoutLeft) kpTimeoutLeft -= sleepDuration kpTimer.Reset(sleepDuration) case <-t.done: @@ -1440,7 +1455,7 @@ func getJitter(v time.Duration) time.Duration { } // Generate a jitter between +/- 10% of the value. r := int64(v / 10) - j := grpcrand.Int63n(2*r) - r + j := rand.Int63n(2*r) - r return time.Duration(j) } diff --git a/vendor/google.golang.org/grpc/internal/transport/http_util.go b/vendor/google.golang.org/grpc/internal/transport/http_util.go index 39cef3bd4..3613d7b64 100644 --- a/vendor/google.golang.org/grpc/internal/transport/http_util.go +++ b/vendor/google.golang.org/grpc/internal/transport/http_util.go @@ -317,28 +317,32 @@ func newBufWriter(conn net.Conn, batchSize int, pool *sync.Pool) *bufWriter { return w } -func (w *bufWriter) Write(b []byte) (n int, err error) { +func (w *bufWriter) Write(b []byte) (int, error) { if w.err != nil { return 0, w.err } if w.batchSize == 0 { // Buffer has been disabled. - n, err = w.conn.Write(b) + n, err := w.conn.Write(b) return n, toIOError(err) } if w.buf == nil { b := w.pool.Get().(*[]byte) w.buf = *b } + written := 0 for len(b) > 0 { - nn := copy(w.buf[w.offset:], b) - b = b[nn:] - w.offset += nn - n += nn - if w.offset >= w.batchSize { - err = w.flushKeepBuffer() + copied := copy(w.buf[w.offset:], b) + b = b[copied:] + written += copied + w.offset += copied + if w.offset < w.batchSize { + continue + } + if err := w.flushKeepBuffer(); err != nil { + return written, err } } - return n, err + return written, nil } func (w *bufWriter) Flush() error { @@ -389,7 +393,7 @@ type framer struct { fr *http2.Framer } -var writeBufferPoolMap map[int]*sync.Pool = make(map[int]*sync.Pool) +var writeBufferPoolMap = make(map[int]*sync.Pool) var writeBufferMutex sync.Mutex func newFramer(conn net.Conn, writeBufferSize, readBufferSize int, sharedWriteBuffer bool, maxHeaderListSize uint32) *framer { diff --git a/vendor/google.golang.org/grpc/internal/transport/proxy.go b/vendor/google.golang.org/grpc/internal/transport/proxy.go index 24fa10325..54b224436 100644 --- a/vendor/google.golang.org/grpc/internal/transport/proxy.go +++ b/vendor/google.golang.org/grpc/internal/transport/proxy.go @@ -107,8 +107,14 @@ func doHTTPConnectHandshake(ctx context.Context, conn net.Conn, backendAddr stri } return nil, fmt.Errorf("failed to do connect handshake, response: %q", dump) } - - return &bufConn{Conn: conn, r: r}, nil + // The buffer could contain extra bytes from the target server, so we can't + // discard it. However, in many cases where the server waits for the client + // to send the first message (e.g. when TLS is being used), the buffer will + // be empty, so we can avoid the overhead of reading through this buffer. + if r.Buffered() != 0 { + return &bufConn{Conn: conn, r: r}, nil + } + return conn, nil } // proxyDial dials, connecting to a proxy first if necessary. Checks if a proxy diff --git a/vendor/google.golang.org/grpc/internal/transport/transport.go b/vendor/google.golang.org/grpc/internal/transport/transport.go index 0d2a6e47f..924ba4f36 100644 --- a/vendor/google.golang.org/grpc/internal/transport/transport.go +++ b/vendor/google.golang.org/grpc/internal/transport/transport.go @@ -22,7 +22,6 @@ package transport import ( - "bytes" "context" "errors" "fmt" @@ -37,6 +36,7 @@ import ( "google.golang.org/grpc/credentials" "google.golang.org/grpc/internal/channelz" "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/mem" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/resolver" @@ -47,32 +47,10 @@ import ( const logLevel = 2 -type bufferPool struct { - pool sync.Pool -} - -func newBufferPool() *bufferPool { - return &bufferPool{ - pool: sync.Pool{ - New: func() any { - return new(bytes.Buffer) - }, - }, - } -} - -func (p *bufferPool) get() *bytes.Buffer { - return p.pool.Get().(*bytes.Buffer) -} - -func (p *bufferPool) put(b *bytes.Buffer) { - p.pool.Put(b) -} - // recvMsg represents the received msg from the transport. All transport // protocol specific info has been removed. type recvMsg struct { - buffer *bytes.Buffer + buffer mem.Buffer // nil: received some data // io.EOF: stream is completed. data is nil. // other non-nil error: transport failure. data is nil. @@ -102,6 +80,9 @@ func newRecvBuffer() *recvBuffer { func (b *recvBuffer) put(r recvMsg) { b.mu.Lock() if b.err != nil { + // drop the buffer on the floor. Since b.err is not nil, any subsequent reads + // will always return an error, making this buffer inaccessible. + r.buffer.Free() b.mu.Unlock() // An error had occurred earlier, don't accept more // data or errors. @@ -148,45 +129,97 @@ type recvBufferReader struct { ctx context.Context ctxDone <-chan struct{} // cache of ctx.Done() (for performance). recv *recvBuffer - last *bytes.Buffer // Stores the remaining data in the previous calls. + last mem.Buffer // Stores the remaining data in the previous calls. err error - freeBuffer func(*bytes.Buffer) } -// Read reads the next len(p) bytes from last. If last is drained, it tries to -// read additional data from recv. It blocks if there no additional data available -// in recv. If Read returns any non-nil error, it will continue to return that error. -func (r *recvBufferReader) Read(p []byte) (n int, err error) { +func (r *recvBufferReader) ReadHeader(header []byte) (n int, err error) { if r.err != nil { return 0, r.err } if r.last != nil { - // Read remaining data left in last call. - copied, _ := r.last.Read(p) - if r.last.Len() == 0 { - r.freeBuffer(r.last) + n, r.last = mem.ReadUnsafe(header, r.last) + return n, nil + } + if r.closeStream != nil { + n, r.err = r.readHeaderClient(header) + } else { + n, r.err = r.readHeader(header) + } + return n, r.err +} + +// Read reads the next n bytes from last. If last is drained, it tries to read +// additional data from recv. It blocks if there no additional data available in +// recv. If Read returns any non-nil error, it will continue to return that +// error. +func (r *recvBufferReader) Read(n int) (buf mem.Buffer, err error) { + if r.err != nil { + return nil, r.err + } + if r.last != nil { + buf = r.last + if r.last.Len() > n { + buf, r.last = mem.SplitUnsafe(buf, n) + } else { r.last = nil } - return copied, nil + return buf, nil } if r.closeStream != nil { - n, r.err = r.readClient(p) + buf, r.err = r.readClient(n) } else { - n, r.err = r.read(p) + buf, r.err = r.read(n) } - return n, r.err + return buf, r.err } -func (r *recvBufferReader) read(p []byte) (n int, err error) { +func (r *recvBufferReader) readHeader(header []byte) (n int, err error) { select { case <-r.ctxDone: return 0, ContextErr(r.ctx.Err()) case m := <-r.recv.get(): - return r.readAdditional(m, p) + return r.readHeaderAdditional(m, header) + } +} + +func (r *recvBufferReader) read(n int) (buf mem.Buffer, err error) { + select { + case <-r.ctxDone: + return nil, ContextErr(r.ctx.Err()) + case m := <-r.recv.get(): + return r.readAdditional(m, n) + } +} + +func (r *recvBufferReader) readHeaderClient(header []byte) (n int, err error) { + // If the context is canceled, then closes the stream with nil metadata. + // closeStream writes its error parameter to r.recv as a recvMsg. + // r.readAdditional acts on that message and returns the necessary error. + select { + case <-r.ctxDone: + // Note that this adds the ctx error to the end of recv buffer, and + // reads from the head. This will delay the error until recv buffer is + // empty, thus will delay ctx cancellation in Recv(). + // + // It's done this way to fix a race between ctx cancel and trailer. The + // race was, stream.Recv() may return ctx error if ctxDone wins the + // race, but stream.Trailer() may return a non-nil md because the stream + // was not marked as done when trailer is received. This closeStream + // call will mark stream as done, thus fix the race. + // + // TODO: delaying ctx error seems like a unnecessary side effect. What + // we really want is to mark the stream as done, and return ctx error + // faster. + r.closeStream(ContextErr(r.ctx.Err())) + m := <-r.recv.get() + return r.readHeaderAdditional(m, header) + case m := <-r.recv.get(): + return r.readHeaderAdditional(m, header) } } -func (r *recvBufferReader) readClient(p []byte) (n int, err error) { +func (r *recvBufferReader) readClient(n int) (buf mem.Buffer, err error) { // If the context is canceled, then closes the stream with nil metadata. // closeStream writes its error parameter to r.recv as a recvMsg. // r.readAdditional acts on that message and returns the necessary error. @@ -207,25 +240,40 @@ func (r *recvBufferReader) readClient(p []byte) (n int, err error) { // faster. r.closeStream(ContextErr(r.ctx.Err())) m := <-r.recv.get() - return r.readAdditional(m, p) + return r.readAdditional(m, n) case m := <-r.recv.get(): - return r.readAdditional(m, p) + return r.readAdditional(m, n) } } -func (r *recvBufferReader) readAdditional(m recvMsg, p []byte) (n int, err error) { +func (r *recvBufferReader) readHeaderAdditional(m recvMsg, header []byte) (n int, err error) { r.recv.load() if m.err != nil { + if m.buffer != nil { + m.buffer.Free() + } return 0, m.err } - copied, _ := m.buffer.Read(p) - if m.buffer.Len() == 0 { - r.freeBuffer(m.buffer) - r.last = nil - } else { - r.last = m.buffer + + n, r.last = mem.ReadUnsafe(header, m.buffer) + + return n, nil +} + +func (r *recvBufferReader) readAdditional(m recvMsg, n int) (b mem.Buffer, err error) { + r.recv.load() + if m.err != nil { + if m.buffer != nil { + m.buffer.Free() + } + return nil, m.err + } + + if m.buffer.Len() > n { + m.buffer, r.last = mem.SplitUnsafe(m.buffer, n) } - return copied, nil + + return m.buffer, nil } type streamState uint32 @@ -241,7 +289,7 @@ const ( type Stream struct { id uint32 st ServerTransport // nil for client side Stream - ct *http2Client // nil for server side Stream + ct ClientTransport // nil for server side Stream ctx context.Context // the associated context of the stream cancel context.CancelFunc // always nil for client side Stream done chan struct{} // closed at the end of stream to unblock writers. On the client side. @@ -251,7 +299,7 @@ type Stream struct { recvCompress string sendCompress string buf *recvBuffer - trReader io.Reader + trReader *transportReader fc *inFlow wq *writeQuota @@ -304,7 +352,7 @@ func (s *Stream) isHeaderSent() bool { } // updateHeaderSent updates headerSent and returns true -// if it was alreay set. It is valid only on server-side. +// if it was already set. It is valid only on server-side. func (s *Stream) updateHeaderSent() bool { return atomic.SwapUint32(&s.headerSent, 1) == 1 } @@ -408,7 +456,7 @@ func (s *Stream) TrailersOnly() bool { return s.noHeaders } -// Trailer returns the cached trailer metedata. Note that if it is not called +// Trailer returns the cached trailer metadata. Note that if it is not called // after the entire stream is done, it could return an empty MD. Client // side only. // It can be safely read only after stream has ended that is either read @@ -499,36 +547,87 @@ func (s *Stream) write(m recvMsg) { s.buf.put(m) } -// Read reads all p bytes from the wire for this stream. -func (s *Stream) Read(p []byte) (n int, err error) { +func (s *Stream) ReadHeader(header []byte) (err error) { + // Don't request a read if there was an error earlier + if er := s.trReader.er; er != nil { + return er + } + s.requestRead(len(header)) + for len(header) != 0 { + n, err := s.trReader.ReadHeader(header) + header = header[n:] + if len(header) == 0 { + err = nil + } + if err != nil { + if n > 0 && err == io.EOF { + err = io.ErrUnexpectedEOF + } + return err + } + } + return nil +} + +// Read reads n bytes from the wire for this stream. +func (s *Stream) Read(n int) (data mem.BufferSlice, err error) { // Don't request a read if there was an error earlier - if er := s.trReader.(*transportReader).er; er != nil { - return 0, er + if er := s.trReader.er; er != nil { + return nil, er } - s.requestRead(len(p)) - return io.ReadFull(s.trReader, p) + s.requestRead(n) + for n != 0 { + buf, err := s.trReader.Read(n) + var bufLen int + if buf != nil { + bufLen = buf.Len() + } + n -= bufLen + if n == 0 { + err = nil + } + if err != nil { + if bufLen > 0 && err == io.EOF { + err = io.ErrUnexpectedEOF + } + data.Free() + return nil, err + } + data = append(data, buf) + } + return data, nil } -// tranportReader reads all the data available for this Stream from the transport and +// transportReader reads all the data available for this Stream from the transport and // passes them into the decoder, which converts them into a gRPC message stream. // The error is io.EOF when the stream is done or another non-nil error if // the stream broke. type transportReader struct { - reader io.Reader + reader *recvBufferReader // The handler to control the window update procedure for both this // particular stream and the associated transport. windowHandler func(int) er error } -func (t *transportReader) Read(p []byte) (n int, err error) { - n, err = t.reader.Read(p) +func (t *transportReader) ReadHeader(header []byte) (int, error) { + n, err := t.reader.ReadHeader(header) if err != nil { t.er = err - return + return 0, err } t.windowHandler(n) - return + return n, nil +} + +func (t *transportReader) Read(n int) (mem.Buffer, error) { + buf, err := t.reader.Read(n) + if err != nil { + t.er = err + return buf, err + } + t.windowHandler(buf.Len()) + return buf, nil } // BytesReceived indicates whether any bytes have been received on this stream. @@ -574,6 +673,7 @@ type ServerConfig struct { ChannelzParent *channelz.Server MaxHeaderListSize *uint32 HeaderTableSize *uint32 + BufferPool mem.BufferPool } // ConnectOptions covers all relevant options for communicating with the server. @@ -612,6 +712,8 @@ type ConnectOptions struct { MaxHeaderListSize *uint32 // UseProxy specifies if a proxy should be used. UseProxy bool + // The mem.BufferPool to use when reading/writing to the wire. + BufferPool mem.BufferPool } // NewClientTransport establishes the transport with the required ConnectOptions @@ -673,7 +775,7 @@ type ClientTransport interface { // Write sends the data for the given stream. A nil stream indicates // the write is to be performed on the transport as a whole. - Write(s *Stream, hdr []byte, data []byte, opts *Options) error + Write(s *Stream, hdr []byte, data mem.BufferSlice, opts *Options) error // NewStream creates a Stream for an RPC. NewStream(ctx context.Context, callHdr *CallHdr) (*Stream, error) @@ -725,7 +827,7 @@ type ServerTransport interface { // Write sends the data for the given stream. // Write may not be called on all streams. - Write(s *Stream, hdr []byte, data []byte, opts *Options) error + Write(s *Stream, hdr []byte, data mem.BufferSlice, opts *Options) error // WriteStatus sends the status of a stream to the client. WriteStatus is // the final call made on a stream and always occurs. @@ -798,7 +900,7 @@ var ( // connection is draining. This could be caused by goaway or balancer // removing the address. errStreamDrain = status.Error(codes.Unavailable, "the connection is draining") - // errStreamDone is returned from write at the client side to indiacte application + // errStreamDone is returned from write at the client side to indicate application // layer of an error. errStreamDone = errors.New("the stream is done") // StatusGoAway indicates that the server sent a GOAWAY that included this diff --git a/vendor/google.golang.org/grpc/keepalive/keepalive.go b/vendor/google.golang.org/grpc/keepalive/keepalive.go index 34d31b5e7..eb42b19fb 100644 --- a/vendor/google.golang.org/grpc/keepalive/keepalive.go +++ b/vendor/google.golang.org/grpc/keepalive/keepalive.go @@ -34,15 +34,29 @@ type ClientParameters struct { // After a duration of this time if the client doesn't see any activity it // pings the server to see if the transport is still alive. // If set below 10s, a minimum value of 10s will be used instead. - Time time.Duration // The current default value is infinity. + // + // Note that gRPC servers have a default EnforcementPolicy.MinTime of 5 + // minutes (which means the client shouldn't ping more frequently than every + // 5 minutes). + // + // Though not ideal, it's not a strong requirement for Time to be less than + // EnforcementPolicy.MinTime. Time will automatically double if the server + // disconnects due to its enforcement policy. + // + // For more details, see + // https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md + Time time.Duration // After having pinged for keepalive check, the client waits for a duration // of Timeout and if no activity is seen even after that the connection is // closed. - Timeout time.Duration // The current default value is 20 seconds. + // + // If keepalive is enabled, and this value is not explicitly set, the default + // is 20 seconds. + Timeout time.Duration // If true, client sends keepalive pings even with no active RPCs. If false, // when there are no active RPCs, Time and Timeout will be ignored and no // keepalive pings will be sent. - PermitWithoutStream bool // false by default. + PermitWithoutStream bool } // ServerParameters is used to set keepalive and max-age parameters on the diff --git a/vendor/google.golang.org/grpc/mem/buffer_pool.go b/vendor/google.golang.org/grpc/mem/buffer_pool.go new file mode 100644 index 000000000..c37c58c02 --- /dev/null +++ b/vendor/google.golang.org/grpc/mem/buffer_pool.go @@ -0,0 +1,194 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package mem + +import ( + "sort" + "sync" + + "google.golang.org/grpc/internal" +) + +// BufferPool is a pool of buffers that can be shared and reused, resulting in +// decreased memory allocation. +type BufferPool interface { + // Get returns a buffer with specified length from the pool. + Get(length int) *[]byte + + // Put returns a buffer to the pool. + Put(*[]byte) +} + +var defaultBufferPoolSizes = []int{ + 256, + 4 << 10, // 4KB (go page size) + 16 << 10, // 16KB (max HTTP/2 frame size used by gRPC) + 32 << 10, // 32KB (default buffer size for io.Copy) + 1 << 20, // 1MB +} + +var defaultBufferPool BufferPool + +func init() { + defaultBufferPool = NewTieredBufferPool(defaultBufferPoolSizes...) + + internal.SetDefaultBufferPoolForTesting = func(pool BufferPool) { + defaultBufferPool = pool + } + + internal.SetBufferPoolingThresholdForTesting = func(threshold int) { + bufferPoolingThreshold = threshold + } +} + +// DefaultBufferPool returns the current default buffer pool. It is a BufferPool +// created with NewBufferPool that uses a set of default sizes optimized for +// expected workflows. +func DefaultBufferPool() BufferPool { + return defaultBufferPool +} + +// NewTieredBufferPool returns a BufferPool implementation that uses multiple +// underlying pools of the given pool sizes. +func NewTieredBufferPool(poolSizes ...int) BufferPool { + sort.Ints(poolSizes) + pools := make([]*sizedBufferPool, len(poolSizes)) + for i, s := range poolSizes { + pools[i] = newSizedBufferPool(s) + } + return &tieredBufferPool{ + sizedPools: pools, + } +} + +// tieredBufferPool implements the BufferPool interface with multiple tiers of +// buffer pools for different sizes of buffers. +type tieredBufferPool struct { + sizedPools []*sizedBufferPool + fallbackPool simpleBufferPool +} + +func (p *tieredBufferPool) Get(size int) *[]byte { + return p.getPool(size).Get(size) +} + +func (p *tieredBufferPool) Put(buf *[]byte) { + p.getPool(cap(*buf)).Put(buf) +} + +func (p *tieredBufferPool) getPool(size int) BufferPool { + poolIdx := sort.Search(len(p.sizedPools), func(i int) bool { + return p.sizedPools[i].defaultSize >= size + }) + + if poolIdx == len(p.sizedPools) { + return &p.fallbackPool + } + + return p.sizedPools[poolIdx] +} + +// sizedBufferPool is a BufferPool implementation that is optimized for specific +// buffer sizes. For example, HTTP/2 frames within gRPC have a default max size +// of 16kb and a sizedBufferPool can be configured to only return buffers with a +// capacity of 16kb. Note that however it does not support returning larger +// buffers and in fact panics if such a buffer is requested. Because of this, +// this BufferPool implementation is not meant to be used on its own and rather +// is intended to be embedded in a tieredBufferPool such that Get is only +// invoked when the required size is smaller than or equal to defaultSize. +type sizedBufferPool struct { + pool sync.Pool + defaultSize int +} + +func (p *sizedBufferPool) Get(size int) *[]byte { + buf := p.pool.Get().(*[]byte) + b := *buf + clear(b[:cap(b)]) + *buf = b[:size] + return buf +} + +func (p *sizedBufferPool) Put(buf *[]byte) { + if cap(*buf) < p.defaultSize { + // Ignore buffers that are too small to fit in the pool. Otherwise, when + // Get is called it will panic as it tries to index outside the bounds + // of the buffer. + return + } + p.pool.Put(buf) +} + +func newSizedBufferPool(size int) *sizedBufferPool { + return &sizedBufferPool{ + pool: sync.Pool{ + New: func() any { + buf := make([]byte, size) + return &buf + }, + }, + defaultSize: size, + } +} + +var _ BufferPool = (*simpleBufferPool)(nil) + +// simpleBufferPool is an implementation of the BufferPool interface that +// attempts to pool buffers with a sync.Pool. When Get is invoked, it tries to +// acquire a buffer from the pool but if that buffer is too small, it returns it +// to the pool and creates a new one. +type simpleBufferPool struct { + pool sync.Pool +} + +func (p *simpleBufferPool) Get(size int) *[]byte { + bs, ok := p.pool.Get().(*[]byte) + if ok && cap(*bs) >= size { + *bs = (*bs)[:size] + return bs + } + + // A buffer was pulled from the pool, but it is too small. Put it back in + // the pool and create one large enough. + if ok { + p.pool.Put(bs) + } + + b := make([]byte, size) + return &b +} + +func (p *simpleBufferPool) Put(buf *[]byte) { + p.pool.Put(buf) +} + +var _ BufferPool = NopBufferPool{} + +// NopBufferPool is a buffer pool that returns new buffers without pooling. +type NopBufferPool struct{} + +// Get returns a buffer with specified length from the pool. +func (NopBufferPool) Get(length int) *[]byte { + b := make([]byte, length) + return &b +} + +// Put returns a buffer to the pool. +func (NopBufferPool) Put(*[]byte) { +} diff --git a/vendor/google.golang.org/grpc/mem/buffer_slice.go b/vendor/google.golang.org/grpc/mem/buffer_slice.go new file mode 100644 index 000000000..228e9c2f2 --- /dev/null +++ b/vendor/google.golang.org/grpc/mem/buffer_slice.go @@ -0,0 +1,226 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package mem + +import ( + "io" +) + +// BufferSlice offers a means to represent data that spans one or more Buffer +// instances. A BufferSlice is meant to be immutable after creation, and methods +// like Ref create and return copies of the slice. This is why all methods have +// value receivers rather than pointer receivers. +// +// Note that any of the methods that read the underlying buffers such as Ref, +// Len or CopyTo etc., will panic if any underlying buffers have already been +// freed. It is recommended to not directly interact with any of the underlying +// buffers directly, rather such interactions should be mediated through the +// various methods on this type. +// +// By convention, any APIs that return (mem.BufferSlice, error) should reduce +// the burden on the caller by never returning a mem.BufferSlice that needs to +// be freed if the error is non-nil, unless explicitly stated. +type BufferSlice []Buffer + +// Len returns the sum of the length of all the Buffers in this slice. +// +// # Warning +// +// Invoking the built-in len on a BufferSlice will return the number of buffers +// in the slice, and *not* the value returned by this function. +func (s BufferSlice) Len() int { + var length int + for _, b := range s { + length += b.Len() + } + return length +} + +// Ref invokes Ref on each buffer in the slice. +func (s BufferSlice) Ref() { + for _, b := range s { + b.Ref() + } +} + +// Free invokes Buffer.Free() on each Buffer in the slice. +func (s BufferSlice) Free() { + for _, b := range s { + b.Free() + } +} + +// CopyTo copies each of the underlying Buffer's data into the given buffer, +// returning the number of bytes copied. Has the same semantics as the copy +// builtin in that it will copy as many bytes as it can, stopping when either dst +// is full or s runs out of data, returning the minimum of s.Len() and len(dst). +func (s BufferSlice) CopyTo(dst []byte) int { + off := 0 + for _, b := range s { + off += copy(dst[off:], b.ReadOnlyData()) + } + return off +} + +// Materialize concatenates all the underlying Buffer's data into a single +// contiguous buffer using CopyTo. +func (s BufferSlice) Materialize() []byte { + l := s.Len() + if l == 0 { + return nil + } + out := make([]byte, l) + s.CopyTo(out) + return out +} + +// MaterializeToBuffer functions like Materialize except that it writes the data +// to a single Buffer pulled from the given BufferPool. +// +// As a special case, if the input BufferSlice only actually has one Buffer, this +// function simply increases the refcount before returning said Buffer. Freeing this +// buffer won't release it until the BufferSlice is itself released. +func (s BufferSlice) MaterializeToBuffer(pool BufferPool) Buffer { + if len(s) == 1 { + s[0].Ref() + return s[0] + } + sLen := s.Len() + if sLen == 0 { + return emptyBuffer{} + } + buf := pool.Get(sLen) + s.CopyTo(*buf) + return NewBuffer(buf, pool) +} + +// Reader returns a new Reader for the input slice after taking references to +// each underlying buffer. +func (s BufferSlice) Reader() Reader { + s.Ref() + return &sliceReader{ + data: s, + len: s.Len(), + } +} + +// Reader exposes a BufferSlice's data as an io.Reader, allowing it to interface +// with other parts systems. It also provides an additional convenience method +// Remaining(), which returns the number of unread bytes remaining in the slice. +// Buffers will be freed as they are read. +type Reader interface { + io.Reader + io.ByteReader + // Close frees the underlying BufferSlice and never returns an error. Subsequent + // calls to Read will return (0, io.EOF). + Close() error + // Remaining returns the number of unread bytes remaining in the slice. + Remaining() int +} + +type sliceReader struct { + data BufferSlice + len int + // The index into data[0].ReadOnlyData(). + bufferIdx int +} + +func (r *sliceReader) Remaining() int { + return r.len +} + +func (r *sliceReader) Close() error { + r.data.Free() + r.data = nil + r.len = 0 + return nil +} + +func (r *sliceReader) freeFirstBufferIfEmpty() bool { + if len(r.data) == 0 || r.bufferIdx != len(r.data[0].ReadOnlyData()) { + return false + } + + r.data[0].Free() + r.data = r.data[1:] + r.bufferIdx = 0 + return true +} + +func (r *sliceReader) Read(buf []byte) (n int, _ error) { + if r.len == 0 { + return 0, io.EOF + } + + for len(buf) != 0 && r.len != 0 { + // Copy as much as possible from the first Buffer in the slice into the + // given byte slice. + data := r.data[0].ReadOnlyData() + copied := copy(buf, data[r.bufferIdx:]) + r.len -= copied // Reduce len by the number of bytes copied. + r.bufferIdx += copied // Increment the buffer index. + n += copied // Increment the total number of bytes read. + buf = buf[copied:] // Shrink the given byte slice. + + // If we have copied all the data from the first Buffer, free it and advance to + // the next in the slice. + r.freeFirstBufferIfEmpty() + } + + return n, nil +} + +func (r *sliceReader) ReadByte() (byte, error) { + if r.len == 0 { + return 0, io.EOF + } + + // There may be any number of empty buffers in the slice, clear them all until a + // non-empty buffer is reached. This is guaranteed to exit since r.len is not 0. + for r.freeFirstBufferIfEmpty() { + } + + b := r.data[0].ReadOnlyData()[r.bufferIdx] + r.len-- + r.bufferIdx++ + // Free the first buffer in the slice if the last byte was read + r.freeFirstBufferIfEmpty() + return b, nil +} + +var _ io.Writer = (*writer)(nil) + +type writer struct { + buffers *BufferSlice + pool BufferPool +} + +func (w *writer) Write(p []byte) (n int, err error) { + b := Copy(p, w.pool) + *w.buffers = append(*w.buffers, b) + return b.Len(), nil +} + +// NewWriter wraps the given BufferSlice and BufferPool to implement the +// io.Writer interface. Every call to Write copies the contents of the given +// buffer into a new Buffer pulled from the given pool and the Buffer is added to +// the given BufferSlice. +func NewWriter(buffers *BufferSlice, pool BufferPool) io.Writer { + return &writer{buffers: buffers, pool: pool} +} diff --git a/vendor/google.golang.org/grpc/mem/buffers.go b/vendor/google.golang.org/grpc/mem/buffers.go new file mode 100644 index 000000000..4d66b2ccc --- /dev/null +++ b/vendor/google.golang.org/grpc/mem/buffers.go @@ -0,0 +1,252 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package mem provides utilities that facilitate memory reuse in byte slices +// that are used as buffers. +// +// # Experimental +// +// Notice: All APIs in this package are EXPERIMENTAL and may be changed or +// removed in a later release. +package mem + +import ( + "fmt" + "sync" + "sync/atomic" +) + +// A Buffer represents a reference counted piece of data (in bytes) that can be +// acquired by a call to NewBuffer() or Copy(). A reference to a Buffer may be +// released by calling Free(), which invokes the free function given at creation +// only after all references are released. +// +// Note that a Buffer is not safe for concurrent access and instead each +// goroutine should use its own reference to the data, which can be acquired via +// a call to Ref(). +// +// Attempts to access the underlying data after releasing the reference to the +// Buffer will panic. +type Buffer interface { + // ReadOnlyData returns the underlying byte slice. Note that it is undefined + // behavior to modify the contents of this slice in any way. + ReadOnlyData() []byte + // Ref increases the reference counter for this Buffer. + Ref() + // Free decrements this Buffer's reference counter and frees the underlying + // byte slice if the counter reaches 0 as a result of this call. + Free() + // Len returns the Buffer's size. + Len() int + + split(n int) (left, right Buffer) + read(buf []byte) (int, Buffer) +} + +var ( + bufferPoolingThreshold = 1 << 10 + + bufferObjectPool = sync.Pool{New: func() any { return new(buffer) }} + refObjectPool = sync.Pool{New: func() any { return new(atomic.Int32) }} +) + +func IsBelowBufferPoolingThreshold(size int) bool { + return size <= bufferPoolingThreshold +} + +type buffer struct { + origData *[]byte + data []byte + refs *atomic.Int32 + pool BufferPool +} + +func newBuffer() *buffer { + return bufferObjectPool.Get().(*buffer) +} + +// NewBuffer creates a new Buffer from the given data, initializing the reference +// counter to 1. The data will then be returned to the given pool when all +// references to the returned Buffer are released. As a special case to avoid +// additional allocations, if the given buffer pool is nil, the returned buffer +// will be a "no-op" Buffer where invoking Buffer.Free() does nothing and the +// underlying data is never freed. +// +// Note that the backing array of the given data is not copied. +func NewBuffer(data *[]byte, pool BufferPool) Buffer { + if pool == nil || IsBelowBufferPoolingThreshold(len(*data)) { + return (SliceBuffer)(*data) + } + b := newBuffer() + b.origData = data + b.data = *data + b.pool = pool + b.refs = refObjectPool.Get().(*atomic.Int32) + b.refs.Add(1) + return b +} + +// Copy creates a new Buffer from the given data, initializing the reference +// counter to 1. +// +// It acquires a []byte from the given pool and copies over the backing array +// of the given data. The []byte acquired from the pool is returned to the +// pool when all references to the returned Buffer are released. +func Copy(data []byte, pool BufferPool) Buffer { + if IsBelowBufferPoolingThreshold(len(data)) { + buf := make(SliceBuffer, len(data)) + copy(buf, data) + return buf + } + + buf := pool.Get(len(data)) + copy(*buf, data) + return NewBuffer(buf, pool) +} + +func (b *buffer) ReadOnlyData() []byte { + if b.refs == nil { + panic("Cannot read freed buffer") + } + return b.data +} + +func (b *buffer) Ref() { + if b.refs == nil { + panic("Cannot ref freed buffer") + } + b.refs.Add(1) +} + +func (b *buffer) Free() { + if b.refs == nil { + panic("Cannot free freed buffer") + } + + refs := b.refs.Add(-1) + switch { + case refs > 0: + return + case refs == 0: + if b.pool != nil { + b.pool.Put(b.origData) + } + + refObjectPool.Put(b.refs) + b.origData = nil + b.data = nil + b.refs = nil + b.pool = nil + bufferObjectPool.Put(b) + default: + panic("Cannot free freed buffer") + } +} + +func (b *buffer) Len() int { + return len(b.ReadOnlyData()) +} + +func (b *buffer) split(n int) (Buffer, Buffer) { + if b.refs == nil { + panic("Cannot split freed buffer") + } + + b.refs.Add(1) + split := newBuffer() + split.origData = b.origData + split.data = b.data[n:] + split.refs = b.refs + split.pool = b.pool + + b.data = b.data[:n] + + return b, split +} + +func (b *buffer) read(buf []byte) (int, Buffer) { + if b.refs == nil { + panic("Cannot read freed buffer") + } + + n := copy(buf, b.data) + if n == len(b.data) { + b.Free() + return n, nil + } + + b.data = b.data[n:] + return n, b +} + +// String returns a string representation of the buffer. May be used for +// debugging purposes. +func (b *buffer) String() string { + return fmt.Sprintf("mem.Buffer(%p, data: %p, length: %d)", b, b.ReadOnlyData(), len(b.ReadOnlyData())) +} + +func ReadUnsafe(dst []byte, buf Buffer) (int, Buffer) { + return buf.read(dst) +} + +// SplitUnsafe modifies the receiver to point to the first n bytes while it +// returns a new reference to the remaining bytes. The returned Buffer functions +// just like a normal reference acquired using Ref(). +func SplitUnsafe(buf Buffer, n int) (left, right Buffer) { + return buf.split(n) +} + +type emptyBuffer struct{} + +func (e emptyBuffer) ReadOnlyData() []byte { + return nil +} + +func (e emptyBuffer) Ref() {} +func (e emptyBuffer) Free() {} + +func (e emptyBuffer) Len() int { + return 0 +} + +func (e emptyBuffer) split(int) (left, right Buffer) { + return e, e +} + +func (e emptyBuffer) read([]byte) (int, Buffer) { + return 0, e +} + +type SliceBuffer []byte + +func (s SliceBuffer) ReadOnlyData() []byte { return s } +func (s SliceBuffer) Ref() {} +func (s SliceBuffer) Free() {} +func (s SliceBuffer) Len() int { return len(s) } + +func (s SliceBuffer) split(n int) (left, right Buffer) { + return s[:n], s[n:] +} + +func (s SliceBuffer) read(buf []byte) (int, Buffer) { + n := copy(buf, s) + if n == len(s) { + return n, nil + } + return n, s[n:] +} diff --git a/vendor/google.golang.org/grpc/metadata/metadata.go b/vendor/google.golang.org/grpc/metadata/metadata.go index 1e9485fd6..d2e15253b 100644 --- a/vendor/google.golang.org/grpc/metadata/metadata.go +++ b/vendor/google.golang.org/grpc/metadata/metadata.go @@ -213,11 +213,6 @@ func FromIncomingContext(ctx context.Context) (MD, bool) { // ValueFromIncomingContext returns the metadata value corresponding to the metadata // key from the incoming metadata if it exists. Keys are matched in a case insensitive // manner. -// -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. func ValueFromIncomingContext(ctx context.Context, key string) []string { md, ok := ctx.Value(mdIncomingKey{}).(MD) if !ok { @@ -228,7 +223,7 @@ func ValueFromIncomingContext(ctx context.Context, key string) []string { return copyOf(v) } for k, v := range md { - // Case insenitive comparison: MD is a map, and there's no guarantee + // Case insensitive comparison: MD is a map, and there's no guarantee // that the MD attached to the context is created using our helper // functions. if strings.EqualFold(k, key) { diff --git a/vendor/google.golang.org/grpc/peer/peer.go b/vendor/google.golang.org/grpc/peer/peer.go index a821ff9b2..499a49c8c 100644 --- a/vendor/google.golang.org/grpc/peer/peer.go +++ b/vendor/google.golang.org/grpc/peer/peer.go @@ -22,7 +22,9 @@ package peer import ( "context" + "fmt" "net" + "strings" "google.golang.org/grpc/credentials" ) @@ -39,6 +41,34 @@ type Peer struct { AuthInfo credentials.AuthInfo } +// String ensures the Peer types implements the Stringer interface in order to +// allow to print a context with a peerKey value effectively. +func (p *Peer) String() string { + if p == nil { + return "Peer" + } + sb := &strings.Builder{} + sb.WriteString("Peer{") + if p.Addr != nil { + fmt.Fprintf(sb, "Addr: '%s', ", p.Addr.String()) + } else { + fmt.Fprintf(sb, "Addr: , ") + } + if p.LocalAddr != nil { + fmt.Fprintf(sb, "LocalAddr: '%s', ", p.LocalAddr.String()) + } else { + fmt.Fprintf(sb, "LocalAddr: , ") + } + if p.AuthInfo != nil { + fmt.Fprintf(sb, "AuthInfo: '%s'", p.AuthInfo.AuthType()) + } else { + fmt.Fprintf(sb, "AuthInfo: ") + } + sb.WriteString("}") + + return sb.String() +} + type peerKey struct{} // NewContext creates a new context with peer information attached. diff --git a/vendor/google.golang.org/grpc/picker_wrapper.go b/vendor/google.golang.org/grpc/picker_wrapper.go index bf56faa76..bdaa2130e 100644 --- a/vendor/google.golang.org/grpc/picker_wrapper.go +++ b/vendor/google.golang.org/grpc/picker_wrapper.go @@ -20,8 +20,9 @@ package grpc import ( "context" + "fmt" "io" - "sync" + "sync/atomic" "google.golang.org/grpc/balancer" "google.golang.org/grpc/codes" @@ -32,35 +33,43 @@ import ( "google.golang.org/grpc/status" ) +// pickerGeneration stores a picker and a channel used to signal that a picker +// newer than this one is available. +type pickerGeneration struct { + // picker is the picker produced by the LB policy. May be nil if a picker + // has never been produced. + picker balancer.Picker + // blockingCh is closed when the picker has been invalidated because there + // is a new one available. + blockingCh chan struct{} +} + // pickerWrapper is a wrapper of balancer.Picker. It blocks on certain pick // actions and unblock when there's a picker update. type pickerWrapper struct { - mu sync.Mutex - done bool - blockingCh chan struct{} - picker balancer.Picker + // If pickerGen holds a nil pointer, the pickerWrapper is closed. + pickerGen atomic.Pointer[pickerGeneration] statsHandlers []stats.Handler // to record blocking picker calls } func newPickerWrapper(statsHandlers []stats.Handler) *pickerWrapper { - return &pickerWrapper{ - blockingCh: make(chan struct{}), + pw := &pickerWrapper{ statsHandlers: statsHandlers, } + pw.pickerGen.Store(&pickerGeneration{ + blockingCh: make(chan struct{}), + }) + return pw } -// updatePicker is called by UpdateBalancerState. It unblocks all blocked pick. +// updatePicker is called by UpdateState calls from the LB policy. It +// unblocks all blocked pick. func (pw *pickerWrapper) updatePicker(p balancer.Picker) { - pw.mu.Lock() - if pw.done { - pw.mu.Unlock() - return - } - pw.picker = p - // pw.blockingCh should never be nil. - close(pw.blockingCh) - pw.blockingCh = make(chan struct{}) - pw.mu.Unlock() + old := pw.pickerGen.Swap(&pickerGeneration{ + picker: p, + blockingCh: make(chan struct{}), + }) + close(old.blockingCh) } // doneChannelzWrapper performs the following: @@ -97,27 +106,24 @@ func (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer. var lastPickErr error for { - pw.mu.Lock() - if pw.done { - pw.mu.Unlock() + pg := pw.pickerGen.Load() + if pg == nil { return nil, balancer.PickResult{}, ErrClientConnClosing } - - if pw.picker == nil { - ch = pw.blockingCh + if pg.picker == nil { + ch = pg.blockingCh } - if ch == pw.blockingCh { + if ch == pg.blockingCh { // This could happen when either: // - pw.picker is nil (the previous if condition), or - // - has called pick on the current picker. - pw.mu.Unlock() + // - we have already called pick on the current picker. select { case <-ctx.Done(): var errStr string if lastPickErr != nil { errStr = "latest balancer error: " + lastPickErr.Error() } else { - errStr = ctx.Err().Error() + errStr = fmt.Sprintf("received context error while waiting for new LB policy update: %s", ctx.Err().Error()) } switch ctx.Err() { case context.DeadlineExceeded: @@ -144,9 +150,8 @@ func (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer. } } - ch = pw.blockingCh - p := pw.picker - pw.mu.Unlock() + ch = pg.blockingCh + p := pg.picker pickResult, err := p.Pick(info) if err != nil { @@ -196,24 +201,15 @@ func (pw *pickerWrapper) pick(ctx context.Context, failfast bool, info balancer. } func (pw *pickerWrapper) close() { - pw.mu.Lock() - defer pw.mu.Unlock() - if pw.done { - return - } - pw.done = true - close(pw.blockingCh) + old := pw.pickerGen.Swap(nil) + close(old.blockingCh) } // reset clears the pickerWrapper and prepares it for being used again when idle // mode is exited. func (pw *pickerWrapper) reset() { - pw.mu.Lock() - defer pw.mu.Unlock() - if pw.done { - return - } - pw.blockingCh = make(chan struct{}) + old := pw.pickerGen.Swap(&pickerGeneration{blockingCh: make(chan struct{})}) + close(old.blockingCh) } // dropError is a wrapper error that indicates the LB policy wishes to drop the diff --git a/vendor/google.golang.org/grpc/preloader.go b/vendor/google.golang.org/grpc/preloader.go index 73bd63364..e87a17f36 100644 --- a/vendor/google.golang.org/grpc/preloader.go +++ b/vendor/google.golang.org/grpc/preloader.go @@ -20,6 +20,7 @@ package grpc import ( "google.golang.org/grpc/codes" + "google.golang.org/grpc/mem" "google.golang.org/grpc/status" ) @@ -31,9 +32,10 @@ import ( // later release. type PreparedMsg struct { // Struct for preparing msg before sending them - encodedData []byte + encodedData mem.BufferSlice hdr []byte - payload []byte + payload mem.BufferSlice + pf payloadFormat } // Encode marshalls and compresses the message using the codec and compressor for the stream. @@ -57,11 +59,27 @@ func (p *PreparedMsg) Encode(s Stream, msg any) error { if err != nil { return err } - p.encodedData = data - compData, err := compress(data, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp) + + materializedData := data.Materialize() + data.Free() + p.encodedData = mem.BufferSlice{mem.NewBuffer(&materializedData, nil)} + + // TODO: it should be possible to grab the bufferPool from the underlying + // stream implementation with a type cast to its actual type (such as + // addrConnStream) and accessing the buffer pool directly. + var compData mem.BufferSlice + compData, p.pf, err = compress(p.encodedData, rpcInfo.preloaderInfo.cp, rpcInfo.preloaderInfo.comp, mem.DefaultBufferPool()) if err != nil { return err } - p.hdr, p.payload = msgHeader(data, compData) + + if p.pf.isCompressed() { + materializedCompData := compData.Materialize() + compData.Free() + compData = mem.BufferSlice{mem.NewBuffer(&materializedCompData, nil)} + } + + p.hdr, p.payload = msgHeader(p.encodedData, compData, p.pf) + return nil } diff --git a/vendor/google.golang.org/grpc/reflection/adapt.go b/vendor/google.golang.org/grpc/reflection/adapt.go index 33b907a36..6997e4740 100644 --- a/vendor/google.golang.org/grpc/reflection/adapt.go +++ b/vendor/google.golang.org/grpc/reflection/adapt.go @@ -19,10 +19,11 @@ package reflection import ( + "google.golang.org/grpc/reflection/internal" + v1reflectiongrpc "google.golang.org/grpc/reflection/grpc_reflection_v1" v1reflectionpb "google.golang.org/grpc/reflection/grpc_reflection_v1" v1alphareflectiongrpc "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" - v1alphareflectionpb "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" ) // asV1Alpha returns an implementation of the v1alpha version of the reflection @@ -44,7 +45,7 @@ type v1AlphaServerStreamAdapter struct { } func (s v1AlphaServerStreamAdapter) Send(response *v1reflectionpb.ServerReflectionResponse) error { - return s.ServerReflection_ServerReflectionInfoServer.Send(v1ToV1AlphaResponse(response)) + return s.ServerReflection_ServerReflectionInfoServer.Send(internal.V1ToV1AlphaResponse(response)) } func (s v1AlphaServerStreamAdapter) Recv() (*v1reflectionpb.ServerReflectionRequest, error) { @@ -52,136 +53,5 @@ func (s v1AlphaServerStreamAdapter) Recv() (*v1reflectionpb.ServerReflectionRequ if err != nil { return nil, err } - return v1AlphaToV1Request(resp), nil -} - -func v1ToV1AlphaResponse(v1 *v1reflectionpb.ServerReflectionResponse) *v1alphareflectionpb.ServerReflectionResponse { - var v1alpha v1alphareflectionpb.ServerReflectionResponse - v1alpha.ValidHost = v1.ValidHost - if v1.OriginalRequest != nil { - v1alpha.OriginalRequest = v1ToV1AlphaRequest(v1.OriginalRequest) - } - switch mr := v1.MessageResponse.(type) { - case *v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse: - if mr != nil { - v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_FileDescriptorResponse{ - FileDescriptorResponse: &v1alphareflectionpb.FileDescriptorResponse{ - FileDescriptorProto: mr.FileDescriptorResponse.GetFileDescriptorProto(), - }, - } - } - case *v1reflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse: - if mr != nil { - v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse{ - AllExtensionNumbersResponse: &v1alphareflectionpb.ExtensionNumberResponse{ - BaseTypeName: mr.AllExtensionNumbersResponse.GetBaseTypeName(), - ExtensionNumber: mr.AllExtensionNumbersResponse.GetExtensionNumber(), - }, - } - } - case *v1reflectionpb.ServerReflectionResponse_ListServicesResponse: - if mr != nil { - svcs := make([]*v1alphareflectionpb.ServiceResponse, len(mr.ListServicesResponse.GetService())) - for i, svc := range mr.ListServicesResponse.GetService() { - svcs[i] = &v1alphareflectionpb.ServiceResponse{ - Name: svc.GetName(), - } - } - v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_ListServicesResponse{ - ListServicesResponse: &v1alphareflectionpb.ListServiceResponse{ - Service: svcs, - }, - } - } - case *v1reflectionpb.ServerReflectionResponse_ErrorResponse: - if mr != nil { - v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_ErrorResponse{ - ErrorResponse: &v1alphareflectionpb.ErrorResponse{ - ErrorCode: mr.ErrorResponse.GetErrorCode(), - ErrorMessage: mr.ErrorResponse.GetErrorMessage(), - }, - } - } - default: - // no value set - } - return &v1alpha -} - -func v1AlphaToV1Request(v1alpha *v1alphareflectionpb.ServerReflectionRequest) *v1reflectionpb.ServerReflectionRequest { - var v1 v1reflectionpb.ServerReflectionRequest - v1.Host = v1alpha.Host - switch mr := v1alpha.MessageRequest.(type) { - case *v1alphareflectionpb.ServerReflectionRequest_FileByFilename: - v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_FileByFilename{ - FileByFilename: mr.FileByFilename, - } - case *v1alphareflectionpb.ServerReflectionRequest_FileContainingSymbol: - v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_FileContainingSymbol{ - FileContainingSymbol: mr.FileContainingSymbol, - } - case *v1alphareflectionpb.ServerReflectionRequest_FileContainingExtension: - if mr.FileContainingExtension != nil { - v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_FileContainingExtension{ - FileContainingExtension: &v1reflectionpb.ExtensionRequest{ - ContainingType: mr.FileContainingExtension.GetContainingType(), - ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(), - }, - } - } - case *v1alphareflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType: - v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType{ - AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType, - } - case *v1alphareflectionpb.ServerReflectionRequest_ListServices: - v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_ListServices{ - ListServices: mr.ListServices, - } - default: - // no value set - } - return &v1 -} - -func v1ToV1AlphaRequest(v1 *v1reflectionpb.ServerReflectionRequest) *v1alphareflectionpb.ServerReflectionRequest { - var v1alpha v1alphareflectionpb.ServerReflectionRequest - v1alpha.Host = v1.Host - switch mr := v1.MessageRequest.(type) { - case *v1reflectionpb.ServerReflectionRequest_FileByFilename: - if mr != nil { - v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_FileByFilename{ - FileByFilename: mr.FileByFilename, - } - } - case *v1reflectionpb.ServerReflectionRequest_FileContainingSymbol: - if mr != nil { - v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_FileContainingSymbol{ - FileContainingSymbol: mr.FileContainingSymbol, - } - } - case *v1reflectionpb.ServerReflectionRequest_FileContainingExtension: - if mr != nil { - v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_FileContainingExtension{ - FileContainingExtension: &v1alphareflectionpb.ExtensionRequest{ - ContainingType: mr.FileContainingExtension.GetContainingType(), - ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(), - }, - } - } - case *v1reflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType: - if mr != nil { - v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType{ - AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType, - } - } - case *v1reflectionpb.ServerReflectionRequest_ListServices: - if mr != nil { - v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_ListServices{ - ListServices: mr.ListServices, - } - } - default: - // no value set - } - return &v1alpha + return internal.V1AlphaToV1Request(resp), nil } diff --git a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go index 8953c9d8d..e1f58104d 100644 --- a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go +++ b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection.pb.go @@ -21,8 +21,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.32.0 -// protoc v4.25.2 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: grpc/reflection/v1/reflection.proto package grpc_reflection_v1 @@ -789,7 +789,7 @@ func file_grpc_reflection_v1_reflection_proto_rawDescGZIP() []byte { } var file_grpc_reflection_v1_reflection_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_grpc_reflection_v1_reflection_proto_goTypes = []interface{}{ +var file_grpc_reflection_v1_reflection_proto_goTypes = []any{ (*ServerReflectionRequest)(nil), // 0: grpc.reflection.v1.ServerReflectionRequest (*ExtensionRequest)(nil), // 1: grpc.reflection.v1.ExtensionRequest (*ServerReflectionResponse)(nil), // 2: grpc.reflection.v1.ServerReflectionResponse @@ -822,7 +822,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_grpc_reflection_v1_reflection_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*ServerReflectionRequest); i { case 0: return &v.state @@ -834,7 +834,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return nil } } - file_grpc_reflection_v1_reflection_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ExtensionRequest); i { case 0: return &v.state @@ -846,7 +846,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return nil } } - file_grpc_reflection_v1_reflection_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ServerReflectionResponse); i { case 0: return &v.state @@ -858,7 +858,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return nil } } - file_grpc_reflection_v1_reflection_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*FileDescriptorResponse); i { case 0: return &v.state @@ -870,7 +870,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return nil } } - file_grpc_reflection_v1_reflection_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*ExtensionNumberResponse); i { case 0: return &v.state @@ -882,7 +882,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return nil } } - file_grpc_reflection_v1_reflection_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ListServiceResponse); i { case 0: return &v.state @@ -894,7 +894,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return nil } } - file_grpc_reflection_v1_reflection_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*ServiceResponse); i { case 0: return &v.state @@ -906,7 +906,7 @@ func file_grpc_reflection_v1_reflection_proto_init() { return nil } } - file_grpc_reflection_v1_reflection_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1_reflection_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*ErrorResponse); i { case 0: return &v.state @@ -919,14 +919,14 @@ func file_grpc_reflection_v1_reflection_proto_init() { } } } - file_grpc_reflection_v1_reflection_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_grpc_reflection_v1_reflection_proto_msgTypes[0].OneofWrappers = []any{ (*ServerReflectionRequest_FileByFilename)(nil), (*ServerReflectionRequest_FileContainingSymbol)(nil), (*ServerReflectionRequest_FileContainingExtension)(nil), (*ServerReflectionRequest_AllExtensionNumbersOfType)(nil), (*ServerReflectionRequest_ListServices)(nil), } - file_grpc_reflection_v1_reflection_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_grpc_reflection_v1_reflection_proto_msgTypes[2].OneofWrappers = []any{ (*ServerReflectionResponse_FileDescriptorResponse)(nil), (*ServerReflectionResponse_AllExtensionNumbersResponse)(nil), (*ServerReflectionResponse_ListServicesResponse)(nil), diff --git a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection_grpc.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection_grpc.pb.go index d6cdd5b54..031082807 100644 --- a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection_grpc.pb.go +++ b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1/reflection_grpc.pb.go @@ -21,8 +21,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.2 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.27.1 // source: grpc/reflection/v1/reflection.proto package grpc_reflection_v1 @@ -36,8 +36,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ServerReflection_ServerReflectionInfo_FullMethodName = "/grpc.reflection.v1.ServerReflection/ServerReflectionInfo" @@ -49,7 +49,7 @@ const ( type ServerReflectionClient interface { // The reflection service is structured as a bidirectional stream, ensuring // all related requests go to a single server. - ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (ServerReflection_ServerReflectionInfoClient, error) + ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ServerReflectionRequest, ServerReflectionResponse], error) } type serverReflectionClient struct { @@ -60,53 +60,39 @@ func NewServerReflectionClient(cc grpc.ClientConnInterface) ServerReflectionClie return &serverReflectionClient{cc} } -func (c *serverReflectionClient) ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (ServerReflection_ServerReflectionInfoClient, error) { - stream, err := c.cc.NewStream(ctx, &ServerReflection_ServiceDesc.Streams[0], ServerReflection_ServerReflectionInfo_FullMethodName, opts...) +func (c *serverReflectionClient) ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ServerReflectionRequest, ServerReflectionResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &ServerReflection_ServiceDesc.Streams[0], ServerReflection_ServerReflectionInfo_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &serverReflectionServerReflectionInfoClient{stream} + x := &grpc.GenericClientStream[ServerReflectionRequest, ServerReflectionResponse]{ClientStream: stream} return x, nil } -type ServerReflection_ServerReflectionInfoClient interface { - Send(*ServerReflectionRequest) error - Recv() (*ServerReflectionResponse, error) - grpc.ClientStream -} - -type serverReflectionServerReflectionInfoClient struct { - grpc.ClientStream -} - -func (x *serverReflectionServerReflectionInfoClient) Send(m *ServerReflectionRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *serverReflectionServerReflectionInfoClient) Recv() (*ServerReflectionResponse, error) { - m := new(ServerReflectionResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type ServerReflection_ServerReflectionInfoClient = grpc.BidiStreamingClient[ServerReflectionRequest, ServerReflectionResponse] // ServerReflectionServer is the server API for ServerReflection service. // All implementations should embed UnimplementedServerReflectionServer -// for forward compatibility +// for forward compatibility. type ServerReflectionServer interface { // The reflection service is structured as a bidirectional stream, ensuring // all related requests go to a single server. - ServerReflectionInfo(ServerReflection_ServerReflectionInfoServer) error + ServerReflectionInfo(grpc.BidiStreamingServer[ServerReflectionRequest, ServerReflectionResponse]) error } -// UnimplementedServerReflectionServer should be embedded to have forward compatible implementations. -type UnimplementedServerReflectionServer struct { -} +// UnimplementedServerReflectionServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedServerReflectionServer struct{} -func (UnimplementedServerReflectionServer) ServerReflectionInfo(ServerReflection_ServerReflectionInfoServer) error { +func (UnimplementedServerReflectionServer) ServerReflectionInfo(grpc.BidiStreamingServer[ServerReflectionRequest, ServerReflectionResponse]) error { return status.Errorf(codes.Unimplemented, "method ServerReflectionInfo not implemented") } +func (UnimplementedServerReflectionServer) testEmbeddedByValue() {} // UnsafeServerReflectionServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ServerReflectionServer will @@ -116,34 +102,22 @@ type UnsafeServerReflectionServer interface { } func RegisterServerReflectionServer(s grpc.ServiceRegistrar, srv ServerReflectionServer) { + // If the following call panics, it indicates UnimplementedServerReflectionServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ServerReflection_ServiceDesc, srv) } func _ServerReflection_ServerReflectionInfo_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ServerReflectionServer).ServerReflectionInfo(&serverReflectionServerReflectionInfoServer{stream}) -} - -type ServerReflection_ServerReflectionInfoServer interface { - Send(*ServerReflectionResponse) error - Recv() (*ServerReflectionRequest, error) - grpc.ServerStream -} - -type serverReflectionServerReflectionInfoServer struct { - grpc.ServerStream + return srv.(ServerReflectionServer).ServerReflectionInfo(&grpc.GenericServerStream[ServerReflectionRequest, ServerReflectionResponse]{ServerStream: stream}) } -func (x *serverReflectionServerReflectionInfoServer) Send(m *ServerReflectionResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *serverReflectionServerReflectionInfoServer) Recv() (*ServerReflectionRequest, error) { - m := new(ServerReflectionRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type ServerReflection_ServerReflectionInfoServer = grpc.BidiStreamingServer[ServerReflectionRequest, ServerReflectionResponse] // ServerReflection_ServiceDesc is the grpc.ServiceDesc for ServerReflection service. // It's only intended for direct use with grpc.RegisterService, diff --git a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go index 929733e7b..0582e16af 100644 --- a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go +++ b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection.pb.go @@ -18,8 +18,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.32.0 -// protoc v4.25.2 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // grpc/reflection/v1alpha/reflection.proto is a deprecated file. package grpc_reflection_v1alpha @@ -403,7 +403,7 @@ type ServerReflectionResponse_FileDescriptorResponse struct { } type ServerReflectionResponse_AllExtensionNumbersResponse struct { - // This message is used to answer all_extension_numbers_of_type requst. + // This message is used to answer all_extension_numbers_of_type request. // // Deprecated: The entire proto file grpc/reflection/v1alpha/reflection.proto is marked as deprecated. AllExtensionNumbersResponse *ExtensionNumberResponse `protobuf:"bytes,5,opt,name=all_extension_numbers_response,json=allExtensionNumbersResponse,proto3,oneof"` @@ -864,7 +864,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_rawDescGZIP() []byte { } var file_grpc_reflection_v1alpha_reflection_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_grpc_reflection_v1alpha_reflection_proto_goTypes = []interface{}{ +var file_grpc_reflection_v1alpha_reflection_proto_goTypes = []any{ (*ServerReflectionRequest)(nil), // 0: grpc.reflection.v1alpha.ServerReflectionRequest (*ExtensionRequest)(nil), // 1: grpc.reflection.v1alpha.ExtensionRequest (*ServerReflectionResponse)(nil), // 2: grpc.reflection.v1alpha.ServerReflectionResponse @@ -897,7 +897,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*ServerReflectionRequest); i { case 0: return &v.state @@ -909,7 +909,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return nil } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ExtensionRequest); i { case 0: return &v.state @@ -921,7 +921,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return nil } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ServerReflectionResponse); i { case 0: return &v.state @@ -933,7 +933,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return nil } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*FileDescriptorResponse); i { case 0: return &v.state @@ -945,7 +945,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return nil } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*ExtensionNumberResponse); i { case 0: return &v.state @@ -957,7 +957,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return nil } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ListServiceResponse); i { case 0: return &v.state @@ -969,7 +969,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return nil } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*ServiceResponse); i { case 0: return &v.state @@ -981,7 +981,7 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { return nil } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*ErrorResponse); i { case 0: return &v.state @@ -994,14 +994,14 @@ func file_grpc_reflection_v1alpha_reflection_proto_init() { } } } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[0].OneofWrappers = []any{ (*ServerReflectionRequest_FileByFilename)(nil), (*ServerReflectionRequest_FileContainingSymbol)(nil), (*ServerReflectionRequest_FileContainingExtension)(nil), (*ServerReflectionRequest_AllExtensionNumbersOfType)(nil), (*ServerReflectionRequest_ListServices)(nil), } - file_grpc_reflection_v1alpha_reflection_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_grpc_reflection_v1alpha_reflection_proto_msgTypes[2].OneofWrappers = []any{ (*ServerReflectionResponse_FileDescriptorResponse)(nil), (*ServerReflectionResponse_AllExtensionNumbersResponse)(nil), (*ServerReflectionResponse_ListServicesResponse)(nil), diff --git a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection_grpc.pb.go b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection_grpc.pb.go index ef6914063..80755d74d 100644 --- a/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection_grpc.pb.go +++ b/vendor/google.golang.org/grpc/reflection/grpc_reflection_v1alpha/reflection_grpc.pb.go @@ -18,8 +18,8 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.25.2 +// - protoc-gen-go-grpc v1.5.1 +// - protoc v5.27.1 // grpc/reflection/v1alpha/reflection.proto is a deprecated file. package grpc_reflection_v1alpha @@ -33,8 +33,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( ServerReflection_ServerReflectionInfo_FullMethodName = "/grpc.reflection.v1alpha.ServerReflection/ServerReflectionInfo" @@ -46,7 +46,7 @@ const ( type ServerReflectionClient interface { // The reflection service is structured as a bidirectional stream, ensuring // all related requests go to a single server. - ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (ServerReflection_ServerReflectionInfoClient, error) + ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ServerReflectionRequest, ServerReflectionResponse], error) } type serverReflectionClient struct { @@ -57,53 +57,39 @@ func NewServerReflectionClient(cc grpc.ClientConnInterface) ServerReflectionClie return &serverReflectionClient{cc} } -func (c *serverReflectionClient) ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (ServerReflection_ServerReflectionInfoClient, error) { - stream, err := c.cc.NewStream(ctx, &ServerReflection_ServiceDesc.Streams[0], ServerReflection_ServerReflectionInfo_FullMethodName, opts...) +func (c *serverReflectionClient) ServerReflectionInfo(ctx context.Context, opts ...grpc.CallOption) (grpc.BidiStreamingClient[ServerReflectionRequest, ServerReflectionResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &ServerReflection_ServiceDesc.Streams[0], ServerReflection_ServerReflectionInfo_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &serverReflectionServerReflectionInfoClient{stream} + x := &grpc.GenericClientStream[ServerReflectionRequest, ServerReflectionResponse]{ClientStream: stream} return x, nil } -type ServerReflection_ServerReflectionInfoClient interface { - Send(*ServerReflectionRequest) error - Recv() (*ServerReflectionResponse, error) - grpc.ClientStream -} - -type serverReflectionServerReflectionInfoClient struct { - grpc.ClientStream -} - -func (x *serverReflectionServerReflectionInfoClient) Send(m *ServerReflectionRequest) error { - return x.ClientStream.SendMsg(m) -} - -func (x *serverReflectionServerReflectionInfoClient) Recv() (*ServerReflectionResponse, error) { - m := new(ServerReflectionResponse) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type ServerReflection_ServerReflectionInfoClient = grpc.BidiStreamingClient[ServerReflectionRequest, ServerReflectionResponse] // ServerReflectionServer is the server API for ServerReflection service. // All implementations should embed UnimplementedServerReflectionServer -// for forward compatibility +// for forward compatibility. type ServerReflectionServer interface { // The reflection service is structured as a bidirectional stream, ensuring // all related requests go to a single server. - ServerReflectionInfo(ServerReflection_ServerReflectionInfoServer) error + ServerReflectionInfo(grpc.BidiStreamingServer[ServerReflectionRequest, ServerReflectionResponse]) error } -// UnimplementedServerReflectionServer should be embedded to have forward compatible implementations. -type UnimplementedServerReflectionServer struct { -} +// UnimplementedServerReflectionServer should be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedServerReflectionServer struct{} -func (UnimplementedServerReflectionServer) ServerReflectionInfo(ServerReflection_ServerReflectionInfoServer) error { +func (UnimplementedServerReflectionServer) ServerReflectionInfo(grpc.BidiStreamingServer[ServerReflectionRequest, ServerReflectionResponse]) error { return status.Errorf(codes.Unimplemented, "method ServerReflectionInfo not implemented") } +func (UnimplementedServerReflectionServer) testEmbeddedByValue() {} // UnsafeServerReflectionServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ServerReflectionServer will @@ -113,34 +99,22 @@ type UnsafeServerReflectionServer interface { } func RegisterServerReflectionServer(s grpc.ServiceRegistrar, srv ServerReflectionServer) { + // If the following call panics, it indicates UnimplementedServerReflectionServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&ServerReflection_ServiceDesc, srv) } func _ServerReflection_ServerReflectionInfo_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(ServerReflectionServer).ServerReflectionInfo(&serverReflectionServerReflectionInfoServer{stream}) -} - -type ServerReflection_ServerReflectionInfoServer interface { - Send(*ServerReflectionResponse) error - Recv() (*ServerReflectionRequest, error) - grpc.ServerStream -} - -type serverReflectionServerReflectionInfoServer struct { - grpc.ServerStream + return srv.(ServerReflectionServer).ServerReflectionInfo(&grpc.GenericServerStream[ServerReflectionRequest, ServerReflectionResponse]{ServerStream: stream}) } -func (x *serverReflectionServerReflectionInfoServer) Send(m *ServerReflectionResponse) error { - return x.ServerStream.SendMsg(m) -} - -func (x *serverReflectionServerReflectionInfoServer) Recv() (*ServerReflectionRequest, error) { - m := new(ServerReflectionRequest) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type ServerReflection_ServerReflectionInfoServer = grpc.BidiStreamingServer[ServerReflectionRequest, ServerReflectionResponse] // ServerReflection_ServiceDesc is the grpc.ServiceDesc for ServerReflection service. // It's only intended for direct use with grpc.RegisterService, diff --git a/vendor/google.golang.org/grpc/reflection/internal/internal.go b/vendor/google.golang.org/grpc/reflection/internal/internal.go new file mode 100644 index 000000000..902fc6d35 --- /dev/null +++ b/vendor/google.golang.org/grpc/reflection/internal/internal.go @@ -0,0 +1,436 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package internal contains code that is shared by both reflection package and +// the test package. The packages are split in this way inorder to avoid +// dependency to deprecated package github.com/golang/protobuf. +package internal + +import ( + "io" + "sort" + + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protodesc" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/reflect/protoregistry" + + v1reflectiongrpc "google.golang.org/grpc/reflection/grpc_reflection_v1" + v1reflectionpb "google.golang.org/grpc/reflection/grpc_reflection_v1" + v1alphareflectiongrpc "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" + v1alphareflectionpb "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" +) + +// ServiceInfoProvider is an interface used to retrieve metadata about the +// services to expose. +type ServiceInfoProvider interface { + GetServiceInfo() map[string]grpc.ServiceInfo +} + +// ExtensionResolver is the interface used to query details about extensions. +// This interface is satisfied by protoregistry.GlobalTypes. +type ExtensionResolver interface { + protoregistry.ExtensionTypeResolver + RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) +} + +// ServerReflectionServer is the server API for ServerReflection service. +type ServerReflectionServer struct { + v1alphareflectiongrpc.UnimplementedServerReflectionServer + S ServiceInfoProvider + DescResolver protodesc.Resolver + ExtResolver ExtensionResolver +} + +// FileDescWithDependencies returns a slice of serialized fileDescriptors in +// wire format ([]byte). The fileDescriptors will include fd and all the +// transitive dependencies of fd with names not in sentFileDescriptors. +func (s *ServerReflectionServer) FileDescWithDependencies(fd protoreflect.FileDescriptor, sentFileDescriptors map[string]bool) ([][]byte, error) { + if fd.IsPlaceholder() { + // If the given root file is a placeholder, treat it + // as missing instead of serializing it. + return nil, protoregistry.NotFound + } + var r [][]byte + queue := []protoreflect.FileDescriptor{fd} + for len(queue) > 0 { + currentfd := queue[0] + queue = queue[1:] + if currentfd.IsPlaceholder() { + // Skip any missing files in the dependency graph. + continue + } + if sent := sentFileDescriptors[currentfd.Path()]; len(r) == 0 || !sent { + sentFileDescriptors[currentfd.Path()] = true + fdProto := protodesc.ToFileDescriptorProto(currentfd) + currentfdEncoded, err := proto.Marshal(fdProto) + if err != nil { + return nil, err + } + r = append(r, currentfdEncoded) + } + for i := 0; i < currentfd.Imports().Len(); i++ { + queue = append(queue, currentfd.Imports().Get(i)) + } + } + return r, nil +} + +// FileDescEncodingContainingSymbol finds the file descriptor containing the +// given symbol, finds all of its previously unsent transitive dependencies, +// does marshalling on them, and returns the marshalled result. The given symbol +// can be a type, a service or a method. +func (s *ServerReflectionServer) FileDescEncodingContainingSymbol(name string, sentFileDescriptors map[string]bool) ([][]byte, error) { + d, err := s.DescResolver.FindDescriptorByName(protoreflect.FullName(name)) + if err != nil { + return nil, err + } + return s.FileDescWithDependencies(d.ParentFile(), sentFileDescriptors) +} + +// FileDescEncodingContainingExtension finds the file descriptor containing +// given extension, finds all of its previously unsent transitive dependencies, +// does marshalling on them, and returns the marshalled result. +func (s *ServerReflectionServer) FileDescEncodingContainingExtension(typeName string, extNum int32, sentFileDescriptors map[string]bool) ([][]byte, error) { + xt, err := s.ExtResolver.FindExtensionByNumber(protoreflect.FullName(typeName), protoreflect.FieldNumber(extNum)) + if err != nil { + return nil, err + } + return s.FileDescWithDependencies(xt.TypeDescriptor().ParentFile(), sentFileDescriptors) +} + +// AllExtensionNumbersForTypeName returns all extension numbers for the given type. +func (s *ServerReflectionServer) AllExtensionNumbersForTypeName(name string) ([]int32, error) { + var numbers []int32 + s.ExtResolver.RangeExtensionsByMessage(protoreflect.FullName(name), func(xt protoreflect.ExtensionType) bool { + numbers = append(numbers, int32(xt.TypeDescriptor().Number())) + return true + }) + sort.Slice(numbers, func(i, j int) bool { + return numbers[i] < numbers[j] + }) + if len(numbers) == 0 { + // maybe return an error if given type name is not known + if _, err := s.DescResolver.FindDescriptorByName(protoreflect.FullName(name)); err != nil { + return nil, err + } + } + return numbers, nil +} + +// ListServices returns the names of services this server exposes. +func (s *ServerReflectionServer) ListServices() []*v1reflectionpb.ServiceResponse { + serviceInfo := s.S.GetServiceInfo() + resp := make([]*v1reflectionpb.ServiceResponse, 0, len(serviceInfo)) + for svc := range serviceInfo { + resp = append(resp, &v1reflectionpb.ServiceResponse{Name: svc}) + } + sort.Slice(resp, func(i, j int) bool { + return resp[i].Name < resp[j].Name + }) + return resp +} + +// ServerReflectionInfo is the reflection service handler. +func (s *ServerReflectionServer) ServerReflectionInfo(stream v1reflectiongrpc.ServerReflection_ServerReflectionInfoServer) error { + sentFileDescriptors := make(map[string]bool) + for { + in, err := stream.Recv() + if err == io.EOF { + return nil + } + if err != nil { + return err + } + + out := &v1reflectionpb.ServerReflectionResponse{ + ValidHost: in.Host, + OriginalRequest: in, + } + switch req := in.MessageRequest.(type) { + case *v1reflectionpb.ServerReflectionRequest_FileByFilename: + var b [][]byte + fd, err := s.DescResolver.FindFileByPath(req.FileByFilename) + if err == nil { + b, err = s.FileDescWithDependencies(fd, sentFileDescriptors) + } + if err != nil { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ + ErrorResponse: &v1reflectionpb.ErrorResponse{ + ErrorCode: int32(codes.NotFound), + ErrorMessage: err.Error(), + }, + } + } else { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse{ + FileDescriptorResponse: &v1reflectionpb.FileDescriptorResponse{FileDescriptorProto: b}, + } + } + case *v1reflectionpb.ServerReflectionRequest_FileContainingSymbol: + b, err := s.FileDescEncodingContainingSymbol(req.FileContainingSymbol, sentFileDescriptors) + if err != nil { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ + ErrorResponse: &v1reflectionpb.ErrorResponse{ + ErrorCode: int32(codes.NotFound), + ErrorMessage: err.Error(), + }, + } + } else { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse{ + FileDescriptorResponse: &v1reflectionpb.FileDescriptorResponse{FileDescriptorProto: b}, + } + } + case *v1reflectionpb.ServerReflectionRequest_FileContainingExtension: + typeName := req.FileContainingExtension.ContainingType + extNum := req.FileContainingExtension.ExtensionNumber + b, err := s.FileDescEncodingContainingExtension(typeName, extNum, sentFileDescriptors) + if err != nil { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ + ErrorResponse: &v1reflectionpb.ErrorResponse{ + ErrorCode: int32(codes.NotFound), + ErrorMessage: err.Error(), + }, + } + } else { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse{ + FileDescriptorResponse: &v1reflectionpb.FileDescriptorResponse{FileDescriptorProto: b}, + } + } + case *v1reflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType: + extNums, err := s.AllExtensionNumbersForTypeName(req.AllExtensionNumbersOfType) + if err != nil { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ + ErrorResponse: &v1reflectionpb.ErrorResponse{ + ErrorCode: int32(codes.NotFound), + ErrorMessage: err.Error(), + }, + } + } else { + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse{ + AllExtensionNumbersResponse: &v1reflectionpb.ExtensionNumberResponse{ + BaseTypeName: req.AllExtensionNumbersOfType, + ExtensionNumber: extNums, + }, + } + } + case *v1reflectionpb.ServerReflectionRequest_ListServices: + out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ListServicesResponse{ + ListServicesResponse: &v1reflectionpb.ListServiceResponse{ + Service: s.ListServices(), + }, + } + default: + return status.Errorf(codes.InvalidArgument, "invalid MessageRequest: %v", in.MessageRequest) + } + + if err := stream.Send(out); err != nil { + return err + } + } +} + +// V1ToV1AlphaResponse converts a v1 ServerReflectionResponse to a v1alpha. +func V1ToV1AlphaResponse(v1 *v1reflectionpb.ServerReflectionResponse) *v1alphareflectionpb.ServerReflectionResponse { + var v1alpha v1alphareflectionpb.ServerReflectionResponse + v1alpha.ValidHost = v1.ValidHost + if v1.OriginalRequest != nil { + v1alpha.OriginalRequest = V1ToV1AlphaRequest(v1.OriginalRequest) + } + switch mr := v1.MessageResponse.(type) { + case *v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse: + if mr != nil { + v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_FileDescriptorResponse{ + FileDescriptorResponse: &v1alphareflectionpb.FileDescriptorResponse{ + FileDescriptorProto: mr.FileDescriptorResponse.GetFileDescriptorProto(), + }, + } + } + case *v1reflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse: + if mr != nil { + v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse{ + AllExtensionNumbersResponse: &v1alphareflectionpb.ExtensionNumberResponse{ + BaseTypeName: mr.AllExtensionNumbersResponse.GetBaseTypeName(), + ExtensionNumber: mr.AllExtensionNumbersResponse.GetExtensionNumber(), + }, + } + } + case *v1reflectionpb.ServerReflectionResponse_ListServicesResponse: + if mr != nil { + svcs := make([]*v1alphareflectionpb.ServiceResponse, len(mr.ListServicesResponse.GetService())) + for i, svc := range mr.ListServicesResponse.GetService() { + svcs[i] = &v1alphareflectionpb.ServiceResponse{ + Name: svc.GetName(), + } + } + v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_ListServicesResponse{ + ListServicesResponse: &v1alphareflectionpb.ListServiceResponse{ + Service: svcs, + }, + } + } + case *v1reflectionpb.ServerReflectionResponse_ErrorResponse: + if mr != nil { + v1alpha.MessageResponse = &v1alphareflectionpb.ServerReflectionResponse_ErrorResponse{ + ErrorResponse: &v1alphareflectionpb.ErrorResponse{ + ErrorCode: mr.ErrorResponse.GetErrorCode(), + ErrorMessage: mr.ErrorResponse.GetErrorMessage(), + }, + } + } + default: + // no value set + } + return &v1alpha +} + +// V1AlphaToV1Request converts a v1alpha ServerReflectionRequest to a v1. +func V1AlphaToV1Request(v1alpha *v1alphareflectionpb.ServerReflectionRequest) *v1reflectionpb.ServerReflectionRequest { + var v1 v1reflectionpb.ServerReflectionRequest + v1.Host = v1alpha.Host + switch mr := v1alpha.MessageRequest.(type) { + case *v1alphareflectionpb.ServerReflectionRequest_FileByFilename: + v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_FileByFilename{ + FileByFilename: mr.FileByFilename, + } + case *v1alphareflectionpb.ServerReflectionRequest_FileContainingSymbol: + v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_FileContainingSymbol{ + FileContainingSymbol: mr.FileContainingSymbol, + } + case *v1alphareflectionpb.ServerReflectionRequest_FileContainingExtension: + if mr.FileContainingExtension != nil { + v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_FileContainingExtension{ + FileContainingExtension: &v1reflectionpb.ExtensionRequest{ + ContainingType: mr.FileContainingExtension.GetContainingType(), + ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(), + }, + } + } + case *v1alphareflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType: + v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType{ + AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType, + } + case *v1alphareflectionpb.ServerReflectionRequest_ListServices: + v1.MessageRequest = &v1reflectionpb.ServerReflectionRequest_ListServices{ + ListServices: mr.ListServices, + } + default: + // no value set + } + return &v1 +} + +// V1ToV1AlphaRequest converts a v1 ServerReflectionRequest to a v1alpha. +func V1ToV1AlphaRequest(v1 *v1reflectionpb.ServerReflectionRequest) *v1alphareflectionpb.ServerReflectionRequest { + var v1alpha v1alphareflectionpb.ServerReflectionRequest + v1alpha.Host = v1.Host + switch mr := v1.MessageRequest.(type) { + case *v1reflectionpb.ServerReflectionRequest_FileByFilename: + if mr != nil { + v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_FileByFilename{ + FileByFilename: mr.FileByFilename, + } + } + case *v1reflectionpb.ServerReflectionRequest_FileContainingSymbol: + if mr != nil { + v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_FileContainingSymbol{ + FileContainingSymbol: mr.FileContainingSymbol, + } + } + case *v1reflectionpb.ServerReflectionRequest_FileContainingExtension: + if mr != nil { + v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_FileContainingExtension{ + FileContainingExtension: &v1alphareflectionpb.ExtensionRequest{ + ContainingType: mr.FileContainingExtension.GetContainingType(), + ExtensionNumber: mr.FileContainingExtension.GetExtensionNumber(), + }, + } + } + case *v1reflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType: + if mr != nil { + v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType{ + AllExtensionNumbersOfType: mr.AllExtensionNumbersOfType, + } + } + case *v1reflectionpb.ServerReflectionRequest_ListServices: + if mr != nil { + v1alpha.MessageRequest = &v1alphareflectionpb.ServerReflectionRequest_ListServices{ + ListServices: mr.ListServices, + } + } + default: + // no value set + } + return &v1alpha +} + +// V1AlphaToV1Response converts a v1alpha ServerReflectionResponse to a v1. +func V1AlphaToV1Response(v1alpha *v1alphareflectionpb.ServerReflectionResponse) *v1reflectionpb.ServerReflectionResponse { + var v1 v1reflectionpb.ServerReflectionResponse + v1.ValidHost = v1alpha.ValidHost + if v1alpha.OriginalRequest != nil { + v1.OriginalRequest = V1AlphaToV1Request(v1alpha.OriginalRequest) + } + switch mr := v1alpha.MessageResponse.(type) { + case *v1alphareflectionpb.ServerReflectionResponse_FileDescriptorResponse: + if mr != nil { + v1.MessageResponse = &v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse{ + FileDescriptorResponse: &v1reflectionpb.FileDescriptorResponse{ + FileDescriptorProto: mr.FileDescriptorResponse.GetFileDescriptorProto(), + }, + } + } + case *v1alphareflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse: + if mr != nil { + v1.MessageResponse = &v1reflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse{ + AllExtensionNumbersResponse: &v1reflectionpb.ExtensionNumberResponse{ + BaseTypeName: mr.AllExtensionNumbersResponse.GetBaseTypeName(), + ExtensionNumber: mr.AllExtensionNumbersResponse.GetExtensionNumber(), + }, + } + } + case *v1alphareflectionpb.ServerReflectionResponse_ListServicesResponse: + if mr != nil { + svcs := make([]*v1reflectionpb.ServiceResponse, len(mr.ListServicesResponse.GetService())) + for i, svc := range mr.ListServicesResponse.GetService() { + svcs[i] = &v1reflectionpb.ServiceResponse{ + Name: svc.GetName(), + } + } + v1.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ListServicesResponse{ + ListServicesResponse: &v1reflectionpb.ListServiceResponse{ + Service: svcs, + }, + } + } + case *v1alphareflectionpb.ServerReflectionResponse_ErrorResponse: + if mr != nil { + v1.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ + ErrorResponse: &v1reflectionpb.ErrorResponse{ + ErrorCode: mr.ErrorResponse.GetErrorCode(), + ErrorMessage: mr.ErrorResponse.GetErrorMessage(), + }, + } + } + default: + // no value set + } + return &v1 +} diff --git a/vendor/google.golang.org/grpc/reflection/serverreflection.go b/vendor/google.golang.org/grpc/reflection/serverreflection.go index c3b408392..13a94e2dd 100644 --- a/vendor/google.golang.org/grpc/reflection/serverreflection.go +++ b/vendor/google.golang.org/grpc/reflection/serverreflection.go @@ -37,19 +37,13 @@ To register server reflection on a gRPC server: package reflection // import "google.golang.org/grpc/reflection" import ( - "io" - "sort" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - "google.golang.org/protobuf/proto" + "google.golang.org/grpc/reflection/internal" "google.golang.org/protobuf/reflect/protodesc" "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" v1reflectiongrpc "google.golang.org/grpc/reflection/grpc_reflection_v1" - v1reflectionpb "google.golang.org/grpc/reflection/grpc_reflection_v1" v1alphareflectiongrpc "google.golang.org/grpc/reflection/grpc_reflection_v1alpha" ) @@ -158,203 +152,9 @@ func NewServerV1(opts ServerOptions) v1reflectiongrpc.ServerReflectionServer { if opts.ExtensionResolver == nil { opts.ExtensionResolver = protoregistry.GlobalTypes } - return &serverReflectionServer{ - s: opts.Services, - descResolver: opts.DescriptorResolver, - extResolver: opts.ExtensionResolver, - } -} - -type serverReflectionServer struct { - v1alphareflectiongrpc.UnimplementedServerReflectionServer - s ServiceInfoProvider - descResolver protodesc.Resolver - extResolver ExtensionResolver -} - -// fileDescWithDependencies returns a slice of serialized fileDescriptors in -// wire format ([]byte). The fileDescriptors will include fd and all the -// transitive dependencies of fd with names not in sentFileDescriptors. -func (s *serverReflectionServer) fileDescWithDependencies(fd protoreflect.FileDescriptor, sentFileDescriptors map[string]bool) ([][]byte, error) { - if fd.IsPlaceholder() { - // If the given root file is a placeholder, treat it - // as missing instead of serializing it. - return nil, protoregistry.NotFound - } - var r [][]byte - queue := []protoreflect.FileDescriptor{fd} - for len(queue) > 0 { - currentfd := queue[0] - queue = queue[1:] - if currentfd.IsPlaceholder() { - // Skip any missing files in the dependency graph. - continue - } - if sent := sentFileDescriptors[currentfd.Path()]; len(r) == 0 || !sent { - sentFileDescriptors[currentfd.Path()] = true - fdProto := protodesc.ToFileDescriptorProto(currentfd) - currentfdEncoded, err := proto.Marshal(fdProto) - if err != nil { - return nil, err - } - r = append(r, currentfdEncoded) - } - for i := 0; i < currentfd.Imports().Len(); i++ { - queue = append(queue, currentfd.Imports().Get(i)) - } - } - return r, nil -} - -// fileDescEncodingContainingSymbol finds the file descriptor containing the -// given symbol, finds all of its previously unsent transitive dependencies, -// does marshalling on them, and returns the marshalled result. The given symbol -// can be a type, a service or a method. -func (s *serverReflectionServer) fileDescEncodingContainingSymbol(name string, sentFileDescriptors map[string]bool) ([][]byte, error) { - d, err := s.descResolver.FindDescriptorByName(protoreflect.FullName(name)) - if err != nil { - return nil, err - } - return s.fileDescWithDependencies(d.ParentFile(), sentFileDescriptors) -} - -// fileDescEncodingContainingExtension finds the file descriptor containing -// given extension, finds all of its previously unsent transitive dependencies, -// does marshalling on them, and returns the marshalled result. -func (s *serverReflectionServer) fileDescEncodingContainingExtension(typeName string, extNum int32, sentFileDescriptors map[string]bool) ([][]byte, error) { - xt, err := s.extResolver.FindExtensionByNumber(protoreflect.FullName(typeName), protoreflect.FieldNumber(extNum)) - if err != nil { - return nil, err - } - return s.fileDescWithDependencies(xt.TypeDescriptor().ParentFile(), sentFileDescriptors) -} - -// allExtensionNumbersForTypeName returns all extension numbers for the given type. -func (s *serverReflectionServer) allExtensionNumbersForTypeName(name string) ([]int32, error) { - var numbers []int32 - s.extResolver.RangeExtensionsByMessage(protoreflect.FullName(name), func(xt protoreflect.ExtensionType) bool { - numbers = append(numbers, int32(xt.TypeDescriptor().Number())) - return true - }) - sort.Slice(numbers, func(i, j int) bool { - return numbers[i] < numbers[j] - }) - if len(numbers) == 0 { - // maybe return an error if given type name is not known - if _, err := s.descResolver.FindDescriptorByName(protoreflect.FullName(name)); err != nil { - return nil, err - } - } - return numbers, nil -} - -// listServices returns the names of services this server exposes. -func (s *serverReflectionServer) listServices() []*v1reflectionpb.ServiceResponse { - serviceInfo := s.s.GetServiceInfo() - resp := make([]*v1reflectionpb.ServiceResponse, 0, len(serviceInfo)) - for svc := range serviceInfo { - resp = append(resp, &v1reflectionpb.ServiceResponse{Name: svc}) - } - sort.Slice(resp, func(i, j int) bool { - return resp[i].Name < resp[j].Name - }) - return resp -} - -// ServerReflectionInfo is the reflection service handler. -func (s *serverReflectionServer) ServerReflectionInfo(stream v1reflectiongrpc.ServerReflection_ServerReflectionInfoServer) error { - sentFileDescriptors := make(map[string]bool) - for { - in, err := stream.Recv() - if err == io.EOF { - return nil - } - if err != nil { - return err - } - - out := &v1reflectionpb.ServerReflectionResponse{ - ValidHost: in.Host, - OriginalRequest: in, - } - switch req := in.MessageRequest.(type) { - case *v1reflectionpb.ServerReflectionRequest_FileByFilename: - var b [][]byte - fd, err := s.descResolver.FindFileByPath(req.FileByFilename) - if err == nil { - b, err = s.fileDescWithDependencies(fd, sentFileDescriptors) - } - if err != nil { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ - ErrorResponse: &v1reflectionpb.ErrorResponse{ - ErrorCode: int32(codes.NotFound), - ErrorMessage: err.Error(), - }, - } - } else { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse{ - FileDescriptorResponse: &v1reflectionpb.FileDescriptorResponse{FileDescriptorProto: b}, - } - } - case *v1reflectionpb.ServerReflectionRequest_FileContainingSymbol: - b, err := s.fileDescEncodingContainingSymbol(req.FileContainingSymbol, sentFileDescriptors) - if err != nil { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ - ErrorResponse: &v1reflectionpb.ErrorResponse{ - ErrorCode: int32(codes.NotFound), - ErrorMessage: err.Error(), - }, - } - } else { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse{ - FileDescriptorResponse: &v1reflectionpb.FileDescriptorResponse{FileDescriptorProto: b}, - } - } - case *v1reflectionpb.ServerReflectionRequest_FileContainingExtension: - typeName := req.FileContainingExtension.ContainingType - extNum := req.FileContainingExtension.ExtensionNumber - b, err := s.fileDescEncodingContainingExtension(typeName, extNum, sentFileDescriptors) - if err != nil { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ - ErrorResponse: &v1reflectionpb.ErrorResponse{ - ErrorCode: int32(codes.NotFound), - ErrorMessage: err.Error(), - }, - } - } else { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_FileDescriptorResponse{ - FileDescriptorResponse: &v1reflectionpb.FileDescriptorResponse{FileDescriptorProto: b}, - } - } - case *v1reflectionpb.ServerReflectionRequest_AllExtensionNumbersOfType: - extNums, err := s.allExtensionNumbersForTypeName(req.AllExtensionNumbersOfType) - if err != nil { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ErrorResponse{ - ErrorResponse: &v1reflectionpb.ErrorResponse{ - ErrorCode: int32(codes.NotFound), - ErrorMessage: err.Error(), - }, - } - } else { - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_AllExtensionNumbersResponse{ - AllExtensionNumbersResponse: &v1reflectionpb.ExtensionNumberResponse{ - BaseTypeName: req.AllExtensionNumbersOfType, - ExtensionNumber: extNums, - }, - } - } - case *v1reflectionpb.ServerReflectionRequest_ListServices: - out.MessageResponse = &v1reflectionpb.ServerReflectionResponse_ListServicesResponse{ - ListServicesResponse: &v1reflectionpb.ListServiceResponse{ - Service: s.listServices(), - }, - } - default: - return status.Errorf(codes.InvalidArgument, "invalid MessageRequest: %v", in.MessageRequest) - } - - if err := stream.Send(out); err != nil { - return err - } + return &internal.ServerReflectionServer{ + S: opts.Services, + DescResolver: opts.DescriptorResolver, + ExtResolver: opts.ExtensionResolver, } } diff --git a/vendor/google.golang.org/grpc/regenerate.sh b/vendor/google.golang.org/grpc/regenerate.sh deleted file mode 100644 index a6f26c8ab..000000000 --- a/vendor/google.golang.org/grpc/regenerate.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/bash -# Copyright 2020 gRPC authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -eu -o pipefail - -WORKDIR=$(mktemp -d) - -function finish { - rm -rf "$WORKDIR" -} -trap finish EXIT - -export GOBIN=${WORKDIR}/bin -export PATH=${GOBIN}:${PATH} -mkdir -p ${GOBIN} - -echo "remove existing generated files" -# grpc_testing_not_regenerate/*.pb.go is not re-generated, -# see grpc_testing_not_regenerate/README.md for details. -rm -f $(find . -name '*.pb.go' | grep -v 'grpc_testing_not_regenerate') - -echo "go install google.golang.org/protobuf/cmd/protoc-gen-go" -(cd test/tools && go install google.golang.org/protobuf/cmd/protoc-gen-go) - -echo "go install cmd/protoc-gen-go-grpc" -(cd cmd/protoc-gen-go-grpc && go install .) - -echo "git clone https://github.com/grpc/grpc-proto" -git clone --quiet https://github.com/grpc/grpc-proto ${WORKDIR}/grpc-proto - -echo "git clone https://github.com/protocolbuffers/protobuf" -git clone --quiet https://github.com/protocolbuffers/protobuf ${WORKDIR}/protobuf - -# Pull in code.proto as a proto dependency -mkdir -p ${WORKDIR}/googleapis/google/rpc -echo "curl https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto" -curl --silent https://raw.githubusercontent.com/googleapis/googleapis/master/google/rpc/code.proto > ${WORKDIR}/googleapis/google/rpc/code.proto - -mkdir -p ${WORKDIR}/out - -# Generates sources without the embed requirement -LEGACY_SOURCES=( - ${WORKDIR}/grpc-proto/grpc/binlog/v1/binarylog.proto - ${WORKDIR}/grpc-proto/grpc/channelz/v1/channelz.proto - ${WORKDIR}/grpc-proto/grpc/health/v1/health.proto - ${WORKDIR}/grpc-proto/grpc/lb/v1/load_balancer.proto - profiling/proto/service.proto - ${WORKDIR}/grpc-proto/grpc/reflection/v1alpha/reflection.proto - ${WORKDIR}/grpc-proto/grpc/reflection/v1/reflection.proto -) - -# Generates only the new gRPC Service symbols -SOURCES=( - $(git ls-files --exclude-standard --cached --others "*.proto" | grep -v '^\(profiling/proto/service.proto\|reflection/grpc_reflection_v1alpha/reflection.proto\)$') - ${WORKDIR}/grpc-proto/grpc/gcp/altscontext.proto - ${WORKDIR}/grpc-proto/grpc/gcp/handshaker.proto - ${WORKDIR}/grpc-proto/grpc/gcp/transport_security_common.proto - ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls.proto - ${WORKDIR}/grpc-proto/grpc/lookup/v1/rls_config.proto - ${WORKDIR}/grpc-proto/grpc/testing/*.proto - ${WORKDIR}/grpc-proto/grpc/core/*.proto -) - -# These options of the form 'Mfoo.proto=bar' instruct the codegen to use an -# import path of 'bar' in the generated code when 'foo.proto' is imported in -# one of the sources. -# -# Note that the protos listed here are all for testing purposes. All protos to -# be used externally should have a go_package option (and they don't need to be -# listed here). -OPTS=Mgrpc/core/stats.proto=google.golang.org/grpc/interop/grpc_testing/core,\ -Mgrpc/testing/benchmark_service.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/stats.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/report_qps_scenario_service.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/messages.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/worker_service.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/control.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/test.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/payloads.proto=google.golang.org/grpc/interop/grpc_testing,\ -Mgrpc/testing/empty.proto=google.golang.org/grpc/interop/grpc_testing - -for src in ${SOURCES[@]}; do - echo "protoc ${src}" - protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS}:${WORKDIR}/out \ - -I"." \ - -I${WORKDIR}/grpc-proto \ - -I${WORKDIR}/googleapis \ - -I${WORKDIR}/protobuf/src \ - ${src} -done - -for src in ${LEGACY_SOURCES[@]}; do - echo "protoc ${src}" - protoc --go_out=${OPTS}:${WORKDIR}/out --go-grpc_out=${OPTS},require_unimplemented_servers=false:${WORKDIR}/out \ - -I"." \ - -I${WORKDIR}/grpc-proto \ - -I${WORKDIR}/googleapis \ - -I${WORKDIR}/protobuf/src \ - ${src} -done - -# The go_package option in grpc/lookup/v1/rls.proto doesn't match the -# current location. Move it into the right place. -mkdir -p ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1 -mv ${WORKDIR}/out/google.golang.org/grpc/lookup/grpc_lookup_v1/* ${WORKDIR}/out/google.golang.org/grpc/internal/proto/grpc_lookup_v1 - -# grpc_testing_not_regenerate/*.pb.go are not re-generated, -# see grpc_testing_not_regenerate/README.md for details. -rm ${WORKDIR}/out/google.golang.org/grpc/reflection/grpc_testing_not_regenerate/*.pb.go - -cp -R ${WORKDIR}/out/google.golang.org/grpc/* . diff --git a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go index b54a3a322..ef3d6ed6c 100644 --- a/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go +++ b/vendor/google.golang.org/grpc/resolver/dns/dns_resolver.go @@ -18,9 +18,6 @@ // Package dns implements a dns resolver to be installed as the default resolver // in grpc. -// -// Deprecated: this package is imported by grpc and should not need to be -// imported directly by users. package dns import ( @@ -52,3 +49,12 @@ func SetResolvingTimeout(timeout time.Duration) { func NewBuilder() resolver.Builder { return dns.NewBuilder() } + +// SetMinResolutionInterval sets the default minimum interval at which DNS +// re-resolutions are allowed. This helps to prevent excessive re-resolution. +// +// It must be called only at application startup, before any gRPC calls are +// made. Modifying this value after initialization is not thread-safe. +func SetMinResolutionInterval(d time.Duration) { + dns.MinResolutionInterval = d +} diff --git a/vendor/google.golang.org/grpc/resolver_wrapper.go b/vendor/google.golang.org/grpc/resolver_wrapper.go index 9dcc9780f..23bb3fb25 100644 --- a/vendor/google.golang.org/grpc/resolver_wrapper.go +++ b/vendor/google.golang.org/grpc/resolver_wrapper.go @@ -66,7 +66,7 @@ func newCCResolverWrapper(cc *ClientConn) *ccResolverWrapper { // any newly created ccResolverWrapper, except that close may be called instead. func (ccr *ccResolverWrapper) start() error { errCh := make(chan error) - ccr.serializer.Schedule(func(ctx context.Context) { + ccr.serializer.TrySchedule(func(ctx context.Context) { if ctx.Err() != nil { return } @@ -85,7 +85,7 @@ func (ccr *ccResolverWrapper) start() error { } func (ccr *ccResolverWrapper) resolveNow(o resolver.ResolveNowOptions) { - ccr.serializer.Schedule(func(ctx context.Context) { + ccr.serializer.TrySchedule(func(ctx context.Context) { if ctx.Err() != nil || ccr.resolver == nil { return } @@ -102,7 +102,7 @@ func (ccr *ccResolverWrapper) close() { ccr.closed = true ccr.mu.Unlock() - ccr.serializer.Schedule(func(context.Context) { + ccr.serializer.TrySchedule(func(context.Context) { if ccr.resolver == nil { return } @@ -171,12 +171,15 @@ func (ccr *ccResolverWrapper) NewAddress(addrs []resolver.Address) { // ParseServiceConfig is called by resolver implementations to parse a JSON // representation of the service config. func (ccr *ccResolverWrapper) ParseServiceConfig(scJSON string) *serviceconfig.ParseResult { - return parseServiceConfig(scJSON) + return parseServiceConfig(scJSON, ccr.cc.dopts.maxCallAttempts) } // addChannelzTraceEvent adds a channelz trace event containing the new // state received from resolver implementations. func (ccr *ccResolverWrapper) addChannelzTraceEvent(s resolver.State) { + if !logger.V(0) && !channelz.IsOn() { + return + } var updates []string var oldSC, newSC *ServiceConfig var oldOK, newOK bool diff --git a/vendor/google.golang.org/grpc/rpc_util.go b/vendor/google.golang.org/grpc/rpc_util.go index 998e251dd..2d96f1405 100644 --- a/vendor/google.golang.org/grpc/rpc_util.go +++ b/vendor/google.golang.org/grpc/rpc_util.go @@ -19,7 +19,6 @@ package grpc import ( - "bytes" "compress/gzip" "context" "encoding/binary" @@ -35,6 +34,7 @@ import ( "google.golang.org/grpc/encoding" "google.golang.org/grpc/encoding/proto" "google.golang.org/grpc/internal/transport" + "google.golang.org/grpc/mem" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" @@ -220,8 +220,8 @@ type HeaderCallOption struct { HeaderAddr *metadata.MD } -func (o HeaderCallOption) before(c *callInfo) error { return nil } -func (o HeaderCallOption) after(c *callInfo, attempt *csAttempt) { +func (o HeaderCallOption) before(*callInfo) error { return nil } +func (o HeaderCallOption) after(_ *callInfo, attempt *csAttempt) { *o.HeaderAddr, _ = attempt.s.Header() } @@ -242,8 +242,8 @@ type TrailerCallOption struct { TrailerAddr *metadata.MD } -func (o TrailerCallOption) before(c *callInfo) error { return nil } -func (o TrailerCallOption) after(c *callInfo, attempt *csAttempt) { +func (o TrailerCallOption) before(*callInfo) error { return nil } +func (o TrailerCallOption) after(_ *callInfo, attempt *csAttempt) { *o.TrailerAddr = attempt.s.Trailer() } @@ -264,24 +264,20 @@ type PeerCallOption struct { PeerAddr *peer.Peer } -func (o PeerCallOption) before(c *callInfo) error { return nil } -func (o PeerCallOption) after(c *callInfo, attempt *csAttempt) { +func (o PeerCallOption) before(*callInfo) error { return nil } +func (o PeerCallOption) after(_ *callInfo, attempt *csAttempt) { if x, ok := peer.FromContext(attempt.s.Context()); ok { *o.PeerAddr = *x } } -// WaitForReady configures the action to take when an RPC is attempted on broken -// connections or unreachable servers. If waitForReady is false and the -// connection is in the TRANSIENT_FAILURE state, the RPC will fail -// immediately. Otherwise, the RPC client will block the call until a -// connection is available (or the call is canceled or times out) and will -// retry the call if it fails due to a transient error. gRPC will not retry if -// data was written to the wire unless the server indicates it did not process -// the data. Please refer to -// https://github.com/grpc/grpc/blob/master/doc/wait-for-ready.md. +// WaitForReady configures the RPC's behavior when the client is in +// TRANSIENT_FAILURE, which occurs when all addresses fail to connect. If +// waitForReady is false, the RPC will fail immediately. Otherwise, the client +// will wait until a connection becomes available or the RPC's deadline is +// reached. // -// By default, RPCs don't "wait for ready". +// By default, RPCs do not "wait for ready". func WaitForReady(waitForReady bool) CallOption { return FailFastCallOption{FailFast: !waitForReady} } @@ -308,7 +304,7 @@ func (o FailFastCallOption) before(c *callInfo) error { c.failFast = o.FailFast return nil } -func (o FailFastCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o FailFastCallOption) after(*callInfo, *csAttempt) {} // OnFinish returns a CallOption that configures a callback to be called when // the call completes. The error passed to the callback is the status of the @@ -343,7 +339,7 @@ func (o OnFinishCallOption) before(c *callInfo) error { return nil } -func (o OnFinishCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o OnFinishCallOption) after(*callInfo, *csAttempt) {} // MaxCallRecvMsgSize returns a CallOption which sets the maximum message size // in bytes the client can receive. If this is not set, gRPC uses the default @@ -367,7 +363,7 @@ func (o MaxRecvMsgSizeCallOption) before(c *callInfo) error { c.maxReceiveMessageSize = &o.MaxRecvMsgSize return nil } -func (o MaxRecvMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o MaxRecvMsgSizeCallOption) after(*callInfo, *csAttempt) {} // MaxCallSendMsgSize returns a CallOption which sets the maximum message size // in bytes the client can send. If this is not set, gRPC uses the default @@ -391,7 +387,7 @@ func (o MaxSendMsgSizeCallOption) before(c *callInfo) error { c.maxSendMessageSize = &o.MaxSendMsgSize return nil } -func (o MaxSendMsgSizeCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o MaxSendMsgSizeCallOption) after(*callInfo, *csAttempt) {} // PerRPCCredentials returns a CallOption that sets credentials.PerRPCCredentials // for a call. @@ -414,7 +410,7 @@ func (o PerRPCCredsCallOption) before(c *callInfo) error { c.creds = o.Creds return nil } -func (o PerRPCCredsCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o PerRPCCredsCallOption) after(*callInfo, *csAttempt) {} // UseCompressor returns a CallOption which sets the compressor used when // sending the request. If WithCompressor is also set, UseCompressor has @@ -442,7 +438,7 @@ func (o CompressorCallOption) before(c *callInfo) error { c.compressorType = o.CompressorType return nil } -func (o CompressorCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o CompressorCallOption) after(*callInfo, *csAttempt) {} // CallContentSubtype returns a CallOption that will set the content-subtype // for a call. For example, if content-subtype is "json", the Content-Type over @@ -479,7 +475,7 @@ func (o ContentSubtypeCallOption) before(c *callInfo) error { c.contentSubtype = o.ContentSubtype return nil } -func (o ContentSubtypeCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o ContentSubtypeCallOption) after(*callInfo, *csAttempt) {} // ForceCodec returns a CallOption that will set codec to be used for all // request and response messages for a call. The result of calling Name() will @@ -515,10 +511,50 @@ type ForceCodecCallOption struct { } func (o ForceCodecCallOption) before(c *callInfo) error { - c.codec = o.Codec + c.codec = newCodecV1Bridge(o.Codec) return nil } -func (o ForceCodecCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o ForceCodecCallOption) after(*callInfo, *csAttempt) {} + +// ForceCodecV2 returns a CallOption that will set codec to be used for all +// request and response messages for a call. The result of calling Name() will +// be used as the content-subtype after converting to lowercase, unless +// CallContentSubtype is also used. +// +// See Content-Type on +// https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests for +// more details. Also see the documentation on RegisterCodec and +// CallContentSubtype for more details on the interaction between Codec and +// content-subtype. +// +// This function is provided for advanced users; prefer to use only +// CallContentSubtype to select a registered codec instead. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func ForceCodecV2(codec encoding.CodecV2) CallOption { + return ForceCodecV2CallOption{CodecV2: codec} +} + +// ForceCodecV2CallOption is a CallOption that indicates the codec used for +// marshaling messages. +// +// # Experimental +// +// Notice: This type is EXPERIMENTAL and may be changed or removed in a +// later release. +type ForceCodecV2CallOption struct { + CodecV2 encoding.CodecV2 +} + +func (o ForceCodecV2CallOption) before(c *callInfo) error { + c.codec = o.CodecV2 + return nil +} + +func (o ForceCodecV2CallOption) after(*callInfo, *csAttempt) {} // CallCustomCodec behaves like ForceCodec, but accepts a grpc.Codec instead of // an encoding.Codec. @@ -540,10 +576,10 @@ type CustomCodecCallOption struct { } func (o CustomCodecCallOption) before(c *callInfo) error { - c.codec = o.Codec + c.codec = newCodecV0Bridge(o.Codec) return nil } -func (o CustomCodecCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o CustomCodecCallOption) after(*callInfo, *csAttempt) {} // MaxRetryRPCBufferSize returns a CallOption that limits the amount of memory // used for buffering this RPC's requests for retry purposes. @@ -571,7 +607,7 @@ func (o MaxRetryRPCBufferSizeCallOption) before(c *callInfo) error { c.maxRetryRPCBufferSize = o.MaxRetryRPCBufferSize return nil } -func (o MaxRetryRPCBufferSizeCallOption) after(c *callInfo, attempt *csAttempt) {} +func (o MaxRetryRPCBufferSizeCallOption) after(*callInfo, *csAttempt) {} // The format of the payload: compressed or not? type payloadFormat uint8 @@ -581,19 +617,28 @@ const ( compressionMade payloadFormat = 1 // compressed ) +func (pf payloadFormat) isCompressed() bool { + return pf == compressionMade +} + +type streamReader interface { + ReadHeader(header []byte) error + Read(n int) (mem.BufferSlice, error) +} + // parser reads complete gRPC messages from the underlying reader. type parser struct { // r is the underlying reader. // See the comment on recvMsg for the permissible // error types. - r io.Reader + r streamReader // The header of a gRPC message. Find more detail at // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md header [5]byte - // recvBufferPool is the pool of shared receive buffers. - recvBufferPool SharedBufferPool + // bufferPool is the pool of shared receive buffers. + bufferPool mem.BufferPool } // recvMsg reads a complete gRPC message from the stream. @@ -608,14 +653,15 @@ type parser struct { // - an error from the status package // // No other error values or types must be returned, which also means -// that the underlying io.Reader must not return an incompatible +// that the underlying streamReader must not return an incompatible // error. -func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byte, err error) { - if _, err := p.r.Read(p.header[:]); err != nil { +func (p *parser) recvMsg(maxReceiveMessageSize int) (payloadFormat, mem.BufferSlice, error) { + err := p.r.ReadHeader(p.header[:]) + if err != nil { return 0, nil, err } - pf = payloadFormat(p.header[0]) + pf := payloadFormat(p.header[0]) length := binary.BigEndian.Uint32(p.header[1:]) if length == 0 { @@ -627,20 +673,21 @@ func (p *parser) recvMsg(maxReceiveMessageSize int) (pf payloadFormat, msg []byt if int(length) > maxReceiveMessageSize { return 0, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message larger than max (%d vs. %d)", length, maxReceiveMessageSize) } - msg = p.recvBufferPool.Get(int(length)) - if _, err := p.r.Read(msg); err != nil { + + data, err := p.r.Read(int(length)) + if err != nil { if err == io.EOF { err = io.ErrUnexpectedEOF } return 0, nil, err } - return pf, msg, nil + return pf, data, nil } // encode serializes msg and returns a buffer containing the message, or an // error if it is too large to be transmitted by grpc. If msg is nil, it // generates an empty message. -func encode(c baseCodec, msg any) ([]byte, error) { +func encode(c baseCodec, msg any) (mem.BufferSlice, error) { if msg == nil { // NOTE: typed nils will not be caught by this check return nil, nil } @@ -648,7 +695,8 @@ func encode(c baseCodec, msg any) ([]byte, error) { if err != nil { return nil, status.Errorf(codes.Internal, "grpc: error while marshaling: %v", err.Error()) } - if uint(len(b)) > math.MaxUint32 { + if uint(b.Len()) > math.MaxUint32 { + b.Free() return nil, status.Errorf(codes.ResourceExhausted, "grpc: message too large (%d bytes)", len(b)) } return b, nil @@ -659,34 +707,41 @@ func encode(c baseCodec, msg any) ([]byte, error) { // indicating no compression was done. // // TODO(dfawley): eliminate cp parameter by wrapping Compressor in an encoding.Compressor. -func compress(in []byte, cp Compressor, compressor encoding.Compressor) ([]byte, error) { - if compressor == nil && cp == nil { - return nil, nil - } - if len(in) == 0 { - return nil, nil +func compress(in mem.BufferSlice, cp Compressor, compressor encoding.Compressor, pool mem.BufferPool) (mem.BufferSlice, payloadFormat, error) { + if (compressor == nil && cp == nil) || in.Len() == 0 { + return nil, compressionNone, nil } + var out mem.BufferSlice + w := mem.NewWriter(&out, pool) wrapErr := func(err error) error { + out.Free() return status.Errorf(codes.Internal, "grpc: error while compressing: %v", err.Error()) } - cbuf := &bytes.Buffer{} if compressor != nil { - z, err := compressor.Compress(cbuf) + z, err := compressor.Compress(w) if err != nil { - return nil, wrapErr(err) + return nil, 0, wrapErr(err) } - if _, err := z.Write(in); err != nil { - return nil, wrapErr(err) + for _, b := range in { + if _, err := z.Write(b.ReadOnlyData()); err != nil { + return nil, 0, wrapErr(err) + } } if err := z.Close(); err != nil { - return nil, wrapErr(err) + return nil, 0, wrapErr(err) } } else { - if err := cp.Do(cbuf, in); err != nil { - return nil, wrapErr(err) + // This is obviously really inefficient since it fully materializes the data, but + // there is no way around this with the old Compressor API. At least it attempts + // to return the buffer to the provider, in the hopes it can be reused (maybe + // even by a subsequent call to this very function). + buf := in.MaterializeToBuffer(pool) + defer buf.Free() + if err := cp.Do(w, buf.ReadOnlyData()); err != nil { + return nil, 0, wrapErr(err) } } - return cbuf.Bytes(), nil + return out, compressionMade, nil } const ( @@ -697,33 +752,36 @@ const ( // msgHeader returns a 5-byte header for the message being transmitted and the // payload, which is compData if non-nil or data otherwise. -func msgHeader(data, compData []byte) (hdr []byte, payload []byte) { +func msgHeader(data, compData mem.BufferSlice, pf payloadFormat) (hdr []byte, payload mem.BufferSlice) { hdr = make([]byte, headerLen) - if compData != nil { - hdr[0] = byte(compressionMade) - data = compData + hdr[0] = byte(pf) + + var length uint32 + if pf.isCompressed() { + length = uint32(compData.Len()) + payload = compData } else { - hdr[0] = byte(compressionNone) + length = uint32(data.Len()) + payload = data } // Write length of payload into buf - binary.BigEndian.PutUint32(hdr[payloadLen:], uint32(len(data))) - return hdr, data + binary.BigEndian.PutUint32(hdr[payloadLen:], length) + return hdr, payload } -func outPayload(client bool, msg any, data, payload []byte, t time.Time) *stats.OutPayload { +func outPayload(client bool, msg any, dataLength, payloadLength int, t time.Time) *stats.OutPayload { return &stats.OutPayload{ Client: client, Payload: msg, - Data: data, - Length: len(data), - WireLength: len(payload) + headerLen, - CompressedLength: len(payload), + Length: dataLength, + WireLength: payloadLength + headerLen, + CompressedLength: payloadLength, SentTime: t, } } -func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool) *status.Status { +func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool, isServer bool) *status.Status { switch pf { case compressionNone: case compressionMade: @@ -731,7 +789,11 @@ func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool return status.New(codes.Internal, "grpc: compressed flag set with identity or empty encoding") } if !haveCompressor { - return status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", recvCompress) + if isServer { + return status.Newf(codes.Unimplemented, "grpc: Decompressor is not installed for grpc-encoding %q", recvCompress) + } else { + return status.Newf(codes.Internal, "grpc: Decompressor is not installed for grpc-encoding %q", recvCompress) + } } default: return status.Newf(codes.Internal, "grpc: received unexpected payload format %d", pf) @@ -741,104 +803,129 @@ func checkRecvPayload(pf payloadFormat, recvCompress string, haveCompressor bool type payloadInfo struct { compressedLength int // The compressed length got from wire. - uncompressedBytes []byte + uncompressedBytes mem.BufferSlice +} + +func (p *payloadInfo) free() { + if p != nil && p.uncompressedBytes != nil { + p.uncompressedBytes.Free() + } } // recvAndDecompress reads a message from the stream, decompressing it if necessary. // // Cancelling the returned cancel function releases the buffer back to the pool. So the caller should cancel as soon as // the buffer is no longer needed. -func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor, -) (uncompressedBuf []byte, cancel func(), err error) { - pf, compressedBuf, err := p.recvMsg(maxReceiveMessageSize) +// TODO: Refactor this function to reduce the number of arguments. +// See: https://google.github.io/styleguide/go/best-practices.html#function-argument-lists +func recvAndDecompress(p *parser, s *transport.Stream, dc Decompressor, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor, isServer bool, +) (out mem.BufferSlice, err error) { + pf, compressed, err := p.recvMsg(maxReceiveMessageSize) if err != nil { - return nil, nil, err + return nil, err } - if st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil); st != nil { - return nil, nil, st.Err() + compressedLength := compressed.Len() + + if st := checkRecvPayload(pf, s.RecvCompress(), compressor != nil || dc != nil, isServer); st != nil { + compressed.Free() + return nil, st.Err() } var size int - if pf == compressionMade { + if pf.isCompressed() { + defer compressed.Free() + // To match legacy behavior, if the decompressor is set by WithDecompressor or RPCDecompressor, // use this decompressor as the default. if dc != nil { - uncompressedBuf, err = dc.Do(bytes.NewReader(compressedBuf)) + var uncompressedBuf []byte + uncompressedBuf, err = dc.Do(compressed.Reader()) + if err == nil { + out = mem.BufferSlice{mem.NewBuffer(&uncompressedBuf, nil)} + } size = len(uncompressedBuf) } else { - uncompressedBuf, size, err = decompress(compressor, compressedBuf, maxReceiveMessageSize) + out, size, err = decompress(compressor, compressed, maxReceiveMessageSize, p.bufferPool) } if err != nil { - return nil, nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message: %v", err) + return nil, status.Errorf(codes.Internal, "grpc: failed to decompress the received message: %v", err) } if size > maxReceiveMessageSize { + out.Free() // TODO: Revisit the error code. Currently keep it consistent with java // implementation. - return nil, nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize) + return nil, status.Errorf(codes.ResourceExhausted, "grpc: received message after decompression larger than max (%d vs. %d)", size, maxReceiveMessageSize) } } else { - uncompressedBuf = compressedBuf + out = compressed } if payInfo != nil { - payInfo.compressedLength = len(compressedBuf) - payInfo.uncompressedBytes = uncompressedBuf - - cancel = func() {} - } else { - cancel = func() { - p.recvBufferPool.Put(&compressedBuf) - } + payInfo.compressedLength = compressedLength + out.Ref() + payInfo.uncompressedBytes = out } - return uncompressedBuf, cancel, nil + return out, nil } // Using compressor, decompress d, returning data and size. // Optionally, if data will be over maxReceiveMessageSize, just return the size. -func decompress(compressor encoding.Compressor, d []byte, maxReceiveMessageSize int) ([]byte, int, error) { - dcReader, err := compressor.Decompress(bytes.NewReader(d)) +func decompress(compressor encoding.Compressor, d mem.BufferSlice, maxReceiveMessageSize int, pool mem.BufferPool) (mem.BufferSlice, int, error) { + dcReader, err := compressor.Decompress(d.Reader()) if err != nil { return nil, 0, err } - if sizer, ok := compressor.(interface { - DecompressedSize(compressedBytes []byte) int - }); ok { - if size := sizer.DecompressedSize(d); size >= 0 { - if size > maxReceiveMessageSize { - return nil, size, nil - } - // size is used as an estimate to size the buffer, but we - // will read more data if available. - // +MinRead so ReadFrom will not reallocate if size is correct. - // - // TODO: If we ensure that the buffer size is the same as the DecompressedSize, - // we can also utilize the recv buffer pool here. - buf := bytes.NewBuffer(make([]byte, 0, size+bytes.MinRead)) - bytesRead, err := buf.ReadFrom(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1)) - return buf.Bytes(), int(bytesRead), err - } + + // TODO: Can/should this still be preserved with the new BufferSlice API? Are + // there any actual benefits to allocating a single large buffer instead of + // multiple smaller ones? + //if sizer, ok := compressor.(interface { + // DecompressedSize(compressedBytes []byte) int + //}); ok { + // if size := sizer.DecompressedSize(d); size >= 0 { + // if size > maxReceiveMessageSize { + // return nil, size, nil + // } + // // size is used as an estimate to size the buffer, but we + // // will read more data if available. + // // +MinRead so ReadFrom will not reallocate if size is correct. + // // + // // TODO: If we ensure that the buffer size is the same as the DecompressedSize, + // // we can also utilize the recv buffer pool here. + // buf := bytes.NewBuffer(make([]byte, 0, size+bytes.MinRead)) + // bytesRead, err := buf.ReadFrom(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1)) + // return buf.Bytes(), int(bytesRead), err + // } + //} + + var out mem.BufferSlice + _, err = io.Copy(mem.NewWriter(&out, pool), io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1)) + if err != nil { + out.Free() + return nil, 0, err } - // Read from LimitReader with limit max+1. So if the underlying - // reader is over limit, the result will be bigger than max. - d, err = io.ReadAll(io.LimitReader(dcReader, int64(maxReceiveMessageSize)+1)) - return d, len(d), err + return out, out.Len(), nil } // For the two compressor parameters, both should not be set, but if they are, // dc takes precedence over compressor. // TODO(dfawley): wrap the old compressor/decompressor using the new API? -func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m any, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor) error { - buf, cancel, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor) +func recv(p *parser, c baseCodec, s *transport.Stream, dc Decompressor, m any, maxReceiveMessageSize int, payInfo *payloadInfo, compressor encoding.Compressor, isServer bool) error { + data, err := recvAndDecompress(p, s, dc, maxReceiveMessageSize, payInfo, compressor, isServer) if err != nil { return err } - defer cancel() - if err := c.Unmarshal(buf, m); err != nil { + // If the codec wants its own reference to the data, it can get it. Otherwise, always + // free the buffers. + defer data.Free() + + if err := c.Unmarshal(data, m); err != nil { return status.Errorf(codes.Internal, "grpc: failed to unmarshal the received message: %v", err) } + return nil } @@ -941,7 +1028,7 @@ func setCallInfoCodec(c *callInfo) error { // encoding.Codec (Name vs. String method name). We only support // setting content subtype from encoding.Codec to avoid a behavior // change with the deprecated version. - if ec, ok := c.codec.(encoding.Codec); ok { + if ec, ok := c.codec.(encoding.CodecV2); ok { c.contentSubtype = strings.ToLower(ec.Name()) } } @@ -950,12 +1037,12 @@ func setCallInfoCodec(c *callInfo) error { if c.contentSubtype == "" { // No codec specified in CallOptions; use proto by default. - c.codec = encoding.GetCodec(proto.Name) + c.codec = getCodec(proto.Name) return nil } // c.contentSubtype is already lowercased in CallContentSubtype - c.codec = encoding.GetCodec(c.contentSubtype) + c.codec = getCodec(c.contentSubtype) if c.codec == nil { return status.Errorf(codes.Internal, "no codec registered for content-subtype %s", c.contentSubtype) } @@ -964,7 +1051,7 @@ func setCallInfoCodec(c *callInfo) error { // The SupportPackageIsVersion variables are referenced from generated protocol // buffer files to ensure compatibility with the gRPC version used. The latest -// support package version is 7. +// support package version is 9. // // Older versions are kept for compatibility. // @@ -976,6 +1063,7 @@ const ( SupportPackageIsVersion6 = true SupportPackageIsVersion7 = true SupportPackageIsVersion8 = true + SupportPackageIsVersion9 = true ) const grpcUA = "grpc-go/" + Version diff --git a/vendor/google.golang.org/grpc/server.go b/vendor/google.golang.org/grpc/server.go index fd4558daa..d1e1415a4 100644 --- a/vendor/google.golang.org/grpc/server.go +++ b/vendor/google.golang.org/grpc/server.go @@ -45,6 +45,7 @@ import ( "google.golang.org/grpc/internal/grpcutil" "google.golang.org/grpc/internal/transport" "google.golang.org/grpc/keepalive" + "google.golang.org/grpc/mem" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" @@ -80,7 +81,7 @@ func init() { } internal.BinaryLogger = binaryLogger internal.JoinServerOptions = newJoinServerOption - internal.RecvBufferPool = recvBufferPool + internal.BufferPool = bufferPool } var statusOK = status.New(codes.OK, "") @@ -170,7 +171,7 @@ type serverOptions struct { maxHeaderListSize *uint32 headerTableSize *uint32 numServerWorkers uint32 - recvBufferPool SharedBufferPool + bufferPool mem.BufferPool waitForHandlers bool } @@ -181,7 +182,7 @@ var defaultServerOptions = serverOptions{ connectionTimeout: 120 * time.Second, writeBufferSize: defaultWriteBufSize, readBufferSize: defaultReadBufSize, - recvBufferPool: nopBufferPool{}, + bufferPool: mem.DefaultBufferPool(), } var globalServerOptions []ServerOption @@ -313,7 +314,7 @@ func KeepaliveEnforcementPolicy(kep keepalive.EnforcementPolicy) ServerOption { // Will be supported throughout 1.x. func CustomCodec(codec Codec) ServerOption { return newFuncServerOption(func(o *serverOptions) { - o.codec = codec + o.codec = newCodecV0Bridge(codec) }) } @@ -342,7 +343,22 @@ func CustomCodec(codec Codec) ServerOption { // later release. func ForceServerCodec(codec encoding.Codec) ServerOption { return newFuncServerOption(func(o *serverOptions) { - o.codec = codec + o.codec = newCodecV1Bridge(codec) + }) +} + +// ForceServerCodecV2 is the equivalent of ForceServerCodec, but for the new +// CodecV2 interface. +// +// Will be supported throughout 1.x. +// +// # Experimental +// +// Notice: This API is EXPERIMENTAL and may be changed or removed in a +// later release. +func ForceServerCodecV2(codecV2 encoding.CodecV2) ServerOption { + return newFuncServerOption(func(o *serverOptions) { + o.codec = codecV2 }) } @@ -527,12 +543,22 @@ func ConnectionTimeout(d time.Duration) ServerOption { }) } +// MaxHeaderListSizeServerOption is a ServerOption that sets the max +// (uncompressed) size of header list that the server is prepared to accept. +type MaxHeaderListSizeServerOption struct { + MaxHeaderListSize uint32 +} + +func (o MaxHeaderListSizeServerOption) apply(so *serverOptions) { + so.maxHeaderListSize = &o.MaxHeaderListSize +} + // MaxHeaderListSize returns a ServerOption that sets the max (uncompressed) size // of header list that the server is prepared to accept. func MaxHeaderListSize(s uint32) ServerOption { - return newFuncServerOption(func(o *serverOptions) { - o.maxHeaderListSize = &s - }) + return MaxHeaderListSizeServerOption{ + MaxHeaderListSize: s, + } } // HeaderTableSize returns a ServerOption that sets the size of dynamic @@ -582,26 +608,9 @@ func WaitForHandlers(w bool) ServerOption { }) } -// RecvBufferPool returns a ServerOption that configures the server -// to use the provided shared buffer pool for parsing incoming messages. Depending -// on the application's workload, this could result in reduced memory allocation. -// -// If you are unsure about how to implement a memory pool but want to utilize one, -// begin with grpc.NewSharedBufferPool. -// -// Note: The shared buffer pool feature will not be active if any of the following -// options are used: StatsHandler, EnableTracing, or binary logging. In such -// cases, the shared buffer pool will be ignored. -// -// Deprecated: use experimental.WithRecvBufferPool instead. Will be deleted in -// v1.60.0 or later. -func RecvBufferPool(bufferPool SharedBufferPool) ServerOption { - return recvBufferPool(bufferPool) -} - -func recvBufferPool(bufferPool SharedBufferPool) ServerOption { +func bufferPool(bufferPool mem.BufferPool) ServerOption { return newFuncServerOption(func(o *serverOptions) { - o.recvBufferPool = bufferPool + o.bufferPool = bufferPool }) } @@ -612,7 +621,7 @@ func recvBufferPool(bufferPool SharedBufferPool) ServerOption { // workload (assuming a QPS of a few thousand requests/sec). const serverWorkerResetThreshold = 1 << 16 -// serverWorkers blocks on a *transport.Stream channel forever and waits for +// serverWorker blocks on a *transport.Stream channel forever and waits for // data to be fed by serveStreams. This allows multiple requests to be // processed by the same goroutine, removing the need for expensive stack // re-allocations (see the runtime.morestack problem [1]). @@ -970,6 +979,7 @@ func (s *Server) newHTTP2Transport(c net.Conn) transport.ServerTransport { ChannelzParent: s.channelz, MaxHeaderListSize: s.opts.maxHeaderListSize, HeaderTableSize: s.opts.headerTableSize, + BufferPool: s.opts.bufferPool, } st, err := transport.NewServerTransport(c, config) if err != nil { @@ -1062,7 +1072,7 @@ var _ http.Handler = (*Server)(nil) // Notice: This API is EXPERIMENTAL and may be changed or removed in a // later release. func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { - st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers) + st, err := transport.NewServerHandlerTransport(w, r, s.opts.statsHandlers, s.opts.bufferPool) if err != nil { // Errors returned from transport.NewServerHandlerTransport have // already been written to w. @@ -1132,20 +1142,35 @@ func (s *Server) sendResponse(ctx context.Context, t transport.ServerTransport, channelz.Error(logger, s.channelz, "grpc: server failed to encode response: ", err) return err } - compData, err := compress(data, cp, comp) + + compData, pf, err := compress(data, cp, comp, s.opts.bufferPool) if err != nil { + data.Free() channelz.Error(logger, s.channelz, "grpc: server failed to compress response: ", err) return err } - hdr, payload := msgHeader(data, compData) + + hdr, payload := msgHeader(data, compData, pf) + + defer func() { + compData.Free() + data.Free() + // payload does not need to be freed here, it is either data or compData, both of + // which are already freed. + }() + + dataLen := data.Len() + payloadLen := payload.Len() // TODO(dfawley): should we be checking len(data) instead? - if len(payload) > s.opts.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", len(payload), s.opts.maxSendMessageSize) + if payloadLen > s.opts.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "grpc: trying to send message larger than max (%d vs. %d)", payloadLen, s.opts.maxSendMessageSize) } err = t.Write(stream, hdr, payload, opts) if err == nil { - for _, sh := range s.opts.statsHandlers { - sh.HandleRPC(ctx, outPayload(false, msg, data, payload, time.Now())) + if len(s.opts.statsHandlers) != 0 { + for _, sh := range s.opts.statsHandlers { + sh.HandleRPC(ctx, outPayload(false, msg, dataLen, payloadLen, time.Now())) + } } } return err @@ -1324,37 +1349,37 @@ func (s *Server) processUnaryRPC(ctx context.Context, t transport.ServerTranspor var payInfo *payloadInfo if len(shs) != 0 || len(binlogs) != 0 { payInfo = &payloadInfo{} + defer payInfo.free() } - d, cancel, err := recvAndDecompress(&parser{r: stream, recvBufferPool: s.opts.recvBufferPool}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp) + d, err := recvAndDecompress(&parser{r: stream, bufferPool: s.opts.bufferPool}, stream, dc, s.opts.maxReceiveMessageSize, payInfo, decomp, true) if err != nil { if e := t.WriteStatus(stream, status.Convert(err)); e != nil { channelz.Warningf(logger, s.channelz, "grpc: Server.processUnaryRPC failed to write status: %v", e) } return err } + defer d.Free() if channelz.IsOn() { t.IncrMsgRecv() } df := func(v any) error { - defer cancel() - if err := s.getCodec(stream.ContentSubtype()).Unmarshal(d, v); err != nil { return status.Errorf(codes.Internal, "grpc: error unmarshalling request: %v", err) } + for _, sh := range shs { sh.HandleRPC(ctx, &stats.InPayload{ RecvTime: time.Now(), Payload: v, - Length: len(d), + Length: d.Len(), WireLength: payInfo.compressedLength + headerLen, CompressedLength: payInfo.compressedLength, - Data: d, }) } if len(binlogs) != 0 { cm := &binarylog.ClientMessage{ - Message: d, + Message: d.Materialize(), } for _, binlog := range binlogs { binlog.Log(ctx, cm) @@ -1538,7 +1563,7 @@ func (s *Server) processStreamingRPC(ctx context.Context, t transport.ServerTran ctx: ctx, t: t, s: stream, - p: &parser{r: stream, recvBufferPool: s.opts.recvBufferPool}, + p: &parser{r: stream, bufferPool: s.opts.bufferPool}, codec: s.getCodec(stream.ContentSubtype()), maxReceiveMessageSize: s.opts.maxReceiveMessageSize, maxSendMessageSize: s.opts.maxSendMessageSize, @@ -1953,12 +1978,12 @@ func (s *Server) getCodec(contentSubtype string) baseCodec { return s.opts.codec } if contentSubtype == "" { - return encoding.GetCodec(proto.Name) + return getCodec(proto.Name) } - codec := encoding.GetCodec(contentSubtype) + codec := getCodec(contentSubtype) if codec == nil { logger.Warningf("Unsupported codec %q. Defaulting to %q for now. This will start to fail in future releases.", contentSubtype, proto.Name) - return encoding.GetCodec(proto.Name) + return getCodec(proto.Name) } return codec } diff --git a/vendor/google.golang.org/grpc/service_config.go b/vendor/google.golang.org/grpc/service_config.go index 2b35c5d21..2671c5ef6 100644 --- a/vendor/google.golang.org/grpc/service_config.go +++ b/vendor/google.golang.org/grpc/service_config.go @@ -26,6 +26,7 @@ import ( "time" "google.golang.org/grpc/balancer" + "google.golang.org/grpc/balancer/pickfirst" "google.golang.org/grpc/codes" "google.golang.org/grpc/internal" "google.golang.org/grpc/internal/balancer/gracefulswitch" @@ -163,16 +164,18 @@ type jsonSC struct { } func init() { - internal.ParseServiceConfig = parseServiceConfig + internal.ParseServiceConfig = func(js string) *serviceconfig.ParseResult { + return parseServiceConfig(js, defaultMaxCallAttempts) + } } -func parseServiceConfig(js string) *serviceconfig.ParseResult { +func parseServiceConfig(js string, maxAttempts int) *serviceconfig.ParseResult { if len(js) == 0 { return &serviceconfig.ParseResult{Err: fmt.Errorf("no JSON service config provided")} } var rsc jsonSC err := json.Unmarshal([]byte(js), &rsc) if err != nil { - logger.Warningf("grpc: unmarshaling service config %s: %v", js, err) + logger.Warningf("grpc: unmarshalling service config %s: %v", js, err) return &serviceconfig.ParseResult{Err: err} } sc := ServiceConfig{ @@ -183,12 +186,12 @@ func parseServiceConfig(js string) *serviceconfig.ParseResult { } c := rsc.LoadBalancingConfig if c == nil { - name := PickFirstBalancerName + name := pickfirst.Name if rsc.LoadBalancingPolicy != nil { name = *rsc.LoadBalancingPolicy } if balancer.Get(name) == nil { - name = PickFirstBalancerName + name = pickfirst.Name } cfg := []map[string]any{{name: struct{}{}}} strCfg, err := json.Marshal(cfg) @@ -218,8 +221,8 @@ func parseServiceConfig(js string) *serviceconfig.ParseResult { WaitForReady: m.WaitForReady, Timeout: (*time.Duration)(m.Timeout), } - if mc.RetryPolicy, err = convertRetryPolicy(m.RetryPolicy); err != nil { - logger.Warningf("grpc: unmarshaling service config %s: %v", js, err) + if mc.RetryPolicy, err = convertRetryPolicy(m.RetryPolicy, maxAttempts); err != nil { + logger.Warningf("grpc: unmarshalling service config %s: %v", js, err) return &serviceconfig.ParseResult{Err: err} } if m.MaxRequestMessageBytes != nil { @@ -239,13 +242,13 @@ func parseServiceConfig(js string) *serviceconfig.ParseResult { for i, n := range *m.Name { path, err := n.generatePath() if err != nil { - logger.Warningf("grpc: error unmarshaling service config %s due to methodConfig[%d]: %v", js, i, err) + logger.Warningf("grpc: error unmarshalling service config %s due to methodConfig[%d]: %v", js, i, err) return &serviceconfig.ParseResult{Err: err} } if _, ok := paths[path]; ok { err = errDuplicatedName - logger.Warningf("grpc: error unmarshaling service config %s due to methodConfig[%d]: %v", js, i, err) + logger.Warningf("grpc: error unmarshalling service config %s due to methodConfig[%d]: %v", js, i, err) return &serviceconfig.ParseResult{Err: err} } paths[path] = struct{}{} @@ -264,7 +267,7 @@ func parseServiceConfig(js string) *serviceconfig.ParseResult { return &serviceconfig.ParseResult{Config: &sc} } -func convertRetryPolicy(jrp *jsonRetryPolicy) (p *internalserviceconfig.RetryPolicy, err error) { +func convertRetryPolicy(jrp *jsonRetryPolicy, maxAttempts int) (p *internalserviceconfig.RetryPolicy, err error) { if jrp == nil { return nil, nil } @@ -278,17 +281,16 @@ func convertRetryPolicy(jrp *jsonRetryPolicy) (p *internalserviceconfig.RetryPol return nil, nil } + if jrp.MaxAttempts < maxAttempts { + maxAttempts = jrp.MaxAttempts + } rp := &internalserviceconfig.RetryPolicy{ - MaxAttempts: jrp.MaxAttempts, + MaxAttempts: maxAttempts, InitialBackoff: time.Duration(jrp.InitialBackoff), MaxBackoff: time.Duration(jrp.MaxBackoff), BackoffMultiplier: jrp.BackoffMultiplier, RetryableStatusCodes: make(map[codes.Code]bool), } - if rp.MaxAttempts > 5 { - // TODO(retry): Make the max maxAttempts configurable. - rp.MaxAttempts = 5 - } for _, code := range jrp.RetryableStatusCodes { rp.RetryableStatusCodes[code] = true } diff --git a/vendor/google.golang.org/grpc/shared_buffer_pool.go b/vendor/google.golang.org/grpc/shared_buffer_pool.go deleted file mode 100644 index 48a64cfe8..000000000 --- a/vendor/google.golang.org/grpc/shared_buffer_pool.go +++ /dev/null @@ -1,154 +0,0 @@ -/* - * - * Copyright 2023 gRPC authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package grpc - -import "sync" - -// SharedBufferPool is a pool of buffers that can be shared, resulting in -// decreased memory allocation. Currently, in gRPC-go, it is only utilized -// for parsing incoming messages. -// -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. -type SharedBufferPool interface { - // Get returns a buffer with specified length from the pool. - // - // The returned byte slice may be not zero initialized. - Get(length int) []byte - - // Put returns a buffer to the pool. - Put(*[]byte) -} - -// NewSharedBufferPool creates a simple SharedBufferPool with buckets -// of different sizes to optimize memory usage. This prevents the pool from -// wasting large amounts of memory, even when handling messages of varying sizes. -// -// # Experimental -// -// Notice: This API is EXPERIMENTAL and may be changed or removed in a -// later release. -func NewSharedBufferPool() SharedBufferPool { - return &simpleSharedBufferPool{ - pools: [poolArraySize]simpleSharedBufferChildPool{ - newBytesPool(level0PoolMaxSize), - newBytesPool(level1PoolMaxSize), - newBytesPool(level2PoolMaxSize), - newBytesPool(level3PoolMaxSize), - newBytesPool(level4PoolMaxSize), - newBytesPool(0), - }, - } -} - -// simpleSharedBufferPool is a simple implementation of SharedBufferPool. -type simpleSharedBufferPool struct { - pools [poolArraySize]simpleSharedBufferChildPool -} - -func (p *simpleSharedBufferPool) Get(size int) []byte { - return p.pools[p.poolIdx(size)].Get(size) -} - -func (p *simpleSharedBufferPool) Put(bs *[]byte) { - p.pools[p.poolIdx(cap(*bs))].Put(bs) -} - -func (p *simpleSharedBufferPool) poolIdx(size int) int { - switch { - case size <= level0PoolMaxSize: - return level0PoolIdx - case size <= level1PoolMaxSize: - return level1PoolIdx - case size <= level2PoolMaxSize: - return level2PoolIdx - case size <= level3PoolMaxSize: - return level3PoolIdx - case size <= level4PoolMaxSize: - return level4PoolIdx - default: - return levelMaxPoolIdx - } -} - -const ( - level0PoolMaxSize = 16 // 16 B - level1PoolMaxSize = level0PoolMaxSize * 16 // 256 B - level2PoolMaxSize = level1PoolMaxSize * 16 // 4 KB - level3PoolMaxSize = level2PoolMaxSize * 16 // 64 KB - level4PoolMaxSize = level3PoolMaxSize * 16 // 1 MB -) - -const ( - level0PoolIdx = iota - level1PoolIdx - level2PoolIdx - level3PoolIdx - level4PoolIdx - levelMaxPoolIdx - poolArraySize -) - -type simpleSharedBufferChildPool interface { - Get(size int) []byte - Put(any) -} - -type bufferPool struct { - sync.Pool - - defaultSize int -} - -func (p *bufferPool) Get(size int) []byte { - bs := p.Pool.Get().(*[]byte) - - if cap(*bs) < size { - p.Pool.Put(bs) - - return make([]byte, size) - } - - return (*bs)[:size] -} - -func newBytesPool(size int) simpleSharedBufferChildPool { - return &bufferPool{ - Pool: sync.Pool{ - New: func() any { - bs := make([]byte, size) - return &bs - }, - }, - defaultSize: size, - } -} - -// nopBufferPool is a buffer pool just makes new buffer without pooling. -type nopBufferPool struct { -} - -func (nopBufferPool) Get(length int) []byte { - return make([]byte, length) -} - -func (nopBufferPool) Put(*[]byte) { -} diff --git a/vendor/google.golang.org/grpc/stats/stats.go b/vendor/google.golang.org/grpc/stats/stats.go index 4ab70e2d4..71195c494 100644 --- a/vendor/google.golang.org/grpc/stats/stats.go +++ b/vendor/google.golang.org/grpc/stats/stats.go @@ -73,10 +73,10 @@ func (*PickerUpdated) isRPCStats() {} type InPayload struct { // Client is true if this InPayload is from client side. Client bool - // Payload is the payload with original type. + // Payload is the payload with original type. This may be modified after + // the call to HandleRPC which provides the InPayload returns and must be + // copied if needed later. Payload any - // Data is the serialized message payload. - Data []byte // Length is the size of the uncompressed payload data. Does not include any // framing (gRPC or HTTP/2). @@ -143,10 +143,10 @@ func (s *InTrailer) isRPCStats() {} type OutPayload struct { // Client is true if this OutPayload is from client side. Client bool - // Payload is the payload with original type. + // Payload is the payload with original type. This may be modified after + // the call to HandleRPC which provides the OutPayload returns and must be + // copied if needed later. Payload any - // Data is the serialized message payload. - Data []byte // Length is the size of the uncompressed payload data. Does not include any // framing (gRPC or HTTP/2). Length int diff --git a/vendor/google.golang.org/grpc/stream.go b/vendor/google.golang.org/grpc/stream.go index d939ffc63..bb2b2a216 100644 --- a/vendor/google.golang.org/grpc/stream.go +++ b/vendor/google.golang.org/grpc/stream.go @@ -23,6 +23,7 @@ import ( "errors" "io" "math" + "math/rand" "strconv" "sync" "time" @@ -34,13 +35,13 @@ import ( "google.golang.org/grpc/internal/balancerload" "google.golang.org/grpc/internal/binarylog" "google.golang.org/grpc/internal/channelz" - "google.golang.org/grpc/internal/grpcrand" "google.golang.org/grpc/internal/grpcutil" imetadata "google.golang.org/grpc/internal/metadata" iresolver "google.golang.org/grpc/internal/resolver" "google.golang.org/grpc/internal/serviceconfig" istatus "google.golang.org/grpc/internal/status" "google.golang.org/grpc/internal/transport" + "google.golang.org/grpc/mem" "google.golang.org/grpc/metadata" "google.golang.org/grpc/peer" "google.golang.org/grpc/stats" @@ -359,7 +360,7 @@ func newClientStreamWithParams(ctx context.Context, desc *StreamDesc, cc *Client cs.attempt = a return nil } - if err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }); err != nil { + if err := cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op, nil) }); err != nil { return nil, err } @@ -516,7 +517,8 @@ func (a *csAttempt) newStream() error { return toRPCErr(nse.Err) } a.s = s - a.p = &parser{r: s, recvBufferPool: a.cs.cc.dopts.recvBufferPool} + a.ctx = s.Context() + a.p = &parser{r: s, bufferPool: a.cs.cc.dopts.copts.BufferPool} return nil } @@ -565,10 +567,15 @@ type clientStream struct { // place where we need to check if the attempt is nil. attempt *csAttempt // TODO(hedging): hedging will have multiple attempts simultaneously. - committed bool // active attempt committed for retry? - onCommit func() - buffer []func(a *csAttempt) error // operations to replay on retry - bufferSize int // current size of buffer + committed bool // active attempt committed for retry? + onCommit func() + replayBuffer []replayOp // operations to replay on retry + replayBufferSize int // current size of replayBuffer +} + +type replayOp struct { + op func(a *csAttempt) error + cleanup func() } // csAttempt implements a single transport stream attempt within a @@ -606,7 +613,12 @@ func (cs *clientStream) commitAttemptLocked() { cs.onCommit() } cs.committed = true - cs.buffer = nil + for _, op := range cs.replayBuffer { + if op.cleanup != nil { + op.cleanup() + } + } + cs.replayBuffer = nil } func (cs *clientStream) commitAttempt() { @@ -698,7 +710,7 @@ func (a *csAttempt) shouldRetry(err error) (bool, error) { if max := float64(rp.MaxBackoff); cur > max { cur = max } - dur = time.Duration(grpcrand.Int63n(int64(cur))) + dur = time.Duration(rand.Int63n(int64(cur))) cs.numRetriesSincePushback++ } @@ -731,7 +743,7 @@ func (cs *clientStream) retryLocked(attempt *csAttempt, lastErr error) error { // the stream is canceled. return err } - // Note that the first op in the replay buffer always sets cs.attempt + // Note that the first op in replayBuffer always sets cs.attempt // if it is able to pick a transport and create a stream. if lastErr = cs.replayBufferLocked(attempt); lastErr == nil { return nil @@ -760,7 +772,7 @@ func (cs *clientStream) withRetry(op func(a *csAttempt) error, onSuccess func()) // already be status errors. return toRPCErr(op(cs.attempt)) } - if len(cs.buffer) == 0 { + if len(cs.replayBuffer) == 0 { // For the first op, which controls creation of the stream and // assigns cs.attempt, we need to create a new attempt inline // before executing the first op. On subsequent ops, the attempt @@ -850,25 +862,26 @@ func (cs *clientStream) Trailer() metadata.MD { } func (cs *clientStream) replayBufferLocked(attempt *csAttempt) error { - for _, f := range cs.buffer { - if err := f(attempt); err != nil { + for _, f := range cs.replayBuffer { + if err := f.op(attempt); err != nil { return err } } return nil } -func (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error) { +func (cs *clientStream) bufferForRetryLocked(sz int, op func(a *csAttempt) error, cleanup func()) { // Note: we still will buffer if retry is disabled (for transparent retries). if cs.committed { return } - cs.bufferSize += sz - if cs.bufferSize > cs.callInfo.maxRetryRPCBufferSize { + cs.replayBufferSize += sz + if cs.replayBufferSize > cs.callInfo.maxRetryRPCBufferSize { cs.commitAttemptLocked() + cleanup() return } - cs.buffer = append(cs.buffer, op) + cs.replayBuffer = append(cs.replayBuffer, replayOp{op: op, cleanup: cleanup}) } func (cs *clientStream) SendMsg(m any) (err error) { @@ -890,23 +903,50 @@ func (cs *clientStream) SendMsg(m any) (err error) { } // load hdr, payload, data - hdr, payload, data, err := prepareMsg(m, cs.codec, cs.cp, cs.comp) + hdr, data, payload, pf, err := prepareMsg(m, cs.codec, cs.cp, cs.comp, cs.cc.dopts.copts.BufferPool) if err != nil { return err } + defer func() { + data.Free() + // only free payload if compression was made, and therefore it is a different set + // of buffers from data. + if pf.isCompressed() { + payload.Free() + } + }() + + dataLen := data.Len() + payloadLen := payload.Len() // TODO(dfawley): should we be checking len(data) instead? - if len(payload) > *cs.callInfo.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), *cs.callInfo.maxSendMessageSize) + if payloadLen > *cs.callInfo.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", payloadLen, *cs.callInfo.maxSendMessageSize) } + + // always take an extra ref in case data == payload (i.e. when the data isn't + // compressed). The original ref will always be freed by the deferred free above. + payload.Ref() op := func(a *csAttempt) error { - return a.sendMsg(m, hdr, payload, data) + return a.sendMsg(m, hdr, payload, dataLen, payloadLen) + } + + // onSuccess is invoked when the op is captured for a subsequent retry. If the + // stream was established by a previous message and therefore retries are + // disabled, onSuccess will not be invoked, and payloadRef can be freed + // immediately. + onSuccessCalled := false + err = cs.withRetry(op, func() { + cs.bufferForRetryLocked(len(hdr)+payloadLen, op, payload.Free) + onSuccessCalled = true + }) + if !onSuccessCalled { + payload.Free() } - err = cs.withRetry(op, func() { cs.bufferForRetryLocked(len(hdr)+len(payload), op) }) if len(cs.binlogs) != 0 && err == nil { cm := &binarylog.ClientMessage{ OnClientSide: true, - Message: data, + Message: data.Materialize(), } for _, binlog := range cs.binlogs { binlog.Log(cs.ctx, cm) @@ -923,6 +963,7 @@ func (cs *clientStream) RecvMsg(m any) error { var recvInfo *payloadInfo if len(cs.binlogs) != 0 { recvInfo = &payloadInfo{} + defer recvInfo.free() } err := cs.withRetry(func(a *csAttempt) error { return a.recvMsg(m, recvInfo) @@ -930,7 +971,7 @@ func (cs *clientStream) RecvMsg(m any) error { if len(cs.binlogs) != 0 && err == nil { sm := &binarylog.ServerMessage{ OnClientSide: true, - Message: recvInfo.uncompressedBytes, + Message: recvInfo.uncompressedBytes.Materialize(), } for _, binlog := range cs.binlogs { binlog.Log(cs.ctx, sm) @@ -957,7 +998,7 @@ func (cs *clientStream) CloseSend() error { // RecvMsg. This also matches historical behavior. return nil } - cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op) }) + cs.withRetry(op, func() { cs.bufferForRetryLocked(0, op, nil) }) if len(cs.binlogs) != 0 { chc := &binarylog.ClientHalfClose{ OnClientSide: true, @@ -1033,7 +1074,7 @@ func (cs *clientStream) finish(err error) { cs.cancel() } -func (a *csAttempt) sendMsg(m any, hdr, payld, data []byte) error { +func (a *csAttempt) sendMsg(m any, hdr []byte, payld mem.BufferSlice, dataLength, payloadLength int) error { cs := a.cs if a.trInfo != nil { a.mu.Lock() @@ -1051,8 +1092,10 @@ func (a *csAttempt) sendMsg(m any, hdr, payld, data []byte) error { } return io.EOF } - for _, sh := range a.statsHandlers { - sh.HandleRPC(a.ctx, outPayload(true, m, data, payld, time.Now())) + if len(a.statsHandlers) != 0 { + for _, sh := range a.statsHandlers { + sh.HandleRPC(a.ctx, outPayload(true, m, dataLength, payloadLength, time.Now())) + } } if channelz.IsOn() { a.t.IncrMsgSent() @@ -1064,6 +1107,7 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) { cs := a.cs if len(a.statsHandlers) != 0 && payInfo == nil { payInfo = &payloadInfo{} + defer payInfo.free() } if !a.decompSet { @@ -1082,8 +1126,7 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) { // Only initialize this state once per stream. a.decompSet = true } - err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decomp) - if err != nil { + if err := recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, payInfo, a.decomp, false); err != nil { if err == io.EOF { if statusErr := a.s.Status().Err(); statusErr != nil { return statusErr @@ -1102,14 +1145,12 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) { } for _, sh := range a.statsHandlers { sh.HandleRPC(a.ctx, &stats.InPayload{ - Client: true, - RecvTime: time.Now(), - Payload: m, - // TODO truncate large payload. - Data: payInfo.uncompressedBytes, + Client: true, + RecvTime: time.Now(), + Payload: m, WireLength: payInfo.compressedLength + headerLen, CompressedLength: payInfo.compressedLength, - Length: len(payInfo.uncompressedBytes), + Length: payInfo.uncompressedBytes.Len(), }) } if channelz.IsOn() { @@ -1121,14 +1162,12 @@ func (a *csAttempt) recvMsg(m any, payInfo *payloadInfo) (err error) { } // Special handling for non-server-stream rpcs. // This recv expects EOF or errors, so we don't collect inPayload. - err = recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp) - if err == nil { - return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) - } - if err == io.EOF { + if err := recv(a.p, cs.codec, a.s, a.dc, m, *cs.callInfo.maxReceiveMessageSize, nil, a.decomp, false); err == io.EOF { return a.s.Status().Err() // non-server streaming Recv returns nil on success + } else if err != nil { + return toRPCErr(err) } - return toRPCErr(err) + return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) } func (a *csAttempt) finish(err error) { @@ -1184,12 +1223,12 @@ func (a *csAttempt) finish(err error) { a.mu.Unlock() } -// newClientStream creates a ClientStream with the specified transport, on the +// newNonRetryClientStream creates a ClientStream with the specified transport, on the // given addrConn. // // It's expected that the given transport is either the same one in addrConn, or // is already closed. To avoid race, transport is specified separately, instead -// of using ac.transpot. +// of using ac.transport. // // Main difference between this and ClientConn.NewStream: // - no retry @@ -1275,7 +1314,7 @@ func newNonRetryClientStream(ctx context.Context, desc *StreamDesc, method strin return nil, err } as.s = s - as.p = &parser{r: s, recvBufferPool: ac.dopts.recvBufferPool} + as.p = &parser{r: s, bufferPool: ac.dopts.copts.BufferPool} ac.incrCallsStarted() if desc != unaryStreamDesc { // Listen on stream context to cleanup when the stream context is @@ -1372,17 +1411,26 @@ func (as *addrConnStream) SendMsg(m any) (err error) { } // load hdr, payload, data - hdr, payld, _, err := prepareMsg(m, as.codec, as.cp, as.comp) + hdr, data, payload, pf, err := prepareMsg(m, as.codec, as.cp, as.comp, as.ac.dopts.copts.BufferPool) if err != nil { return err } + defer func() { + data.Free() + // only free payload if compression was made, and therefore it is a different set + // of buffers from data. + if pf.isCompressed() { + payload.Free() + } + }() + // TODO(dfawley): should we be checking len(data) instead? - if len(payld) > *as.callInfo.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payld), *as.callInfo.maxSendMessageSize) + if payload.Len() > *as.callInfo.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", payload.Len(), *as.callInfo.maxSendMessageSize) } - if err := as.t.Write(as.s, hdr, payld, &transport.Options{Last: !as.desc.ClientStreams}); err != nil { + if err := as.t.Write(as.s, hdr, payload, &transport.Options{Last: !as.desc.ClientStreams}); err != nil { if !as.desc.ClientStreams { // For non-client-streaming RPCs, we return nil instead of EOF on error // because the generated code requires it. finish is not called; RecvMsg() @@ -1422,8 +1470,7 @@ func (as *addrConnStream) RecvMsg(m any) (err error) { // Only initialize this state once per stream. as.decompSet = true } - err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp) - if err != nil { + if err := recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp, false); err != nil { if err == io.EOF { if statusErr := as.s.Status().Err(); statusErr != nil { return statusErr @@ -1443,14 +1490,12 @@ func (as *addrConnStream) RecvMsg(m any) (err error) { // Special handling for non-server-stream rpcs. // This recv expects EOF or errors, so we don't collect inPayload. - err = recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp) - if err == nil { - return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) - } - if err == io.EOF { + if err := recv(as.p, as.codec, as.s, as.dc, m, *as.callInfo.maxReceiveMessageSize, nil, as.decomp, false); err == io.EOF { return as.s.Status().Err() // non-server streaming Recv returns nil on success + } else if err != nil { + return toRPCErr(err) } - return toRPCErr(err) + return toRPCErr(errors.New("grpc: client streaming protocol violation: get , want ")) } func (as *addrConnStream) finish(err error) { @@ -1644,18 +1689,31 @@ func (ss *serverStream) SendMsg(m any) (err error) { } // load hdr, payload, data - hdr, payload, data, err := prepareMsg(m, ss.codec, ss.cp, ss.comp) + hdr, data, payload, pf, err := prepareMsg(m, ss.codec, ss.cp, ss.comp, ss.p.bufferPool) if err != nil { return err } + defer func() { + data.Free() + // only free payload if compression was made, and therefore it is a different set + // of buffers from data. + if pf.isCompressed() { + payload.Free() + } + }() + + dataLen := data.Len() + payloadLen := payload.Len() + // TODO(dfawley): should we be checking len(data) instead? - if len(payload) > ss.maxSendMessageSize { - return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", len(payload), ss.maxSendMessageSize) + if payloadLen > ss.maxSendMessageSize { + return status.Errorf(codes.ResourceExhausted, "trying to send message larger than max (%d vs. %d)", payloadLen, ss.maxSendMessageSize) } if err := ss.t.Write(ss.s, hdr, payload, &transport.Options{Last: false}); err != nil { return toRPCErr(err) } + if len(ss.binlogs) != 0 { if !ss.serverHeaderBinlogged { h, _ := ss.s.Header() @@ -1668,7 +1726,7 @@ func (ss *serverStream) SendMsg(m any) (err error) { } } sm := &binarylog.ServerMessage{ - Message: data, + Message: data.Materialize(), } for _, binlog := range ss.binlogs { binlog.Log(ss.ctx, sm) @@ -1676,7 +1734,7 @@ func (ss *serverStream) SendMsg(m any) (err error) { } if len(ss.statsHandler) != 0 { for _, sh := range ss.statsHandler { - sh.HandleRPC(ss.s.Context(), outPayload(false, m, data, payload, time.Now())) + sh.HandleRPC(ss.s.Context(), outPayload(false, m, dataLen, payloadLen, time.Now())) } } return nil @@ -1713,8 +1771,9 @@ func (ss *serverStream) RecvMsg(m any) (err error) { var payInfo *payloadInfo if len(ss.statsHandler) != 0 || len(ss.binlogs) != 0 { payInfo = &payloadInfo{} + defer payInfo.free() } - if err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, payInfo, ss.decomp); err != nil { + if err := recv(ss.p, ss.codec, ss.s, ss.dc, m, ss.maxReceiveMessageSize, payInfo, ss.decomp, true); err != nil { if err == io.EOF { if len(ss.binlogs) != 0 { chc := &binarylog.ClientHalfClose{} @@ -1732,11 +1791,9 @@ func (ss *serverStream) RecvMsg(m any) (err error) { if len(ss.statsHandler) != 0 { for _, sh := range ss.statsHandler { sh.HandleRPC(ss.s.Context(), &stats.InPayload{ - RecvTime: time.Now(), - Payload: m, - // TODO truncate large payload. - Data: payInfo.uncompressedBytes, - Length: len(payInfo.uncompressedBytes), + RecvTime: time.Now(), + Payload: m, + Length: payInfo.uncompressedBytes.Len(), WireLength: payInfo.compressedLength + headerLen, CompressedLength: payInfo.compressedLength, }) @@ -1744,7 +1801,7 @@ func (ss *serverStream) RecvMsg(m any) (err error) { } if len(ss.binlogs) != 0 { cm := &binarylog.ClientMessage{ - Message: payInfo.uncompressedBytes, + Message: payInfo.uncompressedBytes.Materialize(), } for _, binlog := range ss.binlogs { binlog.Log(ss.ctx, cm) @@ -1759,23 +1816,26 @@ func MethodFromServerStream(stream ServerStream) (string, bool) { return Method(stream.Context()) } -// prepareMsg returns the hdr, payload and data -// using the compressors passed or using the -// passed preparedmsg -func prepareMsg(m any, codec baseCodec, cp Compressor, comp encoding.Compressor) (hdr, payload, data []byte, err error) { +// prepareMsg returns the hdr, payload and data using the compressors passed or +// using the passed preparedmsg. The returned boolean indicates whether +// compression was made and therefore whether the payload needs to be freed in +// addition to the returned data. Freeing the payload if the returned boolean is +// false can lead to undefined behavior. +func prepareMsg(m any, codec baseCodec, cp Compressor, comp encoding.Compressor, pool mem.BufferPool) (hdr []byte, data, payload mem.BufferSlice, pf payloadFormat, err error) { if preparedMsg, ok := m.(*PreparedMsg); ok { - return preparedMsg.hdr, preparedMsg.payload, preparedMsg.encodedData, nil + return preparedMsg.hdr, preparedMsg.encodedData, preparedMsg.payload, preparedMsg.pf, nil } // The input interface is not a prepared msg. // Marshal and Compress the data at this point data, err = encode(codec, m) if err != nil { - return nil, nil, nil, err + return nil, nil, nil, 0, err } - compData, err := compress(data, cp, comp) + compData, pf, err := compress(data, cp, comp, pool) if err != nil { - return nil, nil, nil, err + data.Free() + return nil, nil, nil, 0, err } - hdr, payload = msgHeader(data, compData) - return hdr, payload, data, nil + hdr, payload = msgHeader(data, compData, pf) + return hdr, data, payload, pf, nil } diff --git a/vendor/google.golang.org/grpc/stream_interfaces.go b/vendor/google.golang.org/grpc/stream_interfaces.go new file mode 100644 index 000000000..0037fee0b --- /dev/null +++ b/vendor/google.golang.org/grpc/stream_interfaces.go @@ -0,0 +1,238 @@ +/* + * + * Copyright 2024 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package grpc + +// ServerStreamingClient represents the client side of a server-streaming (one +// request, many responses) RPC. It is generic over the type of the response +// message. It is used in generated code. +type ServerStreamingClient[Res any] interface { + // Recv receives the next response message from the server. The client may + // repeatedly call Recv to read messages from the response stream. If + // io.EOF is returned, the stream has terminated with an OK status. Any + // other error is compatible with the status package and indicates the + // RPC's status code and message. + Recv() (*Res, error) + + // ClientStream is embedded to provide Context, Header, and Trailer + // functionality. No other methods in the ClientStream should be called + // directly. + ClientStream +} + +// ServerStreamingServer represents the server side of a server-streaming (one +// request, many responses) RPC. It is generic over the type of the response +// message. It is used in generated code. +// +// To terminate the response stream, return from the handler method and return +// an error from the status package, or use nil to indicate an OK status code. +type ServerStreamingServer[Res any] interface { + // Send sends a response message to the client. The server handler may + // call Send multiple times to send multiple messages to the client. An + // error is returned if the stream was terminated unexpectedly, and the + // handler method should return, as the stream is no longer usable. + Send(*Res) error + + // ServerStream is embedded to provide Context, SetHeader, SendHeader, and + // SetTrailer functionality. No other methods in the ServerStream should + // be called directly. + ServerStream +} + +// ClientStreamingClient represents the client side of a client-streaming (many +// requests, one response) RPC. It is generic over both the type of the request +// message stream and the type of the unary response message. It is used in +// generated code. +type ClientStreamingClient[Req any, Res any] interface { + // Send sends a request message to the server. The client may call Send + // multiple times to send multiple messages to the server. On error, Send + // aborts the stream. If the error was generated by the client, the status + // is returned directly. Otherwise, io.EOF is returned, and the status of + // the stream may be discovered using CloseAndRecv(). + Send(*Req) error + + // CloseAndRecv closes the request stream and waits for the server's + // response. This method must be called once and only once after sending + // all request messages. Any error returned is implemented by the status + // package. + CloseAndRecv() (*Res, error) + + // ClientStream is embedded to provide Context, Header, and Trailer + // functionality. No other methods in the ClientStream should be called + // directly. + ClientStream +} + +// ClientStreamingServer represents the server side of a client-streaming (many +// requests, one response) RPC. It is generic over both the type of the request +// message stream and the type of the unary response message. It is used in +// generated code. +// +// To terminate the RPC, call SendAndClose and return nil from the method +// handler or do not call SendAndClose and return an error from the status +// package. +type ClientStreamingServer[Req any, Res any] interface { + // Recv receives the next request message from the client. The server may + // repeatedly call Recv to read messages from the request stream. If + // io.EOF is returned, it indicates the client called CloseAndRecv on its + // ClientStreamingClient. Any other error indicates the stream was + // terminated unexpectedly, and the handler method should return, as the + // stream is no longer usable. + Recv() (*Req, error) + + // SendAndClose sends a single response message to the client and closes + // the stream. This method must be called once and only once after all + // request messages have been processed. Recv should not be called after + // calling SendAndClose. + SendAndClose(*Res) error + + // ServerStream is embedded to provide Context, SetHeader, SendHeader, and + // SetTrailer functionality. No other methods in the ServerStream should + // be called directly. + ServerStream +} + +// BidiStreamingClient represents the client side of a bidirectional-streaming +// (many requests, many responses) RPC. It is generic over both the type of the +// request message stream and the type of the response message stream. It is +// used in generated code. +type BidiStreamingClient[Req any, Res any] interface { + // Send sends a request message to the server. The client may call Send + // multiple times to send multiple messages to the server. On error, Send + // aborts the stream. If the error was generated by the client, the status + // is returned directly. Otherwise, io.EOF is returned, and the status of + // the stream may be discovered using Recv(). + Send(*Req) error + + // Recv receives the next response message from the server. The client may + // repeatedly call Recv to read messages from the response stream. If + // io.EOF is returned, the stream has terminated with an OK status. Any + // other error is compatible with the status package and indicates the + // RPC's status code and message. + Recv() (*Res, error) + + // ClientStream is embedded to provide Context, Header, Trailer, and + // CloseSend functionality. No other methods in the ClientStream should be + // called directly. + ClientStream +} + +// BidiStreamingServer represents the server side of a bidirectional-streaming +// (many requests, many responses) RPC. It is generic over both the type of the +// request message stream and the type of the response message stream. It is +// used in generated code. +// +// To terminate the stream, return from the handler method and return +// an error from the status package, or use nil to indicate an OK status code. +type BidiStreamingServer[Req any, Res any] interface { + // Recv receives the next request message from the client. The server may + // repeatedly call Recv to read messages from the request stream. If + // io.EOF is returned, it indicates the client called CloseSend on its + // BidiStreamingClient. Any other error indicates the stream was + // terminated unexpectedly, and the handler method should return, as the + // stream is no longer usable. + Recv() (*Req, error) + + // Send sends a response message to the client. The server handler may + // call Send multiple times to send multiple messages to the client. An + // error is returned if the stream was terminated unexpectedly, and the + // handler method should return, as the stream is no longer usable. + Send(*Res) error + + // ServerStream is embedded to provide Context, SetHeader, SendHeader, and + // SetTrailer functionality. No other methods in the ServerStream should + // be called directly. + ServerStream +} + +// GenericClientStream implements the ServerStreamingClient, ClientStreamingClient, +// and BidiStreamingClient interfaces. It is used in generated code. +type GenericClientStream[Req any, Res any] struct { + ClientStream +} + +var _ ServerStreamingClient[string] = (*GenericClientStream[int, string])(nil) +var _ ClientStreamingClient[int, string] = (*GenericClientStream[int, string])(nil) +var _ BidiStreamingClient[int, string] = (*GenericClientStream[int, string])(nil) + +// Send pushes one message into the stream of requests to be consumed by the +// server. The type of message which can be sent is determined by the Req type +// parameter of the GenericClientStream receiver. +func (x *GenericClientStream[Req, Res]) Send(m *Req) error { + return x.ClientStream.SendMsg(m) +} + +// Recv reads one message from the stream of responses generated by the server. +// The type of the message returned is determined by the Res type parameter +// of the GenericClientStream receiver. +func (x *GenericClientStream[Req, Res]) Recv() (*Res, error) { + m := new(Res) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// CloseAndRecv closes the sending side of the stream, then receives the unary +// response from the server. The type of message which it returns is determined +// by the Res type parameter of the GenericClientStream receiver. +func (x *GenericClientStream[Req, Res]) CloseAndRecv() (*Res, error) { + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + m := new(Res) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +// GenericServerStream implements the ServerStreamingServer, ClientStreamingServer, +// and BidiStreamingServer interfaces. It is used in generated code. +type GenericServerStream[Req any, Res any] struct { + ServerStream +} + +var _ ServerStreamingServer[string] = (*GenericServerStream[int, string])(nil) +var _ ClientStreamingServer[int, string] = (*GenericServerStream[int, string])(nil) +var _ BidiStreamingServer[int, string] = (*GenericServerStream[int, string])(nil) + +// Send pushes one message into the stream of responses to be consumed by the +// client. The type of message which can be sent is determined by the Res +// type parameter of the serverStreamServer receiver. +func (x *GenericServerStream[Req, Res]) Send(m *Res) error { + return x.ServerStream.SendMsg(m) +} + +// SendAndClose pushes the unary response to the client. The type of message +// which can be sent is determined by the Res type parameter of the +// clientStreamServer receiver. +func (x *GenericServerStream[Req, Res]) SendAndClose(m *Res) error { + return x.ServerStream.SendMsg(m) +} + +// Recv reads one message from the stream of requests generated by the client. +// The type of the message returned is determined by the Req type parameter +// of the clientStreamServer receiver. +func (x *GenericServerStream[Req, Res]) Recv() (*Req, error) { + m := new(Req) + if err := x.ServerStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} diff --git a/vendor/google.golang.org/grpc/version.go b/vendor/google.golang.org/grpc/version.go index 2556f7583..a96b6a6bf 100644 --- a/vendor/google.golang.org/grpc/version.go +++ b/vendor/google.golang.org/grpc/version.go @@ -19,4 +19,4 @@ package grpc // Version is the current grpc version. -const Version = "1.63.2" +const Version = "1.67.1" diff --git a/vendor/google.golang.org/grpc/vet.sh b/vendor/google.golang.org/grpc/vet.sh deleted file mode 100644 index 7e6b92e49..000000000 --- a/vendor/google.golang.org/grpc/vet.sh +++ /dev/null @@ -1,195 +0,0 @@ -#!/bin/bash - -set -ex # Exit on error; debugging enabled. -set -o pipefail # Fail a pipe if any sub-command fails. - -# not makes sure the command passed to it does not exit with a return code of 0. -not() { - # This is required instead of the earlier (! $COMMAND) because subshells and - # pipefail don't work the same on Darwin as in Linux. - ! "$@" -} - -die() { - echo "$@" >&2 - exit 1 -} - -fail_on_output() { - tee /dev/stderr | not read -} - -# Check to make sure it's safe to modify the user's git repo. -git status --porcelain | fail_on_output - -# Undo any edits made by this script. -cleanup() { - git reset --hard HEAD -} -trap cleanup EXIT - -PATH="${HOME}/go/bin:${GOROOT}/bin:${PATH}" -go version - -if [[ "$1" = "-install" ]]; then - # Install the pinned versions as defined in module tools. - pushd ./test/tools - go install \ - golang.org/x/tools/cmd/goimports \ - honnef.co/go/tools/cmd/staticcheck \ - github.com/client9/misspell/cmd/misspell - popd - if [[ -z "${VET_SKIP_PROTO}" ]]; then - if [[ "${GITHUB_ACTIONS}" = "true" ]]; then - PROTOBUF_VERSION=25.2 # a.k.a. v4.22.0 in pb.go files. - PROTOC_FILENAME=protoc-${PROTOBUF_VERSION}-linux-x86_64.zip - pushd /home/runner/go - wget https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/${PROTOC_FILENAME} - unzip ${PROTOC_FILENAME} - bin/protoc --version - popd - elif not which protoc > /dev/null; then - die "Please install protoc into your path" - fi - fi - exit 0 -elif [[ "$#" -ne 0 ]]; then - die "Unknown argument(s): $*" -fi - -# - Check that generated proto files are up to date. -if [[ -z "${VET_SKIP_PROTO}" ]]; then - make proto && git status --porcelain 2>&1 | fail_on_output || \ - (git status; git --no-pager diff; exit 1) -fi - -if [[ -n "${VET_ONLY_PROTO}" ]]; then - exit 0 -fi - -# - Ensure all source files contain a copyright message. -# (Done in two parts because Darwin "git grep" has broken support for compound -# exclusion matches.) -(grep -L "DO NOT EDIT" $(git grep -L "\(Copyright [0-9]\{4,\} gRPC authors\)" -- '*.go') || true) | fail_on_output - -# - Make sure all tests in grpc and grpc/test use leakcheck via Teardown. -not grep 'func Test[^(]' *_test.go -not grep 'func Test[^(]' test/*.go - -# - Check for typos in test function names -git grep 'func (s) ' -- "*_test.go" | not grep -v 'func (s) Test' -git grep 'func [A-Z]' -- "*_test.go" | not grep -v 'func Test\|Benchmark\|Example' - -# - Do not import x/net/context. -not git grep -l 'x/net/context' -- "*.go" - -# - Do not use time.After except in tests. It has the potential to leak the -# timer since there is no way to stop it early. -git grep -l 'time.After(' -- "*.go" | not grep -v '_test.go\|test_utils\|testutils' - -# - Do not import math/rand for real library code. Use internal/grpcrand for -# thread safety. -git grep -l '"math/rand"' -- "*.go" 2>&1 | not grep -v '^examples\|^interop/stress\|grpcrand\|^benchmark\|wrr_test' - -# - Do not use "interface{}"; use "any" instead. -git grep -l 'interface{}' -- "*.go" 2>&1 | not grep -v '\.pb\.go\|protoc-gen-go-grpc\|grpc_testing_not_regenerate' - -# - Do not call grpclog directly. Use grpclog.Component instead. -git grep -l -e 'grpclog.I' --or -e 'grpclog.W' --or -e 'grpclog.E' --or -e 'grpclog.F' --or -e 'grpclog.V' -- "*.go" | not grep -v '^grpclog/component.go\|^internal/grpctest/tlogger_test.go' - -# - Ensure all ptypes proto packages are renamed when importing. -not git grep "\(import \|^\s*\)\"github.com/golang/protobuf/ptypes/" -- "*.go" - -# - Ensure all usages of grpc_testing package are renamed when importing. -not git grep "\(import \|^\s*\)\"google.golang.org/grpc/interop/grpc_testing" -- "*.go" - -# - Ensure all xds proto imports are renamed to *pb or *grpc. -git grep '"github.com/envoyproxy/go-control-plane/envoy' -- '*.go' ':(exclude)*.pb.go' | not grep -v 'pb "\|grpc "' - -misspell -error . - -# - gofmt, goimports, go vet, go mod tidy. -# Perform these checks on each module inside gRPC. -for MOD_FILE in $(find . -name 'go.mod'); do - MOD_DIR=$(dirname ${MOD_FILE}) - pushd ${MOD_DIR} - go vet -all ./... | fail_on_output - gofmt -s -d -l . 2>&1 | fail_on_output - goimports -l . 2>&1 | not grep -vE "\.pb\.go" - - go mod tidy -compat=1.19 - git status --porcelain 2>&1 | fail_on_output || \ - (git status; git --no-pager diff; exit 1) - popd -done - -# - Collection of static analysis checks -SC_OUT="$(mktemp)" -staticcheck -go 1.19 -checks 'all' ./... > "${SC_OUT}" || true - -# Error for anything other than checks that need exclusions. -grep -v "(ST1000)" "${SC_OUT}" | grep -v "(SA1019)" | grep -v "(ST1003)" | not grep -v "(ST1019)\|\(other import of\)" - -# Exclude underscore checks for generated code. -grep "(ST1003)" "${SC_OUT}" | not grep -v '\(.pb.go:\)\|\(code_string_test.go:\)\|\(grpc_testing_not_regenerate\)' - -# Error for duplicate imports not including grpc protos. -grep "(ST1019)\|\(other import of\)" "${SC_OUT}" | not grep -Fv 'XXXXX PleaseIgnoreUnused -channelz/grpc_channelz_v1" -go-control-plane/envoy -grpclb/grpc_lb_v1" -health/grpc_health_v1" -interop/grpc_testing" -orca/v3" -proto/grpc_gcp" -proto/grpc_lookup_v1" -reflection/grpc_reflection_v1" -reflection/grpc_reflection_v1alpha" -XXXXX PleaseIgnoreUnused' - -# Error for any package comments not in generated code. -grep "(ST1000)" "${SC_OUT}" | not grep -v "\.pb\.go:" - -# Only ignore the following deprecated types/fields/functions and exclude -# generated code. -grep "(SA1019)" "${SC_OUT}" | not grep -Fv 'XXXXX PleaseIgnoreUnused -XXXXX Protobuf related deprecation errors: -"github.com/golang/protobuf -.pb.go: -grpc_testing_not_regenerate -: ptypes. -proto.RegisterType -XXXXX gRPC internal usage deprecation errors: -"google.golang.org/grpc -: grpc. -: v1alpha. -: v1alphareflectionpb. -BalancerAttributes is deprecated: -CredsBundle is deprecated: -Metadata is deprecated: use Attributes instead. -NewSubConn is deprecated: -OverrideServerName is deprecated: -RemoveSubConn is deprecated: -SecurityVersion is deprecated: -Target is deprecated: Use the Target field in the BuildOptions instead. -UpdateAddresses is deprecated: -UpdateSubConnState is deprecated: -balancer.ErrTransientFailure is deprecated: -grpc/reflection/v1alpha/reflection.proto -SwitchTo is deprecated: -XXXXX xDS deprecated fields we support -.ExactMatch -.PrefixMatch -.SafeRegexMatch -.SuffixMatch -GetContainsMatch -GetExactMatch -GetMatchSubjectAltNames -GetPrefixMatch -GetSafeRegexMatch -GetSuffixMatch -GetTlsCertificateCertificateProviderInstance -GetValidationContextCertificateProviderInstance -XXXXX PleaseIgnoreUnused' - -echo SUCCESS diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go index bb2966e3b..8f9e592f8 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/decode.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/decode.go @@ -351,7 +351,7 @@ func (d decoder) unmarshalScalar(fd protoreflect.FieldDescriptor) (protoreflect. panic(fmt.Sprintf("unmarshalScalar: invalid scalar kind %v", kind)) } - return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString()) + return protoreflect.Value{}, d.newError(tok.Pos(), "invalid value for %v field %v: %v", kind, fd.JSONName(), tok.RawString()) } func unmarshalInt(tok json.Token, bitSize int) (protoreflect.Value, bool) { diff --git a/vendor/google.golang.org/protobuf/encoding/protojson/encode.go b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go index 29846df22..0e72d8537 100644 --- a/vendor/google.golang.org/protobuf/encoding/protojson/encode.go +++ b/vendor/google.golang.org/protobuf/encoding/protojson/encode.go @@ -216,9 +216,7 @@ func (m unpopulatedFieldRanger) Range(f func(protoreflect.FieldDescriptor, proto } v := m.Get(fd) - isProto2Scalar := fd.Syntax() == protoreflect.Proto2 && fd.Default().IsValid() - isSingularMessage := fd.Cardinality() != protoreflect.Repeated && fd.Message() != nil - if isProto2Scalar || isSingularMessage { + if fd.HasPresence() { if m.skipNull { continue } diff --git a/vendor/google.golang.org/protobuf/internal/descopts/options.go b/vendor/google.golang.org/protobuf/internal/descopts/options.go index 8401be8c8..024ffebd3 100644 --- a/vendor/google.golang.org/protobuf/internal/descopts/options.go +++ b/vendor/google.golang.org/protobuf/internal/descopts/options.go @@ -9,7 +9,7 @@ // dependency on the descriptor proto package). package descopts -import pref "google.golang.org/protobuf/reflect/protoreflect" +import "google.golang.org/protobuf/reflect/protoreflect" // These variables are set by the init function in descriptor.pb.go via logic // in internal/filetype. In other words, so long as the descriptor proto package @@ -17,13 +17,13 @@ import pref "google.golang.org/protobuf/reflect/protoreflect" // // Each variable is populated with a nil pointer to the options struct. var ( - File pref.ProtoMessage - Enum pref.ProtoMessage - EnumValue pref.ProtoMessage - Message pref.ProtoMessage - Field pref.ProtoMessage - Oneof pref.ProtoMessage - ExtensionRange pref.ProtoMessage - Service pref.ProtoMessage - Method pref.ProtoMessage + File protoreflect.ProtoMessage + Enum protoreflect.ProtoMessage + EnumValue protoreflect.ProtoMessage + Message protoreflect.ProtoMessage + Field protoreflect.ProtoMessage + Oneof protoreflect.ProtoMessage + ExtensionRange protoreflect.ProtoMessage + Service protoreflect.ProtoMessage + Method protoreflect.ProtoMessage ) diff --git a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go index 029a6a12d..08dad7692 100644 --- a/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go +++ b/vendor/google.golang.org/protobuf/internal/editionssupport/editions.go @@ -5,7 +5,7 @@ // Package editionssupport defines constants for editions that are supported. package editionssupport -import descriptorpb "google.golang.org/protobuf/types/descriptorpb" +import "google.golang.org/protobuf/types/descriptorpb" const ( Minimum = descriptorpb.Edition_EDITION_PROTO2 diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go index df53ff40b..fa790e0ff 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -258,6 +258,7 @@ type ( StringName stringName IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto IsWeak bool // promoted from google.protobuf.FieldOptions + IsLazy bool // promoted from google.protobuf.FieldOptions Default defaultValue ContainingOneof protoreflect.OneofDescriptor // must be consistent with Message.Oneofs.Fields Enum protoreflect.EnumDescriptor @@ -351,6 +352,7 @@ func (fd *Field) IsPacked() bool { } func (fd *Field) IsExtension() bool { return false } func (fd *Field) IsWeak() bool { return fd.L1.IsWeak } +func (fd *Field) IsLazy() bool { return fd.L1.IsLazy } func (fd *Field) IsList() bool { return fd.Cardinality() == protoreflect.Repeated && !fd.IsMap() } func (fd *Field) IsMap() bool { return fd.Message() != nil && fd.Message().IsMapEntry() } func (fd *Field) MapKey() protoreflect.FieldDescriptor { @@ -425,6 +427,7 @@ type ( Extendee protoreflect.MessageDescriptor Cardinality protoreflect.Cardinality Kind protoreflect.Kind + IsLazy bool EditionFeatures EditionFeatures } ExtensionL2 struct { @@ -465,6 +468,7 @@ func (xd *Extension) IsPacked() bool { } func (xd *Extension) IsExtension() bool { return true } func (xd *Extension) IsWeak() bool { return false } +func (xd *Extension) IsLazy() bool { return xd.L1.IsLazy } func (xd *Extension) IsList() bool { return xd.Cardinality() == protoreflect.Repeated } func (xd *Extension) IsMap() bool { return false } func (xd *Extension) MapKey() protoreflect.FieldDescriptor { return nil } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go index 8a57d60b0..d2f549497 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go @@ -495,6 +495,8 @@ func (xd *Extension) unmarshalOptions(b []byte) { switch num { case genid.FieldOptions_Packed_field_number: xd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) + case genid.FieldOptions_Lazy_field_number: + xd.L1.IsLazy = protowire.DecodeBool(v) } case protowire.BytesType: v, m := protowire.ConsumeBytes(b) diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go index e56c91a8d..67a51b327 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go @@ -504,6 +504,8 @@ func (fd *Field) unmarshalOptions(b []byte) { fd.L1.EditionFeatures.IsPacked = protowire.DecodeBool(v) case genid.FieldOptions_Weak_field_number: fd.L1.IsWeak = protowire.DecodeBool(v) + case genid.FieldOptions_Lazy_field_number: + fd.L1.IsLazy = protowire.DecodeBool(v) case FieldOptions_EnforceUTF8: fd.L1.EditionFeatures.IsUTF8Validated = protowire.DecodeBool(v) } diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go index 11f5f356b..fd4d0c83d 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/editions.go @@ -68,7 +68,7 @@ func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures { v, m := protowire.ConsumeBytes(b) b = b[m:] switch num { - case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number: + case genid.FeatureSet_Go_ext_number: parent = unmarshalGoFeature(v, parent) } } diff --git a/vendor/google.golang.org/protobuf/internal/genid/doc.go b/vendor/google.golang.org/protobuf/internal/genid/doc.go index 45ccd0121..d9b9d916a 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/doc.go +++ b/vendor/google.golang.org/protobuf/internal/genid/doc.go @@ -6,6 +6,6 @@ // and the well-known types. package genid -import protoreflect "google.golang.org/protobuf/reflect/protoreflect" +import "google.golang.org/protobuf/reflect/protoreflect" const GoogleProtobuf_package protoreflect.FullName = "google.protobuf" diff --git a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go index 9a652a2b4..7f67cbb6e 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go +++ b/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go @@ -12,20 +12,25 @@ import ( const File_google_protobuf_go_features_proto = "google/protobuf/go_features.proto" -// Names for google.protobuf.GoFeatures. +// Names for pb.GoFeatures. const ( GoFeatures_message_name protoreflect.Name = "GoFeatures" - GoFeatures_message_fullname protoreflect.FullName = "google.protobuf.GoFeatures" + GoFeatures_message_fullname protoreflect.FullName = "pb.GoFeatures" ) -// Field names for google.protobuf.GoFeatures. +// Field names for pb.GoFeatures. const ( GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum" - GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "google.protobuf.GoFeatures.legacy_unmarshal_json_enum" + GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "pb.GoFeatures.legacy_unmarshal_json_enum" ) -// Field numbers for google.protobuf.GoFeatures. +// Field numbers for pb.GoFeatures. const ( GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1 ) + +// Extension numbers +const ( + FeatureSet_Go_ext_number protoreflect.FieldNumber = 1002 +) diff --git a/vendor/google.golang.org/protobuf/internal/genid/map_entry.go b/vendor/google.golang.org/protobuf/internal/genid/map_entry.go index 8f9ea02ff..bef5a25fb 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +++ b/vendor/google.golang.org/protobuf/internal/genid/map_entry.go @@ -4,7 +4,7 @@ package genid -import protoreflect "google.golang.org/protobuf/reflect/protoreflect" +import "google.golang.org/protobuf/reflect/protoreflect" // Generic field names and numbers for synthetic map entry messages. const ( diff --git a/vendor/google.golang.org/protobuf/internal/genid/wrappers.go b/vendor/google.golang.org/protobuf/internal/genid/wrappers.go index 429384b85..9404270de 100644 --- a/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +++ b/vendor/google.golang.org/protobuf/internal/genid/wrappers.go @@ -4,7 +4,7 @@ package genid -import protoreflect "google.golang.org/protobuf/reflect/protoreflect" +import "google.golang.org/protobuf/reflect/protoreflect" // Generic field name and number for messages in wrappers.proto. const ( diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go index 4bb0a7a20..0d5b546e0 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go @@ -67,7 +67,6 @@ type lazyExtensionValue struct { xi *extensionFieldInfo value protoreflect.Value b []byte - fn func() protoreflect.Value } type ExtensionField struct { @@ -158,10 +157,9 @@ func (f *ExtensionField) lazyInit() { } f.lazy.value = val } else { - f.lazy.value = f.lazy.fn() + panic("No support for lazy fns for ExtensionField") } f.lazy.xi = nil - f.lazy.fn = nil f.lazy.b = nil atomic.StoreUint32(&f.lazy.atomicOnce, 1) } @@ -174,13 +172,6 @@ func (f *ExtensionField) Set(t protoreflect.ExtensionType, v protoreflect.Value) f.lazy = nil } -// SetLazy sets the type and a value that is to be lazily evaluated upon first use. -// This must not be called concurrently. -func (f *ExtensionField) SetLazy(t protoreflect.ExtensionType, fn func() protoreflect.Value) { - f.typ = t - f.lazy = &lazyExtensionValue{fn: fn} -} - // Value returns the value of the extension field. // This may be called concurrently. func (f *ExtensionField) Value() protoreflect.Value { diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go index 78ee47e44..7c1f66c8c 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_field.go @@ -65,6 +65,9 @@ func (mi *MessageInfo) initOneofFieldCoders(od protoreflect.OneofDescriptor, si if err != nil { return out, err } + if cf.funcs.isInit == nil { + out.initialized = true + } vi.Set(vw) return out, nil } diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go index 6b2fdbb73..78be9df34 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go @@ -189,6 +189,9 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { if mi.methods.Merge == nil { mi.methods.Merge = mi.merge } + if mi.methods.Equal == nil { + mi.methods.Equal = equal + } } // getUnknownBytes returns a *[]byte for the unknown fields. diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go deleted file mode 100644 index 145c577bd..000000000 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +++ /dev/null @@ -1,210 +0,0 @@ -// Copyright 2019 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build purego || appengine -// +build purego appengine - -package impl - -import ( - "reflect" - - "google.golang.org/protobuf/encoding/protowire" -) - -func sizeEnum(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) { - v := p.v.Elem().Int() - return f.tagsize + protowire.SizeVarint(uint64(v)) -} - -func appendEnum(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - v := p.v.Elem().Int() - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(v)) - return b, nil -} - -func consumeEnum(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return out, errDecode - } - p.v.Elem().SetInt(int64(v)) - out.n = n - return out, nil -} - -func mergeEnum(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - dst.v.Elem().Set(src.v.Elem()) -} - -var coderEnum = pointerCoderFuncs{ - size: sizeEnum, - marshal: appendEnum, - unmarshal: consumeEnum, - merge: mergeEnum, -} - -func sizeEnumNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - if p.v.Elem().Int() == 0 { - return 0 - } - return sizeEnum(p, f, opts) -} - -func appendEnumNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - if p.v.Elem().Int() == 0 { - return b, nil - } - return appendEnum(b, p, f, opts) -} - -func mergeEnumNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - if src.v.Elem().Int() != 0 { - dst.v.Elem().Set(src.v.Elem()) - } -} - -var coderEnumNoZero = pointerCoderFuncs{ - size: sizeEnumNoZero, - marshal: appendEnumNoZero, - unmarshal: consumeEnum, - merge: mergeEnumNoZero, -} - -func sizeEnumPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - return sizeEnum(pointer{p.v.Elem()}, f, opts) -} - -func appendEnumPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - return appendEnum(b, pointer{p.v.Elem()}, f, opts) -} - -func consumeEnumPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - if wtyp != protowire.VarintType { - return out, errUnknown - } - if p.v.Elem().IsNil() { - p.v.Elem().Set(reflect.New(p.v.Elem().Type().Elem())) - } - return consumeEnum(b, pointer{p.v.Elem()}, wtyp, f, opts) -} - -func mergeEnumPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - if !src.v.Elem().IsNil() { - v := reflect.New(dst.v.Type().Elem().Elem()) - v.Elem().Set(src.v.Elem().Elem()) - dst.v.Elem().Set(v) - } -} - -var coderEnumPtr = pointerCoderFuncs{ - size: sizeEnumPtr, - marshal: appendEnumPtr, - unmarshal: consumeEnumPtr, - merge: mergeEnumPtr, -} - -func sizeEnumSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := p.v.Elem() - for i, llen := 0, s.Len(); i < llen; i++ { - size += protowire.SizeVarint(uint64(s.Index(i).Int())) + f.tagsize - } - return size -} - -func appendEnumSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := p.v.Elem() - for i, llen := 0, s.Len(); i < llen; i++ { - b = protowire.AppendVarint(b, f.wiretag) - b = protowire.AppendVarint(b, uint64(s.Index(i).Int())) - } - return b, nil -} - -func consumeEnumSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) { - s := p.v.Elem() - if wtyp == protowire.BytesType { - b, n := protowire.ConsumeBytes(b) - if n < 0 { - return out, errDecode - } - for len(b) > 0 { - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return out, errDecode - } - rv := reflect.New(s.Type().Elem()).Elem() - rv.SetInt(int64(v)) - s.Set(reflect.Append(s, rv)) - b = b[n:] - } - out.n = n - return out, nil - } - if wtyp != protowire.VarintType { - return out, errUnknown - } - v, n := protowire.ConsumeVarint(b) - if n < 0 { - return out, errDecode - } - rv := reflect.New(s.Type().Elem()).Elem() - rv.SetInt(int64(v)) - s.Set(reflect.Append(s, rv)) - out.n = n - return out, nil -} - -func mergeEnumSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) { - dst.v.Elem().Set(reflect.AppendSlice(dst.v.Elem(), src.v.Elem())) -} - -var coderEnumSlice = pointerCoderFuncs{ - size: sizeEnumSlice, - marshal: appendEnumSlice, - unmarshal: consumeEnumSlice, - merge: mergeEnumSlice, -} - -func sizeEnumPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) { - s := p.v.Elem() - llen := s.Len() - if llen == 0 { - return 0 - } - n := 0 - for i := 0; i < llen; i++ { - n += protowire.SizeVarint(uint64(s.Index(i).Int())) - } - return f.tagsize + protowire.SizeBytes(n) -} - -func appendEnumPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) { - s := p.v.Elem() - llen := s.Len() - if llen == 0 { - return b, nil - } - b = protowire.AppendVarint(b, f.wiretag) - n := 0 - for i := 0; i < llen; i++ { - n += protowire.SizeVarint(uint64(s.Index(i).Int())) - } - b = protowire.AppendVarint(b, uint64(n)) - for i := 0; i < llen; i++ { - b = protowire.AppendVarint(b, uint64(s.Index(i).Int())) - } - return b, nil -} - -var coderEnumPackedSlice = pointerCoderFuncs{ - size: sizeEnumPackedSlice, - marshal: appendEnumPackedSlice, - unmarshal: consumeEnumSlice, - merge: mergeEnumSlice, -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go index 757642e23..077712c2c 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go @@ -2,9 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine -// +build !purego,!appengine - package impl // When using unsafe pointers, we can just treat enum values as int32s. diff --git a/vendor/google.golang.org/protobuf/internal/impl/convert.go b/vendor/google.golang.org/protobuf/internal/impl/convert.go index e06ece55a..f72ddd882 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/convert.go +++ b/vendor/google.golang.org/protobuf/internal/impl/convert.go @@ -322,7 +322,7 @@ func (c *stringConverter) PBValueOf(v reflect.Value) protoreflect.Value { return protoreflect.ValueOfString(v.Convert(stringType).String()) } func (c *stringConverter) GoValueOf(v protoreflect.Value) reflect.Value { - // pref.Value.String never panics, so we go through an interface + // protoreflect.Value.String never panics, so we go through an interface // conversion here to check the type. s := v.Interface().(string) if c.goType.Kind() == reflect.Slice && s == "" { diff --git a/vendor/google.golang.org/protobuf/internal/impl/encode.go b/vendor/google.golang.org/protobuf/internal/impl/encode.go index febd21224..6254f5de4 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/encode.go +++ b/vendor/google.golang.org/protobuf/internal/impl/encode.go @@ -10,7 +10,7 @@ import ( "sync/atomic" "google.golang.org/protobuf/internal/flags" - proto "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/proto" piface "google.golang.org/protobuf/runtime/protoiface" ) diff --git a/vendor/google.golang.org/protobuf/internal/impl/equal.go b/vendor/google.golang.org/protobuf/internal/impl/equal.go new file mode 100644 index 000000000..9f6c32a7d --- /dev/null +++ b/vendor/google.golang.org/protobuf/internal/impl/equal.go @@ -0,0 +1,224 @@ +// Copyright 2024 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package impl + +import ( + "bytes" + + "google.golang.org/protobuf/encoding/protowire" + "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" +) + +func equal(in protoiface.EqualInput) protoiface.EqualOutput { + return protoiface.EqualOutput{Equal: equalMessage(in.MessageA, in.MessageB)} +} + +// equalMessage is a fast-path variant of protoreflect.equalMessage. +// It takes advantage of the internal messageState type to avoid +// unnecessary allocations, type assertions. +func equalMessage(mx, my protoreflect.Message) bool { + if mx == nil || my == nil { + return mx == my + } + if mx.Descriptor() != my.Descriptor() { + return false + } + + msx, ok := mx.(*messageState) + if !ok { + return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my)) + } + msy, ok := my.(*messageState) + if !ok { + return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my)) + } + + mi := msx.messageInfo() + miy := msy.messageInfo() + if mi != miy { + return protoreflect.ValueOfMessage(mx).Equal(protoreflect.ValueOfMessage(my)) + } + mi.init() + // Compares regular fields + // Modified Message.Range code that compares two messages of the same type + // while going over the fields. + for _, ri := range mi.rangeInfos { + var fd protoreflect.FieldDescriptor + var vx, vy protoreflect.Value + + switch ri := ri.(type) { + case *fieldInfo: + hx := ri.has(msx.pointer()) + hy := ri.has(msy.pointer()) + if hx != hy { + return false + } + if !hx { + continue + } + fd = ri.fieldDesc + vx = ri.get(msx.pointer()) + vy = ri.get(msy.pointer()) + case *oneofInfo: + fnx := ri.which(msx.pointer()) + fny := ri.which(msy.pointer()) + if fnx != fny { + return false + } + if fnx <= 0 { + continue + } + fi := mi.fields[fnx] + fd = fi.fieldDesc + vx = fi.get(msx.pointer()) + vy = fi.get(msy.pointer()) + } + + if !equalValue(fd, vx, vy) { + return false + } + } + + // Compare extensions. + // This is more complicated because mx or my could have empty/nil extension maps, + // however some populated extension map values are equal to nil extension maps. + emx := mi.extensionMap(msx.pointer()) + emy := mi.extensionMap(msy.pointer()) + if emx != nil { + for k, x := range *emx { + xd := x.Type().TypeDescriptor() + xv := x.Value() + var y ExtensionField + ok := false + if emy != nil { + y, ok = (*emy)[k] + } + // We need to treat empty lists as equal to nil values + if emy == nil || !ok { + if xd.IsList() && xv.List().Len() == 0 { + continue + } + return false + } + + if !equalValue(xd, xv, y.Value()) { + return false + } + } + } + if emy != nil { + // emy may have extensions emx does not have, need to check them as well + for k, y := range *emy { + if emx != nil { + // emx has the field, so we already checked it + if _, ok := (*emx)[k]; ok { + continue + } + } + // Empty lists are equal to nil + if y.Type().TypeDescriptor().IsList() && y.Value().List().Len() == 0 { + continue + } + + // Cant be equal if the extension is populated + return false + } + } + + return equalUnknown(mx.GetUnknown(), my.GetUnknown()) +} + +func equalValue(fd protoreflect.FieldDescriptor, vx, vy protoreflect.Value) bool { + // slow path + if fd.Kind() != protoreflect.MessageKind { + return vx.Equal(vy) + } + + // fast path special cases + if fd.IsMap() { + if fd.MapValue().Kind() == protoreflect.MessageKind { + return equalMessageMap(vx.Map(), vy.Map()) + } + return vx.Equal(vy) + } + + if fd.IsList() { + return equalMessageList(vx.List(), vy.List()) + } + + return equalMessage(vx.Message(), vy.Message()) +} + +// Mostly copied from protoreflect.equalMap. +// This variant only works for messages as map types. +// All other map types should be handled via Value.Equal. +func equalMessageMap(mx, my protoreflect.Map) bool { + if mx.Len() != my.Len() { + return false + } + equal := true + mx.Range(func(k protoreflect.MapKey, vx protoreflect.Value) bool { + if !my.Has(k) { + equal = false + return false + } + vy := my.Get(k) + equal = equalMessage(vx.Message(), vy.Message()) + return equal + }) + return equal +} + +// Mostly copied from protoreflect.equalList. +// The only change is the usage of equalImpl instead of protoreflect.equalValue. +func equalMessageList(lx, ly protoreflect.List) bool { + if lx.Len() != ly.Len() { + return false + } + for i := 0; i < lx.Len(); i++ { + // We only operate on messages here since equalImpl will not call us in any other case. + if !equalMessage(lx.Get(i).Message(), ly.Get(i).Message()) { + return false + } + } + return true +} + +// equalUnknown compares unknown fields by direct comparison on the raw bytes +// of each individual field number. +// Copied from protoreflect.equalUnknown. +func equalUnknown(x, y protoreflect.RawFields) bool { + if len(x) != len(y) { + return false + } + if bytes.Equal([]byte(x), []byte(y)) { + return true + } + + mx := make(map[protoreflect.FieldNumber]protoreflect.RawFields) + my := make(map[protoreflect.FieldNumber]protoreflect.RawFields) + for len(x) > 0 { + fnum, _, n := protowire.ConsumeField(x) + mx[fnum] = append(mx[fnum], x[:n]...) + x = x[n:] + } + for len(y) > 0 { + fnum, _, n := protowire.ConsumeField(y) + my[fnum] = append(my[fnum], y[:n]...) + y = y[n:] + } + if len(mx) != len(my) { + return false + } + + for k, v1 := range mx { + if v2, ok := my[k]; !ok || !bytes.Equal([]byte(v1), []byte(v2)) { + return false + } + } + + return true +} diff --git a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go index 6e8677ee6..b6849d669 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +++ b/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go @@ -160,6 +160,7 @@ func (x placeholderExtension) HasPresence() bool func (x placeholderExtension) HasOptionalKeyword() bool { return false } func (x placeholderExtension) IsExtension() bool { return true } func (x placeholderExtension) IsWeak() bool { return false } +func (x placeholderExtension) IsLazy() bool { return false } func (x placeholderExtension) IsPacked() bool { return false } func (x placeholderExtension) IsList() bool { return false } func (x placeholderExtension) IsMap() bool { return false } diff --git a/vendor/google.golang.org/protobuf/internal/impl/message.go b/vendor/google.golang.org/protobuf/internal/impl/message.go index 019399d45..741b5ed29 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message.go @@ -30,8 +30,8 @@ type MessageInfo struct { // Desc is the underlying message descriptor type and must be populated. Desc protoreflect.MessageDescriptor - // Exporter must be provided in a purego environment in order to provide - // access to unexported fields. + // Deprecated: Exporter will be removed the next time we bump + // protoimpl.GenVersion. See https://github.com/golang/protobuf/issues/1640 Exporter exporter // OneofWrappers is list of pointers to oneof wrapper struct types. diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go deleted file mode 100644 index da685e8a2..000000000 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build purego || appengine -// +build purego appengine - -package impl - -import ( - "fmt" - "reflect" - "sync" -) - -const UnsafeEnabled = false - -// Pointer is an opaque pointer type. -type Pointer any - -// offset represents the offset to a struct field, accessible from a pointer. -// The offset is the field index into a struct. -type offset struct { - index int - export exporter -} - -// offsetOf returns a field offset for the struct field. -func offsetOf(f reflect.StructField, x exporter) offset { - if len(f.Index) != 1 { - panic("embedded structs are not supported") - } - if f.PkgPath == "" { - return offset{index: f.Index[0]} // field is already exported - } - if x == nil { - panic("exporter must be provided for unexported field") - } - return offset{index: f.Index[0], export: x} -} - -// IsValid reports whether the offset is valid. -func (f offset) IsValid() bool { return f.index >= 0 } - -// invalidOffset is an invalid field offset. -var invalidOffset = offset{index: -1} - -// zeroOffset is a noop when calling pointer.Apply. -var zeroOffset = offset{index: 0} - -// pointer is an abstract representation of a pointer to a struct or field. -type pointer struct{ v reflect.Value } - -// pointerOf returns p as a pointer. -func pointerOf(p Pointer) pointer { - return pointerOfIface(p) -} - -// pointerOfValue returns v as a pointer. -func pointerOfValue(v reflect.Value) pointer { - return pointer{v: v} -} - -// pointerOfIface returns the pointer portion of an interface. -func pointerOfIface(v any) pointer { - return pointer{v: reflect.ValueOf(v)} -} - -// IsNil reports whether the pointer is nil. -func (p pointer) IsNil() bool { - return p.v.IsNil() -} - -// Apply adds an offset to the pointer to derive a new pointer -// to a specified field. The current pointer must be pointing at a struct. -func (p pointer) Apply(f offset) pointer { - if f.export != nil { - if v := reflect.ValueOf(f.export(p.v.Interface(), f.index)); v.IsValid() { - return pointer{v: v} - } - } - return pointer{v: p.v.Elem().Field(f.index).Addr()} -} - -// AsValueOf treats p as a pointer to an object of type t and returns the value. -// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t)) -func (p pointer) AsValueOf(t reflect.Type) reflect.Value { - if got := p.v.Type().Elem(); got != t { - panic(fmt.Sprintf("invalid type: got %v, want %v", got, t)) - } - return p.v -} - -// AsIfaceOf treats p as a pointer to an object of type t and returns the value. -// It is equivalent to p.AsValueOf(t).Interface() -func (p pointer) AsIfaceOf(t reflect.Type) any { - return p.AsValueOf(t).Interface() -} - -func (p pointer) Bool() *bool { return p.v.Interface().(*bool) } -func (p pointer) BoolPtr() **bool { return p.v.Interface().(**bool) } -func (p pointer) BoolSlice() *[]bool { return p.v.Interface().(*[]bool) } -func (p pointer) Int32() *int32 { return p.v.Interface().(*int32) } -func (p pointer) Int32Ptr() **int32 { return p.v.Interface().(**int32) } -func (p pointer) Int32Slice() *[]int32 { return p.v.Interface().(*[]int32) } -func (p pointer) Int64() *int64 { return p.v.Interface().(*int64) } -func (p pointer) Int64Ptr() **int64 { return p.v.Interface().(**int64) } -func (p pointer) Int64Slice() *[]int64 { return p.v.Interface().(*[]int64) } -func (p pointer) Uint32() *uint32 { return p.v.Interface().(*uint32) } -func (p pointer) Uint32Ptr() **uint32 { return p.v.Interface().(**uint32) } -func (p pointer) Uint32Slice() *[]uint32 { return p.v.Interface().(*[]uint32) } -func (p pointer) Uint64() *uint64 { return p.v.Interface().(*uint64) } -func (p pointer) Uint64Ptr() **uint64 { return p.v.Interface().(**uint64) } -func (p pointer) Uint64Slice() *[]uint64 { return p.v.Interface().(*[]uint64) } -func (p pointer) Float32() *float32 { return p.v.Interface().(*float32) } -func (p pointer) Float32Ptr() **float32 { return p.v.Interface().(**float32) } -func (p pointer) Float32Slice() *[]float32 { return p.v.Interface().(*[]float32) } -func (p pointer) Float64() *float64 { return p.v.Interface().(*float64) } -func (p pointer) Float64Ptr() **float64 { return p.v.Interface().(**float64) } -func (p pointer) Float64Slice() *[]float64 { return p.v.Interface().(*[]float64) } -func (p pointer) String() *string { return p.v.Interface().(*string) } -func (p pointer) StringPtr() **string { return p.v.Interface().(**string) } -func (p pointer) StringSlice() *[]string { return p.v.Interface().(*[]string) } -func (p pointer) Bytes() *[]byte { return p.v.Interface().(*[]byte) } -func (p pointer) BytesPtr() **[]byte { return p.v.Interface().(**[]byte) } -func (p pointer) BytesSlice() *[][]byte { return p.v.Interface().(*[][]byte) } -func (p pointer) WeakFields() *weakFields { return (*weakFields)(p.v.Interface().(*WeakFields)) } -func (p pointer) Extensions() *map[int32]ExtensionField { - return p.v.Interface().(*map[int32]ExtensionField) -} - -func (p pointer) Elem() pointer { - return pointer{v: p.v.Elem()} -} - -// PointerSlice copies []*T from p as a new []pointer. -// This behavior differs from the implementation in pointer_unsafe.go. -func (p pointer) PointerSlice() []pointer { - // TODO: reconsider this - if p.v.IsNil() { - return nil - } - n := p.v.Elem().Len() - s := make([]pointer, n) - for i := 0; i < n; i++ { - s[i] = pointer{v: p.v.Elem().Index(i)} - } - return s -} - -// AppendPointerSlice appends v to p, which must be a []*T. -func (p pointer) AppendPointerSlice(v pointer) { - sp := p.v.Elem() - sp.Set(reflect.Append(sp, v.v)) -} - -// SetPointer sets *p to v. -func (p pointer) SetPointer(v pointer) { - p.v.Elem().Set(v.v) -} - -func growSlice(p pointer, addCap int) { - // TODO: Once we only support Go 1.20 and newer, use reflect.Grow. - in := p.v.Elem() - out := reflect.MakeSlice(in.Type(), in.Len(), in.Len()+addCap) - reflect.Copy(out, in) - p.v.Elem().Set(out) -} - -func (p pointer) growBoolSlice(addCap int) { - growSlice(p, addCap) -} - -func (p pointer) growInt32Slice(addCap int) { - growSlice(p, addCap) -} - -func (p pointer) growUint32Slice(addCap int) { - growSlice(p, addCap) -} - -func (p pointer) growInt64Slice(addCap int) { - growSlice(p, addCap) -} - -func (p pointer) growUint64Slice(addCap int) { - growSlice(p, addCap) -} - -func (p pointer) growFloat64Slice(addCap int) { - growSlice(p, addCap) -} - -func (p pointer) growFloat32Slice(addCap int) { - growSlice(p, addCap) -} - -func (Export) MessageStateOf(p Pointer) *messageState { panic("not supported") } -func (ms *messageState) pointer() pointer { panic("not supported") } -func (ms *messageState) messageInfo() *MessageInfo { panic("not supported") } -func (ms *messageState) LoadMessageInfo() *MessageInfo { panic("not supported") } -func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { panic("not supported") } - -type atomicNilMessage struct { - once sync.Once - m messageReflectWrapper -} - -func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper { - m.once.Do(func() { - m.m.p = pointerOfIface(reflect.Zero(mi.GoReflectType).Interface()) - m.m.mi = mi - }) - return &m.m -} diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go index 5f20ca5d8..79e186667 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go @@ -2,9 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine -// +build !purego,!appengine - package impl import ( diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go b/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go deleted file mode 100644 index a1f6f3338..000000000 --- a/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build purego || appengine -// +build purego appengine - -package strs - -import pref "google.golang.org/protobuf/reflect/protoreflect" - -func UnsafeString(b []byte) string { - return string(b) -} - -func UnsafeBytes(s string) []byte { - return []byte(s) -} - -type Builder struct{} - -func (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName { - return prefix.Append(name) -} - -func (*Builder) MakeString(b []byte) string { - return string(b) -} diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go index a008acd09..832a7988f 100644 --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine && !go1.21 -// +build !purego,!appengine,!go1.21 +//go:build !go1.21 package strs diff --git a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go index 60166f2ba..1ffddf687 100644 --- a/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go +++ b/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go121.go @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine && go1.21 -// +build !purego,!appengine,go1.21 +//go:build go1.21 package strs diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go index dbbf1f686..fb8e15e8d 100644 --- a/vendor/google.golang.org/protobuf/internal/version/version.go +++ b/vendor/google.golang.org/protobuf/internal/version/version.go @@ -51,8 +51,8 @@ import ( // 10. Send out the CL for review and submit it. const ( Major = 1 - Minor = 34 - Patch = 2 + Minor = 35 + Patch = 1 PreRelease = "" ) diff --git a/vendor/google.golang.org/protobuf/proto/equal.go b/vendor/google.golang.org/protobuf/proto/equal.go index 1a0be1b03..c36d4a9cd 100644 --- a/vendor/google.golang.org/protobuf/proto/equal.go +++ b/vendor/google.golang.org/protobuf/proto/equal.go @@ -8,6 +8,7 @@ import ( "reflect" "google.golang.org/protobuf/reflect/protoreflect" + "google.golang.org/protobuf/runtime/protoiface" ) // Equal reports whether two messages are equal, @@ -51,6 +52,14 @@ func Equal(x, y Message) bool { if mx.IsValid() != my.IsValid() { return false } + + // Only one of the messages needs to implement the fast-path for it to work. + pmx := protoMethods(mx) + pmy := protoMethods(my) + if pmx != nil && pmy != nil && pmx.Equal != nil && pmy.Equal != nil { + return pmx.Equal(protoiface.EqualInput{MessageA: mx, MessageB: my}).Equal + } + vx := protoreflect.ValueOfMessage(mx) vy := protoreflect.ValueOfMessage(my) return vx.Equal(vy) diff --git a/vendor/google.golang.org/protobuf/proto/extension.go b/vendor/google.golang.org/protobuf/proto/extension.go index d248f2928..78445d116 100644 --- a/vendor/google.golang.org/protobuf/proto/extension.go +++ b/vendor/google.golang.org/protobuf/proto/extension.go @@ -39,6 +39,48 @@ func ClearExtension(m Message, xt protoreflect.ExtensionType) { // If the field is unpopulated, it returns the default value for // scalars and an immutable, empty value for lists or messages. // It panics if xt does not extend m. +// +// The type of the value is dependent on the field type of the extension. +// For extensions generated by protoc-gen-go, the Go type is as follows: +// +// ╔═══════════════════╤═════════════════════════╗ +// ║ Go type │ Protobuf kind ║ +// ╠═══════════════════╪═════════════════════════╣ +// ║ bool │ bool ║ +// ║ int32 │ int32, sint32, sfixed32 ║ +// ║ int64 │ int64, sint64, sfixed64 ║ +// ║ uint32 │ uint32, fixed32 ║ +// ║ uint64 │ uint64, fixed64 ║ +// ║ float32 │ float ║ +// ║ float64 │ double ║ +// ║ string │ string ║ +// ║ []byte │ bytes ║ +// ║ protoreflect.Enum │ enum ║ +// ║ proto.Message │ message, group ║ +// ╚═══════════════════╧═════════════════════════╝ +// +// The protoreflect.Enum and proto.Message types are the concrete Go type +// associated with the named enum or message. Repeated fields are represented +// using a Go slice of the base element type. +// +// If a generated extension descriptor variable is directly passed to +// GetExtension, then the call should be followed immediately by a +// type assertion to the expected output value. For example: +// +// mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage) +// +// This pattern enables static analysis tools to verify that the asserted type +// matches the Go type associated with the extension field and +// also enables a possible future migration to a type-safe extension API. +// +// Since singular messages are the most common extension type, the pattern of +// calling HasExtension followed by GetExtension may be simplified to: +// +// if mm := proto.GetExtension(m, foopb.E_MyExtension).(*foopb.MyMessage); mm != nil { +// ... // make use of mm +// } +// +// The mm variable is non-nil if and only if HasExtension reports true. func GetExtension(m Message, xt protoreflect.ExtensionType) any { // Treat nil message interface as an empty message; return the default. if m == nil { @@ -51,6 +93,35 @@ func GetExtension(m Message, xt protoreflect.ExtensionType) any { // SetExtension stores the value of an extension field. // It panics if m is invalid, xt does not extend m, or if type of v // is invalid for the specified extension field. +// +// The type of the value is dependent on the field type of the extension. +// For extensions generated by protoc-gen-go, the Go type is as follows: +// +// ╔═══════════════════╤═════════════════════════╗ +// ║ Go type │ Protobuf kind ║ +// ╠═══════════════════╪═════════════════════════╣ +// ║ bool │ bool ║ +// ║ int32 │ int32, sint32, sfixed32 ║ +// ║ int64 │ int64, sint64, sfixed64 ║ +// ║ uint32 │ uint32, fixed32 ║ +// ║ uint64 │ uint64, fixed64 ║ +// ║ float32 │ float ║ +// ║ float64 │ double ║ +// ║ string │ string ║ +// ║ []byte │ bytes ║ +// ║ protoreflect.Enum │ enum ║ +// ║ proto.Message │ message, group ║ +// ╚═══════════════════╧═════════════════════════╝ +// +// The protoreflect.Enum and proto.Message types are the concrete Go type +// associated with the named enum or message. Repeated fields are represented +// using a Go slice of the base element type. +// +// If a generated extension descriptor variable is directly passed to +// SetExtension (e.g., foopb.E_MyExtension), then the value should be a +// concrete type that matches the expected Go type for the extension descriptor +// so that static analysis tools can verify type correctness. +// This also enables a possible future migration to a type-safe extension API. func SetExtension(m Message, xt protoreflect.ExtensionType, v any) { xd := xt.TypeDescriptor() pv := xt.ValueOf(v) diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go index 856175542..ebcb4a8ab 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go @@ -150,6 +150,7 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc opts = proto.Clone(opts).(*descriptorpb.FieldOptions) f.L1.Options = func() protoreflect.ProtoMessage { return opts } f.L1.IsWeak = opts.GetWeak() + f.L1.IsLazy = opts.GetLazy() if opts.Packed != nil { f.L1.EditionFeatures.IsPacked = opts.GetPacked() } @@ -214,6 +215,9 @@ func (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescript if xd.JsonName != nil { x.L2.StringName.InitJSON(xd.GetJsonName()) } + if x.L1.Kind == protoreflect.MessageKind && x.L1.EditionFeatures.IsDelimitedEncoded { + x.L1.Kind = protoreflect.GroupKind + } } return xs, nil } diff --git a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go index 804830eda..002e0047a 100644 --- a/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go +++ b/vendor/google.golang.org/protobuf/reflect/protodesc/editions.go @@ -14,7 +14,7 @@ import ( "google.golang.org/protobuf/proto" "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/types/descriptorpb" - gofeaturespb "google.golang.org/protobuf/types/gofeaturespb" + "google.golang.org/protobuf/types/gofeaturespb" ) var defaults = &descriptorpb.FeatureSetDefaults{} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go index d5d5af6eb..742cb518c 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go @@ -23,6 +23,7 @@ type ( Unmarshal func(unmarshalInput) (unmarshalOutput, error) Merge func(mergeInput) mergeOutput CheckInitialized func(checkInitializedInput) (checkInitializedOutput, error) + Equal func(equalInput) equalOutput } supportFlags = uint64 sizeInput = struct { @@ -75,4 +76,13 @@ type ( checkInitializedOutput = struct { pragma.NoUnkeyedLiterals } + equalInput = struct { + pragma.NoUnkeyedLiterals + MessageA Message + MessageB Message + } + equalOutput = struct { + pragma.NoUnkeyedLiterals + Equal bool + } ) diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go deleted file mode 100644 index 75f83a2af..000000000 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -//go:build purego || appengine -// +build purego appengine - -package protoreflect - -import "google.golang.org/protobuf/internal/pragma" - -type valueType int - -const ( - nilType valueType = iota - boolType - int32Type - int64Type - uint32Type - uint64Type - float32Type - float64Type - stringType - bytesType - enumType - ifaceType -) - -// value is a union where only one type can be represented at a time. -// This uses a distinct field for each type. This is type safe in Go, but -// occupies more memory than necessary (72B). -type value struct { - pragma.DoNotCompare // 0B - - typ valueType // 8B - num uint64 // 8B - str string // 16B - bin []byte // 24B - iface any // 16B -} - -func valueOfString(v string) Value { - return Value{typ: stringType, str: v} -} -func valueOfBytes(v []byte) Value { - return Value{typ: bytesType, bin: v} -} -func valueOfIface(v any) Value { - return Value{typ: ifaceType, iface: v} -} - -func (v Value) getString() string { - return v.str -} -func (v Value) getBytes() []byte { - return v.bin -} -func (v Value) getIface() any { - return v.iface -} diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go index 7f3583ead..0015fcb35 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine && !go1.21 -// +build !purego,!appengine,!go1.21 +//go:build !go1.21 package protoreflect diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go index f7d386990..479527b58 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go121.go @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -//go:build !purego && !appengine && go1.21 -// +build !purego,!appengine,go1.21 +//go:build go1.21 package protoreflect diff --git a/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go b/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go index 44cf467d8..246156561 100644 --- a/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +++ b/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go @@ -39,6 +39,9 @@ type Methods = struct { // CheckInitialized returns an error if any required fields in the message are not set. CheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error) + + // Equal compares two messages and returns EqualOutput.Equal == true if they are equal. + Equal func(EqualInput) EqualOutput } // SupportFlags indicate support for optional features. @@ -166,3 +169,18 @@ type CheckInitializedInput = struct { type CheckInitializedOutput = struct { pragma.NoUnkeyedLiterals } + +// EqualInput is input to the Equal method. +type EqualInput = struct { + pragma.NoUnkeyedLiterals + + MessageA protoreflect.Message + MessageB protoreflect.Message +} + +// EqualOutput is output from the Equal method. +type EqualOutput = struct { + pragma.NoUnkeyedLiterals + + Equal bool +} diff --git a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go index 9403eb075..6dea75cd5 100644 --- a/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +++ b/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go @@ -1217,11 +1217,9 @@ type FileDescriptorSet struct { func (x *FileDescriptorSet) Reset() { *x = FileDescriptorSet{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FileDescriptorSet) String() string { @@ -1232,7 +1230,7 @@ func (*FileDescriptorSet) ProtoMessage() {} func (x *FileDescriptorSet) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1291,11 +1289,9 @@ type FileDescriptorProto struct { func (x *FileDescriptorProto) Reset() { *x = FileDescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FileDescriptorProto) String() string { @@ -1306,7 +1302,7 @@ func (*FileDescriptorProto) ProtoMessage() {} func (x *FileDescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1434,11 +1430,9 @@ type DescriptorProto struct { func (x *DescriptorProto) Reset() { *x = DescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DescriptorProto) String() string { @@ -1449,7 +1443,7 @@ func (*DescriptorProto) ProtoMessage() {} func (x *DescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1561,11 +1555,9 @@ const ( func (x *ExtensionRangeOptions) Reset() { *x = ExtensionRangeOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtensionRangeOptions) String() string { @@ -1576,7 +1568,7 @@ func (*ExtensionRangeOptions) ProtoMessage() {} func (x *ExtensionRangeOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1680,11 +1672,9 @@ type FieldDescriptorProto struct { func (x *FieldDescriptorProto) Reset() { *x = FieldDescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldDescriptorProto) String() string { @@ -1695,7 +1685,7 @@ func (*FieldDescriptorProto) ProtoMessage() {} func (x *FieldDescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1799,11 +1789,9 @@ type OneofDescriptorProto struct { func (x *OneofDescriptorProto) Reset() { *x = OneofDescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OneofDescriptorProto) String() string { @@ -1814,7 +1802,7 @@ func (*OneofDescriptorProto) ProtoMessage() {} func (x *OneofDescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1863,11 +1851,9 @@ type EnumDescriptorProto struct { func (x *EnumDescriptorProto) Reset() { *x = EnumDescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnumDescriptorProto) String() string { @@ -1878,7 +1864,7 @@ func (*EnumDescriptorProto) ProtoMessage() {} func (x *EnumDescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -1941,11 +1927,9 @@ type EnumValueDescriptorProto struct { func (x *EnumValueDescriptorProto) Reset() { *x = EnumValueDescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnumValueDescriptorProto) String() string { @@ -1956,7 +1940,7 @@ func (*EnumValueDescriptorProto) ProtoMessage() {} func (x *EnumValueDescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2005,11 +1989,9 @@ type ServiceDescriptorProto struct { func (x *ServiceDescriptorProto) Reset() { *x = ServiceDescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceDescriptorProto) String() string { @@ -2020,7 +2002,7 @@ func (*ServiceDescriptorProto) ProtoMessage() {} func (x *ServiceDescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2082,11 +2064,9 @@ const ( func (x *MethodDescriptorProto) Reset() { *x = MethodDescriptorProto{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MethodDescriptorProto) String() string { @@ -2097,7 +2077,7 @@ func (*MethodDescriptorProto) ProtoMessage() {} func (x *MethodDescriptorProto) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2267,11 +2247,9 @@ const ( func (x *FileOptions) Reset() { *x = FileOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FileOptions) String() string { @@ -2282,7 +2260,7 @@ func (*FileOptions) ProtoMessage() {} func (x *FileOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2534,11 +2512,9 @@ const ( func (x *MessageOptions) Reset() { *x = MessageOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MessageOptions) String() string { @@ -2549,7 +2525,7 @@ func (*MessageOptions) ProtoMessage() {} func (x *MessageOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2707,11 +2683,9 @@ const ( func (x *FieldOptions) Reset() { *x = FieldOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldOptions) String() string { @@ -2722,7 +2696,7 @@ func (*FieldOptions) ProtoMessage() {} func (x *FieldOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2849,11 +2823,9 @@ type OneofOptions struct { func (x *OneofOptions) Reset() { *x = OneofOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *OneofOptions) String() string { @@ -2864,7 +2836,7 @@ func (*OneofOptions) ProtoMessage() {} func (x *OneofOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -2929,11 +2901,9 @@ const ( func (x *EnumOptions) Reset() { *x = EnumOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnumOptions) String() string { @@ -2944,7 +2914,7 @@ func (*EnumOptions) ProtoMessage() {} func (x *EnumOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3026,11 +2996,9 @@ const ( func (x *EnumValueOptions) Reset() { *x = EnumValueOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnumValueOptions) String() string { @@ -3041,7 +3009,7 @@ func (*EnumValueOptions) ProtoMessage() {} func (x *EnumValueOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3115,11 +3083,9 @@ const ( func (x *ServiceOptions) Reset() { *x = ServiceOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ServiceOptions) String() string { @@ -3130,7 +3096,7 @@ func (*ServiceOptions) ProtoMessage() {} func (x *ServiceOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3192,11 +3158,9 @@ const ( func (x *MethodOptions) Reset() { *x = MethodOptions{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *MethodOptions) String() string { @@ -3207,7 +3171,7 @@ func (*MethodOptions) ProtoMessage() {} func (x *MethodOptions) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3274,11 +3238,9 @@ type UninterpretedOption struct { func (x *UninterpretedOption) Reset() { *x = UninterpretedOption{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UninterpretedOption) String() string { @@ -3289,7 +3251,7 @@ func (*UninterpretedOption) ProtoMessage() {} func (x *UninterpretedOption) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3375,11 +3337,9 @@ type FeatureSet struct { func (x *FeatureSet) Reset() { *x = FeatureSet{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FeatureSet) String() string { @@ -3390,7 +3350,7 @@ func (*FeatureSet) ProtoMessage() {} func (x *FeatureSet) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3467,11 +3427,9 @@ type FeatureSetDefaults struct { func (x *FeatureSetDefaults) Reset() { *x = FeatureSetDefaults{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FeatureSetDefaults) String() string { @@ -3482,7 +3440,7 @@ func (*FeatureSetDefaults) ProtoMessage() {} func (x *FeatureSetDefaults) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3578,11 +3536,9 @@ type SourceCodeInfo struct { func (x *SourceCodeInfo) Reset() { *x = SourceCodeInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SourceCodeInfo) String() string { @@ -3593,7 +3549,7 @@ func (*SourceCodeInfo) ProtoMessage() {} func (x *SourceCodeInfo) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3630,11 +3586,9 @@ type GeneratedCodeInfo struct { func (x *GeneratedCodeInfo) Reset() { *x = GeneratedCodeInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GeneratedCodeInfo) String() string { @@ -3645,7 +3599,7 @@ func (*GeneratedCodeInfo) ProtoMessage() {} func (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3679,11 +3633,9 @@ type DescriptorProto_ExtensionRange struct { func (x *DescriptorProto_ExtensionRange) Reset() { *x = DescriptorProto_ExtensionRange{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DescriptorProto_ExtensionRange) String() string { @@ -3694,7 +3646,7 @@ func (*DescriptorProto_ExtensionRange) ProtoMessage() {} func (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3744,11 +3696,9 @@ type DescriptorProto_ReservedRange struct { func (x *DescriptorProto_ReservedRange) Reset() { *x = DescriptorProto_ReservedRange{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *DescriptorProto_ReservedRange) String() string { @@ -3759,7 +3709,7 @@ func (*DescriptorProto_ReservedRange) ProtoMessage() {} func (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3813,11 +3763,9 @@ type ExtensionRangeOptions_Declaration struct { func (x *ExtensionRangeOptions_Declaration) Reset() { *x = ExtensionRangeOptions_Declaration{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ExtensionRangeOptions_Declaration) String() string { @@ -3828,7 +3776,7 @@ func (*ExtensionRangeOptions_Declaration) ProtoMessage() {} func (x *ExtensionRangeOptions_Declaration) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3895,11 +3843,9 @@ type EnumDescriptorProto_EnumReservedRange struct { func (x *EnumDescriptorProto_EnumReservedRange) Reset() { *x = EnumDescriptorProto_EnumReservedRange{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *EnumDescriptorProto_EnumReservedRange) String() string { @@ -3910,7 +3856,7 @@ func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {} func (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -3950,11 +3896,9 @@ type FieldOptions_EditionDefault struct { func (x *FieldOptions_EditionDefault) Reset() { *x = FieldOptions_EditionDefault{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldOptions_EditionDefault) String() string { @@ -3965,7 +3909,7 @@ func (*FieldOptions_EditionDefault) ProtoMessage() {} func (x *FieldOptions_EditionDefault) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4018,11 +3962,9 @@ type FieldOptions_FeatureSupport struct { func (x *FieldOptions_FeatureSupport) Reset() { *x = FieldOptions_FeatureSupport{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FieldOptions_FeatureSupport) String() string { @@ -4033,7 +3975,7 @@ func (*FieldOptions_FeatureSupport) ProtoMessage() {} func (x *FieldOptions_FeatureSupport) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4092,11 +4034,9 @@ type UninterpretedOption_NamePart struct { func (x *UninterpretedOption_NamePart) Reset() { *x = UninterpretedOption_NamePart{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *UninterpretedOption_NamePart) String() string { @@ -4107,7 +4047,7 @@ func (*UninterpretedOption_NamePart) ProtoMessage() {} func (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4154,11 +4094,9 @@ type FeatureSetDefaults_FeatureSetEditionDefault struct { func (x *FeatureSetDefaults_FeatureSetEditionDefault) Reset() { *x = FeatureSetDefaults_FeatureSetEditionDefault{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[30] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *FeatureSetDefaults_FeatureSetEditionDefault) String() string { @@ -4169,7 +4107,7 @@ func (*FeatureSetDefaults_FeatureSetEditionDefault) ProtoMessage() {} func (x *FeatureSetDefaults_FeatureSetEditionDefault) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[30] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4305,11 +4243,9 @@ type SourceCodeInfo_Location struct { func (x *SourceCodeInfo_Location) Reset() { *x = SourceCodeInfo_Location{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[31] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *SourceCodeInfo_Location) String() string { @@ -4320,7 +4256,7 @@ func (*SourceCodeInfo_Location) ProtoMessage() {} func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[31] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -4392,11 +4328,9 @@ type GeneratedCodeInfo_Annotation struct { func (x *GeneratedCodeInfo_Annotation) Reset() { *x = GeneratedCodeInfo_Annotation{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_descriptor_proto_msgTypes[32] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_descriptor_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GeneratedCodeInfo_Annotation) String() string { @@ -4407,7 +4341,7 @@ func (*GeneratedCodeInfo_Annotation) ProtoMessage() {} func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_descriptor_proto_msgTypes[32] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -5385,424 +5319,6 @@ func file_google_protobuf_descriptor_proto_init() { if File_google_protobuf_descriptor_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_google_protobuf_descriptor_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*FileDescriptorSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*FileDescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*DescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ExtensionRangeOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*FieldDescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*OneofDescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*EnumDescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[7].Exporter = func(v any, i int) any { - switch v := v.(*EnumValueDescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[8].Exporter = func(v any, i int) any { - switch v := v.(*ServiceDescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[9].Exporter = func(v any, i int) any { - switch v := v.(*MethodDescriptorProto); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[10].Exporter = func(v any, i int) any { - switch v := v.(*FileOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[11].Exporter = func(v any, i int) any { - switch v := v.(*MessageOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[12].Exporter = func(v any, i int) any { - switch v := v.(*FieldOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[13].Exporter = func(v any, i int) any { - switch v := v.(*OneofOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*EnumOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*EnumValueOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*ServiceOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*MethodOptions); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*UninterpretedOption); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*FeatureSet); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - case 3: - return &v.extensionFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[20].Exporter = func(v any, i int) any { - switch v := v.(*FeatureSetDefaults); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[21].Exporter = func(v any, i int) any { - switch v := v.(*SourceCodeInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[22].Exporter = func(v any, i int) any { - switch v := v.(*GeneratedCodeInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v any, i int) any { - switch v := v.(*DescriptorProto_ExtensionRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v any, i int) any { - switch v := v.(*DescriptorProto_ReservedRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v any, i int) any { - switch v := v.(*ExtensionRangeOptions_Declaration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v any, i int) any { - switch v := v.(*EnumDescriptorProto_EnumReservedRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[27].Exporter = func(v any, i int) any { - switch v := v.(*FieldOptions_EditionDefault); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[28].Exporter = func(v any, i int) any { - switch v := v.(*FieldOptions_FeatureSupport); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[29].Exporter = func(v any, i int) any { - switch v := v.(*UninterpretedOption_NamePart); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[30].Exporter = func(v any, i int) any { - switch v := v.(*FeatureSetDefaults_FeatureSetEditionDefault); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[31].Exporter = func(v any, i int) any { - switch v := v.(*SourceCodeInfo_Location); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_descriptor_proto_msgTypes[32].Exporter = func(v any, i int) any { - switch v := v.(*GeneratedCodeInfo_Annotation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go index a2ca940c5..c7e860fcd 100644 --- a/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go +++ b/vendor/google.golang.org/protobuf/types/gofeaturespb/go_features.pb.go @@ -29,11 +29,9 @@ type GoFeatures struct { func (x *GoFeatures) Reset() { *x = GoFeatures{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_go_features_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_go_features_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *GoFeatures) String() string { @@ -44,7 +42,7 @@ func (*GoFeatures) ProtoMessage() {} func (x *GoFeatures) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_go_features_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -145,20 +143,6 @@ func file_google_protobuf_go_features_proto_init() { if File_google_protobuf_go_features_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_google_protobuf_go_features_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*GoFeatures); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go index 7172b43d3..87da199a3 100644 --- a/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go @@ -368,11 +368,9 @@ func (x *Any) UnmarshalNew() (proto.Message, error) { func (x *Any) Reset() { *x = Any{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_any_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_any_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Any) String() string { @@ -383,7 +381,7 @@ func (*Any) ProtoMessage() {} func (x *Any) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_any_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -461,20 +459,6 @@ func file_google_protobuf_any_proto_init() { if File_google_protobuf_any_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_google_protobuf_any_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Any); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go index 1b71bcd91..b99d4d241 100644 --- a/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go @@ -245,11 +245,9 @@ func (x *Duration) check() uint { func (x *Duration) Reset() { *x = Duration{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_duration_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_duration_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Duration) String() string { @@ -260,7 +258,7 @@ func (*Duration) ProtoMessage() {} func (x *Duration) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_duration_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -339,20 +337,6 @@ func file_google_protobuf_duration_proto_init() { if File_google_protobuf_duration_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_google_protobuf_duration_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Duration); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/vendor/google.golang.org/protobuf/types/known/emptypb/empty.pb.go b/vendor/google.golang.org/protobuf/types/known/emptypb/empty.pb.go index d87b4fb82..1761bc9c6 100644 --- a/vendor/google.golang.org/protobuf/types/known/emptypb/empty.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/emptypb/empty.pb.go @@ -55,11 +55,9 @@ type Empty struct { func (x *Empty) Reset() { *x = Empty{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_empty_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_empty_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Empty) String() string { @@ -70,7 +68,7 @@ func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_empty_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -131,20 +129,6 @@ func file_google_protobuf_empty_proto_init() { if File_google_protobuf_empty_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_google_protobuf_empty_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Empty); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go b/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go index d45361cbc..8f206a661 100644 --- a/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/structpb/struct.pb.go @@ -120,6 +120,7 @@ package structpb import ( base64 "encoding/base64" + json "encoding/json" protojson "google.golang.org/protobuf/encoding/protojson" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -233,11 +234,9 @@ func (x *Struct) UnmarshalJSON(b []byte) error { func (x *Struct) Reset() { *x = Struct{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_struct_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_struct_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Struct) String() string { @@ -248,7 +247,7 @@ func (*Struct) ProtoMessage() {} func (x *Struct) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_struct_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -296,19 +295,20 @@ type Value struct { // NewValue constructs a Value from a general-purpose Go interface. // -// ╔════════════════════════╤════════════════════════════════════════════╗ -// ║ Go type │ Conversion ║ -// ╠════════════════════════╪════════════════════════════════════════════╣ -// ║ nil │ stored as NullValue ║ -// ║ bool │ stored as BoolValue ║ -// ║ int, int32, int64 │ stored as NumberValue ║ -// ║ uint, uint32, uint64 │ stored as NumberValue ║ -// ║ float32, float64 │ stored as NumberValue ║ -// ║ string │ stored as StringValue; must be valid UTF-8 ║ -// ║ []byte │ stored as StringValue; base64-encoded ║ -// ║ map[string]any │ stored as StructValue ║ -// ║ []any │ stored as ListValue ║ -// ╚════════════════════════╧════════════════════════════════════════════╝ +// ╔═══════════════════════════════════════╤════════════════════════════════════════════╗ +// ║ Go type │ Conversion ║ +// ╠═══════════════════════════════════════╪════════════════════════════════════════════╣ +// ║ nil │ stored as NullValue ║ +// ║ bool │ stored as BoolValue ║ +// ║ int, int8, int16, int32, int64 │ stored as NumberValue ║ +// ║ uint, uint8, uint16, uint32, uint64 │ stored as NumberValue ║ +// ║ float32, float64 │ stored as NumberValue ║ +// ║ json.Number │ stored as NumberValue ║ +// ║ string │ stored as StringValue; must be valid UTF-8 ║ +// ║ []byte │ stored as StringValue; base64-encoded ║ +// ║ map[string]any │ stored as StructValue ║ +// ║ []any │ stored as ListValue ║ +// ╚═══════════════════════════════════════╧════════════════════════════════════════════╝ // // When converting an int64 or uint64 to a NumberValue, numeric precision loss // is possible since they are stored as a float64. @@ -320,12 +320,20 @@ func NewValue(v any) (*Value, error) { return NewBoolValue(v), nil case int: return NewNumberValue(float64(v)), nil + case int8: + return NewNumberValue(float64(v)), nil + case int16: + return NewNumberValue(float64(v)), nil case int32: return NewNumberValue(float64(v)), nil case int64: return NewNumberValue(float64(v)), nil case uint: return NewNumberValue(float64(v)), nil + case uint8: + return NewNumberValue(float64(v)), nil + case uint16: + return NewNumberValue(float64(v)), nil case uint32: return NewNumberValue(float64(v)), nil case uint64: @@ -334,6 +342,12 @@ func NewValue(v any) (*Value, error) { return NewNumberValue(float64(v)), nil case float64: return NewNumberValue(float64(v)), nil + case json.Number: + n, err := v.Float64() + if err != nil { + return nil, protoimpl.X.NewError("invalid number format %q, expected a float64: %v", v, err) + } + return NewNumberValue(n), nil case string: if !utf8.ValidString(v) { return nil, protoimpl.X.NewError("invalid UTF-8 in string: %q", v) @@ -441,11 +455,9 @@ func (x *Value) UnmarshalJSON(b []byte) error { func (x *Value) Reset() { *x = Value{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_struct_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_struct_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Value) String() string { @@ -456,7 +468,7 @@ func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_struct_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -613,11 +625,9 @@ func (x *ListValue) UnmarshalJSON(b []byte) error { func (x *ListValue) Reset() { *x = ListValue{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_struct_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_struct_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *ListValue) String() string { @@ -628,7 +638,7 @@ func (*ListValue) ProtoMessage() {} func (x *ListValue) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_struct_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -742,44 +752,6 @@ func file_google_protobuf_struct_proto_init() { if File_google_protobuf_struct_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_google_protobuf_struct_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Struct); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_struct_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*Value); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_google_protobuf_struct_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ListValue); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } file_google_protobuf_struct_proto_msgTypes[1].OneofWrappers = []any{ (*Value_NullValue)(nil), (*Value_NumberValue)(nil), diff --git a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go index 83a5a645b..0d20722d7 100644 --- a/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go +++ b/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go @@ -254,11 +254,9 @@ func (x *Timestamp) check() uint { func (x *Timestamp) Reset() { *x = Timestamp{} - if protoimpl.UnsafeEnabled { - mi := &file_google_protobuf_timestamp_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } + mi := &file_google_protobuf_timestamp_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } func (x *Timestamp) String() string { @@ -269,7 +267,7 @@ func (*Timestamp) ProtoMessage() {} func (x *Timestamp) ProtoReflect() protoreflect.Message { mi := &file_google_protobuf_timestamp_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { + if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) @@ -348,20 +346,6 @@ func file_google_protobuf_timestamp_proto_init() { if File_google_protobuf_timestamp_proto != nil { return } - if !protoimpl.UnsafeEnabled { - file_google_protobuf_timestamp_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*Timestamp); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/vendor/modules.txt b/vendor/modules.txt index 2b1fd31d9..b95cefbc6 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -121,16 +121,15 @@ github.com/aws/amazon-ec2-instance-selector/v2/pkg/instancetypes github.com/aws/amazon-ec2-instance-selector/v2/pkg/selector github.com/aws/amazon-ec2-instance-selector/v2/pkg/selector/outputs github.com/aws/amazon-ec2-instance-selector/v2/pkg/sorter -# github.com/aws/aws-sdk-go v1.45.6 -## explicit; go 1.11 +# github.com/aws/aws-sdk-go v1.50.36 +## explicit; go 1.19 github.com/aws/aws-sdk-go/aws/awserr github.com/aws/aws-sdk-go/aws/endpoints -# github.com/aws/aws-sdk-go-v2 v1.27.2 -## explicit; go 1.20 +# github.com/aws/aws-sdk-go-v2 v1.32.6 +## explicit; go 1.21 github.com/aws/aws-sdk-go-v2/aws github.com/aws/aws-sdk-go-v2/aws/defaults github.com/aws/aws-sdk-go-v2/aws/middleware -github.com/aws/aws-sdk-go-v2/aws/middleware/private/metrics github.com/aws/aws-sdk-go-v2/aws/protocol/ec2query github.com/aws/aws-sdk-go-v2/aws/protocol/query github.com/aws/aws-sdk-go-v2/aws/protocol/restjson @@ -169,11 +168,11 @@ github.com/aws/aws-sdk-go-v2/credentials/stscreds ## explicit; go 1.20 github.com/aws/aws-sdk-go-v2/feature/ec2/imds github.com/aws/aws-sdk-go-v2/feature/ec2/imds/internal/config -# github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.9 -## explicit; go 1.20 +# github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.25 +## explicit; go 1.21 github.com/aws/aws-sdk-go-v2/internal/configsources -# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.9 -## explicit; go 1.20 +# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.25 +## explicit; go 1.21 github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 # github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 ## explicit; go 1.20 @@ -183,6 +182,11 @@ github.com/aws/aws-sdk-go-v2/internal/ini github.com/aws/aws-sdk-go-v2/service/ec2 github.com/aws/aws-sdk-go-v2/service/ec2/internal/endpoints github.com/aws/aws-sdk-go-v2/service/ec2/types +# github.com/aws/aws-sdk-go-v2/service/ecs v1.53.0 +## explicit; go 1.21 +github.com/aws/aws-sdk-go-v2/service/ecs +github.com/aws/aws-sdk-go-v2/service/ecs/internal/endpoints +github.com/aws/aws-sdk-go-v2/service/ecs/types # github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.2 ## explicit; go 1.20 github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding @@ -209,8 +213,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc/types github.com/aws/aws-sdk-go-v2/service/sts github.com/aws/aws-sdk-go-v2/service/sts/internal/endpoints github.com/aws/aws-sdk-go-v2/service/sts/types -# github.com/aws/smithy-go v1.20.2 -## explicit; go 1.20 +# github.com/aws/smithy-go v1.22.1 +## explicit; go 1.21 github.com/aws/smithy-go github.com/aws/smithy-go/auth github.com/aws/smithy-go/auth/bearer @@ -224,11 +228,13 @@ github.com/aws/smithy-go/endpoints github.com/aws/smithy-go/internal/sync/singleflight github.com/aws/smithy-go/io github.com/aws/smithy-go/logging +github.com/aws/smithy-go/metrics github.com/aws/smithy-go/middleware github.com/aws/smithy-go/private/requestcompression github.com/aws/smithy-go/ptr github.com/aws/smithy-go/rand github.com/aws/smithy-go/time +github.com/aws/smithy-go/tracing github.com/aws/smithy-go/transport/http github.com/aws/smithy-go/transport/http/internal/io github.com/aws/smithy-go/waiter @@ -241,7 +247,7 @@ github.com/blang/semver # github.com/blang/semver/v4 v4.0.0 ## explicit; go 1.14 github.com/blang/semver/v4 -# github.com/cespare/xxhash/v2 v2.2.0 +# github.com/cespare/xxhash/v2 v2.3.0 ## explicit; go 1.11 github.com/cespare/xxhash/v2 # github.com/charmbracelet/bubbles v0.16.1 @@ -373,7 +379,7 @@ github.com/gogo/protobuf/proto # github.com/golang-jwt/jwt/v5 v5.2.1 ## explicit; go 1.18 github.com/golang-jwt/jwt/v5 -# github.com/golang/glog v1.2.1 +# github.com/golang/glog v1.2.2 ## explicit; go 1.19 github.com/golang/glog github.com/golang/glog/internal/logsink @@ -405,7 +411,7 @@ github.com/hashicorp/hcl/hcl/token github.com/hashicorp/hcl/json/parser github.com/hashicorp/hcl/json/scanner github.com/hashicorp/hcl/json/token -# github.com/hashicorp/hcl/v2 v2.20.1 +# github.com/hashicorp/hcl/v2 v2.22.0 ## explicit; go 1.18 github.com/hashicorp/hcl/v2 # github.com/imdario/mergo v0.3.16 @@ -521,8 +527,8 @@ github.com/pkg/term/termios github.com/pulumi/appdash github.com/pulumi/appdash/internal/wire github.com/pulumi/appdash/opentracing -# github.com/pulumi/esc v0.9.1 -## explicit; go 1.20 +# github.com/pulumi/esc v0.10.0 +## explicit; go 1.21 github.com/pulumi/esc github.com/pulumi/esc/ast github.com/pulumi/esc/diags @@ -531,12 +537,26 @@ github.com/pulumi/esc/internal/util github.com/pulumi/esc/schema github.com/pulumi/esc/syntax github.com/pulumi/esc/syntax/encoding +# github.com/pulumi/pulumi-aws-native/sdk v1.17.0 +## explicit; go 1.21 +github.com/pulumi/pulumi-aws-native/sdk/go/aws +github.com/pulumi/pulumi-aws-native/sdk/go/aws/internal +github.com/pulumi/pulumi-aws-native/sdk/go/aws/scheduler # github.com/pulumi/pulumi-aws/sdk/v6 v6.64.0 ## explicit; go 1.21.12 github.com/pulumi/pulumi-aws/sdk/v6/go/aws/autoscaling +github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cloudwatch github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2 +github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ecs +github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal github.com/pulumi/pulumi-aws/sdk/v6/go/aws/lb +github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3 +# github.com/pulumi/pulumi-awsx/sdk/v2 v2.19.0 +## explicit; go 1.21.12 +github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/awsx +github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/ecs +github.com/pulumi/pulumi-awsx/sdk/v2/go/awsx/internal # github.com/pulumi/pulumi-azure-native-sdk/authorization/v2 v2.76.0 ## explicit; go 1.21 github.com/pulumi/pulumi-azure-native-sdk/authorization/v2 @@ -565,6 +585,10 @@ github.com/pulumi/pulumi-azure-native-sdk/v2/utilities ## explicit; go 1.21 github.com/pulumi/pulumi-command/sdk/go/command/internal github.com/pulumi/pulumi-command/sdk/go/command/remote +# github.com/pulumi/pulumi-docker/sdk/v4 v4.4.3 +## explicit; go 1.21 +github.com/pulumi/pulumi-docker/sdk/v4/go/docker +github.com/pulumi/pulumi-docker/sdk/v4/go/docker/internal # github.com/pulumi/pulumi-random/sdk/v4 v4.16.7 ## explicit; go 1.21 github.com/pulumi/pulumi-random/sdk/v4/go/random @@ -573,7 +597,7 @@ github.com/pulumi/pulumi-random/sdk/v4/go/random/internal ## explicit; go 1.21 github.com/pulumi/pulumi-tls/sdk/v5/go/tls github.com/pulumi/pulumi-tls/sdk/v5/go/tls/internal -# github.com/pulumi/pulumi/sdk/v3 v3.142.0 +# github.com/pulumi/pulumi/sdk/v3 v3.143.0 ## explicit; go 1.21 github.com/pulumi/pulumi/sdk/v3 github.com/pulumi/pulumi/sdk/v3/go/auto @@ -739,7 +763,7 @@ go.uber.org/atomic # go.uber.org/multierr v1.11.0 ## explicit; go 1.19 go.uber.org/multierr -# golang.org/x/crypto v0.25.0 +# golang.org/x/crypto v0.31.0 ## explicit; go 1.20 golang.org/x/crypto/argon2 golang.org/x/crypto/blake2b @@ -769,7 +793,7 @@ golang.org/x/exp/slog/internal/buffer # golang.org/x/mod v0.18.0 ## explicit; go 1.18 golang.org/x/mod/semver -# golang.org/x/net v0.27.0 +# golang.org/x/net v0.28.0 ## explicit; go 1.18 golang.org/x/net/context golang.org/x/net/http/httpguts @@ -780,10 +804,10 @@ golang.org/x/net/internal/socks golang.org/x/net/internal/timeseries golang.org/x/net/proxy golang.org/x/net/trace -# golang.org/x/sync v0.7.0 +# golang.org/x/sync v0.10.0 ## explicit; go 1.18 golang.org/x/sync/errgroup -# golang.org/x/sys v0.22.0 +# golang.org/x/sys v0.28.0 ## explicit; go 1.18 golang.org/x/sys/cpu golang.org/x/sys/execabs @@ -791,10 +815,10 @@ golang.org/x/sys/plan9 golang.org/x/sys/unix golang.org/x/sys/windows golang.org/x/sys/windows/registry -# golang.org/x/term v0.22.0 +# golang.org/x/term v0.27.0 ## explicit; go 1.18 golang.org/x/term -# golang.org/x/text v0.16.0 +# golang.org/x/text v0.21.0 ## explicit; go 1.18 golang.org/x/text/encoding golang.org/x/text/encoding/internal @@ -826,17 +850,18 @@ golang.org/x/tools/internal/stdlib golang.org/x/tools/internal/tokeninternal golang.org/x/tools/internal/typesinternal golang.org/x/tools/internal/versions -# google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c -## explicit; go 1.19 +# google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 +## explicit; go 1.21 google.golang.org/genproto/googleapis/rpc/status -# google.golang.org/grpc v1.63.2 -## explicit; go 1.19 +# google.golang.org/grpc v1.67.1 +## explicit; go 1.21 google.golang.org/grpc google.golang.org/grpc/attributes google.golang.org/grpc/backoff google.golang.org/grpc/balancer google.golang.org/grpc/balancer/base google.golang.org/grpc/balancer/grpclb/state +google.golang.org/grpc/balancer/pickfirst google.golang.org/grpc/balancer/roundrobin google.golang.org/grpc/binarylog/grpc_binarylog_v1 google.golang.org/grpc/channelz @@ -846,7 +871,9 @@ google.golang.org/grpc/credentials google.golang.org/grpc/credentials/insecure google.golang.org/grpc/encoding google.golang.org/grpc/encoding/proto +google.golang.org/grpc/experimental/stats google.golang.org/grpc/grpclog +google.golang.org/grpc/grpclog/internal google.golang.org/grpc/health google.golang.org/grpc/health/grpc_health_v1 google.golang.org/grpc/internal @@ -859,7 +886,6 @@ google.golang.org/grpc/internal/channelz google.golang.org/grpc/internal/credentials google.golang.org/grpc/internal/envconfig google.golang.org/grpc/internal/grpclog -google.golang.org/grpc/internal/grpcrand google.golang.org/grpc/internal/grpcsync google.golang.org/grpc/internal/grpcutil google.golang.org/grpc/internal/idle @@ -871,24 +897,27 @@ google.golang.org/grpc/internal/resolver/dns/internal google.golang.org/grpc/internal/resolver/passthrough google.golang.org/grpc/internal/resolver/unix google.golang.org/grpc/internal/serviceconfig +google.golang.org/grpc/internal/stats google.golang.org/grpc/internal/status google.golang.org/grpc/internal/syscall google.golang.org/grpc/internal/transport google.golang.org/grpc/internal/transport/networktype google.golang.org/grpc/keepalive +google.golang.org/grpc/mem google.golang.org/grpc/metadata google.golang.org/grpc/peer google.golang.org/grpc/reflection google.golang.org/grpc/reflection/grpc_reflection_v1 google.golang.org/grpc/reflection/grpc_reflection_v1alpha +google.golang.org/grpc/reflection/internal google.golang.org/grpc/resolver google.golang.org/grpc/resolver/dns google.golang.org/grpc/serviceconfig google.golang.org/grpc/stats google.golang.org/grpc/status google.golang.org/grpc/tap -# google.golang.org/protobuf v1.34.2 -## explicit; go 1.20 +# google.golang.org/protobuf v1.35.1 +## explicit; go 1.21 google.golang.org/protobuf/encoding/protojson google.golang.org/protobuf/encoding/prototext google.golang.org/protobuf/encoding/protowire